/*
 *	Script adapté du easySlider 1.7
 */

 (function($) {

	$.fn.slider = function(options){
		// default configuration properties
		var defaults = {
			init:			0,
			speed: 			800,
			auto:			true,
			pause:			2000,
			fadeTime:		800,
			continuous:		true,
			controlsBefore:	'',
			controlsAfter:	'',
			controlsShow:	true,
			numeric: 		true,
			numericId: 		'controls'
		}; 

		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 = +options.init-1;
			$("ul", obj).css('width',s*w);

			if(options.controlsShow){
				var html = options.controlsBefore;
				if(options.numeric){
					html += '<ol id="'+ options.numericId +'"></ol>';
				}
				html += options.controlsAfter;
				$(obj).after(html);
			};

			if(options.numeric){
				for(var i=0;i<s;i++){
					$(document.createElement("li"))
						.attr('id',options.numericId + (i+1))
						.html('<a rel='+ i +' href=\"javascript:void(0);\">'+ (i+1) +'</a>')
						.appendTo($("#"+ options.numericId))
						.click(function(){
							animate(+$("a",$(this)).attr('rel'),true);
						});
				};
			}

			function setCurrent(i){
				i = parseInt(i)+1;
				$("li", "#" + options.numericId).removeClass("current");
				$("li#" + options.numericId + i).addClass("current");
			};

			function adjust(){
				if(t>ts) t=0;
				if(t<0) t=ts;
				$("ul",obj).css("margin-left",(t*w*-1));
				clickable = true;
				if(options.numeric) setCurrent(t);
			};

			function animate(dir,clicked){
				if (clickable){
					clickable = false;
					var ot = t;
					switch(dir){
						case "next":
							t = (ot>=ts) ? (options.continuous ? t+1 : ts) : t+1;
							break; 
						case "prev":
							t = (t<=0) ? (options.continuous ? t-1 : 0) : t-1;
							break; 
						case "first":
							t = 0;
							break; 
						case "last":
							t = ts;
							break; 
						default:
							t = dir;
							break; 
					};	
					var diff = Math.abs(ot-t);
					var speed = diff*options.speed;

					p = (t*w*-1);
					$("ul",obj).fadeOut(options.fadeTime,function(){
						$(this).css('margin-left',p);
						$(this).fadeIn(options.fadeTime,adjust());
					});

					if(clicked) clearTimeout(timeout);
					if(options.auto){;
						timeout = setTimeout(function(){
							animate("next",false);
						},options.pause);
					};

				};

			};
			// init
			var timeout;
			if(options.auto){;
				timeout = setTimeout(function(){
					animate("next",false);
				},options.pause);
			};
			
			if(options.numeric) setCurrent(t);
			$("ul",obj).css('margin-left',t*w*-1);
		});
	  
	};

})(jQuery);
