/*
 * 	Effects Slider 1.0 - jQuery plugin
 *	written by Htmlblender
 *	http://htmlblender.com
 *
 *	Copyright (c) 2010 Htmlblender (http://htmlblender.com)
 *
 *	Built for jQuery library
 *	http://jquery.com
 *
 */
 
/*
 *	markup example for $("#slider").effectsSlider();
 *	
 * 	<div id="slider" class="slider-effect">
 *		<ul>
 *			<li><img class="fade" src="images/01.jpg" alt="" /></li>
 *			<li><img class="fade" src="images/02.jpg" alt="" /></li>
 *			<li><img class="fade" src="images/03.jpg" alt="" /></li>
 *			<li><img class="fade" src="images/04.jpg" alt="" /></li>
 *			<li><img class="fade" src="images/05.jpg" alt="" /></li>
 *		</ul>
 *	</div>
 *
 */

(function($) {

	$.fn.effectsSlider = function(options){
	  
		// default configuration properties
		var defaults = {			
			speed: 		800,
			pause: 		3000,
			auto: 		true,
			continuous: true
		}; 
		
		var options = $.extend(defaults, options);  
				
		this.each(function() { 
			var obj = $(this); 				
			var s = $("li", obj).length;
			var w = $("li", obj).width(); 
			var h = $("li", obj).height(); 
			var clickable = true;
			obj.width(w); 
			obj.height(h); 
			obj.css("overflow","hidden");
			
			
			var ts = s-1;
			var t = 0;
			var cur_obj, next_obj;
			
			$("ul li:first", obj).show();
			
			
			function adjust(){
				if(t>ts) t=0;		
				if(t<0) t=ts;
				
				cur_obj.css('z-index', '1').css({'left': '0px', 'top': '0px', 'display': 'none'});
				next_obj.css('z-index', '1').css({'left': '0px', 'top': '0px'});
			
				clickable = true;
			};
			
			
			
			function animate(dir,clicked){
				if (clickable){
					clickable = false;
					var ot = t;	
					switch(dir){
						case "next":
							t = (ot>=ts) ? 0 : t+1;						
							break; 
						default:
							t = dir;
							break; 
					};	
					var diff = Math.abs(ot-t);
					var speed = diff*options.speed;	
					
					cur_obj = $("ul li:eq("+ot+")", obj).css('z-index', '5');
					next_obj = $("ul li:eq("+t+")", obj);
					next_obj.css('z-index', '4').show();
					
					switch(cur_obj.find('img').attr('class')){
						case "slideUp":
							cur_obj.animate({top: h*(-1)+"px"}, options.speed, function(){ adjust(); });
							break; 
						case "slideDown":
							cur_obj.animate({top: h+"px"}, options.speed, function(){ adjust(); });
							break;	
						case "slideLeft":
							cur_obj.animate({left: w*(-1)+"px"}, options.speed, function(){ adjust(); });
							break;	
						case "slideRight":
							cur_obj.animate({left: w+"px"}, options.speed, function(){ adjust(); });
							break;		
						default:
							cur_obj.fadeOut(options.speed, function(){
								adjust();
							});
							break; 
					};	
					
					if(clicked) clearTimeout(timeout);
					
					if(options.auto && dir=="next" && !clicked){;
						timeout = setTimeout(function(){
							animate("next",false);
						}, options.pause);
					};
			
				};
				
			};
			
			// init
			var timeout;
			if(options.auto){;
				timeout = setTimeout(function(){
					animate("next", false);
				},options.pause);
			};
		});
	  
	};

})(jQuery);
