/* * Swiper 2.7.6 * Mobile touch slider and framework with hardware accelerated transitions * * http://www.idangero.us/sliders/swiper/ * * Copyright 2010-2015, Vladimir Kharlampidi * The iDangero.us * http://www.idangero.us/ * * Licensed under GPL & MIT * * Released on: February 11, 2015 */ var Swiper = function (a, b) { "use strict"; function c(a, b) { return document.querySelectorAll ? (b || document).querySelectorAll(a) : jQuery(a, b) } function d(a) { return "[object Array]" === Object.prototype.toString.apply(a) ? !0 : !1 } function e() { var a = G - J; return b.freeMode && (a = G - J), b.slidesPerView > D.slides.length && !b.centeredSlides && (a = 0), 0 > a && (a = 0), a } function f() { function a(a) { var c, d, e = function () { "undefined" != typeof D && null !== D && (void 0 !== D.imagesLoaded && D.imagesLoaded++ , D.imagesLoaded === D.imagesToLoad.length && (D.reInit(), b.onImagesReady && D.fireCallback(b.onImagesReady, D))) }; a.complete ? e() : (d = a.currentSrc || a.getAttribute("src"), d ? (c = new Image, c.onload = e, c.onerror = e, c.src = d) : e()) } var d = D.h.addEventListener, e = "wrapper" === b.eventTarget ? D.wrapper : D.container; if (D.browser.ie10 || D.browser.ie11 ? (d(e, D.touchEvents.touchStart, p), d(document, D.touchEvents.touchMove, q), d(document, D.touchEvents.touchEnd, r)) : (D.support.touch && (d(e, "touchstart", p), d(e, "touchmove", q), d(e, "touchend", r)), b.simulateTouch && (d(e, "mousedown", p), d(document, "mousemove", q), d(document, "mouseup", r))), b.autoResize && d(window, "resize", D.resizeFix), g(), D._wheelEvent = !1, b.mousewheelControl) { if (void 0 !== document.onmousewheel && (D._wheelEvent = "mousewheel"), !D._wheelEvent) try { new WheelEvent("wheel"), D._wheelEvent = "wheel" } catch (f) { } D._wheelEvent || (D._wheelEvent = "DOMMouseScroll"), D._wheelEvent && d(D.container, D._wheelEvent, j) } if (b.keyboardControl && d(document, "keydown", i), b.updateOnImagesReady) { D.imagesToLoad = c("img", D.container); for (var h = 0; h < D.imagesToLoad.length; h++)a(D.imagesToLoad[h]) } } function g() { var a, d = D.h.addEventListener; if (b.preventLinks) { var e = c("a", D.container); for (a = 0; a < e.length; a++)d(e[a], "click", n) } if (b.releaseFormElements) { var f = c("input, textarea, select", D.container); for (a = 0; a < f.length; a++)d(f[a], D.touchEvents.touchStart, o, !0), D.support.touch && b.simulateTouch && d(f[a], "mousedown", o, !0) } if (b.onSlideClick) for (a = 0; a < D.slides.length; a++)d(D.slides[a], "click", k); if (b.onSlideTouch) for (a = 0; a < D.slides.length; a++)d(D.slides[a], D.touchEvents.touchStart, l) } function h() { var a, d = D.h.removeEventListener; if (b.onSlideClick) for (a = 0; a < D.slides.length; a++)d(D.slides[a], "click", k); if (b.onSlideTouch) for (a = 0; a < D.slides.length; a++)d(D.slides[a], D.touchEvents.touchStart, l); if (b.releaseFormElements) { var e = c("input, textarea, select", D.container); for (a = 0; a < e.length; a++)d(e[a], D.touchEvents.touchStart, o, !0), D.support.touch && b.simulateTouch && d(e[a], "mousedown", o, !0) } if (b.preventLinks) { var f = c("a", D.container); for (a = 0; a < f.length; a++)d(f[a], "click", n) } } function i(a) { var b = a.keyCode || a.charCode; if (!(a.shiftKey || a.altKey || a.ctrlKey || a.metaKey)) { if (37 === b || 39 === b || 38 === b || 40 === b) { for (var c = !1, d = D.h.getOffset(D.container), e = D.h.windowScroll().left, f = D.h.windowScroll().top, g = D.h.windowWidth(), h = D.h.windowHeight(), i = [[d.left, d.top], [d.left + D.width, d.top], [d.left, d.top + D.height], [d.left + D.width, d.top + D.height]], j = 0; j < i.length; j++) { var k = i[j]; k[0] >= e && k[0] <= e + g && k[1] >= f && k[1] <= f + h && (c = !0) } if (!c) return } N ? ((37 === b || 39 === b) && (a.preventDefault ? a.preventDefault() : a.returnValue = !1), 39 === b && D.swipeNext(), 37 === b && D.swipePrev()) : ((38 === b || 40 === b) && (a.preventDefault ? a.preventDefault() : a.returnValue = !1), 40 === b && D.swipeNext(), 38 === b && D.swipePrev()) } } function j(a) { var c = D._wheelEvent, d = 0; if (a.detail) d = -a.detail; else if ("mousewheel" === c) if (b.mousewheelControlForceToAxis) if (N) { if (!(Math.abs(a.wheelDeltaX) > Math.abs(a.wheelDeltaY))) return; d = a.wheelDeltaX } else { if (!(Math.abs(a.wheelDeltaY) > Math.abs(a.wheelDeltaX))) return; d = a.wheelDeltaY } else d = a.wheelDelta; else if ("DOMMouseScroll" === c) d = -a.detail; else if ("wheel" === c) if (b.mousewheelControlForceToAxis) if (N) { if (!(Math.abs(a.deltaX) > Math.abs(a.deltaY))) return; d = -a.deltaX } else { if (!(Math.abs(a.deltaY) > Math.abs(a.deltaX))) return; d = -a.deltaY } else d = Math.abs(a.deltaX) > Math.abs(a.deltaY) ? -a.deltaX : -a.deltaY; if (b.freeMode) { var f = D.getWrapperTranslate() + d; if (f > 0 && (f = 0), f < -e() && (f = -e()), D.setWrapperTransition(0), D.setWrapperTranslate(f), D.updateActiveSlide(f), 0 === f || f === -e()) return } else (new Date).getTime() - V > 60 && (0 > d ? D.swipeNext() : D.swipePrev()), V = (new Date).getTime(); return b.autoplay && D.stopAutoplay(!0), a.preventDefault ? a.preventDefault() : a.returnValue = !1, !1 } function k(a) { D.allowSlideClick && (m(a), D.fireCallback(b.onSlideClick, D, a)) } function l(a) { m(a), D.fireCallback(b.onSlideTouch, D, a) } function m(a) { if (a.currentTarget) D.clickedSlide = a.currentTarget; else { var c = a.srcElement; do { if (c.className.indexOf(b.slideClass) > -1) break; c = c.parentNode } while (c); D.clickedSlide = c } D.clickedSlideIndex = D.slides.indexOf(D.clickedSlide), D.clickedSlideLoopIndex = D.clickedSlideIndex - (D.loopedSlides || 0) } function n(a) { return D.allowLinks ? void 0 : (a.preventDefault ? a.preventDefault() : a.returnValue = !1, b.preventLinksPropagation && "stopPropagation" in a && a.stopPropagation(), !1) } function o(a) { return a.stopPropagation ? a.stopPropagation() : a.returnValue = !1, !1 } function p(a) { if (b.preventLinks && (D.allowLinks = !0), D.isTouched || b.onlyExternal) return !1; var c = a.target || a.srcElement; document.activeElement && document.activeElement !== document.body && document.activeElement !== c && document.activeElement.blur(); var d = "input select textarea".split(" "); if (b.noSwiping && c && t(c)) return !1; if (_ = !1, D.isTouched = !0, $ = "touchstart" === a.type, !$ && "which" in a && 3 === a.which) return D.isTouched = !1, !1; if (!$ || 1 === a.targetTouches.length) { D.callPlugins("onTouchStartBegin"), !$ && !D.isAndroid && d.indexOf(c.tagName.toLowerCase()) < 0 && (a.preventDefault ? a.preventDefault() : a.returnValue = !1); var e = $ ? a.targetTouches[0].pageX : a.pageX || a.clientX, f = $ ? a.targetTouches[0].pageY : a.pageY || a.clientY; D.touches.startX = D.touches.currentX = e, D.touches.startY = D.touches.currentY = f, D.touches.start = D.touches.current = N ? e : f, D.setWrapperTransition(0), D.positions.start = D.positions.current = D.getWrapperTranslate(), D.setWrapperTranslate(D.positions.start), D.times.start = (new Date).getTime(), I = void 0, b.moveStartThreshold > 0 && (X = !1), b.onTouchStart && D.fireCallback(b.onTouchStart, D, a), D.callPlugins("onTouchStartEnd") } } function q(a) { if (D.isTouched && !b.onlyExternal && (!$ || "mousemove" !== a.type)) { var c = $ ? a.targetTouches[0].pageX : a.pageX || a.clientX, d = $ ? a.targetTouches[0].pageY : a.pageY || a.clientY; if ("undefined" == typeof I && N && (I = !!(I || Math.abs(d - D.touches.startY) > Math.abs(c - D.touches.startX))), "undefined" != typeof I || N || (I = !!(I || Math.abs(d - D.touches.startY) < Math.abs(c - D.touches.startX))), I) return void (D.isTouched = !1); if (N) { if (!b.swipeToNext && c < D.touches.startX || !b.swipeToPrev && c > D.touches.startX) return } else if (!b.swipeToNext && d < D.touches.startY || !b.swipeToPrev && d > D.touches.startY) return; if (a.assignedToSwiper) return void (D.isTouched = !1); if (a.assignedToSwiper = !0, b.preventLinks && (D.allowLinks = !1), b.onSlideClick && (D.allowSlideClick = !1), b.autoplay && D.stopAutoplay(!0), !$ || 1 === a.touches.length) { if (D.isMoved || (D.callPlugins("onTouchMoveStart"), b.loop && (D.fixLoop(), D.positions.start = D.getWrapperTranslate()), b.onTouchMoveStart && D.fireCallback(b.onTouchMoveStart, D)), D.isMoved = !0, a.preventDefault ? a.preventDefault() : a.returnValue = !1, D.touches.current = N ? c : d, D.positions.current = (D.touches.current - D.touches.start) * b.touchRatio + D.positions.start, D.positions.current > 0 && b.onResistanceBefore && D.fireCallback(b.onResistanceBefore, D, D.positions.current), D.positions.current < -e() && b.onResistanceAfter && D.fireCallback(b.onResistanceAfter, D, Math.abs(D.positions.current + e())), b.resistance && "100%" !== b.resistance) { var f; if (D.positions.current > 0 && (f = 1 - D.positions.current / J / 2, D.positions.current = .5 > f ? J / 2 : D.positions.current * f), D.positions.current < -e()) { var g = (D.touches.current - D.touches.start) * b.touchRatio + (e() + D.positions.start); f = (J + g) / J; var h = D.positions.current - g * (1 - f) / 2, i = -e() - J / 2; D.positions.current = i > h || 0 >= f ? i : h } } if (b.resistance && "100%" === b.resistance && (D.positions.current > 0 && (!b.freeMode || b.freeModeFluid) && (D.positions.current = 0), D.positions.current < -e() && (!b.freeMode || b.freeModeFluid) && (D.positions.current = -e())), !b.followFinger) return; if (b.moveStartThreshold) if (Math.abs(D.touches.current - D.touches.start) > b.moveStartThreshold || X) { if (!X) return X = !0, void (D.touches.start = D.touches.current); D.setWrapperTranslate(D.positions.current) } else D.positions.current = D.positions.start; else D.setWrapperTranslate(D.positions.current); return (b.freeMode || b.watchActiveIndex) && D.updateActiveSlide(D.positions.current), b.grabCursor && (D.container.style.cursor = "move", D.container.style.cursor = "grabbing", D.container.style.cursor = "-moz-grabbin", D.container.style.cursor = "-webkit-grabbing"), Y || (Y = D.touches.current), Z || (Z = (new Date).getTime()), D.velocity = (D.touches.current - Y) / ((new Date).getTime() - Z) / 2, Math.abs(D.touches.current - Y) < 2 && (D.velocity = 0), Y = D.touches.current, Z = (new Date).getTime(), D.callPlugins("onTouchMoveEnd"), b.onTouchMove && D.fireCallback(b.onTouchMove, D, a), !1 } } } function r(a) { if (I && D.swipeReset(), !b.onlyExternal && D.isTouched) { D.isTouched = !1, b.grabCursor && (D.container.style.cursor = "move", D.container.style.cursor = "grab", D.container.style.cursor = "-moz-grab", D.container.style.cursor = "-webkit-grab"), D.positions.current || 0 === D.positions.current || (D.positions.current = D.positions.start), b.followFinger && D.setWrapperTranslate(D.positions.current), D.times.end = (new Date).getTime(), D.touches.diff = D.touches.current - D.touches.start, D.touches.abs = Math.abs(D.touches.diff), D.positions.diff = D.positions.current - D.positions.start, D.positions.abs = Math.abs(D.positions.diff); var c = D.positions.diff, d = D.positions.abs, f = D.times.end - D.times.start; 5 > d && 300 > f && D.allowLinks === !1 && (b.freeMode || 0 === d || D.swipeReset(), b.preventLinks && (D.allowLinks = !0), b.onSlideClick && (D.allowSlideClick = !0)), setTimeout(function () { "undefined" != typeof D && null !== D && (b.preventLinks && (D.allowLinks = !0), b.onSlideClick && (D.allowSlideClick = !0)) }, 100); var g = e(); if (!D.isMoved && b.freeMode) return D.isMoved = !1, b.onTouchEnd && D.fireCallback(b.onTouchEnd, D, a), void D.callPlugins("onTouchEnd"); if (!D.isMoved || D.positions.current > 0 || D.positions.current < -g) return D.swipeReset(), b.onTouchEnd && D.fireCallback(b.onTouchEnd, D, a), void D.callPlugins("onTouchEnd"); if (D.isMoved = !1, b.freeMode) { if (b.freeModeFluid) { var h, i = 1e3 * b.momentumRatio, j = D.velocity * i, k = D.positions.current + j, l = !1, m = 20 * Math.abs(D.velocity) * b.momentumBounceRatio; -g > k && (b.momentumBounce && D.support.transitions ? (-m > k + g && (k = -g - m), h = -g, l = !0, _ = !0) : k = -g), k > 0 && (b.momentumBounce && D.support.transitions ? (k > m && (k = m), h = 0, l = !0, _ = !0) : k = 0), 0 !== D.velocity && (i = Math.abs((k - D.positions.current) / D.velocity)), D.setWrapperTranslate(k), D.setWrapperTransition(i), b.momentumBounce && l && D.wrapperTransitionEnd(function () { _ && (b.onMomentumBounce && D.fireCallback(b.onMomentumBounce, D), D.callPlugins("onMomentumBounce"), D.setWrapperTranslate(h), D.setWrapperTransition(300)) }), D.updateActiveSlide(k) } return (!b.freeModeFluid || f >= 300) && D.updateActiveSlide(D.positions.current), b.onTouchEnd && D.fireCallback(b.onTouchEnd, D, a), void D.callPlugins("onTouchEnd") } H = 0 > c ? "toNext" : "toPrev", "toNext" === H && 300 >= f && (30 > d || !b.shortSwipes ? D.swipeReset() : D.swipeNext(!0, !0)), "toPrev" === H && 300 >= f && (30 > d || !b.shortSwipes ? D.swipeReset() : D.swipePrev(!0, !0)); var n = 0; if ("auto" === b.slidesPerView) { for (var o, p = Math.abs(D.getWrapperTranslate()), q = 0, r = 0; r < D.slides.length; r++)if (o = N ? D.slides[r].getWidth(!0, b.roundLengths) : D.slides[r].getHeight(!0, b.roundLengths), q += o, q > p) { n = o; break } n > J && (n = J) } else n = F * b.slidesPerView; "toNext" === H && f > 300 && (d >= n * b.longSwipesRatio ? D.swipeNext(!0, !0) : D.swipeReset()), "toPrev" === H && f > 300 && (d >= n * b.longSwipesRatio ? D.swipePrev(!0, !0) : D.swipeReset()), b.onTouchEnd && D.fireCallback(b.onTouchEnd, D, a), D.callPlugins("onTouchEnd") } } function s(a, b) { return a && a.getAttribute("class") && a.getAttribute("class").indexOf(b) > -1 } function t(a) { var c = !1; do s(a, b.noSwipingClass) && (c = !0), a = a.parentElement; while (!c && a.parentElement && !s(a, b.wrapperClass)); return !c && s(a, b.wrapperClass) && s(a, b.noSwipingClass) && (c = !0), c } function u(a, b) { var c, d = document.createElement("div"); return d.innerHTML = b, c = d.firstChild, c.className += " " + a, c.outerHTML } function v(a, c, d) { function e() { var f = +new Date, l = f - g; h += i * l / (1e3 / 60), k = "toNext" === j ? h > a : a > h, k ? (D.setWrapperTranslate(Math.ceil(h)), D._DOMAnimating = !0, window.setTimeout(function () { e() }, 1e3 / 60)) : (b.onSlideChangeEnd && ("to" === c ? d.runCallbacks === !0 && D.fireCallback(b.onSlideChangeEnd, D, j) : D.fireCallback(b.onSlideChangeEnd, D, j)), D.setWrapperTranslate(a), D._DOMAnimating = !1) } var f = "to" === c && d.speed >= 0 ? d.speed : b.speed, g = +new Date; if (D.support.transitions || !b.DOMAnimation) D.setWrapperTranslate(a), D.setWrapperTransition(f); else { var h = D.getWrapperTranslate(), i = Math.ceil((a - h) / f * (1e3 / 60)), j = h > a ? "toNext" : "toPrev", k = "toNext" === j ? h > a : a > h; if (D._DOMAnimating) return; e() } D.updateActiveSlide(a), b.onSlideNext && "next" === c && d.runCallbacks === !0 && D.fireCallback(b.onSlideNext, D, a), b.onSlidePrev && "prev" === c && d.runCallbacks === !0 && D.fireCallback(b.onSlidePrev, D, a), b.onSlideReset && "reset" === c && d.runCallbacks === !0 && D.fireCallback(b.onSlideReset, D, a), "next" !== c && "prev" !== c && "to" !== c || d.runCallbacks !== !0 || w(c) } function w(a) { if (D.callPlugins("onSlideChangeStart"), b.onSlideChangeStart) if (b.queueStartCallbacks && D.support.transitions) { if (D._queueStartCallbacks) return; D._queueStartCallbacks = !0, D.fireCallback(b.onSlideChangeStart, D, a), D.wrapperTransitionEnd(function () { D._queueStartCallbacks = !1 }) } else D.fireCallback(b.onSlideChangeStart, D, a); if (b.onSlideChangeEnd) if (D.support.transitions) if (b.queueEndCallbacks) { if (D._queueEndCallbacks) return; D._queueEndCallbacks = !0, D.wrapperTransitionEnd(function (c) { D.fireCallback(b.onSlideChangeEnd, c, a) }) } else D.wrapperTransitionEnd(function (c) { D.fireCallback(b.onSlideChangeEnd, c, a) }); else b.DOMAnimation || setTimeout(function () { D.fireCallback(b.onSlideChangeEnd, D, a) }, 10) } function x() { var a = D.paginationButtons; if (a) for (var b = 0; b < a.length; b++)D.h.removeEventListener(a[b], "click", z) } function y() { var a = D.paginationButtons; if (a) for (var b = 0; b < a.length; b++)D.h.addEventListener(a[b], "click", z) } function z(a) { for (var c, d = a.target || a.srcElement, e = D.paginationButtons, f = 0; f < e.length; f++)d === e[f] && (c = f); b.autoplay && D.stopAutoplay(!0), D.swipeTo(c) } function A() { ab = setTimeout(function () { b.loop ? (D.fixLoop(), D.swipeNext(!0, !0)) : D.swipeNext(!0, !0) || (b.autoplayStopOnLast ? (clearTimeout(ab), ab = void 0) : D.swipeTo(0)), D.wrapperTransitionEnd(function () { "undefined" != typeof ab && A() }) }, b.autoplay) } function B() { D.calcSlides(), b.loader.slides.length > 0 && 0 === D.slides.length && D.loadSlides(), b.loop && D.createLoop(), D.init(), f(), b.pagination && D.createPagination(!0), b.loop || b.initialSlide > 0 ? D.swipeTo(b.initialSlide, 0, !1) : D.updateActiveSlide(0), b.autoplay && D.startAutoplay(), D.centerIndex = D.activeIndex, b.onSwiperCreated && D.fireCallback(b.onSwiperCreated, D), D.callPlugins("onSwiperCreated") } if (!document.body.outerHTML && document.body.__defineGetter__ && HTMLElement) { var C = HTMLElement.prototype; C.__defineGetter__ && C.__defineGetter__("outerHTML", function () { return (new XMLSerializer).serializeToString(this) }) } if (window.getComputedStyle || (window.getComputedStyle = function (a) { return this.el = a, this.getPropertyValue = function (b) { var c = /(\-([a-z]){1})/g; return "float" === b && (b = "styleFloat"), c.test(b) && (b = b.replace(c, function () { return arguments[2].toUpperCase() })), a.currentStyle[b] ? a.currentStyle[b] : null }, this }), Array.prototype.indexOf || (Array.prototype.indexOf = function (a, b) { for (var c = b || 0, d = this.length; d > c; c++)if (this[c] === a) return c; return -1 }), (document.querySelectorAll || window.jQuery) && "undefined" != typeof a && (a.nodeType || 0 !== c(a).length)) { var D = this; D.touches = { start: 0, startX: 0, startY: 0, current: 0, currentX: 0, currentY: 0, diff: 0, abs: 0 }, D.positions = { start: 0, abs: 0, diff: 0, current: 0 }, D.times = { start: 0, end: 0 }, D.id = (new Date).getTime(), D.container = a.nodeType ? a : c(a)[0], D.isTouched = !1, D.isMoved = !1, D.activeIndex = 0, D.centerIndex = 0, D.activeLoaderIndex = 0, D.activeLoopIndex = 0, D.previousIndex = null, D.velocity = 0, D.snapGrid = [], D.slidesGrid = [], D.imagesToLoad = [], D.imagesLoaded = 0, D.wrapperLeft = 0, D.wrapperRight = 0, D.wrapperTop = 0, D.wrapperBottom = 0, D.isAndroid = navigator.userAgent.toLowerCase().indexOf("android") >= 0; var E, F, G, H, I, J, K = { eventTarget: "wrapper", mode: "horizontal", touchRatio: 1, speed: 300, freeMode: !1, freeModeFluid: !1, momentumRatio: 1, momentumBounce: !0, momentumBounceRatio: 1, slidesPerView: 1, slidesPerGroup: 1, slidesPerViewFit: !0, simulateTouch: !0, followFinger: !0, shortSwipes: !0, longSwipesRatio: .5, moveStartThreshold: !1, onlyExternal: !1, createPagination: !0, pagination: !1, paginationElement: "span", paginationClickable: !1, paginationAsRange: !0, resistance: !0, scrollContainer: !1, preventLinks: !0, preventLinksPropagation: !1, noSwiping: !1, noSwipingClass: "swiper-no-swiping", initialSlide: 0, keyboardControl: !1, mousewheelControl: !1, mousewheelControlForceToAxis: !1, useCSS3Transforms: !0, autoplay: !1, autoplayDisableOnInteraction: !0, autoplayStopOnLast: !1, loop: !1, loopAdditionalSlides: 0, roundLengths: !1, calculateHeight: !1, cssWidthAndHeight: !1, updateOnImagesReady: !0, releaseFormElements: !0, watchActiveIndex: !1, visibilityFullFit: !1, offsetPxBefore: 0, offsetPxAfter: 0, offsetSlidesBefore: 0, offsetSlidesAfter: 0, centeredSlides: !1, queueStartCallbacks: !1, queueEndCallbacks: !1, autoResize: !0, resizeReInit: !1, DOMAnimation: !0, loader: { slides: [], slidesHTMLType: "inner", surroundGroups: 1, logic: "reload", loadAllSlides: !1 }, swipeToPrev: !0, swipeToNext: !0, slideElement: "div", slideClass: "swiper-slide", slideActiveClass: "swiper-slide-active", slideVisibleClass: "swiper-slide-visible", slideDuplicateClass: "swiper-slide-duplicate", wrapperClass: "swiper-wrapper", paginationElementClass: "swiper-pagination-switch", paginationActiveClass: "swiper-active-switch", paginationVisibleClass: "swiper-visible-switch" }; b = b || {}; for (var L in K) if (L in b && "object" == typeof b[L]) for (var M in K[L]) M in b[L] || (b[L][M] = K[L][M]); else L in b || (b[L] = K[L]); D.params = b, b.scrollContainer && (b.freeMode = !0, b.freeModeFluid = !0), b.loop && (b.resistance = "100%"); var N = "horizontal" === b.mode, O = ["mousedown", "mousemove", "mouseup"]; D.browser.ie10 && (O = ["MSPointerDown", "MSPointerMove", "MSPointerUp"]), D.browser.ie11 && (O = ["pointerdown", "pointermove", "pointerup"]), D.touchEvents = { touchStart: D.support.touch || !b.simulateTouch ? "touchstart" : O[0], touchMove: D.support.touch || !b.simulateTouch ? "touchmove" : O[1], touchEnd: D.support.touch || !b.simulateTouch ? "touchend" : O[2] }; for (var P = D.container.childNodes.length - 1; P >= 0; P--)if (D.container.childNodes[P].className) for (var Q = D.container.childNodes[P].className.split(/\s+/), R = 0; R < Q.length; R++)Q[R] === b.wrapperClass && (E = D.container.childNodes[P]); D.wrapper = E, D._extendSwiperSlide = function (a) { return a.append = function () { return b.loop ? a.insertAfter(D.slides.length - D.loopedSlides) : (D.wrapper.appendChild(a), D.reInit()), a }, a.prepend = function () { return b.loop ? (D.wrapper.insertBefore(a, D.slides[D.loopedSlides]), D.removeLoopedSlides(), D.calcSlides(), D.createLoop()) : D.wrapper.insertBefore(a, D.wrapper.firstChild), D.reInit(), a }, a.insertAfter = function (c) { if ("undefined" == typeof c) return !1; var d; return b.loop ? (d = D.slides[c + 1 + D.loopedSlides], d ? D.wrapper.insertBefore(a, d) : D.wrapper.appendChild(a), D.removeLoopedSlides(), D.calcSlides(), D.createLoop()) : (d = D.slides[c + 1], D.wrapper.insertBefore(a, d)), D.reInit(), a }, a.clone = function () { return D._extendSwiperSlide(a.cloneNode(!0)) }, a.remove = function () { D.wrapper.removeChild(a), D.reInit() }, a.html = function (b) { return "undefined" == typeof b ? a.innerHTML : (a.innerHTML = b, a) }, a.index = function () { for (var b, c = D.slides.length - 1; c >= 0; c--)a === D.slides[c] && (b = c); return b }, a.isActive = function () { return a.index() === D.activeIndex ? !0 : !1 }, a.swiperSlideDataStorage || (a.swiperSlideDataStorage = {}), a.getData = function (b) { return a.swiperSlideDataStorage[b] }, a.setData = function (b, c) { return a.swiperSlideDataStorage[b] = c, a }, a.data = function (b, c) { return "undefined" == typeof c ? a.getAttribute("data-" + b) : (a.setAttribute("data-" + b, c), a) }, a.getWidth = function (b, c) { return D.h.getWidth(a, b, c) }, a.getHeight = function (b, c) { return D.h.getHeight(a, b, c) }, a.getOffset = function () { return D.h.getOffset(a) }, a }, D.calcSlides = function (a) { var c = D.slides ? D.slides.length : !1; D.slides = [], D.displaySlides = []; for (var d = 0; d < D.wrapper.childNodes.length; d++)if (D.wrapper.childNodes[d].className) for (var e = D.wrapper.childNodes[d].className, f = e.split(/\s+/), i = 0; i < f.length; i++)f[i] === b.slideClass && D.slides.push(D.wrapper.childNodes[d]); for (d = D.slides.length - 1; d >= 0; d--)D._extendSwiperSlide(D.slides[d]); c !== !1 && (c !== D.slides.length || a) && (h(), g(), D.updateActiveSlide(), D.params.pagination && D.createPagination(), D.callPlugins("numberOfSlidesChanged")) }, D.createSlide = function (a, c, d) { c = c || D.params.slideClass, d = d || b.slideElement; var e = document.createElement(d); return e.innerHTML = a || "", e.className = c, D._extendSwiperSlide(e) }, D.appendSlide = function (a, b, c) { return a ? a.nodeType ? D._extendSwiperSlide(a).append() : D.createSlide(a, b, c).append() : void 0 }, D.prependSlide = function (a, b, c) { return a ? a.nodeType ? D._extendSwiperSlide(a).prepend() : D.createSlide(a, b, c).prepend() : void 0 }, D.insertSlideAfter = function (a, b, c, d) { return "undefined" == typeof a ? !1 : b.nodeType ? D._extendSwiperSlide(b).insertAfter(a) : D.createSlide(b, c, d).insertAfter(a) }, D.removeSlide = function (a) { if (D.slides[a]) { if (b.loop) { if (!D.slides[a + D.loopedSlides]) return !1; D.slides[a + D.loopedSlides].remove(), D.removeLoopedSlides(), D.calcSlides(), D.createLoop() } else D.slides[a].remove(); return !0 } return !1 }, D.removeLastSlide = function () { return D.slides.length > 0 ? (b.loop ? (D.slides[D.slides.length - 1 - D.loopedSlides].remove(), D.removeLoopedSlides(), D.calcSlides(), D.createLoop()) : D.slides[D.slides.length - 1].remove(), !0) : !1 }, D.removeAllSlides = function () { for (var a = D.slides.length, b = D.slides.length - 1; b >= 0; b--)D.slides[b].remove(), b === a - 1 && D.setWrapperTranslate(0) }, D.getSlide = function (a) { return D.slides[a] }, D.getLastSlide = function () { return D.slides[D.slides.length - 1] }, D.getFirstSlide = function () { return D.slides[0] }, D.activeSlide = function () { return D.slides[D.activeIndex] }, D.fireCallback = function () { var a = arguments[0]; if ("[object Array]" === Object.prototype.toString.call(a)) for (var c = 0; c < a.length; c++)"function" == typeof a[c] && a[c](arguments[1], arguments[2], arguments[3], arguments[4], arguments[5]); else "[object String]" === Object.prototype.toString.call(a) ? b["on" + a] && D.fireCallback(b["on" + a], arguments[1], arguments[2], arguments[3], arguments[4], arguments[5]) : a(arguments[1], arguments[2], arguments[3], arguments[4], arguments[5]) }, D.addCallback = function (a, b) { var c, e = this; return e.params["on" + a] ? d(this.params["on" + a]) ? this.params["on" + a].push(b) : "function" == typeof this.params["on" + a] ? (c = this.params["on" + a], this.params["on" + a] = [], this.params["on" + a].push(c), this.params["on" + a].push(b)) : void 0 : (this.params["on" + a] = [], this.params["on" + a].push(b)) }, D.removeCallbacks = function (a) { D.params["on" + a] && (D.params["on" + a] = null) }; var S = []; for (var T in D.plugins) if (b[T]) { var U = D.plugins[T](D, b[T]); U && S.push(U) } D.callPlugins = function (a, b) { b || (b = {}); for (var c = 0; c < S.length; c++)a in S[c] && S[c][a](b) }, !D.browser.ie10 && !D.browser.ie11 || b.onlyExternal || D.wrapper.classList.add("swiper-wp8-" + (N ? "horizontal" : "vertical")), b.freeMode && (D.container.className += " swiper-free-mode"), D.initialized = !1, D.init = function (a, c) { var d = D.h.getWidth(D.container, !1, b.roundLengths), e = D.h.getHeight(D.container, !1, b.roundLengths); if (d !== D.width || e !== D.height || a) { D.width = d, D.height = e; var f, g, h, i, j, k, l; J = N ? d : e; var m = D.wrapper; if (a && D.calcSlides(c), "auto" === b.slidesPerView) { var n = 0, o = 0; b.slidesOffset > 0 && (m.style.paddingLeft = "", m.style.paddingRight = "", m.style.paddingTop = "", m.style.paddingBottom = ""), m.style.width = "", m.style.height = "", b.offsetPxBefore > 0 && (N ? D.wrapperLeft = b.offsetPxBefore : D.wrapperTop = b.offsetPxBefore), b.offsetPxAfter > 0 && (N ? D.wrapperRight = b.offsetPxAfter : D.wrapperBottom = b.offsetPxAfter), b.centeredSlides && (N ? (D.wrapperLeft = (J - this.slides[0].getWidth(!0, b.roundLengths)) / 2, D.wrapperRight = (J - D.slides[D.slides.length - 1].getWidth(!0, b.roundLengths)) / 2) : (D.wrapperTop = (J - D.slides[0].getHeight(!0, b.roundLengths)) / 2, D.wrapperBottom = (J - D.slides[D.slides.length - 1].getHeight(!0, b.roundLengths)) / 2)), N ? (D.wrapperLeft >= 0 && (m.style.paddingLeft = D.wrapperLeft + "px"), D.wrapperRight >= 0 && (m.style.paddingRight = D.wrapperRight + "px")) : (D.wrapperTop >= 0 && (m.style.paddingTop = D.wrapperTop + "px"), D.wrapperBottom >= 0 && (m.style.paddingBottom = D.wrapperBottom + "px")), k = 0; var p = 0; for (D.snapGrid = [], D.slidesGrid = [], h = 0, l = 0; l < D.slides.length; l++) { f = D.slides[l].getWidth(!0, b.roundLengths), g = D.slides[l].getHeight(!0, b.roundLengths), b.calculateHeight && (h = Math.max(h, g)); var q = N ? f : g; if (b.centeredSlides) { var r = l === D.slides.length - 1 ? 0 : D.slides[l + 1].getWidth(!0, b.roundLengths), s = l === D.slides.length - 1 ? 0 : D.slides[l + 1].getHeight(!0, b.roundLengths), t = N ? r : s; if (q > J) { if (b.slidesPerViewFit) D.snapGrid.push(k + D.wrapperLeft), D.snapGrid.push(k + q - J + D.wrapperLeft); else for (var u = 0; u <= Math.floor(q / (J + D.wrapperLeft)); u++)D.snapGrid.push(0 === u ? k + D.wrapperLeft : k + D.wrapperLeft + J * u); D.slidesGrid.push(k + D.wrapperLeft) } else D.snapGrid.push(p), D.slidesGrid.push(p); p += q / 2 + t / 2 } else { if (q > J) if (b.slidesPerViewFit) D.snapGrid.push(k), D.snapGrid.push(k + q - J); else if (0 !== J) for (var v = 0; v <= Math.floor(q / J); v++)D.snapGrid.push(k + J * v); else D.snapGrid.push(k); else D.snapGrid.push(k); D.slidesGrid.push(k) } k += q, n += f, o += g } b.calculateHeight && (D.height = h), N ? (G = n + D.wrapperRight + D.wrapperLeft, b.cssWidthAndHeight && "height" !== b.cssWidthAndHeight || (m.style.width = n + "px"), b.cssWidthAndHeight && "width" !== b.cssWidthAndHeight || (m.style.height = D.height + "px")) : (b.cssWidthAndHeight && "height" !== b.cssWidthAndHeight || (m.style.width = D.width + "px"), b.cssWidthAndHeight && "width" !== b.cssWidthAndHeight || (m.style.height = o + "px"), G = o + D.wrapperTop + D.wrapperBottom) } else if (b.scrollContainer) m.style.width = "", m.style.height = "", i = D.slides[0].getWidth(!0, b.roundLengths), j = D.slides[0].getHeight(!0, b.roundLengths), G = N ? i : j, m.style.width = i + "px", m.style.height = j + "px", F = N ? i : j; else { if (b.calculateHeight) { for (h = 0, j = 0, N || (D.container.style.height = ""), m.style.height = "", l = 0; l < D.slides.length; l++)D.slides[l].style.height = "", h = Math.max(D.slides[l].getHeight(!0), h), N || (j += D.slides[l].getHeight(!0)); g = h, D.height = g, N ? j = g : (J = g, D.container.style.height = J + "px") } else g = N ? D.height : D.height / b.slidesPerView, b.roundLengths && (g = Math.ceil(g)), j = N ? D.height : D.slides.length * g; for (f = N ? D.width / b.slidesPerView : D.width, b.roundLengths && (f = Math.ceil(f)), i = N ? D.slides.length * f : D.width, F = N ? f : g, b.offsetSlidesBefore > 0 && (N ? D.wrapperLeft = F * b.offsetSlidesBefore : D.wrapperTop = F * b.offsetSlidesBefore), b.offsetSlidesAfter > 0 && (N ? D.wrapperRight = F * b.offsetSlidesAfter : D.wrapperBottom = F * b.offsetSlidesAfter), b.offsetPxBefore > 0 && (N ? D.wrapperLeft = b.offsetPxBefore : D.wrapperTop = b.offsetPxBefore), b.offsetPxAfter > 0 && (N ? D.wrapperRight = b.offsetPxAfter : D.wrapperBottom = b.offsetPxAfter), b.centeredSlides && (N ? (D.wrapperLeft = (J - F) / 2, D.wrapperRight = (J - F) / 2) : (D.wrapperTop = (J - F) / 2, D.wrapperBottom = (J - F) / 2)), N ? (D.wrapperLeft > 0 && (m.style.paddingLeft = D.wrapperLeft + "px"), D.wrapperRight > 0 && (m.style.paddingRight = D.wrapperRight + "px")) : (D.wrapperTop > 0 && (m.style.paddingTop = D.wrapperTop + "px"), D.wrapperBottom > 0 && (m.style.paddingBottom = D.wrapperBottom + "px")), G = N ? i + D.wrapperRight + D.wrapperLeft : j + D.wrapperTop + D.wrapperBottom, parseFloat(i) > 0 && (!b.cssWidthAndHeight || "height" === b.cssWidthAndHeight) && (m.style.width = i + "px"), parseFloat(j) > 0 && (!b.cssWidthAndHeight || "width" === b.cssWidthAndHeight) && (m.style.height = j + "px"), k = 0, D.snapGrid = [], D.slidesGrid = [], l = 0; l < D.slides.length; l++)D.snapGrid.push(k), D.slidesGrid.push(k), k += F, parseFloat(f) > 0 && (!b.cssWidthAndHeight || "height" === b.cssWidthAndHeight) && (D.slides[l].style.width = f + "px"), parseFloat(g) > 0 && (!b.cssWidthAndHeight || "width" === b.cssWidthAndHeight) && (D.slides[l].style.height = g + "px") } D.initialized ? (D.callPlugins("onInit"), b.onInit && D.fireCallback(b.onInit, D)) : (D.callPlugins("onFirstInit"), b.onFirstInit && D.fireCallback(b.onFirstInit, D)), D.initialized = !0 } }, D.reInit = function (a) { D.init(!0, a) }, D.resizeFix = function (a) { D.callPlugins("beforeResizeFix"), D.init(b.resizeReInit || a), b.freeMode ? D.getWrapperTranslate() < -e() && (D.setWrapperTransition(0), D.setWrapperTranslate(-e())) : (D.swipeTo(b.loop ? D.activeLoopIndex : D.activeIndex, 0, !1), b.autoplay && (D.support.transitions && "undefined" != typeof ab ? "undefined" != typeof ab && (clearTimeout(ab), ab = void 0, D.startAutoplay()) : "undefined" != typeof bb && (clearInterval(bb), bb = void 0, D.startAutoplay()))), D.callPlugins("afterResizeFix") }, D.destroy = function (a) { var c = D.h.removeEventListener, d = "wrapper" === b.eventTarget ? D.wrapper : D.container; if (D.browser.ie10 || D.browser.ie11 ? (c(d, D.touchEvents.touchStart, p), c(document, D.touchEvents.touchMove, q), c(document, D.touchEvents.touchEnd, r)) : (D.support.touch && (c(d, "touchstart", p), c(d, "touchmove", q), c(d, "touchend", r)), b.simulateTouch && (c(d, "mousedown", p), c(document, "mousemove", q), c(document, "mouseup", r))), b.autoResize && c(window, "resize", D.resizeFix), h(), b.paginationClickable && x(), b.mousewheelControl && D._wheelEvent && c(D.container, D._wheelEvent, j), b.keyboardControl && c(document, "keydown", i), b.autoplay && D.stopAutoplay(), a) { D.wrapper.removeAttribute("style"); for (var e = 0; e < D.slides.length; e++)D.slides[e].removeAttribute("style") } D.callPlugins("onDestroy"), window.jQuery && window.jQuery(D.container).data("swiper") && window.jQuery(D.container).removeData("swiper"), window.Zepto && window.Zepto(D.container).data("swiper") && window.Zepto(D.container).removeData("swiper"), D = null }, D.disableKeyboardControl = function () { b.keyboardControl = !1, D.h.removeEventListener(document, "keydown", i) }, D.enableKeyboardControl = function () { b.keyboardControl = !0, D.h.addEventListener(document, "keydown", i) }; var V = (new Date).getTime(); if (D.disableMousewheelControl = function () { return D._wheelEvent ? (b.mousewheelControl = !1, D.h.removeEventListener(D.container, D._wheelEvent, j), !0) : !1 }, D.enableMousewheelControl = function () { return D._wheelEvent ? (b.mousewheelControl = !0, D.h.addEventListener(D.container, D._wheelEvent, j), !0) : !1 }, b.grabCursor) { var W = D.container.style; W.cursor = "move", W.cursor = "grab", W.cursor = "-moz-grab", W.cursor = "-webkit-grab" } D.allowSlideClick = !0, D.allowLinks = !0; var X, Y, Z, $ = !1, _ = !0; D.swipeNext = function (a, c) { "undefined" == typeof a && (a = !0), !c && b.loop && D.fixLoop(), !c && b.autoplay && D.stopAutoplay(!0), D.callPlugins("onSwipeNext"); var d = D.getWrapperTranslate().toFixed(2), f = d; if ("auto" === b.slidesPerView) { for (var g = 0; g < D.snapGrid.length; g++)if (-d >= D.snapGrid[g].toFixed(2) && -d < D.snapGrid[g + 1].toFixed(2)) { f = -D.snapGrid[g + 1]; break } } else { var h = F * b.slidesPerGroup; f = -(Math.floor(Math.abs(d) / Math.floor(h)) * h + h) } return f < -e() && (f = -e()), f === d ? !1 : (v(f, "next", { runCallbacks: a }), !0) }, D.swipePrev = function (a, c) { "undefined" == typeof a && (a = !0), !c && b.loop && D.fixLoop(), !c && b.autoplay && D.stopAutoplay(!0), D.callPlugins("onSwipePrev"); var d, e = Math.ceil(D.getWrapperTranslate()); if ("auto" === b.slidesPerView) { d = 0; for (var f = 1; f < D.snapGrid.length; f++) { if (-e === D.snapGrid[f]) { d = -D.snapGrid[f - 1]; break } if (-e > D.snapGrid[f] && -e < D.snapGrid[f + 1]) { d = -D.snapGrid[f]; break } } } else { var g = F * b.slidesPerGroup; d = -(Math.ceil(-e / g) - 1) * g } return d > 0 && (d = 0), d === e ? !1 : (v(d, "prev", { runCallbacks: a }), !0) }, D.swipeReset = function (a) { "undefined" == typeof a && (a = !0), D.callPlugins("onSwipeReset"); { var c, d = D.getWrapperTranslate(), f = F * b.slidesPerGroup; -e() } if ("auto" === b.slidesPerView) { c = 0; for (var g = 0; g < D.snapGrid.length; g++) { if (-d === D.snapGrid[g]) return; if (-d >= D.snapGrid[g] && -d < D.snapGrid[g + 1]) { c = D.positions.diff > 0 ? -D.snapGrid[g + 1] : -D.snapGrid[g]; break } } -d >= D.snapGrid[D.snapGrid.length - 1] && (c = -D.snapGrid[D.snapGrid.length - 1]), d <= -e() && (c = -e()) } else c = 0 > d ? Math.round(d / f) * f : 0, d <= -e() && (c = -e()); return b.scrollContainer && (c = 0 > d ? d : 0), c < -e() && (c = -e()), b.scrollContainer && J > F && (c = 0), c === d ? !1 : (v(c, "reset", { runCallbacks: a }), !0) }, D.swipeTo = function (a, c, d) { a = parseInt(a, 10), D.callPlugins("onSwipeTo", { index: a, speed: c }), b.loop && (a += D.loopedSlides); var f = D.getWrapperTranslate(); if (!(!isFinite(a) || a > D.slides.length - 1 || 0 > a)) { var g; return g = "auto" === b.slidesPerView ? -D.slidesGrid[a] : -a * F, g < -e() && (g = -e()), g === f ? !1 : ("undefined" == typeof d && (d = !0), v(g, "to", { index: a, speed: c, runCallbacks: d }), !0) } }, D._queueStartCallbacks = !1, D._queueEndCallbacks = !1, D.updateActiveSlide = function (a) { if (D.initialized && 0 !== D.slides.length) { D.previousIndex = D.activeIndex, "undefined" == typeof a && (a = D.getWrapperTranslate()), a > 0 && (a = 0); var c; if ("auto" === b.slidesPerView) { if (D.activeIndex = D.slidesGrid.indexOf(-a), D.activeIndex < 0) { for (c = 0; c < D.slidesGrid.length - 1 && !(-a > D.slidesGrid[c] && -a < D.slidesGrid[c + 1]); c++); var d = Math.abs(D.slidesGrid[c] + a), e = Math.abs(D.slidesGrid[c + 1] + a); D.activeIndex = e >= d ? c : c + 1 } } else D.activeIndex = Math[b.visibilityFullFit ? "ceil" : "round"](-a / F); if (D.activeIndex === D.slides.length && (D.activeIndex = D.slides.length - 1), D.activeIndex < 0 && (D.activeIndex = 0), D.slides[D.activeIndex]) { if (D.calcVisibleSlides(a), D.support.classList) { var f; for (c = 0; c < D.slides.length; c++)f = D.slides[c], f.classList.remove(b.slideActiveClass), D.visibleSlides.indexOf(f) >= 0 ? f.classList.add(b.slideVisibleClass) : f.classList.remove(b.slideVisibleClass); D.slides[D.activeIndex].classList.add(b.slideActiveClass) } else { var g = new RegExp("\\s*" + b.slideActiveClass), h = new RegExp("\\s*" + b.slideVisibleClass); for (c = 0; c < D.slides.length; c++)D.slides[c].className = D.slides[c].className.replace(g, "").replace(h, ""), D.visibleSlides.indexOf(D.slides[c]) >= 0 && (D.slides[c].className += " " + b.slideVisibleClass); D.slides[D.activeIndex].className += " " + b.slideActiveClass } if (b.loop) { var i = D.loopedSlides; D.activeLoopIndex = D.activeIndex - i, D.activeLoopIndex >= D.slides.length - 2 * i && (D.activeLoopIndex = D.slides.length - 2 * i - D.activeLoopIndex), D.activeLoopIndex < 0 && (D.activeLoopIndex = D.slides.length - 2 * i + D.activeLoopIndex), D.activeLoopIndex < 0 && (D.activeLoopIndex = 0) } else D.activeLoopIndex = D.activeIndex; b.pagination && D.updatePagination(a) } } }, D.createPagination = function (a) { if (b.paginationClickable && D.paginationButtons && x(), D.paginationContainer = b.pagination.nodeType ? b.pagination : c(b.pagination)[0], b.createPagination) { var d = "", e = D.slides.length, f = e; b.loop && (f -= 2 * D.loopedSlides); for (var g = 0; f > g; g++)d += "<" + b.paginationElement + ' class="' + b.paginationElementClass + '">"; D.paginationContainer.innerHTML = d } D.paginationButtons = c("." + b.paginationElementClass, D.paginationContainer), a || D.updatePagination(), D.callPlugins("onCreatePagination"), b.paginationClickable && y() }, D.updatePagination = function (a) { if (b.pagination && !(D.slides.length < 1)) { var d = c("." + b.paginationActiveClass, D.paginationContainer); if (d) { var e = D.paginationButtons; if (0 !== e.length) { for (var f = 0; f < e.length; f++)e[f].className = b.paginationElementClass; var g = b.loop ? D.loopedSlides : 0; if (b.paginationAsRange) { D.visibleSlides || D.calcVisibleSlides(a); var h, i = []; for (h = 0; h < D.visibleSlides.length; h++) { var j = D.slides.indexOf(D.visibleSlides[h]) - g; b.loop && 0 > j && (j = D.slides.length - 2 * D.loopedSlides + j), b.loop && j >= D.slides.length - 2 * D.loopedSlides && (j = D.slides.length - 2 * D.loopedSlides - j, j = Math.abs(j)), i.push(j) } for (h = 0; h < i.length; h++)e[i[h]] && (e[i[h]].className += " " + b.paginationVisibleClass); b.loop ? void 0 !== e[D.activeLoopIndex] && (e[D.activeLoopIndex].className += " " + b.paginationActiveClass) : e[D.activeIndex] && (e[D.activeIndex].className += " " + b.paginationActiveClass) } else b.loop ? e[D.activeLoopIndex] && (e[D.activeLoopIndex].className += " " + b.paginationActiveClass + " " + b.paginationVisibleClass) : e[D.activeIndex] && (e[D.activeIndex].className += " " + b.paginationActiveClass + " " + b.paginationVisibleClass) } } } }, D.calcVisibleSlides = function (a) { var c = [], d = 0, e = 0, f = 0; N && D.wrapperLeft > 0 && (a += D.wrapperLeft), !N && D.wrapperTop > 0 && (a += D.wrapperTop); for (var g = 0; g < D.slides.length; g++) { d += e, e = "auto" === b.slidesPerView ? N ? D.h.getWidth(D.slides[g], !0, b.roundLengths) : D.h.getHeight(D.slides[g], !0, b.roundLengths) : F, f = d + e; var h = !1; b.visibilityFullFit ? (d >= -a && -a + J >= f && (h = !0), -a >= d && f >= -a + J && (h = !0)) : (f > -a && -a + J >= f && (h = !0), d >= -a && -a + J > d && (h = !0), -a > d && f > -a + J && (h = !0)), h && c.push(D.slides[g]) } 0 === c.length && (c = [D.slides[D.activeIndex]]), D.visibleSlides = c }; var ab, bb; D.startAutoplay = function () { if (D.support.transitions) { if ("undefined" != typeof ab) return !1; if (!b.autoplay) return; D.callPlugins("onAutoplayStart"), b.onAutoplayStart && D.fireCallback(b.onAutoplayStart, D), A() } else { if ("undefined" != typeof bb) return !1; if (!b.autoplay) return; D.callPlugins("onAutoplayStart"), b.onAutoplayStart && D.fireCallback(b.onAutoplayStart, D), bb = setInterval(function () { b.loop ? (D.fixLoop(), D.swipeNext(!0, !0)) : D.swipeNext(!0, !0) || (b.autoplayStopOnLast ? (clearInterval(bb), bb = void 0) : D.swipeTo(0)) }, b.autoplay) } }, D.stopAutoplay = function (a) { if (D.support.transitions) { if (!ab) return; ab && clearTimeout(ab), ab = void 0, a && !b.autoplayDisableOnInteraction && D.wrapperTransitionEnd(function () { A() }), D.callPlugins("onAutoplayStop"), b.onAutoplayStop && D.fireCallback(b.onAutoplayStop, D) } else bb && clearInterval(bb), bb = void 0, D.callPlugins("onAutoplayStop"), b.onAutoplayStop && D.fireCallback(b.onAutoplayStop, D) }, D.loopCreated = !1, D.removeLoopedSlides = function () { if (D.loopCreated) for (var a = 0; a < D.slides.length; a++)D.slides[a].getData("looped") === !0 && D.wrapper.removeChild(D.slides[a]) }, D.createLoop = function () { if (0 !== D.slides.length) { D.loopedSlides = "auto" === b.slidesPerView ? b.loopedSlides || 1 : Math.floor(b.slidesPerView) + b.loopAdditionalSlides, D.loopedSlides > D.slides.length && (D.loopedSlides = D.slides.length); var a, c = "", d = "", e = "", f = D.slides.length, g = Math.floor(D.loopedSlides / f), h = D.loopedSlides % f; for (a = 0; g * f > a; a++) { var i = a; if (a >= f) { var j = Math.floor(a / f); i = a - f * j } e += D.slides[i].outerHTML } for (a = 0; h > a; a++)d += u(b.slideDuplicateClass, D.slides[a].outerHTML); for (a = f - h; f > a; a++)c += u(b.slideDuplicateClass, D.slides[a].outerHTML); var k = c + e + E.innerHTML + e + d; for (E.innerHTML = k, D.loopCreated = !0, D.calcSlides(), a = 0; a < D.slides.length; a++)(a < D.loopedSlides || a >= D.slides.length - D.loopedSlides) && D.slides[a].setData("looped", !0); D.callPlugins("onCreateLoop") } }, D.fixLoop = function () { var a; D.activeIndex < D.loopedSlides ? (a = D.slides.length - 3 * D.loopedSlides + D.activeIndex, D.swipeTo(a, 0, !1)) : ("auto" === b.slidesPerView && D.activeIndex >= 2 * D.loopedSlides || D.activeIndex > D.slides.length - 2 * b.slidesPerView) && (a = -D.slides.length + D.activeIndex + D.loopedSlides, D.swipeTo(a, 0, !1)) }, D.loadSlides = function () { var a = ""; D.activeLoaderIndex = 0; for (var c = b.loader.slides, d = b.loader.loadAllSlides ? c.length : b.slidesPerView * (1 + b.loader.surroundGroups), e = 0; d > e; e++)a += "outer" === b.loader.slidesHTMLType ? c[e] : "<" + b.slideElement + ' class="' + b.slideClass + '" data-swiperindex="' + e + '">' + c[e] + ""; D.wrapper.innerHTML = a, D.calcSlides(!0), b.loader.loadAllSlides || D.wrapperTransitionEnd(D.reloadSlides, !0) }, D.reloadSlides = function () { var a = b.loader.slides, c = parseInt(D.activeSlide().data("swiperindex"), 10); if (!(0 > c || c > a.length - 1)) { D.activeLoaderIndex = c; var d = Math.max(0, c - b.slidesPerView * b.loader.surroundGroups), e = Math.min(c + b.slidesPerView * (1 + b.loader.surroundGroups) - 1, a.length - 1); if (c > 0) { var f = -F * (c - d); D.setWrapperTranslate(f), D.setWrapperTransition(0) } var g; if ("reload" === b.loader.logic) { D.wrapper.innerHTML = ""; var h = ""; for (g = d; e >= g; g++)h += "outer" === b.loader.slidesHTMLType ? a[g] : "<" + b.slideElement + ' class="' + b.slideClass + '" data-swiperindex="' + g + '">' + a[g] + ""; D.wrapper.innerHTML = h } else { var i = 1e3, j = 0; for (g = 0; g < D.slides.length; g++) { var k = D.slides[g].data("swiperindex"); d > k || k > e ? D.wrapper.removeChild(D.slides[g]) : (i = Math.min(k, i), j = Math.max(k, j)) } for (g = d; e >= g; g++) { var l; i > g && (l = document.createElement(b.slideElement), l.className = b.slideClass, l.setAttribute("data-swiperindex", g), l.innerHTML = a[g], D.wrapper.insertBefore(l, D.wrapper.firstChild)), g > j && (l = document.createElement(b.slideElement), l.className = b.slideClass, l.setAttribute("data-swiperindex", g), l.innerHTML = a[g], D.wrapper.appendChild(l)) } } D.reInit(!0) } }, B() } }; Swiper.prototype = { plugins: {}, wrapperTransitionEnd: function (a, b) { "use strict"; function c(h) { if (h.target === f && (a(e), e.params.queueEndCallbacks && (e._queueEndCallbacks = !1), !b)) for (d = 0; d < g.length; d++)e.h.removeEventListener(f, g[d], c) } var d, e = this, f = e.wrapper, g = ["webkitTransitionEnd", "transitionend", "oTransitionEnd", "MSTransitionEnd", "msTransitionEnd"]; if (a) for (d = 0; d < g.length; d++)e.h.addEventListener(f, g[d], c) }, getWrapperTranslate: function (a) { "use strict"; var b, c, d, e, f = this.wrapper; return "undefined" == typeof a && (a = "horizontal" === this.params.mode ? "x" : "y"), this.support.transforms && this.params.useCSS3Transforms ? (d = window.getComputedStyle(f, null), window.WebKitCSSMatrix ? e = new WebKitCSSMatrix("none" === d.webkitTransform ? "" : d.webkitTransform) : (e = d.MozTransform || d.OTransform || d.MsTransform || d.msTransform || d.transform || d.getPropertyValue("transform").replace("translate(", "matrix(1, 0, 0, 1,"), b = e.toString().split(",")), "x" === a && (c = window.WebKitCSSMatrix ? e.m41 : parseFloat(16 === b.length ? b[12] : b[4])), "y" === a && (c = window.WebKitCSSMatrix ? e.m42 : parseFloat(16 === b.length ? b[13] : b[5]))) : ("x" === a && (c = parseFloat(f.style.left, 10) || 0), "y" === a && (c = parseFloat(f.style.top, 10) || 0)), c || 0 }, setWrapperTranslate: function (a, b, c) { "use strict"; var d, e = this.wrapper.style, f = { x: 0, y: 0, z: 0 }; 3 === arguments.length ? (f.x = a, f.y = b, f.z = c) : ("undefined" == typeof b && (b = "horizontal" === this.params.mode ? "x" : "y"), f[b] = a), this.support.transforms && this.params.useCSS3Transforms ? (d = this.support.transforms3d ? "translate3d(" + f.x + "px, " + f.y + "px, " + f.z + "px)" : "translate(" + f.x + "px, " + f.y + "px)", e.webkitTransform = e.MsTransform = e.msTransform = e.MozTransform = e.OTransform = e.transform = d) : (e.left = f.x + "px", e.top = f.y + "px"), this.callPlugins("onSetWrapperTransform", f), this.params.onSetWrapperTransform && this.fireCallback(this.params.onSetWrapperTransform, this, f) }, setWrapperTransition: function (a) { "use strict"; var b = this.wrapper.style; b.webkitTransitionDuration = b.MsTransitionDuration = b.msTransitionDuration = b.MozTransitionDuration = b.OTransitionDuration = b.transitionDuration = a / 1e3 + "s", this.callPlugins("onSetWrapperTransition", { duration: a }), this.params.onSetWrapperTransition && this.fireCallback(this.params.onSetWrapperTransition, this, a) }, h: { getWidth: function (a, b, c) { "use strict"; var d = window.getComputedStyle(a, null).getPropertyValue("width"), e = parseFloat(d); return (isNaN(e) || d.indexOf("%") > 0 || 0 > e) && (e = a.offsetWidth - parseFloat(window.getComputedStyle(a, null).getPropertyValue("padding-left")) - parseFloat(window.getComputedStyle(a, null).getPropertyValue("padding-right"))), b && (e += parseFloat(window.getComputedStyle(a, null).getPropertyValue("padding-left")) + parseFloat(window.getComputedStyle(a, null).getPropertyValue("padding-right"))), c ? Math.ceil(e) : e }, getHeight: function (a, b, c) { "use strict"; if (b) return a.offsetHeight; var d = window.getComputedStyle(a, null).getPropertyValue("height"), e = parseFloat(d); return (isNaN(e) || d.indexOf("%") > 0 || 0 > e) && (e = a.offsetHeight - parseFloat(window.getComputedStyle(a, null).getPropertyValue("padding-top")) - parseFloat(window.getComputedStyle(a, null).getPropertyValue("padding-bottom"))), b && (e += parseFloat(window.getComputedStyle(a, null).getPropertyValue("padding-top")) + parseFloat(window.getComputedStyle(a, null).getPropertyValue("padding-bottom"))), c ? Math.ceil(e) : e }, getOffset: function (a) { "use strict"; var b = a.getBoundingClientRect(), c = document.body, d = a.clientTop || c.clientTop || 0, e = a.clientLeft || c.clientLeft || 0, f = window.pageYOffset || a.scrollTop, g = window.pageXOffset || a.scrollLeft; return document.documentElement && !window.pageYOffset && (f = document.documentElement.scrollTop, g = document.documentElement.scrollLeft), { top: b.top + f - d, left: b.left + g - e } }, windowWidth: function () { "use strict"; return window.innerWidth ? window.innerWidth : document.documentElement && document.documentElement.clientWidth ? document.documentElement.clientWidth : void 0 }, windowHeight: function () { "use strict"; return window.innerHeight ? window.innerHeight : document.documentElement && document.documentElement.clientHeight ? document.documentElement.clientHeight : void 0 }, windowScroll: function () { "use strict"; return "undefined" != typeof pageYOffset ? { left: window.pageXOffset, top: window.pageYOffset } : document.documentElement ? { left: document.documentElement.scrollLeft, top: document.documentElement.scrollTop } : void 0 }, addEventListener: function (a, b, c, d) { "use strict"; "undefined" == typeof d && (d = !1), a.addEventListener ? a.addEventListener(b, c, d) : a.attachEvent && a.attachEvent("on" + b, c) }, removeEventListener: function (a, b, c, d) { "use strict"; "undefined" == typeof d && (d = !1), a.removeEventListener ? a.removeEventListener(b, c, d) : a.detachEvent && a.detachEvent("on" + b, c) } }, setTransform: function (a, b) { "use strict"; var c = a.style; c.webkitTransform = c.MsTransform = c.msTransform = c.MozTransform = c.OTransform = c.transform = b }, setTranslate: function (a, b) { "use strict"; var c = a.style, d = { x: b.x || 0, y: b.y || 0, z: b.z || 0 }, e = this.support.transforms3d ? "translate3d(" + d.x + "px," + d.y + "px," + d.z + "px)" : "translate(" + d.x + "px," + d.y + "px)"; c.webkitTransform = c.MsTransform = c.msTransform = c.MozTransform = c.OTransform = c.transform = e, this.support.transforms || (c.left = d.x + "px", c.top = d.y + "px") }, setTransition: function (a, b) { "use strict"; var c = a.style; c.webkitTransitionDuration = c.MsTransitionDuration = c.msTransitionDuration = c.MozTransitionDuration = c.OTransitionDuration = c.transitionDuration = b + "ms" }, support: { touch: window.Modernizr && Modernizr.touch === !0 || function () { "use strict"; return !!("ontouchstart" in window || window.DocumentTouch && document instanceof DocumentTouch) }(), transforms3d: window.Modernizr && Modernizr.csstransforms3d === !0 || function () { "use strict"; var a = document.createElement("div").style; return "webkitPerspective" in a || "MozPerspective" in a || "OPerspective" in a || "MsPerspective" in a || "perspective" in a }(), transforms: window.Modernizr && Modernizr.csstransforms === !0 || function () { "use strict"; var a = document.createElement("div").style; return "transform" in a || "WebkitTransform" in a || "MozTransform" in a || "msTransform" in a || "MsTransform" in a || "OTransform" in a }(), transitions: window.Modernizr && Modernizr.csstransitions === !0 || function () { "use strict"; var a = document.createElement("div").style; return "transition" in a || "WebkitTransition" in a || "MozTransition" in a || "msTransition" in a || "MsTransition" in a || "OTransition" in a }(), classList: function () { "use strict"; var a = document.createElement("div"); return "classList" in a }() }, browser: { ie8: function () { "use strict"; var a = -1; if ("Microsoft Internet Explorer" === navigator.appName) { var b = navigator.userAgent, c = new RegExp(/MSIE ([0-9]{1,}[\.0-9]{0,})/); null !== c.exec(b) && (a = parseFloat(RegExp.$1)) } return -1 !== a && 9 > a }(), ie10: window.navigator.msPointerEnabled, ie11: window.navigator.pointerEnabled } }, (window.jQuery || window.Zepto) && !function (a) { "use strict"; a.fn.swiper = function (b) { var c; return this.each(function (d) { var e = a(this), f = new Swiper(e[0], b); d || (c = f), e.data("swiper", f) }), c } }(window.jQuery || window.Zepto), "undefined" != typeof module ? module.exports = Swiper : "function" == typeof define && define.amd && define([], function () { "use strict"; return Swiper }); /* * jQuery Easing v1.4.0 * */ (function (factory) { if (typeof define === "function" && define.amd) { define(['jquery'], function ($) { return factory($) }) } else if (typeof module === "object" && typeof module.exports === "object") { exports = factory(require('jquery')) } else { factory(jQuery) } })(function ($) { $.easing['jswing'] = $.easing['swing']; var pow = Math.pow, sqrt = Math.sqrt, sin = Math.sin, cos = Math.cos, PI = Math.PI, c1 = 1.70158, c2 = c1 * 1.525, c3 = c1 + 1, c4 = (2 * PI) / 3, c5 = (2 * PI) / 4.5; function bounceOut(x) { var n1 = 7.5625, d1 = 2.75; if (x < 1 / d1) { return n1 * x * x } else if (x < 2 / d1) { return n1 * (x -= (1.5 / d1)) * x + .75 } else if (x < 2.5 / d1) { return n1 * (x -= (2.25 / d1)) * x + .9375 } else { return n1 * (x -= (2.625 / d1)) * x + .984375 } } $.extend($.easing, { def: 'easeOutQuad', swing: function (x) { return $.easing[$.easing.def](x) }, easeInQuad: function (x) { return x * x }, easeOutQuad: function (x) { return 1 - (1 - x) * (1 - x) }, easeInOutQuad: function (x) { return x < 0.5 ? 2 * x * x : 1 - pow(-2 * x + 2, 2) / 2 }, easeInCubic: function (x) { return x * x * x }, easeOutCubic: function (x) { return 1 - pow(1 - x, 3) }, easeInOutCubic: function (x) { return x < 0.5 ? 4 * x * x * x : 1 - pow(-2 * x + 2, 3) / 2 }, easeInQuart: function (x) { return x * x * x * x }, easeOutQuart: function (x) { return 1 - pow(1 - x, 4) }, easeInOutQuart: function (x) { return x < 0.5 ? 8 * x * x * x * x : 1 - pow(-2 * x + 2, 4) / 2 }, easeInQuint: function (x) { return x * x * x * x * x }, easeOutQuint: function (x) { return 1 - pow(1 - x, 5) }, easeInOutQuint: function (x) { return x < 0.5 ? 16 * x * x * x * x * x : 1 - pow(-2 * x + 2, 5) / 2 }, easeInSine: function (x) { return 1 - cos(x * PI / 2) }, easeOutSine: function (x) { return sin(x * PI / 2) }, easeInOutSine: function (x) { return -(cos(PI * x) - 1) / 2 }, easeInExpo: function (x) { return x === 0 ? 0 : pow(2, 10 * x - 10) }, easeOutExpo: function (x) { return x === 1 ? 1 : 1 - pow(2, -10 * x) }, easeInOutExpo: function (x) { return x === 0 ? 0 : x === 1 ? 1 : x < 0.5 ? pow(2, 20 * x - 10) / 2 : (2 - pow(2, -20 * x + 10)) / 2 }, easeInCirc: function (x) { return 1 - sqrt(1 - pow(x, 2)) }, easeOutCirc: function (x) { return sqrt(1 - pow(x - 1, 2)) }, easeInOutCirc: function (x) { return x < 0.5 ? (1 - sqrt(1 - pow(2 * x, 2))) / 2 : (sqrt(1 - pow(-2 * x + 2, 2)) + 1) / 2 }, easeInElastic: function (x) { return x === 0 ? 0 : x === 1 ? 1 : -pow(2, 10 * x - 10) * sin((x * 10 - 10.75) * c4) }, easeOutElastic: function (x) { return x === 0 ? 0 : x === 1 ? 1 : pow(2, -10 * x) * sin((x * 10 - 0.75) * c4) + 1 }, easeInOutElastic: function (x) { return x === 0 ? 0 : x === 1 ? 1 : x < 0.5 ? -(pow(2, 20 * x - 10) * sin((20 * x - 11.125) * c5)) / 2 : pow(2, -20 * x + 10) * sin((20 * x - 11.125) * c5) / 2 + 1 }, easeInBack: function (x) { return c3 * x * x * x - c1 * x * x }, easeOutBack: function (x) { return 1 + c3 * pow(x - 1, 3) + c1 * pow(x - 1, 2) }, easeInOutBack: function (x) { return x < 0.5 ? (pow(2 * x, 2) * ((c2 + 1) * 2 * x - c2)) / 2 : (pow(2 * x - 2, 2) * ((c2 + 1) * (x * 2 - 2) + c2) + 2) / 2 }, easeInBounce: function (x) { return 1 - bounceOut(1 - x) }, easeOutBounce: bounceOut, easeInOutBounce: function (x) { return x < 0.5 ? (1 - bounceOut(1 - 2 * x)) / 2 : (1 + bounceOut(2 * x - 1)) / 2 } }) }); /*! WOW - v1.0.1 - 2014-09-03 **/ (function () { var a, b, c, d, e, f = function (a, b) { return function () { return a.apply(b, arguments) } }, g = [].indexOf || function (a) { for (var b = 0, c = this.length; c > b; b++)if (b in this && this[b] === a) return b; return -1 }; b = function () { function a() { } return a.prototype.extend = function (a, b) { var c, d; for (c in b) d = b[c], null == a[c] && (a[c] = d); return a }, a.prototype.isMobile = function (a) { return /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(a) }, a.prototype.addEvent = function (a, b, c) { return null != a.addEventListener ? a.addEventListener(b, c, !1) : null != a.attachEvent ? a.attachEvent("on" + b, c) : a[b] = c }, a.prototype.removeEvent = function (a, b, c) { return null != a.removeEventListener ? a.removeEventListener(b, c, !1) : null != a.detachEvent ? a.detachEvent("on" + b, c) : delete a[b] }, a.prototype.innerHeight = function () { return "innerHeight" in window ? window.innerHeight : document.documentElement.clientHeight }, a }(), c = this.WeakMap || this.MozWeakMap || (c = function () { function a() { this.keys = [], this.values = [] } return a.prototype.get = function (a) { var b, c, d, e, f; for (f = this.keys, b = d = 0, e = f.length; e > d; b = ++d)if (c = f[b], c === a) return this.values[b] }, a.prototype.set = function (a, b) { var c, d, e, f, g; for (g = this.keys, c = e = 0, f = g.length; f > e; c = ++e)if (d = g[c], d === a) return void (this.values[c] = b); return this.keys.push(a), this.values.push(b) }, a }()), a = this.MutationObserver || this.WebkitMutationObserver || this.MozMutationObserver || (a = function () { function a() { "undefined" != typeof console && null !== console && console.warn("MutationObserver is not supported by your browser."), "undefined" != typeof console && null !== console && console.warn("WOW.js cannot detect dom mutations, please call .sync() after loading new content.") } return a.notSupported = !0, a.prototype.observe = function () { }, a }()), d = this.getComputedStyle || function (a) { return this.getPropertyValue = function (b) { var c; return "float" === b && (b = "styleFloat"), e.test(b) && b.replace(e, function (a, b) { return b.toUpperCase() }), (null != (c = a.currentStyle) ? c[b] : void 0) || null }, this }, e = /(\-([a-z]){1})/g, this.WOW = function () { function e(a) { null == a && (a = {}), this.scrollCallback = f(this.scrollCallback, this), this.scrollHandler = f(this.scrollHandler, this), this.start = f(this.start, this), this.scrolled = !0, this.config = this.util().extend(a, this.defaults), this.animationNameCache = new c } return e.prototype.defaults = { boxClass: "wow", animateClass: "animated", offset: 0, mobile: !0, live: !0 }, e.prototype.init = function () { var a; return this.element = window.document.documentElement, "interactive" === (a = document.readyState) || "complete" === a ? this.start() : this.util().addEvent(document, "DOMContentLoaded", this.start), this.finished = [] }, e.prototype.start = function () { var b, c, d, e; if (this.stopped = !1, this.boxes = function () { var a, c, d, e; for (d = this.element.querySelectorAll("." + this.config.boxClass), e = [], a = 0, c = d.length; c > a; a++)b = d[a], e.push(b); return e }.call(this), this.all = function () { var a, c, d, e; for (d = this.boxes, e = [], a = 0, c = d.length; c > a; a++)b = d[a], e.push(b); return e }.call(this), this.boxes.length) if (this.disabled()) this.resetStyle(); else { for (e = this.boxes, c = 0, d = e.length; d > c; c++)b = e[c], this.applyStyle(b, !0); this.util().addEvent(window, "scroll", this.scrollHandler), this.util().addEvent(window, "resize", this.scrollHandler), this.interval = setInterval(this.scrollCallback, 50) } return this.config.live ? new a(function (a) { return function (b) { var c, d, e, f, g; for (g = [], e = 0, f = b.length; f > e; e++)d = b[e], g.push(function () { var a, b, e, f; for (e = d.addedNodes || [], f = [], a = 0, b = e.length; b > a; a++)c = e[a], f.push(this.doSync(c)); return f }.call(a)); return g } }(this)).observe(document.body, { childList: !0, subtree: !0 }) : void 0 }, e.prototype.stop = function () { return this.stopped = !0, this.util().removeEvent(window, "scroll", this.scrollHandler), this.util().removeEvent(window, "resize", this.scrollHandler), null != this.interval ? clearInterval(this.interval) : void 0 }, e.prototype.sync = function () { return a.notSupported ? this.doSync(this.element) : void 0 }, e.prototype.doSync = function (a) { var b, c, d, e, f; if (!this.stopped) { if (null == a && (a = this.element), 1 !== a.nodeType) return; for (a = a.parentNode || a, e = a.querySelectorAll("." + this.config.boxClass), f = [], c = 0, d = e.length; d > c; c++)b = e[c], g.call(this.all, b) < 0 ? (this.applyStyle(b, !0), this.boxes.push(b), this.all.push(b), f.push(this.scrolled = !0)) : f.push(void 0); return f } }, e.prototype.show = function (a) { return this.applyStyle(a), a.className = "" + a.className + " " + this.config.animateClass }, e.prototype.applyStyle = function (a, b) { var c, d, e; return d = a.getAttribute("data-wow-duration"), c = a.getAttribute("data-wow-delay"), e = a.getAttribute("data-wow-iteration"), this.animate(function (f) { return function () { return f.customStyle(a, b, d, c, e) } }(this)) }, e.prototype.animate = function () { return "requestAnimationFrame" in window ? function (a) { return window.requestAnimationFrame(a) } : function (a) { return a() } }(), e.prototype.resetStyle = function () { var a, b, c, d, e; for (d = this.boxes, e = [], b = 0, c = d.length; c > b; b++)a = d[b], e.push(a.setAttribute("style", "visibility: visible;")); return e }, e.prototype.customStyle = function (a, b, c, d, e) { return b && this.cacheAnimationName(a), a.style.visibility = b ? "hidden" : "visible", c && this.vendorSet(a.style, { animationDuration: c }), d && this.vendorSet(a.style, { animationDelay: d }), e && this.vendorSet(a.style, { animationIterationCount: e }), this.vendorSet(a.style, { animationName: b ? "none" : this.cachedAnimationName(a) }), a }, e.prototype.vendors = ["moz", "webkit"], e.prototype.vendorSet = function (a, b) { var c, d, e, f; f = []; for (c in b) d = b[c], a["" + c] = d, f.push(function () { var b, f, g, h; for (g = this.vendors, h = [], b = 0, f = g.length; f > b; b++)e = g[b], h.push(a["" + e + c.charAt(0).toUpperCase() + c.substr(1)] = d); return h }.call(this)); return f }, e.prototype.vendorCSS = function (a, b) { var c, e, f, g, h, i; for (e = d(a), c = e.getPropertyCSSValue(b), i = this.vendors, g = 0, h = i.length; h > g; g++)f = i[g], c = c || e.getPropertyCSSValue("-" + f + "-" + b); return c }, e.prototype.animationName = function (a) { var b; try { b = this.vendorCSS(a, "animation-name").cssText } catch (c) { b = d(a).getPropertyValue("animation-name") } return "none" === b ? "" : b }, e.prototype.cacheAnimationName = function (a) { return this.animationNameCache.set(a, this.animationName(a)) }, e.prototype.cachedAnimationName = function (a) { return this.animationNameCache.get(a) }, e.prototype.scrollHandler = function () { return this.scrolled = !0 }, e.prototype.scrollCallback = function () { var a; return !this.scrolled || (this.scrolled = !1, this.boxes = function () { var b, c, d, e; for (d = this.boxes, e = [], b = 0, c = d.length; c > b; b++)a = d[b], a && (this.isVisible(a) ? this.show(a) : e.push(a)); return e }.call(this), this.boxes.length || this.config.live) ? void 0 : this.stop() }, e.prototype.offsetTop = function (a) { for (var b; void 0 === a.offsetTop;)a = a.parentNode; for (b = a.offsetTop; a = a.offsetParent;)b += a.offsetTop; return b }, e.prototype.isVisible = function (a) { var b, c, d, e, f; return c = a.getAttribute("data-wow-offset") || this.config.offset, f = window.pageYOffset, e = f + Math.min(this.element.clientHeight, this.util().innerHeight()) - c, d = this.offsetTop(a), b = d + a.clientHeight, e >= d && b >= f }, e.prototype.util = function () { return null != this._util ? this._util : this._util = new b }, e.prototype.disabled = function () { return !this.config.mobile && this.util().isMobile(navigator.userAgent) }, e }() }).call(this); //countUp.min.js !function (a, b) { "function" == typeof define && define.amd ? define(b) : "object" == typeof exports ? module.exports = b(require, exports, module) : a.CountUp = b() }(this, function () { var d = function (a, b, c, d, e, f) { for (var g = 0, h = ["webkit", "moz", "ms", "o"], i = 0; i < h.length && !window.requestAnimationFrame; ++i)window.requestAnimationFrame = window[h[i] + "RequestAnimationFrame"], window.cancelAnimationFrame = window[h[i] + "CancelAnimationFrame"] || window[h[i] + "CancelRequestAnimationFrame"]; window.requestAnimationFrame || (window.requestAnimationFrame = function (a) { var c = (new Date).getTime(), d = Math.max(0, 16 - (c - g)), e = window.setTimeout(function () { a(c + d) }, d); return g = c + d, e }), window.cancelAnimationFrame || (window.cancelAnimationFrame = function (a) { clearTimeout(a) }), this.options = { useEasing: !0, useGrouping: !0, separator: ",", decimal: "." }; for (var j in f) f.hasOwnProperty(j) && (this.options[j] = f[j]); "" === this.options.separator && (this.options.useGrouping = !1), this.options.prefix || (this.options.prefix = ""), this.options.suffix || (this.options.suffix = ""), this.d = "string" == typeof a ? document.getElementById(a) : a, this.startVal = Number(b), isNaN(b) && (this.startVal = Number(b.match(/[\d]+/g).join(""))), this.endVal = Number(c), isNaN(c) && (this.endVal = Number(c.match(/[\d]+/g).join(""))), this.countDown = this.startVal > this.endVal, this.frameVal = this.startVal, this.decimals = Math.max(0, d || 0), this.dec = Math.pow(10, this.decimals), this.duration = 1e3 * Number(e) || 2e3; var k = this; this.version = function () { return "1.5.3" }, this.printValue = function (a) { var b = isNaN(a) ? "--" : k.formatNumber(a); "INPUT" == k.d.tagName ? this.d.value = b : "text" == k.d.tagName ? this.d.textContent = b : this.d.innerHTML = b }, this.easeOutExpo = function (a, b, c, d) { return 1024 * c * (-Math.pow(2, -10 * a / d) + 1) / 1023 + b }, this.count = function (a) { k.startTime || (k.startTime = a), k.timestamp = a; var b = a - k.startTime; k.remaining = k.duration - b, k.frameVal = k.options.useEasing ? k.countDown ? k.startVal - k.easeOutExpo(b, 0, k.startVal - k.endVal, k.duration) : k.easeOutExpo(b, k.startVal, k.endVal - k.startVal, k.duration) : k.countDown ? k.startVal - (k.startVal - k.endVal) * (b / k.duration) : k.startVal + (k.endVal - k.startVal) * (b / k.duration), k.frameVal = k.countDown ? k.frameVal < k.endVal ? k.endVal : k.frameVal : k.frameVal > k.endVal ? k.endVal : k.frameVal, k.frameVal = Math.round(k.frameVal * k.dec) / k.dec, k.printValue(k.frameVal), b < k.duration ? k.rAF = requestAnimationFrame(k.count) : k.callback && k.callback() }, this.start = function (a) { return k.callback = a, isNaN(k.endVal) || isNaN(k.startVal) || k.startVal === k.endVal ? (console.log("countUp error: startVal or endVal is not a number"), k.printValue(c)) : k.rAF = requestAnimationFrame(k.count), !1 }, this.pauseResume = function () { k.paused ? (k.paused = !1, delete k.startTime, k.duration = k.remaining, k.startVal = k.frameVal, requestAnimationFrame(k.count)) : (k.paused = !0, cancelAnimationFrame(k.rAF)) }, this.reset = function () { k.paused = !1, delete k.startTime, k.startVal = b, cancelAnimationFrame(k.rAF), k.printValue(k.startVal) }, this.update = function (a) { cancelAnimationFrame(k.rAF), k.paused = !1, delete k.startTime, k.startVal = k.frameVal, k.endVal = Number(a), k.countDown = k.startVal > k.endVal, k.rAF = requestAnimationFrame(k.count) }, this.formatNumber = function (a) { a = a.toFixed(k.decimals), a += ""; var b, c, d, e; if (b = a.split("."), c = b[0], d = b.length > 1 ? k.options.decimal + b[1] : "", e = /(\d+)(\d{3})/, k.options.useGrouping) for (; e.test(c);)c = c.replace(e, "$1" + k.options.separator + "$2"); return k.options.prefix + c + d + k.options.suffix }, k.printValue(k.startVal) }; return d }); //jquery.validate.min.js (function (factory) { if (typeof define === "function" && define.amd) { define(["jquery"], factory) } else { factory(jQuery) } }(function ($) { $.extend($.fn, { validate: function (options) { if (!this.length) { if (options && options.debug && window.console) { console.warn("Nothing selected, can't validate, returning nothing.") } return } var validator = $.data(this[0], "validator"); if (validator) { return validator } this.attr("novalidate", "novalidate"); validator = new $.validator(options, this[0]); $.data(this[0], "validator", validator); if (validator.settings.onsubmit) { this.on("click.validate", ":submit", function (event) { if (validator.settings.submitHandler) { validator.submitButton = event.target } if ($(this).hasClass("cancel")) { validator.cancelSubmit = true } if ($(this).attr("formnovalidate") !== undefined) { validator.cancelSubmit = true } }); this.on("submit.validate", function (event) { if (validator.settings.debug) { event.preventDefault() } function handle() { var hidden, result; if (validator.settings.submitHandler) { if (validator.submitButton) { hidden = $("").attr("name", validator.submitButton.name).val($(validator.submitButton).val()).appendTo(validator.currentForm) } result = validator.settings.submitHandler.call(validator, validator.currentForm, event); if (validator.submitButton) { hidden.remove() } if (result !== undefined) { return result } return false } return true } if (validator.cancelSubmit) { validator.cancelSubmit = false; return handle() } if (validator.form()) { if (validator.pendingRequest) { validator.formSubmitted = true; return false } return handle() } else { validator.focusInvalid(); return false } }) } return validator }, valid: function () { var valid, validator, errorList; if ($(this[0]).is("form")) { valid = this.validate().form() } else { errorList = []; valid = true; validator = $(this[0].form).validate(); this.each(function () { valid = validator.element(this) && valid; errorList = errorList.concat(validator.errorList) }); validator.errorList = errorList } return valid }, rules: function (command, argument) { var element = this[0], settings, staticRules, existingRules, data, param, filtered; if (command) { settings = $.data(element.form, "validator").settings; staticRules = settings.rules; existingRules = $.validator.staticRules(element); switch (command) { case "add": $.extend(existingRules, $.validator.normalizeRule(argument)); delete existingRules.messages; staticRules[element.name] = existingRules; if (argument.messages) { settings.messages[element.name] = $.extend(settings.messages[element.name], argument.messages) } break; case "remove": if (!argument) { delete staticRules[element.name]; return existingRules } filtered = {}; $.each(argument.split(/\s/), function (index, method) { filtered[method] = existingRules[method]; delete existingRules[method]; if (method === "required") { $(element).removeAttr("aria-required") } }); return filtered } } data = $.validator.normalizeRules($.extend({}, $.validator.classRules(element), $.validator.attributeRules(element), $.validator.dataRules(element), $.validator.staticRules(element)), element); if (data.required) { param = data.required; delete data.required; data = $.extend({ required: param }, data); $(element).attr("aria-required", "true") } if (data.remote) { param = data.remote; delete data.remote; data = $.extend(data, { remote: param }) } return data } }); $.extend($.expr[":"], { blank: function (a) { return !$.trim("" + $(a).val()) }, filled: function (a) { return !!$.trim("" + $(a).val()) }, unchecked: function (a) { return !$(a).prop("checked") } }); $.validator = function (options, form) { this.settings = $.extend(true, {}, $.validator.defaults, options); this.currentForm = form; this.init() }; $.validator.format = function (source, params) { if (arguments.length === 1) { return function () { var args = $.makeArray(arguments); args.unshift(source); return $.validator.format.apply(this, args) } } if (arguments.length > 2 && params.constructor !== Array) { params = $.makeArray(arguments).slice(1) } if (params.constructor !== Array) { params = [params] } $.each(params, function (i, n) { source = source.replace(new RegExp("\\{" + i + "\\}", "g"), function () { return n }) }); return source }; $.extend($.validator, { defaults: { messages: {}, groups: {}, rules: {}, errorClass: "error", validClass: "valid", errorElement: "label", focusCleanup: false, focusInvalid: true, errorContainer: $([]), errorLabelContainer: $([]), onsubmit: true, ignore: ":hidden", ignoreTitle: false, onfocusin: function (element) { this.lastActive = element; if (this.settings.focusCleanup) { if (this.settings.unhighlight) { this.settings.unhighlight.call(this, element, this.settings.errorClass, this.settings.validClass) } this.hideThese(this.errorsFor(element)) } }, onfocusout: function (element) { if (!this.checkable(element) && (element.name in this.submitted || !this.optional(element))) { this.element(element) } }, onkeyup: function (element, event) { var excludedKeys = [16, 17, 18, 20, 35, 36, 37, 38, 39, 40, 45, 144, 225]; if (event.which === 9 && this.elementValue(element) === "" || $.inArray(event.keyCode, excludedKeys) !== -1) { return } else if (element.name in this.submitted || element === this.lastElement) { this.element(element) } }, onclick: function (element) { if (element.name in this.submitted) { this.element(element) } else if (element.parentNode.name in this.submitted) { this.element(element.parentNode) } }, highlight: function (element, errorClass, validClass) { if (element.type === "radio") { this.findByName(element.name).addClass(errorClass).removeClass(validClass) } else { $(element).addClass(errorClass).removeClass(validClass) } }, unhighlight: function (element, errorClass, validClass) { if (element.type === "radio") { this.findByName(element.name).removeClass(errorClass).addClass(validClass) } else { $(element).removeClass(errorClass).addClass(validClass) } } }, setDefaults: function (settings) { $.extend($.validator.defaults, settings) }, messages: { required: "This field is required.", remote: "Please fix this field.", email: "Please enter a valid email address.", url: "Please enter a valid URL.", date: "Please enter a valid date.", dateISO: "Please enter a valid date ( ISO ).", number: "Please enter a valid number.", zNumber: "Please enter a valid number.", zzNumber: "Please enter a valid number.", phone: "Please enter a valid phone.", digits: "Please enter only digits.", zDigits: "Please enter only digits.", creditcard: "Please enter a valid credit card number.", equalTo: "Please enter the same value again.", maxlength: $.validator.format("Please enter no more than {0} characters."), minlength: $.validator.format("Please enter at least {0} characters."), rangelength: $.validator.format("Please enter a value between {0} and {1} characters long."), range: $.validator.format("Please enter a value between {0} and {1}."), max: $.validator.format("Please enter a value less than or equal to {0}."), min: $.validator.format("Please enter a value greater than or equal to {0}.") }, autoCreateRanges: false, prototype: { init: function () { this.labelContainer = $(this.settings.errorLabelContainer); this.errorContext = this.labelContainer.length && this.labelContainer || $(this.currentForm); this.containers = $(this.settings.errorContainer).add(this.settings.errorLabelContainer); this.submitted = {}; this.valueCache = {}; this.pendingRequest = 0; this.pending = {}; this.invalid = {}; this.reset(); var groups = (this.groups = {}), rules; $.each(this.settings.groups, function (key, value) { if (typeof value === "string") { value = value.split(/\s/) } $.each(value, function (index, name) { groups[name] = key }) }); rules = this.settings.rules; $.each(rules, function (key, value) { rules[key] = $.validator.normalizeRule(value) }); function delegate(event) { var validator = $.data(this.form, "validator"), eventType = "on" + event.type.replace(/^validate/, ""), settings = validator.settings; if (settings[eventType] && !$(this).is(settings.ignore)) { settings[eventType].call(validator, this, event) } } $(this.currentForm).on("focusin.validate focusout.validate keyup.validate", ":text, [type='password'], [type='file'], select, textarea, [type='number'], [type='search'], [type='tel'], [type='url'], [type='email'], [type='datetime'], [type='date'], [type='month'], [type='week'], [type='time'], [type='datetime-local'], [type='range'], [type='color'], [type='radio'], [type='checkbox']", delegate).on("click.validate", "select, option, [type='radio'], [type='checkbox']", delegate); if (this.settings.invalidHandler) { $(this.currentForm).on("invalid-form.validate", this.settings.invalidHandler) } $(this.currentForm).find("[required], [data-rule-required], .required").attr("aria-required", "true") }, form: function () { this.checkForm(); $.extend(this.submitted, this.errorMap); this.invalid = $.extend({}, this.errorMap); if (!this.valid()) { $(this.currentForm).triggerHandler("invalid-form", [this]) } this.showErrors(); return this.valid() }, checkForm: function () { this.prepareForm(); for (var i = 0, elements = (this.currentElements = this.elements()); elements[i]; i++) { this.check(elements[i]) } return this.valid() }, element: function (element) { var cleanElement = this.clean(element), checkElement = this.validationTargetFor(cleanElement), result = true; this.lastElement = checkElement; if (checkElement === undefined) { delete this.invalid[cleanElement.name] } else { this.prepareElement(checkElement); this.currentElements = $(checkElement); result = this.check(checkElement) !== false; if (result) { delete this.invalid[checkElement.name] } else { this.invalid[checkElement.name] = true } } $(element).attr("aria-invalid", !result); if (!this.numberOfInvalids()) { this.toHide = this.toHide.add(this.containers) } this.showErrors(); return result }, showErrors: function (errors) { if (errors) { $.extend(this.errorMap, errors); this.errorList = []; for (var name in errors) { this.errorList.push({ message: errors[name], element: this.findByName(name)[0] }) } this.successList = $.grep(this.successList, function (element) { return !(element.name in errors) }) } if (this.settings.showErrors) { this.settings.showErrors.call(this, this.errorMap, this.errorList) } else { this.defaultShowErrors() } }, resetForm: function () { if ($.fn.resetForm) { $(this.currentForm).resetForm() } this.submitted = {}; this.lastElement = null; this.prepareForm(); this.hideErrors(); var i, elements = this.elements().removeData("previousValue").removeAttr("aria-invalid"); if (this.settings.unhighlight) { for (i = 0; elements[i]; i++) { this.settings.unhighlight.call(this, elements[i], this.settings.errorClass, "") } } else { elements.removeClass(this.settings.errorClass) } }, numberOfInvalids: function () { return this.objectLength(this.invalid) }, objectLength: function (obj) { var count = 0, i; for (i in obj) { count++ } return count }, hideErrors: function () { this.hideThese(this.toHide) }, hideThese: function (errors) { errors.not(this.containers).text(""); this.addWrapper(errors).hide() }, valid: function () { return this.size() === 0 }, size: function () { return this.errorList.length }, focusInvalid: function () { if (this.settings.focusInvalid) { try { $(this.findLastActive() || this.errorList.length && this.errorList[0].element || []).filter(":visible").focus().trigger("focusin") } catch (e) { } } }, findLastActive: function () { var lastActive = this.lastActive; return lastActive && $.grep(this.errorList, function (n) { return n.element.name === lastActive.name }).length === 1 && lastActive }, elements: function () { var validator = this, rulesCache = {}; return $(this.currentForm).find("input, select, textarea").not(":submit, :reset, :image, :disabled").not(this.settings.ignore).filter(function () { if (!this.name && validator.settings.debug && window.console) { console.error("%o has no name assigned", this) } if (this.name in rulesCache || !validator.objectLength($(this).rules())) { return false } rulesCache[this.name] = true; return true }) }, clean: function (selector) { return $(selector)[0] }, errors: function () { var errorClass = this.settings.errorClass.split(" ").join("."); return $(this.settings.errorElement + "." + errorClass, this.errorContext) }, reset: function () { this.successList = []; this.errorList = []; this.errorMap = {}; this.toShow = $([]); this.toHide = $([]); this.currentElements = $([]) }, prepareForm: function () { this.reset(); this.toHide = this.errors().add(this.containers) }, prepareElement: function (element) { this.reset(); this.toHide = this.errorsFor(element) }, elementValue: function (element) { var val, $element = $(element), type = element.type; if (type === "radio" || type === "checkbox") { return this.findByName(element.name).filter(":checked").val() } else if (type === "number" && typeof element.validity !== "undefined") { return element.validity.badInput ? false : $element.val() } val = $element.val(); if (typeof val === "string") { return val.replace(/\r/g, "") } return val }, check: function (element) { element = this.validationTargetFor(this.clean(element)); var rules = $(element).rules(), rulesCount = $.map(rules, function (n, i) { return i }).length, dependencyMismatch = false, val = this.elementValue(element), result, method, rule; for (method in rules) { rule = { method: method, parameters: rules[method] }; try { result = $.validator.methods[method].call(this, val, element, rule.parameters); if (result === "dependency-mismatch" && rulesCount === 1) { dependencyMismatch = true; continue } dependencyMismatch = false; if (result === "pending") { this.toHide = this.toHide.not(this.errorsFor(element)); return } if (!result) { this.formatAndAdd(element, rule); return false } } catch (e) { if (this.settings.debug && window.console) { console.log("Exception occurred when checking element " + element.id + ", check the '" + rule.method + "' method.", e) } if (e instanceof TypeError) { e.message += ". Exception occurred when checking element " + element.id + ", check the '" + rule.method + "' method." } throw e; } } if (dependencyMismatch) { return } if (this.objectLength(rules)) { this.successList.push(element) } return true }, customDataMessage: function (element, method) { return $(element).data("msg" + method.charAt(0).toUpperCase() + method.substring(1).toLowerCase()) || $(element).data("msg") }, customMessage: function (name, method) { var m = this.settings.messages[name]; return m && (m.constructor === String ? m : m[method]) }, findDefined: function () { for (var i = 0; i < arguments.length; i++) { if (arguments[i] !== undefined) { return arguments[i] } } return undefined }, defaultMessage: function (element, method) { return this.findDefined(this.customMessage(element.name, method), this.customDataMessage(element, method), !this.settings.ignoreTitle && element.title || undefined, $.validator.messages[method], "Warning: No message defined for " + element.name + "") }, formatAndAdd: function (element, rule) { var message = this.defaultMessage(element, rule.method), theregex = /\$?\{(\d+)\}/g; if (typeof message === "function") { message = message.call(this, rule.parameters, element) } else if (theregex.test(message)) { message = $.validator.format(message.replace(theregex, "{$1}"), rule.parameters) } this.errorList.push({ message: message, element: element, method: rule.method }); this.errorMap[element.name] = message; this.submitted[element.name] = message }, addWrapper: function (toToggle) { if (this.settings.wrapper) { toToggle = toToggle.add(toToggle.parent(this.settings.wrapper)) } return toToggle }, defaultShowErrors: function () { var i, elements, error; for (i = 0; this.errorList[i]; i++) { error = this.errorList[i]; if (this.settings.highlight) { this.settings.highlight.call(this, error.element, this.settings.errorClass, this.settings.validClass) } this.showLabel(error.element, error.message) } if (this.errorList.length) { this.toShow = this.toShow.add(this.containers) } if (this.settings.success) { for (i = 0; this.successList[i]; i++) { this.showLabel(this.successList[i]) } } if (this.settings.unhighlight) { for (i = 0, elements = this.validElements(); elements[i]; i++) { this.settings.unhighlight.call(this, elements[i], this.settings.errorClass, this.settings.validClass) } } this.toHide = this.toHide.not(this.toShow); this.hideErrors(); this.addWrapper(this.toShow).show() }, validElements: function () { return this.currentElements.not(this.invalidElements()) }, invalidElements: function () { return $(this.errorList).map(function () { return this.element }) }, showLabel: function (element, message) { var place, group, errorID, error = this.errorsFor(element), elementID = this.idOrName(element), describedBy = $(element).attr("aria-describedby"); if (error.length) { error.removeClass(this.settings.validClass).addClass(this.settings.errorClass); error.html(message) } else { error = $("<" + this.settings.errorElement + ">").attr("id", elementID + "-error").addClass(this.settings.errorClass).html(message || ""); place = error; if (this.settings.wrapper) { place = error.hide().show().wrap("<" + this.settings.wrapper + "/>").parent() } if (this.labelContainer.length) { this.labelContainer.append(place) } else if (this.settings.errorPlacement) { this.settings.errorPlacement(place, $(element)) } else { place.insertAfter(element) } if (error.is("label")) { error.attr("for", elementID) } else if (error.parents("label[for='" + elementID + "']").length === 0) { errorID = error.attr("id").replace(/(:|\.|\[|\]|\$)/g, "\\$1"); if (!describedBy) { describedBy = errorID } else if (!describedBy.match(new RegExp("\\b" + errorID + "\\b"))) { describedBy += " " + errorID } $(element).attr("aria-describedby", describedBy); group = this.groups[element.name]; if (group) { $.each(this.groups, function (name, testgroup) { if (testgroup === group) { $("[name='" + name + "']", this.currentForm).attr("aria-describedby", error.attr("id")) } }) } } } if (!message && this.settings.success) { error.text(""); if (typeof this.settings.success === "string") { error.addClass(this.settings.success) } else { this.settings.success(error, element) } } this.toShow = this.toShow.add(error) }, errorsFor: function (element) { var name = this.idOrName(element), describer = $(element).attr("aria-describedby"), selector = "label[for='" + name + "'], label[for='" + name + "'] *"; if (describer) { selector = selector + ", #" + describer.replace(/\s+/g, ", #") } return this.errors().filter(selector) }, idOrName: function (element) { return this.groups[element.name] || (this.checkable(element) ? element.name : element.id || element.name) }, validationTargetFor: function (element) { if (this.checkable(element)) { element = this.findByName(element.name) } return $(element).not(this.settings.ignore)[0] }, checkable: function (element) { return (/radio|checkbox/i).test(element.type) }, findByName: function (name) { return $(this.currentForm).find("[name='" + name + "']") }, getLength: function (value, element) { switch (element.nodeName.toLowerCase()) { case "select": return $("option:selected", element).length; case "input": if (this.checkable(element)) { return this.findByName(element.name).filter(":checked").length } }return value.length }, depend: function (param, element) { return this.dependTypes[typeof param] ? this.dependTypes[typeof param](param, element) : true }, dependTypes: { "boolean": function (param) { return param }, "string": function (param, element) { return !!$(param, element.form).length }, "function": function (param, element) { return param(element) } }, optional: function (element) { var val = this.elementValue(element); return !$.validator.methods.required.call(this, val, element) && "dependency-mismatch" }, startRequest: function (element) { if (!this.pending[element.name]) { this.pendingRequest++; this.pending[element.name] = true } }, stopRequest: function (element, valid) { this.pendingRequest--; if (this.pendingRequest < 0) { this.pendingRequest = 0 } delete this.pending[element.name]; if (valid && this.pendingRequest === 0 && this.formSubmitted && this.form()) { $(this.currentForm).submit(); this.formSubmitted = false } else if (!valid && this.pendingRequest === 0 && this.formSubmitted) { $(this.currentForm).triggerHandler("invalid-form", [this]); this.formSubmitted = false } }, previousValue: function (element) { return $.data(element, "previousValue") || $.data(element, "previousValue", { old: null, valid: true, message: this.defaultMessage(element, "remote") }) }, destroy: function () { this.resetForm(); $(this.currentForm).off(".validate").removeData("validator") } }, classRuleSettings: { required: { required: true }, email: { email: true }, url: { url: true }, date: { date: true }, dateISO: { dateISO: true }, number: { number: true }, digits: { digits: true }, creditcard: { creditcard: true } }, addClassRules: function (className, rules) { if (className.constructor === String) { this.classRuleSettings[className] = rules } else { $.extend(this.classRuleSettings, className) } }, classRules: function (element) { var rules = {}, classes = $(element).attr("class"); if (classes) { $.each(classes.split(" "), function () { if (this in $.validator.classRuleSettings) { $.extend(rules, $.validator.classRuleSettings[this]) } }) } return rules }, normalizeAttributeRule: function (rules, type, method, value) { if (/min|max/.test(method) && (type === null || /number|range|text/.test(type))) { value = Number(value); if (isNaN(value)) { value = undefined } } if (value || value === 0) { rules[method] = value } else if (type === method && type !== "range") { rules[method] = true } }, attributeRules: function (element) { var rules = {}, $element = $(element), type = element.getAttribute("type"), method, value; for (method in $.validator.methods) { if (method === "required") { value = element.getAttribute(method); if (value === "") { value = true } value = !!value } else { value = $element.attr(method) } this.normalizeAttributeRule(rules, type, method, value) } if (rules.maxlength && /-1|2147483647|524288/.test(rules.maxlength)) { delete rules.maxlength } return rules }, dataRules: function (element) { var rules = {}, $element = $(element), type = element.getAttribute("type"), method, value; for (method in $.validator.methods) { value = $element.data("rule" + method.charAt(0).toUpperCase() + method.substring(1).toLowerCase()); this.normalizeAttributeRule(rules, type, method, value) } return rules }, staticRules: function (element) { var rules = {}, validator = $.data(element.form, "validator"); if (validator.settings.rules) { rules = $.validator.normalizeRule(validator.settings.rules[element.name]) || {} } return rules }, normalizeRules: function (rules, element) { $.each(rules, function (prop, val) { if (val === false) { delete rules[prop]; return } if (val.param || val.depends) { var keepRule = true; switch (typeof val.depends) { case "string": keepRule = !!$(val.depends, element.form).length; break; case "function": keepRule = val.depends.call(element, element); break }if (keepRule) { rules[prop] = val.param !== undefined ? val.param : true } else { delete rules[prop] } } }); $.each(rules, function (rule, parameter) { rules[rule] = $.isFunction(parameter) ? parameter(element) : parameter }); $.each(["minlength", "maxlength"], function () { if (rules[this]) { rules[this] = Number(rules[this]) } }); $.each(["rangelength", "range"], function () { var parts; if (rules[this]) { if ($.isArray(rules[this])) { rules[this] = [Number(rules[this][0]), Number(rules[this][1])] } else if (typeof rules[this] === "string") { parts = rules[this].replace(/[\[\]]/g, "").split(/[\s,]+/); rules[this] = [Number(parts[0]), Number(parts[1])] } } }); if ($.validator.autoCreateRanges) { if (rules.min != null && rules.max != null) { rules.range = [rules.min, rules.max]; delete rules.min; delete rules.max } if (rules.minlength != null && rules.maxlength != null) { rules.rangelength = [rules.minlength, rules.maxlength]; delete rules.minlength; delete rules.maxlength } } return rules }, normalizeRule: function (data) { if (typeof data === "string") { var transformed = {}; $.each(data.split(/\s/), function () { transformed[this] = true }); data = transformed } return data }, addMethod: function (name, method, message) { $.validator.methods[name] = method; $.validator.messages[name] = message !== undefined ? message : $.validator.messages[name]; if (method.length < 3) { $.validator.addClassRules(name, $.validator.normalizeRule(name)) } }, methods: { required: function (value, element, param) { if (!this.depend(param, element)) { return "dependency-mismatch" } if (element.nodeName.toLowerCase() === "select") { var val = $(element).val(); return val && val.length > 0 } if (this.checkable(element)) { return this.getLength(value, element) > 0 } return value.length > 0 }, email: function (value, element) { return this.optional(element) || /^[a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/.test(value) }, url: function (value, element) { return this.optional(element) || /^(?:(?:(?:https?|ftp):)?\/\/)(?:\S+(?::\S*)?@)?(?:(?!(?:10|127)(?:\.\d{1,3}){3})(?!(?:169\.254|192\.168)(?:\.\d{1,3}){2})(?!172\.(?:1[6-9]|2\d|3[0-1])(?:\.\d{1,3}){2})(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])(?:\.(?:1?\d{1,2}|2[0-4]\d|25[0-5])){2}(?:\.(?:[1-9]\d?|1\d\d|2[0-4]\d|25[0-4]))|(?:(?:[a-z\u00a1-\uffff0-9]-*)*[a-z\u00a1-\uffff0-9]+)(?:\.(?:[a-z\u00a1-\uffff0-9]-*)*[a-z\u00a1-\uffff0-9]+)*(?:\.(?:[a-z\u00a1-\uffff]{2,})).?)(?::\d{2,5})?(?:[/?#]\S*)?$/i.test(value) }, date: function (value, element) { return this.optional(element) || !/Invalid|NaN/.test(new Date(value).toString()) }, dateISO: function (value, element) { return this.optional(element) || /^\d{4}[\/\-](0?[1-9]|1[012])[\/\-](0?[1-9]|[12][0-9]|3[01])$/.test(value) }, number: function (value, element) { return this.optional(element) || /^(?:-?\d+|-?\d{1,3}(?:,\d{3})+)?(?:\.\d+)?$/.test(value) }, zNumber: function (value, element) { return this.optional(element) || /^[1-9]\d*$|^[1-9]\d*\.\d\d?$|^0\.\d\d?$/.test(value) }, zzNumber: function (value, element) { return this.optional(element) || /^[0-9]\d*$|^[1-9]\d*\.\d\d?$|^0\.\d\d?$/.test(value) }, urlname: function (value, element) { return this.optional(element) || /^[0-9A-Za-z]+?$/.test(value) }, phone: function (value, element) { return this.optional(element) || /^1\d{10}$/.test(value) }, digits: function (value, element) { return this.optional(element) || /^\d+$/.test(value) }, zDigits: function (value, element) { return this.optional(element) || /^[0-9]*[1-9][0-9]*$/.test(value) }, creditcard: function (value, element) { if (this.optional(element)) { return "dependency-mismatch" } if (/[^0-9 \-]+/.test(value)) { return false } var nCheck = 0, nDigit = 0, bEven = false, n, cDigit; value = value.replace(/\D/g, ""); if (value.length < 13 || value.length > 19) { return false } for (n = value.length - 1; n >= 0; n--) { cDigit = value.charAt(n); nDigit = parseInt(cDigit, 10); if (bEven) { if ((nDigit *= 2) > 9) { nDigit -= 9 } } nCheck += nDigit; bEven = !bEven } return (nCheck % 10) === 0 }, minlength: function (value, element, param) { var length = $.isArray(value) ? value.length : this.getLength(value, element); return this.optional(element) || length >= param }, maxlength: function (value, element, param) { var length = $.isArray(value) ? value.length : this.getLength(value, element); return this.optional(element) || length <= param }, rangelength: function (value, element, param) { var length = $.isArray(value) ? value.length : this.getLength(value, element); return this.optional(element) || (length >= param[0] && length <= param[1]) }, min: function (value, element, param) { return this.optional(element) || value >= param }, max: function (value, element, param) { return this.optional(element) || value <= param }, range: function (value, element, param) { return this.optional(element) || (value >= param[0] && value <= param[1]) }, equalTo: function (value, element, param) { var target = $(param); if (this.settings.onfocusout) { target.off(".validate-equalTo").on("blur.validate-equalTo", function () { $(element).valid() }) } return value === target.val() }, remote: function (value, element, param) { if (this.optional(element)) { return "dependency-mismatch" } var previous = this.previousValue(element), validator, data; if (!this.settings.messages[element.name]) { this.settings.messages[element.name] = {} } previous.originalMessage = this.settings.messages[element.name].remote; this.settings.messages[element.name].remote = previous.message; param = typeof param === "string" && { url: param } || param; if (previous.old === value) { return previous.valid } previous.old = value; validator = this; this.startRequest(element); data = {}; data[element.name] = value; $.ajax($.extend(true, { mode: "abort", port: "validate" + element.name, dataType: "json", data: data, context: validator.currentForm, success: function (response) { var valid = response === true || response === "true", errors, message, submitted; validator.settings.messages[element.name].remote = previous.originalMessage; if (valid) { submitted = validator.formSubmitted; validator.prepareElement(element); validator.formSubmitted = submitted; validator.successList.push(element); delete validator.invalid[element.name]; validator.showErrors() } else { errors = {}; message = response || validator.defaultMessage(element, "remote"); errors[element.name] = previous.message = $.isFunction(message) ? message(value) : message; validator.invalid[element.name] = true; validator.showErrors(errors) } previous.valid = valid; validator.stopRequest(element, valid) } }, param)); return "pending" } } }); var pendingRequests = {}, ajax; if ($.ajaxPrefilter) { $.ajaxPrefilter(function (settings, _, xhr) { var port = settings.port; if (settings.mode === "abort") { if (pendingRequests[port]) { pendingRequests[port].abort() } pendingRequests[port] = xhr } }) } else { ajax = $.ajax; $.ajax = function (settings) { var mode = ("mode" in settings ? settings : $.ajaxSettings).mode, port = ("port" in settings ? settings : $.ajaxSettings).port; if (mode === "abort") { if (pendingRequests[port]) { pendingRequests[port].abort() } pendingRequests[port] = ajax.apply(this, arguments); return pendingRequests[port] } return ajax.apply(this, arguments) } } })); // 菜单鼠标悬浮移动效果 (function () { //底部的菜单移动效果 $.fn.moveline = function (options, callback) { var _this = this; var $this = $(this); var defaultValue = { height: 2, //高度 position: '', //线条是显示在内部 inner是在内部 color: '#F65637', //颜色 animateTime: 500, //毫秒 animateType: 'easeOutBack', //动画效果 //没有引用jquery.easing.js 的话 为''就行。 zIndex: '1', //层级 top: 0, //自定义top customTop: false, //是否自定义top randomColor: false, //是否显示随机色线条 randomOpacity: 1, //透明度 click: function () { }, //点击菜单触发的效果 } var opt = $.extend(defaultValue, options || {}); $this.css({ position: 'relative', }); //li的margin 宽 var li_width = $this.children().outerWidth(); //li的margin 高 也是之后滚动线条的top值 var li_height = opt.position === 'inner' ? $this.children().outerHeight() - opt.height : $this.children().outerHeight(); //红线的left位置 var li_left = $this.children().position().left; //li的margin left var li_marginLeft = Number($this.children().css('margin-left').replace(/[^0-9]+/g, '')); //是否显示随机颜色 var randomColor = function () { var opacity = opt.randomOpacity || 1; var r = Math.floor(Math.random() * 256); var g = Math.floor(Math.random() * 256); var b = Math.floor(Math.random() * 256); return "rgba(" + r + ',' + g + ',' + b + ',' + opacity + ")"; }; var color = opt.randomColor ? randomColor() : opt.color; if (opt.customTop) li_height = opt.top; var zIndex = opt.height > 5 ? '-1' : opt.zIndex; // 定义底部滚动线条 _this.moveLineDiv = $('').css({ 'position': 'absolute', 'height': opt.height, 'background': color, 'top': li_height, 'z-index': zIndex, }).appendTo($this); //判断li中有active 的索引 并获取其left的值 for (var i = 0; i < $this.children().length; i++) { if ($this.children().eq(i).hasClass('active')) { li_left = $this.children().eq(i).position().left; li_width = $this.children().eq(i).outerWidth(); } } // 初始化红线进去 _this.moveLineDiv.stop().animate({ width: li_width, left: li_left + li_marginLeft }, opt.animateTime, opt.animateType); //红线的hover效果 $this.children().hover(function () { var li_marginLeft = Number($this.children().css('margin-left').replace(/[^0-9]+/g, '')); var li_width = $(this).outerWidth(); var li_left = $(this).position().left; _this.moveLineDiv.stop().animate({ width: li_width, left: li_left + li_marginLeft }, opt.animateTime, opt.animateType); }, function () { for (var i = 0; i < $this.children().length; i++) { if ($this.children().eq(i).hasClass('active')) { li_left = $this.children().eq(i).position().left; li_width = $this.children().eq(i).outerWidth(); } } _this.moveLineDiv.stop().animate({ width: li_width, left: li_left + li_marginLeft }, opt.animateTime); }); $this.children().on('click', function () { var ret = { ele: $(this), index: $(this).index(), } opt.click(ret); //未写回调函数则不会有效果 // if(typeof(callback) === 'function'){ // callback(ret); // }else{ // console.error('You need a click event callback function, which needs to be written in the callback after defining the plugin!'); // } }); return _this; } })(jQuery) var baguetteBox = function () { function t(t, n) { L.transforms = f(), L.svg = p(), e(), D = document.querySelectorAll(t), [].forEach.call(D, function (t) { var e = t.getElementsByTagName("a"); e = [].filter.call(e, function (t) { return j.test(t.href) }); var o = S.length; S.push(e), S[o].options = n, [].forEach.call(S[o], function (t, e) { h(t, "click", function (t) { t.preventDefault ? t.preventDefault() : t.returnValue = !1, i(o), a(e) }) }) }) } function e() { return (b = v("baguetteBox-overlay")) ? (k = v("baguetteBox-slider"), w = v("previous-button"), C = v("next-button"), void (T = v("close-button"))) : (b = y("div"), b.id = "baguetteBox-overlay", document.getElementsByTagName("body")[0].appendChild(b), k = y("div"), k.id = "baguetteBox-slider", b.appendChild(k), w = y("button"), w.id = "previous-button", w.innerHTML = L.svg ? E : "<", b.appendChild(w), C = y("button"), C.id = "next-button", C.innerHTML = L.svg ? x : ">", b.appendChild(C), T = y("button"), T.id = "close-button", T.innerHTML = L.svg ? B : "X", b.appendChild(T), w.className = C.className = T.className = "baguetteBox-button", void n()) } function n() { h(b, "click", function (t) { t.target && "IMG" !== t.target.nodeName && "FIGCAPTION" !== t.target.nodeName && s() }), h(w, "click", function (t) { t.stopPropagation ? t.stopPropagation() : t.cancelBubble = !0, c() }), h(C, "click", function (t) { t.stopPropagation ? t.stopPropagation() : t.cancelBubble = !0, u() }), h(T, "click", function (t) { t.stopPropagation ? t.stopPropagation() : t.cancelBubble = !0, s() }), h(b, "touchstart", function (t) { N = t.changedTouches[0].pageX }), h(b, "touchmove", function (t) { H || (t.preventDefault ? t.preventDefault() : t.returnValue = !1, touch = t.touches[0] || t.changedTouches[0], touch.pageX - N > 40 ? (H = !0, c()) : touch.pageX - N < -40 && (H = !0, u())) }), h(b, "touchend", function () { H = !1 }), h(document, "keydown", function (t) { switch (t.keyCode) { case 37: c(); break; case 39: u(); break; case 27: s() } }) } function i(t) { if (A !== t) { for (A = t, o(S[t].options); k.firstChild;)k.removeChild(k.firstChild); X.length = 0; for (var e, n = 0; n < S[t].length; n++)e = y("div"), e.className = "full-image", e.id = "baguette-img-" + n, X.push(e), k.appendChild(X[n]) } } function o(t) { t || (t = {}); for (var e in P) I[e] = P[e], "undefined" != typeof t[e] && (I[e] = t[e]); k.style.transition = k.style.webkitTransition = "fadeIn" === I.animation ? "opacity .4s ease" : "slideIn" === I.animation ? "" : "none", "auto" === I.buttons && ("ontouchstart" in window || 1 === S[A].length) && (I.buttons = !1), w.style.display = C.style.display = I.buttons ? "" : "none" } function a(t) { "block" !== b.style.display && (M = t, r(M, function () { g(M), m(M) }), d(), b.style.display = "block", setTimeout(function () { b.className = "visible" }, 50)) } function s() { "none" !== b.style.display && (b.className = "", setTimeout(function () { b.style.display = "none" }, 500)) } function r(t, e) { var n = X[t]; if ("undefined" != typeof n) { if (n.getElementsByTagName("img")[0]) return void (e && e()); imageElement = S[A][t], imageCaption = imageElement.getAttribute("data-caption") || imageElement.title, imageSrc = l(imageElement); var i = y("figure"), o = y("img"), a = y("figcaption"); n.appendChild(i), i.innerHTML = '
', o.onload = function () { var n = document.querySelector("#baguette-img-" + t + " .spinner"); i.removeChild(n), !I.async && e && e() }, o.setAttribute("src", imageSrc), i.appendChild(o), I.captions && imageCaption && (a.innerHTML = imageCaption, i.appendChild(a)), I.async && e && e() } } function l(t) { var e = imageElement.href; if (t.dataset) { var n = []; for (var i in t.dataset) "at-" !== i.substring(0, 3) || isNaN(i.substring(3)) || (n[i.replace("at-", "")] = t.dataset[i]); keys = Object.keys(n).sort(function (t, e) { return parseInt(t) < parseInt(e) ? -1 : 1 }); for (var o = window.innerWidth * window.devicePixelRatio, a = 0; a < keys.length - 1 && keys[a] < o;)a++; e = n[keys[a]] || e } return e } function u() { M <= X.length - 2 ? (M++ , d(), g(M)) : I.animation && (k.className = "bounce-from-right", setTimeout(function () { k.className = "" }, 400)) } function c() { M >= 1 ? (M-- , d(), m(M)) : I.animation && (k.className = "bounce-from-left", setTimeout(function () { k.className = "" }, 400)) } function d() { var t = 100 * -M + "%"; "fadeIn" === I.animation ? (k.style.opacity = 0, setTimeout(function () { L.transforms ? k.style.transform = k.style.webkitTransform = "translate3d(" + t + ",0,0)" : k.style.left = t, k.style.opacity = 1 }, 400)) : L.transforms ? k.style.transform = k.style.webkitTransform = "translate3d(" + t + ",0,0)" : k.style.left = t } function f() { var t = y("div"); return "undefined" != typeof t.style.perspective || "undefined" != typeof t.style.webkitPerspective } function p() { var t = y("div"); return t.innerHTML = "", "http://www.w3.org/2000/svg" == (t.firstChild && t.firstChild.namespaceURI) } function g(t) { t - M >= I.preload || r(t + 1, function () { g(t + 1) }) } function m(t) { M - t >= I.preload || r(t - 1, function () { m(t - 1) }) } function h(t, e, n) { t.addEventListener ? t.addEventListener(e, n, !1) : t.attachEvent("on" + e, n) } function v(t) { return document.getElementById(t) } function y(t) { return document.createElement(t) } var b, k, w, C, T, N, E = '', x = '', B = '', I = {}, P = { captions: !0, buttons: "auto", async: !1, preload: 2, animation: "slideIn" }, L = {}, M = 0, A = -1, H = !1, j = /.+\.(gif|jpe?g|png|webp)/i, D = [], S = [], X = []; return [].forEach || (Array.prototype.forEach = function (t, e) { for (var n = 0; n < this.length; n++)t.call(e, this[n], n, this) }), [].filter || (Array.prototype.filter = function (t, e, n, i, o) { for (n = this, i = [], o = 0; o < n.length; o++)t.call(e, n[o], o, n) && i.push(n[o]); return i }), { run: t } }();