/*
 * jQuery Nivo Slider v2.3
 * http://nivo.dev7studios.com
 *
 * Copyright 2010, Gilbert Pellegrom
 * Free to use and abuse under the MIT license.
 * http://www.opensource.org/licenses/mit-license.php
 */

(function(b){
    var a=function(j,q){
        var g=b.extend({},b.fn.nivoSlider.defaults,q);
        var m={
            currentSlide:0,
            currentImage:"",
            totalSlides:0,
            randAnim:"",
            running:false,
            paused:false,
            stop:false
        };

        var d=b(j);
        d.data("nivo:vars",m);
        d.css("position","relative");
        d.addClass("nivoSlider");
        var e=d.children();
        e.each(function(){
            var t=b(this);
            var s="";
            if(!t.is("img")){
                if(t.is("a")){
                    t.addClass("nivo-imageLink");
                    s=t
                }
                t=t.find("img:first")
            }
            var r=t.width();
            if(r==0){
                r=t.attr("width")
            }
            var i=t.height();
            if(i==0){
                i=t.attr("height")
            }
            if(r>d.width()){
                d.width(r)
            }
            if(i>d.height()){
                d.height(i)
            }
            if(s!=""){
                s.css("display","none")
            }
            t.css("display","none");
            m.totalSlides++
        });
        if(g.startSlide>0){
            if(g.startSlide>=m.totalSlides){
                g.startSlide=m.totalSlides-1
            }
            m.currentSlide=g.startSlide
        }
        if(b(e[m.currentSlide]).is("img")){
            m.currentImage=b(e[m.currentSlide])
        }else{
            m.currentImage=b(e[m.currentSlide]).find("img:first")
        }
        if(b(e[m.currentSlide]).is("a")){
            b(e[m.currentSlide]).css("display","block")
        }
        d.css("background","url("+m.currentImage.attr("src")+") no-repeat");
        for(var k=0;k<g.slices;k++){
            var o=Math.round(d.width()/g.slices);
            if(k==g.slices-1){
                d.append(b('<div class="nivo-slice"></div>').css({
                    left:(o*k)+"px",
                    width:(d.width()-(o*k))+"px"
                }))
            }else{
                d.append(b('<div class="nivo-slice"></div>').css({
                    left:(o*k)+"px",
                    width:o+"px"
                }))
            }
        }
        d.append(b('<div class="nivo-caption"><p></p></div>').css({
            display:"none",
            opacity:g.captionOpacity
        }));
        if(m.currentImage.attr("title")!=""){
            var n=m.currentImage.attr("title");
            if(n.substr(0,1)=="#"){
                n=b(n).html()
            }
            b(".nivo-caption p",d).html(n);
            b(".nivo-caption",d).fadeIn(g.animSpeed)
        }
        var c=0;
        if(!g.manualAdvance&&e.length>1){
            c=setInterval(function(){
                p(d,e,g,false)
            },g.pauseTime)
        }
        if(g.directionNav){
            d.append('<div class="nivo-directionNav"><a class="nivo-prevNav">Prev</a><a class="nivo-nextNav">Next</a></div>');
            if(g.directionNavHide){
                b(".nivo-directionNav",d).hide();
                d.hover(function(){
                    b(".nivo-directionNav",d).show()
                },function(){
                    b(".nivo-directionNav",d).hide()
                })
            }
            b("a.nivo-prevNav",d).live("click",function(){
                if(m.running){
                    return false
                }
                clearInterval(c);
                c="";
                m.currentSlide-=2;
                p(d,e,g,"prev")
            });
            b("a.nivo-nextNav",d).live("click",function(){
                if(m.running){
                    return false
                }
                clearInterval(c);
                c="";
                p(d,e,g,"next")
            })
        }
        /*if(g.controlNav){
            var l=b('<div class="nivo-controlNav"></div>');
            d.append(l);
            for(var k=0;k<e.length;k++){
                if(g.controlNavThumbs){
                    var f=e.eq(k);
                    if(!f.is("img")){
                        f=f.find("img:first")
                    }
                    if(g.controlNavThumbsFromRel){
                        l.append('<a class="nivo-control" rel="'+k+'"><img src="'+f.attr("rel")+'" alt="" /></a>')
                    }else{
                        l.append('<a class="nivo-control" rel="'+k+'"><img src="'+f.attr("src").replace(g.controlNavThumbsSearch,g.controlNavThumbsReplace)+'" alt="" /></a>')
                    }
                }else{
                    l.append('<a class="nivo-control" rel="'+k+'">'+(k+1)+"</a>")
                }
            }
            b(".nivo-controlNav a:eq("+m.currentSlide+")",d).addClass("active");
            b(".nivo-controlNav a",d).live("click",function(){
                if(m.running){
                    return false
                }
                if(b(this).hasClass("active")){
                    return false
                }
                clearInterval(c);
                c="";
                d.css("background","url("+m.currentImage.attr("src")+") no-repeat");
                m.currentSlide=b(this).attr("rel")-1;
                p(d,e,g,"control")
            })
        }*/
        if(g.keyboardNav){
            b(window).keypress(function(i){
                if(i.keyCode=="37"){
                    if(m.running){
                        return false
                    }
                    clearInterval(c);
                    c="";
                    m.currentSlide-=2;
                    p(d,e,g,"prev")
                }
                if(i.keyCode=="39"){
                    if(m.running){
                        return false
                    }
                    clearInterval(c);
                    c="";
                    p(d,e,g,"next")
                }
            })
        }
        if(g.pauseOnHover){
            d.hover(function(){
                m.paused=true;
                clearInterval(c);
                c=""
            },function(){
                m.paused=false;
                if(c==""&&!g.manualAdvance){
                    c=setInterval(function(){
                        p(d,e,g,false)
                    },g.pauseTime)
                }
            })
        }
        d.bind("nivo:animFinished",function(){
            m.running=false;
            b(e).each(function(){
                if(b(this).is("a")){
                    b(this).css("display","none")
                }
            });
            if(b(e[m.currentSlide]).is("a")){
                b(e[m.currentSlide]).css("display","block")
            }
            if(c==""&&!m.paused&&!g.manualAdvance){
                c=setInterval(function(){
                    p(d,e,g,false)
                },g.pauseTime)
            }
            g.afterChange.call(this)
        });
        var p=function(r,s,u,x){
            var y=r.data("nivo:vars");
            if(y&&(y.currentSlide==y.totalSlides-1)){
                u.lastSlide.call(this)
            }
            if((!y||y.stop)&&!x){
                return false
            }
            u.beforeChange.call(this);
            if(!x){
                r.css("background","url("+y.currentImage.attr("src")+") no-repeat")
            }else{
                if(x=="prev"){
                    r.css("background","url("+y.currentImage.attr("src")+") no-repeat")
                }
                if(x=="next"){
                    r.css("background","url("+y.currentImage.attr("src")+") no-repeat")
                }
            }
            y.currentSlide++;
            if(y.currentSlide==y.totalSlides){
                y.currentSlide=0;
                u.slideshowEnd.call(this)
            }
            if(y.currentSlide<0){
                y.currentSlide=(y.totalSlides-1)
            }
            if(b(s[y.currentSlide]).is("img")){
                y.currentImage=b(s[y.currentSlide])
            }else{
                y.currentImage=b(s[y.currentSlide]).find("img:first")
            }
            if(u.controlNav){
                b(".nivo-controlNav a",r).removeClass("active");
                b(".nivo-controlNav a:eq("+y.currentSlide+")",r).addClass("active")
            }
            if(y.currentImage.attr("title")!=""){
                var z=y.currentImage.attr("title");
                if(z.substr(0,1)=="#"){
                    z=b(z).html()
                }
                if(b(".nivo-caption",r).css("display")=="block"){
                    b(".nivo-caption p",r).fadeOut(u.animSpeed,function(){
                        b(this).html(z);
                        b(this).fadeIn(u.animSpeed)
                    })
                }else{
                    b(".nivo-caption p",r).html(z)
                }
                b(".nivo-caption",r).fadeIn(u.animSpeed)
            }else{
                b(".nivo-caption",r).fadeOut(u.animSpeed)
            }
            var w=0;
            b(".nivo-slice",r).each(function(){
                var i=Math.round(r.width()/u.slices);
                b(this).css({
                    height:"0px",
                    opacity:"0",
                    background:"url("+y.currentImage.attr("src")+") no-repeat -"+((i+(w*i))-i)+"px 0%"
                });
                w++
            });
            if(u.effect=="random"){
                var A=new Array("sliceDownRight","sliceDownLeft","sliceUpRight","sliceUpLeft","sliceUpDown","sliceUpDownLeft","fold","fade");
                y.randAnim=A[Math.floor(Math.random()*(A.length+1))];
                if(y.randAnim==undefined){
                    y.randAnim="fade"
                }
            }
            if(u.effect.indexOf(",")!=-1){
                var A=u.effect.split(",");
                y.randAnim=b.trim(A[Math.floor(Math.random()*A.length)])
            }
            y.running=true;
            if(u.effect=="sliceDown"||u.effect=="sliceDownRight"||y.randAnim=="sliceDownRight"||u.effect=="sliceDownLeft"||y.randAnim=="sliceDownLeft"){
                var t=0;
                var w=0;
                var C=b(".nivo-slice",r);
                if(u.effect=="sliceDownLeft"||y.randAnim=="sliceDownLeft"){
                    C=b(".nivo-slice",r)._reverse()
                }
                C.each(function(){
                    var i=b(this);
                    i.css("top","0px");
                    if(w==u.slices-1){
                        setTimeout(function(){
                            i.animate({
                                height:"100%",
                                opacity:"1.0"
                            },u.animSpeed,"",function(){
                                r.trigger("nivo:animFinished")
                            })
                        },(100+t))
                    }else{
                        setTimeout(function(){
                            i.animate({
                                height:"100%",
                                opacity:"1.0"
                            },u.animSpeed)
                        },(100+t))
                    }
                    t+=50;
                    w++
                })
            }else{
                if(u.effect=="sliceUp"||u.effect=="sliceUpRight"||y.randAnim=="sliceUpRight"||u.effect=="sliceUpLeft"||y.randAnim=="sliceUpLeft"){
                    var t=0;
                    var w=0;
                    var C=b(".nivo-slice",r);
                    if(u.effect=="sliceUpLeft"||y.randAnim=="sliceUpLeft"){
                        C=b(".nivo-slice",r)._reverse()
                    }
                    C.each(function(){
                        var i=b(this);
                        i.css("bottom","0px");
                        if(w==u.slices-1){
                            setTimeout(function(){
                                i.animate({
                                    height:"100%",
                                    opacity:"1.0"
                                },u.animSpeed,"",function(){
                                    r.trigger("nivo:animFinished")
                                })
                            },(100+t))
                        }else{
                            setTimeout(function(){
                                i.animate({
                                    height:"100%",
                                    opacity:"1.0"
                                },u.animSpeed)
                            },(100+t))
                        }
                        t+=50;
                        w++
                    })
                }else{
                    if(u.effect=="sliceUpDown"||u.effect=="sliceUpDownRight"||y.randAnim=="sliceUpDown"||u.effect=="sliceUpDownLeft"||y.randAnim=="sliceUpDownLeft"){
                        var t=0;
                        var w=0;
                        var B=0;
                        var C=b(".nivo-slice",r);
                        if(u.effect=="sliceUpDownLeft"||y.randAnim=="sliceUpDownLeft"){
                            C=b(".nivo-slice",r)._reverse()
                        }
                        C.each(function(){
                            var i=b(this);
                            if(w==0){
                                i.css("top","0px");
                                w++
                            }else{
                                i.css("bottom","0px");
                                w=0
                            }
                            if(B==u.slices-1){
                                setTimeout(function(){
                                    i.animate({
                                        height:"100%",
                                        opacity:"1.0"
                                    },u.animSpeed,"",function(){
                                        r.trigger("nivo:animFinished")
                                    })
                                },(100+t))
                            }else{
                                setTimeout(function(){
                                    i.animate({
                                        height:"100%",
                                        opacity:"1.0"
                                    },u.animSpeed)
                                },(100+t))
                            }
                            t+=50;
                            B++
                        })
                    }else{
                        if(u.effect=="fold"||y.randAnim=="fold"){
                            var t=0;
                            var w=0;
                            b(".nivo-slice",r).each(function(){
                                var i=b(this);
                                var v=i.width();
                                i.css({
                                    top:"0px",
                                    height:"100%",
                                    width:"0px"
                                });
                                if(w==u.slices-1){
                                    setTimeout(function(){
                                        i.animate({
                                            width:v,
                                            opacity:"1.0"
                                        },u.animSpeed,"",function(){
                                            r.trigger("nivo:animFinished")
                                        })
                                    },(100+t))
                                }else{
                                    setTimeout(function(){
                                        i.animate({
                                            width:v,
                                            opacity:"1.0"
                                        },u.animSpeed)
                                    },(100+t))
                                }
                                t+=50;
                                w++
                            })
                        }else{
                            if(u.effect=="fade"||y.randAnim=="fade"){
                                var w=0;
                                b(".nivo-slice",r).each(function(){
                                    b(this).css("height","100%");
                                    if(w==u.slices-1){
                                        b(this).animate({
                                            opacity:"1.0"
                                        },(u.animSpeed*2),"",function(){
                                            r.trigger("nivo:animFinished")
                                        })
                                    }else{
                                        b(this).animate({
                                            opacity:"1.0"
                                        },(u.animSpeed*2))
                                    }
                                    w++
                                })
                            }
                        }
                    }
                }
            }
        };

        var h=function(i){
            if(this.console&&typeof console.log!="undefined"){
                console.log(i)
            }
        };

        this.stop=function(){
            if(!b(j).data("nivo:vars").stop){
                b(j).data("nivo:vars").stop=true;
                h("Stop Slider")
            }
        };

        this.start=function(){
            if(b(j).data("nivo:vars").stop){
                b(j).data("nivo:vars").stop=false;
                h("Start Slider")
            }
        };

        g.afterLoad.call(this)
    };

    b.fn.nivoSlider=function(c){
        return this.each(function(){
            var d=b(this);
            if(d.data("nivoslider")){
                return
            }
            var e=new a(this,c);
            d.data("nivoslider",e)
        })
    };

    b.fn.nivoSlider.defaults={
        effect:"random",
        slices:15,
        animSpeed:500,
        pauseTime:3000,
        startSlide:0,
        directionNav:true,
        directionNavHide:true,
        controlNav:true,
        controlNavThumbs:false,
        controlNavThumbsFromRel:false,
        controlNavThumbsSearch:".jpg",
        controlNavThumbsReplace:"_thumb.jpg",
        keyboardNav:true,
        pauseOnHover:true,
        manualAdvance:false,
        captionOpacity:0.8,
        beforeChange:function(){},
        afterChange:function(){},
        slideshowEnd:function(){},
        lastSlide:function(){},
        afterLoad:function(){}
    };

    b.fn._reverse=[].reverse
})(jQuery);
