	
	// Effects Library
	
	Application.effects = {
		
		init: function()
		{
			
		},
		
		slide:
		{
			amount: 20,
			delay: 10,
			
			absolute: function( args )
			{
				
			},
			
			fromRight: function( args )
			{
				
			},
			
			fromLeft: function( args )
			{
				if(!args.object)
				{
					return false;
				}
				
				var amount = ((typeof args.amount) != "undefined") ? args.amount : Application.effects.slide.amount;
				var delay = ((typeof args.delay) != "undefined") ? args.delay : Application.effects.slide.delay;
				
				var endClass = Application.util.style.getMatchingRules( '.' + args.object.className.toString().replace( / /g, '.' ) + " .endEffect" )[0];
				
				var startX = args.object.offsetLeft;
				var endX = parseFloat(endClass.style.left.replace( /px/, '' ));
				
				var intervalPointer = setInterval( 	function()
													{
														startX += amount;
														
														if( startX > endX )
														{
															startX = endX;
														}
														
														args.object.style.left = (startX) + "px";
														
														if( startX == endX)
														{
															clearInterval( intervalPointer );
															
															return;
														}
													}, 50);
			}
		},
		
		fade:
		{
			amount: 10,
			delay: 50,
			
			fadeIn: function( args )
			{
				if(!args.object)
				{
					return false;
				}
				
				var amount = ((typeof args.amount) != "undefined") ? args.amount : Application.effects.fade.amount;
				var delay = ((typeof args.delay) != "undefined") ? args.delay : Application.effects.fade.delay;
				var minOpacity = ((typeof args.minOpacity) != "undefined") ? args.minOpacity : 0;
				var maxOpacity = ((typeof args.maxOpacity) != "undefined") ? args.maxOpacity : 100;
				
				if(Application.util.style.getCurrent(args.object, "filter").length == 0)
				{
					args.object.style.filter = "progid:DXImageTransform.Microsoft.Alpha(opacity=" + minOpacity + ")";
				}
				
				var intervalPointer = setInterval( 	function()
													{
														minOpacity += amount;
														
														if(minOpacity > maxOpacity)
														{
															minOpacity = maxOpacity;
														}
														
														args.object.style.MozOpacity = minOpacity / 100;
														//ImageObj.style.filters.alpha.opacity=90
														args.object.style.filter = Application.util.style.getCurrent(args.object, "filter").replace( /opacity\=[0-9]+/, "opacity=" + minOpacity );
														args.object.style.opacity = minOpacity / 100;
														
														if( minOpacity == maxOpacity )
														{
															clearInterval( intervalPointer );
															
															if(args.onComplete)
															{
																args.onComplete();
															}
															
															return;
														}
													}, delay);
				
				return intervalPointer;
			},
			
			fadeOut: function ( args )
			{
				if(!args.object)
				{
					return false;
				}
				
				var amount = ((typeof args.amount) != "undefined") ? args.amount : Application.effects.fade.amount;
				var delay = ((typeof args.delay) != "undefined") ? args.delay : Application.effects.fade.delay;
				var minOpacity = ((typeof args.minOpacity) != "undefined") ? args.minOpacity : 100;
				var maxOpacity = ((typeof args.maxOpacity) != "undefined") ? args.maxOpacity : 0;
				
				var intervalPointer = setInterval( 	function()
													{
														minOpacity -= amount;
														
														if(minOpacity < maxOpacity)
														{
															minOpacity = maxOpacity;
														}
														
														args.object.style.MozOpacity = minOpacity / 100;
														//ImageObj.style.filters.alpha.opacity=90
														args.object.style.filter = Application.util.style.getCurrent(args.object, "filter").replace( /opacity\=[0-9]+/, "opacity=" + minOpacity );
														args.object.style.opacity = minOpacity / 100;
														
														if( minOpacity == maxOpacity )
														{
															clearInterval( intervalPointer );
															
															if(args.onComplete)
															{
																args.onComplete();
															}
															
															return;
														}
													}, delay);
				
				return intervalPointer;
			}
		}
		
	};
	