/* * 	loopedSlider 0.5.6 - jQuery plugin *	written by Nathan Searles	 *	http://nathansearles.com/loopedslider/ * *	Copyright (c) 2009 Nathan Searles (http://nathansearles.com/) *	Dual licensed under the MIT (MIT-LICENSE.txt) *	and GPL (GPL-LICENSE.txt) licenses. * *	Built for jQuery library *	http://jquery.com *	Compatible with jQuery 1.3.2+ * */ /* *	markup example for $("#loopedSlider").loopedSlider(); * *	<div id="loopedSlider">	 *		<div class="container"> *			<div class="slides"> *				<div><img src="01.jpg" alt="" /></div> *				<div><img src="02.jpg" alt="" /></div> *				<div><img src="03.jpg" alt="" /></div> *				<div><img src="04.jpg" alt="" /></div> *			</div> *		</div> *		<a href="#" class="previous">previous</a> *		<a href="#" class="next">next</a>	 *	</div> **/ if(typeof jQuery != 'undefined') {	jQuery(function($) {		$.fn.extend({			loopedSlider: function(options) {				var settings = $.extend({}, $.fn.loopedSlider.defaults, options); 				return this.each(					function() {					if($.fn.jquery < '1.3.2') {return;}					var $t = $(this);					var o = $.metadata ? $.extend({}, settings, $t.metadata()) : settings; 					var distance = 0;					var times = 1;					var slides = $(o.slides,$t).children().size();					var width = $(o.slides,$t).children().outerWidth();					var position = 0;					var active = false;					var number = 0;					var interval = 0;					var restart = 0;					var pagination = $("."+o.pagination+" li a",$t); 					if(o.addPagination && !$(pagination).length){						var buttons = slides;						$($t).append("<ul class="+o.pagination+">");						$(o.slides,$t).children().each(function(){							if (number<buttons) {								$("."+o.pagination,$t).append("<li><a rel="+(number+1)+" href=\"#\" >"+(number+1)+"</a></li>");								number = number+1;							} else {								number = 0;								return false;							}							$("."+o.pagination+" li a:eq(0)",$t).parent().addClass("active");						});						pagination = $("."+o.pagination+" li a",$t);					} else {						$(pagination,$t).each(function(){							number=number+1;							$(this).attr("rel",number);							$(pagination.eq(0),$t).parent().addClass("active");						});					} 					if (slides===1) {						$(o.slides,$t).children().css({position:"absolute",left:position,display:"block"});						return;					} 					$(o.slides,$t).css({width:(slides*width)}); 					$(o.slides,$t).children().each(function(){						$(this).css({position:"absolute",left:position,display:"block"});						position=position+width;					}); 					$(o.slides,$t).children(":eq("+(slides-1)+")").css({position:"absolute",left:-width}); 					if (slides>3) {						$(o.slides,$t).children(":eq("+(slides-1)+")").css({position:"absolute",left:-width});					} 					if(o.autoHeight){autoHeight(times);} 					$(".next",$t).click(function(){						if(active===false) {							animate("next",true);							if(o.autoStart){								if (o.restart) {autoStart();}								else {clearInterval(sliderIntervalID);}							}						} return false;					}); 					$(".previous",$t).click(function(){						if(active===false) {								animate("prev",true);							if(o.autoStart){								if (o.restart) {autoStart();}								else {clearInterval(sliderIntervalID);}							}						} return false;					}); 					if (o.containerClick) {						$(o.container,$t).click(function(){							if(active===false) {								animate("next",true);								if(o.autoStart){									if (o.restart) {autoStart();}									else {clearInterval(sliderIntervalID);}								}							} return false;						});					} 					$(pagination,$t).click(function(){						if ($(this).parent().hasClass("active")) {return false;}						else {							times = $(this).attr("rel");							$(pagination,$t).parent().siblings().removeClass("active");							$(this).parent().addClass("active");							animate("fade",times);							if(o.autoStart){								if (o.restart) {autoStart();}								else {clearInterval(sliderIntervalID);}							}						} return false;					}); 					if (o.autoStart) {						sliderIntervalID = setInterval(function(){							if(active===false) {animate("next",true);}						},o.autoStart);						function autoStart() {							if (o.restart) {							clearInterval(sliderIntervalID,interval);							clearTimeout(restart);								restart = setTimeout(function() {									interval = setInterval(	function(){										animate("next",true);									},o.autoStart);								},o.restart);							} else {								sliderIntervalID = setInterval(function(){									if(active===false) {animate("next",true);}								},o.autoStart);							}						};					} 					function current(times) {						if(times===slides+1){times = 1;}						if(times===0){times = slides;}						$(pagination,$t).parent().siblings().removeClass("active");						$(pagination+"[rel='" + (times) + "']",$t).parent().addClass("active");					}; 					function autoHeight(times) {						if(times===slides+1){times=1;}						if(times===0){times=slides;}							var getHeight = $(o.slides,$t).children(":eq("+(times-1)+")",$t).outerHeight();						$(o.container,$t).animate({height: getHeight},o.autoHeight);										};		 					function animate(dir,clicked){							active = true;							switch(dir){							case "next":								times = times+1;								distance = (-(times*width-width));								current(times);								if(o.autoHeight){autoHeight(times);}								if(slides<3){									if (times===3){$(o.slides,$t).children(":eq(0)").css({left:(slides*width)});}									if (times===2){$(o.slides,$t).children(":eq("+(slides-1)+")").css({position:"absolute",left:width});}								}								$(o.slides,$t).animate({left: distance}, o.slidespeed,function(){									if (times===slides+1) {										times = 1;										$(o.slides,$t).css({left:0},function(){$(o.slides,$t).animate({left:distance})});																	$(o.slides,$t).children(":eq(0)").css({left:0});										$(o.slides,$t).children(":eq("+(slides-1)+")").css({ position:"absolute",left:-width});													}									if (times===slides) $(o.slides,$t).children(":eq(0)").css({left:(slides*width)});									if (times===slides-1) $(o.slides,$t).children(":eq("+(slides-1)+")").css({left:(slides*width-width)});									active = false;								});													break; 							case "prev":								times = times-1;								distance = (-(times*width-width));								current(times);								if(o.autoHeight){autoHeight(times);}								if (slides<3){									if(times===0){$(o.slides,$t).children(":eq("+(slides-1)+")").css({position:"absolute",left:(-width)});}									if(times===1){$(o.slides,$t).children(":eq(0)").css({position:"absolute",left:0});}								}								$(o.slides,$t).animate({left: distance}, o.slidespeed,function(){									if (times===0) {										times = slides;										$(o.slides,$t).children(":eq("+(slides-1)+")").css({position:"absolute",left:(slides*width-width)});										$(o.slides,$t).css({left: -(slides*width-width)});										$(o.slides,$t).children(":eq(0)").css({left:(slides*width)});									}									if (times===2 ) $(o.slides,$t).children(":eq(0)").css({position:"absolute",left:0});									if (times===1) $(o.slides,$t).children(":eq("+ (slides-1) +")").css({position:"absolute",left:-width});									active = false;								});								break;							case "fade":								times = [times]*1;								distance = (-(times*width-width));								current(times);								if(o.autoHeight){autoHeight(times);}								$(o.slides,$t).children().fadeOut(o.fadespeed, function(){									$(o.slides,$t).css({left: distance});									$(o.slides,$t).children(":eq("+(slides-1)+")").css({left:slides*width-width});									$(o.slides,$t).children(":eq(0)").css({left:0});									if(times===slides){$(o.slides,$t).children(":eq(0)").css({left:(slides*width)});}									if(times===1){$(o.slides,$t).children(":eq("+(slides-1)+")").css({ position:"absolute",left:-width});}									$(o.slides,$t).children().fadeIn(o.fadespeed);									active = false;								});								break; 							default:								break;							}											};					}				);			}		});		$.fn.loopedSlider.defaults = {			container: ".container", //Class/id of main container. You can use "#container" for an id.			slides: ".slides", //Class/id of slide container. You can use "#slides" for an id.			pagination: "pagination", //Class name of parent ul for numbered links. Don't add a "." here.			containerClick: false, //Click slider to goto next slide? true/false			autoStart: 10000, //Set to positive number for true. This number will be the time between transitions.			restart: 5000, //Set to positive number for true. Sets time until autoStart is restarted.			slidespeed: 500, //Speed of slide animation, 1000 = 1second.			fadespeed: 300, //Speed of fade animation, 1000 = 1second.			autoHeight: 0, //Set to positive number for true. This number will be the speed of the animation.			addPagination: false //Add pagination links based on content? true/false		};	});}