/*
 * 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) {a(function() {
	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(
					"mouseover",
					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 : true,
		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)
