(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: 500,
			easing: "swing",
			pager: false,
			pagerSelector: null,
			pagerType: "full",
			pagerLocation: "bottom",
			pagerShortSeparator: "/",
			pagerActiveClass: "pager-active",
			nextText: "next",
			nextImage: "",
			nextSelector: null,
			prevText: "prev",
			prevImage: "",
			prevSelector: null,
			captions: false,
			captionsSelector: null,
			auto: false,
			autoDirection: "next",
			autoControls: false,
			autoControlsSelector: null,
			autoStart: true,
			autoHover: false,
			autoDelay: 0,
			pause: 3e3,
			startText: "start",
			startImage: "",
			stopText: "stop",
			stopImage: "",
			ticker: false,
			tickerSpeed: 5e3,
			tickerDirection: "next",
			tickerHover: false,
			wrapperClass: "bx-wrapper",
			startingSlide: 0,
			displaySlideQty: 1,
			moveSlideQty: 1,
			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)
