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

