! function(e) {
	"use strict";
	var t = function(t, i) {
		this.$element = e(t), this.$indicators = this.$element.find(".carousel-indicators"), this.options = i, "hover" == this.options.pause && this.$element.on("mouseenter", e.proxy(this.pause, this)).on("mouseleave", e.proxy(this.cycle, this))
	};
	t.prototype = {
		cycle: function(t) {
			return t || (this.paused = !1), this.interval && clearInterval(this.interval), this.options.interval && !this.paused && (this.interval = setInterval(e.proxy(this.next, this), this.options.interval)), this
		},
		getActiveIndex: function() {
			return this.$active = this.$element.find(".item.active"), this.$items = this.$active.parent().children(), this.$items.index(this.$active)
		},
		to: function(t) {
			var i = this.getActiveIndex(),
				n = this;
			if(!(t > this.$items.length - 1 || 0 > t)) return this.sliding ? this.$element.one("slid", function() {
				n.to(t)
			}) : i == t ? this.pause().cycle() : this.slide(t > i ? "next" : "prev", e(this.$items[t]))
		},
		pause: function(t) {
			return t || (this.paused = !0), this.$element.find(".next, .prev").length && e.support.transition.end && (this.$element.trigger(e.support.transition.end), this.cycle(!0)), clearInterval(this.interval), this.interval = null, this
		},
		next: function() {
			return this.sliding ? void 0 : this.slide("next")
		},
		prev: function() {
			return this.sliding ? void 0 : this.slide("prev")
		},
		slide: function(t, i) {
			var n, r = this.$element.find(".item.active"),
				o = i || r[t](),
				s = this.interval,
				a = "next" == t ? "left" : "right",
				l = "next" == t ? "first" : "last",
				c = this;
			if(this.sliding = !0, s && this.pause(), o = o.length ? o : this.$element.find(".item")[l](), n = e.Event("slide", {
					relatedTarget: o[0],
					direction: a
				}), !o.hasClass("active")) {
				if(this.$indicators.length && (this.$indicators.find(".active").removeClass("active"), this.$element.one("slid", function() {
						var t = e(c.$indicators.children()[c.getActiveIndex()]);
						t && t.addClass("active")
					})), e.support.transition && this.$element.hasClass("slide")) {
					if(this.$element.trigger(n), n.isDefaultPrevented()) return;
					o.addClass(t), o[0].offsetWidth, r.addClass(a), o.addClass(a), this.$element.one(e.support.transition.end, function() {
						o.removeClass([t, a].join(" ")).addClass("active"), r.removeClass(["active", a].join(" ")), c.sliding = !1, setTimeout(function() {
							c.$element.trigger("slid")
						}, 0)
					})
				} else {
					if(this.$element.trigger(n), n.isDefaultPrevented()) return;
					r.removeClass("active"), o.addClass("active"), this.sliding = !1, this.$element.trigger("slid")
				}
				return s && this.cycle(), this
			}
		}
	};
	var i = e.fn.carousel;
	e.fn.carousel = function(i) {
		return this.each(function() {
			var n = e(this),
				r = n.data("carousel"),
				o = e.extend({}, e.fn.carousel.defaults, "object" == typeof i && i),
				s = "string" == typeof i ? i : o.slide;
			r || n.data("carousel", r = new t(this, o)), "number" == typeof i ? r.to(i) : s ? r[s]() : o.interval && r.pause().cycle()
		})
	}, e.fn.carousel.defaults = {
		interval: 2000,
		pause: "hover"
	}, e.fn.carousel.Constructor = t, e.fn.carousel.noConflict = function() {
		return e.fn.carousel = i, this
	}, e(document).on("click.carousel.data-api", "[data-slide], [data-slide-to]", function(t) {
		var i, n, r = e(this),
			o = e(r.attr("data-target") || (i = r.attr("href")) && i.replace(/.*(?=#[^\s]+$)/, "")),
			s = e.extend({}, o.data(), r.data());
		o.carousel(s), (n = r.attr("data-slide-to")) && o.data("carousel").pause().to(n).cycle(), t.preventDefault()
	})
}(window.jQuery);