/*
 * 	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
 *	Works with jQuery version 1.3+
 *
 */
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",
    slides:".slides",
    pagination:"pagination",
    containerClick:true,
    autoStart:0,
    restart:0,
    slidespeed:300,
    fadespeed:200,
    autoHeight:0,
    addPagination:false
}
})
}
