/*
 * 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);
