/*
 * jQuery Nivo Slider v2.7.1
 * 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
            }));
            a(".nivo-caption", f).css("opacity", 0);
            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("opacity") != 0) {
                            c.find("p").stop().fadeTo(b.animSpeed, 0, function () {
                                a(this).html(d);
                                a(this).stop().fadeTo(b.animSpeed, 1)
                            })
                        } else {
                            c.find("p").html(d)
                        }
                        c.stop().fadeTo(b.animSpeed, b.captionOpacity)
                    } else {
                        c.stop().fadeTo(b.animSpeed, 0)
                    }
                };
            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: false,
        directionNavHide: false,
        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)
