/*

* 	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 = {

                containers: ".containers", //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: 5000, //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: 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

        };

});

}
