/**
 * jQuery bxSlider v3.0 http://bxslider.com
 * 
 * Copyright 2010, Steven Wanderski http://bxcreative.com
 * 
 * Free to use and abuse under the MIT license.
 * http://www.opensource.org/licenses/mit-license.php
 * 
 */
(function(a) {
	a.fn.bxSlider = function(b) {
		function Z(b, c, d, e) {
			var f = [];
			var g = d;
			var h = false;
			if (e == "backward") {
				b = a.makeArray(b);
				b.reverse()
			}
			while (g > 0) {
				a.each(b, function(b, d) {
					if (g > 0) {
						if (!h) {
							if (b == c) {
								h = true;
								f.push(a(this).clone());
								g--
							}
						} else {
							f.push(a(this).clone());
							g--
						}
					} else {
						return false
					}
				})
			}
			return f
		}
		function Y() {
			var a = i.outerHeight() * b.displaySlideQty;
			return a
		}
		function X() {
			var a = i.outerWidth() * b.displaySlideQty;
			return a
		}
		function W(b, c) {
			if (c == "left") {
				var d = a(".pager", h).eq(b).position().left
			} else if (c == "top") {
				var d = a(".pager", h).eq(b).position().top
			}
			return d
		}
		function V() {
			if (!b.infiniteLoop && b.hideControlOnEnd) {
				if (x == F) {
					a(".bx-prev", h).hide()
				} else {
					a(".bx-prev", h).show()
				}
				if (x == G) {
					a(".bx-next", h).hide()
				} else {
					a(".bx-next", h).show()
				}
			}
		}
		function U(c, e, f, g) {
			p = a('<a href="" class="bx-start"></a>');
			if (c == "text") {
				r = e
			} else {
				r = '<img src="' + e + '" />'
			}
			if (f == "text") {
				s = g
			} else {
				s = '<img src="' + g + '" />'
			}
			if (b.autoControlsSelector) {
				a(b.autoControlsSelector).append(p)
			} else {
				h.append('<div class="bx-auto"></div>');
				a(".bx-auto", h).html(p)
			}
			p.click(function() {
				if (b.ticker) {
					if (a(this).hasClass("stop")) {
						d.stopTicker()
					} else if (a(this).hasClass("start")) {
						d.startTicker()
					}
				} else {
					if (a(this).hasClass("stop")) {
						d.stopShow(true)
					} else if (a(this).hasClass("start")) {
						d.startShow(true)
					}
				}
				return false
			})
		}
		function T() {
			var c = a("img", g.eq(x)).attr("title");
			if (c != "") {
				if (b.captionsSelector) {
					a(b.captionsSelector).html(c)
				} else {
					a(".bx-captions", h).html(c)
				}
			} else {
				if (b.captionsSelector) {
					a(b.captionsSelector).html(" ")
				} else {
					a(".bx-captions", h).html(" ")
				}
			}
		}
		function S(c) {
			var e = g.length;
			if (b.moveSlideQty > 1) {
				if (g.length % b.moveSlideQty != 0) {
					e = Math.ceil(g.length / b.moveSlideQty)
				} else {
					e = g.length / b.moveSlideQty
				}
			}
			var f = "";
			if (b.buildPager) {
				for ( var i = 0; i < e; i++) {
					f += b.buildPager(i, g.eq(i * b.moveSlideQty))
				}
			} else if (c == "full") {
				for ( var i = 1; i <= e; i++) {
					f += '<a href="" class="pager-link pager-' + i + '">' + i
							+ "</a>"
				}
			} else if (c == "short") {
				f = '<span class="bx-pager-current">' + (b.startingSlide + 1)
						+ "</span> " + b.pagerShortSeparator
						+ ' <span class="bx-pager-total">' + g.length
						+ "</span>"
			}
			if (b.pagerSelector) {
				a(b.pagerSelector).append(f);
				n = a(b.pagerSelector)
			} else {
				var j = a('<div class="bx-pager"></div>');
				j.append(f);
				if (b.pagerLocation == "top") {
					h.prepend(j)
				} else if (b.pagerLocation == "bottom") {
					h.append(j)
				}
				n = a(".bx-pager", h)
			}
			n.children().click(function() {
				if (b.pagerType == "full") {
					var a = n.children().index(this);
					if (b.moveSlideQty > 1) {
						a *= b.moveSlideQty
					}
					d.goToSlide(a)
				}
				return false
			})
		}
		function R(c, e, f, g) {
			var i = a('<a href="" class="bx-next"></a>');
			var j = a('<a href="" class="bx-prev"></a>');
			if (c == "text") {
				i.html(e)
			} else {
				i.html('<img src="' + e + '" />')
			}
			if (f == "text") {
				j.html(g)
			} else {
				j.html('<img src="' + g + '" />')
			}
			if (b.prevSelector) {
				a(b.prevSelector).append(j)
			} else {
				h.append(j)
			}
			if (b.nextSelector) {
				a(b.nextSelector).append(i)
			} else {
				h.append(i)
			}
			i.click(function() {
				d.goToNextSlide();
				return false
			});
			j.click(function() {
				d.goToPreviousSlide();
				return false
			})
		}
		function Q(c) {
			if (b.pagerType == "full" && b.pager) {
				a("a", n).removeClass(b.pagerActiveClass);
				a("a", n).eq(c).addClass(b.pagerActiveClass)
			} else if (b.pagerType == "short" && b.pager) {
				a(".bx-pager-current", n).html(x + 1)
			}
		}
		function P() {
			g.not(":eq(" + x + ")").fadeTo(b.speed, 0).css("zIndex", 98);
			g.eq(x).css("zIndex", 99).fadeTo(b.speed, 1, function() {
				E = false;
				if (jQuery.browser.msie) {
					g.eq(x).get(0).style.removeAttribute("filter")
				}
				b.onAfterSlide(x, g.length, g.eq(x))
			})
		}
		function O() {
			e.hover(function() {
				if (t) {
					d.stopTicker(false)
				}
			}, function() {
				if (t) {
					d.startTicker(false)
				}
			})
		}
		function N() {
			h.find(".bx-window").hover(function() {
				if (t) {
					d.stopShow(false)
				}
			}, function() {
				if (t) {
					d.startShow(false)
				}
			})
		}
		function M() {
			if (b.startImage != "") {
				startContent = b.startImage;
				startType = "image"
			} else {
				startContent = b.startText;
				startType = "text"
			}
			if (b.stopImage != "") {
				stopContent = b.stopImage;
				stopType = "image"
			} else {
				stopContent = b.stopText;
				stopType = "text"
			}
			U(startType, startContent, stopType, stopContent)
		}
		function L(a, c, d) {
			if (b.mode == "horizontal") {
				if (b.tickerDirection == "next") {
					e.animate({
						left : "-=" + c + "px"
					}, d, "linear", function() {
						e.css("left", a);
						L(a, A, b.tickerSpeed)
					})
				} else if (b.tickerDirection == "prev") {
					e.animate({
						left : "+=" + c + "px"
					}, d, "linear", function() {
						e.css("left", a);
						L(a, A, b.tickerSpeed)
					})
				}
			} else if (b.mode == "vertical") {
				if (b.tickerDirection == "next") {
					e.animate({
						top : "-=" + c + "px"
					}, d, "linear", function() {
						e.css("top", a);
						L(a, B, b.tickerSpeed)
					})
				} else if (b.tickerDirection == "prev") {
					e.animate({
						top : "+=" + c + "px"
					}, d, "linear", function() {
						e.css("top", a);
						L(a, B, b.tickerSpeed)
					})
				}
			}
		}
		function K() {
			if (b.auto) {
				if (!b.infiniteLoop) {
					if (b.autoDirection == "next") {
						o = setInterval(function() {
							x += b.moveSlideQty;
							if (x > G) {
								x = x % g.length
							}
							d.goToSlide(x, false)
						}, b.pause)
					} else if (b.autoDirection == "prev") {
						o = setInterval(function() {
							x -= b.moveSlideQty;
							if (x < 0) {
								negativeOffset = x % g.length;
								if (negativeOffset == 0) {
									x = 0
								} else {
									x = g.length + negativeOffset
								}
							}
							d.goToSlide(x, false)
						}, b.pause)
					}
				} else {
					if (b.autoDirection == "next") {
						o = setInterval(function() {
							d.goToNextSlide(false)
						}, b.pause)
					} else if (b.autoDirection == "prev") {
						o = setInterval(function() {
							d.goToPreviousSlide(false)
						}, b.pause)
					}
				}
			} else if (b.ticker) {
				b.tickerSpeed *= 10;
				a(".pager", h).each(function(b) {
					A += a(this).width();
					B += a(this).height()
				});
				if (b.tickerDirection == "prev" && b.mode == "horizontal") {
					e.css("left", "-" + (A + y) + "px")
				} else if (b.tickerDirection == "prev" && b.mode == "vertical") {
					e.css("top", "-" + (B + z) + "px")
				}
				if (b.mode == "horizontal") {
					C = parseInt(e.css("left"));
					L(C, A, b.tickerSpeed)
				} else if (b.mode == "vertical") {
					D = parseInt(e.css("top"));
					L(D, B, b.tickerSpeed)
				}
				if (b.tickerHover) {
					O()
				}
			}
		}
		function J() {
			if (b.nextImage != "") {
				nextContent = b.nextImage;
				nextType = "image"
			} else {
				nextContent = b.nextText;
				nextType = "text"
			}
			if (b.prevImage != "") {
				prevContent = b.prevImage;
				prevType = "image"
			} else {
				prevContent = b.prevText;
				prevType = "text"
			}
			R(nextType, nextContent, prevType, prevContent)
		}
		function I() {
			if (b.mode == "horizontal" || b.mode == "vertical") {
				var c = Z(g, 0, b.moveSlideQty, "backward");
				a.each(c, function(b) {
					e.prepend(a(this))
				});
				var d = g.length + b.moveSlideQty - 1;
				var f = g.length - b.displaySlideQty;
				var h = d - f;
				var i = Z(g, 0, h, "forward");
				if (b.infiniteLoop) {
					a.each(i, function(b) {
						e.append(a(this))
					})
				}
			}
		}
		function H() {
			I(b.startingSlide);
			if (b.mode == "horizontal") {
				e.wrap(
						'<div class="' + b.wrapperClass + '" style="width:' + l
								+ 'px; position:relative;"></div>').wrap(
						'<div class="bx-window" style="position:relative; overflow:hidden; width:'
								+ l + 'px;"></div>').css({
					width : "999999px",
					position : "relative",
					left : "-" + y + "px"
				});
				e.children().css({
					width : j,
					"float" : "left",
					listStyle : "none"
				});
				h = e.parent().parent();
				g.addClass("pager")
			} else if (b.mode == "vertical") {
				e
						.wrap(
								'<div class="' + b.wrapperClass
										+ '" style="width:' + v
										+ 'px; position:relative;"></div>')
						.wrap(
								'<div class="bx-window" style="width:'
										+ v
										+ "px; height:"
										+ m
										+ 'px; position:relative; overflow:hidden;"></div>')
						.css({
							height : "999999px",
							position : "relative",
							top : "-" + z + "px"
						});
				e.children().css({
					listStyle : "none",
					height : w
				});
				h = e.parent().parent();
				g.addClass("pager")
			} else if (b.mode == "fade") {
				e
						.wrap(
								'<div class="' + b.wrapperClass
										+ '" style="width:' + v
										+ 'px; position:relative;"></div>')
						.wrap(
								'<div class="bx-window" style="height:'
										+ w
										+ "px; width:"
										+ v
										+ 'px; position:relative; overflow:hidden;"></div>');
				e.children().css({
					listStyle : "none",
					position : "absolute",
					top : 0,
					left : 0,
					zIndex : 98
				});
				h = e.parent().parent();
				g.not(":eq(" + x + ")").fadeTo(0, 0);
				g.eq(x).css("zIndex", 99)
			}
			if (b.captions && b.captionsSelector == null) {
				h.append('<div class="bx-captions"></div>')
			}
		}
		var c = {
			mode : "horizontal",
			infiniteLoop : true,
			hideControlOnEnd : false,
			controls : true,
			speed : 1000,
			easing : "swing",
			pager : false,
			pagerSelector : null,
			pagerType : "full",
			pagerLocation : "bottom",
			pagerShortSeparator : "/",
			pagerActiveClass : "pager-active",
			nextText : "&gt;&gt;",
			nextImage : "",
			nextSelector : null,
			prevText : "&lt;&lt;",
			prevImage : "",
			prevSelector : null,
			captions : false,
			captionsSelector : null,
			auto : true,
			autoDirection : "next",
			autoControls : false,
			autoControlsSelector : null,
			autoStart : true,
			autoHover : false,
			autoDelay : 0,
			pause : 3e3,
			startText : "start",
			startImage : "1",
			stopText : "stop",
			stopImage : "",
			ticker : false,
			tickerSpeed : 5e3,
			tickerDirection : "next",
			tickerHover : false,
			wrapperClass : "bx-wrapper",
			startingSlide : 0,
			displaySlideQty : 3,
			moveSlideQty : 3,
			randomStart : false,
			onBeforeSlide : function() {
			},
			onAfterSlide : function() {
			},
			onLastSlide : function() {
			},
			onFirstSlide : function() {

			},
			onNextSlide : function() {

			},
			onPrevSlide : function() {
			},
			buildPager : null
		};
		var b = a.extend(c, b);
		var d = this;
		var e = "";
		var f = "";
		var g = "";
		var h = "";
		var i = "";
		var j = "";
		var k = "";
		var l = "";
		var m = "";
		var n = "";
		var o = "";
		var p = "";
		var q = "";
		var r = "";
		var s = "";
		var t = true;
		var u = false;
		var v = 0;
		var w = 0;
		var x = 0;
		var y = 0;
		var z = 0;
		var A = 0;
		var B = 0;
		var C = 0;
		var D = 0;
		var E = false;
		var F = 0;
		var G = g.length - 1;
		this.goToSlide = function(a, c) {
			if (!E) {
				E = true;
				x = a;
				b.onBeforeSlide(x, g.length, g.eq(x));
				if (typeof c == "undefined") {
					var c = true
				}
				if (c) {
					if (b.auto) {
						d.stopShow(true)
					}
				}
				slide = a;
				if (slide == F) {
					b.onFirstSlide(x, g.length, g.eq(x))
				}
				if (slide == G) {
					b.onLastSlide(x, g.length, g.eq(x))
				}
				if (b.mode == "horizontal") {
					e.animate({
						left : "-" + W(slide, "left") + "px"
					}, b.speed, b.easing, function() {
						E = false;
						b.onAfterSlide(x, g.length, g.eq(x))
					})
				} else if (b.mode == "vertical") {
					e.animate({
						top : "-" + W(slide, "top") + "px"
					}, b.speed, b.easing, function() {
						E = false;
						b.onAfterSlide(x, g.length, g.eq(x))
					})
				} else if (b.mode == "fade") {
					P()
				}
				V();
				if (b.moveSlideQty > 1) {
					a = Math.floor(a / b.moveSlideQty)
				}
				Q(a);
				T()
			}
		};
		this.goToNextSlide = function(a) {
			if (typeof a == "undefined") {
				var a = true
			}
			if (a) {
				if (b.auto) {
					d.stopShow(true)
				}
			}
			if (!b.infiniteLoop) {
				if (!E) {
					var c = false;
					x = x + b.moveSlideQty;
					if (x <= G) {
						V();
						b.onNextSlide(x, g.length, g.eq(x));
						d.goToSlide(x)
					} else {
						x -= b.moveSlideQty
					}
				}
			} else {
				if (!E) {
					E = true;
					var c = false;
					x = x + b.moveSlideQty;
					if (x > G) {
						x = x % g.length;
						c = true
					}
					b.onNextSlide(x, g.length, g.eq(x));
					b.onBeforeSlide(x, g.length, g.eq(x));
					if (b.mode == "horizontal") {
						var f = b.moveSlideQty * k;
						e.animate({
							left : "-=" + f + "px"
						}, b.speed, b.easing, function() {
							E = false;
							if (c) {
								e.css("left", "-" + W(x, "left") + "px")
							}
							b.onAfterSlide(x, g.length, g.eq(x))
						})
					} else if (b.mode == "vertical") {
						var h = b.moveSlideQty * w;
						e.animate({
							top : "-=" + h + "px"
						}, b.speed, b.easing, function() {
							E = false;
							if (c) {
								e.css("top", "-" + W(x, "top") + "px")
							}
							b.onAfterSlide(x, g.length, g.eq(x))
						})
					} else if (b.mode == "fade") {
						P()
					}
					if (b.moveSlideQty > 1) {
						Q(Math.ceil(x / b.moveSlideQty))
					} else {
						Q(x)
					}
					T()
				}
			}
		};
		this.goToPreviousSlide = function(c) {
			if (typeof c == "undefined") {
				var c = true
			}
			if (c) {
				if (b.auto) {
					d.stopShow(true)
				}
			}
			if (!b.infiniteLoop) {
				if (!E) {
					var f = false;
					x = x - b.moveSlideQty;
					if (x < 0) {
						x = 0;
						if (b.hideControlOnEnd) {
							a(".bx-prev", h).hide()
						}
					}
					V();
					b.onPrevSlide(x, g.length, g.eq(x));
					d.goToSlide(x)
				}
			} else {
				if (!E) {
					E = true;
					var f = false;
					x = x - b.moveSlideQty;
					if (x < 0) {
						negativeOffset = x % g.length;
						if (negativeOffset == 0) {
							x = 0
						} else {
							x = g.length + negativeOffset
						}
						f = true
					}
					b.onPrevSlide(x, g.length, g.eq(x));
					b.onBeforeSlide(x, g.length, g.eq(x));
					if (b.mode == "horizontal") {
						var i = b.moveSlideQty * k;
						e.animate({
							left : "+=" + i + "px"
						}, b.speed, b.easing, function() {
							E = false;
							if (f) {
								e.css("left", "-" + W(x, "left") + "px")
							}
							b.onAfterSlide(x, g.length, g.eq(x))
						})
					} else if (b.mode == "vertical") {
						var j = b.moveSlideQty * w;
						e.animate({
							top : "+=" + j + "px"
						}, b.speed, b.easing, function() {
							E = false;
							if (f) {
								e.css("top", "-" + W(x, "top") + "px")
							}
							b.onAfterSlide(x, g.length, g.eq(x))
						})
					} else if (b.mode == "fade") {
						P()
					}
					if (b.moveSlideQty > 1) {
						Q(Math.ceil(x / b.moveSlideQty))
					} else {
						Q(x)
					}
					T()
				}
			}
		};
		this.goToFirstSlide = function(a) {
			if (typeof a == "undefined") {
				var a = true
			}
			d.goToSlide(F, a)
		};
		this.goToLastSlide = function() {
			if (typeof a == "undefined") {
				var a = true
			}
			d.goToSlide(G, a)
		};
		this.getCurrentSlide = function() {
			return x
		};
		this.getSlideCount = function() {
			return g.length
		};
		this.stopShow = function(a) {
			clearInterval(o);
			if (typeof a == "undefined") {
				var a = true
			}
			if (a && b.autoControls) {
				p.html(r).removeClass("stop").addClass("start");
				t = false
			}
		};
		this.startShow = function(a) {
			if (typeof a == "undefined") {
				var a = true
			}
			K();
			if (a && b.autoControls) {
				p.html(s).removeClass("start").addClass("stop");
				t = true
			}
		};
		this.stopTicker = function(a) {
			e.stop();
			if (typeof a == "undefined") {
				var a = true
			}
			if (a && b.ticker) {
				p.html(r).removeClass("stop").addClass("start");
				t = false
			}
		};
		this.startTicker = function(a) {
			if (b.mode == "horizontal") {
				if (b.tickerDirection == "next") {
					var c = parseInt(e.css("left"));
					var d = A + c + g.eq(0).width()
				} else if (b.tickerDirection == "prev") {
					var c = -parseInt(e.css("left"));
					var d = c - g.eq(0).width()
				}
				var f = d * b.tickerSpeed / A;
				L(C, d, f)
			} else if (b.mode == "vertical") {
				if (b.tickerDirection == "next") {
					var h = parseInt(e.css("top"));
					var d = B + h + g.eq(0).height()
				} else if (b.tickerDirection == "prev") {
					var h = -parseInt(e.css("top"));
					var d = h - g.eq(0).height()
				}
				var f = d * b.tickerSpeed / B;
				L(D, d, f);
				if (typeof a == "undefined") {
					var a = true
				}
				if (a && b.ticker) {
					p.html(s).removeClass("start").addClass("stop");
					t = true
				}
			}
		};
		this.initShow = function() {
			e = a(this);
			f = e.clone();
			g = e.children();
			h = "";
			i = e.children(":first");
			j = i.width();
			v = 0;
			k = i.outerWidth();
			w = 0;
			l = X();
			m = Y();
			E = false;
			n = "";
			x = 0;
			y = 0;
			z = 0;
			o = "";
			p = "";
			q = "";
			r = "";
			s = "";
			t = true;
			u = false;
			A = 0;
			B = 0;
			C = 0;
			D = 0;
			F = 0;
			G = g.length - 1;
			g.each(function(b) {
				if (a(this).outerHeight() > w) {
					w = a(this).outerHeight()
				}
				if (a(this).outerWidth() > v) {
					v = a(this).outerWidth()
				}
			});
			if (b.randomStart) {
				var c = Math.floor(Math.random() * g.length);
				x = c;
				y = k * (b.moveSlideQty + c);
				z = w * (b.moveSlideQty + c)
			} else {
				x = b.startingSlide;
				y = k * (b.moveSlideQty + b.startingSlide);
				z = w * (b.moveSlideQty + b.startingSlide)
			}
			H();
			if (b.pager && !b.ticker) {
				if (b.pagerType == "full") {
					S("full")
				} else if (b.pagerType == "short") {
					S("short")
				}
			}
			if (b.controls && !b.ticker) {
				J()
			}
			if (b.auto || b.ticker) {
				if (b.autoControls) {
					M()
				}
				if (b.autoStart) {
					setTimeout(function() {
						d.startShow(true)
					}, b.autoDelay)
				} else {
					d.stopShow(true)
				}
				if (b.autoHover && !b.ticker) {
					N()
				}
			}
			if (b.moveSlideQty > 1) {
				Q(Math.ceil(x / b.moveSlideQty))
			} else {
				Q(x)
			}
			V();
			if (b.captions) {
				T()
			}
			b.onAfterSlide(x, g.length, g.eq(x))
		};
		this.destroyShow = function() {
			clearInterval(o);
			a(".bx-next, .bx-prev, .bx-pager, .bx-auto", h).remove();
			e.unwrap().unwrap().removeAttr("style");
			e.children().removeAttr("style").not(".pager").remove();
			g.removeClass("pager")
		};
		this.reloadShow = function() {
			d.destroyShow();
			d.initShow()
		};
		this.each(function() {
			if (a(this).children().length > 0) {
				d.initShow()
			}
		});
		return this
	};
	jQuery.fx.prototype.cur = function() {
		if (this.elem[this.prop] != null
				&& (!this.elem.style || this.elem.style[this.prop] == null)) {
			return this.elem[this.prop]
		}
		var a = parseFloat(jQuery.css(this.elem, this.prop));
		return a
	}
})(jQuery)
