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

