(function($) {

	$.fn.easySlider_footer = function(options){
	  
		// default configuration properties
		var defaults_footer = {			
			prevId_footer: 		'prevBtn_footer',
			prevText_footer: 		'Previous_footer',
			Next_footerId_footer: 		'nextBtn_footer',	
			Next_footerText_footer: 		'Next_footer',
			controls_footerShow_footer:	true,
			controls_footerBefore_footer:	'',
			controls_footerAfter_footer:	'',	
			controls_footerFade_footer:	true,
			First_footerId_footer: 		'First_footerBtn_footer',
			First_footerText_footer: 		'First_footer',
			First_footerShow_footer:		false,
			Last_footerId_footer: 		'Last_footerBtn_footer',	
			Last_footerText_footer: 		'Last_footer',
			Last_footerShow_footer:		false,				
			vertical_footer:		false,
			speed_footer: 			800,
			auto_footer:			false,
			pause_footer:			5000,
			continuous_footer:		false, 
			numeric_footer: 		false,
			numericId_footer: 		'controls_footer'
		}; 
		
		var options = $.extend(defaults_footer, 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;
			$("ul", obj).css('width',s*w);			
			
			if(options.continuous_footer){
				$("ul", obj).prepend($("ul li:Last_footer-child", obj).clone().css("margin-left","-"+ w +"px"));
				$("ul", obj).append($("ul li:nth-child(2)", obj).clone());
				$("ul", obj).css('width',(s+1)*w);
			};				
			
			if(!options.vertical_footer) $("li", obj).css('float','left');
								
			if(options.controls_footerShow_footer){
				var html = options.controls_footerBefore_footer;				
				if(options.numeric_footer){
					html += '<ol id="'+ options.numericId_footer +'"></ol>';
				} else {
					if(options.First_footerShow_footer) html += '<span id="'+ options.First_footerId_footer +'"><a href=\"javascript:void(0);\">'+ options.First_footerText_footer +'</a></span>';
					html += ' <span id="'+ options.prevId_footer +'"><a href=\"javascript:void(0);\">'+ options.prevText_footer +'</a></span>';
					html += ' <span id="'+ options.Next_footerId_footer +'"><a href=\"javascript:void(0);\">'+ options.Next_footerText_footer +'</a></span>';
					if(options.Last_footerShow_footer) html += ' <span id="'+ options.Last_footerId_footer +'"><a href=\"javascript:void(0);\">'+ options.Last_footerText_footer +'</a></span>';				
				};
				
				html += options.controls_footerAfter_footer;						
				$(obj).after(html);										
			};
			
			if(options.numeric_footer){									
				for(var i=0;i<s;i++){						
					$(document.createElement("li"))
						.attr('id',options.numericId_footer + (i+1))
						.html('<a rel='+ i +' href=\"javascript:void(0);\">'+ (i+1) +'</a>')
						.appendTo($("#"+ options.numericId_footer))
						.click(function(){							
							animate($("a",$(this)).attr('rel'),true);
						}); 												
				};							
			} else {
				$("a","#"+options.Next_footerId_footer).click(function(){		
					animate("Next_footer",true);
				});
				$("a","#"+options.prevId_footer).click(function(){		
					animate("prev",true);				
				});	
				$("a","#"+options.First_footerId_footer).click(function(){		
					animate("First_footer",true);
				});				
				$("a","#"+options.Last_footerId_footer).click(function(){		
					animate("Last_footer",true);				
				});				
			};
			
			function setCurrent(i){
				i = parseInt(i)+1;
				$("li", "#" + options.numericId_footer).removeClass("current");
				$("li#" + options.numericId_footer + i).addClass("current");
			};
			
			function adjust(){
				if(t>ts) t=0;		
				if(t<0) t=ts;	
				if(!options.vertical_footer) {
					$("ul",obj).css("margin-left",(t*w*-1));
				} else {
					$("ul",obj).css("margin-left",(t*h*-1));
				}
				clickable = true;
				if(options.numeric_footer) setCurrent(t);
			};
			
			function animate(dir,clicked){
				if (clickable){
					clickable = false;
					var ot = t;				
					switch(dir){
						case "Next_footer":
							t = (ot>=ts) ? (options.continuous_footer ? t+1 : ts) : t+1;						
							break; 
						case "prev":
							t = (t<=0) ? (options.continuous_footer ? t-1 : 0) : t-1;
							break; 
						case "First_footer":
							t = 0;
							break; 
						case "Last_footer":
							t = ts;
							break; 
						default:
							t = dir;
							break; 
					};	
					var diff = Math.abs(ot-t);
					var speed_footer = diff*options.speed_footer;						
					if(!options.vertical_footer) {
						p = (t*w*-1);
						$("ul",obj).animate(
							{ marginLeft: p }, 
							{ queue:false, duration:speed_footer, complete:adjust }
						);				
					} else {
						p = (t*h*-1);
						$("ul",obj).animate(
							{ marginTop: p }, 
							{ queue:false, duration:speed_footer, complete:adjust }
						);					
					};
					
					if(!options.continuous_footer && options.controls_footerFade_footer){					
						if(t==ts){
							$("a","#"+options.Next_footerId_footer).hide();
							$("a","#"+options.Last_footerId_footer).hide();
						} else {
							$("a","#"+options.Next_footerId_footer).show();
							$("a","#"+options.Last_footerId_footer).show();					
						};
						if(t==0){
							$("a","#"+options.prevId_footer).hide();
							$("a","#"+options.First_footerId_footer).hide();
						} else {
							$("a","#"+options.prevId_footer).show();
							$("a","#"+options.First_footerId_footer).show();
						};					
					};				
					
					if(clicked) clearTimeout(timeout);
					if(options.auto_footer && dir=="Next_footer" && !clicked){;
						timeout = setTimeout(function(){
							animate("Next_footer",false);
						},diff*options.speed_footer+options.pause_footer);
					};
			
				};
				
			};
			// init
			var timeout;
			if(options.auto_footer){;
				timeout = setTimeout(function(){
					animate("Next_footer",false);
				},options.pause_footer);
			};		
			
			if(options.numeric_footer) setCurrent(0);
		
			if(!options.continuous_footer && options.controls_footerFade_footer){					
				$("a","#"+options.prevId_footer).hide();
				$("a","#"+options.First_footerId_footer).hide();				
			};				
			
		});
	  
	};

})(jQuery);




