Blame | Last modification | View Log | RSS feed
/** 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);clearInterval(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: true, //Click slider to goto next slide? true/falseautoStart: 0, //Set to positive number for true. This number will be the time between transitions.restart: 0, //Set to positive number for true. Sets time until autoStart is restarted.slidespeed: 300, //Speed of slide animation, 1000 = 1second.fadespeed: 200, //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};});}