/* Plugin for Cycle2; Copyright (c) 2012 M. Alsup; v20141007 */ ! function(a) {
    "use strict";
    a(document).on("cycle-bootstrap", function(a, b, c) {
        "carousel" === b.fx && (c.getSlideIndex = function(a) {
            var b = this.opts()._carouselWrap.children(),
                c = b.index(a);
            return c % b.length
        }, c.next = function() {
            var a = b.reverse ? -1 : 1;
            b.allowWrap === !1 && b.currSlide + a > b.slideCount - b.carouselVisible || (b.API.advanceSlide(a), b.API.trigger("cycle-next", [b]).log("cycle-next"))
        })
    }), a.fn.cycle.transitions.carousel = {
        preInit: function(b) {
            b.hideNonActive = !1, b.container.on("cycle-destroyed", a.proxy(this.onDestroy, b.API)), b.API.stopTransition = this.stopTransition;
            for (var c = 0; c < b.startingSlide; c++) b.container.append(b.slides[0])
        },
        postInit: function(b) {
            var c, d, e, f, g = b.carouselVertical;
            b.carouselVisible && b.carouselVisible > b.slideCount && (b.carouselVisible = b.slideCount - 1);
            var h = b.carouselVisible || b.slides.length,
                i = {
                    display: g ? "block" : "inline-block",
                    position: "static"
                };
            if (b.container.css({
                    position: "relative",
                    overflow: "hidden"
                }), b.slides.css(i), b._currSlide = b.currSlide, f = a('<div class="cycle-carousel-wrap"></div>').prependTo(b.container).css({
                    margin: 0,
                    padding: 0,
                    top: 0,
                    left: 0,
                    position: "absolute"
                }).append(b.slides), b._carouselWrap = f, g || f.css("white-space", "nowrap"), b.allowWrap !== !1) {
                for (d = 0; d < (void 0 === b.carouselVisible ? 2 : 1); d++) {
                    for (c = 0; c < b.slideCount; c++) f.append(b.slides[c].cloneNode(!0));
                    for (c = b.slideCount; c--;) f.prepend(b.slides[c].cloneNode(!0))
                }
                f.find(".cycle-slide-active").removeClass("cycle-slide-active"), b.slides.eq(b.startingSlide).addClass("cycle-slide-active")
            }
            b.pager && b.allowWrap === !1 && (e = b.slideCount - h, a(b.pager).children().filter(":gt(" + e + ")").hide()), b._nextBoundry = b.slideCount - b.carouselVisible, this.prepareDimensions(b)
        },
        prepareDimensions: function(b) {
            var c, d, e, f, g = b.carouselVertical,
                h = b.carouselVisible || b.slides.length;
            if (b.carouselFluid && b.carouselVisible ? b._carouselResizeThrottle || this.fluidSlides(b) : b.carouselVisible && b.carouselSlideDimension ? (c = h * b.carouselSlideDimension, b.container[g ? "height" : "width"](c)) : b.carouselVisible && (c = h * a(b.slides[0])[g ? "outerHeight" : "outerWidth"](!0), b.container[g ? "height" : "width"](c)), d = b.carouselOffset || 0, b.allowWrap !== !1)
                if (b.carouselSlideDimension) d -= (b.slideCount + b.currSlide) * b.carouselSlideDimension;
                else
                    for (e = b._carouselWrap.children(), f = 0; f < b.slideCount + b.currSlide; f++) d -= a(e[f])[g ? "outerHeight" : "outerWidth"](!0);
            b._carouselWrap.css(g ? "top" : "left", d)
        },
        fluidSlides: function(b) {
            function c() {
                clearTimeout(e), e = setTimeout(d, 20)
            }

            function d() {
                b._carouselWrap.stop(!1, !0);
                var a = b.container.width() / b.carouselVisible;
                a = Math.ceil(a - g), b._carouselWrap.children().width(a), b._sentinel && b._sentinel.width(a), h(b)
            }
            var e, f = b.slides.eq(0),
                g = f.outerWidth() - f.width(),
                h = this.prepareDimensions;
            a(window).on("resize", c), b._carouselResizeThrottle = c, d()
        },
        transition: function(b, c, d, e, f) {
            var g, h = {},
                i = b.nextSlide - b.currSlide,
                j = b.carouselVertical,
                k = b.speed;
            if (b.allowWrap === !1) {
                e = i > 0;
                var l = b._currSlide,
                    m = b.slideCount - b.carouselVisible;
                i > 0 && b.nextSlide > m && l == m ? i = 0 : i > 0 && b.nextSlide > m ? i = b.nextSlide - l - (b.nextSlide - m) : 0 > i && b.currSlide > m && b.nextSlide > m ? i = 0 : 0 > i && b.currSlide > m ? i += b.currSlide - m : l = b.currSlide, g = this.getScroll(b, j, l, i), b.API.opts()._currSlide = b.nextSlide > m ? m : b.nextSlide
            } else e && 0 === b.nextSlide ? (g = this.getDim(b, b.currSlide, j), f = this.genCallback(b, e, j, f)) : e || b.nextSlide != b.slideCount - 1 ? g = this.getScroll(b, j, b.currSlide, i) : (g = this.getDim(b, b.currSlide, j), f = this.genCallback(b, e, j, f));
            h[j ? "top" : "left"] = e ? "-=" + g : "+=" + g, b.throttleSpeed && (k = g / a(b.slides[0])[j ? "height" : "width"]() * b.speed), b._carouselWrap.animate(h, k, b.easing, f)
        },
        getDim: function(b, c, d) {
            var e = a(b.slides[c]);
            return e[d ? "outerHeight" : "outerWidth"](!0)
        },
        getScroll: function(a, b, c, d) {
            var e, f = 0;
            if (d > 0)
                for (e = c; c + d > e; e++) f += this.getDim(a, e, b);
            else
                for (e = c; e > c + d; e--) f += this.getDim(a, e, b);
            return f
        },
        genCallback: function(b, c, d, e) {
            return function() {
                var c = a(b.slides[b.nextSlide]).position(),
                    f = 0 - c[d ? "top" : "left"] + (b.carouselOffset || 0);
                b._carouselWrap.css(b.carouselVertical ? "top" : "left", f), e()
            }
        },
        stopTransition: function() {
            var a = this.opts();
            a.slides.stop(!1, !0), a._carouselWrap.stop(!1, !0)
        },
        onDestroy: function() {
            var b = this.opts();
            b._carouselResizeThrottle && a(window).off("resize", b._carouselResizeThrottle), b.slides.prependTo(b.container), b._carouselWrap.remove()
        }
    }
}(jQuery);