// JavaScript Document

var Core = 
{

/* Start : Core */	
	
	Style:
	/* Start : Core.Style */
	{
		

		Settings: 
		{
			/* Start : Core.Style.Settings */
			
			Opacity : "opacity",
			Width : "width",
			Left : "left",
			backgroundColor : "background-color",
			fontSize : "font-size",
			Display : "display"
			/* End : Core.Style.Settings */
		},
		LinkMethods :
		{
			Cancel : 'cancel',
			Ignore : 'ignore',
			Chain : 'chain'
		},
		Transitions : 
		{
			Elastic_EaseOut : Fx.Transitions.Elastic.easeOut,
			Elastic_EaseIn : Fx.Transitions.Elastic.easeIn,
			Linear : Fx.Transitions.linear
				
		},
		Operations:
		/* Start : Core.Style.Operations */
		{
			SetValue : function(id,property, value)
			{
				if ($(id))
				{
					var container = $(id);
					container.setStyle(property, value);
				}			
			},
			
			GetValue : function(id, property)
			{
				if ($(id))
				{
					var container = $(id);
					return container.getStyle(property);
				}	
				
				return "";
				
			},
			
			SetTweenTransition : function(id, timeDuration, styleSetting, startValue, endValue, linkMethod, transitionMethod)
			{
				if ($(id))
				{
					var container = $(id);
					
					var fx = new Fx.Tween(container, {property: styleSetting, duration : timeDuration, link : linkMethod, transition : transitionMethod});
					fx.set(startValue);
					var timeout_id = fx.start(endValue);
					return timeout_id;
				}	
			},
			SetTweenTransition2 : function(id, timeDuration, styleSetting, endValue, linkMethod, transitionMethod)
			{
				if ($(id))
				{
					var container = $(id);
					
					var fx = new Fx.Tween(container, {property: styleSetting, duration : timeDuration, link : linkMethod, transition : transitionMethod});
					fx.start(endValue);
					return fx
				}	
			},
			
			SetMorphTransition1 : function(id, timeDuration, startClass, targetClass, linkMethod, transitionMethod)
			{
			
				if ($(id))
				{
				
					var container = $(id);
					var fx = new Fx.Morph(container, {duration: timeDuration, link : linkMethod, transition: transitionMethod});
 					fx.set(startClass);
					fx.start(targetClass);
					return fx;
				}
						
			},
			

			SetMorphTransition2 : function(id, timeDuration, targetClass, linkMethod, transitionMethod)
			{
			
				if ($(id))
				{
				
					var container = $(id);
					var fx = new Fx.Morph(container, {duration: timeDuration, link : linkMethod, transition: transitionMethod});
 					fx.start(targetClass);
					return fx;
				}
						
			}
			
			
			
		
		},
		/* End : Core.Style.Operations */
		Container:
		{
			
			Container_RegisterSingleFx: function(id_Container, key_Fx, fx)
			{				
				var container = $(id_Container);				
				if (!container.fxHash)
				{
					container.fxHash = new Hash();					
				}
				
				container.fxHash[key_Fx] = fx;				
			},
			
			Contianer_CancelRunningFx : function(id_Container)
			{
				var container = $(id_Container);
				if (container.fxHash)
				{
					container.fxHash.each
					(
						function(value, key){
   			 				var fx = container.fxHash[key]
							if (fx) fx.cancel();						
						}
					);					
				}				
			}
			
		},
		
		Effects:
		
		/* Start: Core.Style.Effects */	
		{			
			/* Start : Fade Effects */
			
			Opacity_SetValue : function(id, newValue) /* (base effect)*/
			{
				Core.Style.Operations.SetValue(id, Core.Style.Settings.Opacity, newValue);
			},
			Opacity_GetValue : function(id) /* (base effect)*/
			{
				
				return Core.Style.Operations.GetValue(id, Core.Style.Settings.Opacity);
			},
			Opacity_FadeChange_Transition : function(id, timeDuration, startOpac, endOpac, linkMethod, transitionMethod) /* (base effect) */
			{
				return Core.Style.Operations.SetTweenTransition(id, timeDuration, Core.Style.Settings.Opacity, startOpac, endOpac, linkMethod, transitionMethod);
				
			},
			Opacity_FadeChange_Transition2 : function(id, timeDuration, endOpac, linkMethod, transitionMethod) /* (base effect) */
			{
				return Core.Style.Operations.SetTweenTransition2(id, timeDuration, Core.Style.Settings.Opacity, endOpac, linkMethod, transitionMethod);
				
			},	
			Opacity_FadeUp_Effect1 : function(id,timeDuration)
			{
				
				Core.Style.Effects.Opacity_FadeChange_Transition(id, timeDuration, 0, 1, Core.Style.LinkMethods.Cancel, Core.Style.Transitions.Linear);
			
			},
			Opacity_Fade_Effect1 : function(id,timeDuration, startOpac, endOpac)
			{
			
				Core.Style.Effects.Opacity_FadeChange_Transition(id, timeDuration, startOpac, endOpac, Core.Style.LinkMethods.Cancel, Core.Style.Transitions.Linear);			
			},
			Opacity_Fade_Effect2 : function(id,timeDuration, endOpac)
			{
			
				return Core.Style.Effects.Opacity_FadeChange_Transition2(id, timeDuration,  endOpac, Core.Style.LinkMethods.Cancel, Core.Style.Transitions.Linear);			
			},
			
			/* End : Fade Effects */
			
			/* Start: Size Effects */
			
			/* (base) */			
			Size_SetWidth : function(id, newValue) /* (base effect) */
			{
				Core.Style.Operations.SetValue(id, Core.Style.Settings.Width, newValue);	
			},
			
			Size_SizeChange_Transition : function(id, timeDuration, initialSize, finalSize, linkMethod, transitionMethod) /* (base effect) */
			{

				Core.Style.Operations.SetTweenTransition
				(	
				 	id, 
					timeDuration,
					Core.Style.Settings.Width,
					initialSize,
					finalSize,
					linkMethod,
					transitionMethod
				);
				
			},
			Size_SizeChange_Transition2 : function(id, timeDuration, finalSize, linkMethod, transitionMethod) /* (base effect) */
			{

				Core.Style.Operations.SetTweenTransition2
				(	
				 	id, 
					timeDuration,
					Core.Style.Settings.Width,
					finalSize,
					linkMethod,
					transitionMethod
				);
				
			},
			/* (base) */
						
			Size_ChangeWidth1 : function(id,timeDuration, initialSize, finalSize)
			{

				Core.Style.Effects.Size_SizeChange_Transition(id, timeDuration, initialSize, finalSize, Core.Style.LinkMethods.Cancel, Core.Style.Transitions.Linear);
			},
			Size_ChangeWidth2 : function(id,timeDuration, finalSize)
			{

				Core.Style.Effects.Size_SizeChange_Transition2(id, timeDuration,  finalSize, Core.Style.LinkMethods.Cancel, Core.Style.Transitions.Elastic_EaseOut);
			},		
			
			/* End: Size Effects */
			
			/* Start : Position Effects */
			
			Position_SetXPosition: function(id, newValue)
			{
				Core.Style.Operations.SetValue(id, Core.Style.Settings.Left, newValue);
				
			},
			Position_ChangeX_Transition : function(id, timeDuration, initialX, finalX, linkMethod, transitionMethod) /* (base effect) */
			{

				Core.Style.Operations.SetTweenTransition
				(	
				 	id, 
					timeDuration,
					Core.Style.Settings.Left,
					initialX,
					finalX,
					linkMethod,
					transitionMethod
				);
				
			},
			Position_ChangeX_Transition2 : function(id, timeDuration, finalX, linkMethod, transitionMethod) /* (base effect) */
			{

				return Core.Style.Operations.SetTweenTransition2
				(	
				 	id, 
					timeDuration,
					Core.Style.Settings.Left,
					finalX,
					linkMethod,
					transitionMethod
				);
				
			},
			Position_ChangeX2 : function(id, timeDuration, finalX)
			{
				return Core.Style.Effects.Position_ChangeX_Transition2(id, timeDuration, finalX, Core.Style.LinkMethods.Cancel, Core.Style.Transitions.Linear);
			},
			Position_ChangeX3 : function(id, timeDuration, finalX)
			{
				return Core.Style.Effects.Position_ChangeX_Transition2(id, timeDuration, finalX, Core.Style.LinkMethods.Cancel, Core.Style.Transitions.Elastic_EaseOut);
			},
			
			/* End : Position Effects */
			
			/* Start: Color Effects */
			
			Color_SetBackground : function(id, newValue)
			{
				Core.Style.Operations.SetValue(id, Core.Style.Settings.backgroundColor, newValue);
			},

			Color_BackgroundChange_Transition : function(id, timeDuration, startColor, endColor, linkMethod, transitionMethod) /* (base effect) */
			{
				
				return Core.Style.Operations.SetTweenTransition
				(	
				 	id, 
					timeDuration,
					Core.Style.Settings.backgroundColor,
					startColor,
					endColor,
					linkMethod,
					transitionMethod
				);
				
			},
			Color_BackgroundChange_Transition2 : function(id, timeDuration, endColor, linkMethod, transitionMethod) /* (base effect) */
			{
				
				return Core.Style.Operations.SetTweenTransition2
				(	
				 	id, 
					timeDuration,
					Core.Style.Settings.backgroundColor,
					endColor,
					linkMethod,
					transitionMethod
				);
				
			},
			
			Color_BackgroundChange1 : function(id, timeDuration, startColor, endColor)
			{
				Core.Style.Effects.Color_BackgroundChange_Transition(id, timeDuration, startColor, endColor, Core.Style.LinkMethods.Cancel, Core.Style.Transitions.Linear);
			},
			Color_BackgroundChange2 : function(id, timeDuration, endColor)
			{
			
				return Core.Style.Effects.Color_BackgroundChange_Transition2(id, timeDuration, endColor, Core.Style.LinkMethods.Cancel, Core.Style.Transitions.Linear);
			},
			
			/* End: Color Effects */
			
			/* Start: Class Effects */
			
			Class_BaseTransition2 : function (id, timeDuration, targetClass, linkMethod, transitionMethod) /* (base effect) */
			{
				return Core.Style.Operations.SetMorphTransition2
				(	
				 	id, 
					timeDuration,
					targetClass,
					linkMethod,
					transitionMethod
				);
				
			},
			
			Class_Transition2 : function (id, timeDuration, targetClass)
			{
				
				return Core.Style.Effects.Class_BaseTransition2(id, timeDuration, targetClass, Core.Style.LinkMethods.Cancel, Core.Style.Transitions.Linear);	
			},
			
			/* End : Class Effects */
			
			/* Start : Mouse Effects */	
			
			Mouse_MenuEffect1: function(id, timeDuration, startColor, highlightColor)
			{
				if ($(id))
				{
		
					var container = $(id);
					container.addEvent
					('mouseenter', 
					function(e)
						{
							Core.Style.Container.Contianer_CancelRunningFx(id);
							container.ColorUp_Fx_Id = Core.Style.Effects.Color_BackgroundChange2(id, timeDuration, highlightColor);
							Core.Style.Container.Container_RegisterSingleFx(id,'ColorUp_Fx_Id', container.ColorUp_Fx_Id);							
						}
					);
					container.addEvent
					('mouseleave', 
					function(e)
						{
							Core.Style.Container.Contianer_CancelRunningFx(id);
							container.ColorDown_Fx_Id = Core.Style.Effects.Color_BackgroundChange2(id, timeDuration, startColor);
							Core.Style.Container.Container_RegisterSingleFx(id,'ColorDown_Fx_Id', container.ColorDown_Fx_Id);							
						}
					);		
				}		
			},
			Mouse_MenuEffect2: function(id, timeDuration, startClass, highlightClass)
			{
				if ($(id))
				{
		
					var container = $(id);
					container.addEvent
					('mouseenter', 
					function(e)
						{
							Core.Style.Container.Contianer_CancelRunningFx(id);
							container.ClassUp_Fx_Id = Core.Style.Effects.Class_Transition2(id, timeDuration, highlightClass);
							Core.Style.Container.Container_RegisterSingleFx(id,'ClassUp_Fx_Id', container.ClassUp_Fx_Id);							
						}
					);
					container.addEvent
					('mouseleave', 
					function(e)
						{
							
							Core.Style.Container.Contianer_CancelRunningFx(id);
							container.ClassDown_Fx_Id = Core.Style.Effects.Class_Transition2(id, timeDuration, startClass);
							Core.Style.Container.Container_RegisterSingleFx(id,'ClassDown_Fx_Id', container.ClassDown_Fx_Id);							
						}
					);		
				}		
			},
			Mouse_MenuEffect3: function(id, timeDuration_Enter, timeDuration_Leave, startClass, highlightClass)
			{
				if ($(id))
				{
		
					var container = $(id);
					container.addEvent
					('mouseenter', 
					function(e)
						{
							Core.Style.Container.Contianer_CancelRunningFx(id);
							container.ClassUp_Fx_Id = Core.Style.Effects.Class_Transition2(id, timeDuration_Enter, highlightClass);
							Core.Style.Container.Container_RegisterSingleFx(id,'ClassUp_Fx_Id', container.ClassUp_Fx_Id);							
						}
					);
					container.addEvent
					('mouseleave', 
					function(e)
						{
							Core.Style.Container.Contianer_CancelRunningFx(id);
							container.ClassDown_Fx_Id = Core.Style.Effects.Class_Transition2(id, timeDuration_Leave, startClass);
							Core.Style.Container.Container_RegisterSingleFx(id,'ClassDown_Fx_Id', container.ClassDown_Fx_Id);							
						}
					);		
				}		
			},
			Mouse_MenuEffect4: function(id, timeDuration, startClass, highlightClass, leaveConditionFunction)
			{
				if ($(id))
				{
		
					var container = $(id);
					container.addEvent
					('mouseenter', 
					function(e)
						{
							Core.Style.Container.Contianer_CancelRunningFx(id);
							container.ClassUp_Fx_Id = Core.Style.Effects.Class_Transition2(id, timeDuration, highlightClass);
							Core.Style.Container.Container_RegisterSingleFx(id,'ClassUp_Fx_Id', container.ClassUp_Fx_Id);							
						}
					);
					container.addEvent
					('mouseleave', 
					function(e)
						{
							if (leaveConditionFunction())
							{
									Core.Style.Container.Contianer_CancelRunningFx(id);
									container.ClassDown_Fx_Id = Core.Style.Effects.Class_Transition2(id, timeDuration, startClass);
									Core.Style.Container.Container_RegisterSingleFx(id,'ClassDown_Fx_Id', container.ClassDown_Fx_Id);
							}
						}
					);		
				}		
			},
				
			
			Mouse_FadeEffect1: function(id, timeDuration, lowOpac, highOpac)
			{
			
				if ($(id))
				{
					var container = $(id);
					container.addEvent
					('mouseenter', 
						function(e)
						{
							
							Core.Style.Container.Contianer_CancelRunningFx(id);
							container.fadeUp_Fx_Id = Core.Style.Effects.Opacity_Fade_Effect2(id, timeDuration, highOpac);
							Core.Style.Container.Container_RegisterSingleFx(id,'FadeUp_Fx_Id', container.fadeUp_Fx_Id);

						}
					);
					container.addEvent
					('mouseleave', 
						function(e)
						{							
							Core.Style.Container.Contianer_CancelRunningFx(id);
							container.fadeDown_Fx_Id = Core.Style.Effects.Opacity_Fade_Effect2(id, timeDuration, lowOpac);
							Core.Style.Container.Container_RegisterSingleFx(id,'FadeDown_Fx_Id', container.fadeDown_Fx_Id);
										
						}
					);
				
				}	
			},
			/* When one of id_sources_array elements is moused over, the effect is applied to the target */
			Mouse_FadeEffect1_Dependency: function(id_target,id_sources_array, timeDuration, lowOpac, highOpac)
			{
				var target_container = $(id_target);
				// Start Each Statement	
				id_sources_array.each(
					function(item, index)
					{
						var id = item;
						if ($(id))
						{
							var container = $(id);
							
							container.addEvent
							('mouseenter', 
								function(e)
								{
									Core.Style.Container.Contianer_CancelRunningFx(id_target);
									target_container.fadeUp_Fx_Id = Core.Style.Effects.Opacity_Fade_Effect2(id_target, timeDuration, highOpac);
									Core.Style.Container.Container_RegisterSingleFx(id_target,'FadeUp_Fx_Id', target_container.fadeUp_Fx_Id);					
		
								}
							);
							container.addEvent
							('mouseleave', 
								function(e)
								{
									Core.Style.Container.Contianer_CancelRunningFx(id_target);
									target_container.fadeDown_Fx_Id = Core.Style.Effects.Opacity_Fade_Effect2(id_target, timeDuration, lowOpac);
									Core.Style.Container.Container_RegisterSingleFx(id_target,'FadeDown_Fx_Id', target_container.fadeDown_Fx_Id);	
								
								}
							);
				
						}	
					});
					// End Each Statement
			
			}
			
			
			/* End : Mouse Effects */
			
			
			
					
		}
		/* End : Core.Style.Effects */	
	
	}
	/* End : Core.Style */

/* End : Core */

};



