/*
 * 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).on("click", function() {
					if (m.running) {
						return false
					}
					clearInterval(c);
					c = "";
					m.currentSlide -= 2;
					p(d, e, g, "prev")
				});
				b("a.nivo-nextNav", d).on("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 {
						var title = $('.nivoSlider a').find('img').eq(k).attr('title');

						l.append('<a class="nivo-control" rel="' + k + '">'+ title +'</a>')
					}
				}
				b(".nivo-controlNav a:eq(" + m.currentSlide + ")", d).addClass("active");
				b(".nivo-controlNav a", d).on("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: 300,
		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);