{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///lib/carousel.min.js","webpack:///webpack/bootstrap b2028da99470d405557c","webpack:///./~/vue-loader/lib/component-normalizer.js","webpack:///./~/swiper/dist/js/swiper.js","webpack:///./src/components/carousel.vue?c780","webpack:///./src/lib.js","webpack:///slide.vue","webpack:///swiper.vue","webpack:///carousel.vue","webpack:///./~/vue-awesome-swiper/index.js","webpack:///./~/vue-awesome-swiper/src/slide.vue","webpack:///./~/vue-awesome-swiper/src/swiper.vue","webpack:///./src/components/carousel.vue?40fc","webpack:///./~/vue-awesome-swiper/src/slide.vue?715a","webpack:///./~/vue-awesome-swiper/src/swiper.vue?a690"],"names":["root","factory","exports","module","define","amd","this","modules","__webpack_require__","moduleId","installedModules","i","l","call","m","c","value","d","name","getter","o","Object","defineProperty","configurable","enumerable","get","n","__esModule","object","property","prototype","hasOwnProperty","p","s","rawScriptExports","compiledTemplate","injectStyles","scopeId","moduleIdentifier","esModule","scriptExports","type","default","options","render","staticRenderFns","_scopeId","hook","context","$vnode","ssrContext","parent","__VUE_SSR_CONTEXT__","_registeredComponents","add","_ssrRegister","functional","existing","beforeCreate","h","concat","$","Swiper","container","params","round","a","Math","floor","autoplay","autoplayDelay","activeSlide","slides","eq","activeIndex","attr","autoplayTimeoutId","setTimeout","loop","fixLoop","_slideNext","emit","isEnd","autoplayStopOnLast","stopAutoplay","_slideTo","findElementInEvent","e","selector","el","target","is","parents","nodeType","found","each","index","_el","length","initObserver","ObserverFunc","window","MutationObserver","WebkitMutationObserver","observer","mutations","forEach","mutation","onResize","observe","attributes","childList","characterData","observers","push","handleKeyboard","originalEvent","kc","keyCode","charCode","allowSwipeToNext","isHorizontal","allowSwipeToPrev","shiftKey","altKey","ctrlKey","metaKey","document","activeElement","nodeName","toLowerCase","inView","slideClass","slideActiveClass","windowScroll","left","pageXOffset","top","pageYOffset","windowWidth","innerWidth","windowHeight","innerHeight","swiperOffset","offset","rtl","scrollLeft","swiperCoord","width","height","point","preventDefault","returnValue","slideNext","slidePrev","normalizeWheel","event","sX","sY","pX","pY","detail","wheelDelta","wheelDeltaY","wheelDeltaX","axis","HORIZONTAL_AXIS","deltaY","deltaX","deltaMode","spinX","spinY","pixelX","pixelY","handleMousewheel","delta","rtlFactor","data","mousewheelForceToAxis","abs","mousewheelInvert","freeMode","position","getWrapperTranslate","mousewheelSensitivity","wasBeginning","isBeginning","wasEnd","minTranslate","maxTranslate","setWrapperTransition","setWrapperTranslate","updateProgress","updateActiveIndex","updateClasses","freeModeSticky","clearTimeout","mousewheel","timeout","slideReset","lazyLoading","lazy","load","autoplayDisableOnInteraction","Date","getTime","lastScrollTime","animating","mousewheelReleaseOnEdges","setParallaxTransform","progress","indexOf","parseInt","transform","normalizeEventName","eventName","toUpperCase","substring","defaults","direction","touchEventsTarget","initialSlide","speed","iOSEdgeSwipeDetection","iOSEdgeSwipeThreshold","freeModeMomentum","freeModeMomentumRatio","freeModeMomentumBounce","freeModeMomentumBounceRatio","freeModeMomentumVelocityRatio","freeModeMinimumVelocity","autoHeight","setWrapperSize","virtualTranslate","effect","coverflow","rotate","stretch","depth","modifier","slideShadows","flip","limitRotation","cube","shadow","shadowOffset","shadowScale","fade","crossFade","parallax","zoom","zoomMax","zoomMin","zoomToggle","scrollbar","scrollbarHide","scrollbarDraggable","scrollbarSnapOnRelease","keyboardControl","mousewheelControl","mousewheelEventsTarged","hashnav","hashnavWatchState","history","replaceState","breakpoints","undefined","spaceBetween","slidesPerView","slidesPerColumn","slidesPerColumnFill","slidesPerGroup","centeredSlides","slidesOffsetBefore","slidesOffsetAfter","roundLengths","touchRatio","touchAngle","simulateTouch","shortSwipes","longSwipes","longSwipesRatio","longSwipesMs","followFinger","onlyExternal","threshold","touchMoveStopPropagation","touchReleaseOnEdges","uniqueNavElements","pagination","paginationElement","paginationClickable","paginationHide","paginationBulletRender","paginationProgressRender","paginationFractionRender","paginationCustomRender","paginationType","resistance","resistanceRatio","nextButton","prevButton","watchSlidesProgress","watchSlidesVisibility","grabCursor","preventClicks","preventClicksPropagation","slideToClickedSlide","lazyLoadingInPrevNext","lazyLoadingInPrevNextAmount","lazyLoadingOnTransitionStart","preloadImages","updateOnImagesReady","loopAdditionalSlides","loopedSlides","control","controlInverse","controlBy","normalizeSlideIndex","swipeHandler","noSwiping","noSwipingClass","passiveListeners","containerModifierClass","slideDuplicateActiveClass","slideVisibleClass","slideDuplicateClass","slideNextClass","slideDuplicateNextClass","slidePrevClass","slideDuplicatePrevClass","wrapperClass","bulletClass","bulletActiveClass","buttonDisabledClass","paginationCurrentClass","paginationTotalClass","paginationHiddenClass","paginationProgressbarClass","paginationClickableClass","paginationModifierClass","lazyLoadingClass","lazyStatusLoadingClass","lazyStatusLoadedClass","lazyPreloaderClass","notificationClass","preloaderClass","zoomContainerClass","observeParents","a11y","prevSlideMessage","nextSlideMessage","firstSlideMessage","lastSlideMessage","paginationBulletMessage","runCallbacksOnInit","initialVirtualTranslate","originalParams","param","Dom7","jQuery","deepParam","def","deepDef","classNames","Zepto","currentBreakpoint","getActiveBreakpoint","breakpoint","points","sort","b","setBreakpoint","breakPointsParams","needsReLoop","destroyLoop","reLoop","swipers","swiper","support","flexbox","transforms3d","touch","wrapper","children","paginationContainer","find","addClass","dir","css","wrongRTL","device","android","join","translate","velocity","lockSwipeToNext","unsetGrabCursor","lockSwipeToPrev","lockSwipes","unlockSwipeToNext","setGrabCursor","unlockSwipeToPrev","unlockSwipes","moving","style","cursor","imagesToLoad","imagesLoaded","loadImage","imgElement","src","srcset","sizes","checkForComplete","callback","onReady","image","complete","Image","onload","onerror","_onReady","update","currentSrc","getAttribute","autoplaying","autoplayPaused","startAutoplay","internal","pauseAutoplay","transitionEnd","snapGrid","updateAutoHeight","activeSlides","newHeight","ceil","offsetHeight","updateContainerSize","clientWidth","clientHeight","size","updateSlidesSize","slidesGrid","slidesSizesGrid","slidePosition","prevSlideSize","parseFloat","replace","virtualSize","marginLeft","marginTop","marginRight","marginBottom","slidesNumberEvenToRows","max","slideSize","slidesPerRow","numFullColumns","slide","newSlideOrderIndex","column","row","-webkit-box-ordinal-group","-moz-box-ordinal-group","-ms-flex-order","-webkit-order","order","outerWidth","outerHeight","swiperSlideSize","newSlidesGrid","updateSlidesOffset","swiperSlideOffset","offsetLeft","offsetTop","currentSlidesPerView","j","spv","breakLoop","updateSlidesProgress","offsetCenter","removeClass","slideProgress","slideBefore","slideAfter","translatesDiff","newActiveIndex","snapIndex","previousIndex","updateRealIndex","realIndex","hasClass","nextSlide","next","prevSlide","prev","current","total","bullets","text","scale","scaleX","scaleY","transition","html","disable","enable","updatePagination","paginationHTML","numberOfBullets","initPagination","updateTranslate","forceSetTranslate","newTranslate","min","set","controller","spline","slideTo","forceUpdatePagination","onBeforeResize","slideChangedBySlideTo","onAfterResize","touchEventsDesktop","start","move","end","navigator","pointerEnabled","msPointerEnabled","touchEvents","initEvents","detach","actionDom","action","moveCapture","nested","browser","ie","onTouchStart","onTouchMove","onTouchEnd","passiveListener","passive","capture","ios","onClickNext","onEnterKey","onClickPrev","onClickIndex","attachEvents","detachEvents","allowClick","stopPropagation","stopImmediatePropagation","updateClickedSlide","slideFound","clickedSlide","clickedIndex","slideToIndex","isTouched","isMoved","allowTouchCallbacks","touchStartTime","isScrolling","currentTranslate","startTranslate","allowThresholdMove","clickTimeout","allowMomentumBounce","formElements","lastClickTime","now","velocities","touches","startX","startY","currentX","currentY","diff","isTouchEvent","startMoving","which","targetTouches","pageX","pageY","swipeDirection","blur","preventedByNestedSwiper","atan2","PI","trigger","disableParentSwiper","pow","time","touchEndTime","timeDiff","toggleClass","currentPos","lastMoveEvent","pop","velocityEvent","distance","momentumDuration","momentumDistance","newPosition","afterBouncePosition","doBounce","bounceAmount","onTransitionStart","onTransitionEnd","stopIndex","groupSize","ratio","slideIndex","runCallbacks","lteIE9","setHistory","setHash","clientLeft","_slidePrev","disableTouchControl","enableTouchControl","duration","byController","effects","setTransition","x","y","setTranslate","getTranslate","matrix","curTransform","curStyle","transformMatrix","getComputedStyle","WebKitCSSMatrix","webkitTransform","split","map","MozTransform","OTransform","MsTransform","msTransform","getPropertyValue","toString","m41","m42","initObservers","containerParents","disconnectObservers","disconnect","createLoop","remove","prependSlides","appendSlides","append","cloneNode","prepend","removeAttr","updatePosition","oldIndex","newIndex","appendSlide","prependSlide","removeSlide","slidesIndexes","indexToRemove","removeAllSlides","tx","ty","slideOpacity","opacity","eventTriggered","triggerEvents","rotateY","rotateX","zIndex","shadowBefore","shadowAfter","cubeShadow","wrapperRotate","slideAngle","tz","-webkit-transform-origin","-moz-transform-origin","-ms-transform-origin","transform-origin","shadowAngle","multiplier","sin","cos","scale1","scale2","zFactor","isSafari","isUiWebView","center","slideOffset","offsetMultiplier","translateZ","translateY","translateX","slideTransform","perspectiveOrigin","initialImageLoaded","loadImageInSlide","loadInDuplicate","img","_img","background","slideOriginalIndex","originalSlide","duplicatedSlide","amount","maxIndex","minIndex","setDragPosition","sb","pointerPosition","clientX","clientY","track","dragSize","positionMin","moveDivider","positionMax","dragStart","dragTimeout","drag","dragMove","dragEnd","draggableEvents","enableDraggable","on","disableDraggable","off","trackSize","offsetWidth","divider","display","newPos","newSize","LinearSpline","binarySearch","guess","array","val","lastIndex","i1","i3","interpolate","x2","getInterpolateFunction","setControlledTranslate","controlledTranslate","controlled","Array","isArray","setControlledTransition","onHashCange","newHash","location","hash","initialized","init","slideHash","destroy","pushState","paths","getPathValues","key","scrollToSlide","addEventListener","setHistoryPopState","pathArray","pathname","slice","slugify","includes","slideHistory","disableKeyboardControl","enableKeyboardControl","userAgent","isSupported","element","createElement","setAttribute","implementation","hasFeature","disableMousewheelControl","enableMousewheelControl","parallaxDuration","currentScale","isScaling","gesture","slideWidth","slideHeight","imageWrap","minX","minY","maxX","maxY","touchesStart","touchesCurrent","prevPositionX","prevPositionY","prevTime","getDistanceBetweenTouches","x1","y1","y2","sqrt","onGestureStart","z","gestures","scaleStart","onGestureChange","scaleMove","onGestureEnd","changedTouches","os","scaledWidth","scaledHeight","momentumDurationX","momentumDurationY","momentumDistanceX","newPositionX","momentumDistanceY","newPositionY","toggleZoom","touchX","touchY","offsetX","offsetY","diffX","diffY","imageWidth","imageHeight","translateMinX","translateMinY","translateMaxX","translateMaxY","_plugins","plugin","plugins","callPlugins","arguments","emitterEventListeners","handler","splice","once","_handler","makeFocusable","$el","addRole","role","addLabel","label","notify","click","liveRegion","message","notification","bullet","hashnavReplaceState","cleanupStyles","deleteInstance","removeEventListener","ua","test","arr","apply","ieTouch","msMaxTouchPoints","maxTouchPoints","div","innerHTML","getElementsByTagName","match","ipad","ipod","iphone","Modernizr","DocumentTouch","csstransforms3d","styles","supportsPassive","opts","_this","els","tempParent","trim","toCreate","childNodes","querySelectorAll","getElementById","className","classes","classList","contains","toggle","attrs","attrName","removeAttribute","dom7ElementDataStorage","dataKey","elStyle","webkitTransitionDuration","MsTransitionDuration","msTransitionDuration","MozTransitionDuration","OTransitionDuration","transitionDuration","targetSelector","listener","handleLiveEvent","k","events","dom7LiveListeners","liveListener","proxy","dom","eventData","evt","CustomEvent","bubbles","cancelable","createEvent","initEvent","dispatchEvent","fireCallBack","includeMargins","box","getBoundingClientRect","body","clientTop","scrollTop","props","prop","textContent","compareWith","matches","webkitMatchesSelector","mozMatchesSelector","msMatchesSelector","child","previousSibling","returnIndex","newChild","tempDiv","firstChild","appendChild","insertBefore","before","parentNode","insertAfter","after","nextSibling","nextElementSibling","nextAll","nextEls","previousElementSibling","prevAll","prevEls","unique","foundElements","removeChild","toAdd","fn","swiperDomPlugins","lib","firstInstance","domLib","injectStyle","Component","__webpack_exports__","__WEBPACK_IMPORTED_MODULE_0__components_carousel_vue__","__WEBPACK_IMPORTED_MODULE_0__components_carousel_vue___default","__WEBPACK_IMPORTED_MODULE_1__styles_lib_scss__","Vue","VueResource","use","arkWidgetCarousel","Init","inputData","carousel","config","created","console","log","ready","mounted","$parent","updated","attached","methods","notNextTick","Boolean","defaultSwiperClasses","self","mount","setClassName","mountInstance","$nextTick","beforeDestroy","__WEBPACK_IMPORTED_MODULE_0_vue_awesome_swiper__","inherit","components","swiperSlide","locale","alwaysShowNav","swiperOption","swiperSlidesIds","swiperSlides","swiperCarouselWidth","updateCarousel","handleWindowResize","computed","$refs","mySwiper","swiperCarouselHeight","http","backUrl","headers","X-CDN-Target-Host","arenaName","then","response","platform","contents","filter","item","settings","getAllIds","ark","triggerEvent","error","getImg","assets","url","res","externalId","getImpressionDimensionsAttribute","getClickDimensionsAttribute","gameId","swiperCarousel","handleGameClick","game","href","getGameUrl","pageName","SwiperComponent","SlideComponent","swiperPlugins","install","component","_vm","_h","$createElement","_c","_self","ref","staticClass","xmlns","viewBox","cx","cy","r","_v","_e","ark-ga-track","ark-ga-track-category","ark-ga-track-dimensions","ark-ga-track-condition","_l","$event","alt","_s","play","slot","class","swiper-button-always-show","_t"],"mappings":"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","file":"lib/carousel.min.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"carousel\"] = factory();\n\telse\n\t\troot[\"carousel\"] = factory();\n})(this, function() {\nreturn \n\n\n// WEBPACK FOOTER //\n// webpack/universalModuleDefinition","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"carousel\"] = factory();\n\telse\n\t\troot[\"carousel\"] = factory();\n})(this, function() {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// identity function for calling harmony imports with the correct context\n/******/ \t__webpack_require__.i = function(value) { return value; };\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, {\n/******/ \t\t\t\tconfigurable: false,\n/******/ \t\t\t\tenumerable: true,\n/******/ \t\t\t\tget: getter\n/******/ \t\t\t});\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"/carousel/dist\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 4);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports) {\n\n/* globals __VUE_SSR_CONTEXT__ */\n\n// this module is a runtime utility for cleaner component module output and will\n// be included in the final webpack user bundle\n\nmodule.exports = function normalizeComponent (\n rawScriptExports,\n compiledTemplate,\n injectStyles,\n scopeId,\n moduleIdentifier /* server only */\n) {\n var esModule\n var scriptExports = rawScriptExports = rawScriptExports || {}\n\n // ES6 modules interop\n var type = typeof rawScriptExports.default\n if (type === 'object' || type === 'function') {\n esModule = rawScriptExports\n scriptExports = rawScriptExports.default\n }\n\n // Vue.extend constructor export interop\n var options = typeof scriptExports === 'function'\n ? scriptExports.options\n : scriptExports\n\n // render functions\n if (compiledTemplate) {\n options.render = compiledTemplate.render\n options.staticRenderFns = compiledTemplate.staticRenderFns\n }\n\n // scopedId\n if (scopeId) {\n options._scopeId = scopeId\n }\n\n var hook\n if (moduleIdentifier) { // server build\n hook = function (context) {\n // 2.3 injection\n context =\n context || // cached call\n (this.$vnode && this.$vnode.ssrContext) || // stateful\n (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional\n // 2.2 with runInNewContext: true\n if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\n context = __VUE_SSR_CONTEXT__\n }\n // inject component styles\n if (injectStyles) {\n injectStyles.call(this, context)\n }\n // register component module identifier for async chunk inferrence\n if (context && context._registeredComponents) {\n context._registeredComponents.add(moduleIdentifier)\n }\n }\n // used by ssr in case component is cached and beforeCreate\n // never gets called\n options._ssrRegister = hook\n } else if (injectStyles) {\n hook = injectStyles\n }\n\n if (hook) {\n var functional = options.functional\n var existing = functional\n ? options.render\n : options.beforeCreate\n if (!functional) {\n // inject component registration as beforeCreate hook\n options.beforeCreate = existing\n ? [].concat(existing, hook)\n : [hook]\n } else {\n // register for functioal component in vue file\n options.render = function renderWithStyleInjection (h, context) {\n hook.call(context)\n return existing(h, context)\n }\n }\n }\n\n return {\n esModule: esModule,\n exports: scriptExports,\n options: options\n }\n}\n\n\n/***/ }),\n/* 1 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/**\n * Swiper 3.4.2\n * Most modern mobile touch slider and framework with hardware accelerated transitions\n * \n * http://www.idangero.us/swiper/\n * \n * Copyright 2017, Vladimir Kharlampidi\n * The iDangero.us\n * http://www.idangero.us/\n * \n * Licensed under MIT\n * \n * Released on: March 10, 2017\n */\n(function () {\n 'use strict';\n var $;\n\n /*===========================\n Swiper\n ===========================*/\n var Swiper = function (container, params) {\n if (!(this instanceof Swiper)) return new Swiper(container, params);\n \n\n var defaults = {\n direction: 'horizontal',\n touchEventsTarget: 'container',\n initialSlide: 0,\n speed: 300,\n // autoplay\n autoplay: false,\n autoplayDisableOnInteraction: true,\n autoplayStopOnLast: false,\n // To support iOS's swipe-to-go-back gesture (when being used in-app, with UIWebView).\n iOSEdgeSwipeDetection: false,\n iOSEdgeSwipeThreshold: 20,\n // Free mode\n freeMode: false,\n freeModeMomentum: true,\n freeModeMomentumRatio: 1,\n freeModeMomentumBounce: true,\n freeModeMomentumBounceRatio: 1,\n freeModeMomentumVelocityRatio: 1,\n freeModeSticky: false,\n freeModeMinimumVelocity: 0.02,\n // Autoheight\n autoHeight: false,\n // Set wrapper width\n setWrapperSize: false,\n // Virtual Translate\n virtualTranslate: false,\n // Effects\n effect: 'slide', // 'slide' or 'fade' or 'cube' or 'coverflow' or 'flip'\n coverflow: {\n rotate: 50,\n stretch: 0,\n depth: 100,\n modifier: 1,\n slideShadows : true\n },\n flip: {\n slideShadows : true,\n limitRotation: true\n },\n cube: {\n slideShadows: true,\n shadow: true,\n shadowOffset: 20,\n shadowScale: 0.94\n },\n fade: {\n crossFade: false\n },\n // Parallax\n parallax: false,\n // Zoom\n zoom: false,\n zoomMax: 3,\n zoomMin: 1,\n zoomToggle: true,\n // Scrollbar\n scrollbar: null,\n scrollbarHide: true,\n scrollbarDraggable: false,\n scrollbarSnapOnRelease: false,\n // Keyboard Mousewheel\n keyboardControl: false,\n mousewheelControl: false,\n mousewheelReleaseOnEdges: false,\n mousewheelInvert: false,\n mousewheelForceToAxis: false,\n mousewheelSensitivity: 1,\n mousewheelEventsTarged: 'container',\n // Hash Navigation\n hashnav: false,\n hashnavWatchState: false,\n // History\n history: false,\n // Commong Nav State\n replaceState: false,\n // Breakpoints\n breakpoints: undefined,\n // Slides grid\n spaceBetween: 0,\n slidesPerView: 1,\n slidesPerColumn: 1,\n slidesPerColumnFill: 'column',\n slidesPerGroup: 1,\n centeredSlides: false,\n slidesOffsetBefore: 0, // in px\n slidesOffsetAfter: 0, // in px\n // Round length\n roundLengths: false,\n // Touches\n touchRatio: 1,\n touchAngle: 45,\n simulateTouch: true,\n shortSwipes: true,\n longSwipes: true,\n longSwipesRatio: 0.5,\n longSwipesMs: 300,\n followFinger: true,\n onlyExternal: false,\n threshold: 0,\n touchMoveStopPropagation: true,\n touchReleaseOnEdges: false,\n // Unique Navigation Elements\n uniqueNavElements: true,\n // Pagination\n pagination: null,\n paginationElement: 'span',\n paginationClickable: false,\n paginationHide: false,\n paginationBulletRender: null,\n paginationProgressRender: null,\n paginationFractionRender: null,\n paginationCustomRender: null,\n paginationType: 'bullets', // 'bullets' or 'progress' or 'fraction' or 'custom'\n // Resistance\n resistance: true,\n resistanceRatio: 0.85,\n // Next/prev buttons\n nextButton: null,\n prevButton: null,\n // Progress\n watchSlidesProgress: false,\n watchSlidesVisibility: false,\n // Cursor\n grabCursor: false,\n // Clicks\n preventClicks: true,\n preventClicksPropagation: true,\n slideToClickedSlide: false,\n // Lazy Loading\n lazyLoading: false,\n lazyLoadingInPrevNext: false,\n lazyLoadingInPrevNextAmount: 1,\n lazyLoadingOnTransitionStart: false,\n // Images\n preloadImages: true,\n updateOnImagesReady: true,\n // loop\n loop: false,\n loopAdditionalSlides: 0,\n loopedSlides: null,\n // Control\n control: undefined,\n controlInverse: false,\n controlBy: 'slide', //or 'container'\n normalizeSlideIndex: true,\n // Swiping/no swiping\n allowSwipeToPrev: true,\n allowSwipeToNext: true,\n swipeHandler: null, //'.swipe-handler',\n noSwiping: true,\n noSwipingClass: 'swiper-no-swiping',\n // Passive Listeners\n passiveListeners: true,\n // NS\n containerModifierClass: 'swiper-container-', // NEW\n slideClass: 'swiper-slide',\n slideActiveClass: 'swiper-slide-active',\n slideDuplicateActiveClass: 'swiper-slide-duplicate-active',\n slideVisibleClass: 'swiper-slide-visible',\n slideDuplicateClass: 'swiper-slide-duplicate',\n slideNextClass: 'swiper-slide-next',\n slideDuplicateNextClass: 'swiper-slide-duplicate-next',\n slidePrevClass: 'swiper-slide-prev',\n slideDuplicatePrevClass: 'swiper-slide-duplicate-prev',\n wrapperClass: 'swiper-wrapper',\n bulletClass: 'swiper-pagination-bullet',\n bulletActiveClass: 'swiper-pagination-bullet-active',\n buttonDisabledClass: 'swiper-button-disabled',\n paginationCurrentClass: 'swiper-pagination-current',\n paginationTotalClass: 'swiper-pagination-total',\n paginationHiddenClass: 'swiper-pagination-hidden',\n paginationProgressbarClass: 'swiper-pagination-progressbar',\n paginationClickableClass: 'swiper-pagination-clickable', // NEW\n paginationModifierClass: 'swiper-pagination-', // NEW\n lazyLoadingClass: 'swiper-lazy',\n lazyStatusLoadingClass: 'swiper-lazy-loading',\n lazyStatusLoadedClass: 'swiper-lazy-loaded',\n lazyPreloaderClass: 'swiper-lazy-preloader',\n notificationClass: 'swiper-notification',\n preloaderClass: 'preloader',\n zoomContainerClass: 'swiper-zoom-container',\n \n // Observer\n observer: false,\n observeParents: false,\n // Accessibility\n a11y: false,\n prevSlideMessage: 'Previous slide',\n nextSlideMessage: 'Next slide',\n firstSlideMessage: 'This is the first slide',\n lastSlideMessage: 'This is the last slide',\n paginationBulletMessage: 'Go to slide {{index}}',\n // Callbacks\n runCallbacksOnInit: true\n /*\n Callbacks:\n onInit: function (swiper)\n onDestroy: function (swiper)\n onBeforeResize: function (swiper)\n onAfterResize: function (swiper)\n onClick: function (swiper, e)\n onTap: function (swiper, e)\n onDoubleTap: function (swiper, e)\n onSliderMove: function (swiper, e)\n onSlideChangeStart: function (swiper)\n onSlideChangeEnd: function (swiper)\n onTransitionStart: function (swiper)\n onTransitionEnd: function (swiper)\n onImagesReady: function (swiper)\n onProgress: function (swiper, progress)\n onTouchStart: function (swiper, e)\n onTouchMove: function (swiper, e)\n onTouchMoveOpposite: function (swiper, e)\n onTouchEnd: function (swiper, e)\n onReachBeginning: function (swiper)\n onReachEnd: function (swiper)\n onSetTransition: function (swiper, duration)\n onSetTranslate: function (swiper, translate)\n onAutoplayStart: function (swiper)\n onAutoplayStop: function (swiper),\n onLazyImageLoad: function (swiper, slide, image)\n onLazyImageReady: function (swiper, slide, image)\n onKeyPress: function (swiper, keyCode)\n */\n \n };\n var initialVirtualTranslate = params && params.virtualTranslate;\n \n params = params || {};\n var originalParams = {};\n for (var param in params) {\n if (typeof params[param] === 'object' && params[param] !== null && !(params[param].nodeType || params[param] === window || params[param] === document || (typeof Dom7 !== 'undefined' && params[param] instanceof Dom7) || (typeof jQuery !== 'undefined' && params[param] instanceof jQuery))) {\n originalParams[param] = {};\n for (var deepParam in params[param]) {\n originalParams[param][deepParam] = params[param][deepParam];\n }\n }\n else {\n originalParams[param] = params[param];\n }\n }\n for (var def in defaults) {\n if (typeof params[def] === 'undefined') {\n params[def] = defaults[def];\n }\n else if (typeof params[def] === 'object') {\n for (var deepDef in defaults[def]) {\n if (typeof params[def][deepDef] === 'undefined') {\n params[def][deepDef] = defaults[def][deepDef];\n }\n }\n }\n }\n \n // Swiper\n var s = this;\n \n // Params\n s.params = params;\n s.originalParams = originalParams;\n \n // Classname\n s.classNames = [];\n /*=========================\n Dom Library and plugins\n ===========================*/\n if (typeof $ !== 'undefined' && typeof Dom7 !== 'undefined'){\n $ = Dom7;\n }\n if (typeof $ === 'undefined') {\n if (typeof Dom7 === 'undefined') {\n $ = window.Dom7 || window.Zepto || window.jQuery;\n }\n else {\n $ = Dom7;\n }\n if (!$) return;\n }\n // Export it to Swiper instance\n s.$ = $;\n \n /*=========================\n Breakpoints\n ===========================*/\n s.currentBreakpoint = undefined;\n s.getActiveBreakpoint = function () {\n //Get breakpoint for window width\n if (!s.params.breakpoints) return false;\n var breakpoint = false;\n var points = [], point;\n for ( point in s.params.breakpoints ) {\n if (s.params.breakpoints.hasOwnProperty(point)) {\n points.push(point);\n }\n }\n points.sort(function (a, b) {\n return parseInt(a, 10) > parseInt(b, 10);\n });\n for (var i = 0; i < points.length; i++) {\n point = points[i];\n if (point >= window.innerWidth && !breakpoint) {\n breakpoint = point;\n }\n }\n return breakpoint || 'max';\n };\n s.setBreakpoint = function () {\n //Set breakpoint for window width and update parameters\n var breakpoint = s.getActiveBreakpoint();\n if (breakpoint && s.currentBreakpoint !== breakpoint) {\n var breakPointsParams = breakpoint in s.params.breakpoints ? s.params.breakpoints[breakpoint] : s.originalParams;\n var needsReLoop = s.params.loop && (breakPointsParams.slidesPerView !== s.params.slidesPerView);\n for ( var param in breakPointsParams ) {\n s.params[param] = breakPointsParams[param];\n }\n s.currentBreakpoint = breakpoint;\n if(needsReLoop && s.destroyLoop) {\n s.reLoop(true);\n }\n }\n };\n // Set breakpoint on load\n if (s.params.breakpoints) {\n s.setBreakpoint();\n }\n \n /*=========================\n Preparation - Define Container, Wrapper and Pagination\n ===========================*/\n s.container = $(container);\n if (s.container.length === 0) return;\n if (s.container.length > 1) {\n var swipers = [];\n s.container.each(function () {\n var container = this;\n swipers.push(new Swiper(this, params));\n });\n return swipers;\n }\n \n // Save instance in container HTML Element and in data\n s.container[0].swiper = s;\n s.container.data('swiper', s);\n \n s.classNames.push(s.params.containerModifierClass + s.params.direction);\n \n if (s.params.freeMode) {\n s.classNames.push(s.params.containerModifierClass + 'free-mode');\n }\n if (!s.support.flexbox) {\n s.classNames.push(s.params.containerModifierClass + 'no-flexbox');\n s.params.slidesPerColumn = 1;\n }\n if (s.params.autoHeight) {\n s.classNames.push(s.params.containerModifierClass + 'autoheight');\n }\n // Enable slides progress when required\n if (s.params.parallax || s.params.watchSlidesVisibility) {\n s.params.watchSlidesProgress = true;\n }\n // Max resistance when touchReleaseOnEdges\n if (s.params.touchReleaseOnEdges) {\n s.params.resistanceRatio = 0;\n }\n // Coverflow / 3D\n if (['cube', 'coverflow', 'flip'].indexOf(s.params.effect) >= 0) {\n if (s.support.transforms3d) {\n s.params.watchSlidesProgress = true;\n s.classNames.push(s.params.containerModifierClass + '3d');\n }\n else {\n s.params.effect = 'slide';\n }\n }\n if (s.params.effect !== 'slide') {\n s.classNames.push(s.params.containerModifierClass + s.params.effect);\n }\n if (s.params.effect === 'cube') {\n s.params.resistanceRatio = 0;\n s.params.slidesPerView = 1;\n s.params.slidesPerColumn = 1;\n s.params.slidesPerGroup = 1;\n s.params.centeredSlides = false;\n s.params.spaceBetween = 0;\n s.params.virtualTranslate = true;\n }\n if (s.params.effect === 'fade' || s.params.effect === 'flip') {\n s.params.slidesPerView = 1;\n s.params.slidesPerColumn = 1;\n s.params.slidesPerGroup = 1;\n s.params.watchSlidesProgress = true;\n s.params.spaceBetween = 0;\n if (typeof initialVirtualTranslate === 'undefined') {\n s.params.virtualTranslate = true;\n }\n }\n \n // Grab Cursor\n if (s.params.grabCursor && s.support.touch) {\n s.params.grabCursor = false;\n }\n \n // Wrapper\n s.wrapper = s.container.children('.' + s.params.wrapperClass);\n \n // Pagination\n if (s.params.pagination) {\n s.paginationContainer = $(s.params.pagination);\n if (s.params.uniqueNavElements && typeof s.params.pagination === 'string' && s.paginationContainer.length > 1 && s.container.find(s.params.pagination).length === 1) {\n s.paginationContainer = s.container.find(s.params.pagination);\n }\n \n if (s.params.paginationType === 'bullets' && s.params.paginationClickable) {\n s.paginationContainer.addClass(s.params.paginationModifierClass + 'clickable');\n }\n else {\n s.params.paginationClickable = false;\n }\n s.paginationContainer.addClass(s.params.paginationModifierClass + s.params.paginationType);\n }\n // Next/Prev Buttons\n if (s.params.nextButton || s.params.prevButton) {\n if (s.params.nextButton) {\n s.nextButton = $(s.params.nextButton);\n if (s.params.uniqueNavElements && typeof s.params.nextButton === 'string' && s.nextButton.length > 1 && s.container.find(s.params.nextButton).length === 1) {\n s.nextButton = s.container.find(s.params.nextButton);\n }\n }\n if (s.params.prevButton) {\n s.prevButton = $(s.params.prevButton);\n if (s.params.uniqueNavElements && typeof s.params.prevButton === 'string' && s.prevButton.length > 1 && s.container.find(s.params.prevButton).length === 1) {\n s.prevButton = s.container.find(s.params.prevButton);\n }\n }\n }\n \n // Is Horizontal\n s.isHorizontal = function () {\n return s.params.direction === 'horizontal';\n };\n // s.isH = isH;\n \n // RTL\n s.rtl = s.isHorizontal() && (s.container[0].dir.toLowerCase() === 'rtl' || s.container.css('direction') === 'rtl');\n if (s.rtl) {\n s.classNames.push(s.params.containerModifierClass + 'rtl');\n }\n \n // Wrong RTL support\n if (s.rtl) {\n s.wrongRTL = s.wrapper.css('display') === '-webkit-box';\n }\n \n // Columns\n if (s.params.slidesPerColumn > 1) {\n s.classNames.push(s.params.containerModifierClass + 'multirow');\n }\n \n // Check for Android\n if (s.device.android) {\n s.classNames.push(s.params.containerModifierClass + 'android');\n }\n \n // Add classes\n s.container.addClass(s.classNames.join(' '));\n \n // Translate\n s.translate = 0;\n \n // Progress\n s.progress = 0;\n \n // Velocity\n s.velocity = 0;\n \n /*=========================\n Locks, unlocks\n ===========================*/\n s.lockSwipeToNext = function () {\n s.params.allowSwipeToNext = false;\n if (s.params.allowSwipeToPrev === false && s.params.grabCursor) {\n s.unsetGrabCursor();\n }\n };\n s.lockSwipeToPrev = function () {\n s.params.allowSwipeToPrev = false;\n if (s.params.allowSwipeToNext === false && s.params.grabCursor) {\n s.unsetGrabCursor();\n }\n };\n s.lockSwipes = function () {\n s.params.allowSwipeToNext = s.params.allowSwipeToPrev = false;\n if (s.params.grabCursor) s.unsetGrabCursor();\n };\n s.unlockSwipeToNext = function () {\n s.params.allowSwipeToNext = true;\n if (s.params.allowSwipeToPrev === true && s.params.grabCursor) {\n s.setGrabCursor();\n }\n };\n s.unlockSwipeToPrev = function () {\n s.params.allowSwipeToPrev = true;\n if (s.params.allowSwipeToNext === true && s.params.grabCursor) {\n s.setGrabCursor();\n }\n };\n s.unlockSwipes = function () {\n s.params.allowSwipeToNext = s.params.allowSwipeToPrev = true;\n if (s.params.grabCursor) s.setGrabCursor();\n };\n \n /*=========================\n Round helper\n ===========================*/\n function round(a) {\n return Math.floor(a);\n }\n /*=========================\n Set grab cursor\n ===========================*/\n s.setGrabCursor = function(moving) {\n s.container[0].style.cursor = 'move';\n s.container[0].style.cursor = moving ? '-webkit-grabbing' : '-webkit-grab';\n s.container[0].style.cursor = moving ? '-moz-grabbin' : '-moz-grab';\n s.container[0].style.cursor = moving ? 'grabbing': 'grab';\n };\n s.unsetGrabCursor = function () {\n s.container[0].style.cursor = '';\n };\n if (s.params.grabCursor) {\n s.setGrabCursor();\n }\n /*=========================\n Update on Images Ready\n ===========================*/\n s.imagesToLoad = [];\n s.imagesLoaded = 0;\n \n s.loadImage = function (imgElement, src, srcset, sizes, checkForComplete, callback) {\n var image;\n function onReady () {\n if (callback) callback();\n }\n if (!imgElement.complete || !checkForComplete) {\n if (src) {\n image = new window.Image();\n image.onload = onReady;\n image.onerror = onReady;\n if (sizes) {\n image.sizes = sizes;\n }\n if (srcset) {\n image.srcset = srcset;\n }\n if (src) {\n image.src = src;\n }\n } else {\n onReady();\n }\n \n } else {//image already loaded...\n onReady();\n }\n };\n s.preloadImages = function () {\n s.imagesToLoad = s.container.find('img');\n function _onReady() {\n if (typeof s === 'undefined' || s === null || !s) return;\n if (s.imagesLoaded !== undefined) s.imagesLoaded++;\n if (s.imagesLoaded === s.imagesToLoad.length) {\n if (s.params.updateOnImagesReady) s.update();\n s.emit('onImagesReady', s);\n }\n }\n for (var i = 0; i < s.imagesToLoad.length; i++) {\n s.loadImage(s.imagesToLoad[i], (s.imagesToLoad[i].currentSrc || s.imagesToLoad[i].getAttribute('src')), (s.imagesToLoad[i].srcset || s.imagesToLoad[i].getAttribute('srcset')), s.imagesToLoad[i].sizes || s.imagesToLoad[i].getAttribute('sizes'), true, _onReady);\n }\n };\n \n /*=========================\n Autoplay\n ===========================*/\n s.autoplayTimeoutId = undefined;\n s.autoplaying = false;\n s.autoplayPaused = false;\n function autoplay() {\n var autoplayDelay = s.params.autoplay;\n var activeSlide = s.slides.eq(s.activeIndex);\n if (activeSlide.attr('data-swiper-autoplay')) {\n autoplayDelay = activeSlide.attr('data-swiper-autoplay') || s.params.autoplay;\n }\n s.autoplayTimeoutId = setTimeout(function () {\n if (s.params.loop) {\n s.fixLoop();\n s._slideNext();\n s.emit('onAutoplay', s);\n }\n else {\n if (!s.isEnd) {\n s._slideNext();\n s.emit('onAutoplay', s);\n }\n else {\n if (!params.autoplayStopOnLast) {\n s._slideTo(0);\n s.emit('onAutoplay', s);\n }\n else {\n s.stopAutoplay();\n }\n }\n }\n }, autoplayDelay);\n }\n s.startAutoplay = function () {\n if (typeof s.autoplayTimeoutId !== 'undefined') return false;\n if (!s.params.autoplay) return false;\n if (s.autoplaying) return false;\n s.autoplaying = true;\n s.emit('onAutoplayStart', s);\n autoplay();\n };\n s.stopAutoplay = function (internal) {\n if (!s.autoplayTimeoutId) return;\n if (s.autoplayTimeoutId) clearTimeout(s.autoplayTimeoutId);\n s.autoplaying = false;\n s.autoplayTimeoutId = undefined;\n s.emit('onAutoplayStop', s);\n };\n s.pauseAutoplay = function (speed) {\n if (s.autoplayPaused) return;\n if (s.autoplayTimeoutId) clearTimeout(s.autoplayTimeoutId);\n s.autoplayPaused = true;\n if (speed === 0) {\n s.autoplayPaused = false;\n autoplay();\n }\n else {\n s.wrapper.transitionEnd(function () {\n if (!s) return;\n s.autoplayPaused = false;\n if (!s.autoplaying) {\n s.stopAutoplay();\n }\n else {\n autoplay();\n }\n });\n }\n };\n /*=========================\n Min/Max Translate\n ===========================*/\n s.minTranslate = function () {\n return (-s.snapGrid[0]);\n };\n s.maxTranslate = function () {\n return (-s.snapGrid[s.snapGrid.length - 1]);\n };\n /*=========================\n Slider/slides sizes\n ===========================*/\n s.updateAutoHeight = function () {\n var activeSlides = [];\n var newHeight = 0;\n var i;\n \n // Find slides currently in view\n if(s.params.slidesPerView !== 'auto' && s.params.slidesPerView > 1) {\n for (i = 0; i < Math.ceil(s.params.slidesPerView); i++) {\n var index = s.activeIndex + i;\n if(index > s.slides.length) break;\n activeSlides.push(s.slides.eq(index)[0]);\n }\n } else {\n activeSlides.push(s.slides.eq(s.activeIndex)[0]);\n }\n \n // Find new height from heighest slide in view\n for (i = 0; i < activeSlides.length; i++) {\n if (typeof activeSlides[i] !== 'undefined') {\n var height = activeSlides[i].offsetHeight;\n newHeight = height > newHeight ? height : newHeight;\n }\n }\n \n // Update Height\n if (newHeight) s.wrapper.css('height', newHeight + 'px');\n };\n s.updateContainerSize = function () {\n var width, height;\n if (typeof s.params.width !== 'undefined') {\n width = s.params.width;\n }\n else {\n width = s.container[0].clientWidth;\n }\n if (typeof s.params.height !== 'undefined') {\n height = s.params.height;\n }\n else {\n height = s.container[0].clientHeight;\n }\n if (width === 0 && s.isHorizontal() || height === 0 && !s.isHorizontal()) {\n return;\n }\n \n //Subtract paddings\n width = width - parseInt(s.container.css('padding-left'), 10) - parseInt(s.container.css('padding-right'), 10);\n height = height - parseInt(s.container.css('padding-top'), 10) - parseInt(s.container.css('padding-bottom'), 10);\n \n // Store values\n s.width = width;\n s.height = height;\n s.size = s.isHorizontal() ? s.width : s.height;\n };\n \n s.updateSlidesSize = function () {\n s.slides = s.wrapper.children('.' + s.params.slideClass);\n s.snapGrid = [];\n s.slidesGrid = [];\n s.slidesSizesGrid = [];\n \n var spaceBetween = s.params.spaceBetween,\n slidePosition = -s.params.slidesOffsetBefore,\n i,\n prevSlideSize = 0,\n index = 0;\n if (typeof s.size === 'undefined') return;\n if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {\n spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * s.size;\n }\n \n s.virtualSize = -spaceBetween;\n // reset margins\n if (s.rtl) s.slides.css({marginLeft: '', marginTop: ''});\n else s.slides.css({marginRight: '', marginBottom: ''});\n \n var slidesNumberEvenToRows;\n if (s.params.slidesPerColumn > 1) {\n if (Math.floor(s.slides.length / s.params.slidesPerColumn) === s.slides.length / s.params.slidesPerColumn) {\n slidesNumberEvenToRows = s.slides.length;\n }\n else {\n slidesNumberEvenToRows = Math.ceil(s.slides.length / s.params.slidesPerColumn) * s.params.slidesPerColumn;\n }\n if (s.params.slidesPerView !== 'auto' && s.params.slidesPerColumnFill === 'row') {\n slidesNumberEvenToRows = Math.max(slidesNumberEvenToRows, s.params.slidesPerView * s.params.slidesPerColumn);\n }\n }\n \n // Calc slides\n var slideSize;\n var slidesPerColumn = s.params.slidesPerColumn;\n var slidesPerRow = slidesNumberEvenToRows / slidesPerColumn;\n var numFullColumns = slidesPerRow - (s.params.slidesPerColumn * slidesPerRow - s.slides.length);\n for (i = 0; i < s.slides.length; i++) {\n slideSize = 0;\n var slide = s.slides.eq(i);\n if (s.params.slidesPerColumn > 1) {\n // Set slides order\n var newSlideOrderIndex;\n var column, row;\n if (s.params.slidesPerColumnFill === 'column') {\n column = Math.floor(i / slidesPerColumn);\n row = i - column * slidesPerColumn;\n if (column > numFullColumns || (column === numFullColumns && row === slidesPerColumn-1)) {\n if (++row >= slidesPerColumn) {\n row = 0;\n column++;\n }\n }\n newSlideOrderIndex = column + row * slidesNumberEvenToRows / slidesPerColumn;\n slide\n .css({\n '-webkit-box-ordinal-group': newSlideOrderIndex,\n '-moz-box-ordinal-group': newSlideOrderIndex,\n '-ms-flex-order': newSlideOrderIndex,\n '-webkit-order': newSlideOrderIndex,\n 'order': newSlideOrderIndex\n });\n }\n else {\n row = Math.floor(i / slidesPerRow);\n column = i - row * slidesPerRow;\n }\n slide\n .css(\n 'margin-' + (s.isHorizontal() ? 'top' : 'left'),\n (row !== 0 && s.params.spaceBetween) && (s.params.spaceBetween + 'px')\n )\n .attr('data-swiper-column', column)\n .attr('data-swiper-row', row);\n \n }\n if (slide.css('display') === 'none') continue;\n if (s.params.slidesPerView === 'auto') {\n slideSize = s.isHorizontal() ? slide.outerWidth(true) : slide.outerHeight(true);\n if (s.params.roundLengths) slideSize = round(slideSize);\n }\n else {\n slideSize = (s.size - (s.params.slidesPerView - 1) * spaceBetween) / s.params.slidesPerView;\n if (s.params.roundLengths) slideSize = round(slideSize);\n \n if (s.isHorizontal()) {\n s.slides[i].style.width = slideSize + 'px';\n }\n else {\n s.slides[i].style.height = slideSize + 'px';\n }\n }\n s.slides[i].swiperSlideSize = slideSize;\n s.slidesSizesGrid.push(slideSize);\n \n \n if (s.params.centeredSlides) {\n slidePosition = slidePosition + slideSize / 2 + prevSlideSize / 2 + spaceBetween;\n if(prevSlideSize === 0 && i !== 0) slidePosition = slidePosition - s.size / 2 - spaceBetween;\n if (i === 0) slidePosition = slidePosition - s.size / 2 - spaceBetween;\n if (Math.abs(slidePosition) < 1 / 1000) slidePosition = 0;\n if ((index) % s.params.slidesPerGroup === 0) s.snapGrid.push(slidePosition);\n s.slidesGrid.push(slidePosition);\n }\n else {\n if ((index) % s.params.slidesPerGroup === 0) s.snapGrid.push(slidePosition);\n s.slidesGrid.push(slidePosition);\n slidePosition = slidePosition + slideSize + spaceBetween;\n }\n \n s.virtualSize += slideSize + spaceBetween;\n \n prevSlideSize = slideSize;\n \n index ++;\n }\n s.virtualSize = Math.max(s.virtualSize, s.size) + s.params.slidesOffsetAfter;\n var newSlidesGrid;\n \n if (\n s.rtl && s.wrongRTL && (s.params.effect === 'slide' || s.params.effect === 'coverflow')) {\n s.wrapper.css({width: s.virtualSize + s.params.spaceBetween + 'px'});\n }\n if (!s.support.flexbox || s.params.setWrapperSize) {\n if (s.isHorizontal()) s.wrapper.css({width: s.virtualSize + s.params.spaceBetween + 'px'});\n else s.wrapper.css({height: s.virtualSize + s.params.spaceBetween + 'px'});\n }\n \n if (s.params.slidesPerColumn > 1) {\n s.virtualSize = (slideSize + s.params.spaceBetween) * slidesNumberEvenToRows;\n s.virtualSize = Math.ceil(s.virtualSize / s.params.slidesPerColumn) - s.params.spaceBetween;\n if (s.isHorizontal()) s.wrapper.css({width: s.virtualSize + s.params.spaceBetween + 'px'});\n else s.wrapper.css({height: s.virtualSize + s.params.spaceBetween + 'px'});\n if (s.params.centeredSlides) {\n newSlidesGrid = [];\n for (i = 0; i < s.snapGrid.length; i++) {\n if (s.snapGrid[i] < s.virtualSize + s.snapGrid[0]) newSlidesGrid.push(s.snapGrid[i]);\n }\n s.snapGrid = newSlidesGrid;\n }\n }\n \n // Remove last grid elements depending on width\n if (!s.params.centeredSlides) {\n newSlidesGrid = [];\n for (i = 0; i < s.snapGrid.length; i++) {\n if (s.snapGrid[i] <= s.virtualSize - s.size) {\n newSlidesGrid.push(s.snapGrid[i]);\n }\n }\n s.snapGrid = newSlidesGrid;\n if (Math.floor(s.virtualSize - s.size) - Math.floor(s.snapGrid[s.snapGrid.length - 1]) > 1) {\n s.snapGrid.push(s.virtualSize - s.size);\n }\n }\n if (s.snapGrid.length === 0) s.snapGrid = [0];\n \n if (s.params.spaceBetween !== 0) {\n if (s.isHorizontal()) {\n if (s.rtl) s.slides.css({marginLeft: spaceBetween + 'px'});\n else s.slides.css({marginRight: spaceBetween + 'px'});\n }\n else s.slides.css({marginBottom: spaceBetween + 'px'});\n }\n if (s.params.watchSlidesProgress) {\n s.updateSlidesOffset();\n }\n };\n s.updateSlidesOffset = function () {\n for (var i = 0; i < s.slides.length; i++) {\n s.slides[i].swiperSlideOffset = s.isHorizontal() ? s.slides[i].offsetLeft : s.slides[i].offsetTop;\n }\n };\n \n /*=========================\n Dynamic Slides Per View\n ===========================*/\n s.currentSlidesPerView = function () {\n var spv = 1, i, j;\n if (s.params.centeredSlides) {\n var size = s.slides[s.activeIndex].swiperSlideSize;\n var breakLoop;\n for (i = s.activeIndex + 1; i < s.slides.length; i++) {\n if (s.slides[i] && !breakLoop) {\n size += s.slides[i].swiperSlideSize;\n spv ++;\n if (size > s.size) breakLoop = true;\n }\n }\n for (j = s.activeIndex - 1; j >= 0; j--) {\n if (s.slides[j] && !breakLoop) {\n size += s.slides[j].swiperSlideSize;\n spv ++;\n if (size > s.size) breakLoop = true;\n }\n }\n }\n else {\n for (i = s.activeIndex + 1; i < s.slides.length; i++) {\n if (s.slidesGrid[i] - s.slidesGrid[s.activeIndex] < s.size) {\n spv++;\n }\n }\n }\n return spv;\n };\n /*=========================\n Slider/slides progress\n ===========================*/\n s.updateSlidesProgress = function (translate) {\n if (typeof translate === 'undefined') {\n translate = s.translate || 0;\n }\n if (s.slides.length === 0) return;\n if (typeof s.slides[0].swiperSlideOffset === 'undefined') s.updateSlidesOffset();\n \n var offsetCenter = -translate;\n if (s.rtl) offsetCenter = translate;\n \n // Visible Slides\n s.slides.removeClass(s.params.slideVisibleClass);\n for (var i = 0; i < s.slides.length; i++) {\n var slide = s.slides[i];\n var slideProgress = (offsetCenter + (s.params.centeredSlides ? s.minTranslate() : 0) - slide.swiperSlideOffset) / (slide.swiperSlideSize + s.params.spaceBetween);\n if (s.params.watchSlidesVisibility) {\n var slideBefore = -(offsetCenter - slide.swiperSlideOffset);\n var slideAfter = slideBefore + s.slidesSizesGrid[i];\n var isVisible =\n (slideBefore >= 0 && slideBefore < s.size) ||\n (slideAfter > 0 && slideAfter <= s.size) ||\n (slideBefore <= 0 && slideAfter >= s.size);\n if (isVisible) {\n s.slides.eq(i).addClass(s.params.slideVisibleClass);\n }\n }\n slide.progress = s.rtl ? -slideProgress : slideProgress;\n }\n };\n s.updateProgress = function (translate) {\n if (typeof translate === 'undefined') {\n translate = s.translate || 0;\n }\n var translatesDiff = s.maxTranslate() - s.minTranslate();\n var wasBeginning = s.isBeginning;\n var wasEnd = s.isEnd;\n if (translatesDiff === 0) {\n s.progress = 0;\n s.isBeginning = s.isEnd = true;\n }\n else {\n s.progress = (translate - s.minTranslate()) / (translatesDiff);\n s.isBeginning = s.progress <= 0;\n s.isEnd = s.progress >= 1;\n }\n if (s.isBeginning && !wasBeginning) s.emit('onReachBeginning', s);\n if (s.isEnd && !wasEnd) s.emit('onReachEnd', s);\n \n if (s.params.watchSlidesProgress) s.updateSlidesProgress(translate);\n s.emit('onProgress', s, s.progress);\n };\n s.updateActiveIndex = function () {\n var translate = s.rtl ? s.translate : -s.translate;\n var newActiveIndex, i, snapIndex;\n for (i = 0; i < s.slidesGrid.length; i ++) {\n if (typeof s.slidesGrid[i + 1] !== 'undefined') {\n if (translate >= s.slidesGrid[i] && translate < s.slidesGrid[i + 1] - (s.slidesGrid[i + 1] - s.slidesGrid[i]) / 2) {\n newActiveIndex = i;\n }\n else if (translate >= s.slidesGrid[i] && translate < s.slidesGrid[i + 1]) {\n newActiveIndex = i + 1;\n }\n }\n else {\n if (translate >= s.slidesGrid[i]) {\n newActiveIndex = i;\n }\n }\n }\n // Normalize slideIndex\n if(s.params.normalizeSlideIndex){\n if (newActiveIndex < 0 || typeof newActiveIndex === 'undefined') newActiveIndex = 0;\n }\n // for (i = 0; i < s.slidesGrid.length; i++) {\n // if (- translate >= s.slidesGrid[i]) {\n // newActiveIndex = i;\n // }\n // }\n snapIndex = Math.floor(newActiveIndex / s.params.slidesPerGroup);\n if (snapIndex >= s.snapGrid.length) snapIndex = s.snapGrid.length - 1;\n \n if (newActiveIndex === s.activeIndex) {\n return;\n }\n s.snapIndex = snapIndex;\n s.previousIndex = s.activeIndex;\n s.activeIndex = newActiveIndex;\n s.updateClasses();\n s.updateRealIndex();\n };\n s.updateRealIndex = function(){\n s.realIndex = parseInt(s.slides.eq(s.activeIndex).attr('data-swiper-slide-index') || s.activeIndex, 10);\n };\n \n /*=========================\n Classes\n ===========================*/\n s.updateClasses = function () {\n s.slides.removeClass(s.params.slideActiveClass + ' ' + s.params.slideNextClass + ' ' + s.params.slidePrevClass + ' ' + s.params.slideDuplicateActiveClass + ' ' + s.params.slideDuplicateNextClass + ' ' + s.params.slideDuplicatePrevClass);\n var activeSlide = s.slides.eq(s.activeIndex);\n // Active classes\n activeSlide.addClass(s.params.slideActiveClass);\n if (params.loop) {\n // Duplicate to all looped slides\n if (activeSlide.hasClass(s.params.slideDuplicateClass)) {\n s.wrapper.children('.' + s.params.slideClass + ':not(.' + s.params.slideDuplicateClass + ')[data-swiper-slide-index=\"' + s.realIndex + '\"]').addClass(s.params.slideDuplicateActiveClass);\n }\n else {\n s.wrapper.children('.' + s.params.slideClass + '.' + s.params.slideDuplicateClass + '[data-swiper-slide-index=\"' + s.realIndex + '\"]').addClass(s.params.slideDuplicateActiveClass);\n }\n }\n // Next Slide\n var nextSlide = activeSlide.next('.' + s.params.slideClass).addClass(s.params.slideNextClass);\n if (s.params.loop && nextSlide.length === 0) {\n nextSlide = s.slides.eq(0);\n nextSlide.addClass(s.params.slideNextClass);\n }\n // Prev Slide\n var prevSlide = activeSlide.prev('.' + s.params.slideClass).addClass(s.params.slidePrevClass);\n if (s.params.loop && prevSlide.length === 0) {\n prevSlide = s.slides.eq(-1);\n prevSlide.addClass(s.params.slidePrevClass);\n }\n if (params.loop) {\n // Duplicate to all looped slides\n if (nextSlide.hasClass(s.params.slideDuplicateClass)) {\n s.wrapper.children('.' + s.params.slideClass + ':not(.' + s.params.slideDuplicateClass + ')[data-swiper-slide-index=\"' + nextSlide.attr('data-swiper-slide-index') + '\"]').addClass(s.params.slideDuplicateNextClass);\n }\n else {\n s.wrapper.children('.' + s.params.slideClass + '.' + s.params.slideDuplicateClass + '[data-swiper-slide-index=\"' + nextSlide.attr('data-swiper-slide-index') + '\"]').addClass(s.params.slideDuplicateNextClass);\n }\n if (prevSlide.hasClass(s.params.slideDuplicateClass)) {\n s.wrapper.children('.' + s.params.slideClass + ':not(.' + s.params.slideDuplicateClass + ')[data-swiper-slide-index=\"' + prevSlide.attr('data-swiper-slide-index') + '\"]').addClass(s.params.slideDuplicatePrevClass);\n }\n else {\n s.wrapper.children('.' + s.params.slideClass + '.' + s.params.slideDuplicateClass + '[data-swiper-slide-index=\"' + prevSlide.attr('data-swiper-slide-index') + '\"]').addClass(s.params.slideDuplicatePrevClass);\n }\n }\n \n // Pagination\n if (s.paginationContainer && s.paginationContainer.length > 0) {\n // Current/Total\n var current,\n total = s.params.loop ? Math.ceil((s.slides.length - s.loopedSlides * 2) / s.params.slidesPerGroup) : s.snapGrid.length;\n if (s.params.loop) {\n current = Math.ceil((s.activeIndex - s.loopedSlides)/s.params.slidesPerGroup);\n if (current > s.slides.length - 1 - s.loopedSlides * 2) {\n current = current - (s.slides.length - s.loopedSlides * 2);\n }\n if (current > total - 1) current = current - total;\n if (current < 0 && s.params.paginationType !== 'bullets') current = total + current;\n }\n else {\n if (typeof s.snapIndex !== 'undefined') {\n current = s.snapIndex;\n }\n else {\n current = s.activeIndex || 0;\n }\n }\n // Types\n if (s.params.paginationType === 'bullets' && s.bullets && s.bullets.length > 0) {\n s.bullets.removeClass(s.params.bulletActiveClass);\n if (s.paginationContainer.length > 1) {\n s.bullets.each(function () {\n if ($(this).index() === current) $(this).addClass(s.params.bulletActiveClass);\n });\n }\n else {\n s.bullets.eq(current).addClass(s.params.bulletActiveClass);\n }\n }\n if (s.params.paginationType === 'fraction') {\n s.paginationContainer.find('.' + s.params.paginationCurrentClass).text(current + 1);\n s.paginationContainer.find('.' + s.params.paginationTotalClass).text(total);\n }\n if (s.params.paginationType === 'progress') {\n var scale = (current + 1) / total,\n scaleX = scale,\n scaleY = 1;\n if (!s.isHorizontal()) {\n scaleY = scale;\n scaleX = 1;\n }\n s.paginationContainer.find('.' + s.params.paginationProgressbarClass).transform('translate3d(0,0,0) scaleX(' + scaleX + ') scaleY(' + scaleY + ')').transition(s.params.speed);\n }\n if (s.params.paginationType === 'custom' && s.params.paginationCustomRender) {\n s.paginationContainer.html(s.params.paginationCustomRender(s, current + 1, total));\n s.emit('onPaginationRendered', s, s.paginationContainer[0]);\n }\n }\n \n // Next/active buttons\n if (!s.params.loop) {\n if (s.params.prevButton && s.prevButton && s.prevButton.length > 0) {\n if (s.isBeginning) {\n s.prevButton.addClass(s.params.buttonDisabledClass);\n if (s.params.a11y && s.a11y) s.a11y.disable(s.prevButton);\n }\n else {\n s.prevButton.removeClass(s.params.buttonDisabledClass);\n if (s.params.a11y && s.a11y) s.a11y.enable(s.prevButton);\n }\n }\n if (s.params.nextButton && s.nextButton && s.nextButton.length > 0) {\n if (s.isEnd) {\n s.nextButton.addClass(s.params.buttonDisabledClass);\n if (s.params.a11y && s.a11y) s.a11y.disable(s.nextButton);\n }\n else {\n s.nextButton.removeClass(s.params.buttonDisabledClass);\n if (s.params.a11y && s.a11y) s.a11y.enable(s.nextButton);\n }\n }\n }\n };\n \n /*=========================\n Pagination\n ===========================*/\n s.updatePagination = function () {\n if (!s.params.pagination) return;\n if (s.paginationContainer && s.paginationContainer.length > 0) {\n var paginationHTML = '';\n if (s.params.paginationType === 'bullets') {\n var numberOfBullets = s.params.loop ? Math.ceil((s.slides.length - s.loopedSlides * 2) / s.params.slidesPerGroup) : s.snapGrid.length;\n for (var i = 0; i < numberOfBullets; i++) {\n if (s.params.paginationBulletRender) {\n paginationHTML += s.params.paginationBulletRender(s, i, s.params.bulletClass);\n }\n else {\n paginationHTML += '<' + s.params.paginationElement+' class=\"' + s.params.bulletClass + '\">';\n }\n }\n s.paginationContainer.html(paginationHTML);\n s.bullets = s.paginationContainer.find('.' + s.params.bulletClass);\n if (s.params.paginationClickable && s.params.a11y && s.a11y) {\n s.a11y.initPagination();\n }\n }\n if (s.params.paginationType === 'fraction') {\n if (s.params.paginationFractionRender) {\n paginationHTML = s.params.paginationFractionRender(s, s.params.paginationCurrentClass, s.params.paginationTotalClass);\n }\n else {\n paginationHTML =\n '' +\n ' / ' +\n '';\n }\n s.paginationContainer.html(paginationHTML);\n }\n if (s.params.paginationType === 'progress') {\n if (s.params.paginationProgressRender) {\n paginationHTML = s.params.paginationProgressRender(s, s.params.paginationProgressbarClass);\n }\n else {\n paginationHTML = '';\n }\n s.paginationContainer.html(paginationHTML);\n }\n if (s.params.paginationType !== 'custom') {\n s.emit('onPaginationRendered', s, s.paginationContainer[0]);\n }\n }\n };\n /*=========================\n Common update method\n ===========================*/\n s.update = function (updateTranslate) {\n if (!s) return;\n s.updateContainerSize();\n s.updateSlidesSize();\n s.updateProgress();\n s.updatePagination();\n s.updateClasses();\n if (s.params.scrollbar && s.scrollbar) {\n s.scrollbar.set();\n }\n var newTranslate;\n function forceSetTranslate() {\n var translate = s.rtl ? -s.translate : s.translate;\n newTranslate = Math.min(Math.max(s.translate, s.maxTranslate()), s.minTranslate());\n s.setWrapperTranslate(newTranslate);\n s.updateActiveIndex();\n s.updateClasses();\n }\n if (updateTranslate) {\n var translated;\n if (s.controller && s.controller.spline) {\n s.controller.spline = undefined;\n }\n if (s.params.freeMode) {\n forceSetTranslate();\n if (s.params.autoHeight) {\n s.updateAutoHeight();\n }\n }\n else {\n if ((s.params.slidesPerView === 'auto' || s.params.slidesPerView > 1) && s.isEnd && !s.params.centeredSlides) {\n translated = s.slideTo(s.slides.length - 1, 0, false, true);\n }\n else {\n translated = s.slideTo(s.activeIndex, 0, false, true);\n }\n if (!translated) {\n forceSetTranslate();\n }\n }\n }\n else if (s.params.autoHeight) {\n s.updateAutoHeight();\n }\n };\n \n /*=========================\n Resize Handler\n ===========================*/\n s.onResize = function (forceUpdatePagination) {\n if (s.params.onBeforeResize) s.params.onBeforeResize(s);\n //Breakpoints\n if (s.params.breakpoints) {\n s.setBreakpoint();\n }\n \n // Disable locks on resize\n var allowSwipeToPrev = s.params.allowSwipeToPrev;\n var allowSwipeToNext = s.params.allowSwipeToNext;\n s.params.allowSwipeToPrev = s.params.allowSwipeToNext = true;\n \n s.updateContainerSize();\n s.updateSlidesSize();\n if (s.params.slidesPerView === 'auto' || s.params.freeMode || forceUpdatePagination) s.updatePagination();\n if (s.params.scrollbar && s.scrollbar) {\n s.scrollbar.set();\n }\n if (s.controller && s.controller.spline) {\n s.controller.spline = undefined;\n }\n var slideChangedBySlideTo = false;\n if (s.params.freeMode) {\n var newTranslate = Math.min(Math.max(s.translate, s.maxTranslate()), s.minTranslate());\n s.setWrapperTranslate(newTranslate);\n s.updateActiveIndex();\n s.updateClasses();\n \n if (s.params.autoHeight) {\n s.updateAutoHeight();\n }\n }\n else {\n s.updateClasses();\n if ((s.params.slidesPerView === 'auto' || s.params.slidesPerView > 1) && s.isEnd && !s.params.centeredSlides) {\n slideChangedBySlideTo = s.slideTo(s.slides.length - 1, 0, false, true);\n }\n else {\n slideChangedBySlideTo = s.slideTo(s.activeIndex, 0, false, true);\n }\n }\n if (s.params.lazyLoading && !slideChangedBySlideTo && s.lazy) {\n s.lazy.load();\n }\n // Return locks after resize\n s.params.allowSwipeToPrev = allowSwipeToPrev;\n s.params.allowSwipeToNext = allowSwipeToNext;\n if (s.params.onAfterResize) s.params.onAfterResize(s);\n };\n \n /*=========================\n Events\n ===========================*/\n \n //Define Touch Events\n s.touchEventsDesktop = {start: 'mousedown', move: 'mousemove', end: 'mouseup'};\n if (window.navigator.pointerEnabled) s.touchEventsDesktop = {start: 'pointerdown', move: 'pointermove', end: 'pointerup'};\n else if (window.navigator.msPointerEnabled) s.touchEventsDesktop = {start: 'MSPointerDown', move: 'MSPointerMove', end: 'MSPointerUp'};\n s.touchEvents = {\n start : s.support.touch || !s.params.simulateTouch ? 'touchstart' : s.touchEventsDesktop.start,\n move : s.support.touch || !s.params.simulateTouch ? 'touchmove' : s.touchEventsDesktop.move,\n end : s.support.touch || !s.params.simulateTouch ? 'touchend' : s.touchEventsDesktop.end\n };\n \n \n // WP8 Touch Events Fix\n if (window.navigator.pointerEnabled || window.navigator.msPointerEnabled) {\n (s.params.touchEventsTarget === 'container' ? s.container : s.wrapper).addClass('swiper-wp8-' + s.params.direction);\n }\n \n // Attach/detach events\n s.initEvents = function (detach) {\n var actionDom = detach ? 'off' : 'on';\n var action = detach ? 'removeEventListener' : 'addEventListener';\n var touchEventsTarget = s.params.touchEventsTarget === 'container' ? s.container[0] : s.wrapper[0];\n var target = s.support.touch ? touchEventsTarget : document;\n \n var moveCapture = s.params.nested ? true : false;\n \n //Touch Events\n if (s.browser.ie) {\n touchEventsTarget[action](s.touchEvents.start, s.onTouchStart, false);\n target[action](s.touchEvents.move, s.onTouchMove, moveCapture);\n target[action](s.touchEvents.end, s.onTouchEnd, false);\n }\n else {\n if (s.support.touch) {\n var passiveListener = s.touchEvents.start === 'touchstart' && s.support.passiveListener && s.params.passiveListeners ? {passive: true, capture: false} : false;\n touchEventsTarget[action](s.touchEvents.start, s.onTouchStart, passiveListener);\n touchEventsTarget[action](s.touchEvents.move, s.onTouchMove, moveCapture);\n touchEventsTarget[action](s.touchEvents.end, s.onTouchEnd, passiveListener);\n }\n if ((params.simulateTouch && !s.device.ios && !s.device.android) || (params.simulateTouch && !s.support.touch && s.device.ios)) {\n touchEventsTarget[action]('mousedown', s.onTouchStart, false);\n document[action]('mousemove', s.onTouchMove, moveCapture);\n document[action]('mouseup', s.onTouchEnd, false);\n }\n }\n window[action]('resize', s.onResize);\n \n // Next, Prev, Index\n if (s.params.nextButton && s.nextButton && s.nextButton.length > 0) {\n s.nextButton[actionDom]('click', s.onClickNext);\n if (s.params.a11y && s.a11y) s.nextButton[actionDom]('keydown', s.a11y.onEnterKey);\n }\n if (s.params.prevButton && s.prevButton && s.prevButton.length > 0) {\n s.prevButton[actionDom]('click', s.onClickPrev);\n if (s.params.a11y && s.a11y) s.prevButton[actionDom]('keydown', s.a11y.onEnterKey);\n }\n if (s.params.pagination && s.params.paginationClickable) {\n s.paginationContainer[actionDom]('click', '.' + s.params.bulletClass, s.onClickIndex);\n if (s.params.a11y && s.a11y) s.paginationContainer[actionDom]('keydown', '.' + s.params.bulletClass, s.a11y.onEnterKey);\n }\n \n // Prevent Links Clicks\n if (s.params.preventClicks || s.params.preventClicksPropagation) touchEventsTarget[action]('click', s.preventClicks, true);\n };\n s.attachEvents = function () {\n s.initEvents();\n };\n s.detachEvents = function () {\n s.initEvents(true);\n };\n \n /*=========================\n Handle Clicks\n ===========================*/\n // Prevent Clicks\n s.allowClick = true;\n s.preventClicks = function (e) {\n if (!s.allowClick) {\n if (s.params.preventClicks) e.preventDefault();\n if (s.params.preventClicksPropagation && s.animating) {\n e.stopPropagation();\n e.stopImmediatePropagation();\n }\n }\n };\n // Clicks\n s.onClickNext = function (e) {\n e.preventDefault();\n if (s.isEnd && !s.params.loop) return;\n s.slideNext();\n };\n s.onClickPrev = function (e) {\n e.preventDefault();\n if (s.isBeginning && !s.params.loop) return;\n s.slidePrev();\n };\n s.onClickIndex = function (e) {\n e.preventDefault();\n var index = $(this).index() * s.params.slidesPerGroup;\n if (s.params.loop) index = index + s.loopedSlides;\n s.slideTo(index);\n };\n \n /*=========================\n Handle Touches\n ===========================*/\n function findElementInEvent(e, selector) {\n var el = $(e.target);\n if (!el.is(selector)) {\n if (typeof selector === 'string') {\n el = el.parents(selector);\n }\n else if (selector.nodeType) {\n var found;\n el.parents().each(function (index, _el) {\n if (_el === selector) found = selector;\n });\n if (!found) return undefined;\n else return selector;\n }\n }\n if (el.length === 0) {\n return undefined;\n }\n return el[0];\n }\n s.updateClickedSlide = function (e) {\n var slide = findElementInEvent(e, '.' + s.params.slideClass);\n var slideFound = false;\n if (slide) {\n for (var i = 0; i < s.slides.length; i++) {\n if (s.slides[i] === slide) slideFound = true;\n }\n }\n \n if (slide && slideFound) {\n s.clickedSlide = slide;\n s.clickedIndex = $(slide).index();\n }\n else {\n s.clickedSlide = undefined;\n s.clickedIndex = undefined;\n return;\n }\n if (s.params.slideToClickedSlide && s.clickedIndex !== undefined && s.clickedIndex !== s.activeIndex) {\n var slideToIndex = s.clickedIndex,\n realIndex,\n duplicatedSlides,\n slidesPerView = s.params.slidesPerView === 'auto' ? s.currentSlidesPerView() : s.params.slidesPerView;\n if (s.params.loop) {\n if (s.animating) return;\n realIndex = parseInt($(s.clickedSlide).attr('data-swiper-slide-index'), 10);\n if (s.params.centeredSlides) {\n if ((slideToIndex < s.loopedSlides - slidesPerView/2) || (slideToIndex > s.slides.length - s.loopedSlides + slidesPerView/2)) {\n s.fixLoop();\n slideToIndex = s.wrapper.children('.' + s.params.slideClass + '[data-swiper-slide-index=\"' + realIndex + '\"]:not(.' + s.params.slideDuplicateClass + ')').eq(0).index();\n setTimeout(function () {\n s.slideTo(slideToIndex);\n }, 0);\n }\n else {\n s.slideTo(slideToIndex);\n }\n }\n else {\n if (slideToIndex > s.slides.length - slidesPerView) {\n s.fixLoop();\n slideToIndex = s.wrapper.children('.' + s.params.slideClass + '[data-swiper-slide-index=\"' + realIndex + '\"]:not(.' + s.params.slideDuplicateClass + ')').eq(0).index();\n setTimeout(function () {\n s.slideTo(slideToIndex);\n }, 0);\n }\n else {\n s.slideTo(slideToIndex);\n }\n }\n }\n else {\n s.slideTo(slideToIndex);\n }\n }\n };\n \n var isTouched,\n isMoved,\n allowTouchCallbacks,\n touchStartTime,\n isScrolling,\n currentTranslate,\n startTranslate,\n allowThresholdMove,\n // Form elements to match\n formElements = 'input, select, textarea, button, video',\n // Last click time\n lastClickTime = Date.now(), clickTimeout,\n //Velocities\n velocities = [],\n allowMomentumBounce;\n \n // Animating Flag\n s.animating = false;\n \n // Touches information\n s.touches = {\n startX: 0,\n startY: 0,\n currentX: 0,\n currentY: 0,\n diff: 0\n };\n \n // Touch handlers\n var isTouchEvent, startMoving;\n s.onTouchStart = function (e) {\n if (e.originalEvent) e = e.originalEvent;\n isTouchEvent = e.type === 'touchstart';\n if (!isTouchEvent && 'which' in e && e.which === 3) return;\n if (s.params.noSwiping && findElementInEvent(e, '.' + s.params.noSwipingClass)) {\n s.allowClick = true;\n return;\n }\n if (s.params.swipeHandler) {\n if (!findElementInEvent(e, s.params.swipeHandler)) return;\n }\n \n var startX = s.touches.currentX = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n var startY = s.touches.currentY = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n \n // Do NOT start if iOS edge swipe is detected. Otherwise iOS app (UIWebView) cannot swipe-to-go-back anymore\n if(s.device.ios && s.params.iOSEdgeSwipeDetection && startX <= s.params.iOSEdgeSwipeThreshold) {\n return;\n }\n \n isTouched = true;\n isMoved = false;\n allowTouchCallbacks = true;\n isScrolling = undefined;\n startMoving = undefined;\n s.touches.startX = startX;\n s.touches.startY = startY;\n touchStartTime = Date.now();\n s.allowClick = true;\n s.updateContainerSize();\n s.swipeDirection = undefined;\n if (s.params.threshold > 0) allowThresholdMove = false;\n if (e.type !== 'touchstart') {\n var preventDefault = true;\n if ($(e.target).is(formElements)) preventDefault = false;\n if (document.activeElement && $(document.activeElement).is(formElements)) {\n document.activeElement.blur();\n }\n if (preventDefault) {\n e.preventDefault();\n }\n }\n s.emit('onTouchStart', s, e);\n };\n \n s.onTouchMove = function (e) {\n if (e.originalEvent) e = e.originalEvent;\n if (isTouchEvent && e.type === 'mousemove') return;\n if (e.preventedByNestedSwiper) {\n s.touches.startX = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;\n s.touches.startY = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n return;\n }\n if (s.params.onlyExternal) {\n // isMoved = true;\n s.allowClick = false;\n if (isTouched) {\n s.touches.startX = s.touches.currentX = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;\n s.touches.startY = s.touches.currentY = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n touchStartTime = Date.now();\n }\n return;\n }\n if (isTouchEvent && s.params.touchReleaseOnEdges && !s.params.loop) {\n if (!s.isHorizontal()) {\n // Vertical\n if (\n (s.touches.currentY < s.touches.startY && s.translate <= s.maxTranslate()) ||\n (s.touches.currentY > s.touches.startY && s.translate >= s.minTranslate())\n ) {\n return;\n }\n }\n else {\n if (\n (s.touches.currentX < s.touches.startX && s.translate <= s.maxTranslate()) ||\n (s.touches.currentX > s.touches.startX && s.translate >= s.minTranslate())\n ) {\n return;\n }\n }\n }\n if (isTouchEvent && document.activeElement) {\n if (e.target === document.activeElement && $(e.target).is(formElements)) {\n isMoved = true;\n s.allowClick = false;\n return;\n }\n }\n if (allowTouchCallbacks) {\n s.emit('onTouchMove', s, e);\n }\n if (e.targetTouches && e.targetTouches.length > 1) return;\n \n s.touches.currentX = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;\n s.touches.currentY = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n \n if (typeof isScrolling === 'undefined') {\n var touchAngle;\n if (s.isHorizontal() && s.touches.currentY === s.touches.startY || !s.isHorizontal() && s.touches.currentX === s.touches.startX) {\n isScrolling = false;\n }\n else {\n touchAngle = Math.atan2(Math.abs(s.touches.currentY - s.touches.startY), Math.abs(s.touches.currentX - s.touches.startX)) * 180 / Math.PI;\n isScrolling = s.isHorizontal() ? touchAngle > s.params.touchAngle : (90 - touchAngle > s.params.touchAngle);\n }\n }\n if (isScrolling) {\n s.emit('onTouchMoveOpposite', s, e);\n }\n if (typeof startMoving === 'undefined') {\n if (s.touches.currentX !== s.touches.startX || s.touches.currentY !== s.touches.startY) {\n startMoving = true;\n }\n }\n if (!isTouched) return;\n if (isScrolling) {\n isTouched = false;\n return;\n }\n if (!startMoving) {\n return;\n }\n s.allowClick = false;\n s.emit('onSliderMove', s, e);\n e.preventDefault();\n if (s.params.touchMoveStopPropagation && !s.params.nested) {\n e.stopPropagation();\n }\n \n if (!isMoved) {\n if (params.loop) {\n s.fixLoop();\n }\n startTranslate = s.getWrapperTranslate();\n s.setWrapperTransition(0);\n if (s.animating) {\n s.wrapper.trigger('webkitTransitionEnd transitionend oTransitionEnd MSTransitionEnd msTransitionEnd');\n }\n if (s.params.autoplay && s.autoplaying) {\n if (s.params.autoplayDisableOnInteraction) {\n s.stopAutoplay();\n }\n else {\n s.pauseAutoplay();\n }\n }\n allowMomentumBounce = false;\n //Grab Cursor\n if (s.params.grabCursor && (s.params.allowSwipeToNext === true || s.params.allowSwipeToPrev === true)) {\n s.setGrabCursor(true);\n }\n }\n isMoved = true;\n \n var diff = s.touches.diff = s.isHorizontal() ? s.touches.currentX - s.touches.startX : s.touches.currentY - s.touches.startY;\n \n diff = diff * s.params.touchRatio;\n if (s.rtl) diff = -diff;\n \n s.swipeDirection = diff > 0 ? 'prev' : 'next';\n currentTranslate = diff + startTranslate;\n \n var disableParentSwiper = true;\n if ((diff > 0 && currentTranslate > s.minTranslate())) {\n disableParentSwiper = false;\n if (s.params.resistance) currentTranslate = s.minTranslate() - 1 + Math.pow(-s.minTranslate() + startTranslate + diff, s.params.resistanceRatio);\n }\n else if (diff < 0 && currentTranslate < s.maxTranslate()) {\n disableParentSwiper = false;\n if (s.params.resistance) currentTranslate = s.maxTranslate() + 1 - Math.pow(s.maxTranslate() - startTranslate - diff, s.params.resistanceRatio);\n }\n \n if (disableParentSwiper) {\n e.preventedByNestedSwiper = true;\n }\n \n // Directions locks\n if (!s.params.allowSwipeToNext && s.swipeDirection === 'next' && currentTranslate < startTranslate) {\n currentTranslate = startTranslate;\n }\n if (!s.params.allowSwipeToPrev && s.swipeDirection === 'prev' && currentTranslate > startTranslate) {\n currentTranslate = startTranslate;\n }\n \n \n // Threshold\n if (s.params.threshold > 0) {\n if (Math.abs(diff) > s.params.threshold || allowThresholdMove) {\n if (!allowThresholdMove) {\n allowThresholdMove = true;\n s.touches.startX = s.touches.currentX;\n s.touches.startY = s.touches.currentY;\n currentTranslate = startTranslate;\n s.touches.diff = s.isHorizontal() ? s.touches.currentX - s.touches.startX : s.touches.currentY - s.touches.startY;\n return;\n }\n }\n else {\n currentTranslate = startTranslate;\n return;\n }\n }\n \n if (!s.params.followFinger) return;\n \n // Update active index in free mode\n if (s.params.freeMode || s.params.watchSlidesProgress) {\n s.updateActiveIndex();\n }\n if (s.params.freeMode) {\n //Velocity\n if (velocities.length === 0) {\n velocities.push({\n position: s.touches[s.isHorizontal() ? 'startX' : 'startY'],\n time: touchStartTime\n });\n }\n velocities.push({\n position: s.touches[s.isHorizontal() ? 'currentX' : 'currentY'],\n time: (new window.Date()).getTime()\n });\n }\n // Update progress\n s.updateProgress(currentTranslate);\n // Update translate\n s.setWrapperTranslate(currentTranslate);\n };\n s.onTouchEnd = function (e) {\n if (e.originalEvent) e = e.originalEvent;\n if (allowTouchCallbacks) {\n s.emit('onTouchEnd', s, e);\n }\n allowTouchCallbacks = false;\n if (!isTouched) return;\n //Return Grab Cursor\n if (s.params.grabCursor && isMoved && isTouched && (s.params.allowSwipeToNext === true || s.params.allowSwipeToPrev === true)) {\n s.setGrabCursor(false);\n }\n \n // Time diff\n var touchEndTime = Date.now();\n var timeDiff = touchEndTime - touchStartTime;\n \n // Tap, doubleTap, Click\n if (s.allowClick) {\n s.updateClickedSlide(e);\n s.emit('onTap', s, e);\n if (timeDiff < 300 && (touchEndTime - lastClickTime) > 300) {\n if (clickTimeout) clearTimeout(clickTimeout);\n clickTimeout = setTimeout(function () {\n if (!s) return;\n if (s.params.paginationHide && s.paginationContainer.length > 0 && !$(e.target).hasClass(s.params.bulletClass)) {\n s.paginationContainer.toggleClass(s.params.paginationHiddenClass);\n }\n s.emit('onClick', s, e);\n }, 300);\n \n }\n if (timeDiff < 300 && (touchEndTime - lastClickTime) < 300) {\n if (clickTimeout) clearTimeout(clickTimeout);\n s.emit('onDoubleTap', s, e);\n }\n }\n \n lastClickTime = Date.now();\n setTimeout(function () {\n if (s) s.allowClick = true;\n }, 0);\n \n if (!isTouched || !isMoved || !s.swipeDirection || s.touches.diff === 0 || currentTranslate === startTranslate) {\n isTouched = isMoved = false;\n return;\n }\n isTouched = isMoved = false;\n \n var currentPos;\n if (s.params.followFinger) {\n currentPos = s.rtl ? s.translate : -s.translate;\n }\n else {\n currentPos = -currentTranslate;\n }\n if (s.params.freeMode) {\n if (currentPos < -s.minTranslate()) {\n s.slideTo(s.activeIndex);\n return;\n }\n else if (currentPos > -s.maxTranslate()) {\n if (s.slides.length < s.snapGrid.length) {\n s.slideTo(s.snapGrid.length - 1);\n }\n else {\n s.slideTo(s.slides.length - 1);\n }\n return;\n }\n \n if (s.params.freeModeMomentum) {\n if (velocities.length > 1) {\n var lastMoveEvent = velocities.pop(), velocityEvent = velocities.pop();\n \n var distance = lastMoveEvent.position - velocityEvent.position;\n var time = lastMoveEvent.time - velocityEvent.time;\n s.velocity = distance / time;\n s.velocity = s.velocity / 2;\n if (Math.abs(s.velocity) < s.params.freeModeMinimumVelocity) {\n s.velocity = 0;\n }\n // this implies that the user stopped moving a finger then released.\n // There would be no events with distance zero, so the last event is stale.\n if (time > 150 || (new window.Date().getTime() - lastMoveEvent.time) > 300) {\n s.velocity = 0;\n }\n } else {\n s.velocity = 0;\n }\n s.velocity = s.velocity * s.params.freeModeMomentumVelocityRatio;\n \n velocities.length = 0;\n var momentumDuration = 1000 * s.params.freeModeMomentumRatio;\n var momentumDistance = s.velocity * momentumDuration;\n \n var newPosition = s.translate + momentumDistance;\n if (s.rtl) newPosition = - newPosition;\n var doBounce = false;\n var afterBouncePosition;\n var bounceAmount = Math.abs(s.velocity) * 20 * s.params.freeModeMomentumBounceRatio;\n if (newPosition < s.maxTranslate()) {\n if (s.params.freeModeMomentumBounce) {\n if (newPosition + s.maxTranslate() < -bounceAmount) {\n newPosition = s.maxTranslate() - bounceAmount;\n }\n afterBouncePosition = s.maxTranslate();\n doBounce = true;\n allowMomentumBounce = true;\n }\n else {\n newPosition = s.maxTranslate();\n }\n }\n else if (newPosition > s.minTranslate()) {\n if (s.params.freeModeMomentumBounce) {\n if (newPosition - s.minTranslate() > bounceAmount) {\n newPosition = s.minTranslate() + bounceAmount;\n }\n afterBouncePosition = s.minTranslate();\n doBounce = true;\n allowMomentumBounce = true;\n }\n else {\n newPosition = s.minTranslate();\n }\n }\n else if (s.params.freeModeSticky) {\n var j = 0,\n nextSlide;\n for (j = 0; j < s.snapGrid.length; j += 1) {\n if (s.snapGrid[j] > -newPosition) {\n nextSlide = j;\n break;\n }\n \n }\n if (Math.abs(s.snapGrid[nextSlide] - newPosition) < Math.abs(s.snapGrid[nextSlide - 1] - newPosition) || s.swipeDirection === 'next') {\n newPosition = s.snapGrid[nextSlide];\n } else {\n newPosition = s.snapGrid[nextSlide - 1];\n }\n if (!s.rtl) newPosition = - newPosition;\n }\n //Fix duration\n if (s.velocity !== 0) {\n if (s.rtl) {\n momentumDuration = Math.abs((-newPosition - s.translate) / s.velocity);\n }\n else {\n momentumDuration = Math.abs((newPosition - s.translate) / s.velocity);\n }\n }\n else if (s.params.freeModeSticky) {\n s.slideReset();\n return;\n }\n \n if (s.params.freeModeMomentumBounce && doBounce) {\n s.updateProgress(afterBouncePosition);\n s.setWrapperTransition(momentumDuration);\n s.setWrapperTranslate(newPosition);\n s.onTransitionStart();\n s.animating = true;\n s.wrapper.transitionEnd(function () {\n if (!s || !allowMomentumBounce) return;\n s.emit('onMomentumBounce', s);\n \n s.setWrapperTransition(s.params.speed);\n s.setWrapperTranslate(afterBouncePosition);\n s.wrapper.transitionEnd(function () {\n if (!s) return;\n s.onTransitionEnd();\n });\n });\n } else if (s.velocity) {\n s.updateProgress(newPosition);\n s.setWrapperTransition(momentumDuration);\n s.setWrapperTranslate(newPosition);\n s.onTransitionStart();\n if (!s.animating) {\n s.animating = true;\n s.wrapper.transitionEnd(function () {\n if (!s) return;\n s.onTransitionEnd();\n });\n }\n \n } else {\n s.updateProgress(newPosition);\n }\n \n s.updateActiveIndex();\n }\n if (!s.params.freeModeMomentum || timeDiff >= s.params.longSwipesMs) {\n s.updateProgress();\n s.updateActiveIndex();\n }\n return;\n }\n \n // Find current slide\n var i, stopIndex = 0, groupSize = s.slidesSizesGrid[0];\n for (i = 0; i < s.slidesGrid.length; i += s.params.slidesPerGroup) {\n if (typeof s.slidesGrid[i + s.params.slidesPerGroup] !== 'undefined') {\n if (currentPos >= s.slidesGrid[i] && currentPos < s.slidesGrid[i + s.params.slidesPerGroup]) {\n stopIndex = i;\n groupSize = s.slidesGrid[i + s.params.slidesPerGroup] - s.slidesGrid[i];\n }\n }\n else {\n if (currentPos >= s.slidesGrid[i]) {\n stopIndex = i;\n groupSize = s.slidesGrid[s.slidesGrid.length - 1] - s.slidesGrid[s.slidesGrid.length - 2];\n }\n }\n }\n \n // Find current slide size\n var ratio = (currentPos - s.slidesGrid[stopIndex]) / groupSize;\n \n if (timeDiff > s.params.longSwipesMs) {\n // Long touches\n if (!s.params.longSwipes) {\n s.slideTo(s.activeIndex);\n return;\n }\n if (s.swipeDirection === 'next') {\n if (ratio >= s.params.longSwipesRatio) s.slideTo(stopIndex + s.params.slidesPerGroup);\n else s.slideTo(stopIndex);\n \n }\n if (s.swipeDirection === 'prev') {\n if (ratio > (1 - s.params.longSwipesRatio)) s.slideTo(stopIndex + s.params.slidesPerGroup);\n else s.slideTo(stopIndex);\n }\n }\n else {\n // Short swipes\n if (!s.params.shortSwipes) {\n s.slideTo(s.activeIndex);\n return;\n }\n if (s.swipeDirection === 'next') {\n s.slideTo(stopIndex + s.params.slidesPerGroup);\n \n }\n if (s.swipeDirection === 'prev') {\n s.slideTo(stopIndex);\n }\n }\n };\n /*=========================\n Transitions\n ===========================*/\n s._slideTo = function (slideIndex, speed) {\n return s.slideTo(slideIndex, speed, true, true);\n };\n s.slideTo = function (slideIndex, speed, runCallbacks, internal) {\n if (typeof runCallbacks === 'undefined') runCallbacks = true;\n if (typeof slideIndex === 'undefined') slideIndex = 0;\n if (slideIndex < 0) slideIndex = 0;\n s.snapIndex = Math.floor(slideIndex / s.params.slidesPerGroup);\n if (s.snapIndex >= s.snapGrid.length) s.snapIndex = s.snapGrid.length - 1;\n \n var translate = - s.snapGrid[s.snapIndex];\n // Stop autoplay\n if (s.params.autoplay && s.autoplaying) {\n if (internal || !s.params.autoplayDisableOnInteraction) {\n s.pauseAutoplay(speed);\n }\n else {\n s.stopAutoplay();\n }\n }\n // Update progress\n s.updateProgress(translate);\n \n // Normalize slideIndex\n if(s.params.normalizeSlideIndex){\n for (var i = 0; i < s.slidesGrid.length; i++) {\n if (- Math.floor(translate * 100) >= Math.floor(s.slidesGrid[i] * 100)) {\n slideIndex = i;\n }\n }\n }\n \n // Directions locks\n if (!s.params.allowSwipeToNext && translate < s.translate && translate < s.minTranslate()) {\n return false;\n }\n if (!s.params.allowSwipeToPrev && translate > s.translate && translate > s.maxTranslate()) {\n if ((s.activeIndex || 0) !== slideIndex ) return false;\n }\n \n // Update Index\n if (typeof speed === 'undefined') speed = s.params.speed;\n s.previousIndex = s.activeIndex || 0;\n s.activeIndex = slideIndex;\n s.updateRealIndex();\n if ((s.rtl && -translate === s.translate) || (!s.rtl && translate === s.translate)) {\n // Update Height\n if (s.params.autoHeight) {\n s.updateAutoHeight();\n }\n s.updateClasses();\n if (s.params.effect !== 'slide') {\n s.setWrapperTranslate(translate);\n }\n return false;\n }\n s.updateClasses();\n s.onTransitionStart(runCallbacks);\n \n if (speed === 0 || s.browser.lteIE9) {\n s.setWrapperTranslate(translate);\n s.setWrapperTransition(0);\n s.onTransitionEnd(runCallbacks);\n }\n else {\n s.setWrapperTranslate(translate);\n s.setWrapperTransition(speed);\n if (!s.animating) {\n s.animating = true;\n s.wrapper.transitionEnd(function () {\n if (!s) return;\n s.onTransitionEnd(runCallbacks);\n });\n }\n \n }\n \n return true;\n };\n \n s.onTransitionStart = function (runCallbacks) {\n if (typeof runCallbacks === 'undefined') runCallbacks = true;\n if (s.params.autoHeight) {\n s.updateAutoHeight();\n }\n if (s.lazy) s.lazy.onTransitionStart();\n if (runCallbacks) {\n s.emit('onTransitionStart', s);\n if (s.activeIndex !== s.previousIndex) {\n s.emit('onSlideChangeStart', s);\n if (s.activeIndex > s.previousIndex) {\n s.emit('onSlideNextStart', s);\n }\n else {\n s.emit('onSlidePrevStart', s);\n }\n }\n \n }\n };\n s.onTransitionEnd = function (runCallbacks) {\n s.animating = false;\n s.setWrapperTransition(0);\n if (typeof runCallbacks === 'undefined') runCallbacks = true;\n if (s.lazy) s.lazy.onTransitionEnd();\n if (runCallbacks) {\n s.emit('onTransitionEnd', s);\n if (s.activeIndex !== s.previousIndex) {\n s.emit('onSlideChangeEnd', s);\n if (s.activeIndex > s.previousIndex) {\n s.emit('onSlideNextEnd', s);\n }\n else {\n s.emit('onSlidePrevEnd', s);\n }\n }\n }\n if (s.params.history && s.history) {\n s.history.setHistory(s.params.history, s.activeIndex);\n }\n if (s.params.hashnav && s.hashnav) {\n s.hashnav.setHash();\n }\n \n };\n s.slideNext = function (runCallbacks, speed, internal) {\n if (s.params.loop) {\n if (s.animating) return false;\n s.fixLoop();\n var clientLeft = s.container[0].clientLeft;\n return s.slideTo(s.activeIndex + s.params.slidesPerGroup, speed, runCallbacks, internal);\n }\n else return s.slideTo(s.activeIndex + s.params.slidesPerGroup, speed, runCallbacks, internal);\n };\n s._slideNext = function (speed) {\n return s.slideNext(true, speed, true);\n };\n s.slidePrev = function (runCallbacks, speed, internal) {\n if (s.params.loop) {\n if (s.animating) return false;\n s.fixLoop();\n var clientLeft = s.container[0].clientLeft;\n return s.slideTo(s.activeIndex - 1, speed, runCallbacks, internal);\n }\n else return s.slideTo(s.activeIndex - 1, speed, runCallbacks, internal);\n };\n s._slidePrev = function (speed) {\n return s.slidePrev(true, speed, true);\n };\n s.slideReset = function (runCallbacks, speed, internal) {\n return s.slideTo(s.activeIndex, speed, runCallbacks);\n };\n \n s.disableTouchControl = function () {\n s.params.onlyExternal = true;\n return true;\n };\n s.enableTouchControl = function () {\n s.params.onlyExternal = false;\n return true;\n };\n \n /*=========================\n Translate/transition helpers\n ===========================*/\n s.setWrapperTransition = function (duration, byController) {\n s.wrapper.transition(duration);\n if (s.params.effect !== 'slide' && s.effects[s.params.effect]) {\n s.effects[s.params.effect].setTransition(duration);\n }\n if (s.params.parallax && s.parallax) {\n s.parallax.setTransition(duration);\n }\n if (s.params.scrollbar && s.scrollbar) {\n s.scrollbar.setTransition(duration);\n }\n if (s.params.control && s.controller) {\n s.controller.setTransition(duration, byController);\n }\n s.emit('onSetTransition', s, duration);\n };\n s.setWrapperTranslate = function (translate, updateActiveIndex, byController) {\n var x = 0, y = 0, z = 0;\n if (s.isHorizontal()) {\n x = s.rtl ? -translate : translate;\n }\n else {\n y = translate;\n }\n \n if (s.params.roundLengths) {\n x = round(x);\n y = round(y);\n }\n \n if (!s.params.virtualTranslate) {\n if (s.support.transforms3d) s.wrapper.transform('translate3d(' + x + 'px, ' + y + 'px, ' + z + 'px)');\n else s.wrapper.transform('translate(' + x + 'px, ' + y + 'px)');\n }\n \n s.translate = s.isHorizontal() ? x : y;\n \n // Check if we need to update progress\n var progress;\n var translatesDiff = s.maxTranslate() - s.minTranslate();\n if (translatesDiff === 0) {\n progress = 0;\n }\n else {\n progress = (translate - s.minTranslate()) / (translatesDiff);\n }\n if (progress !== s.progress) {\n s.updateProgress(translate);\n }\n \n if (updateActiveIndex) s.updateActiveIndex();\n if (s.params.effect !== 'slide' && s.effects[s.params.effect]) {\n s.effects[s.params.effect].setTranslate(s.translate);\n }\n if (s.params.parallax && s.parallax) {\n s.parallax.setTranslate(s.translate);\n }\n if (s.params.scrollbar && s.scrollbar) {\n s.scrollbar.setTranslate(s.translate);\n }\n if (s.params.control && s.controller) {\n s.controller.setTranslate(s.translate, byController);\n }\n s.emit('onSetTranslate', s, s.translate);\n };\n \n s.getTranslate = function (el, axis) {\n var matrix, curTransform, curStyle, transformMatrix;\n \n // automatic axis detection\n if (typeof axis === 'undefined') {\n axis = 'x';\n }\n \n if (s.params.virtualTranslate) {\n return s.rtl ? -s.translate : s.translate;\n }\n \n curStyle = window.getComputedStyle(el, null);\n if (window.WebKitCSSMatrix) {\n curTransform = curStyle.transform || curStyle.webkitTransform;\n if (curTransform.split(',').length > 6) {\n curTransform = curTransform.split(', ').map(function(a){\n return a.replace(',','.');\n }).join(', ');\n }\n // Some old versions of Webkit choke when 'none' is passed; pass\n // empty string instead in this case\n transformMatrix = new window.WebKitCSSMatrix(curTransform === 'none' ? '' : curTransform);\n }\n else {\n transformMatrix = curStyle.MozTransform || curStyle.OTransform || curStyle.MsTransform || curStyle.msTransform || curStyle.transform || curStyle.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,');\n matrix = transformMatrix.toString().split(',');\n }\n \n if (axis === 'x') {\n //Latest Chrome and webkits Fix\n if (window.WebKitCSSMatrix)\n curTransform = transformMatrix.m41;\n //Crazy IE10 Matrix\n else if (matrix.length === 16)\n curTransform = parseFloat(matrix[12]);\n //Normal Browsers\n else\n curTransform = parseFloat(matrix[4]);\n }\n if (axis === 'y') {\n //Latest Chrome and webkits Fix\n if (window.WebKitCSSMatrix)\n curTransform = transformMatrix.m42;\n //Crazy IE10 Matrix\n else if (matrix.length === 16)\n curTransform = parseFloat(matrix[13]);\n //Normal Browsers\n else\n curTransform = parseFloat(matrix[5]);\n }\n if (s.rtl && curTransform) curTransform = -curTransform;\n return curTransform || 0;\n };\n s.getWrapperTranslate = function (axis) {\n if (typeof axis === 'undefined') {\n axis = s.isHorizontal() ? 'x' : 'y';\n }\n return s.getTranslate(s.wrapper[0], axis);\n };\n \n /*=========================\n Observer\n ===========================*/\n s.observers = [];\n function initObserver(target, options) {\n options = options || {};\n // create an observer instance\n var ObserverFunc = window.MutationObserver || window.WebkitMutationObserver;\n var observer = new ObserverFunc(function (mutations) {\n mutations.forEach(function (mutation) {\n s.onResize(true);\n s.emit('onObserverUpdate', s, mutation);\n });\n });\n \n observer.observe(target, {\n attributes: typeof options.attributes === 'undefined' ? true : options.attributes,\n childList: typeof options.childList === 'undefined' ? true : options.childList,\n characterData: typeof options.characterData === 'undefined' ? true : options.characterData\n });\n \n s.observers.push(observer);\n }\n s.initObservers = function () {\n if (s.params.observeParents) {\n var containerParents = s.container.parents();\n for (var i = 0; i < containerParents.length; i++) {\n initObserver(containerParents[i]);\n }\n }\n \n // Observe container\n initObserver(s.container[0], {childList: false});\n \n // Observe wrapper\n initObserver(s.wrapper[0], {attributes: false});\n };\n s.disconnectObservers = function () {\n for (var i = 0; i < s.observers.length; i++) {\n s.observers[i].disconnect();\n }\n s.observers = [];\n };\n /*=========================\n Loop\n ===========================*/\n // Create looped slides\n s.createLoop = function () {\n // Remove duplicated slides\n s.wrapper.children('.' + s.params.slideClass + '.' + s.params.slideDuplicateClass).remove();\n \n var slides = s.wrapper.children('.' + s.params.slideClass);\n \n if(s.params.slidesPerView === 'auto' && !s.params.loopedSlides) s.params.loopedSlides = slides.length;\n \n s.loopedSlides = parseInt(s.params.loopedSlides || s.params.slidesPerView, 10);\n s.loopedSlides = s.loopedSlides + s.params.loopAdditionalSlides;\n if (s.loopedSlides > slides.length) {\n s.loopedSlides = slides.length;\n }\n \n var prependSlides = [], appendSlides = [], i;\n slides.each(function (index, el) {\n var slide = $(this);\n if (index < s.loopedSlides) appendSlides.push(el);\n if (index < slides.length && index >= slides.length - s.loopedSlides) prependSlides.push(el);\n slide.attr('data-swiper-slide-index', index);\n });\n for (i = 0; i < appendSlides.length; i++) {\n s.wrapper.append($(appendSlides[i].cloneNode(true)).addClass(s.params.slideDuplicateClass));\n }\n for (i = prependSlides.length - 1; i >= 0; i--) {\n s.wrapper.prepend($(prependSlides[i].cloneNode(true)).addClass(s.params.slideDuplicateClass));\n }\n };\n s.destroyLoop = function () {\n s.wrapper.children('.' + s.params.slideClass + '.' + s.params.slideDuplicateClass).remove();\n s.slides.removeAttr('data-swiper-slide-index');\n };\n s.reLoop = function (updatePosition) {\n var oldIndex = s.activeIndex - s.loopedSlides;\n s.destroyLoop();\n s.createLoop();\n s.updateSlidesSize();\n if (updatePosition) {\n s.slideTo(oldIndex + s.loopedSlides, 0, false);\n }\n \n };\n s.fixLoop = function () {\n var newIndex;\n //Fix For Negative Oversliding\n if (s.activeIndex < s.loopedSlides) {\n newIndex = s.slides.length - s.loopedSlides * 3 + s.activeIndex;\n newIndex = newIndex + s.loopedSlides;\n s.slideTo(newIndex, 0, false, true);\n }\n //Fix For Positive Oversliding\n else if ((s.params.slidesPerView === 'auto' && s.activeIndex >= s.loopedSlides * 2) || (s.activeIndex > s.slides.length - s.params.slidesPerView * 2)) {\n newIndex = -s.slides.length + s.activeIndex + s.loopedSlides;\n newIndex = newIndex + s.loopedSlides;\n s.slideTo(newIndex, 0, false, true);\n }\n };\n /*=========================\n Append/Prepend/Remove Slides\n ===========================*/\n s.appendSlide = function (slides) {\n if (s.params.loop) {\n s.destroyLoop();\n }\n if (typeof slides === 'object' && slides.length) {\n for (var i = 0; i < slides.length; i++) {\n if (slides[i]) s.wrapper.append(slides[i]);\n }\n }\n else {\n s.wrapper.append(slides);\n }\n if (s.params.loop) {\n s.createLoop();\n }\n if (!(s.params.observer && s.support.observer)) {\n s.update(true);\n }\n };\n s.prependSlide = function (slides) {\n if (s.params.loop) {\n s.destroyLoop();\n }\n var newActiveIndex = s.activeIndex + 1;\n if (typeof slides === 'object' && slides.length) {\n for (var i = 0; i < slides.length; i++) {\n if (slides[i]) s.wrapper.prepend(slides[i]);\n }\n newActiveIndex = s.activeIndex + slides.length;\n }\n else {\n s.wrapper.prepend(slides);\n }\n if (s.params.loop) {\n s.createLoop();\n }\n if (!(s.params.observer && s.support.observer)) {\n s.update(true);\n }\n s.slideTo(newActiveIndex, 0, false);\n };\n s.removeSlide = function (slidesIndexes) {\n if (s.params.loop) {\n s.destroyLoop();\n s.slides = s.wrapper.children('.' + s.params.slideClass);\n }\n var newActiveIndex = s.activeIndex,\n indexToRemove;\n if (typeof slidesIndexes === 'object' && slidesIndexes.length) {\n for (var i = 0; i < slidesIndexes.length; i++) {\n indexToRemove = slidesIndexes[i];\n if (s.slides[indexToRemove]) s.slides.eq(indexToRemove).remove();\n if (indexToRemove < newActiveIndex) newActiveIndex--;\n }\n newActiveIndex = Math.max(newActiveIndex, 0);\n }\n else {\n indexToRemove = slidesIndexes;\n if (s.slides[indexToRemove]) s.slides.eq(indexToRemove).remove();\n if (indexToRemove < newActiveIndex) newActiveIndex--;\n newActiveIndex = Math.max(newActiveIndex, 0);\n }\n \n if (s.params.loop) {\n s.createLoop();\n }\n \n if (!(s.params.observer && s.support.observer)) {\n s.update(true);\n }\n if (s.params.loop) {\n s.slideTo(newActiveIndex + s.loopedSlides, 0, false);\n }\n else {\n s.slideTo(newActiveIndex, 0, false);\n }\n \n };\n s.removeAllSlides = function () {\n var slidesIndexes = [];\n for (var i = 0; i < s.slides.length; i++) {\n slidesIndexes.push(i);\n }\n s.removeSlide(slidesIndexes);\n };\n \n\n /*=========================\n Effects\n ===========================*/\n s.effects = {\n fade: {\n setTranslate: function () {\n for (var i = 0; i < s.slides.length; i++) {\n var slide = s.slides.eq(i);\n var offset = slide[0].swiperSlideOffset;\n var tx = -offset;\n if (!s.params.virtualTranslate) tx = tx - s.translate;\n var ty = 0;\n if (!s.isHorizontal()) {\n ty = tx;\n tx = 0;\n }\n var slideOpacity = s.params.fade.crossFade ?\n Math.max(1 - Math.abs(slide[0].progress), 0) :\n 1 + Math.min(Math.max(slide[0].progress, -1), 0);\n slide\n .css({\n opacity: slideOpacity\n })\n .transform('translate3d(' + tx + 'px, ' + ty + 'px, 0px)');\n \n }\n \n },\n setTransition: function (duration) {\n s.slides.transition(duration);\n if (s.params.virtualTranslate && duration !== 0) {\n var eventTriggered = false;\n s.slides.transitionEnd(function () {\n if (eventTriggered) return;\n if (!s) return;\n eventTriggered = true;\n s.animating = false;\n var triggerEvents = ['webkitTransitionEnd', 'transitionend', 'oTransitionEnd', 'MSTransitionEnd', 'msTransitionEnd'];\n for (var i = 0; i < triggerEvents.length; i++) {\n s.wrapper.trigger(triggerEvents[i]);\n }\n });\n }\n }\n },\n flip: {\n setTranslate: function () {\n for (var i = 0; i < s.slides.length; i++) {\n var slide = s.slides.eq(i);\n var progress = slide[0].progress;\n if (s.params.flip.limitRotation) {\n progress = Math.max(Math.min(slide[0].progress, 1), -1);\n }\n var offset = slide[0].swiperSlideOffset;\n var rotate = -180 * progress,\n rotateY = rotate,\n rotateX = 0,\n tx = -offset,\n ty = 0;\n if (!s.isHorizontal()) {\n ty = tx;\n tx = 0;\n rotateX = -rotateY;\n rotateY = 0;\n }\n else if (s.rtl) {\n rotateY = -rotateY;\n }\n \n slide[0].style.zIndex = -Math.abs(Math.round(progress)) + s.slides.length;\n \n if (s.params.flip.slideShadows) {\n //Set shadows\n var shadowBefore = s.isHorizontal() ? slide.find('.swiper-slide-shadow-left') : slide.find('.swiper-slide-shadow-top');\n var shadowAfter = s.isHorizontal() ? slide.find('.swiper-slide-shadow-right') : slide.find('.swiper-slide-shadow-bottom');\n if (shadowBefore.length === 0) {\n shadowBefore = $('
');\n slide.append(shadowBefore);\n }\n if (shadowAfter.length === 0) {\n shadowAfter = $('
');\n slide.append(shadowAfter);\n }\n if (shadowBefore.length) shadowBefore[0].style.opacity = Math.max(-progress, 0);\n if (shadowAfter.length) shadowAfter[0].style.opacity = Math.max(progress, 0);\n }\n \n slide\n .transform('translate3d(' + tx + 'px, ' + ty + 'px, 0px) rotateX(' + rotateX + 'deg) rotateY(' + rotateY + 'deg)');\n }\n },\n setTransition: function (duration) {\n s.slides.transition(duration).find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').transition(duration);\n if (s.params.virtualTranslate && duration !== 0) {\n var eventTriggered = false;\n s.slides.eq(s.activeIndex).transitionEnd(function () {\n if (eventTriggered) return;\n if (!s) return;\n if (!$(this).hasClass(s.params.slideActiveClass)) return;\n eventTriggered = true;\n s.animating = false;\n var triggerEvents = ['webkitTransitionEnd', 'transitionend', 'oTransitionEnd', 'MSTransitionEnd', 'msTransitionEnd'];\n for (var i = 0; i < triggerEvents.length; i++) {\n s.wrapper.trigger(triggerEvents[i]);\n }\n });\n }\n }\n },\n cube: {\n setTranslate: function () {\n var wrapperRotate = 0, cubeShadow;\n if (s.params.cube.shadow) {\n if (s.isHorizontal()) {\n cubeShadow = s.wrapper.find('.swiper-cube-shadow');\n if (cubeShadow.length === 0) {\n cubeShadow = $('
');\n s.wrapper.append(cubeShadow);\n }\n cubeShadow.css({height: s.width + 'px'});\n }\n else {\n cubeShadow = s.container.find('.swiper-cube-shadow');\n if (cubeShadow.length === 0) {\n cubeShadow = $('
');\n s.container.append(cubeShadow);\n }\n }\n }\n for (var i = 0; i < s.slides.length; i++) {\n var slide = s.slides.eq(i);\n var slideAngle = i * 90;\n var round = Math.floor(slideAngle / 360);\n if (s.rtl) {\n slideAngle = -slideAngle;\n round = Math.floor(-slideAngle / 360);\n }\n var progress = Math.max(Math.min(slide[0].progress, 1), -1);\n var tx = 0, ty = 0, tz = 0;\n if (i % 4 === 0) {\n tx = - round * 4 * s.size;\n tz = 0;\n }\n else if ((i - 1) % 4 === 0) {\n tx = 0;\n tz = - round * 4 * s.size;\n }\n else if ((i - 2) % 4 === 0) {\n tx = s.size + round * 4 * s.size;\n tz = s.size;\n }\n else if ((i - 3) % 4 === 0) {\n tx = - s.size;\n tz = 3 * s.size + s.size * 4 * round;\n }\n if (s.rtl) {\n tx = -tx;\n }\n \n if (!s.isHorizontal()) {\n ty = tx;\n tx = 0;\n }\n \n var transform = 'rotateX(' + (s.isHorizontal() ? 0 : -slideAngle) + 'deg) rotateY(' + (s.isHorizontal() ? slideAngle : 0) + 'deg) translate3d(' + tx + 'px, ' + ty + 'px, ' + tz + 'px)';\n if (progress <= 1 && progress > -1) {\n wrapperRotate = i * 90 + progress * 90;\n if (s.rtl) wrapperRotate = -i * 90 - progress * 90;\n }\n slide.transform(transform);\n if (s.params.cube.slideShadows) {\n //Set shadows\n var shadowBefore = s.isHorizontal() ? slide.find('.swiper-slide-shadow-left') : slide.find('.swiper-slide-shadow-top');\n var shadowAfter = s.isHorizontal() ? slide.find('.swiper-slide-shadow-right') : slide.find('.swiper-slide-shadow-bottom');\n if (shadowBefore.length === 0) {\n shadowBefore = $('
');\n slide.append(shadowBefore);\n }\n if (shadowAfter.length === 0) {\n shadowAfter = $('
');\n slide.append(shadowAfter);\n }\n if (shadowBefore.length) shadowBefore[0].style.opacity = Math.max(-progress, 0);\n if (shadowAfter.length) shadowAfter[0].style.opacity = Math.max(progress, 0);\n }\n }\n s.wrapper.css({\n '-webkit-transform-origin': '50% 50% -' + (s.size / 2) + 'px',\n '-moz-transform-origin': '50% 50% -' + (s.size / 2) + 'px',\n '-ms-transform-origin': '50% 50% -' + (s.size / 2) + 'px',\n 'transform-origin': '50% 50% -' + (s.size / 2) + 'px'\n });\n \n if (s.params.cube.shadow) {\n if (s.isHorizontal()) {\n cubeShadow.transform('translate3d(0px, ' + (s.width / 2 + s.params.cube.shadowOffset) + 'px, ' + (-s.width / 2) + 'px) rotateX(90deg) rotateZ(0deg) scale(' + (s.params.cube.shadowScale) + ')');\n }\n else {\n var shadowAngle = Math.abs(wrapperRotate) - Math.floor(Math.abs(wrapperRotate) / 90) * 90;\n var multiplier = 1.5 - (Math.sin(shadowAngle * 2 * Math.PI / 360) / 2 + Math.cos(shadowAngle * 2 * Math.PI / 360) / 2);\n var scale1 = s.params.cube.shadowScale,\n scale2 = s.params.cube.shadowScale / multiplier,\n offset = s.params.cube.shadowOffset;\n cubeShadow.transform('scale3d(' + scale1 + ', 1, ' + scale2 + ') translate3d(0px, ' + (s.height / 2 + offset) + 'px, ' + (-s.height / 2 / scale2) + 'px) rotateX(-90deg)');\n }\n }\n var zFactor = (s.isSafari || s.isUiWebView) ? (-s.size / 2) : 0;\n s.wrapper.transform('translate3d(0px,0,' + zFactor + 'px) rotateX(' + (s.isHorizontal() ? 0 : wrapperRotate) + 'deg) rotateY(' + (s.isHorizontal() ? -wrapperRotate : 0) + 'deg)');\n },\n setTransition: function (duration) {\n s.slides.transition(duration).find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').transition(duration);\n if (s.params.cube.shadow && !s.isHorizontal()) {\n s.container.find('.swiper-cube-shadow').transition(duration);\n }\n }\n },\n coverflow: {\n setTranslate: function () {\n var transform = s.translate;\n var center = s.isHorizontal() ? -transform + s.width / 2 : -transform + s.height / 2;\n var rotate = s.isHorizontal() ? s.params.coverflow.rotate: -s.params.coverflow.rotate;\n var translate = s.params.coverflow.depth;\n //Each slide offset from center\n for (var i = 0, length = s.slides.length; i < length; i++) {\n var slide = s.slides.eq(i);\n var slideSize = s.slidesSizesGrid[i];\n var slideOffset = slide[0].swiperSlideOffset;\n var offsetMultiplier = (center - slideOffset - slideSize / 2) / slideSize * s.params.coverflow.modifier;\n \n var rotateY = s.isHorizontal() ? rotate * offsetMultiplier : 0;\n var rotateX = s.isHorizontal() ? 0 : rotate * offsetMultiplier;\n // var rotateZ = 0\n var translateZ = -translate * Math.abs(offsetMultiplier);\n \n var translateY = s.isHorizontal() ? 0 : s.params.coverflow.stretch * (offsetMultiplier);\n var translateX = s.isHorizontal() ? s.params.coverflow.stretch * (offsetMultiplier) : 0;\n \n //Fix for ultra small values\n if (Math.abs(translateX) < 0.001) translateX = 0;\n if (Math.abs(translateY) < 0.001) translateY = 0;\n if (Math.abs(translateZ) < 0.001) translateZ = 0;\n if (Math.abs(rotateY) < 0.001) rotateY = 0;\n if (Math.abs(rotateX) < 0.001) rotateX = 0;\n \n var slideTransform = 'translate3d(' + translateX + 'px,' + translateY + 'px,' + translateZ + 'px) rotateX(' + rotateX + 'deg) rotateY(' + rotateY + 'deg)';\n \n slide.transform(slideTransform);\n slide[0].style.zIndex = -Math.abs(Math.round(offsetMultiplier)) + 1;\n if (s.params.coverflow.slideShadows) {\n //Set shadows\n var shadowBefore = s.isHorizontal() ? slide.find('.swiper-slide-shadow-left') : slide.find('.swiper-slide-shadow-top');\n var shadowAfter = s.isHorizontal() ? slide.find('.swiper-slide-shadow-right') : slide.find('.swiper-slide-shadow-bottom');\n if (shadowBefore.length === 0) {\n shadowBefore = $('
');\n slide.append(shadowBefore);\n }\n if (shadowAfter.length === 0) {\n shadowAfter = $('
');\n slide.append(shadowAfter);\n }\n if (shadowBefore.length) shadowBefore[0].style.opacity = offsetMultiplier > 0 ? offsetMultiplier : 0;\n if (shadowAfter.length) shadowAfter[0].style.opacity = (-offsetMultiplier) > 0 ? -offsetMultiplier : 0;\n }\n }\n \n //Set correct perspective for IE10\n if (s.browser.ie) {\n var ws = s.wrapper[0].style;\n ws.perspectiveOrigin = center + 'px 50%';\n }\n },\n setTransition: function (duration) {\n s.slides.transition(duration).find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').transition(duration);\n }\n }\n };\n \n\n /*=========================\n Images Lazy Loading\n ===========================*/\n s.lazy = {\n initialImageLoaded: false,\n loadImageInSlide: function (index, loadInDuplicate) {\n if (typeof index === 'undefined') return;\n if (typeof loadInDuplicate === 'undefined') loadInDuplicate = true;\n if (s.slides.length === 0) return;\n \n var slide = s.slides.eq(index);\n var img = slide.find('.' + s.params.lazyLoadingClass + ':not(.' + s.params.lazyStatusLoadedClass + '):not(.' + s.params.lazyStatusLoadingClass + ')');\n if (slide.hasClass(s.params.lazyLoadingClass) && !slide.hasClass(s.params.lazyStatusLoadedClass) && !slide.hasClass(s.params.lazyStatusLoadingClass)) {\n img = img.add(slide[0]);\n }\n if (img.length === 0) return;\n \n img.each(function () {\n var _img = $(this);\n _img.addClass(s.params.lazyStatusLoadingClass);\n var background = _img.attr('data-background');\n var src = _img.attr('data-src'),\n srcset = _img.attr('data-srcset'),\n sizes = _img.attr('data-sizes');\n s.loadImage(_img[0], (src || background), srcset, sizes, false, function () {\n if (typeof s === 'undefined' || s === null || !s) return;\n if (background) {\n _img.css('background-image', 'url(\"' + background + '\")');\n _img.removeAttr('data-background');\n }\n else {\n if (srcset) {\n _img.attr('srcset', srcset);\n _img.removeAttr('data-srcset');\n }\n if (sizes) {\n _img.attr('sizes', sizes);\n _img.removeAttr('data-sizes');\n }\n if (src) {\n _img.attr('src', src);\n _img.removeAttr('data-src');\n }\n \n }\n \n _img.addClass(s.params.lazyStatusLoadedClass).removeClass(s.params.lazyStatusLoadingClass);\n slide.find('.' + s.params.lazyPreloaderClass + ', .' + s.params.preloaderClass).remove();\n if (s.params.loop && loadInDuplicate) {\n var slideOriginalIndex = slide.attr('data-swiper-slide-index');\n if (slide.hasClass(s.params.slideDuplicateClass)) {\n var originalSlide = s.wrapper.children('[data-swiper-slide-index=\"' + slideOriginalIndex + '\"]:not(.' + s.params.slideDuplicateClass + ')');\n s.lazy.loadImageInSlide(originalSlide.index(), false);\n }\n else {\n var duplicatedSlide = s.wrapper.children('.' + s.params.slideDuplicateClass + '[data-swiper-slide-index=\"' + slideOriginalIndex + '\"]');\n s.lazy.loadImageInSlide(duplicatedSlide.index(), false);\n }\n }\n s.emit('onLazyImageReady', s, slide[0], _img[0]);\n });\n \n s.emit('onLazyImageLoad', s, slide[0], _img[0]);\n });\n \n },\n load: function () {\n var i;\n var slidesPerView = s.params.slidesPerView;\n if (slidesPerView === 'auto') {\n slidesPerView = 0;\n }\n if (!s.lazy.initialImageLoaded) s.lazy.initialImageLoaded = true;\n if (s.params.watchSlidesVisibility) {\n s.wrapper.children('.' + s.params.slideVisibleClass).each(function () {\n s.lazy.loadImageInSlide($(this).index());\n });\n }\n else {\n if (slidesPerView > 1) {\n for (i = s.activeIndex; i < s.activeIndex + slidesPerView ; i++) {\n if (s.slides[i]) s.lazy.loadImageInSlide(i);\n }\n }\n else {\n s.lazy.loadImageInSlide(s.activeIndex);\n }\n }\n if (s.params.lazyLoadingInPrevNext) {\n if (slidesPerView > 1 || (s.params.lazyLoadingInPrevNextAmount && s.params.lazyLoadingInPrevNextAmount > 1)) {\n var amount = s.params.lazyLoadingInPrevNextAmount;\n var spv = slidesPerView;\n var maxIndex = Math.min(s.activeIndex + spv + Math.max(amount, spv), s.slides.length);\n var minIndex = Math.max(s.activeIndex - Math.max(spv, amount), 0);\n // Next Slides\n for (i = s.activeIndex + slidesPerView; i < maxIndex; i++) {\n if (s.slides[i]) s.lazy.loadImageInSlide(i);\n }\n // Prev Slides\n for (i = minIndex; i < s.activeIndex ; i++) {\n if (s.slides[i]) s.lazy.loadImageInSlide(i);\n }\n }\n else {\n var nextSlide = s.wrapper.children('.' + s.params.slideNextClass);\n if (nextSlide.length > 0) s.lazy.loadImageInSlide(nextSlide.index());\n \n var prevSlide = s.wrapper.children('.' + s.params.slidePrevClass);\n if (prevSlide.length > 0) s.lazy.loadImageInSlide(prevSlide.index());\n }\n }\n },\n onTransitionStart: function () {\n if (s.params.lazyLoading) {\n if (s.params.lazyLoadingOnTransitionStart || (!s.params.lazyLoadingOnTransitionStart && !s.lazy.initialImageLoaded)) {\n s.lazy.load();\n }\n }\n },\n onTransitionEnd: function () {\n if (s.params.lazyLoading && !s.params.lazyLoadingOnTransitionStart) {\n s.lazy.load();\n }\n }\n };\n \n\n /*=========================\n Scrollbar\n ===========================*/\n s.scrollbar = {\n isTouched: false,\n setDragPosition: function (e) {\n var sb = s.scrollbar;\n var x = 0, y = 0;\n var translate;\n var pointerPosition = s.isHorizontal() ?\n ((e.type === 'touchstart' || e.type === 'touchmove') ? e.targetTouches[0].pageX : e.pageX || e.clientX) :\n ((e.type === 'touchstart' || e.type === 'touchmove') ? e.targetTouches[0].pageY : e.pageY || e.clientY) ;\n var position = (pointerPosition) - sb.track.offset()[s.isHorizontal() ? 'left' : 'top'] - sb.dragSize / 2;\n var positionMin = -s.minTranslate() * sb.moveDivider;\n var positionMax = -s.maxTranslate() * sb.moveDivider;\n if (position < positionMin) {\n position = positionMin;\n }\n else if (position > positionMax) {\n position = positionMax;\n }\n position = -position / sb.moveDivider;\n s.updateProgress(position);\n s.setWrapperTranslate(position, true);\n },\n dragStart: function (e) {\n var sb = s.scrollbar;\n sb.isTouched = true;\n e.preventDefault();\n e.stopPropagation();\n \n sb.setDragPosition(e);\n clearTimeout(sb.dragTimeout);\n \n sb.track.transition(0);\n if (s.params.scrollbarHide) {\n sb.track.css('opacity', 1);\n }\n s.wrapper.transition(100);\n sb.drag.transition(100);\n s.emit('onScrollbarDragStart', s);\n },\n dragMove: function (e) {\n var sb = s.scrollbar;\n if (!sb.isTouched) return;\n if (e.preventDefault) e.preventDefault();\n else e.returnValue = false;\n sb.setDragPosition(e);\n s.wrapper.transition(0);\n sb.track.transition(0);\n sb.drag.transition(0);\n s.emit('onScrollbarDragMove', s);\n },\n dragEnd: function (e) {\n var sb = s.scrollbar;\n if (!sb.isTouched) return;\n sb.isTouched = false;\n if (s.params.scrollbarHide) {\n clearTimeout(sb.dragTimeout);\n sb.dragTimeout = setTimeout(function () {\n sb.track.css('opacity', 0);\n sb.track.transition(400);\n }, 1000);\n \n }\n s.emit('onScrollbarDragEnd', s);\n if (s.params.scrollbarSnapOnRelease) {\n s.slideReset();\n }\n },\n draggableEvents: (function () {\n if ((s.params.simulateTouch === false && !s.support.touch)) return s.touchEventsDesktop;\n else return s.touchEvents;\n })(),\n enableDraggable: function () {\n var sb = s.scrollbar;\n var target = s.support.touch ? sb.track : document;\n $(sb.track).on(sb.draggableEvents.start, sb.dragStart);\n $(target).on(sb.draggableEvents.move, sb.dragMove);\n $(target).on(sb.draggableEvents.end, sb.dragEnd);\n },\n disableDraggable: function () {\n var sb = s.scrollbar;\n var target = s.support.touch ? sb.track : document;\n $(sb.track).off(sb.draggableEvents.start, sb.dragStart);\n $(target).off(sb.draggableEvents.move, sb.dragMove);\n $(target).off(sb.draggableEvents.end, sb.dragEnd);\n },\n set: function () {\n if (!s.params.scrollbar) return;\n var sb = s.scrollbar;\n sb.track = $(s.params.scrollbar);\n if (s.params.uniqueNavElements && typeof s.params.scrollbar === 'string' && sb.track.length > 1 && s.container.find(s.params.scrollbar).length === 1) {\n sb.track = s.container.find(s.params.scrollbar);\n }\n sb.drag = sb.track.find('.swiper-scrollbar-drag');\n if (sb.drag.length === 0) {\n sb.drag = $('
');\n sb.track.append(sb.drag);\n }\n sb.drag[0].style.width = '';\n sb.drag[0].style.height = '';\n sb.trackSize = s.isHorizontal() ? sb.track[0].offsetWidth : sb.track[0].offsetHeight;\n \n sb.divider = s.size / s.virtualSize;\n sb.moveDivider = sb.divider * (sb.trackSize / s.size);\n sb.dragSize = sb.trackSize * sb.divider;\n \n if (s.isHorizontal()) {\n sb.drag[0].style.width = sb.dragSize + 'px';\n }\n else {\n sb.drag[0].style.height = sb.dragSize + 'px';\n }\n \n if (sb.divider >= 1) {\n sb.track[0].style.display = 'none';\n }\n else {\n sb.track[0].style.display = '';\n }\n if (s.params.scrollbarHide) {\n sb.track[0].style.opacity = 0;\n }\n },\n setTranslate: function () {\n if (!s.params.scrollbar) return;\n var diff;\n var sb = s.scrollbar;\n var translate = s.translate || 0;\n var newPos;\n \n var newSize = sb.dragSize;\n newPos = (sb.trackSize - sb.dragSize) * s.progress;\n if (s.rtl && s.isHorizontal()) {\n newPos = -newPos;\n if (newPos > 0) {\n newSize = sb.dragSize - newPos;\n newPos = 0;\n }\n else if (-newPos + sb.dragSize > sb.trackSize) {\n newSize = sb.trackSize + newPos;\n }\n }\n else {\n if (newPos < 0) {\n newSize = sb.dragSize + newPos;\n newPos = 0;\n }\n else if (newPos + sb.dragSize > sb.trackSize) {\n newSize = sb.trackSize - newPos;\n }\n }\n if (s.isHorizontal()) {\n if (s.support.transforms3d) {\n sb.drag.transform('translate3d(' + (newPos) + 'px, 0, 0)');\n }\n else {\n sb.drag.transform('translateX(' + (newPos) + 'px)');\n }\n sb.drag[0].style.width = newSize + 'px';\n }\n else {\n if (s.support.transforms3d) {\n sb.drag.transform('translate3d(0px, ' + (newPos) + 'px, 0)');\n }\n else {\n sb.drag.transform('translateY(' + (newPos) + 'px)');\n }\n sb.drag[0].style.height = newSize + 'px';\n }\n if (s.params.scrollbarHide) {\n clearTimeout(sb.timeout);\n sb.track[0].style.opacity = 1;\n sb.timeout = setTimeout(function () {\n sb.track[0].style.opacity = 0;\n sb.track.transition(400);\n }, 1000);\n }\n },\n setTransition: function (duration) {\n if (!s.params.scrollbar) return;\n s.scrollbar.drag.transition(duration);\n }\n };\n \n\n /*=========================\n Controller\n ===========================*/\n s.controller = {\n LinearSpline: function (x, y) {\n var binarySearch = (function() {\n var maxIndex, minIndex, guess;\n return function(array, val) {\n minIndex = -1;\n maxIndex = array.length;\n while (maxIndex - minIndex > 1)\n if (array[guess = maxIndex + minIndex >> 1] <= val) {\n minIndex = guess;\n } else {\n maxIndex = guess;\n }\n return maxIndex;\n };\n })();\n this.x = x;\n this.y = y;\n this.lastIndex = x.length - 1;\n // Given an x value (x2), return the expected y2 value:\n // (x1,y1) is the known point before given value,\n // (x3,y3) is the known point after given value.\n var i1, i3;\n var l = this.x.length;\n \n this.interpolate = function (x2) {\n if (!x2) return 0;\n \n // Get the indexes of x1 and x3 (the array indexes before and after given x2):\n i3 = binarySearch(this.x, x2);\n i1 = i3 - 1;\n \n // We have our indexes i1 & i3, so we can calculate already:\n // y2 := ((x2−x1) × (y3−y1)) ÷ (x3−x1) + y1\n return ((x2 - this.x[i1]) * (this.y[i3] - this.y[i1])) / (this.x[i3] - this.x[i1]) + this.y[i1];\n };\n },\n //xxx: for now i will just save one spline function to to\n getInterpolateFunction: function(c){\n if(!s.controller.spline) s.controller.spline = s.params.loop ?\n new s.controller.LinearSpline(s.slidesGrid, c.slidesGrid) :\n new s.controller.LinearSpline(s.snapGrid, c.snapGrid);\n },\n setTranslate: function (translate, byController) {\n var controlled = s.params.control;\n var multiplier, controlledTranslate;\n function setControlledTranslate(c) {\n // this will create an Interpolate function based on the snapGrids\n // x is the Grid of the scrolled scroller and y will be the controlled scroller\n // it makes sense to create this only once and recall it for the interpolation\n // the function does a lot of value caching for performance\n translate = c.rtl && c.params.direction === 'horizontal' ? -s.translate : s.translate;\n if (s.params.controlBy === 'slide') {\n s.controller.getInterpolateFunction(c);\n // i am not sure why the values have to be multiplicated this way, tried to invert the snapGrid\n // but it did not work out\n controlledTranslate = -s.controller.spline.interpolate(-translate);\n }\n \n if(!controlledTranslate || s.params.controlBy === 'container'){\n multiplier = (c.maxTranslate() - c.minTranslate()) / (s.maxTranslate() - s.minTranslate());\n controlledTranslate = (translate - s.minTranslate()) * multiplier + c.minTranslate();\n }\n \n if (s.params.controlInverse) {\n controlledTranslate = c.maxTranslate() - controlledTranslate;\n }\n c.updateProgress(controlledTranslate);\n c.setWrapperTranslate(controlledTranslate, false, s);\n c.updateActiveIndex();\n }\n if (Array.isArray(controlled)) {\n for (var i = 0; i < controlled.length; i++) {\n if (controlled[i] !== byController && controlled[i] instanceof Swiper) {\n setControlledTranslate(controlled[i]);\n }\n }\n }\n else if (controlled instanceof Swiper && byController !== controlled) {\n \n setControlledTranslate(controlled);\n }\n },\n setTransition: function (duration, byController) {\n var controlled = s.params.control;\n var i;\n function setControlledTransition(c) {\n c.setWrapperTransition(duration, s);\n if (duration !== 0) {\n c.onTransitionStart();\n c.wrapper.transitionEnd(function(){\n if (!controlled) return;\n if (c.params.loop && s.params.controlBy === 'slide') {\n c.fixLoop();\n }\n c.onTransitionEnd();\n \n });\n }\n }\n if (Array.isArray(controlled)) {\n for (i = 0; i < controlled.length; i++) {\n if (controlled[i] !== byController && controlled[i] instanceof Swiper) {\n setControlledTransition(controlled[i]);\n }\n }\n }\n else if (controlled instanceof Swiper && byController !== controlled) {\n setControlledTransition(controlled);\n }\n }\n };\n \n\n /*=========================\n Hash Navigation\n ===========================*/\n s.hashnav = {\n onHashCange: function (e, a) {\n var newHash = document.location.hash.replace('#', '');\n var activeSlideHash = s.slides.eq(s.activeIndex).attr('data-hash');\n if (newHash !== activeSlideHash) {\n s.slideTo(s.wrapper.children('.' + s.params.slideClass + '[data-hash=\"' + (newHash) + '\"]').index());\n }\n },\n attachEvents: function (detach) {\n var action = detach ? 'off' : 'on';\n $(window)[action]('hashchange', s.hashnav.onHashCange);\n },\n setHash: function () {\n if (!s.hashnav.initialized || !s.params.hashnav) return;\n if (s.params.replaceState && window.history && window.history.replaceState) {\n window.history.replaceState(null, null, ('#' + s.slides.eq(s.activeIndex).attr('data-hash') || ''));\n } else {\n var slide = s.slides.eq(s.activeIndex);\n var hash = slide.attr('data-hash') || slide.attr('data-history');\n document.location.hash = hash || '';\n }\n },\n init: function () {\n if (!s.params.hashnav || s.params.history) return;\n s.hashnav.initialized = true;\n var hash = document.location.hash.replace('#', '');\n if (hash) {\n var speed = 0;\n for (var i = 0, length = s.slides.length; i < length; i++) {\n var slide = s.slides.eq(i);\n var slideHash = slide.attr('data-hash') || slide.attr('data-history');\n if (slideHash === hash && !slide.hasClass(s.params.slideDuplicateClass)) {\n var index = slide.index();\n s.slideTo(index, speed, s.params.runCallbacksOnInit, true);\n }\n }\n }\n if (s.params.hashnavWatchState) s.hashnav.attachEvents();\n },\n destroy: function () {\n if (s.params.hashnavWatchState) s.hashnav.attachEvents(true);\n }\n };\n \n\n /*=========================\n History Api with fallback to Hashnav\n ===========================*/\n s.history = {\n init: function () {\n if (!s.params.history) return;\n if (!window.history || !window.history.pushState) {\n s.params.history = false;\n s.params.hashnav = true;\n return;\n }\n s.history.initialized = true;\n this.paths = this.getPathValues();\n if (!this.paths.key && !this.paths.value) return;\n this.scrollToSlide(0, this.paths.value, s.params.runCallbacksOnInit);\n if (!s.params.replaceState) {\n window.addEventListener('popstate', this.setHistoryPopState);\n }\n },\n setHistoryPopState: function() {\n s.history.paths = s.history.getPathValues();\n s.history.scrollToSlide(s.params.speed, s.history.paths.value, false);\n },\n getPathValues: function() {\n var pathArray = window.location.pathname.slice(1).split('/');\n var total = pathArray.length;\n var key = pathArray[total - 2];\n var value = pathArray[total - 1];\n return { key: key, value: value };\n },\n setHistory: function (key, index) {\n if (!s.history.initialized || !s.params.history) return;\n var slide = s.slides.eq(index);\n var value = this.slugify(slide.attr('data-history'));\n if (!window.location.pathname.includes(key)) {\n value = key + '/' + value;\n }\n if (s.params.replaceState) {\n window.history.replaceState(null, null, value);\n } else {\n window.history.pushState(null, null, value);\n }\n },\n slugify: function(text) {\n return text.toString().toLowerCase()\n .replace(/\\s+/g, '-')\n .replace(/[^\\w\\-]+/g, '')\n .replace(/\\-\\-+/g, '-')\n .replace(/^-+/, '')\n .replace(/-+$/, '');\n },\n scrollToSlide: function(speed, value, runCallbacks) {\n if (value) {\n for (var i = 0, length = s.slides.length; i < length; i++) {\n var slide = s.slides.eq(i);\n var slideHistory = this.slugify(slide.attr('data-history'));\n if (slideHistory === value && !slide.hasClass(s.params.slideDuplicateClass)) {\n var index = slide.index();\n s.slideTo(index, speed, runCallbacks);\n }\n }\n } else {\n s.slideTo(0, speed, runCallbacks);\n }\n }\n };\n \n\n /*=========================\n Keyboard Control\n ===========================*/\n function handleKeyboard(e) {\n if (e.originalEvent) e = e.originalEvent; //jquery fix\n var kc = e.keyCode || e.charCode;\n // Directions locks\n if (!s.params.allowSwipeToNext && (s.isHorizontal() && kc === 39 || !s.isHorizontal() && kc === 40)) {\n return false;\n }\n if (!s.params.allowSwipeToPrev && (s.isHorizontal() && kc === 37 || !s.isHorizontal() && kc === 38)) {\n return false;\n }\n if (e.shiftKey || e.altKey || e.ctrlKey || e.metaKey) {\n return;\n }\n if (document.activeElement && document.activeElement.nodeName && (document.activeElement.nodeName.toLowerCase() === 'input' || document.activeElement.nodeName.toLowerCase() === 'textarea')) {\n return;\n }\n if (kc === 37 || kc === 39 || kc === 38 || kc === 40) {\n var inView = false;\n //Check that swiper should be inside of visible area of window\n if (s.container.parents('.' + s.params.slideClass).length > 0 && s.container.parents('.' + s.params.slideActiveClass).length === 0) {\n return;\n }\n var windowScroll = {\n left: window.pageXOffset,\n top: window.pageYOffset\n };\n var windowWidth = window.innerWidth;\n var windowHeight = window.innerHeight;\n var swiperOffset = s.container.offset();\n if (s.rtl) swiperOffset.left = swiperOffset.left - s.container[0].scrollLeft;\n var swiperCoord = [\n [swiperOffset.left, swiperOffset.top],\n [swiperOffset.left + s.width, swiperOffset.top],\n [swiperOffset.left, swiperOffset.top + s.height],\n [swiperOffset.left + s.width, swiperOffset.top + s.height]\n ];\n for (var i = 0; i < swiperCoord.length; i++) {\n var point = swiperCoord[i];\n if (\n point[0] >= windowScroll.left && point[0] <= windowScroll.left + windowWidth &&\n point[1] >= windowScroll.top && point[1] <= windowScroll.top + windowHeight\n ) {\n inView = true;\n }\n \n }\n if (!inView) return;\n }\n if (s.isHorizontal()) {\n if (kc === 37 || kc === 39) {\n if (e.preventDefault) e.preventDefault();\n else e.returnValue = false;\n }\n if ((kc === 39 && !s.rtl) || (kc === 37 && s.rtl)) s.slideNext();\n if ((kc === 37 && !s.rtl) || (kc === 39 && s.rtl)) s.slidePrev();\n }\n else {\n if (kc === 38 || kc === 40) {\n if (e.preventDefault) e.preventDefault();\n else e.returnValue = false;\n }\n if (kc === 40) s.slideNext();\n if (kc === 38) s.slidePrev();\n }\n s.emit('onKeyPress', s, kc);\n }\n s.disableKeyboardControl = function () {\n s.params.keyboardControl = false;\n $(document).off('keydown', handleKeyboard);\n };\n s.enableKeyboardControl = function () {\n s.params.keyboardControl = true;\n $(document).on('keydown', handleKeyboard);\n };\n \n\n /*=========================\n Mousewheel Control\n ===========================*/\n s.mousewheel = {\n event: false,\n lastScrollTime: (new window.Date()).getTime()\n };\n function isEventSupported() {\n var eventName = 'onwheel';\n var isSupported = eventName in document;\n \n if (!isSupported) {\n var element = document.createElement('div');\n element.setAttribute(eventName, 'return;');\n isSupported = typeof element[eventName] === 'function';\n }\n \n if (!isSupported &&\n document.implementation &&\n document.implementation.hasFeature &&\n // always returns true in newer browsers as per the standard.\n // @see http://dom.spec.whatwg.org/#dom-domimplementation-hasfeature\n document.implementation.hasFeature('', '') !== true ) {\n // This is the only way to test support for the `wheel` event in IE9+.\n isSupported = document.implementation.hasFeature('Events.wheel', '3.0');\n }\n \n return isSupported;\n }\n /**\n * Mouse wheel (and 2-finger trackpad) support on the web sucks. It is\n * complicated, thus this doc is long and (hopefully) detailed enough to answer\n * your questions.\n *\n * If you need to react to the mouse wheel in a predictable way, this code is\n * like your bestest friend. * hugs *\n *\n * As of today, there are 4 DOM event types you can listen to:\n *\n * 'wheel' -- Chrome(31+), FF(17+), IE(9+)\n * 'mousewheel' -- Chrome, IE(6+), Opera, Safari\n * 'MozMousePixelScroll' -- FF(3.5 only!) (2010-2013) -- don't bother!\n * 'DOMMouseScroll' -- FF(0.9.7+) since 2003\n *\n * So what to do? The is the best:\n *\n * normalizeWheel.getEventType();\n *\n * In your event callback, use this code to get sane interpretation of the\n * deltas. This code will return an object with properties:\n *\n * spinX -- normalized spin speed (use for zoom) - x plane\n * spinY -- \" - y plane\n * pixelX -- normalized distance (to pixels) - x plane\n * pixelY -- \" - y plane\n *\n * Wheel values are provided by the browser assuming you are using the wheel to\n * scroll a web page by a number of lines or pixels (or pages). Values can vary\n * significantly on different platforms and browsers, forgetting that you can\n * scroll at different speeds. Some devices (like trackpads) emit more events\n * at smaller increments with fine granularity, and some emit massive jumps with\n * linear speed or acceleration.\n *\n * This code does its best to normalize the deltas for you:\n *\n * - spin is trying to normalize how far the wheel was spun (or trackpad\n * dragged). This is super useful for zoom support where you want to\n * throw away the chunky scroll steps on the PC and make those equal to\n * the slow and smooth tiny steps on the Mac. Key data: This code tries to\n * resolve a single slow step on a wheel to 1.\n *\n * - pixel is normalizing the desired scroll delta in pixel units. You'll\n * get the crazy differences between browsers, but at least it'll be in\n * pixels!\n *\n * - positive value indicates scrolling DOWN/RIGHT, negative UP/LEFT. This\n * should translate to positive value zooming IN, negative zooming OUT.\n * This matches the newer 'wheel' event.\n *\n * Why are there spinX, spinY (or pixels)?\n *\n * - spinX is a 2-finger side drag on the trackpad, and a shift + wheel turn\n * with a mouse. It results in side-scrolling in the browser by default.\n *\n * - spinY is what you expect -- it's the classic axis of a mouse wheel.\n *\n * - I dropped spinZ/pixelZ. It is supported by the DOM 3 'wheel' event and\n * probably is by browsers in conjunction with fancy 3D controllers .. but\n * you know.\n *\n * Implementation info:\n *\n * Examples of 'wheel' event if you scroll slowly (down) by one step with an\n * average mouse:\n *\n * OS X + Chrome (mouse) - 4 pixel delta (wheelDelta -120)\n * OS X + Safari (mouse) - N/A pixel delta (wheelDelta -12)\n * OS X + Firefox (mouse) - 0.1 line delta (wheelDelta N/A)\n * Win8 + Chrome (mouse) - 100 pixel delta (wheelDelta -120)\n * Win8 + Firefox (mouse) - 3 line delta (wheelDelta -120)\n *\n * On the trackpad:\n *\n * OS X + Chrome (trackpad) - 2 pixel delta (wheelDelta -6)\n * OS X + Firefox (trackpad) - 1 pixel delta (wheelDelta N/A)\n *\n * On other/older browsers.. it's more complicated as there can be multiple and\n * also missing delta values.\n *\n * The 'wheel' event is more standard:\n *\n * http://www.w3.org/TR/DOM-Level-3-Events/#events-wheelevents\n *\n * The basics is that it includes a unit, deltaMode (pixels, lines, pages), and\n * deltaX, deltaY and deltaZ. Some browsers provide other values to maintain\n * backward compatibility with older events. Those other values help us\n * better normalize spin speed. Example of what the browsers provide:\n *\n * | event.wheelDelta | event.detail\n * ------------------+------------------+--------------\n * Safari v5/OS X | -120 | 0\n * Safari v5/Win7 | -120 | 0\n * Chrome v17/OS X | -120 | 0\n * Chrome v17/Win7 | -120 | 0\n * IE9/Win7 | -120 | undefined\n * Firefox v4/OS X | undefined | 1\n * Firefox v4/Win7 | undefined | 3\n *\n */\n function normalizeWheel( /*object*/ event ) /*object*/ {\n // Reasonable defaults\n var PIXEL_STEP = 10;\n var LINE_HEIGHT = 40;\n var PAGE_HEIGHT = 800;\n \n var sX = 0, sY = 0, // spinX, spinY\n pX = 0, pY = 0; // pixelX, pixelY\n \n // Legacy\n if( 'detail' in event ) {\n sY = event.detail;\n }\n if( 'wheelDelta' in event ) {\n sY = -event.wheelDelta / 120;\n }\n if( 'wheelDeltaY' in event ) {\n sY = -event.wheelDeltaY / 120;\n }\n if( 'wheelDeltaX' in event ) {\n sX = -event.wheelDeltaX / 120;\n }\n \n // side scrolling on FF with DOMMouseScroll\n if( 'axis' in event && event.axis === event.HORIZONTAL_AXIS ) {\n sX = sY;\n sY = 0;\n }\n \n pX = sX * PIXEL_STEP;\n pY = sY * PIXEL_STEP;\n \n if( 'deltaY' in event ) {\n pY = event.deltaY;\n }\n if( 'deltaX' in event ) {\n pX = event.deltaX;\n }\n \n if( (pX || pY) && event.deltaMode ) {\n if( event.deltaMode === 1 ) { // delta in LINE units\n pX *= LINE_HEIGHT;\n pY *= LINE_HEIGHT;\n } else { // delta in PAGE units\n pX *= PAGE_HEIGHT;\n pY *= PAGE_HEIGHT;\n }\n }\n \n // Fall-back if spin cannot be determined\n if( pX && !sX ) {\n sX = (pX < 1) ? -1 : 1;\n }\n if( pY && !sY ) {\n sY = (pY < 1) ? -1 : 1;\n }\n \n return {\n spinX: sX,\n spinY: sY,\n pixelX: pX,\n pixelY: pY\n };\n }\n if (s.params.mousewheelControl) {\n /**\n * The best combination if you prefer spinX + spinY normalization. It favors\n * the older DOMMouseScroll for Firefox, as FF does not include wheelDelta with\n * 'wheel' event, making spin speed determination impossible.\n */\n s.mousewheel.event = (navigator.userAgent.indexOf('firefox') > -1) ?\n 'DOMMouseScroll' :\n isEventSupported() ?\n 'wheel' : 'mousewheel';\n }\n function handleMousewheel(e) {\n if (e.originalEvent) e = e.originalEvent; //jquery fix\n var delta = 0;\n var rtlFactor = s.rtl ? -1 : 1;\n \n var data = normalizeWheel( e );\n \n if (s.params.mousewheelForceToAxis) {\n if (s.isHorizontal()) {\n if (Math.abs(data.pixelX) > Math.abs(data.pixelY)) delta = data.pixelX * rtlFactor;\n else return;\n }\n else {\n if (Math.abs(data.pixelY) > Math.abs(data.pixelX)) delta = data.pixelY;\n else return;\n }\n }\n else {\n delta = Math.abs(data.pixelX) > Math.abs(data.pixelY) ? - data.pixelX * rtlFactor : - data.pixelY;\n }\n \n if (delta === 0) return;\n \n if (s.params.mousewheelInvert) delta = -delta;\n \n if (!s.params.freeMode) {\n if ((new window.Date()).getTime() - s.mousewheel.lastScrollTime > 60) {\n if (delta < 0) {\n if ((!s.isEnd || s.params.loop) && !s.animating) {\n s.slideNext();\n s.emit('onScroll', s, e);\n }\n else if (s.params.mousewheelReleaseOnEdges) return true;\n }\n else {\n if ((!s.isBeginning || s.params.loop) && !s.animating) {\n s.slidePrev();\n s.emit('onScroll', s, e);\n }\n else if (s.params.mousewheelReleaseOnEdges) return true;\n }\n }\n s.mousewheel.lastScrollTime = (new window.Date()).getTime();\n \n }\n else {\n //Freemode or scrollContainer:\n var position = s.getWrapperTranslate() + delta * s.params.mousewheelSensitivity;\n var wasBeginning = s.isBeginning,\n wasEnd = s.isEnd;\n \n if (position >= s.minTranslate()) position = s.minTranslate();\n if (position <= s.maxTranslate()) position = s.maxTranslate();\n \n s.setWrapperTransition(0);\n s.setWrapperTranslate(position);\n s.updateProgress();\n s.updateActiveIndex();\n \n if (!wasBeginning && s.isBeginning || !wasEnd && s.isEnd) {\n s.updateClasses();\n }\n \n if (s.params.freeModeSticky) {\n clearTimeout(s.mousewheel.timeout);\n s.mousewheel.timeout = setTimeout(function () {\n s.slideReset();\n }, 300);\n }\n else {\n if (s.params.lazyLoading && s.lazy) {\n s.lazy.load();\n }\n }\n // Emit event\n s.emit('onScroll', s, e);\n \n // Stop autoplay\n if (s.params.autoplay && s.params.autoplayDisableOnInteraction) s.stopAutoplay();\n \n // Return page scroll on edge positions\n if (position === 0 || position === s.maxTranslate()) return;\n }\n \n if (e.preventDefault) e.preventDefault();\n else e.returnValue = false;\n return false;\n }\n s.disableMousewheelControl = function () {\n if (!s.mousewheel.event) return false;\n var target = s.container;\n if (s.params.mousewheelEventsTarged !== 'container') {\n target = $(s.params.mousewheelEventsTarged);\n }\n target.off(s.mousewheel.event, handleMousewheel);\n s.params.mousewheelControl = false;\n return true;\n };\n \n s.enableMousewheelControl = function () {\n if (!s.mousewheel.event) return false;\n var target = s.container;\n if (s.params.mousewheelEventsTarged !== 'container') {\n target = $(s.params.mousewheelEventsTarged);\n }\n target.on(s.mousewheel.event, handleMousewheel);\n s.params.mousewheelControl = true;\n return true;\n };\n \n\n /*=========================\n Parallax\n ===========================*/\n function setParallaxTransform(el, progress) {\n el = $(el);\n var p, pX, pY;\n var rtlFactor = s.rtl ? -1 : 1;\n \n p = el.attr('data-swiper-parallax') || '0';\n pX = el.attr('data-swiper-parallax-x');\n pY = el.attr('data-swiper-parallax-y');\n if (pX || pY) {\n pX = pX || '0';\n pY = pY || '0';\n }\n else {\n if (s.isHorizontal()) {\n pX = p;\n pY = '0';\n }\n else {\n pY = p;\n pX = '0';\n }\n }\n \n if ((pX).indexOf('%') >= 0) {\n pX = parseInt(pX, 10) * progress * rtlFactor + '%';\n }\n else {\n pX = pX * progress * rtlFactor + 'px' ;\n }\n if ((pY).indexOf('%') >= 0) {\n pY = parseInt(pY, 10) * progress + '%';\n }\n else {\n pY = pY * progress + 'px' ;\n }\n \n el.transform('translate3d(' + pX + ', ' + pY + ',0px)');\n }\n s.parallax = {\n setTranslate: function () {\n s.container.children('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y]').each(function(){\n setParallaxTransform(this, s.progress);\n \n });\n s.slides.each(function () {\n var slide = $(this);\n slide.find('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y]').each(function () {\n var progress = Math.min(Math.max(slide[0].progress, -1), 1);\n setParallaxTransform(this, progress);\n });\n });\n },\n setTransition: function (duration) {\n if (typeof duration === 'undefined') duration = s.params.speed;\n s.container.find('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y]').each(function(){\n var el = $(this);\n var parallaxDuration = parseInt(el.attr('data-swiper-parallax-duration'), 10) || duration;\n if (duration === 0) parallaxDuration = 0;\n el.transition(parallaxDuration);\n });\n }\n };\n \n\n /*=========================\n Zoom\n ===========================*/\n s.zoom = {\n // \"Global\" Props\n scale: 1,\n currentScale: 1,\n isScaling: false,\n gesture: {\n slide: undefined,\n slideWidth: undefined,\n slideHeight: undefined,\n image: undefined,\n imageWrap: undefined,\n zoomMax: s.params.zoomMax\n },\n image: {\n isTouched: undefined,\n isMoved: undefined,\n currentX: undefined,\n currentY: undefined,\n minX: undefined,\n minY: undefined,\n maxX: undefined,\n maxY: undefined,\n width: undefined,\n height: undefined,\n startX: undefined,\n startY: undefined,\n touchesStart: {},\n touchesCurrent: {}\n },\n velocity: {\n x: undefined,\n y: undefined,\n prevPositionX: undefined,\n prevPositionY: undefined,\n prevTime: undefined\n },\n // Calc Scale From Multi-touches\n getDistanceBetweenTouches: function (e) {\n if (e.targetTouches.length < 2) return 1;\n var x1 = e.targetTouches[0].pageX,\n y1 = e.targetTouches[0].pageY,\n x2 = e.targetTouches[1].pageX,\n y2 = e.targetTouches[1].pageY;\n var distance = Math.sqrt(Math.pow(x2 - x1, 2) + Math.pow(y2 - y1, 2));\n return distance;\n },\n // Events\n onGestureStart: function (e) {\n var z = s.zoom;\n if (!s.support.gestures) {\n if (e.type !== 'touchstart' || e.type === 'touchstart' && e.targetTouches.length < 2) {\n return;\n }\n z.gesture.scaleStart = z.getDistanceBetweenTouches(e);\n }\n if (!z.gesture.slide || !z.gesture.slide.length) {\n z.gesture.slide = $(this);\n if (z.gesture.slide.length === 0) z.gesture.slide = s.slides.eq(s.activeIndex);\n z.gesture.image = z.gesture.slide.find('img, svg, canvas');\n z.gesture.imageWrap = z.gesture.image.parent('.' + s.params.zoomContainerClass);\n z.gesture.zoomMax = z.gesture.imageWrap.attr('data-swiper-zoom') || s.params.zoomMax ;\n if (z.gesture.imageWrap.length === 0) {\n z.gesture.image = undefined;\n return;\n }\n }\n z.gesture.image.transition(0);\n z.isScaling = true;\n },\n onGestureChange: function (e) {\n var z = s.zoom;\n if (!s.support.gestures) {\n if (e.type !== 'touchmove' || e.type === 'touchmove' && e.targetTouches.length < 2) {\n return;\n }\n z.gesture.scaleMove = z.getDistanceBetweenTouches(e);\n }\n if (!z.gesture.image || z.gesture.image.length === 0) return;\n if (s.support.gestures) {\n z.scale = e.scale * z.currentScale;\n }\n else {\n z.scale = (z.gesture.scaleMove / z.gesture.scaleStart) * z.currentScale;\n }\n if (z.scale > z.gesture.zoomMax) {\n z.scale = z.gesture.zoomMax - 1 + Math.pow((z.scale - z.gesture.zoomMax + 1), 0.5);\n }\n if (z.scale < s.params.zoomMin) {\n z.scale = s.params.zoomMin + 1 - Math.pow((s.params.zoomMin - z.scale + 1), 0.5);\n }\n z.gesture.image.transform('translate3d(0,0,0) scale(' + z.scale + ')');\n },\n onGestureEnd: function (e) {\n var z = s.zoom;\n if (!s.support.gestures) {\n if (e.type !== 'touchend' || e.type === 'touchend' && e.changedTouches.length < 2) {\n return;\n }\n }\n if (!z.gesture.image || z.gesture.image.length === 0) return;\n z.scale = Math.max(Math.min(z.scale, z.gesture.zoomMax), s.params.zoomMin);\n z.gesture.image.transition(s.params.speed).transform('translate3d(0,0,0) scale(' + z.scale + ')');\n z.currentScale = z.scale;\n z.isScaling = false;\n if (z.scale === 1) z.gesture.slide = undefined;\n },\n onTouchStart: function (s, e) {\n var z = s.zoom;\n if (!z.gesture.image || z.gesture.image.length === 0) return;\n if (z.image.isTouched) return;\n if (s.device.os === 'android') e.preventDefault();\n z.image.isTouched = true;\n z.image.touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n z.image.touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n },\n onTouchMove: function (e) {\n var z = s.zoom;\n if (!z.gesture.image || z.gesture.image.length === 0) return;\n s.allowClick = false;\n if (!z.image.isTouched || !z.gesture.slide) return;\n \n if (!z.image.isMoved) {\n z.image.width = z.gesture.image[0].offsetWidth;\n z.image.height = z.gesture.image[0].offsetHeight;\n z.image.startX = s.getTranslate(z.gesture.imageWrap[0], 'x') || 0;\n z.image.startY = s.getTranslate(z.gesture.imageWrap[0], 'y') || 0;\n z.gesture.slideWidth = z.gesture.slide[0].offsetWidth;\n z.gesture.slideHeight = z.gesture.slide[0].offsetHeight;\n z.gesture.imageWrap.transition(0);\n if (s.rtl) z.image.startX = -z.image.startX;\n if (s.rtl) z.image.startY = -z.image.startY;\n }\n // Define if we need image drag\n var scaledWidth = z.image.width * z.scale;\n var scaledHeight = z.image.height * z.scale;\n \n if (scaledWidth < z.gesture.slideWidth && scaledHeight < z.gesture.slideHeight) return;\n \n z.image.minX = Math.min((z.gesture.slideWidth / 2 - scaledWidth / 2), 0);\n z.image.maxX = -z.image.minX;\n z.image.minY = Math.min((z.gesture.slideHeight / 2 - scaledHeight / 2), 0);\n z.image.maxY = -z.image.minY;\n \n z.image.touchesCurrent.x = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;\n z.image.touchesCurrent.y = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n \n if (!z.image.isMoved && !z.isScaling) {\n if (s.isHorizontal() &&\n (Math.floor(z.image.minX) === Math.floor(z.image.startX) && z.image.touchesCurrent.x < z.image.touchesStart.x) ||\n (Math.floor(z.image.maxX) === Math.floor(z.image.startX) && z.image.touchesCurrent.x > z.image.touchesStart.x)\n ) {\n z.image.isTouched = false;\n return;\n }\n else if (!s.isHorizontal() &&\n (Math.floor(z.image.minY) === Math.floor(z.image.startY) && z.image.touchesCurrent.y < z.image.touchesStart.y) ||\n (Math.floor(z.image.maxY) === Math.floor(z.image.startY) && z.image.touchesCurrent.y > z.image.touchesStart.y)\n ) {\n z.image.isTouched = false;\n return;\n }\n }\n e.preventDefault();\n e.stopPropagation();\n \n z.image.isMoved = true;\n z.image.currentX = z.image.touchesCurrent.x - z.image.touchesStart.x + z.image.startX;\n z.image.currentY = z.image.touchesCurrent.y - z.image.touchesStart.y + z.image.startY;\n \n if (z.image.currentX < z.image.minX) {\n z.image.currentX = z.image.minX + 1 - Math.pow((z.image.minX - z.image.currentX + 1), 0.8);\n }\n if (z.image.currentX > z.image.maxX) {\n z.image.currentX = z.image.maxX - 1 + Math.pow((z.image.currentX - z.image.maxX + 1), 0.8);\n }\n \n if (z.image.currentY < z.image.minY) {\n z.image.currentY = z.image.minY + 1 - Math.pow((z.image.minY - z.image.currentY + 1), 0.8);\n }\n if (z.image.currentY > z.image.maxY) {\n z.image.currentY = z.image.maxY - 1 + Math.pow((z.image.currentY - z.image.maxY + 1), 0.8);\n }\n \n //Velocity\n if (!z.velocity.prevPositionX) z.velocity.prevPositionX = z.image.touchesCurrent.x;\n if (!z.velocity.prevPositionY) z.velocity.prevPositionY = z.image.touchesCurrent.y;\n if (!z.velocity.prevTime) z.velocity.prevTime = Date.now();\n z.velocity.x = (z.image.touchesCurrent.x - z.velocity.prevPositionX) / (Date.now() - z.velocity.prevTime) / 2;\n z.velocity.y = (z.image.touchesCurrent.y - z.velocity.prevPositionY) / (Date.now() - z.velocity.prevTime) / 2;\n if (Math.abs(z.image.touchesCurrent.x - z.velocity.prevPositionX) < 2) z.velocity.x = 0;\n if (Math.abs(z.image.touchesCurrent.y - z.velocity.prevPositionY) < 2) z.velocity.y = 0;\n z.velocity.prevPositionX = z.image.touchesCurrent.x;\n z.velocity.prevPositionY = z.image.touchesCurrent.y;\n z.velocity.prevTime = Date.now();\n \n z.gesture.imageWrap.transform('translate3d(' + z.image.currentX + 'px, ' + z.image.currentY + 'px,0)');\n },\n onTouchEnd: function (s, e) {\n var z = s.zoom;\n if (!z.gesture.image || z.gesture.image.length === 0) return;\n if (!z.image.isTouched || !z.image.isMoved) {\n z.image.isTouched = false;\n z.image.isMoved = false;\n return;\n }\n z.image.isTouched = false;\n z.image.isMoved = false;\n var momentumDurationX = 300;\n var momentumDurationY = 300;\n var momentumDistanceX = z.velocity.x * momentumDurationX;\n var newPositionX = z.image.currentX + momentumDistanceX;\n var momentumDistanceY = z.velocity.y * momentumDurationY;\n var newPositionY = z.image.currentY + momentumDistanceY;\n \n //Fix duration\n if (z.velocity.x !== 0) momentumDurationX = Math.abs((newPositionX - z.image.currentX) / z.velocity.x);\n if (z.velocity.y !== 0) momentumDurationY = Math.abs((newPositionY - z.image.currentY) / z.velocity.y);\n var momentumDuration = Math.max(momentumDurationX, momentumDurationY);\n \n z.image.currentX = newPositionX;\n z.image.currentY = newPositionY;\n \n // Define if we need image drag\n var scaledWidth = z.image.width * z.scale;\n var scaledHeight = z.image.height * z.scale;\n z.image.minX = Math.min((z.gesture.slideWidth / 2 - scaledWidth / 2), 0);\n z.image.maxX = -z.image.minX;\n z.image.minY = Math.min((z.gesture.slideHeight / 2 - scaledHeight / 2), 0);\n z.image.maxY = -z.image.minY;\n z.image.currentX = Math.max(Math.min(z.image.currentX, z.image.maxX), z.image.minX);\n z.image.currentY = Math.max(Math.min(z.image.currentY, z.image.maxY), z.image.minY);\n \n z.gesture.imageWrap.transition(momentumDuration).transform('translate3d(' + z.image.currentX + 'px, ' + z.image.currentY + 'px,0)');\n },\n onTransitionEnd: function (s) {\n var z = s.zoom;\n if (z.gesture.slide && s.previousIndex !== s.activeIndex) {\n z.gesture.image.transform('translate3d(0,0,0) scale(1)');\n z.gesture.imageWrap.transform('translate3d(0,0,0)');\n z.gesture.slide = z.gesture.image = z.gesture.imageWrap = undefined;\n z.scale = z.currentScale = 1;\n }\n },\n // Toggle Zoom\n toggleZoom: function (s, e) {\n var z = s.zoom;\n if (!z.gesture.slide) {\n z.gesture.slide = s.clickedSlide ? $(s.clickedSlide) : s.slides.eq(s.activeIndex);\n z.gesture.image = z.gesture.slide.find('img, svg, canvas');\n z.gesture.imageWrap = z.gesture.image.parent('.' + s.params.zoomContainerClass);\n }\n if (!z.gesture.image || z.gesture.image.length === 0) return;\n \n var touchX, touchY, offsetX, offsetY, diffX, diffY, translateX, translateY, imageWidth, imageHeight, scaledWidth, scaledHeight, translateMinX, translateMinY, translateMaxX, translateMaxY, slideWidth, slideHeight;\n \n if (typeof z.image.touchesStart.x === 'undefined' && e) {\n touchX = e.type === 'touchend' ? e.changedTouches[0].pageX : e.pageX;\n touchY = e.type === 'touchend' ? e.changedTouches[0].pageY : e.pageY;\n }\n else {\n touchX = z.image.touchesStart.x;\n touchY = z.image.touchesStart.y;\n }\n \n if (z.scale && z.scale !== 1) {\n // Zoom Out\n z.scale = z.currentScale = 1;\n z.gesture.imageWrap.transition(300).transform('translate3d(0,0,0)');\n z.gesture.image.transition(300).transform('translate3d(0,0,0) scale(1)');\n z.gesture.slide = undefined;\n }\n else {\n // Zoom In\n z.scale = z.currentScale = z.gesture.imageWrap.attr('data-swiper-zoom') || s.params.zoomMax;\n if (e) {\n slideWidth = z.gesture.slide[0].offsetWidth;\n slideHeight = z.gesture.slide[0].offsetHeight;\n offsetX = z.gesture.slide.offset().left;\n offsetY = z.gesture.slide.offset().top;\n diffX = offsetX + slideWidth/2 - touchX;\n diffY = offsetY + slideHeight/2 - touchY;\n \n imageWidth = z.gesture.image[0].offsetWidth;\n imageHeight = z.gesture.image[0].offsetHeight;\n scaledWidth = imageWidth * z.scale;\n scaledHeight = imageHeight * z.scale;\n \n translateMinX = Math.min((slideWidth / 2 - scaledWidth / 2), 0);\n translateMinY = Math.min((slideHeight / 2 - scaledHeight / 2), 0);\n translateMaxX = -translateMinX;\n translateMaxY = -translateMinY;\n \n translateX = diffX * z.scale;\n translateY = diffY * z.scale;\n \n if (translateX < translateMinX) {\n translateX = translateMinX;\n }\n if (translateX > translateMaxX) {\n translateX = translateMaxX;\n }\n \n if (translateY < translateMinY) {\n translateY = translateMinY;\n }\n if (translateY > translateMaxY) {\n translateY = translateMaxY;\n }\n }\n else {\n translateX = 0;\n translateY = 0;\n }\n z.gesture.imageWrap.transition(300).transform('translate3d(' + translateX + 'px, ' + translateY + 'px,0)');\n z.gesture.image.transition(300).transform('translate3d(0,0,0) scale(' + z.scale + ')');\n }\n },\n // Attach/Detach Events\n attachEvents: function (detach) {\n var action = detach ? 'off' : 'on';\n \n if (s.params.zoom) {\n var target = s.slides;\n var passiveListener = s.touchEvents.start === 'touchstart' && s.support.passiveListener && s.params.passiveListeners ? {passive: true, capture: false} : false;\n // Scale image\n if (s.support.gestures) {\n s.slides[action]('gesturestart', s.zoom.onGestureStart, passiveListener);\n s.slides[action]('gesturechange', s.zoom.onGestureChange, passiveListener);\n s.slides[action]('gestureend', s.zoom.onGestureEnd, passiveListener);\n }\n else if (s.touchEvents.start === 'touchstart') {\n s.slides[action](s.touchEvents.start, s.zoom.onGestureStart, passiveListener);\n s.slides[action](s.touchEvents.move, s.zoom.onGestureChange, passiveListener);\n s.slides[action](s.touchEvents.end, s.zoom.onGestureEnd, passiveListener);\n }\n \n // Move image\n s[action]('touchStart', s.zoom.onTouchStart);\n s.slides.each(function (index, slide){\n if ($(slide).find('.' + s.params.zoomContainerClass).length > 0) {\n $(slide)[action](s.touchEvents.move, s.zoom.onTouchMove);\n }\n });\n s[action]('touchEnd', s.zoom.onTouchEnd);\n \n // Scale Out\n s[action]('transitionEnd', s.zoom.onTransitionEnd);\n if (s.params.zoomToggle) {\n s.on('doubleTap', s.zoom.toggleZoom);\n }\n }\n },\n init: function () {\n s.zoom.attachEvents();\n },\n destroy: function () {\n s.zoom.attachEvents(true);\n }\n };\n \n\n /*=========================\n Plugins API. Collect all and init all plugins\n ===========================*/\n s._plugins = [];\n for (var plugin in s.plugins) {\n var p = s.plugins[plugin](s, s.params[plugin]);\n if (p) s._plugins.push(p);\n }\n // Method to call all plugins event/method\n s.callPlugins = function (eventName) {\n for (var i = 0; i < s._plugins.length; i++) {\n if (eventName in s._plugins[i]) {\n s._plugins[i][eventName](arguments[1], arguments[2], arguments[3], arguments[4], arguments[5]);\n }\n }\n };\n \n\n /*=========================\n Events/Callbacks/Plugins Emitter\n ===========================*/\n function normalizeEventName (eventName) {\n if (eventName.indexOf('on') !== 0) {\n if (eventName[0] !== eventName[0].toUpperCase()) {\n eventName = 'on' + eventName[0].toUpperCase() + eventName.substring(1);\n }\n else {\n eventName = 'on' + eventName;\n }\n }\n return eventName;\n }\n s.emitterEventListeners = {\n \n };\n s.emit = function (eventName) {\n // Trigger callbacks\n if (s.params[eventName]) {\n s.params[eventName](arguments[1], arguments[2], arguments[3], arguments[4], arguments[5]);\n }\n var i;\n // Trigger events\n if (s.emitterEventListeners[eventName]) {\n for (i = 0; i < s.emitterEventListeners[eventName].length; i++) {\n s.emitterEventListeners[eventName][i](arguments[1], arguments[2], arguments[3], arguments[4], arguments[5]);\n }\n }\n // Trigger plugins\n if (s.callPlugins) s.callPlugins(eventName, arguments[1], arguments[2], arguments[3], arguments[4], arguments[5]);\n };\n s.on = function (eventName, handler) {\n eventName = normalizeEventName(eventName);\n if (!s.emitterEventListeners[eventName]) s.emitterEventListeners[eventName] = [];\n s.emitterEventListeners[eventName].push(handler);\n return s;\n };\n s.off = function (eventName, handler) {\n var i;\n eventName = normalizeEventName(eventName);\n if (typeof handler === 'undefined') {\n // Remove all handlers for such event\n s.emitterEventListeners[eventName] = [];\n return s;\n }\n if (!s.emitterEventListeners[eventName] || s.emitterEventListeners[eventName].length === 0) return;\n for (i = 0; i < s.emitterEventListeners[eventName].length; i++) {\n if(s.emitterEventListeners[eventName][i] === handler) s.emitterEventListeners[eventName].splice(i, 1);\n }\n return s;\n };\n s.once = function (eventName, handler) {\n eventName = normalizeEventName(eventName);\n var _handler = function () {\n handler(arguments[0], arguments[1], arguments[2], arguments[3], arguments[4]);\n s.off(eventName, _handler);\n };\n s.on(eventName, _handler);\n return s;\n };\n \n\n // Accessibility tools\n s.a11y = {\n makeFocusable: function ($el) {\n $el.attr('tabIndex', '0');\n return $el;\n },\n addRole: function ($el, role) {\n $el.attr('role', role);\n return $el;\n },\n \n addLabel: function ($el, label) {\n $el.attr('aria-label', label);\n return $el;\n },\n \n disable: function ($el) {\n $el.attr('aria-disabled', true);\n return $el;\n },\n \n enable: function ($el) {\n $el.attr('aria-disabled', false);\n return $el;\n },\n \n onEnterKey: function (event) {\n if (event.keyCode !== 13) return;\n if ($(event.target).is(s.params.nextButton)) {\n s.onClickNext(event);\n if (s.isEnd) {\n s.a11y.notify(s.params.lastSlideMessage);\n }\n else {\n s.a11y.notify(s.params.nextSlideMessage);\n }\n }\n else if ($(event.target).is(s.params.prevButton)) {\n s.onClickPrev(event);\n if (s.isBeginning) {\n s.a11y.notify(s.params.firstSlideMessage);\n }\n else {\n s.a11y.notify(s.params.prevSlideMessage);\n }\n }\n if ($(event.target).is('.' + s.params.bulletClass)) {\n $(event.target)[0].click();\n }\n },\n \n liveRegion: $(''),\n \n notify: function (message) {\n var notification = s.a11y.liveRegion;\n if (notification.length === 0) return;\n notification.html('');\n notification.html(message);\n },\n init: function () {\n // Setup accessibility\n if (s.params.nextButton && s.nextButton && s.nextButton.length > 0) {\n s.a11y.makeFocusable(s.nextButton);\n s.a11y.addRole(s.nextButton, 'button');\n s.a11y.addLabel(s.nextButton, s.params.nextSlideMessage);\n }\n if (s.params.prevButton && s.prevButton && s.prevButton.length > 0) {\n s.a11y.makeFocusable(s.prevButton);\n s.a11y.addRole(s.prevButton, 'button');\n s.a11y.addLabel(s.prevButton, s.params.prevSlideMessage);\n }\n \n $(s.container).append(s.a11y.liveRegion);\n },\n initPagination: function () {\n if (s.params.pagination && s.params.paginationClickable && s.bullets && s.bullets.length) {\n s.bullets.each(function () {\n var bullet = $(this);\n s.a11y.makeFocusable(bullet);\n s.a11y.addRole(bullet, 'button');\n s.a11y.addLabel(bullet, s.params.paginationBulletMessage.replace(/{{index}}/, bullet.index() + 1));\n });\n }\n },\n destroy: function () {\n if (s.a11y.liveRegion && s.a11y.liveRegion.length > 0) s.a11y.liveRegion.remove();\n }\n };\n \n\n /*=========================\n Init/Destroy\n ===========================*/\n s.init = function () {\n if (s.params.loop) s.createLoop();\n s.updateContainerSize();\n s.updateSlidesSize();\n s.updatePagination();\n if (s.params.scrollbar && s.scrollbar) {\n s.scrollbar.set();\n if (s.params.scrollbarDraggable) {\n s.scrollbar.enableDraggable();\n }\n }\n if (s.params.effect !== 'slide' && s.effects[s.params.effect]) {\n if (!s.params.loop) s.updateProgress();\n s.effects[s.params.effect].setTranslate();\n }\n if (s.params.loop) {\n s.slideTo(s.params.initialSlide + s.loopedSlides, 0, s.params.runCallbacksOnInit);\n }\n else {\n s.slideTo(s.params.initialSlide, 0, s.params.runCallbacksOnInit);\n if (s.params.initialSlide === 0) {\n if (s.parallax && s.params.parallax) s.parallax.setTranslate();\n if (s.lazy && s.params.lazyLoading) {\n s.lazy.load();\n s.lazy.initialImageLoaded = true;\n }\n }\n }\n s.attachEvents();\n if (s.params.observer && s.support.observer) {\n s.initObservers();\n }\n if (s.params.preloadImages && !s.params.lazyLoading) {\n s.preloadImages();\n }\n if (s.params.zoom && s.zoom) {\n s.zoom.init();\n }\n if (s.params.autoplay) {\n s.startAutoplay();\n }\n if (s.params.keyboardControl) {\n if (s.enableKeyboardControl) s.enableKeyboardControl();\n }\n if (s.params.mousewheelControl) {\n if (s.enableMousewheelControl) s.enableMousewheelControl();\n }\n // Deprecated hashnavReplaceState changed to replaceState for use in hashnav and history\n if (s.params.hashnavReplaceState) {\n s.params.replaceState = s.params.hashnavReplaceState;\n }\n if (s.params.history) {\n if (s.history) s.history.init();\n }\n if (s.params.hashnav) {\n if (s.hashnav) s.hashnav.init();\n }\n if (s.params.a11y && s.a11y) s.a11y.init();\n s.emit('onInit', s);\n };\n \n // Cleanup dynamic styles\n s.cleanupStyles = function () {\n // Container\n s.container.removeClass(s.classNames.join(' ')).removeAttr('style');\n \n // Wrapper\n s.wrapper.removeAttr('style');\n \n // Slides\n if (s.slides && s.slides.length) {\n s.slides\n .removeClass([\n s.params.slideVisibleClass,\n s.params.slideActiveClass,\n s.params.slideNextClass,\n s.params.slidePrevClass\n ].join(' '))\n .removeAttr('style')\n .removeAttr('data-swiper-column')\n .removeAttr('data-swiper-row');\n }\n \n // Pagination/Bullets\n if (s.paginationContainer && s.paginationContainer.length) {\n s.paginationContainer.removeClass(s.params.paginationHiddenClass);\n }\n if (s.bullets && s.bullets.length) {\n s.bullets.removeClass(s.params.bulletActiveClass);\n }\n \n // Buttons\n if (s.params.prevButton) $(s.params.prevButton).removeClass(s.params.buttonDisabledClass);\n if (s.params.nextButton) $(s.params.nextButton).removeClass(s.params.buttonDisabledClass);\n \n // Scrollbar\n if (s.params.scrollbar && s.scrollbar) {\n if (s.scrollbar.track && s.scrollbar.track.length) s.scrollbar.track.removeAttr('style');\n if (s.scrollbar.drag && s.scrollbar.drag.length) s.scrollbar.drag.removeAttr('style');\n }\n };\n \n // Destroy\n s.destroy = function (deleteInstance, cleanupStyles) {\n // Detach evebts\n s.detachEvents();\n // Stop autoplay\n s.stopAutoplay();\n // Disable draggable\n if (s.params.scrollbar && s.scrollbar) {\n if (s.params.scrollbarDraggable) {\n s.scrollbar.disableDraggable();\n }\n }\n // Destroy loop\n if (s.params.loop) {\n s.destroyLoop();\n }\n // Cleanup styles\n if (cleanupStyles) {\n s.cleanupStyles();\n }\n // Disconnect observer\n s.disconnectObservers();\n \n // Destroy zoom\n if (s.params.zoom && s.zoom) {\n s.zoom.destroy();\n }\n // Disable keyboard/mousewheel\n if (s.params.keyboardControl) {\n if (s.disableKeyboardControl) s.disableKeyboardControl();\n }\n if (s.params.mousewheelControl) {\n if (s.disableMousewheelControl) s.disableMousewheelControl();\n }\n // Disable a11y\n if (s.params.a11y && s.a11y) s.a11y.destroy();\n // Delete history popstate\n if (s.params.history && !s.params.replaceState) {\n window.removeEventListener('popstate', s.history.setHistoryPopState);\n }\n if (s.params.hashnav && s.hashnav) {\n s.hashnav.destroy();\n }\n // Destroy callback\n s.emit('onDestroy');\n // Delete instance\n if (deleteInstance !== false) s = null;\n };\n \n s.init();\n \n\n \n // Return swiper instance\n return s;\n };\n \n\n /*==================================================\n Prototype\n ====================================================*/\n Swiper.prototype = {\n isSafari: (function () {\n var ua = window.navigator.userAgent.toLowerCase();\n return (ua.indexOf('safari') >= 0 && ua.indexOf('chrome') < 0 && ua.indexOf('android') < 0);\n })(),\n isUiWebView: /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(window.navigator.userAgent),\n isArray: function (arr) {\n return Object.prototype.toString.apply(arr) === '[object Array]';\n },\n /*==================================================\n Browser\n ====================================================*/\n browser: {\n ie: window.navigator.pointerEnabled || window.navigator.msPointerEnabled,\n ieTouch: (window.navigator.msPointerEnabled && window.navigator.msMaxTouchPoints > 1) || (window.navigator.pointerEnabled && window.navigator.maxTouchPoints > 1),\n lteIE9: (function() {\n // create temporary DIV\n var div = document.createElement('div');\n // add content to tmp DIV which is wrapped into the IE HTML conditional statement\n div.innerHTML = '';\n // return true / false value based on what will browser render\n return div.getElementsByTagName('i').length === 1;\n })()\n },\n /*==================================================\n Devices\n ====================================================*/\n device: (function () {\n var ua = window.navigator.userAgent;\n var android = ua.match(/(Android);?[\\s\\/]+([\\d.]+)?/);\n var ipad = ua.match(/(iPad).*OS\\s([\\d_]+)/);\n var ipod = ua.match(/(iPod)(.*OS\\s([\\d_]+))?/);\n var iphone = !ipad && ua.match(/(iPhone\\sOS|iOS)\\s([\\d_]+)/);\n return {\n ios: ipad || iphone || ipod,\n android: android\n };\n })(),\n /*==================================================\n Feature Detection\n ====================================================*/\n support: {\n touch : (window.Modernizr && Modernizr.touch === true) || (function () {\n return !!(('ontouchstart' in window) || window.DocumentTouch && document instanceof DocumentTouch);\n })(),\n \n transforms3d : (window.Modernizr && Modernizr.csstransforms3d === true) || (function () {\n var div = document.createElement('div').style;\n return ('webkitPerspective' in div || 'MozPerspective' in div || 'OPerspective' in div || 'MsPerspective' in div || 'perspective' in div);\n })(),\n \n flexbox: (function () {\n var div = document.createElement('div').style;\n var styles = ('alignItems webkitAlignItems webkitBoxAlign msFlexAlign mozBoxAlign webkitFlexDirection msFlexDirection mozBoxDirection mozBoxOrient webkitBoxDirection webkitBoxOrient').split(' ');\n for (var i = 0; i < styles.length; i++) {\n if (styles[i] in div) return true;\n }\n })(),\n \n observer: (function () {\n return ('MutationObserver' in window || 'WebkitMutationObserver' in window);\n })(),\n \n passiveListener: (function () {\n var supportsPassive = false;\n try {\n var opts = Object.defineProperty({}, 'passive', {\n get: function() {\n supportsPassive = true;\n }\n });\n window.addEventListener('testPassiveListener', null, opts);\n } catch (e) {}\n return supportsPassive;\n })(),\n \n gestures: (function () {\n return 'ongesturestart' in window;\n })()\n },\n /*==================================================\n Plugins\n ====================================================*/\n plugins: {}\n };\n \n\n /*===========================\n Dom7 Library\n ===========================*/\n var Dom7 = (function () {\n var Dom7 = function (arr) {\n var _this = this, i = 0;\n // Create array-like object\n for (i = 0; i < arr.length; i++) {\n _this[i] = arr[i];\n }\n _this.length = arr.length;\n // Return collection with methods\n return this;\n };\n var $ = function (selector, context) {\n var arr = [], i = 0;\n if (selector && !context) {\n if (selector instanceof Dom7) {\n return selector;\n }\n }\n if (selector) {\n // String\n if (typeof selector === 'string') {\n var els, tempParent, html = selector.trim();\n if (html.indexOf('<') >= 0 && html.indexOf('>') >= 0) {\n var toCreate = 'div';\n if (html.indexOf(':~]/)) {\n // Pure ID selector\n els = [document.getElementById(selector.split('#')[1])];\n }\n else {\n // Other selectors\n els = (context || document).querySelectorAll(selector);\n }\n for (i = 0; i < els.length; i++) {\n if (els[i]) arr.push(els[i]);\n }\n }\n }\n // Node/element\n else if (selector.nodeType || selector === window || selector === document) {\n arr.push(selector);\n }\n //Array of elements or instance of Dom\n else if (selector.length > 0 && selector[0].nodeType) {\n for (i = 0; i < selector.length; i++) {\n arr.push(selector[i]);\n }\n }\n }\n return new Dom7(arr);\n };\n Dom7.prototype = {\n // Classes and attriutes\n addClass: function (className) {\n if (typeof className === 'undefined') {\n return this;\n }\n var classes = className.split(' ');\n for (var i = 0; i < classes.length; i++) {\n for (var j = 0; j < this.length; j++) {\n this[j].classList.add(classes[i]);\n }\n }\n return this;\n },\n removeClass: function (className) {\n var classes = className.split(' ');\n for (var i = 0; i < classes.length; i++) {\n for (var j = 0; j < this.length; j++) {\n this[j].classList.remove(classes[i]);\n }\n }\n return this;\n },\n hasClass: function (className) {\n if (!this[0]) return false;\n else return this[0].classList.contains(className);\n },\n toggleClass: function (className) {\n var classes = className.split(' ');\n for (var i = 0; i < classes.length; i++) {\n for (var j = 0; j < this.length; j++) {\n this[j].classList.toggle(classes[i]);\n }\n }\n return this;\n },\n attr: function (attrs, value) {\n if (arguments.length === 1 && typeof attrs === 'string') {\n // Get attr\n if (this[0]) return this[0].getAttribute(attrs);\n else return undefined;\n }\n else {\n // Set attrs\n for (var i = 0; i < this.length; i++) {\n if (arguments.length === 2) {\n // String\n this[i].setAttribute(attrs, value);\n }\n else {\n // Object\n for (var attrName in attrs) {\n this[i][attrName] = attrs[attrName];\n this[i].setAttribute(attrName, attrs[attrName]);\n }\n }\n }\n return this;\n }\n },\n removeAttr: function (attr) {\n for (var i = 0; i < this.length; i++) {\n this[i].removeAttribute(attr);\n }\n return this;\n },\n data: function (key, value) {\n if (typeof value === 'undefined') {\n // Get value\n if (this[0]) {\n var dataKey = this[0].getAttribute('data-' + key);\n if (dataKey) return dataKey;\n else if (this[0].dom7ElementDataStorage && (key in this[0].dom7ElementDataStorage)) return this[0].dom7ElementDataStorage[key];\n else return undefined;\n }\n else return undefined;\n }\n else {\n // Set value\n for (var i = 0; i < this.length; i++) {\n var el = this[i];\n if (!el.dom7ElementDataStorage) el.dom7ElementDataStorage = {};\n el.dom7ElementDataStorage[key] = value;\n }\n return this;\n }\n },\n // Transforms\n transform : function (transform) {\n for (var i = 0; i < this.length; i++) {\n var elStyle = this[i].style;\n elStyle.webkitTransform = elStyle.MsTransform = elStyle.msTransform = elStyle.MozTransform = elStyle.OTransform = elStyle.transform = transform;\n }\n return this;\n },\n transition: function (duration) {\n if (typeof duration !== 'string') {\n duration = duration + 'ms';\n }\n for (var i = 0; i < this.length; i++) {\n var elStyle = this[i].style;\n elStyle.webkitTransitionDuration = elStyle.MsTransitionDuration = elStyle.msTransitionDuration = elStyle.MozTransitionDuration = elStyle.OTransitionDuration = elStyle.transitionDuration = duration;\n }\n return this;\n },\n //Events\n on: function (eventName, targetSelector, listener, capture) {\n function handleLiveEvent(e) {\n var target = e.target;\n if ($(target).is(targetSelector)) listener.call(target, e);\n else {\n var parents = $(target).parents();\n for (var k = 0; k < parents.length; k++) {\n if ($(parents[k]).is(targetSelector)) listener.call(parents[k], e);\n }\n }\n }\n var events = eventName.split(' ');\n var i, j;\n for (i = 0; i < this.length; i++) {\n if (typeof targetSelector === 'function' || targetSelector === false) {\n // Usual events\n if (typeof targetSelector === 'function') {\n listener = arguments[1];\n capture = arguments[2] || false;\n }\n for (j = 0; j < events.length; j++) {\n this[i].addEventListener(events[j], listener, capture);\n }\n }\n else {\n //Live events\n for (j = 0; j < events.length; j++) {\n if (!this[i].dom7LiveListeners) this[i].dom7LiveListeners = [];\n this[i].dom7LiveListeners.push({listener: listener, liveListener: handleLiveEvent});\n this[i].addEventListener(events[j], handleLiveEvent, capture);\n }\n }\n }\n \n return this;\n },\n off: function (eventName, targetSelector, listener, capture) {\n var events = eventName.split(' ');\n for (var i = 0; i < events.length; i++) {\n for (var j = 0; j < this.length; j++) {\n if (typeof targetSelector === 'function' || targetSelector === false) {\n // Usual events\n if (typeof targetSelector === 'function') {\n listener = arguments[1];\n capture = arguments[2] || false;\n }\n this[j].removeEventListener(events[i], listener, capture);\n }\n else {\n // Live event\n if (this[j].dom7LiveListeners) {\n for (var k = 0; k < this[j].dom7LiveListeners.length; k++) {\n if (this[j].dom7LiveListeners[k].listener === listener) {\n this[j].removeEventListener(events[i], this[j].dom7LiveListeners[k].liveListener, capture);\n }\n }\n }\n }\n }\n }\n return this;\n },\n once: function (eventName, targetSelector, listener, capture) {\n var dom = this;\n if (typeof targetSelector === 'function') {\n targetSelector = false;\n listener = arguments[1];\n capture = arguments[2];\n }\n function proxy(e) {\n listener(e);\n dom.off(eventName, targetSelector, proxy, capture);\n }\n dom.on(eventName, targetSelector, proxy, capture);\n },\n trigger: function (eventName, eventData) {\n for (var i = 0; i < this.length; i++) {\n var evt;\n try {\n evt = new window.CustomEvent(eventName, {detail: eventData, bubbles: true, cancelable: true});\n }\n catch (e) {\n evt = document.createEvent('Event');\n evt.initEvent(eventName, true, true);\n evt.detail = eventData;\n }\n this[i].dispatchEvent(evt);\n }\n return this;\n },\n transitionEnd: function (callback) {\n var events = ['webkitTransitionEnd', 'transitionend', 'oTransitionEnd', 'MSTransitionEnd', 'msTransitionEnd'],\n i, j, dom = this;\n function fireCallBack(e) {\n /*jshint validthis:true */\n if (e.target !== this) return;\n callback.call(this, e);\n for (i = 0; i < events.length; i++) {\n dom.off(events[i], fireCallBack);\n }\n }\n if (callback) {\n for (i = 0; i < events.length; i++) {\n dom.on(events[i], fireCallBack);\n }\n }\n return this;\n },\n // Sizing/Styles\n width: function () {\n if (this[0] === window) {\n return window.innerWidth;\n }\n else {\n if (this.length > 0) {\n return parseFloat(this.css('width'));\n }\n else {\n return null;\n }\n }\n },\n outerWidth: function (includeMargins) {\n if (this.length > 0) {\n if (includeMargins)\n return this[0].offsetWidth + parseFloat(this.css('margin-right')) + parseFloat(this.css('margin-left'));\n else\n return this[0].offsetWidth;\n }\n else return null;\n },\n height: function () {\n if (this[0] === window) {\n return window.innerHeight;\n }\n else {\n if (this.length > 0) {\n return parseFloat(this.css('height'));\n }\n else {\n return null;\n }\n }\n },\n outerHeight: function (includeMargins) {\n if (this.length > 0) {\n if (includeMargins)\n return this[0].offsetHeight + parseFloat(this.css('margin-top')) + parseFloat(this.css('margin-bottom'));\n else\n return this[0].offsetHeight;\n }\n else return null;\n },\n offset: function () {\n if (this.length > 0) {\n var el = this[0];\n var box = el.getBoundingClientRect();\n var body = document.body;\n var clientTop = el.clientTop || body.clientTop || 0;\n var clientLeft = el.clientLeft || body.clientLeft || 0;\n var scrollTop = window.pageYOffset || el.scrollTop;\n var scrollLeft = window.pageXOffset || el.scrollLeft;\n return {\n top: box.top + scrollTop - clientTop,\n left: box.left + scrollLeft - clientLeft\n };\n }\n else {\n return null;\n }\n },\n css: function (props, value) {\n var i;\n if (arguments.length === 1) {\n if (typeof props === 'string') {\n if (this[0]) return window.getComputedStyle(this[0], null).getPropertyValue(props);\n }\n else {\n for (i = 0; i < this.length; i++) {\n for (var prop in props) {\n this[i].style[prop] = props[prop];\n }\n }\n return this;\n }\n }\n if (arguments.length === 2 && typeof props === 'string') {\n for (i = 0; i < this.length; i++) {\n this[i].style[props] = value;\n }\n return this;\n }\n return this;\n },\n \n //Dom manipulation\n each: function (callback) {\n for (var i = 0; i < this.length; i++) {\n callback.call(this[i], i, this[i]);\n }\n return this;\n },\n html: function (html) {\n if (typeof html === 'undefined') {\n return this[0] ? this[0].innerHTML : undefined;\n }\n else {\n for (var i = 0; i < this.length; i++) {\n this[i].innerHTML = html;\n }\n return this;\n }\n },\n text: function (text) {\n if (typeof text === 'undefined') {\n if (this[0]) {\n return this[0].textContent.trim();\n }\n else return null;\n }\n else {\n for (var i = 0; i < this.length; i++) {\n this[i].textContent = text;\n }\n return this;\n }\n },\n is: function (selector) {\n if (!this[0]) return false;\n var compareWith, i;\n if (typeof selector === 'string') {\n var el = this[0];\n if (el === document) return selector === document;\n if (el === window) return selector === window;\n \n if (el.matches) return el.matches(selector);\n else if (el.webkitMatchesSelector) return el.webkitMatchesSelector(selector);\n else if (el.mozMatchesSelector) return el.mozMatchesSelector(selector);\n else if (el.msMatchesSelector) return el.msMatchesSelector(selector);\n else {\n compareWith = $(selector);\n for (i = 0; i < compareWith.length; i++) {\n if (compareWith[i] === this[0]) return true;\n }\n return false;\n }\n }\n else if (selector === document) return this[0] === document;\n else if (selector === window) return this[0] === window;\n else {\n if (selector.nodeType || selector instanceof Dom7) {\n compareWith = selector.nodeType ? [selector] : selector;\n for (i = 0; i < compareWith.length; i++) {\n if (compareWith[i] === this[0]) return true;\n }\n return false;\n }\n return false;\n }\n \n },\n index: function () {\n if (this[0]) {\n var child = this[0];\n var i = 0;\n while ((child = child.previousSibling) !== null) {\n if (child.nodeType === 1) i++;\n }\n return i;\n }\n else return undefined;\n },\n eq: function (index) {\n if (typeof index === 'undefined') return this;\n var length = this.length;\n var returnIndex;\n if (index > length - 1) {\n return new Dom7([]);\n }\n if (index < 0) {\n returnIndex = length + index;\n if (returnIndex < 0) return new Dom7([]);\n else return new Dom7([this[returnIndex]]);\n }\n return new Dom7([this[index]]);\n },\n append: function (newChild) {\n var i, j;\n for (i = 0; i < this.length; i++) {\n if (typeof newChild === 'string') {\n var tempDiv = document.createElement('div');\n tempDiv.innerHTML = newChild;\n while (tempDiv.firstChild) {\n this[i].appendChild(tempDiv.firstChild);\n }\n }\n else if (newChild instanceof Dom7) {\n for (j = 0; j < newChild.length; j++) {\n this[i].appendChild(newChild[j]);\n }\n }\n else {\n this[i].appendChild(newChild);\n }\n }\n return this;\n },\n prepend: function (newChild) {\n var i, j;\n for (i = 0; i < this.length; i++) {\n if (typeof newChild === 'string') {\n var tempDiv = document.createElement('div');\n tempDiv.innerHTML = newChild;\n for (j = tempDiv.childNodes.length - 1; j >= 0; j--) {\n this[i].insertBefore(tempDiv.childNodes[j], this[i].childNodes[0]);\n }\n // this[i].insertAdjacentHTML('afterbegin', newChild);\n }\n else if (newChild instanceof Dom7) {\n for (j = 0; j < newChild.length; j++) {\n this[i].insertBefore(newChild[j], this[i].childNodes[0]);\n }\n }\n else {\n this[i].insertBefore(newChild, this[i].childNodes[0]);\n }\n }\n return this;\n },\n insertBefore: function (selector) {\n var before = $(selector);\n for (var i = 0; i < this.length; i++) {\n if (before.length === 1) {\n before[0].parentNode.insertBefore(this[i], before[0]);\n }\n else if (before.length > 1) {\n for (var j = 0; j < before.length; j++) {\n before[j].parentNode.insertBefore(this[i].cloneNode(true), before[j]);\n }\n }\n }\n },\n insertAfter: function (selector) {\n var after = $(selector);\n for (var i = 0; i < this.length; i++) {\n if (after.length === 1) {\n after[0].parentNode.insertBefore(this[i], after[0].nextSibling);\n }\n else if (after.length > 1) {\n for (var j = 0; j < after.length; j++) {\n after[j].parentNode.insertBefore(this[i].cloneNode(true), after[j].nextSibling);\n }\n }\n }\n },\n next: function (selector) {\n if (this.length > 0) {\n if (selector) {\n if (this[0].nextElementSibling && $(this[0].nextElementSibling).is(selector)) return new Dom7([this[0].nextElementSibling]);\n else return new Dom7([]);\n }\n else {\n if (this[0].nextElementSibling) return new Dom7([this[0].nextElementSibling]);\n else return new Dom7([]);\n }\n }\n else return new Dom7([]);\n },\n nextAll: function (selector) {\n var nextEls = [];\n var el = this[0];\n if (!el) return new Dom7([]);\n while (el.nextElementSibling) {\n var next = el.nextElementSibling;\n if (selector) {\n if($(next).is(selector)) nextEls.push(next);\n }\n else nextEls.push(next);\n el = next;\n }\n return new Dom7(nextEls);\n },\n prev: function (selector) {\n if (this.length > 0) {\n if (selector) {\n if (this[0].previousElementSibling && $(this[0].previousElementSibling).is(selector)) return new Dom7([this[0].previousElementSibling]);\n else return new Dom7([]);\n }\n else {\n if (this[0].previousElementSibling) return new Dom7([this[0].previousElementSibling]);\n else return new Dom7([]);\n }\n }\n else return new Dom7([]);\n },\n prevAll: function (selector) {\n var prevEls = [];\n var el = this[0];\n if (!el) return new Dom7([]);\n while (el.previousElementSibling) {\n var prev = el.previousElementSibling;\n if (selector) {\n if($(prev).is(selector)) prevEls.push(prev);\n }\n else prevEls.push(prev);\n el = prev;\n }\n return new Dom7(prevEls);\n },\n parent: function (selector) {\n var parents = [];\n for (var i = 0; i < this.length; i++) {\n if (selector) {\n if ($(this[i].parentNode).is(selector)) parents.push(this[i].parentNode);\n }\n else {\n parents.push(this[i].parentNode);\n }\n }\n return $($.unique(parents));\n },\n parents: function (selector) {\n var parents = [];\n for (var i = 0; i < this.length; i++) {\n var parent = this[i].parentNode;\n while (parent) {\n if (selector) {\n if ($(parent).is(selector)) parents.push(parent);\n }\n else {\n parents.push(parent);\n }\n parent = parent.parentNode;\n }\n }\n return $($.unique(parents));\n },\n find : function (selector) {\n var foundElements = [];\n for (var i = 0; i < this.length; i++) {\n var found = this[i].querySelectorAll(selector);\n for (var j = 0; j < found.length; j++) {\n foundElements.push(found[j]);\n }\n }\n return new Dom7(foundElements);\n },\n children: function (selector) {\n var children = [];\n for (var i = 0; i < this.length; i++) {\n var childNodes = this[i].childNodes;\n \n for (var j = 0; j < childNodes.length; j++) {\n if (!selector) {\n if (childNodes[j].nodeType === 1) children.push(childNodes[j]);\n }\n else {\n if (childNodes[j].nodeType === 1 && $(childNodes[j]).is(selector)) children.push(childNodes[j]);\n }\n }\n }\n return new Dom7($.unique(children));\n },\n remove: function () {\n for (var i = 0; i < this.length; i++) {\n if (this[i].parentNode) this[i].parentNode.removeChild(this[i]);\n }\n return this;\n },\n add: function () {\n var dom = this;\n var i, j;\n for (i = 0; i < arguments.length; i++) {\n var toAdd = $(arguments[i]);\n for (j = 0; j < toAdd.length; j++) {\n dom[dom.length] = toAdd[j];\n dom.length++;\n }\n }\n return dom;\n }\n };\n $.fn = Dom7.prototype;\n $.unique = function (arr) {\n var unique = [];\n for (var i = 0; i < arr.length; i++) {\n if (unique.indexOf(arr[i]) === -1) unique.push(arr[i]);\n }\n return unique;\n };\n \n return $;\n })();\n \n\n /*===========================\n Get Dom libraries\n ===========================*/\n var swiperDomPlugins = ['jQuery', 'Zepto', 'Dom7'];\n for (var i = 0; i < swiperDomPlugins.length; i++) {\n \tif (window[swiperDomPlugins[i]]) {\n \t\taddLibraryPlugin(window[swiperDomPlugins[i]]);\n \t}\n }\n // Required DOM Plugins\n var domLib;\n if (typeof Dom7 === 'undefined') {\n \tdomLib = window.Dom7 || window.Zepto || window.jQuery;\n }\n else {\n \tdomLib = Dom7;\n }\n \n\n /*===========================\n Add .swiper plugin from Dom libraries\n ===========================*/\n function addLibraryPlugin(lib) {\n lib.fn.swiper = function (params) {\n var firstInstance;\n lib(this).each(function () {\n var s = new Swiper(this, params);\n if (!firstInstance) firstInstance = s;\n });\n return firstInstance;\n };\n }\n \n if (domLib) {\n if (!('transitionEnd' in domLib.fn)) {\n domLib.fn.transitionEnd = function (callback) {\n var events = ['webkitTransitionEnd', 'transitionend', 'oTransitionEnd', 'MSTransitionEnd', 'msTransitionEnd'],\n i, j, dom = this;\n function fireCallBack(e) {\n /*jshint validthis:true */\n if (e.target !== this) return;\n callback.call(this, e);\n for (i = 0; i < events.length; i++) {\n dom.off(events[i], fireCallBack);\n }\n }\n if (callback) {\n for (i = 0; i < events.length; i++) {\n dom.on(events[i], fireCallBack);\n }\n }\n return this;\n };\n }\n if (!('transform' in domLib.fn)) {\n domLib.fn.transform = function (transform) {\n for (var i = 0; i < this.length; i++) {\n var elStyle = this[i].style;\n elStyle.webkitTransform = elStyle.MsTransform = elStyle.msTransform = elStyle.MozTransform = elStyle.OTransform = elStyle.transform = transform;\n }\n return this;\n };\n }\n if (!('transition' in domLib.fn)) {\n domLib.fn.transition = function (duration) {\n if (typeof duration !== 'string') {\n duration = duration + 'ms';\n }\n for (var i = 0; i < this.length; i++) {\n var elStyle = this[i].style;\n elStyle.webkitTransitionDuration = elStyle.MsTransitionDuration = elStyle.msTransitionDuration = elStyle.MozTransitionDuration = elStyle.OTransitionDuration = elStyle.transitionDuration = duration;\n }\n return this;\n };\n }\n if (!('outerWidth' in domLib.fn)) {\n domLib.fn.outerWidth = function (includeMargins) {\n if (this.length > 0) {\n if (includeMargins)\n return this[0].offsetWidth + parseFloat(this.css('margin-right')) + parseFloat(this.css('margin-left'));\n else\n return this[0].offsetWidth;\n }\n else return null;\n };\n }\n }\n \n\n window.Swiper = Swiper;\n})();\n\n/*===========================\nSwiper AMD Export\n===========================*/\nif (true)\n{\n module.exports = window.Swiper;\n}\nelse if (typeof define === 'function' && define.amd) {\n define([], function () {\n 'use strict';\n return window.Swiper;\n });\n}\n\n//# sourceMappingURL=maps/swiper.js.map\n\n\n/***/ }),\n/* 2 */\n/***/ (function(module, exports) {\n\n// removed by extract-text-webpack-plugin\n\n/***/ }),\n/* 3 */\n/***/ (function(module, exports, __webpack_require__) {\n\nfunction injectStyle (ssrContext) {\n __webpack_require__(8)\n}\nvar Component = __webpack_require__(0)(\n /* script */\n __webpack_require__(7),\n /* template */\n __webpack_require__(12),\n /* styles */\n injectStyle,\n /* scopeId */\n null,\n /* moduleIdentifier (server only) */\n null\n)\n\nmodule.exports = Component.exports\n\n\n/***/ }),\n/* 4 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\nObject.defineProperty(__webpack_exports__, \"__esModule\", { value: true });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__components_carousel_vue__ = __webpack_require__(3);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__components_carousel_vue___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0__components_carousel_vue__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__styles_lib_scss__ = __webpack_require__(2);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__styles_lib_scss___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_1__styles_lib_scss__);\nvar Vue = window.Vue;\nvar VueResource = window.VueResource;\n\n\n\nVue.use(VueResource);\n\nwindow.arkWidgetCarousel = {\n Init: function Init(inputData) {\n window.carousel = new Vue({\n el: inputData.el,\n data: function data() {\n return {\n config: inputData.config\n };\n },\n created: function created() {\n console.log('arkWidgetCarousel created');\n },\n render: function render(h) {\n return h(__WEBPACK_IMPORTED_MODULE_0__components_carousel_vue___default.a);\n }\n });\n }\n //\n // window.arkWidgetCarousel.Init({el: '#carousel', config: { name: 'name', alwaysShowNav: true, locale: {play: 'play now12'}, backUrl: 'http://arenaservices-testing.as.arkadiumhosted.com/gamelist/api/gamelist/get/arenapromo/', arenaName: 'arena.ac4-0.arkadium.com' }})\n\n};/* harmony default export */ __webpack_exports__[\"default\"] = (__WEBPACK_IMPORTED_MODULE_0__components_carousel_vue___default.a);\n\n/***/ }),\n/* 5 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\nObject.defineProperty(__webpack_exports__, \"__esModule\", { value: true });\n//\n//\n//\n//\n//\n//\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n name: 'swiper-slide',\n data: function data() {\n return {\n slideClass: 'swiper-slide'\n };\n },\n ready: function ready() {\n this.update();\n },\n mounted: function mounted() {\n this.update();\n if (this.$parent.options.slideClass) {\n this.slideClass = this.$parent.options.slideClass;\n }\n },\n updated: function updated() {\n this.update();\n },\n attached: function attached() {\n this.update();\n },\n methods: {\n update: function update() {\n if (this.$parent && this.$parent.swiper && this.$parent.swiper.update) {\n this.$parent.swiper.update(true);\n if (this.$parent.options.loop) {\n this.$parent.swiper.reLoop();\n }\n }\n }\n }\n});\n\n/***/ }),\n/* 6 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\nObject.defineProperty(__webpack_exports__, \"__esModule\", { value: true });\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\nvar browser = typeof window !== 'undefined';\nif (browser) window.Swiper = __webpack_require__(1);\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n name: 'swiper',\n props: {\n options: {\n type: Object,\n default: function _default() {\n return {\n autoplay: 3500\n };\n }\n },\n notNextTick: {\n type: Boolean,\n default: function _default() {\n return false;\n }\n }\n },\n data: function data() {\n return {\n defaultSwiperClasses: {\n wrapperClass: 'swiper-wrapper'\n }\n };\n },\n ready: function ready() {\n if (!this.swiper && browser) {\n this.swiper = new Swiper(this.$el, this.options);\n }\n },\n mounted: function mounted() {\n var self = this;\n var mount = function () {\n if (!self.swiper && browser) {\n delete self.options.notNextTick;\n var setClassName = false;\n for (var className in self.defaultSwiperClasses) {\n if (self.defaultSwiperClasses.hasOwnProperty(className)) {\n if (self.options[className]) {\n setClassName = true;\n self.defaultSwiperClasses[className] = self.options[className];\n }\n }\n }\n var mountInstance = function mountInstance() {\n self.swiper = new Swiper(self.$el, self.options);\n };\n setClassName ? self.$nextTick(mountInstance) : mountInstance();\n }\n }(this.options.notNextTick || this.notNextTick) ? mount() : this.$nextTick(mount);\n },\n updated: function updated() {\n if (this.swiper) {\n this.swiper.update();\n }\n },\n beforeDestroy: function beforeDestroy() {\n if (this.swiper) {\n this.swiper.destroy();\n delete this.swiper;\n }\n }\n});\n\n/***/ }),\n/* 7 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\nObject.defineProperty(__webpack_exports__, \"__esModule\", { value: true });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_vue_awesome_swiper__ = __webpack_require__(9);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_vue_awesome_swiper___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_vue_awesome_swiper__);\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\nvar Vue = window.Vue;\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n inherit: true,\n components: {\n swiper: __WEBPACK_IMPORTED_MODULE_0_vue_awesome_swiper__[\"swiper\"],\n swiperSlide: __WEBPACK_IMPORTED_MODULE_0_vue_awesome_swiper__[\"swiperSlide\"]\n },\n data: function data() {\n return {\n notNextTick: true,\n locale: this.$parent.config.locale,\n config: this.$parent.config,\n alwaysShowNav: this.$parent.config.alwaysShowNav,\n swiperOption: {\n autoplay: 3000,\n setWrapperSize: true,\n pagination: '.swiper-pagination',\n paginationClickable: true,\n nextButton: '.swiper-button-next',\n prevButton: '.swiper-button-prev',\n mousewheelControl: false,\n observeParents: true,\n loop: true,\n slidesPerView: 1\n },\n swiperSlidesIds: [],\n swiperSlides: [],\n swiperCarouselWidth: 0\n };\n },\n\n created: function created() {\n this.updateCarousel();\n },\n mounted: function mounted() {\n window.addEventListener('resize', this.handleWindowResize);\n this.handleWindowResize();\n },\n\n beforeDestroy: function beforeDestroy() {\n window.removeEventListener('resize', this.handleWindowResize);\n },\n computed: {\n swiper: function swiper() {\n return this.$refs.mySwiper.swiper;\n },\n swiperCarouselHeight: function swiperCarouselHeight() {\n return 295 / 640 * this.swiperCarouselWidth;\n }\n },\n methods: {\n updateCarousel: function updateCarousel() {\n var _this = this;\n\n Vue.http.get(this.config.backUrl, {\n headers: {\n 'X-CDN-Target-Host': this.config.arenaName\n }\n }).then(function (response) {\n if (_this.config.platform) {\n _this.swiperSlides = response.body.contents.filter(function (item) {\n return !item.settings.platform || item.settings.platform.indexOf(_this.config.platform) !== -1;\n });\n } else {\n _this.swiperSlides = response.body.contents;\n }\n _this.swiperSlidesIds = _this.getAllIds();\n setTimeout(function () {\n if (typeof window.ark !== 'undefined') {\n window.ark.triggerEvent('arkCarouselWidgetReady');\n }\n }, 500);\n }, function (response) {\n console.error(response);\n });\n },\n getImg: function getImg(slide) {\n if (slide.assets) {\n var img = slide.assets.filter(function (item) {\n return item.key === '640x295';\n })[0];\n if (img) {\n return img.url;\n }\n }\n return '';\n },\n getAllIds: function getAllIds() {\n var res = [];\n for (var i = 0; i < this.swiperSlides.length; i++) {\n res.push(this.swiperSlides[i].externalId);\n }\n return res;\n },\n getImpressionDimensionsAttribute: function getImpressionDimensionsAttribute() {\n return '[{slot: \\'6\\', value: \\'' + this.swiperSlidesIds.join('|') + '\\'}]';\n },\n getClickDimensionsAttribute: function getClickDimensionsAttribute(gameId) {\n return '[{slot: \\'5\\', value: \\'' + gameId + '|' + this.swiperSlidesIds.indexOf(gameId) + '\\'}]';\n },\n handleWindowResize: function handleWindowResize() {\n this.swiperCarouselWidth = this.$refs.swiperCarousel.clientWidth;\n },\n handleGameClick: function handleGameClick(game) {\n setTimeout(function () {\n window.location.href = '/games/' + game.externalId;\n }, 300);\n },\n getGameUrl: function getGameUrl(game) {\n if (game.pageName) {\n return '/games/' + game.pageName;\n }\n return '/games/' + game.externalId;\n }\n }\n});\n\n/***/ }),\n/* 8 */\n/***/ (function(module, exports) {\n\n// removed by extract-text-webpack-plugin\n\n/***/ }),\n/* 9 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/**\r\n * Vue-awesome-swiper\r\n * @author Surmon.me\r\n */\r\n\r\nvar Swiper = __webpack_require__(1)\r\nvar SwiperComponent = __webpack_require__(11)\r\nvar SlideComponent = __webpack_require__(10)\r\nSwiperComponent = SwiperComponent.default || SwiperComponent\r\nSlideComponent = SlideComponent.default || SlideComponent\r\nif (typeof window !== 'undefined') {\r\n window.Swiper = Swiper\r\n}\r\n\r\nvar swiper = {\r\n swiperSlide: SlideComponent,\r\n swiper: SwiperComponent,\r\n swiperPlugins: Swiper.prototype.plugins,\r\n install: function(Vue) {\r\n Vue.component(SwiperComponent.name, SwiperComponent)\r\n Vue.component(SlideComponent.name, SlideComponent)\r\n }\r\n}\r\n\r\nmodule.exports = swiper\r\n\n\n/***/ }),\n/* 10 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar Component = __webpack_require__(0)(\n /* script */\n __webpack_require__(5),\n /* template */\n __webpack_require__(13),\n /* styles */\n null,\n /* scopeId */\n null,\n /* moduleIdentifier (server only) */\n null\n)\n\nmodule.exports = Component.exports\n\n\n/***/ }),\n/* 11 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar Component = __webpack_require__(0)(\n /* script */\n __webpack_require__(6),\n /* template */\n __webpack_require__(14),\n /* styles */\n null,\n /* scopeId */\n null,\n /* moduleIdentifier (server only) */\n null\n)\n\nmodule.exports = Component.exports\n\n\n/***/ }),\n/* 12 */\n/***/ (function(module, exports) {\n\nmodule.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;\n return _c('div', {\n ref: \"swiperCarousel\",\n staticClass: \"swiper-carousel\",\n style: ({\n height: _vm.swiperCarouselHeight + 24 + 5 + 'px'\n })\n }, [(_vm.swiperSlides.length === 0) ? _c('div', {\n staticClass: \"swiper-carousel__loading-container\",\n style: ({\n height: _vm.swiperCarouselHeight + 'px'\n })\n }, [_c('svg', {\n attrs: {\n \"xmlns\": \"http://www.w3.org/2000/svg\",\n \"width\": \"44\",\n \"height\": \"12\",\n \"viewBox\": \"0 0 44 12\"\n }\n }, [_c('circle', {\n staticClass: \"dot dot-1\",\n attrs: {\n \"cx\": \"6\",\n \"cy\": \"6\",\n \"r\": \"6\"\n }\n }), _vm._v(\" \"), _c('circle', {\n staticClass: \"dot dot-2\",\n attrs: {\n \"cx\": \"22\",\n \"cy\": \"6\",\n \"r\": \"6\"\n }\n }), _vm._v(\" \"), _c('circle', {\n staticClass: \"dot dot-3\",\n attrs: {\n \"cx\": \"38\",\n \"cy\": \"6\",\n \"r\": \"6\"\n }\n })])]) : _vm._e(), _vm._v(\" \"), (_vm.swiperSlides.length !== 0) ? _c('swiper', {\n attrs: {\n \"options\": _vm.swiperOption,\n \"ark-ga-track\": 'impression',\n \"ark-ga-track-category\": 'Carousel',\n \"ark-ga-track-dimensions\": _vm.getImpressionDimensionsAttribute(),\n \"ark-ga-track-condition\": 'arkGaPageHelpers.get({ func: \\'defaultTrackCondition\\' })'\n }\n }, [_vm._l((_vm.swiperSlides), function(slide) {\n return (_vm.swiperSlides) ? _c('swiper-slide', {\n key: slide.externalId\n }, [_c('div', {\n staticClass: \"slide\",\n on: {\n \"click\": function($event) {\n _vm.handleGameClick(slide)\n }\n }\n }, [_c('a', {\n staticClass: \"ark-carousel-slide__link\",\n attrs: {\n \"href\": _vm.getGameUrl(slide),\n \"ark-ga-track\": 'click',\n \"ark-ga-track-category\": 'Carousel',\n \"ark-ga-track-condition\": 'arkGaPageHelpers.get({ func: \\'defaultTrackCondition\\' })',\n \"ark-ga-track-dimensions\": _vm.getClickDimensionsAttribute(slide.externalId)\n }\n }, [_c('img', {\n staticClass: \"slide__img\",\n attrs: {\n \"src\": _vm.getImg(slide),\n \"alt\": \"\"\n }\n }), _vm._v(\" \"), _c('div', {\n staticClass: \"slide__footer\"\n }, [_c('a', {\n staticClass: \"slide__button\",\n attrs: {\n \"href\": _vm.getGameUrl(slide)\n }\n }, [_c('span', {\n staticClass: \"slide__button-text\"\n }, [_vm._v(_vm._s(_vm.locale.play))]), _c('i', {\n staticClass: \"triangle-right\"\n })])])])])]) : _vm._e()\n }), _vm._v(\" \"), _c('div', {\n staticClass: \"swiper-pagination\",\n slot: \"pagination\"\n }), _vm._v(\" \"), _c('div', {\n class: ['swiper-button-prev', {\n 'swiper-button-always-show': _vm.alwaysShowNav\n }],\n slot: \"button-prev\"\n }), _vm._v(\" \"), _c('div', {\n class: ['swiper-button-next', {\n 'swiper-button-always-show': _vm.alwaysShowNav\n }],\n slot: \"button-next\"\n })], 2) : _vm._e()], 1)\n},staticRenderFns: []}\n\n/***/ }),\n/* 13 */\n/***/ (function(module, exports) {\n\nmodule.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;\n return _c('div', {\n class: _vm.slideClass\n }, [_vm._t(\"default\")], 2)\n},staticRenderFns: []}\n\n/***/ }),\n/* 14 */\n/***/ (function(module, exports) {\n\nmodule.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;\n return _c('div', {\n staticClass: \"swiper-container\"\n }, [_vm._t(\"parallax-bg\"), _vm._v(\" \"), _c('div', {\n class: _vm.defaultSwiperClasses.wrapperClass\n }, [_vm._t(\"default\")], 2), _vm._v(\" \"), _vm._t(\"pagination\"), _vm._v(\" \"), _vm._t(\"button-prev\"), _vm._v(\" \"), _vm._t(\"button-next\"), _vm._v(\" \"), _vm._t(\"scrollbar\")], 2)\n},staticRenderFns: []}\n\n/***/ })\n/******/ ]);\n});\n\n\n// WEBPACK FOOTER //\n// lib/carousel.min.js"," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// identity function for calling harmony imports with the correct context\n \t__webpack_require__.i = function(value) { return value; };\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/carousel/dist\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 4);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap b2028da99470d405557c","/* globals __VUE_SSR_CONTEXT__ */\n\n// this module is a runtime utility for cleaner component module output and will\n// be included in the final webpack user bundle\n\nmodule.exports = function normalizeComponent (\n rawScriptExports,\n compiledTemplate,\n injectStyles,\n scopeId,\n moduleIdentifier /* server only */\n) {\n var esModule\n var scriptExports = rawScriptExports = rawScriptExports || {}\n\n // ES6 modules interop\n var type = typeof rawScriptExports.default\n if (type === 'object' || type === 'function') {\n esModule = rawScriptExports\n scriptExports = rawScriptExports.default\n }\n\n // Vue.extend constructor export interop\n var options = typeof scriptExports === 'function'\n ? scriptExports.options\n : scriptExports\n\n // render functions\n if (compiledTemplate) {\n options.render = compiledTemplate.render\n options.staticRenderFns = compiledTemplate.staticRenderFns\n }\n\n // scopedId\n if (scopeId) {\n options._scopeId = scopeId\n }\n\n var hook\n if (moduleIdentifier) { // server build\n hook = function (context) {\n // 2.3 injection\n context =\n context || // cached call\n (this.$vnode && this.$vnode.ssrContext) || // stateful\n (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional\n // 2.2 with runInNewContext: true\n if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\n context = __VUE_SSR_CONTEXT__\n }\n // inject component styles\n if (injectStyles) {\n injectStyles.call(this, context)\n }\n // register component module identifier for async chunk inferrence\n if (context && context._registeredComponents) {\n context._registeredComponents.add(moduleIdentifier)\n }\n }\n // used by ssr in case component is cached and beforeCreate\n // never gets called\n options._ssrRegister = hook\n } else if (injectStyles) {\n hook = injectStyles\n }\n\n if (hook) {\n var functional = options.functional\n var existing = functional\n ? options.render\n : options.beforeCreate\n if (!functional) {\n // inject component registration as beforeCreate hook\n options.beforeCreate = existing\n ? [].concat(existing, hook)\n : [hook]\n } else {\n // register for functioal component in vue file\n options.render = function renderWithStyleInjection (h, context) {\n hook.call(context)\n return existing(h, context)\n }\n }\n }\n\n return {\n esModule: esModule,\n exports: scriptExports,\n options: options\n }\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/vue-loader/lib/component-normalizer.js\n// module id = 0\n// module chunks = 0","/**\n * Swiper 3.4.2\n * Most modern mobile touch slider and framework with hardware accelerated transitions\n * \n * http://www.idangero.us/swiper/\n * \n * Copyright 2017, Vladimir Kharlampidi\n * The iDangero.us\n * http://www.idangero.us/\n * \n * Licensed under MIT\n * \n * Released on: March 10, 2017\n */\n(function () {\n 'use strict';\n var $;\n\n /*===========================\n Swiper\n ===========================*/\n var Swiper = function (container, params) {\n if (!(this instanceof Swiper)) return new Swiper(container, params);\n \n\n var defaults = {\n direction: 'horizontal',\n touchEventsTarget: 'container',\n initialSlide: 0,\n speed: 300,\n // autoplay\n autoplay: false,\n autoplayDisableOnInteraction: true,\n autoplayStopOnLast: false,\n // To support iOS's swipe-to-go-back gesture (when being used in-app, with UIWebView).\n iOSEdgeSwipeDetection: false,\n iOSEdgeSwipeThreshold: 20,\n // Free mode\n freeMode: false,\n freeModeMomentum: true,\n freeModeMomentumRatio: 1,\n freeModeMomentumBounce: true,\n freeModeMomentumBounceRatio: 1,\n freeModeMomentumVelocityRatio: 1,\n freeModeSticky: false,\n freeModeMinimumVelocity: 0.02,\n // Autoheight\n autoHeight: false,\n // Set wrapper width\n setWrapperSize: false,\n // Virtual Translate\n virtualTranslate: false,\n // Effects\n effect: 'slide', // 'slide' or 'fade' or 'cube' or 'coverflow' or 'flip'\n coverflow: {\n rotate: 50,\n stretch: 0,\n depth: 100,\n modifier: 1,\n slideShadows : true\n },\n flip: {\n slideShadows : true,\n limitRotation: true\n },\n cube: {\n slideShadows: true,\n shadow: true,\n shadowOffset: 20,\n shadowScale: 0.94\n },\n fade: {\n crossFade: false\n },\n // Parallax\n parallax: false,\n // Zoom\n zoom: false,\n zoomMax: 3,\n zoomMin: 1,\n zoomToggle: true,\n // Scrollbar\n scrollbar: null,\n scrollbarHide: true,\n scrollbarDraggable: false,\n scrollbarSnapOnRelease: false,\n // Keyboard Mousewheel\n keyboardControl: false,\n mousewheelControl: false,\n mousewheelReleaseOnEdges: false,\n mousewheelInvert: false,\n mousewheelForceToAxis: false,\n mousewheelSensitivity: 1,\n mousewheelEventsTarged: 'container',\n // Hash Navigation\n hashnav: false,\n hashnavWatchState: false,\n // History\n history: false,\n // Commong Nav State\n replaceState: false,\n // Breakpoints\n breakpoints: undefined,\n // Slides grid\n spaceBetween: 0,\n slidesPerView: 1,\n slidesPerColumn: 1,\n slidesPerColumnFill: 'column',\n slidesPerGroup: 1,\n centeredSlides: false,\n slidesOffsetBefore: 0, // in px\n slidesOffsetAfter: 0, // in px\n // Round length\n roundLengths: false,\n // Touches\n touchRatio: 1,\n touchAngle: 45,\n simulateTouch: true,\n shortSwipes: true,\n longSwipes: true,\n longSwipesRatio: 0.5,\n longSwipesMs: 300,\n followFinger: true,\n onlyExternal: false,\n threshold: 0,\n touchMoveStopPropagation: true,\n touchReleaseOnEdges: false,\n // Unique Navigation Elements\n uniqueNavElements: true,\n // Pagination\n pagination: null,\n paginationElement: 'span',\n paginationClickable: false,\n paginationHide: false,\n paginationBulletRender: null,\n paginationProgressRender: null,\n paginationFractionRender: null,\n paginationCustomRender: null,\n paginationType: 'bullets', // 'bullets' or 'progress' or 'fraction' or 'custom'\n // Resistance\n resistance: true,\n resistanceRatio: 0.85,\n // Next/prev buttons\n nextButton: null,\n prevButton: null,\n // Progress\n watchSlidesProgress: false,\n watchSlidesVisibility: false,\n // Cursor\n grabCursor: false,\n // Clicks\n preventClicks: true,\n preventClicksPropagation: true,\n slideToClickedSlide: false,\n // Lazy Loading\n lazyLoading: false,\n lazyLoadingInPrevNext: false,\n lazyLoadingInPrevNextAmount: 1,\n lazyLoadingOnTransitionStart: false,\n // Images\n preloadImages: true,\n updateOnImagesReady: true,\n // loop\n loop: false,\n loopAdditionalSlides: 0,\n loopedSlides: null,\n // Control\n control: undefined,\n controlInverse: false,\n controlBy: 'slide', //or 'container'\n normalizeSlideIndex: true,\n // Swiping/no swiping\n allowSwipeToPrev: true,\n allowSwipeToNext: true,\n swipeHandler: null, //'.swipe-handler',\n noSwiping: true,\n noSwipingClass: 'swiper-no-swiping',\n // Passive Listeners\n passiveListeners: true,\n // NS\n containerModifierClass: 'swiper-container-', // NEW\n slideClass: 'swiper-slide',\n slideActiveClass: 'swiper-slide-active',\n slideDuplicateActiveClass: 'swiper-slide-duplicate-active',\n slideVisibleClass: 'swiper-slide-visible',\n slideDuplicateClass: 'swiper-slide-duplicate',\n slideNextClass: 'swiper-slide-next',\n slideDuplicateNextClass: 'swiper-slide-duplicate-next',\n slidePrevClass: 'swiper-slide-prev',\n slideDuplicatePrevClass: 'swiper-slide-duplicate-prev',\n wrapperClass: 'swiper-wrapper',\n bulletClass: 'swiper-pagination-bullet',\n bulletActiveClass: 'swiper-pagination-bullet-active',\n buttonDisabledClass: 'swiper-button-disabled',\n paginationCurrentClass: 'swiper-pagination-current',\n paginationTotalClass: 'swiper-pagination-total',\n paginationHiddenClass: 'swiper-pagination-hidden',\n paginationProgressbarClass: 'swiper-pagination-progressbar',\n paginationClickableClass: 'swiper-pagination-clickable', // NEW\n paginationModifierClass: 'swiper-pagination-', // NEW\n lazyLoadingClass: 'swiper-lazy',\n lazyStatusLoadingClass: 'swiper-lazy-loading',\n lazyStatusLoadedClass: 'swiper-lazy-loaded',\n lazyPreloaderClass: 'swiper-lazy-preloader',\n notificationClass: 'swiper-notification',\n preloaderClass: 'preloader',\n zoomContainerClass: 'swiper-zoom-container',\n \n // Observer\n observer: false,\n observeParents: false,\n // Accessibility\n a11y: false,\n prevSlideMessage: 'Previous slide',\n nextSlideMessage: 'Next slide',\n firstSlideMessage: 'This is the first slide',\n lastSlideMessage: 'This is the last slide',\n paginationBulletMessage: 'Go to slide {{index}}',\n // Callbacks\n runCallbacksOnInit: true\n /*\n Callbacks:\n onInit: function (swiper)\n onDestroy: function (swiper)\n onBeforeResize: function (swiper)\n onAfterResize: function (swiper)\n onClick: function (swiper, e)\n onTap: function (swiper, e)\n onDoubleTap: function (swiper, e)\n onSliderMove: function (swiper, e)\n onSlideChangeStart: function (swiper)\n onSlideChangeEnd: function (swiper)\n onTransitionStart: function (swiper)\n onTransitionEnd: function (swiper)\n onImagesReady: function (swiper)\n onProgress: function (swiper, progress)\n onTouchStart: function (swiper, e)\n onTouchMove: function (swiper, e)\n onTouchMoveOpposite: function (swiper, e)\n onTouchEnd: function (swiper, e)\n onReachBeginning: function (swiper)\n onReachEnd: function (swiper)\n onSetTransition: function (swiper, duration)\n onSetTranslate: function (swiper, translate)\n onAutoplayStart: function (swiper)\n onAutoplayStop: function (swiper),\n onLazyImageLoad: function (swiper, slide, image)\n onLazyImageReady: function (swiper, slide, image)\n onKeyPress: function (swiper, keyCode)\n */\n \n };\n var initialVirtualTranslate = params && params.virtualTranslate;\n \n params = params || {};\n var originalParams = {};\n for (var param in params) {\n if (typeof params[param] === 'object' && params[param] !== null && !(params[param].nodeType || params[param] === window || params[param] === document || (typeof Dom7 !== 'undefined' && params[param] instanceof Dom7) || (typeof jQuery !== 'undefined' && params[param] instanceof jQuery))) {\n originalParams[param] = {};\n for (var deepParam in params[param]) {\n originalParams[param][deepParam] = params[param][deepParam];\n }\n }\n else {\n originalParams[param] = params[param];\n }\n }\n for (var def in defaults) {\n if (typeof params[def] === 'undefined') {\n params[def] = defaults[def];\n }\n else if (typeof params[def] === 'object') {\n for (var deepDef in defaults[def]) {\n if (typeof params[def][deepDef] === 'undefined') {\n params[def][deepDef] = defaults[def][deepDef];\n }\n }\n }\n }\n \n // Swiper\n var s = this;\n \n // Params\n s.params = params;\n s.originalParams = originalParams;\n \n // Classname\n s.classNames = [];\n /*=========================\n Dom Library and plugins\n ===========================*/\n if (typeof $ !== 'undefined' && typeof Dom7 !== 'undefined'){\n $ = Dom7;\n }\n if (typeof $ === 'undefined') {\n if (typeof Dom7 === 'undefined') {\n $ = window.Dom7 || window.Zepto || window.jQuery;\n }\n else {\n $ = Dom7;\n }\n if (!$) return;\n }\n // Export it to Swiper instance\n s.$ = $;\n \n /*=========================\n Breakpoints\n ===========================*/\n s.currentBreakpoint = undefined;\n s.getActiveBreakpoint = function () {\n //Get breakpoint for window width\n if (!s.params.breakpoints) return false;\n var breakpoint = false;\n var points = [], point;\n for ( point in s.params.breakpoints ) {\n if (s.params.breakpoints.hasOwnProperty(point)) {\n points.push(point);\n }\n }\n points.sort(function (a, b) {\n return parseInt(a, 10) > parseInt(b, 10);\n });\n for (var i = 0; i < points.length; i++) {\n point = points[i];\n if (point >= window.innerWidth && !breakpoint) {\n breakpoint = point;\n }\n }\n return breakpoint || 'max';\n };\n s.setBreakpoint = function () {\n //Set breakpoint for window width and update parameters\n var breakpoint = s.getActiveBreakpoint();\n if (breakpoint && s.currentBreakpoint !== breakpoint) {\n var breakPointsParams = breakpoint in s.params.breakpoints ? s.params.breakpoints[breakpoint] : s.originalParams;\n var needsReLoop = s.params.loop && (breakPointsParams.slidesPerView !== s.params.slidesPerView);\n for ( var param in breakPointsParams ) {\n s.params[param] = breakPointsParams[param];\n }\n s.currentBreakpoint = breakpoint;\n if(needsReLoop && s.destroyLoop) {\n s.reLoop(true);\n }\n }\n };\n // Set breakpoint on load\n if (s.params.breakpoints) {\n s.setBreakpoint();\n }\n \n /*=========================\n Preparation - Define Container, Wrapper and Pagination\n ===========================*/\n s.container = $(container);\n if (s.container.length === 0) return;\n if (s.container.length > 1) {\n var swipers = [];\n s.container.each(function () {\n var container = this;\n swipers.push(new Swiper(this, params));\n });\n return swipers;\n }\n \n // Save instance in container HTML Element and in data\n s.container[0].swiper = s;\n s.container.data('swiper', s);\n \n s.classNames.push(s.params.containerModifierClass + s.params.direction);\n \n if (s.params.freeMode) {\n s.classNames.push(s.params.containerModifierClass + 'free-mode');\n }\n if (!s.support.flexbox) {\n s.classNames.push(s.params.containerModifierClass + 'no-flexbox');\n s.params.slidesPerColumn = 1;\n }\n if (s.params.autoHeight) {\n s.classNames.push(s.params.containerModifierClass + 'autoheight');\n }\n // Enable slides progress when required\n if (s.params.parallax || s.params.watchSlidesVisibility) {\n s.params.watchSlidesProgress = true;\n }\n // Max resistance when touchReleaseOnEdges\n if (s.params.touchReleaseOnEdges) {\n s.params.resistanceRatio = 0;\n }\n // Coverflow / 3D\n if (['cube', 'coverflow', 'flip'].indexOf(s.params.effect) >= 0) {\n if (s.support.transforms3d) {\n s.params.watchSlidesProgress = true;\n s.classNames.push(s.params.containerModifierClass + '3d');\n }\n else {\n s.params.effect = 'slide';\n }\n }\n if (s.params.effect !== 'slide') {\n s.classNames.push(s.params.containerModifierClass + s.params.effect);\n }\n if (s.params.effect === 'cube') {\n s.params.resistanceRatio = 0;\n s.params.slidesPerView = 1;\n s.params.slidesPerColumn = 1;\n s.params.slidesPerGroup = 1;\n s.params.centeredSlides = false;\n s.params.spaceBetween = 0;\n s.params.virtualTranslate = true;\n }\n if (s.params.effect === 'fade' || s.params.effect === 'flip') {\n s.params.slidesPerView = 1;\n s.params.slidesPerColumn = 1;\n s.params.slidesPerGroup = 1;\n s.params.watchSlidesProgress = true;\n s.params.spaceBetween = 0;\n if (typeof initialVirtualTranslate === 'undefined') {\n s.params.virtualTranslate = true;\n }\n }\n \n // Grab Cursor\n if (s.params.grabCursor && s.support.touch) {\n s.params.grabCursor = false;\n }\n \n // Wrapper\n s.wrapper = s.container.children('.' + s.params.wrapperClass);\n \n // Pagination\n if (s.params.pagination) {\n s.paginationContainer = $(s.params.pagination);\n if (s.params.uniqueNavElements && typeof s.params.pagination === 'string' && s.paginationContainer.length > 1 && s.container.find(s.params.pagination).length === 1) {\n s.paginationContainer = s.container.find(s.params.pagination);\n }\n \n if (s.params.paginationType === 'bullets' && s.params.paginationClickable) {\n s.paginationContainer.addClass(s.params.paginationModifierClass + 'clickable');\n }\n else {\n s.params.paginationClickable = false;\n }\n s.paginationContainer.addClass(s.params.paginationModifierClass + s.params.paginationType);\n }\n // Next/Prev Buttons\n if (s.params.nextButton || s.params.prevButton) {\n if (s.params.nextButton) {\n s.nextButton = $(s.params.nextButton);\n if (s.params.uniqueNavElements && typeof s.params.nextButton === 'string' && s.nextButton.length > 1 && s.container.find(s.params.nextButton).length === 1) {\n s.nextButton = s.container.find(s.params.nextButton);\n }\n }\n if (s.params.prevButton) {\n s.prevButton = $(s.params.prevButton);\n if (s.params.uniqueNavElements && typeof s.params.prevButton === 'string' && s.prevButton.length > 1 && s.container.find(s.params.prevButton).length === 1) {\n s.prevButton = s.container.find(s.params.prevButton);\n }\n }\n }\n \n // Is Horizontal\n s.isHorizontal = function () {\n return s.params.direction === 'horizontal';\n };\n // s.isH = isH;\n \n // RTL\n s.rtl = s.isHorizontal() && (s.container[0].dir.toLowerCase() === 'rtl' || s.container.css('direction') === 'rtl');\n if (s.rtl) {\n s.classNames.push(s.params.containerModifierClass + 'rtl');\n }\n \n // Wrong RTL support\n if (s.rtl) {\n s.wrongRTL = s.wrapper.css('display') === '-webkit-box';\n }\n \n // Columns\n if (s.params.slidesPerColumn > 1) {\n s.classNames.push(s.params.containerModifierClass + 'multirow');\n }\n \n // Check for Android\n if (s.device.android) {\n s.classNames.push(s.params.containerModifierClass + 'android');\n }\n \n // Add classes\n s.container.addClass(s.classNames.join(' '));\n \n // Translate\n s.translate = 0;\n \n // Progress\n s.progress = 0;\n \n // Velocity\n s.velocity = 0;\n \n /*=========================\n Locks, unlocks\n ===========================*/\n s.lockSwipeToNext = function () {\n s.params.allowSwipeToNext = false;\n if (s.params.allowSwipeToPrev === false && s.params.grabCursor) {\n s.unsetGrabCursor();\n }\n };\n s.lockSwipeToPrev = function () {\n s.params.allowSwipeToPrev = false;\n if (s.params.allowSwipeToNext === false && s.params.grabCursor) {\n s.unsetGrabCursor();\n }\n };\n s.lockSwipes = function () {\n s.params.allowSwipeToNext = s.params.allowSwipeToPrev = false;\n if (s.params.grabCursor) s.unsetGrabCursor();\n };\n s.unlockSwipeToNext = function () {\n s.params.allowSwipeToNext = true;\n if (s.params.allowSwipeToPrev === true && s.params.grabCursor) {\n s.setGrabCursor();\n }\n };\n s.unlockSwipeToPrev = function () {\n s.params.allowSwipeToPrev = true;\n if (s.params.allowSwipeToNext === true && s.params.grabCursor) {\n s.setGrabCursor();\n }\n };\n s.unlockSwipes = function () {\n s.params.allowSwipeToNext = s.params.allowSwipeToPrev = true;\n if (s.params.grabCursor) s.setGrabCursor();\n };\n \n /*=========================\n Round helper\n ===========================*/\n function round(a) {\n return Math.floor(a);\n }\n /*=========================\n Set grab cursor\n ===========================*/\n s.setGrabCursor = function(moving) {\n s.container[0].style.cursor = 'move';\n s.container[0].style.cursor = moving ? '-webkit-grabbing' : '-webkit-grab';\n s.container[0].style.cursor = moving ? '-moz-grabbin' : '-moz-grab';\n s.container[0].style.cursor = moving ? 'grabbing': 'grab';\n };\n s.unsetGrabCursor = function () {\n s.container[0].style.cursor = '';\n };\n if (s.params.grabCursor) {\n s.setGrabCursor();\n }\n /*=========================\n Update on Images Ready\n ===========================*/\n s.imagesToLoad = [];\n s.imagesLoaded = 0;\n \n s.loadImage = function (imgElement, src, srcset, sizes, checkForComplete, callback) {\n var image;\n function onReady () {\n if (callback) callback();\n }\n if (!imgElement.complete || !checkForComplete) {\n if (src) {\n image = new window.Image();\n image.onload = onReady;\n image.onerror = onReady;\n if (sizes) {\n image.sizes = sizes;\n }\n if (srcset) {\n image.srcset = srcset;\n }\n if (src) {\n image.src = src;\n }\n } else {\n onReady();\n }\n \n } else {//image already loaded...\n onReady();\n }\n };\n s.preloadImages = function () {\n s.imagesToLoad = s.container.find('img');\n function _onReady() {\n if (typeof s === 'undefined' || s === null || !s) return;\n if (s.imagesLoaded !== undefined) s.imagesLoaded++;\n if (s.imagesLoaded === s.imagesToLoad.length) {\n if (s.params.updateOnImagesReady) s.update();\n s.emit('onImagesReady', s);\n }\n }\n for (var i = 0; i < s.imagesToLoad.length; i++) {\n s.loadImage(s.imagesToLoad[i], (s.imagesToLoad[i].currentSrc || s.imagesToLoad[i].getAttribute('src')), (s.imagesToLoad[i].srcset || s.imagesToLoad[i].getAttribute('srcset')), s.imagesToLoad[i].sizes || s.imagesToLoad[i].getAttribute('sizes'), true, _onReady);\n }\n };\n \n /*=========================\n Autoplay\n ===========================*/\n s.autoplayTimeoutId = undefined;\n s.autoplaying = false;\n s.autoplayPaused = false;\n function autoplay() {\n var autoplayDelay = s.params.autoplay;\n var activeSlide = s.slides.eq(s.activeIndex);\n if (activeSlide.attr('data-swiper-autoplay')) {\n autoplayDelay = activeSlide.attr('data-swiper-autoplay') || s.params.autoplay;\n }\n s.autoplayTimeoutId = setTimeout(function () {\n if (s.params.loop) {\n s.fixLoop();\n s._slideNext();\n s.emit('onAutoplay', s);\n }\n else {\n if (!s.isEnd) {\n s._slideNext();\n s.emit('onAutoplay', s);\n }\n else {\n if (!params.autoplayStopOnLast) {\n s._slideTo(0);\n s.emit('onAutoplay', s);\n }\n else {\n s.stopAutoplay();\n }\n }\n }\n }, autoplayDelay);\n }\n s.startAutoplay = function () {\n if (typeof s.autoplayTimeoutId !== 'undefined') return false;\n if (!s.params.autoplay) return false;\n if (s.autoplaying) return false;\n s.autoplaying = true;\n s.emit('onAutoplayStart', s);\n autoplay();\n };\n s.stopAutoplay = function (internal) {\n if (!s.autoplayTimeoutId) return;\n if (s.autoplayTimeoutId) clearTimeout(s.autoplayTimeoutId);\n s.autoplaying = false;\n s.autoplayTimeoutId = undefined;\n s.emit('onAutoplayStop', s);\n };\n s.pauseAutoplay = function (speed) {\n if (s.autoplayPaused) return;\n if (s.autoplayTimeoutId) clearTimeout(s.autoplayTimeoutId);\n s.autoplayPaused = true;\n if (speed === 0) {\n s.autoplayPaused = false;\n autoplay();\n }\n else {\n s.wrapper.transitionEnd(function () {\n if (!s) return;\n s.autoplayPaused = false;\n if (!s.autoplaying) {\n s.stopAutoplay();\n }\n else {\n autoplay();\n }\n });\n }\n };\n /*=========================\n Min/Max Translate\n ===========================*/\n s.minTranslate = function () {\n return (-s.snapGrid[0]);\n };\n s.maxTranslate = function () {\n return (-s.snapGrid[s.snapGrid.length - 1]);\n };\n /*=========================\n Slider/slides sizes\n ===========================*/\n s.updateAutoHeight = function () {\n var activeSlides = [];\n var newHeight = 0;\n var i;\n \n // Find slides currently in view\n if(s.params.slidesPerView !== 'auto' && s.params.slidesPerView > 1) {\n for (i = 0; i < Math.ceil(s.params.slidesPerView); i++) {\n var index = s.activeIndex + i;\n if(index > s.slides.length) break;\n activeSlides.push(s.slides.eq(index)[0]);\n }\n } else {\n activeSlides.push(s.slides.eq(s.activeIndex)[0]);\n }\n \n // Find new height from heighest slide in view\n for (i = 0; i < activeSlides.length; i++) {\n if (typeof activeSlides[i] !== 'undefined') {\n var height = activeSlides[i].offsetHeight;\n newHeight = height > newHeight ? height : newHeight;\n }\n }\n \n // Update Height\n if (newHeight) s.wrapper.css('height', newHeight + 'px');\n };\n s.updateContainerSize = function () {\n var width, height;\n if (typeof s.params.width !== 'undefined') {\n width = s.params.width;\n }\n else {\n width = s.container[0].clientWidth;\n }\n if (typeof s.params.height !== 'undefined') {\n height = s.params.height;\n }\n else {\n height = s.container[0].clientHeight;\n }\n if (width === 0 && s.isHorizontal() || height === 0 && !s.isHorizontal()) {\n return;\n }\n \n //Subtract paddings\n width = width - parseInt(s.container.css('padding-left'), 10) - parseInt(s.container.css('padding-right'), 10);\n height = height - parseInt(s.container.css('padding-top'), 10) - parseInt(s.container.css('padding-bottom'), 10);\n \n // Store values\n s.width = width;\n s.height = height;\n s.size = s.isHorizontal() ? s.width : s.height;\n };\n \n s.updateSlidesSize = function () {\n s.slides = s.wrapper.children('.' + s.params.slideClass);\n s.snapGrid = [];\n s.slidesGrid = [];\n s.slidesSizesGrid = [];\n \n var spaceBetween = s.params.spaceBetween,\n slidePosition = -s.params.slidesOffsetBefore,\n i,\n prevSlideSize = 0,\n index = 0;\n if (typeof s.size === 'undefined') return;\n if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {\n spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * s.size;\n }\n \n s.virtualSize = -spaceBetween;\n // reset margins\n if (s.rtl) s.slides.css({marginLeft: '', marginTop: ''});\n else s.slides.css({marginRight: '', marginBottom: ''});\n \n var slidesNumberEvenToRows;\n if (s.params.slidesPerColumn > 1) {\n if (Math.floor(s.slides.length / s.params.slidesPerColumn) === s.slides.length / s.params.slidesPerColumn) {\n slidesNumberEvenToRows = s.slides.length;\n }\n else {\n slidesNumberEvenToRows = Math.ceil(s.slides.length / s.params.slidesPerColumn) * s.params.slidesPerColumn;\n }\n if (s.params.slidesPerView !== 'auto' && s.params.slidesPerColumnFill === 'row') {\n slidesNumberEvenToRows = Math.max(slidesNumberEvenToRows, s.params.slidesPerView * s.params.slidesPerColumn);\n }\n }\n \n // Calc slides\n var slideSize;\n var slidesPerColumn = s.params.slidesPerColumn;\n var slidesPerRow = slidesNumberEvenToRows / slidesPerColumn;\n var numFullColumns = slidesPerRow - (s.params.slidesPerColumn * slidesPerRow - s.slides.length);\n for (i = 0; i < s.slides.length; i++) {\n slideSize = 0;\n var slide = s.slides.eq(i);\n if (s.params.slidesPerColumn > 1) {\n // Set slides order\n var newSlideOrderIndex;\n var column, row;\n if (s.params.slidesPerColumnFill === 'column') {\n column = Math.floor(i / slidesPerColumn);\n row = i - column * slidesPerColumn;\n if (column > numFullColumns || (column === numFullColumns && row === slidesPerColumn-1)) {\n if (++row >= slidesPerColumn) {\n row = 0;\n column++;\n }\n }\n newSlideOrderIndex = column + row * slidesNumberEvenToRows / slidesPerColumn;\n slide\n .css({\n '-webkit-box-ordinal-group': newSlideOrderIndex,\n '-moz-box-ordinal-group': newSlideOrderIndex,\n '-ms-flex-order': newSlideOrderIndex,\n '-webkit-order': newSlideOrderIndex,\n 'order': newSlideOrderIndex\n });\n }\n else {\n row = Math.floor(i / slidesPerRow);\n column = i - row * slidesPerRow;\n }\n slide\n .css(\n 'margin-' + (s.isHorizontal() ? 'top' : 'left'),\n (row !== 0 && s.params.spaceBetween) && (s.params.spaceBetween + 'px')\n )\n .attr('data-swiper-column', column)\n .attr('data-swiper-row', row);\n \n }\n if (slide.css('display') === 'none') continue;\n if (s.params.slidesPerView === 'auto') {\n slideSize = s.isHorizontal() ? slide.outerWidth(true) : slide.outerHeight(true);\n if (s.params.roundLengths) slideSize = round(slideSize);\n }\n else {\n slideSize = (s.size - (s.params.slidesPerView - 1) * spaceBetween) / s.params.slidesPerView;\n if (s.params.roundLengths) slideSize = round(slideSize);\n \n if (s.isHorizontal()) {\n s.slides[i].style.width = slideSize + 'px';\n }\n else {\n s.slides[i].style.height = slideSize + 'px';\n }\n }\n s.slides[i].swiperSlideSize = slideSize;\n s.slidesSizesGrid.push(slideSize);\n \n \n if (s.params.centeredSlides) {\n slidePosition = slidePosition + slideSize / 2 + prevSlideSize / 2 + spaceBetween;\n if(prevSlideSize === 0 && i !== 0) slidePosition = slidePosition - s.size / 2 - spaceBetween;\n if (i === 0) slidePosition = slidePosition - s.size / 2 - spaceBetween;\n if (Math.abs(slidePosition) < 1 / 1000) slidePosition = 0;\n if ((index) % s.params.slidesPerGroup === 0) s.snapGrid.push(slidePosition);\n s.slidesGrid.push(slidePosition);\n }\n else {\n if ((index) % s.params.slidesPerGroup === 0) s.snapGrid.push(slidePosition);\n s.slidesGrid.push(slidePosition);\n slidePosition = slidePosition + slideSize + spaceBetween;\n }\n \n s.virtualSize += slideSize + spaceBetween;\n \n prevSlideSize = slideSize;\n \n index ++;\n }\n s.virtualSize = Math.max(s.virtualSize, s.size) + s.params.slidesOffsetAfter;\n var newSlidesGrid;\n \n if (\n s.rtl && s.wrongRTL && (s.params.effect === 'slide' || s.params.effect === 'coverflow')) {\n s.wrapper.css({width: s.virtualSize + s.params.spaceBetween + 'px'});\n }\n if (!s.support.flexbox || s.params.setWrapperSize) {\n if (s.isHorizontal()) s.wrapper.css({width: s.virtualSize + s.params.spaceBetween + 'px'});\n else s.wrapper.css({height: s.virtualSize + s.params.spaceBetween + 'px'});\n }\n \n if (s.params.slidesPerColumn > 1) {\n s.virtualSize = (slideSize + s.params.spaceBetween) * slidesNumberEvenToRows;\n s.virtualSize = Math.ceil(s.virtualSize / s.params.slidesPerColumn) - s.params.spaceBetween;\n if (s.isHorizontal()) s.wrapper.css({width: s.virtualSize + s.params.spaceBetween + 'px'});\n else s.wrapper.css({height: s.virtualSize + s.params.spaceBetween + 'px'});\n if (s.params.centeredSlides) {\n newSlidesGrid = [];\n for (i = 0; i < s.snapGrid.length; i++) {\n if (s.snapGrid[i] < s.virtualSize + s.snapGrid[0]) newSlidesGrid.push(s.snapGrid[i]);\n }\n s.snapGrid = newSlidesGrid;\n }\n }\n \n // Remove last grid elements depending on width\n if (!s.params.centeredSlides) {\n newSlidesGrid = [];\n for (i = 0; i < s.snapGrid.length; i++) {\n if (s.snapGrid[i] <= s.virtualSize - s.size) {\n newSlidesGrid.push(s.snapGrid[i]);\n }\n }\n s.snapGrid = newSlidesGrid;\n if (Math.floor(s.virtualSize - s.size) - Math.floor(s.snapGrid[s.snapGrid.length - 1]) > 1) {\n s.snapGrid.push(s.virtualSize - s.size);\n }\n }\n if (s.snapGrid.length === 0) s.snapGrid = [0];\n \n if (s.params.spaceBetween !== 0) {\n if (s.isHorizontal()) {\n if (s.rtl) s.slides.css({marginLeft: spaceBetween + 'px'});\n else s.slides.css({marginRight: spaceBetween + 'px'});\n }\n else s.slides.css({marginBottom: spaceBetween + 'px'});\n }\n if (s.params.watchSlidesProgress) {\n s.updateSlidesOffset();\n }\n };\n s.updateSlidesOffset = function () {\n for (var i = 0; i < s.slides.length; i++) {\n s.slides[i].swiperSlideOffset = s.isHorizontal() ? s.slides[i].offsetLeft : s.slides[i].offsetTop;\n }\n };\n \n /*=========================\n Dynamic Slides Per View\n ===========================*/\n s.currentSlidesPerView = function () {\n var spv = 1, i, j;\n if (s.params.centeredSlides) {\n var size = s.slides[s.activeIndex].swiperSlideSize;\n var breakLoop;\n for (i = s.activeIndex + 1; i < s.slides.length; i++) {\n if (s.slides[i] && !breakLoop) {\n size += s.slides[i].swiperSlideSize;\n spv ++;\n if (size > s.size) breakLoop = true;\n }\n }\n for (j = s.activeIndex - 1; j >= 0; j--) {\n if (s.slides[j] && !breakLoop) {\n size += s.slides[j].swiperSlideSize;\n spv ++;\n if (size > s.size) breakLoop = true;\n }\n }\n }\n else {\n for (i = s.activeIndex + 1; i < s.slides.length; i++) {\n if (s.slidesGrid[i] - s.slidesGrid[s.activeIndex] < s.size) {\n spv++;\n }\n }\n }\n return spv;\n };\n /*=========================\n Slider/slides progress\n ===========================*/\n s.updateSlidesProgress = function (translate) {\n if (typeof translate === 'undefined') {\n translate = s.translate || 0;\n }\n if (s.slides.length === 0) return;\n if (typeof s.slides[0].swiperSlideOffset === 'undefined') s.updateSlidesOffset();\n \n var offsetCenter = -translate;\n if (s.rtl) offsetCenter = translate;\n \n // Visible Slides\n s.slides.removeClass(s.params.slideVisibleClass);\n for (var i = 0; i < s.slides.length; i++) {\n var slide = s.slides[i];\n var slideProgress = (offsetCenter + (s.params.centeredSlides ? s.minTranslate() : 0) - slide.swiperSlideOffset) / (slide.swiperSlideSize + s.params.spaceBetween);\n if (s.params.watchSlidesVisibility) {\n var slideBefore = -(offsetCenter - slide.swiperSlideOffset);\n var slideAfter = slideBefore + s.slidesSizesGrid[i];\n var isVisible =\n (slideBefore >= 0 && slideBefore < s.size) ||\n (slideAfter > 0 && slideAfter <= s.size) ||\n (slideBefore <= 0 && slideAfter >= s.size);\n if (isVisible) {\n s.slides.eq(i).addClass(s.params.slideVisibleClass);\n }\n }\n slide.progress = s.rtl ? -slideProgress : slideProgress;\n }\n };\n s.updateProgress = function (translate) {\n if (typeof translate === 'undefined') {\n translate = s.translate || 0;\n }\n var translatesDiff = s.maxTranslate() - s.minTranslate();\n var wasBeginning = s.isBeginning;\n var wasEnd = s.isEnd;\n if (translatesDiff === 0) {\n s.progress = 0;\n s.isBeginning = s.isEnd = true;\n }\n else {\n s.progress = (translate - s.minTranslate()) / (translatesDiff);\n s.isBeginning = s.progress <= 0;\n s.isEnd = s.progress >= 1;\n }\n if (s.isBeginning && !wasBeginning) s.emit('onReachBeginning', s);\n if (s.isEnd && !wasEnd) s.emit('onReachEnd', s);\n \n if (s.params.watchSlidesProgress) s.updateSlidesProgress(translate);\n s.emit('onProgress', s, s.progress);\n };\n s.updateActiveIndex = function () {\n var translate = s.rtl ? s.translate : -s.translate;\n var newActiveIndex, i, snapIndex;\n for (i = 0; i < s.slidesGrid.length; i ++) {\n if (typeof s.slidesGrid[i + 1] !== 'undefined') {\n if (translate >= s.slidesGrid[i] && translate < s.slidesGrid[i + 1] - (s.slidesGrid[i + 1] - s.slidesGrid[i]) / 2) {\n newActiveIndex = i;\n }\n else if (translate >= s.slidesGrid[i] && translate < s.slidesGrid[i + 1]) {\n newActiveIndex = i + 1;\n }\n }\n else {\n if (translate >= s.slidesGrid[i]) {\n newActiveIndex = i;\n }\n }\n }\n // Normalize slideIndex\n if(s.params.normalizeSlideIndex){\n if (newActiveIndex < 0 || typeof newActiveIndex === 'undefined') newActiveIndex = 0;\n }\n // for (i = 0; i < s.slidesGrid.length; i++) {\n // if (- translate >= s.slidesGrid[i]) {\n // newActiveIndex = i;\n // }\n // }\n snapIndex = Math.floor(newActiveIndex / s.params.slidesPerGroup);\n if (snapIndex >= s.snapGrid.length) snapIndex = s.snapGrid.length - 1;\n \n if (newActiveIndex === s.activeIndex) {\n return;\n }\n s.snapIndex = snapIndex;\n s.previousIndex = s.activeIndex;\n s.activeIndex = newActiveIndex;\n s.updateClasses();\n s.updateRealIndex();\n };\n s.updateRealIndex = function(){\n s.realIndex = parseInt(s.slides.eq(s.activeIndex).attr('data-swiper-slide-index') || s.activeIndex, 10);\n };\n \n /*=========================\n Classes\n ===========================*/\n s.updateClasses = function () {\n s.slides.removeClass(s.params.slideActiveClass + ' ' + s.params.slideNextClass + ' ' + s.params.slidePrevClass + ' ' + s.params.slideDuplicateActiveClass + ' ' + s.params.slideDuplicateNextClass + ' ' + s.params.slideDuplicatePrevClass);\n var activeSlide = s.slides.eq(s.activeIndex);\n // Active classes\n activeSlide.addClass(s.params.slideActiveClass);\n if (params.loop) {\n // Duplicate to all looped slides\n if (activeSlide.hasClass(s.params.slideDuplicateClass)) {\n s.wrapper.children('.' + s.params.slideClass + ':not(.' + s.params.slideDuplicateClass + ')[data-swiper-slide-index=\"' + s.realIndex + '\"]').addClass(s.params.slideDuplicateActiveClass);\n }\n else {\n s.wrapper.children('.' + s.params.slideClass + '.' + s.params.slideDuplicateClass + '[data-swiper-slide-index=\"' + s.realIndex + '\"]').addClass(s.params.slideDuplicateActiveClass);\n }\n }\n // Next Slide\n var nextSlide = activeSlide.next('.' + s.params.slideClass).addClass(s.params.slideNextClass);\n if (s.params.loop && nextSlide.length === 0) {\n nextSlide = s.slides.eq(0);\n nextSlide.addClass(s.params.slideNextClass);\n }\n // Prev Slide\n var prevSlide = activeSlide.prev('.' + s.params.slideClass).addClass(s.params.slidePrevClass);\n if (s.params.loop && prevSlide.length === 0) {\n prevSlide = s.slides.eq(-1);\n prevSlide.addClass(s.params.slidePrevClass);\n }\n if (params.loop) {\n // Duplicate to all looped slides\n if (nextSlide.hasClass(s.params.slideDuplicateClass)) {\n s.wrapper.children('.' + s.params.slideClass + ':not(.' + s.params.slideDuplicateClass + ')[data-swiper-slide-index=\"' + nextSlide.attr('data-swiper-slide-index') + '\"]').addClass(s.params.slideDuplicateNextClass);\n }\n else {\n s.wrapper.children('.' + s.params.slideClass + '.' + s.params.slideDuplicateClass + '[data-swiper-slide-index=\"' + nextSlide.attr('data-swiper-slide-index') + '\"]').addClass(s.params.slideDuplicateNextClass);\n }\n if (prevSlide.hasClass(s.params.slideDuplicateClass)) {\n s.wrapper.children('.' + s.params.slideClass + ':not(.' + s.params.slideDuplicateClass + ')[data-swiper-slide-index=\"' + prevSlide.attr('data-swiper-slide-index') + '\"]').addClass(s.params.slideDuplicatePrevClass);\n }\n else {\n s.wrapper.children('.' + s.params.slideClass + '.' + s.params.slideDuplicateClass + '[data-swiper-slide-index=\"' + prevSlide.attr('data-swiper-slide-index') + '\"]').addClass(s.params.slideDuplicatePrevClass);\n }\n }\n \n // Pagination\n if (s.paginationContainer && s.paginationContainer.length > 0) {\n // Current/Total\n var current,\n total = s.params.loop ? Math.ceil((s.slides.length - s.loopedSlides * 2) / s.params.slidesPerGroup) : s.snapGrid.length;\n if (s.params.loop) {\n current = Math.ceil((s.activeIndex - s.loopedSlides)/s.params.slidesPerGroup);\n if (current > s.slides.length - 1 - s.loopedSlides * 2) {\n current = current - (s.slides.length - s.loopedSlides * 2);\n }\n if (current > total - 1) current = current - total;\n if (current < 0 && s.params.paginationType !== 'bullets') current = total + current;\n }\n else {\n if (typeof s.snapIndex !== 'undefined') {\n current = s.snapIndex;\n }\n else {\n current = s.activeIndex || 0;\n }\n }\n // Types\n if (s.params.paginationType === 'bullets' && s.bullets && s.bullets.length > 0) {\n s.bullets.removeClass(s.params.bulletActiveClass);\n if (s.paginationContainer.length > 1) {\n s.bullets.each(function () {\n if ($(this).index() === current) $(this).addClass(s.params.bulletActiveClass);\n });\n }\n else {\n s.bullets.eq(current).addClass(s.params.bulletActiveClass);\n }\n }\n if (s.params.paginationType === 'fraction') {\n s.paginationContainer.find('.' + s.params.paginationCurrentClass).text(current + 1);\n s.paginationContainer.find('.' + s.params.paginationTotalClass).text(total);\n }\n if (s.params.paginationType === 'progress') {\n var scale = (current + 1) / total,\n scaleX = scale,\n scaleY = 1;\n if (!s.isHorizontal()) {\n scaleY = scale;\n scaleX = 1;\n }\n s.paginationContainer.find('.' + s.params.paginationProgressbarClass).transform('translate3d(0,0,0) scaleX(' + scaleX + ') scaleY(' + scaleY + ')').transition(s.params.speed);\n }\n if (s.params.paginationType === 'custom' && s.params.paginationCustomRender) {\n s.paginationContainer.html(s.params.paginationCustomRender(s, current + 1, total));\n s.emit('onPaginationRendered', s, s.paginationContainer[0]);\n }\n }\n \n // Next/active buttons\n if (!s.params.loop) {\n if (s.params.prevButton && s.prevButton && s.prevButton.length > 0) {\n if (s.isBeginning) {\n s.prevButton.addClass(s.params.buttonDisabledClass);\n if (s.params.a11y && s.a11y) s.a11y.disable(s.prevButton);\n }\n else {\n s.prevButton.removeClass(s.params.buttonDisabledClass);\n if (s.params.a11y && s.a11y) s.a11y.enable(s.prevButton);\n }\n }\n if (s.params.nextButton && s.nextButton && s.nextButton.length > 0) {\n if (s.isEnd) {\n s.nextButton.addClass(s.params.buttonDisabledClass);\n if (s.params.a11y && s.a11y) s.a11y.disable(s.nextButton);\n }\n else {\n s.nextButton.removeClass(s.params.buttonDisabledClass);\n if (s.params.a11y && s.a11y) s.a11y.enable(s.nextButton);\n }\n }\n }\n };\n \n /*=========================\n Pagination\n ===========================*/\n s.updatePagination = function () {\n if (!s.params.pagination) return;\n if (s.paginationContainer && s.paginationContainer.length > 0) {\n var paginationHTML = '';\n if (s.params.paginationType === 'bullets') {\n var numberOfBullets = s.params.loop ? Math.ceil((s.slides.length - s.loopedSlides * 2) / s.params.slidesPerGroup) : s.snapGrid.length;\n for (var i = 0; i < numberOfBullets; i++) {\n if (s.params.paginationBulletRender) {\n paginationHTML += s.params.paginationBulletRender(s, i, s.params.bulletClass);\n }\n else {\n paginationHTML += '<' + s.params.paginationElement+' class=\"' + s.params.bulletClass + '\">';\n }\n }\n s.paginationContainer.html(paginationHTML);\n s.bullets = s.paginationContainer.find('.' + s.params.bulletClass);\n if (s.params.paginationClickable && s.params.a11y && s.a11y) {\n s.a11y.initPagination();\n }\n }\n if (s.params.paginationType === 'fraction') {\n if (s.params.paginationFractionRender) {\n paginationHTML = s.params.paginationFractionRender(s, s.params.paginationCurrentClass, s.params.paginationTotalClass);\n }\n else {\n paginationHTML =\n '' +\n ' / ' +\n '';\n }\n s.paginationContainer.html(paginationHTML);\n }\n if (s.params.paginationType === 'progress') {\n if (s.params.paginationProgressRender) {\n paginationHTML = s.params.paginationProgressRender(s, s.params.paginationProgressbarClass);\n }\n else {\n paginationHTML = '';\n }\n s.paginationContainer.html(paginationHTML);\n }\n if (s.params.paginationType !== 'custom') {\n s.emit('onPaginationRendered', s, s.paginationContainer[0]);\n }\n }\n };\n /*=========================\n Common update method\n ===========================*/\n s.update = function (updateTranslate) {\n if (!s) return;\n s.updateContainerSize();\n s.updateSlidesSize();\n s.updateProgress();\n s.updatePagination();\n s.updateClasses();\n if (s.params.scrollbar && s.scrollbar) {\n s.scrollbar.set();\n }\n var newTranslate;\n function forceSetTranslate() {\n var translate = s.rtl ? -s.translate : s.translate;\n newTranslate = Math.min(Math.max(s.translate, s.maxTranslate()), s.minTranslate());\n s.setWrapperTranslate(newTranslate);\n s.updateActiveIndex();\n s.updateClasses();\n }\n if (updateTranslate) {\n var translated;\n if (s.controller && s.controller.spline) {\n s.controller.spline = undefined;\n }\n if (s.params.freeMode) {\n forceSetTranslate();\n if (s.params.autoHeight) {\n s.updateAutoHeight();\n }\n }\n else {\n if ((s.params.slidesPerView === 'auto' || s.params.slidesPerView > 1) && s.isEnd && !s.params.centeredSlides) {\n translated = s.slideTo(s.slides.length - 1, 0, false, true);\n }\n else {\n translated = s.slideTo(s.activeIndex, 0, false, true);\n }\n if (!translated) {\n forceSetTranslate();\n }\n }\n }\n else if (s.params.autoHeight) {\n s.updateAutoHeight();\n }\n };\n \n /*=========================\n Resize Handler\n ===========================*/\n s.onResize = function (forceUpdatePagination) {\n if (s.params.onBeforeResize) s.params.onBeforeResize(s);\n //Breakpoints\n if (s.params.breakpoints) {\n s.setBreakpoint();\n }\n \n // Disable locks on resize\n var allowSwipeToPrev = s.params.allowSwipeToPrev;\n var allowSwipeToNext = s.params.allowSwipeToNext;\n s.params.allowSwipeToPrev = s.params.allowSwipeToNext = true;\n \n s.updateContainerSize();\n s.updateSlidesSize();\n if (s.params.slidesPerView === 'auto' || s.params.freeMode || forceUpdatePagination) s.updatePagination();\n if (s.params.scrollbar && s.scrollbar) {\n s.scrollbar.set();\n }\n if (s.controller && s.controller.spline) {\n s.controller.spline = undefined;\n }\n var slideChangedBySlideTo = false;\n if (s.params.freeMode) {\n var newTranslate = Math.min(Math.max(s.translate, s.maxTranslate()), s.minTranslate());\n s.setWrapperTranslate(newTranslate);\n s.updateActiveIndex();\n s.updateClasses();\n \n if (s.params.autoHeight) {\n s.updateAutoHeight();\n }\n }\n else {\n s.updateClasses();\n if ((s.params.slidesPerView === 'auto' || s.params.slidesPerView > 1) && s.isEnd && !s.params.centeredSlides) {\n slideChangedBySlideTo = s.slideTo(s.slides.length - 1, 0, false, true);\n }\n else {\n slideChangedBySlideTo = s.slideTo(s.activeIndex, 0, false, true);\n }\n }\n if (s.params.lazyLoading && !slideChangedBySlideTo && s.lazy) {\n s.lazy.load();\n }\n // Return locks after resize\n s.params.allowSwipeToPrev = allowSwipeToPrev;\n s.params.allowSwipeToNext = allowSwipeToNext;\n if (s.params.onAfterResize) s.params.onAfterResize(s);\n };\n \n /*=========================\n Events\n ===========================*/\n \n //Define Touch Events\n s.touchEventsDesktop = {start: 'mousedown', move: 'mousemove', end: 'mouseup'};\n if (window.navigator.pointerEnabled) s.touchEventsDesktop = {start: 'pointerdown', move: 'pointermove', end: 'pointerup'};\n else if (window.navigator.msPointerEnabled) s.touchEventsDesktop = {start: 'MSPointerDown', move: 'MSPointerMove', end: 'MSPointerUp'};\n s.touchEvents = {\n start : s.support.touch || !s.params.simulateTouch ? 'touchstart' : s.touchEventsDesktop.start,\n move : s.support.touch || !s.params.simulateTouch ? 'touchmove' : s.touchEventsDesktop.move,\n end : s.support.touch || !s.params.simulateTouch ? 'touchend' : s.touchEventsDesktop.end\n };\n \n \n // WP8 Touch Events Fix\n if (window.navigator.pointerEnabled || window.navigator.msPointerEnabled) {\n (s.params.touchEventsTarget === 'container' ? s.container : s.wrapper).addClass('swiper-wp8-' + s.params.direction);\n }\n \n // Attach/detach events\n s.initEvents = function (detach) {\n var actionDom = detach ? 'off' : 'on';\n var action = detach ? 'removeEventListener' : 'addEventListener';\n var touchEventsTarget = s.params.touchEventsTarget === 'container' ? s.container[0] : s.wrapper[0];\n var target = s.support.touch ? touchEventsTarget : document;\n \n var moveCapture = s.params.nested ? true : false;\n \n //Touch Events\n if (s.browser.ie) {\n touchEventsTarget[action](s.touchEvents.start, s.onTouchStart, false);\n target[action](s.touchEvents.move, s.onTouchMove, moveCapture);\n target[action](s.touchEvents.end, s.onTouchEnd, false);\n }\n else {\n if (s.support.touch) {\n var passiveListener = s.touchEvents.start === 'touchstart' && s.support.passiveListener && s.params.passiveListeners ? {passive: true, capture: false} : false;\n touchEventsTarget[action](s.touchEvents.start, s.onTouchStart, passiveListener);\n touchEventsTarget[action](s.touchEvents.move, s.onTouchMove, moveCapture);\n touchEventsTarget[action](s.touchEvents.end, s.onTouchEnd, passiveListener);\n }\n if ((params.simulateTouch && !s.device.ios && !s.device.android) || (params.simulateTouch && !s.support.touch && s.device.ios)) {\n touchEventsTarget[action]('mousedown', s.onTouchStart, false);\n document[action]('mousemove', s.onTouchMove, moveCapture);\n document[action]('mouseup', s.onTouchEnd, false);\n }\n }\n window[action]('resize', s.onResize);\n \n // Next, Prev, Index\n if (s.params.nextButton && s.nextButton && s.nextButton.length > 0) {\n s.nextButton[actionDom]('click', s.onClickNext);\n if (s.params.a11y && s.a11y) s.nextButton[actionDom]('keydown', s.a11y.onEnterKey);\n }\n if (s.params.prevButton && s.prevButton && s.prevButton.length > 0) {\n s.prevButton[actionDom]('click', s.onClickPrev);\n if (s.params.a11y && s.a11y) s.prevButton[actionDom]('keydown', s.a11y.onEnterKey);\n }\n if (s.params.pagination && s.params.paginationClickable) {\n s.paginationContainer[actionDom]('click', '.' + s.params.bulletClass, s.onClickIndex);\n if (s.params.a11y && s.a11y) s.paginationContainer[actionDom]('keydown', '.' + s.params.bulletClass, s.a11y.onEnterKey);\n }\n \n // Prevent Links Clicks\n if (s.params.preventClicks || s.params.preventClicksPropagation) touchEventsTarget[action]('click', s.preventClicks, true);\n };\n s.attachEvents = function () {\n s.initEvents();\n };\n s.detachEvents = function () {\n s.initEvents(true);\n };\n \n /*=========================\n Handle Clicks\n ===========================*/\n // Prevent Clicks\n s.allowClick = true;\n s.preventClicks = function (e) {\n if (!s.allowClick) {\n if (s.params.preventClicks) e.preventDefault();\n if (s.params.preventClicksPropagation && s.animating) {\n e.stopPropagation();\n e.stopImmediatePropagation();\n }\n }\n };\n // Clicks\n s.onClickNext = function (e) {\n e.preventDefault();\n if (s.isEnd && !s.params.loop) return;\n s.slideNext();\n };\n s.onClickPrev = function (e) {\n e.preventDefault();\n if (s.isBeginning && !s.params.loop) return;\n s.slidePrev();\n };\n s.onClickIndex = function (e) {\n e.preventDefault();\n var index = $(this).index() * s.params.slidesPerGroup;\n if (s.params.loop) index = index + s.loopedSlides;\n s.slideTo(index);\n };\n \n /*=========================\n Handle Touches\n ===========================*/\n function findElementInEvent(e, selector) {\n var el = $(e.target);\n if (!el.is(selector)) {\n if (typeof selector === 'string') {\n el = el.parents(selector);\n }\n else if (selector.nodeType) {\n var found;\n el.parents().each(function (index, _el) {\n if (_el === selector) found = selector;\n });\n if (!found) return undefined;\n else return selector;\n }\n }\n if (el.length === 0) {\n return undefined;\n }\n return el[0];\n }\n s.updateClickedSlide = function (e) {\n var slide = findElementInEvent(e, '.' + s.params.slideClass);\n var slideFound = false;\n if (slide) {\n for (var i = 0; i < s.slides.length; i++) {\n if (s.slides[i] === slide) slideFound = true;\n }\n }\n \n if (slide && slideFound) {\n s.clickedSlide = slide;\n s.clickedIndex = $(slide).index();\n }\n else {\n s.clickedSlide = undefined;\n s.clickedIndex = undefined;\n return;\n }\n if (s.params.slideToClickedSlide && s.clickedIndex !== undefined && s.clickedIndex !== s.activeIndex) {\n var slideToIndex = s.clickedIndex,\n realIndex,\n duplicatedSlides,\n slidesPerView = s.params.slidesPerView === 'auto' ? s.currentSlidesPerView() : s.params.slidesPerView;\n if (s.params.loop) {\n if (s.animating) return;\n realIndex = parseInt($(s.clickedSlide).attr('data-swiper-slide-index'), 10);\n if (s.params.centeredSlides) {\n if ((slideToIndex < s.loopedSlides - slidesPerView/2) || (slideToIndex > s.slides.length - s.loopedSlides + slidesPerView/2)) {\n s.fixLoop();\n slideToIndex = s.wrapper.children('.' + s.params.slideClass + '[data-swiper-slide-index=\"' + realIndex + '\"]:not(.' + s.params.slideDuplicateClass + ')').eq(0).index();\n setTimeout(function () {\n s.slideTo(slideToIndex);\n }, 0);\n }\n else {\n s.slideTo(slideToIndex);\n }\n }\n else {\n if (slideToIndex > s.slides.length - slidesPerView) {\n s.fixLoop();\n slideToIndex = s.wrapper.children('.' + s.params.slideClass + '[data-swiper-slide-index=\"' + realIndex + '\"]:not(.' + s.params.slideDuplicateClass + ')').eq(0).index();\n setTimeout(function () {\n s.slideTo(slideToIndex);\n }, 0);\n }\n else {\n s.slideTo(slideToIndex);\n }\n }\n }\n else {\n s.slideTo(slideToIndex);\n }\n }\n };\n \n var isTouched,\n isMoved,\n allowTouchCallbacks,\n touchStartTime,\n isScrolling,\n currentTranslate,\n startTranslate,\n allowThresholdMove,\n // Form elements to match\n formElements = 'input, select, textarea, button, video',\n // Last click time\n lastClickTime = Date.now(), clickTimeout,\n //Velocities\n velocities = [],\n allowMomentumBounce;\n \n // Animating Flag\n s.animating = false;\n \n // Touches information\n s.touches = {\n startX: 0,\n startY: 0,\n currentX: 0,\n currentY: 0,\n diff: 0\n };\n \n // Touch handlers\n var isTouchEvent, startMoving;\n s.onTouchStart = function (e) {\n if (e.originalEvent) e = e.originalEvent;\n isTouchEvent = e.type === 'touchstart';\n if (!isTouchEvent && 'which' in e && e.which === 3) return;\n if (s.params.noSwiping && findElementInEvent(e, '.' + s.params.noSwipingClass)) {\n s.allowClick = true;\n return;\n }\n if (s.params.swipeHandler) {\n if (!findElementInEvent(e, s.params.swipeHandler)) return;\n }\n \n var startX = s.touches.currentX = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n var startY = s.touches.currentY = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n \n // Do NOT start if iOS edge swipe is detected. Otherwise iOS app (UIWebView) cannot swipe-to-go-back anymore\n if(s.device.ios && s.params.iOSEdgeSwipeDetection && startX <= s.params.iOSEdgeSwipeThreshold) {\n return;\n }\n \n isTouched = true;\n isMoved = false;\n allowTouchCallbacks = true;\n isScrolling = undefined;\n startMoving = undefined;\n s.touches.startX = startX;\n s.touches.startY = startY;\n touchStartTime = Date.now();\n s.allowClick = true;\n s.updateContainerSize();\n s.swipeDirection = undefined;\n if (s.params.threshold > 0) allowThresholdMove = false;\n if (e.type !== 'touchstart') {\n var preventDefault = true;\n if ($(e.target).is(formElements)) preventDefault = false;\n if (document.activeElement && $(document.activeElement).is(formElements)) {\n document.activeElement.blur();\n }\n if (preventDefault) {\n e.preventDefault();\n }\n }\n s.emit('onTouchStart', s, e);\n };\n \n s.onTouchMove = function (e) {\n if (e.originalEvent) e = e.originalEvent;\n if (isTouchEvent && e.type === 'mousemove') return;\n if (e.preventedByNestedSwiper) {\n s.touches.startX = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;\n s.touches.startY = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n return;\n }\n if (s.params.onlyExternal) {\n // isMoved = true;\n s.allowClick = false;\n if (isTouched) {\n s.touches.startX = s.touches.currentX = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;\n s.touches.startY = s.touches.currentY = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n touchStartTime = Date.now();\n }\n return;\n }\n if (isTouchEvent && s.params.touchReleaseOnEdges && !s.params.loop) {\n if (!s.isHorizontal()) {\n // Vertical\n if (\n (s.touches.currentY < s.touches.startY && s.translate <= s.maxTranslate()) ||\n (s.touches.currentY > s.touches.startY && s.translate >= s.minTranslate())\n ) {\n return;\n }\n }\n else {\n if (\n (s.touches.currentX < s.touches.startX && s.translate <= s.maxTranslate()) ||\n (s.touches.currentX > s.touches.startX && s.translate >= s.minTranslate())\n ) {\n return;\n }\n }\n }\n if (isTouchEvent && document.activeElement) {\n if (e.target === document.activeElement && $(e.target).is(formElements)) {\n isMoved = true;\n s.allowClick = false;\n return;\n }\n }\n if (allowTouchCallbacks) {\n s.emit('onTouchMove', s, e);\n }\n if (e.targetTouches && e.targetTouches.length > 1) return;\n \n s.touches.currentX = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;\n s.touches.currentY = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n \n if (typeof isScrolling === 'undefined') {\n var touchAngle;\n if (s.isHorizontal() && s.touches.currentY === s.touches.startY || !s.isHorizontal() && s.touches.currentX === s.touches.startX) {\n isScrolling = false;\n }\n else {\n touchAngle = Math.atan2(Math.abs(s.touches.currentY - s.touches.startY), Math.abs(s.touches.currentX - s.touches.startX)) * 180 / Math.PI;\n isScrolling = s.isHorizontal() ? touchAngle > s.params.touchAngle : (90 - touchAngle > s.params.touchAngle);\n }\n }\n if (isScrolling) {\n s.emit('onTouchMoveOpposite', s, e);\n }\n if (typeof startMoving === 'undefined') {\n if (s.touches.currentX !== s.touches.startX || s.touches.currentY !== s.touches.startY) {\n startMoving = true;\n }\n }\n if (!isTouched) return;\n if (isScrolling) {\n isTouched = false;\n return;\n }\n if (!startMoving) {\n return;\n }\n s.allowClick = false;\n s.emit('onSliderMove', s, e);\n e.preventDefault();\n if (s.params.touchMoveStopPropagation && !s.params.nested) {\n e.stopPropagation();\n }\n \n if (!isMoved) {\n if (params.loop) {\n s.fixLoop();\n }\n startTranslate = s.getWrapperTranslate();\n s.setWrapperTransition(0);\n if (s.animating) {\n s.wrapper.trigger('webkitTransitionEnd transitionend oTransitionEnd MSTransitionEnd msTransitionEnd');\n }\n if (s.params.autoplay && s.autoplaying) {\n if (s.params.autoplayDisableOnInteraction) {\n s.stopAutoplay();\n }\n else {\n s.pauseAutoplay();\n }\n }\n allowMomentumBounce = false;\n //Grab Cursor\n if (s.params.grabCursor && (s.params.allowSwipeToNext === true || s.params.allowSwipeToPrev === true)) {\n s.setGrabCursor(true);\n }\n }\n isMoved = true;\n \n var diff = s.touches.diff = s.isHorizontal() ? s.touches.currentX - s.touches.startX : s.touches.currentY - s.touches.startY;\n \n diff = diff * s.params.touchRatio;\n if (s.rtl) diff = -diff;\n \n s.swipeDirection = diff > 0 ? 'prev' : 'next';\n currentTranslate = diff + startTranslate;\n \n var disableParentSwiper = true;\n if ((diff > 0 && currentTranslate > s.minTranslate())) {\n disableParentSwiper = false;\n if (s.params.resistance) currentTranslate = s.minTranslate() - 1 + Math.pow(-s.minTranslate() + startTranslate + diff, s.params.resistanceRatio);\n }\n else if (diff < 0 && currentTranslate < s.maxTranslate()) {\n disableParentSwiper = false;\n if (s.params.resistance) currentTranslate = s.maxTranslate() + 1 - Math.pow(s.maxTranslate() - startTranslate - diff, s.params.resistanceRatio);\n }\n \n if (disableParentSwiper) {\n e.preventedByNestedSwiper = true;\n }\n \n // Directions locks\n if (!s.params.allowSwipeToNext && s.swipeDirection === 'next' && currentTranslate < startTranslate) {\n currentTranslate = startTranslate;\n }\n if (!s.params.allowSwipeToPrev && s.swipeDirection === 'prev' && currentTranslate > startTranslate) {\n currentTranslate = startTranslate;\n }\n \n \n // Threshold\n if (s.params.threshold > 0) {\n if (Math.abs(diff) > s.params.threshold || allowThresholdMove) {\n if (!allowThresholdMove) {\n allowThresholdMove = true;\n s.touches.startX = s.touches.currentX;\n s.touches.startY = s.touches.currentY;\n currentTranslate = startTranslate;\n s.touches.diff = s.isHorizontal() ? s.touches.currentX - s.touches.startX : s.touches.currentY - s.touches.startY;\n return;\n }\n }\n else {\n currentTranslate = startTranslate;\n return;\n }\n }\n \n if (!s.params.followFinger) return;\n \n // Update active index in free mode\n if (s.params.freeMode || s.params.watchSlidesProgress) {\n s.updateActiveIndex();\n }\n if (s.params.freeMode) {\n //Velocity\n if (velocities.length === 0) {\n velocities.push({\n position: s.touches[s.isHorizontal() ? 'startX' : 'startY'],\n time: touchStartTime\n });\n }\n velocities.push({\n position: s.touches[s.isHorizontal() ? 'currentX' : 'currentY'],\n time: (new window.Date()).getTime()\n });\n }\n // Update progress\n s.updateProgress(currentTranslate);\n // Update translate\n s.setWrapperTranslate(currentTranslate);\n };\n s.onTouchEnd = function (e) {\n if (e.originalEvent) e = e.originalEvent;\n if (allowTouchCallbacks) {\n s.emit('onTouchEnd', s, e);\n }\n allowTouchCallbacks = false;\n if (!isTouched) return;\n //Return Grab Cursor\n if (s.params.grabCursor && isMoved && isTouched && (s.params.allowSwipeToNext === true || s.params.allowSwipeToPrev === true)) {\n s.setGrabCursor(false);\n }\n \n // Time diff\n var touchEndTime = Date.now();\n var timeDiff = touchEndTime - touchStartTime;\n \n // Tap, doubleTap, Click\n if (s.allowClick) {\n s.updateClickedSlide(e);\n s.emit('onTap', s, e);\n if (timeDiff < 300 && (touchEndTime - lastClickTime) > 300) {\n if (clickTimeout) clearTimeout(clickTimeout);\n clickTimeout = setTimeout(function () {\n if (!s) return;\n if (s.params.paginationHide && s.paginationContainer.length > 0 && !$(e.target).hasClass(s.params.bulletClass)) {\n s.paginationContainer.toggleClass(s.params.paginationHiddenClass);\n }\n s.emit('onClick', s, e);\n }, 300);\n \n }\n if (timeDiff < 300 && (touchEndTime - lastClickTime) < 300) {\n if (clickTimeout) clearTimeout(clickTimeout);\n s.emit('onDoubleTap', s, e);\n }\n }\n \n lastClickTime = Date.now();\n setTimeout(function () {\n if (s) s.allowClick = true;\n }, 0);\n \n if (!isTouched || !isMoved || !s.swipeDirection || s.touches.diff === 0 || currentTranslate === startTranslate) {\n isTouched = isMoved = false;\n return;\n }\n isTouched = isMoved = false;\n \n var currentPos;\n if (s.params.followFinger) {\n currentPos = s.rtl ? s.translate : -s.translate;\n }\n else {\n currentPos = -currentTranslate;\n }\n if (s.params.freeMode) {\n if (currentPos < -s.minTranslate()) {\n s.slideTo(s.activeIndex);\n return;\n }\n else if (currentPos > -s.maxTranslate()) {\n if (s.slides.length < s.snapGrid.length) {\n s.slideTo(s.snapGrid.length - 1);\n }\n else {\n s.slideTo(s.slides.length - 1);\n }\n return;\n }\n \n if (s.params.freeModeMomentum) {\n if (velocities.length > 1) {\n var lastMoveEvent = velocities.pop(), velocityEvent = velocities.pop();\n \n var distance = lastMoveEvent.position - velocityEvent.position;\n var time = lastMoveEvent.time - velocityEvent.time;\n s.velocity = distance / time;\n s.velocity = s.velocity / 2;\n if (Math.abs(s.velocity) < s.params.freeModeMinimumVelocity) {\n s.velocity = 0;\n }\n // this implies that the user stopped moving a finger then released.\n // There would be no events with distance zero, so the last event is stale.\n if (time > 150 || (new window.Date().getTime() - lastMoveEvent.time) > 300) {\n s.velocity = 0;\n }\n } else {\n s.velocity = 0;\n }\n s.velocity = s.velocity * s.params.freeModeMomentumVelocityRatio;\n \n velocities.length = 0;\n var momentumDuration = 1000 * s.params.freeModeMomentumRatio;\n var momentumDistance = s.velocity * momentumDuration;\n \n var newPosition = s.translate + momentumDistance;\n if (s.rtl) newPosition = - newPosition;\n var doBounce = false;\n var afterBouncePosition;\n var bounceAmount = Math.abs(s.velocity) * 20 * s.params.freeModeMomentumBounceRatio;\n if (newPosition < s.maxTranslate()) {\n if (s.params.freeModeMomentumBounce) {\n if (newPosition + s.maxTranslate() < -bounceAmount) {\n newPosition = s.maxTranslate() - bounceAmount;\n }\n afterBouncePosition = s.maxTranslate();\n doBounce = true;\n allowMomentumBounce = true;\n }\n else {\n newPosition = s.maxTranslate();\n }\n }\n else if (newPosition > s.minTranslate()) {\n if (s.params.freeModeMomentumBounce) {\n if (newPosition - s.minTranslate() > bounceAmount) {\n newPosition = s.minTranslate() + bounceAmount;\n }\n afterBouncePosition = s.minTranslate();\n doBounce = true;\n allowMomentumBounce = true;\n }\n else {\n newPosition = s.minTranslate();\n }\n }\n else if (s.params.freeModeSticky) {\n var j = 0,\n nextSlide;\n for (j = 0; j < s.snapGrid.length; j += 1) {\n if (s.snapGrid[j] > -newPosition) {\n nextSlide = j;\n break;\n }\n \n }\n if (Math.abs(s.snapGrid[nextSlide] - newPosition) < Math.abs(s.snapGrid[nextSlide - 1] - newPosition) || s.swipeDirection === 'next') {\n newPosition = s.snapGrid[nextSlide];\n } else {\n newPosition = s.snapGrid[nextSlide - 1];\n }\n if (!s.rtl) newPosition = - newPosition;\n }\n //Fix duration\n if (s.velocity !== 0) {\n if (s.rtl) {\n momentumDuration = Math.abs((-newPosition - s.translate) / s.velocity);\n }\n else {\n momentumDuration = Math.abs((newPosition - s.translate) / s.velocity);\n }\n }\n else if (s.params.freeModeSticky) {\n s.slideReset();\n return;\n }\n \n if (s.params.freeModeMomentumBounce && doBounce) {\n s.updateProgress(afterBouncePosition);\n s.setWrapperTransition(momentumDuration);\n s.setWrapperTranslate(newPosition);\n s.onTransitionStart();\n s.animating = true;\n s.wrapper.transitionEnd(function () {\n if (!s || !allowMomentumBounce) return;\n s.emit('onMomentumBounce', s);\n \n s.setWrapperTransition(s.params.speed);\n s.setWrapperTranslate(afterBouncePosition);\n s.wrapper.transitionEnd(function () {\n if (!s) return;\n s.onTransitionEnd();\n });\n });\n } else if (s.velocity) {\n s.updateProgress(newPosition);\n s.setWrapperTransition(momentumDuration);\n s.setWrapperTranslate(newPosition);\n s.onTransitionStart();\n if (!s.animating) {\n s.animating = true;\n s.wrapper.transitionEnd(function () {\n if (!s) return;\n s.onTransitionEnd();\n });\n }\n \n } else {\n s.updateProgress(newPosition);\n }\n \n s.updateActiveIndex();\n }\n if (!s.params.freeModeMomentum || timeDiff >= s.params.longSwipesMs) {\n s.updateProgress();\n s.updateActiveIndex();\n }\n return;\n }\n \n // Find current slide\n var i, stopIndex = 0, groupSize = s.slidesSizesGrid[0];\n for (i = 0; i < s.slidesGrid.length; i += s.params.slidesPerGroup) {\n if (typeof s.slidesGrid[i + s.params.slidesPerGroup] !== 'undefined') {\n if (currentPos >= s.slidesGrid[i] && currentPos < s.slidesGrid[i + s.params.slidesPerGroup]) {\n stopIndex = i;\n groupSize = s.slidesGrid[i + s.params.slidesPerGroup] - s.slidesGrid[i];\n }\n }\n else {\n if (currentPos >= s.slidesGrid[i]) {\n stopIndex = i;\n groupSize = s.slidesGrid[s.slidesGrid.length - 1] - s.slidesGrid[s.slidesGrid.length - 2];\n }\n }\n }\n \n // Find current slide size\n var ratio = (currentPos - s.slidesGrid[stopIndex]) / groupSize;\n \n if (timeDiff > s.params.longSwipesMs) {\n // Long touches\n if (!s.params.longSwipes) {\n s.slideTo(s.activeIndex);\n return;\n }\n if (s.swipeDirection === 'next') {\n if (ratio >= s.params.longSwipesRatio) s.slideTo(stopIndex + s.params.slidesPerGroup);\n else s.slideTo(stopIndex);\n \n }\n if (s.swipeDirection === 'prev') {\n if (ratio > (1 - s.params.longSwipesRatio)) s.slideTo(stopIndex + s.params.slidesPerGroup);\n else s.slideTo(stopIndex);\n }\n }\n else {\n // Short swipes\n if (!s.params.shortSwipes) {\n s.slideTo(s.activeIndex);\n return;\n }\n if (s.swipeDirection === 'next') {\n s.slideTo(stopIndex + s.params.slidesPerGroup);\n \n }\n if (s.swipeDirection === 'prev') {\n s.slideTo(stopIndex);\n }\n }\n };\n /*=========================\n Transitions\n ===========================*/\n s._slideTo = function (slideIndex, speed) {\n return s.slideTo(slideIndex, speed, true, true);\n };\n s.slideTo = function (slideIndex, speed, runCallbacks, internal) {\n if (typeof runCallbacks === 'undefined') runCallbacks = true;\n if (typeof slideIndex === 'undefined') slideIndex = 0;\n if (slideIndex < 0) slideIndex = 0;\n s.snapIndex = Math.floor(slideIndex / s.params.slidesPerGroup);\n if (s.snapIndex >= s.snapGrid.length) s.snapIndex = s.snapGrid.length - 1;\n \n var translate = - s.snapGrid[s.snapIndex];\n // Stop autoplay\n if (s.params.autoplay && s.autoplaying) {\n if (internal || !s.params.autoplayDisableOnInteraction) {\n s.pauseAutoplay(speed);\n }\n else {\n s.stopAutoplay();\n }\n }\n // Update progress\n s.updateProgress(translate);\n \n // Normalize slideIndex\n if(s.params.normalizeSlideIndex){\n for (var i = 0; i < s.slidesGrid.length; i++) {\n if (- Math.floor(translate * 100) >= Math.floor(s.slidesGrid[i] * 100)) {\n slideIndex = i;\n }\n }\n }\n \n // Directions locks\n if (!s.params.allowSwipeToNext && translate < s.translate && translate < s.minTranslate()) {\n return false;\n }\n if (!s.params.allowSwipeToPrev && translate > s.translate && translate > s.maxTranslate()) {\n if ((s.activeIndex || 0) !== slideIndex ) return false;\n }\n \n // Update Index\n if (typeof speed === 'undefined') speed = s.params.speed;\n s.previousIndex = s.activeIndex || 0;\n s.activeIndex = slideIndex;\n s.updateRealIndex();\n if ((s.rtl && -translate === s.translate) || (!s.rtl && translate === s.translate)) {\n // Update Height\n if (s.params.autoHeight) {\n s.updateAutoHeight();\n }\n s.updateClasses();\n if (s.params.effect !== 'slide') {\n s.setWrapperTranslate(translate);\n }\n return false;\n }\n s.updateClasses();\n s.onTransitionStart(runCallbacks);\n \n if (speed === 0 || s.browser.lteIE9) {\n s.setWrapperTranslate(translate);\n s.setWrapperTransition(0);\n s.onTransitionEnd(runCallbacks);\n }\n else {\n s.setWrapperTranslate(translate);\n s.setWrapperTransition(speed);\n if (!s.animating) {\n s.animating = true;\n s.wrapper.transitionEnd(function () {\n if (!s) return;\n s.onTransitionEnd(runCallbacks);\n });\n }\n \n }\n \n return true;\n };\n \n s.onTransitionStart = function (runCallbacks) {\n if (typeof runCallbacks === 'undefined') runCallbacks = true;\n if (s.params.autoHeight) {\n s.updateAutoHeight();\n }\n if (s.lazy) s.lazy.onTransitionStart();\n if (runCallbacks) {\n s.emit('onTransitionStart', s);\n if (s.activeIndex !== s.previousIndex) {\n s.emit('onSlideChangeStart', s);\n if (s.activeIndex > s.previousIndex) {\n s.emit('onSlideNextStart', s);\n }\n else {\n s.emit('onSlidePrevStart', s);\n }\n }\n \n }\n };\n s.onTransitionEnd = function (runCallbacks) {\n s.animating = false;\n s.setWrapperTransition(0);\n if (typeof runCallbacks === 'undefined') runCallbacks = true;\n if (s.lazy) s.lazy.onTransitionEnd();\n if (runCallbacks) {\n s.emit('onTransitionEnd', s);\n if (s.activeIndex !== s.previousIndex) {\n s.emit('onSlideChangeEnd', s);\n if (s.activeIndex > s.previousIndex) {\n s.emit('onSlideNextEnd', s);\n }\n else {\n s.emit('onSlidePrevEnd', s);\n }\n }\n }\n if (s.params.history && s.history) {\n s.history.setHistory(s.params.history, s.activeIndex);\n }\n if (s.params.hashnav && s.hashnav) {\n s.hashnav.setHash();\n }\n \n };\n s.slideNext = function (runCallbacks, speed, internal) {\n if (s.params.loop) {\n if (s.animating) return false;\n s.fixLoop();\n var clientLeft = s.container[0].clientLeft;\n return s.slideTo(s.activeIndex + s.params.slidesPerGroup, speed, runCallbacks, internal);\n }\n else return s.slideTo(s.activeIndex + s.params.slidesPerGroup, speed, runCallbacks, internal);\n };\n s._slideNext = function (speed) {\n return s.slideNext(true, speed, true);\n };\n s.slidePrev = function (runCallbacks, speed, internal) {\n if (s.params.loop) {\n if (s.animating) return false;\n s.fixLoop();\n var clientLeft = s.container[0].clientLeft;\n return s.slideTo(s.activeIndex - 1, speed, runCallbacks, internal);\n }\n else return s.slideTo(s.activeIndex - 1, speed, runCallbacks, internal);\n };\n s._slidePrev = function (speed) {\n return s.slidePrev(true, speed, true);\n };\n s.slideReset = function (runCallbacks, speed, internal) {\n return s.slideTo(s.activeIndex, speed, runCallbacks);\n };\n \n s.disableTouchControl = function () {\n s.params.onlyExternal = true;\n return true;\n };\n s.enableTouchControl = function () {\n s.params.onlyExternal = false;\n return true;\n };\n \n /*=========================\n Translate/transition helpers\n ===========================*/\n s.setWrapperTransition = function (duration, byController) {\n s.wrapper.transition(duration);\n if (s.params.effect !== 'slide' && s.effects[s.params.effect]) {\n s.effects[s.params.effect].setTransition(duration);\n }\n if (s.params.parallax && s.parallax) {\n s.parallax.setTransition(duration);\n }\n if (s.params.scrollbar && s.scrollbar) {\n s.scrollbar.setTransition(duration);\n }\n if (s.params.control && s.controller) {\n s.controller.setTransition(duration, byController);\n }\n s.emit('onSetTransition', s, duration);\n };\n s.setWrapperTranslate = function (translate, updateActiveIndex, byController) {\n var x = 0, y = 0, z = 0;\n if (s.isHorizontal()) {\n x = s.rtl ? -translate : translate;\n }\n else {\n y = translate;\n }\n \n if (s.params.roundLengths) {\n x = round(x);\n y = round(y);\n }\n \n if (!s.params.virtualTranslate) {\n if (s.support.transforms3d) s.wrapper.transform('translate3d(' + x + 'px, ' + y + 'px, ' + z + 'px)');\n else s.wrapper.transform('translate(' + x + 'px, ' + y + 'px)');\n }\n \n s.translate = s.isHorizontal() ? x : y;\n \n // Check if we need to update progress\n var progress;\n var translatesDiff = s.maxTranslate() - s.minTranslate();\n if (translatesDiff === 0) {\n progress = 0;\n }\n else {\n progress = (translate - s.minTranslate()) / (translatesDiff);\n }\n if (progress !== s.progress) {\n s.updateProgress(translate);\n }\n \n if (updateActiveIndex) s.updateActiveIndex();\n if (s.params.effect !== 'slide' && s.effects[s.params.effect]) {\n s.effects[s.params.effect].setTranslate(s.translate);\n }\n if (s.params.parallax && s.parallax) {\n s.parallax.setTranslate(s.translate);\n }\n if (s.params.scrollbar && s.scrollbar) {\n s.scrollbar.setTranslate(s.translate);\n }\n if (s.params.control && s.controller) {\n s.controller.setTranslate(s.translate, byController);\n }\n s.emit('onSetTranslate', s, s.translate);\n };\n \n s.getTranslate = function (el, axis) {\n var matrix, curTransform, curStyle, transformMatrix;\n \n // automatic axis detection\n if (typeof axis === 'undefined') {\n axis = 'x';\n }\n \n if (s.params.virtualTranslate) {\n return s.rtl ? -s.translate : s.translate;\n }\n \n curStyle = window.getComputedStyle(el, null);\n if (window.WebKitCSSMatrix) {\n curTransform = curStyle.transform || curStyle.webkitTransform;\n if (curTransform.split(',').length > 6) {\n curTransform = curTransform.split(', ').map(function(a){\n return a.replace(',','.');\n }).join(', ');\n }\n // Some old versions of Webkit choke when 'none' is passed; pass\n // empty string instead in this case\n transformMatrix = new window.WebKitCSSMatrix(curTransform === 'none' ? '' : curTransform);\n }\n else {\n transformMatrix = curStyle.MozTransform || curStyle.OTransform || curStyle.MsTransform || curStyle.msTransform || curStyle.transform || curStyle.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,');\n matrix = transformMatrix.toString().split(',');\n }\n \n if (axis === 'x') {\n //Latest Chrome and webkits Fix\n if (window.WebKitCSSMatrix)\n curTransform = transformMatrix.m41;\n //Crazy IE10 Matrix\n else if (matrix.length === 16)\n curTransform = parseFloat(matrix[12]);\n //Normal Browsers\n else\n curTransform = parseFloat(matrix[4]);\n }\n if (axis === 'y') {\n //Latest Chrome and webkits Fix\n if (window.WebKitCSSMatrix)\n curTransform = transformMatrix.m42;\n //Crazy IE10 Matrix\n else if (matrix.length === 16)\n curTransform = parseFloat(matrix[13]);\n //Normal Browsers\n else\n curTransform = parseFloat(matrix[5]);\n }\n if (s.rtl && curTransform) curTransform = -curTransform;\n return curTransform || 0;\n };\n s.getWrapperTranslate = function (axis) {\n if (typeof axis === 'undefined') {\n axis = s.isHorizontal() ? 'x' : 'y';\n }\n return s.getTranslate(s.wrapper[0], axis);\n };\n \n /*=========================\n Observer\n ===========================*/\n s.observers = [];\n function initObserver(target, options) {\n options = options || {};\n // create an observer instance\n var ObserverFunc = window.MutationObserver || window.WebkitMutationObserver;\n var observer = new ObserverFunc(function (mutations) {\n mutations.forEach(function (mutation) {\n s.onResize(true);\n s.emit('onObserverUpdate', s, mutation);\n });\n });\n \n observer.observe(target, {\n attributes: typeof options.attributes === 'undefined' ? true : options.attributes,\n childList: typeof options.childList === 'undefined' ? true : options.childList,\n characterData: typeof options.characterData === 'undefined' ? true : options.characterData\n });\n \n s.observers.push(observer);\n }\n s.initObservers = function () {\n if (s.params.observeParents) {\n var containerParents = s.container.parents();\n for (var i = 0; i < containerParents.length; i++) {\n initObserver(containerParents[i]);\n }\n }\n \n // Observe container\n initObserver(s.container[0], {childList: false});\n \n // Observe wrapper\n initObserver(s.wrapper[0], {attributes: false});\n };\n s.disconnectObservers = function () {\n for (var i = 0; i < s.observers.length; i++) {\n s.observers[i].disconnect();\n }\n s.observers = [];\n };\n /*=========================\n Loop\n ===========================*/\n // Create looped slides\n s.createLoop = function () {\n // Remove duplicated slides\n s.wrapper.children('.' + s.params.slideClass + '.' + s.params.slideDuplicateClass).remove();\n \n var slides = s.wrapper.children('.' + s.params.slideClass);\n \n if(s.params.slidesPerView === 'auto' && !s.params.loopedSlides) s.params.loopedSlides = slides.length;\n \n s.loopedSlides = parseInt(s.params.loopedSlides || s.params.slidesPerView, 10);\n s.loopedSlides = s.loopedSlides + s.params.loopAdditionalSlides;\n if (s.loopedSlides > slides.length) {\n s.loopedSlides = slides.length;\n }\n \n var prependSlides = [], appendSlides = [], i;\n slides.each(function (index, el) {\n var slide = $(this);\n if (index < s.loopedSlides) appendSlides.push(el);\n if (index < slides.length && index >= slides.length - s.loopedSlides) prependSlides.push(el);\n slide.attr('data-swiper-slide-index', index);\n });\n for (i = 0; i < appendSlides.length; i++) {\n s.wrapper.append($(appendSlides[i].cloneNode(true)).addClass(s.params.slideDuplicateClass));\n }\n for (i = prependSlides.length - 1; i >= 0; i--) {\n s.wrapper.prepend($(prependSlides[i].cloneNode(true)).addClass(s.params.slideDuplicateClass));\n }\n };\n s.destroyLoop = function () {\n s.wrapper.children('.' + s.params.slideClass + '.' + s.params.slideDuplicateClass).remove();\n s.slides.removeAttr('data-swiper-slide-index');\n };\n s.reLoop = function (updatePosition) {\n var oldIndex = s.activeIndex - s.loopedSlides;\n s.destroyLoop();\n s.createLoop();\n s.updateSlidesSize();\n if (updatePosition) {\n s.slideTo(oldIndex + s.loopedSlides, 0, false);\n }\n \n };\n s.fixLoop = function () {\n var newIndex;\n //Fix For Negative Oversliding\n if (s.activeIndex < s.loopedSlides) {\n newIndex = s.slides.length - s.loopedSlides * 3 + s.activeIndex;\n newIndex = newIndex + s.loopedSlides;\n s.slideTo(newIndex, 0, false, true);\n }\n //Fix For Positive Oversliding\n else if ((s.params.slidesPerView === 'auto' && s.activeIndex >= s.loopedSlides * 2) || (s.activeIndex > s.slides.length - s.params.slidesPerView * 2)) {\n newIndex = -s.slides.length + s.activeIndex + s.loopedSlides;\n newIndex = newIndex + s.loopedSlides;\n s.slideTo(newIndex, 0, false, true);\n }\n };\n /*=========================\n Append/Prepend/Remove Slides\n ===========================*/\n s.appendSlide = function (slides) {\n if (s.params.loop) {\n s.destroyLoop();\n }\n if (typeof slides === 'object' && slides.length) {\n for (var i = 0; i < slides.length; i++) {\n if (slides[i]) s.wrapper.append(slides[i]);\n }\n }\n else {\n s.wrapper.append(slides);\n }\n if (s.params.loop) {\n s.createLoop();\n }\n if (!(s.params.observer && s.support.observer)) {\n s.update(true);\n }\n };\n s.prependSlide = function (slides) {\n if (s.params.loop) {\n s.destroyLoop();\n }\n var newActiveIndex = s.activeIndex + 1;\n if (typeof slides === 'object' && slides.length) {\n for (var i = 0; i < slides.length; i++) {\n if (slides[i]) s.wrapper.prepend(slides[i]);\n }\n newActiveIndex = s.activeIndex + slides.length;\n }\n else {\n s.wrapper.prepend(slides);\n }\n if (s.params.loop) {\n s.createLoop();\n }\n if (!(s.params.observer && s.support.observer)) {\n s.update(true);\n }\n s.slideTo(newActiveIndex, 0, false);\n };\n s.removeSlide = function (slidesIndexes) {\n if (s.params.loop) {\n s.destroyLoop();\n s.slides = s.wrapper.children('.' + s.params.slideClass);\n }\n var newActiveIndex = s.activeIndex,\n indexToRemove;\n if (typeof slidesIndexes === 'object' && slidesIndexes.length) {\n for (var i = 0; i < slidesIndexes.length; i++) {\n indexToRemove = slidesIndexes[i];\n if (s.slides[indexToRemove]) s.slides.eq(indexToRemove).remove();\n if (indexToRemove < newActiveIndex) newActiveIndex--;\n }\n newActiveIndex = Math.max(newActiveIndex, 0);\n }\n else {\n indexToRemove = slidesIndexes;\n if (s.slides[indexToRemove]) s.slides.eq(indexToRemove).remove();\n if (indexToRemove < newActiveIndex) newActiveIndex--;\n newActiveIndex = Math.max(newActiveIndex, 0);\n }\n \n if (s.params.loop) {\n s.createLoop();\n }\n \n if (!(s.params.observer && s.support.observer)) {\n s.update(true);\n }\n if (s.params.loop) {\n s.slideTo(newActiveIndex + s.loopedSlides, 0, false);\n }\n else {\n s.slideTo(newActiveIndex, 0, false);\n }\n \n };\n s.removeAllSlides = function () {\n var slidesIndexes = [];\n for (var i = 0; i < s.slides.length; i++) {\n slidesIndexes.push(i);\n }\n s.removeSlide(slidesIndexes);\n };\n \n\n /*=========================\n Effects\n ===========================*/\n s.effects = {\n fade: {\n setTranslate: function () {\n for (var i = 0; i < s.slides.length; i++) {\n var slide = s.slides.eq(i);\n var offset = slide[0].swiperSlideOffset;\n var tx = -offset;\n if (!s.params.virtualTranslate) tx = tx - s.translate;\n var ty = 0;\n if (!s.isHorizontal()) {\n ty = tx;\n tx = 0;\n }\n var slideOpacity = s.params.fade.crossFade ?\n Math.max(1 - Math.abs(slide[0].progress), 0) :\n 1 + Math.min(Math.max(slide[0].progress, -1), 0);\n slide\n .css({\n opacity: slideOpacity\n })\n .transform('translate3d(' + tx + 'px, ' + ty + 'px, 0px)');\n \n }\n \n },\n setTransition: function (duration) {\n s.slides.transition(duration);\n if (s.params.virtualTranslate && duration !== 0) {\n var eventTriggered = false;\n s.slides.transitionEnd(function () {\n if (eventTriggered) return;\n if (!s) return;\n eventTriggered = true;\n s.animating = false;\n var triggerEvents = ['webkitTransitionEnd', 'transitionend', 'oTransitionEnd', 'MSTransitionEnd', 'msTransitionEnd'];\n for (var i = 0; i < triggerEvents.length; i++) {\n s.wrapper.trigger(triggerEvents[i]);\n }\n });\n }\n }\n },\n flip: {\n setTranslate: function () {\n for (var i = 0; i < s.slides.length; i++) {\n var slide = s.slides.eq(i);\n var progress = slide[0].progress;\n if (s.params.flip.limitRotation) {\n progress = Math.max(Math.min(slide[0].progress, 1), -1);\n }\n var offset = slide[0].swiperSlideOffset;\n var rotate = -180 * progress,\n rotateY = rotate,\n rotateX = 0,\n tx = -offset,\n ty = 0;\n if (!s.isHorizontal()) {\n ty = tx;\n tx = 0;\n rotateX = -rotateY;\n rotateY = 0;\n }\n else if (s.rtl) {\n rotateY = -rotateY;\n }\n \n slide[0].style.zIndex = -Math.abs(Math.round(progress)) + s.slides.length;\n \n if (s.params.flip.slideShadows) {\n //Set shadows\n var shadowBefore = s.isHorizontal() ? slide.find('.swiper-slide-shadow-left') : slide.find('.swiper-slide-shadow-top');\n var shadowAfter = s.isHorizontal() ? slide.find('.swiper-slide-shadow-right') : slide.find('.swiper-slide-shadow-bottom');\n if (shadowBefore.length === 0) {\n shadowBefore = $('
');\n slide.append(shadowBefore);\n }\n if (shadowAfter.length === 0) {\n shadowAfter = $('
');\n slide.append(shadowAfter);\n }\n if (shadowBefore.length) shadowBefore[0].style.opacity = Math.max(-progress, 0);\n if (shadowAfter.length) shadowAfter[0].style.opacity = Math.max(progress, 0);\n }\n \n slide\n .transform('translate3d(' + tx + 'px, ' + ty + 'px, 0px) rotateX(' + rotateX + 'deg) rotateY(' + rotateY + 'deg)');\n }\n },\n setTransition: function (duration) {\n s.slides.transition(duration).find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').transition(duration);\n if (s.params.virtualTranslate && duration !== 0) {\n var eventTriggered = false;\n s.slides.eq(s.activeIndex).transitionEnd(function () {\n if (eventTriggered) return;\n if (!s) return;\n if (!$(this).hasClass(s.params.slideActiveClass)) return;\n eventTriggered = true;\n s.animating = false;\n var triggerEvents = ['webkitTransitionEnd', 'transitionend', 'oTransitionEnd', 'MSTransitionEnd', 'msTransitionEnd'];\n for (var i = 0; i < triggerEvents.length; i++) {\n s.wrapper.trigger(triggerEvents[i]);\n }\n });\n }\n }\n },\n cube: {\n setTranslate: function () {\n var wrapperRotate = 0, cubeShadow;\n if (s.params.cube.shadow) {\n if (s.isHorizontal()) {\n cubeShadow = s.wrapper.find('.swiper-cube-shadow');\n if (cubeShadow.length === 0) {\n cubeShadow = $('
');\n s.wrapper.append(cubeShadow);\n }\n cubeShadow.css({height: s.width + 'px'});\n }\n else {\n cubeShadow = s.container.find('.swiper-cube-shadow');\n if (cubeShadow.length === 0) {\n cubeShadow = $('
');\n s.container.append(cubeShadow);\n }\n }\n }\n for (var i = 0; i < s.slides.length; i++) {\n var slide = s.slides.eq(i);\n var slideAngle = i * 90;\n var round = Math.floor(slideAngle / 360);\n if (s.rtl) {\n slideAngle = -slideAngle;\n round = Math.floor(-slideAngle / 360);\n }\n var progress = Math.max(Math.min(slide[0].progress, 1), -1);\n var tx = 0, ty = 0, tz = 0;\n if (i % 4 === 0) {\n tx = - round * 4 * s.size;\n tz = 0;\n }\n else if ((i - 1) % 4 === 0) {\n tx = 0;\n tz = - round * 4 * s.size;\n }\n else if ((i - 2) % 4 === 0) {\n tx = s.size + round * 4 * s.size;\n tz = s.size;\n }\n else if ((i - 3) % 4 === 0) {\n tx = - s.size;\n tz = 3 * s.size + s.size * 4 * round;\n }\n if (s.rtl) {\n tx = -tx;\n }\n \n if (!s.isHorizontal()) {\n ty = tx;\n tx = 0;\n }\n \n var transform = 'rotateX(' + (s.isHorizontal() ? 0 : -slideAngle) + 'deg) rotateY(' + (s.isHorizontal() ? slideAngle : 0) + 'deg) translate3d(' + tx + 'px, ' + ty + 'px, ' + tz + 'px)';\n if (progress <= 1 && progress > -1) {\n wrapperRotate = i * 90 + progress * 90;\n if (s.rtl) wrapperRotate = -i * 90 - progress * 90;\n }\n slide.transform(transform);\n if (s.params.cube.slideShadows) {\n //Set shadows\n var shadowBefore = s.isHorizontal() ? slide.find('.swiper-slide-shadow-left') : slide.find('.swiper-slide-shadow-top');\n var shadowAfter = s.isHorizontal() ? slide.find('.swiper-slide-shadow-right') : slide.find('.swiper-slide-shadow-bottom');\n if (shadowBefore.length === 0) {\n shadowBefore = $('
');\n slide.append(shadowBefore);\n }\n if (shadowAfter.length === 0) {\n shadowAfter = $('
');\n slide.append(shadowAfter);\n }\n if (shadowBefore.length) shadowBefore[0].style.opacity = Math.max(-progress, 0);\n if (shadowAfter.length) shadowAfter[0].style.opacity = Math.max(progress, 0);\n }\n }\n s.wrapper.css({\n '-webkit-transform-origin': '50% 50% -' + (s.size / 2) + 'px',\n '-moz-transform-origin': '50% 50% -' + (s.size / 2) + 'px',\n '-ms-transform-origin': '50% 50% -' + (s.size / 2) + 'px',\n 'transform-origin': '50% 50% -' + (s.size / 2) + 'px'\n });\n \n if (s.params.cube.shadow) {\n if (s.isHorizontal()) {\n cubeShadow.transform('translate3d(0px, ' + (s.width / 2 + s.params.cube.shadowOffset) + 'px, ' + (-s.width / 2) + 'px) rotateX(90deg) rotateZ(0deg) scale(' + (s.params.cube.shadowScale) + ')');\n }\n else {\n var shadowAngle = Math.abs(wrapperRotate) - Math.floor(Math.abs(wrapperRotate) / 90) * 90;\n var multiplier = 1.5 - (Math.sin(shadowAngle * 2 * Math.PI / 360) / 2 + Math.cos(shadowAngle * 2 * Math.PI / 360) / 2);\n var scale1 = s.params.cube.shadowScale,\n scale2 = s.params.cube.shadowScale / multiplier,\n offset = s.params.cube.shadowOffset;\n cubeShadow.transform('scale3d(' + scale1 + ', 1, ' + scale2 + ') translate3d(0px, ' + (s.height / 2 + offset) + 'px, ' + (-s.height / 2 / scale2) + 'px) rotateX(-90deg)');\n }\n }\n var zFactor = (s.isSafari || s.isUiWebView) ? (-s.size / 2) : 0;\n s.wrapper.transform('translate3d(0px,0,' + zFactor + 'px) rotateX(' + (s.isHorizontal() ? 0 : wrapperRotate) + 'deg) rotateY(' + (s.isHorizontal() ? -wrapperRotate : 0) + 'deg)');\n },\n setTransition: function (duration) {\n s.slides.transition(duration).find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').transition(duration);\n if (s.params.cube.shadow && !s.isHorizontal()) {\n s.container.find('.swiper-cube-shadow').transition(duration);\n }\n }\n },\n coverflow: {\n setTranslate: function () {\n var transform = s.translate;\n var center = s.isHorizontal() ? -transform + s.width / 2 : -transform + s.height / 2;\n var rotate = s.isHorizontal() ? s.params.coverflow.rotate: -s.params.coverflow.rotate;\n var translate = s.params.coverflow.depth;\n //Each slide offset from center\n for (var i = 0, length = s.slides.length; i < length; i++) {\n var slide = s.slides.eq(i);\n var slideSize = s.slidesSizesGrid[i];\n var slideOffset = slide[0].swiperSlideOffset;\n var offsetMultiplier = (center - slideOffset - slideSize / 2) / slideSize * s.params.coverflow.modifier;\n \n var rotateY = s.isHorizontal() ? rotate * offsetMultiplier : 0;\n var rotateX = s.isHorizontal() ? 0 : rotate * offsetMultiplier;\n // var rotateZ = 0\n var translateZ = -translate * Math.abs(offsetMultiplier);\n \n var translateY = s.isHorizontal() ? 0 : s.params.coverflow.stretch * (offsetMultiplier);\n var translateX = s.isHorizontal() ? s.params.coverflow.stretch * (offsetMultiplier) : 0;\n \n //Fix for ultra small values\n if (Math.abs(translateX) < 0.001) translateX = 0;\n if (Math.abs(translateY) < 0.001) translateY = 0;\n if (Math.abs(translateZ) < 0.001) translateZ = 0;\n if (Math.abs(rotateY) < 0.001) rotateY = 0;\n if (Math.abs(rotateX) < 0.001) rotateX = 0;\n \n var slideTransform = 'translate3d(' + translateX + 'px,' + translateY + 'px,' + translateZ + 'px) rotateX(' + rotateX + 'deg) rotateY(' + rotateY + 'deg)';\n \n slide.transform(slideTransform);\n slide[0].style.zIndex = -Math.abs(Math.round(offsetMultiplier)) + 1;\n if (s.params.coverflow.slideShadows) {\n //Set shadows\n var shadowBefore = s.isHorizontal() ? slide.find('.swiper-slide-shadow-left') : slide.find('.swiper-slide-shadow-top');\n var shadowAfter = s.isHorizontal() ? slide.find('.swiper-slide-shadow-right') : slide.find('.swiper-slide-shadow-bottom');\n if (shadowBefore.length === 0) {\n shadowBefore = $('
');\n slide.append(shadowBefore);\n }\n if (shadowAfter.length === 0) {\n shadowAfter = $('
');\n slide.append(shadowAfter);\n }\n if (shadowBefore.length) shadowBefore[0].style.opacity = offsetMultiplier > 0 ? offsetMultiplier : 0;\n if (shadowAfter.length) shadowAfter[0].style.opacity = (-offsetMultiplier) > 0 ? -offsetMultiplier : 0;\n }\n }\n \n //Set correct perspective for IE10\n if (s.browser.ie) {\n var ws = s.wrapper[0].style;\n ws.perspectiveOrigin = center + 'px 50%';\n }\n },\n setTransition: function (duration) {\n s.slides.transition(duration).find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').transition(duration);\n }\n }\n };\n \n\n /*=========================\n Images Lazy Loading\n ===========================*/\n s.lazy = {\n initialImageLoaded: false,\n loadImageInSlide: function (index, loadInDuplicate) {\n if (typeof index === 'undefined') return;\n if (typeof loadInDuplicate === 'undefined') loadInDuplicate = true;\n if (s.slides.length === 0) return;\n \n var slide = s.slides.eq(index);\n var img = slide.find('.' + s.params.lazyLoadingClass + ':not(.' + s.params.lazyStatusLoadedClass + '):not(.' + s.params.lazyStatusLoadingClass + ')');\n if (slide.hasClass(s.params.lazyLoadingClass) && !slide.hasClass(s.params.lazyStatusLoadedClass) && !slide.hasClass(s.params.lazyStatusLoadingClass)) {\n img = img.add(slide[0]);\n }\n if (img.length === 0) return;\n \n img.each(function () {\n var _img = $(this);\n _img.addClass(s.params.lazyStatusLoadingClass);\n var background = _img.attr('data-background');\n var src = _img.attr('data-src'),\n srcset = _img.attr('data-srcset'),\n sizes = _img.attr('data-sizes');\n s.loadImage(_img[0], (src || background), srcset, sizes, false, function () {\n if (typeof s === 'undefined' || s === null || !s) return;\n if (background) {\n _img.css('background-image', 'url(\"' + background + '\")');\n _img.removeAttr('data-background');\n }\n else {\n if (srcset) {\n _img.attr('srcset', srcset);\n _img.removeAttr('data-srcset');\n }\n if (sizes) {\n _img.attr('sizes', sizes);\n _img.removeAttr('data-sizes');\n }\n if (src) {\n _img.attr('src', src);\n _img.removeAttr('data-src');\n }\n \n }\n \n _img.addClass(s.params.lazyStatusLoadedClass).removeClass(s.params.lazyStatusLoadingClass);\n slide.find('.' + s.params.lazyPreloaderClass + ', .' + s.params.preloaderClass).remove();\n if (s.params.loop && loadInDuplicate) {\n var slideOriginalIndex = slide.attr('data-swiper-slide-index');\n if (slide.hasClass(s.params.slideDuplicateClass)) {\n var originalSlide = s.wrapper.children('[data-swiper-slide-index=\"' + slideOriginalIndex + '\"]:not(.' + s.params.slideDuplicateClass + ')');\n s.lazy.loadImageInSlide(originalSlide.index(), false);\n }\n else {\n var duplicatedSlide = s.wrapper.children('.' + s.params.slideDuplicateClass + '[data-swiper-slide-index=\"' + slideOriginalIndex + '\"]');\n s.lazy.loadImageInSlide(duplicatedSlide.index(), false);\n }\n }\n s.emit('onLazyImageReady', s, slide[0], _img[0]);\n });\n \n s.emit('onLazyImageLoad', s, slide[0], _img[0]);\n });\n \n },\n load: function () {\n var i;\n var slidesPerView = s.params.slidesPerView;\n if (slidesPerView === 'auto') {\n slidesPerView = 0;\n }\n if (!s.lazy.initialImageLoaded) s.lazy.initialImageLoaded = true;\n if (s.params.watchSlidesVisibility) {\n s.wrapper.children('.' + s.params.slideVisibleClass).each(function () {\n s.lazy.loadImageInSlide($(this).index());\n });\n }\n else {\n if (slidesPerView > 1) {\n for (i = s.activeIndex; i < s.activeIndex + slidesPerView ; i++) {\n if (s.slides[i]) s.lazy.loadImageInSlide(i);\n }\n }\n else {\n s.lazy.loadImageInSlide(s.activeIndex);\n }\n }\n if (s.params.lazyLoadingInPrevNext) {\n if (slidesPerView > 1 || (s.params.lazyLoadingInPrevNextAmount && s.params.lazyLoadingInPrevNextAmount > 1)) {\n var amount = s.params.lazyLoadingInPrevNextAmount;\n var spv = slidesPerView;\n var maxIndex = Math.min(s.activeIndex + spv + Math.max(amount, spv), s.slides.length);\n var minIndex = Math.max(s.activeIndex - Math.max(spv, amount), 0);\n // Next Slides\n for (i = s.activeIndex + slidesPerView; i < maxIndex; i++) {\n if (s.slides[i]) s.lazy.loadImageInSlide(i);\n }\n // Prev Slides\n for (i = minIndex; i < s.activeIndex ; i++) {\n if (s.slides[i]) s.lazy.loadImageInSlide(i);\n }\n }\n else {\n var nextSlide = s.wrapper.children('.' + s.params.slideNextClass);\n if (nextSlide.length > 0) s.lazy.loadImageInSlide(nextSlide.index());\n \n var prevSlide = s.wrapper.children('.' + s.params.slidePrevClass);\n if (prevSlide.length > 0) s.lazy.loadImageInSlide(prevSlide.index());\n }\n }\n },\n onTransitionStart: function () {\n if (s.params.lazyLoading) {\n if (s.params.lazyLoadingOnTransitionStart || (!s.params.lazyLoadingOnTransitionStart && !s.lazy.initialImageLoaded)) {\n s.lazy.load();\n }\n }\n },\n onTransitionEnd: function () {\n if (s.params.lazyLoading && !s.params.lazyLoadingOnTransitionStart) {\n s.lazy.load();\n }\n }\n };\n \n\n /*=========================\n Scrollbar\n ===========================*/\n s.scrollbar = {\n isTouched: false,\n setDragPosition: function (e) {\n var sb = s.scrollbar;\n var x = 0, y = 0;\n var translate;\n var pointerPosition = s.isHorizontal() ?\n ((e.type === 'touchstart' || e.type === 'touchmove') ? e.targetTouches[0].pageX : e.pageX || e.clientX) :\n ((e.type === 'touchstart' || e.type === 'touchmove') ? e.targetTouches[0].pageY : e.pageY || e.clientY) ;\n var position = (pointerPosition) - sb.track.offset()[s.isHorizontal() ? 'left' : 'top'] - sb.dragSize / 2;\n var positionMin = -s.minTranslate() * sb.moveDivider;\n var positionMax = -s.maxTranslate() * sb.moveDivider;\n if (position < positionMin) {\n position = positionMin;\n }\n else if (position > positionMax) {\n position = positionMax;\n }\n position = -position / sb.moveDivider;\n s.updateProgress(position);\n s.setWrapperTranslate(position, true);\n },\n dragStart: function (e) {\n var sb = s.scrollbar;\n sb.isTouched = true;\n e.preventDefault();\n e.stopPropagation();\n \n sb.setDragPosition(e);\n clearTimeout(sb.dragTimeout);\n \n sb.track.transition(0);\n if (s.params.scrollbarHide) {\n sb.track.css('opacity', 1);\n }\n s.wrapper.transition(100);\n sb.drag.transition(100);\n s.emit('onScrollbarDragStart', s);\n },\n dragMove: function (e) {\n var sb = s.scrollbar;\n if (!sb.isTouched) return;\n if (e.preventDefault) e.preventDefault();\n else e.returnValue = false;\n sb.setDragPosition(e);\n s.wrapper.transition(0);\n sb.track.transition(0);\n sb.drag.transition(0);\n s.emit('onScrollbarDragMove', s);\n },\n dragEnd: function (e) {\n var sb = s.scrollbar;\n if (!sb.isTouched) return;\n sb.isTouched = false;\n if (s.params.scrollbarHide) {\n clearTimeout(sb.dragTimeout);\n sb.dragTimeout = setTimeout(function () {\n sb.track.css('opacity', 0);\n sb.track.transition(400);\n }, 1000);\n \n }\n s.emit('onScrollbarDragEnd', s);\n if (s.params.scrollbarSnapOnRelease) {\n s.slideReset();\n }\n },\n draggableEvents: (function () {\n if ((s.params.simulateTouch === false && !s.support.touch)) return s.touchEventsDesktop;\n else return s.touchEvents;\n })(),\n enableDraggable: function () {\n var sb = s.scrollbar;\n var target = s.support.touch ? sb.track : document;\n $(sb.track).on(sb.draggableEvents.start, sb.dragStart);\n $(target).on(sb.draggableEvents.move, sb.dragMove);\n $(target).on(sb.draggableEvents.end, sb.dragEnd);\n },\n disableDraggable: function () {\n var sb = s.scrollbar;\n var target = s.support.touch ? sb.track : document;\n $(sb.track).off(sb.draggableEvents.start, sb.dragStart);\n $(target).off(sb.draggableEvents.move, sb.dragMove);\n $(target).off(sb.draggableEvents.end, sb.dragEnd);\n },\n set: function () {\n if (!s.params.scrollbar) return;\n var sb = s.scrollbar;\n sb.track = $(s.params.scrollbar);\n if (s.params.uniqueNavElements && typeof s.params.scrollbar === 'string' && sb.track.length > 1 && s.container.find(s.params.scrollbar).length === 1) {\n sb.track = s.container.find(s.params.scrollbar);\n }\n sb.drag = sb.track.find('.swiper-scrollbar-drag');\n if (sb.drag.length === 0) {\n sb.drag = $('
');\n sb.track.append(sb.drag);\n }\n sb.drag[0].style.width = '';\n sb.drag[0].style.height = '';\n sb.trackSize = s.isHorizontal() ? sb.track[0].offsetWidth : sb.track[0].offsetHeight;\n \n sb.divider = s.size / s.virtualSize;\n sb.moveDivider = sb.divider * (sb.trackSize / s.size);\n sb.dragSize = sb.trackSize * sb.divider;\n \n if (s.isHorizontal()) {\n sb.drag[0].style.width = sb.dragSize + 'px';\n }\n else {\n sb.drag[0].style.height = sb.dragSize + 'px';\n }\n \n if (sb.divider >= 1) {\n sb.track[0].style.display = 'none';\n }\n else {\n sb.track[0].style.display = '';\n }\n if (s.params.scrollbarHide) {\n sb.track[0].style.opacity = 0;\n }\n },\n setTranslate: function () {\n if (!s.params.scrollbar) return;\n var diff;\n var sb = s.scrollbar;\n var translate = s.translate || 0;\n var newPos;\n \n var newSize = sb.dragSize;\n newPos = (sb.trackSize - sb.dragSize) * s.progress;\n if (s.rtl && s.isHorizontal()) {\n newPos = -newPos;\n if (newPos > 0) {\n newSize = sb.dragSize - newPos;\n newPos = 0;\n }\n else if (-newPos + sb.dragSize > sb.trackSize) {\n newSize = sb.trackSize + newPos;\n }\n }\n else {\n if (newPos < 0) {\n newSize = sb.dragSize + newPos;\n newPos = 0;\n }\n else if (newPos + sb.dragSize > sb.trackSize) {\n newSize = sb.trackSize - newPos;\n }\n }\n if (s.isHorizontal()) {\n if (s.support.transforms3d) {\n sb.drag.transform('translate3d(' + (newPos) + 'px, 0, 0)');\n }\n else {\n sb.drag.transform('translateX(' + (newPos) + 'px)');\n }\n sb.drag[0].style.width = newSize + 'px';\n }\n else {\n if (s.support.transforms3d) {\n sb.drag.transform('translate3d(0px, ' + (newPos) + 'px, 0)');\n }\n else {\n sb.drag.transform('translateY(' + (newPos) + 'px)');\n }\n sb.drag[0].style.height = newSize + 'px';\n }\n if (s.params.scrollbarHide) {\n clearTimeout(sb.timeout);\n sb.track[0].style.opacity = 1;\n sb.timeout = setTimeout(function () {\n sb.track[0].style.opacity = 0;\n sb.track.transition(400);\n }, 1000);\n }\n },\n setTransition: function (duration) {\n if (!s.params.scrollbar) return;\n s.scrollbar.drag.transition(duration);\n }\n };\n \n\n /*=========================\n Controller\n ===========================*/\n s.controller = {\n LinearSpline: function (x, y) {\n var binarySearch = (function() {\n var maxIndex, minIndex, guess;\n return function(array, val) {\n minIndex = -1;\n maxIndex = array.length;\n while (maxIndex - minIndex > 1)\n if (array[guess = maxIndex + minIndex >> 1] <= val) {\n minIndex = guess;\n } else {\n maxIndex = guess;\n }\n return maxIndex;\n };\n })();\n this.x = x;\n this.y = y;\n this.lastIndex = x.length - 1;\n // Given an x value (x2), return the expected y2 value:\n // (x1,y1) is the known point before given value,\n // (x3,y3) is the known point after given value.\n var i1, i3;\n var l = this.x.length;\n \n this.interpolate = function (x2) {\n if (!x2) return 0;\n \n // Get the indexes of x1 and x3 (the array indexes before and after given x2):\n i3 = binarySearch(this.x, x2);\n i1 = i3 - 1;\n \n // We have our indexes i1 & i3, so we can calculate already:\n // y2 := ((x2−x1) × (y3−y1)) ÷ (x3−x1) + y1\n return ((x2 - this.x[i1]) * (this.y[i3] - this.y[i1])) / (this.x[i3] - this.x[i1]) + this.y[i1];\n };\n },\n //xxx: for now i will just save one spline function to to\n getInterpolateFunction: function(c){\n if(!s.controller.spline) s.controller.spline = s.params.loop ?\n new s.controller.LinearSpline(s.slidesGrid, c.slidesGrid) :\n new s.controller.LinearSpline(s.snapGrid, c.snapGrid);\n },\n setTranslate: function (translate, byController) {\n var controlled = s.params.control;\n var multiplier, controlledTranslate;\n function setControlledTranslate(c) {\n // this will create an Interpolate function based on the snapGrids\n // x is the Grid of the scrolled scroller and y will be the controlled scroller\n // it makes sense to create this only once and recall it for the interpolation\n // the function does a lot of value caching for performance\n translate = c.rtl && c.params.direction === 'horizontal' ? -s.translate : s.translate;\n if (s.params.controlBy === 'slide') {\n s.controller.getInterpolateFunction(c);\n // i am not sure why the values have to be multiplicated this way, tried to invert the snapGrid\n // but it did not work out\n controlledTranslate = -s.controller.spline.interpolate(-translate);\n }\n \n if(!controlledTranslate || s.params.controlBy === 'container'){\n multiplier = (c.maxTranslate() - c.minTranslate()) / (s.maxTranslate() - s.minTranslate());\n controlledTranslate = (translate - s.minTranslate()) * multiplier + c.minTranslate();\n }\n \n if (s.params.controlInverse) {\n controlledTranslate = c.maxTranslate() - controlledTranslate;\n }\n c.updateProgress(controlledTranslate);\n c.setWrapperTranslate(controlledTranslate, false, s);\n c.updateActiveIndex();\n }\n if (Array.isArray(controlled)) {\n for (var i = 0; i < controlled.length; i++) {\n if (controlled[i] !== byController && controlled[i] instanceof Swiper) {\n setControlledTranslate(controlled[i]);\n }\n }\n }\n else if (controlled instanceof Swiper && byController !== controlled) {\n \n setControlledTranslate(controlled);\n }\n },\n setTransition: function (duration, byController) {\n var controlled = s.params.control;\n var i;\n function setControlledTransition(c) {\n c.setWrapperTransition(duration, s);\n if (duration !== 0) {\n c.onTransitionStart();\n c.wrapper.transitionEnd(function(){\n if (!controlled) return;\n if (c.params.loop && s.params.controlBy === 'slide') {\n c.fixLoop();\n }\n c.onTransitionEnd();\n \n });\n }\n }\n if (Array.isArray(controlled)) {\n for (i = 0; i < controlled.length; i++) {\n if (controlled[i] !== byController && controlled[i] instanceof Swiper) {\n setControlledTransition(controlled[i]);\n }\n }\n }\n else if (controlled instanceof Swiper && byController !== controlled) {\n setControlledTransition(controlled);\n }\n }\n };\n \n\n /*=========================\n Hash Navigation\n ===========================*/\n s.hashnav = {\n onHashCange: function (e, a) {\n var newHash = document.location.hash.replace('#', '');\n var activeSlideHash = s.slides.eq(s.activeIndex).attr('data-hash');\n if (newHash !== activeSlideHash) {\n s.slideTo(s.wrapper.children('.' + s.params.slideClass + '[data-hash=\"' + (newHash) + '\"]').index());\n }\n },\n attachEvents: function (detach) {\n var action = detach ? 'off' : 'on';\n $(window)[action]('hashchange', s.hashnav.onHashCange);\n },\n setHash: function () {\n if (!s.hashnav.initialized || !s.params.hashnav) return;\n if (s.params.replaceState && window.history && window.history.replaceState) {\n window.history.replaceState(null, null, ('#' + s.slides.eq(s.activeIndex).attr('data-hash') || ''));\n } else {\n var slide = s.slides.eq(s.activeIndex);\n var hash = slide.attr('data-hash') || slide.attr('data-history');\n document.location.hash = hash || '';\n }\n },\n init: function () {\n if (!s.params.hashnav || s.params.history) return;\n s.hashnav.initialized = true;\n var hash = document.location.hash.replace('#', '');\n if (hash) {\n var speed = 0;\n for (var i = 0, length = s.slides.length; i < length; i++) {\n var slide = s.slides.eq(i);\n var slideHash = slide.attr('data-hash') || slide.attr('data-history');\n if (slideHash === hash && !slide.hasClass(s.params.slideDuplicateClass)) {\n var index = slide.index();\n s.slideTo(index, speed, s.params.runCallbacksOnInit, true);\n }\n }\n }\n if (s.params.hashnavWatchState) s.hashnav.attachEvents();\n },\n destroy: function () {\n if (s.params.hashnavWatchState) s.hashnav.attachEvents(true);\n }\n };\n \n\n /*=========================\n History Api with fallback to Hashnav\n ===========================*/\n s.history = {\n init: function () {\n if (!s.params.history) return;\n if (!window.history || !window.history.pushState) {\n s.params.history = false;\n s.params.hashnav = true;\n return;\n }\n s.history.initialized = true;\n this.paths = this.getPathValues();\n if (!this.paths.key && !this.paths.value) return;\n this.scrollToSlide(0, this.paths.value, s.params.runCallbacksOnInit);\n if (!s.params.replaceState) {\n window.addEventListener('popstate', this.setHistoryPopState);\n }\n },\n setHistoryPopState: function() {\n s.history.paths = s.history.getPathValues();\n s.history.scrollToSlide(s.params.speed, s.history.paths.value, false);\n },\n getPathValues: function() {\n var pathArray = window.location.pathname.slice(1).split('/');\n var total = pathArray.length;\n var key = pathArray[total - 2];\n var value = pathArray[total - 1];\n return { key: key, value: value };\n },\n setHistory: function (key, index) {\n if (!s.history.initialized || !s.params.history) return;\n var slide = s.slides.eq(index);\n var value = this.slugify(slide.attr('data-history'));\n if (!window.location.pathname.includes(key)) {\n value = key + '/' + value;\n }\n if (s.params.replaceState) {\n window.history.replaceState(null, null, value);\n } else {\n window.history.pushState(null, null, value);\n }\n },\n slugify: function(text) {\n return text.toString().toLowerCase()\n .replace(/\\s+/g, '-')\n .replace(/[^\\w\\-]+/g, '')\n .replace(/\\-\\-+/g, '-')\n .replace(/^-+/, '')\n .replace(/-+$/, '');\n },\n scrollToSlide: function(speed, value, runCallbacks) {\n if (value) {\n for (var i = 0, length = s.slides.length; i < length; i++) {\n var slide = s.slides.eq(i);\n var slideHistory = this.slugify(slide.attr('data-history'));\n if (slideHistory === value && !slide.hasClass(s.params.slideDuplicateClass)) {\n var index = slide.index();\n s.slideTo(index, speed, runCallbacks);\n }\n }\n } else {\n s.slideTo(0, speed, runCallbacks);\n }\n }\n };\n \n\n /*=========================\n Keyboard Control\n ===========================*/\n function handleKeyboard(e) {\n if (e.originalEvent) e = e.originalEvent; //jquery fix\n var kc = e.keyCode || e.charCode;\n // Directions locks\n if (!s.params.allowSwipeToNext && (s.isHorizontal() && kc === 39 || !s.isHorizontal() && kc === 40)) {\n return false;\n }\n if (!s.params.allowSwipeToPrev && (s.isHorizontal() && kc === 37 || !s.isHorizontal() && kc === 38)) {\n return false;\n }\n if (e.shiftKey || e.altKey || e.ctrlKey || e.metaKey) {\n return;\n }\n if (document.activeElement && document.activeElement.nodeName && (document.activeElement.nodeName.toLowerCase() === 'input' || document.activeElement.nodeName.toLowerCase() === 'textarea')) {\n return;\n }\n if (kc === 37 || kc === 39 || kc === 38 || kc === 40) {\n var inView = false;\n //Check that swiper should be inside of visible area of window\n if (s.container.parents('.' + s.params.slideClass).length > 0 && s.container.parents('.' + s.params.slideActiveClass).length === 0) {\n return;\n }\n var windowScroll = {\n left: window.pageXOffset,\n top: window.pageYOffset\n };\n var windowWidth = window.innerWidth;\n var windowHeight = window.innerHeight;\n var swiperOffset = s.container.offset();\n if (s.rtl) swiperOffset.left = swiperOffset.left - s.container[0].scrollLeft;\n var swiperCoord = [\n [swiperOffset.left, swiperOffset.top],\n [swiperOffset.left + s.width, swiperOffset.top],\n [swiperOffset.left, swiperOffset.top + s.height],\n [swiperOffset.left + s.width, swiperOffset.top + s.height]\n ];\n for (var i = 0; i < swiperCoord.length; i++) {\n var point = swiperCoord[i];\n if (\n point[0] >= windowScroll.left && point[0] <= windowScroll.left + windowWidth &&\n point[1] >= windowScroll.top && point[1] <= windowScroll.top + windowHeight\n ) {\n inView = true;\n }\n \n }\n if (!inView) return;\n }\n if (s.isHorizontal()) {\n if (kc === 37 || kc === 39) {\n if (e.preventDefault) e.preventDefault();\n else e.returnValue = false;\n }\n if ((kc === 39 && !s.rtl) || (kc === 37 && s.rtl)) s.slideNext();\n if ((kc === 37 && !s.rtl) || (kc === 39 && s.rtl)) s.slidePrev();\n }\n else {\n if (kc === 38 || kc === 40) {\n if (e.preventDefault) e.preventDefault();\n else e.returnValue = false;\n }\n if (kc === 40) s.slideNext();\n if (kc === 38) s.slidePrev();\n }\n s.emit('onKeyPress', s, kc);\n }\n s.disableKeyboardControl = function () {\n s.params.keyboardControl = false;\n $(document).off('keydown', handleKeyboard);\n };\n s.enableKeyboardControl = function () {\n s.params.keyboardControl = true;\n $(document).on('keydown', handleKeyboard);\n };\n \n\n /*=========================\n Mousewheel Control\n ===========================*/\n s.mousewheel = {\n event: false,\n lastScrollTime: (new window.Date()).getTime()\n };\n function isEventSupported() {\n var eventName = 'onwheel';\n var isSupported = eventName in document;\n \n if (!isSupported) {\n var element = document.createElement('div');\n element.setAttribute(eventName, 'return;');\n isSupported = typeof element[eventName] === 'function';\n }\n \n if (!isSupported &&\n document.implementation &&\n document.implementation.hasFeature &&\n // always returns true in newer browsers as per the standard.\n // @see http://dom.spec.whatwg.org/#dom-domimplementation-hasfeature\n document.implementation.hasFeature('', '') !== true ) {\n // This is the only way to test support for the `wheel` event in IE9+.\n isSupported = document.implementation.hasFeature('Events.wheel', '3.0');\n }\n \n return isSupported;\n }\n /**\n * Mouse wheel (and 2-finger trackpad) support on the web sucks. It is\n * complicated, thus this doc is long and (hopefully) detailed enough to answer\n * your questions.\n *\n * If you need to react to the mouse wheel in a predictable way, this code is\n * like your bestest friend. * hugs *\n *\n * As of today, there are 4 DOM event types you can listen to:\n *\n * 'wheel' -- Chrome(31+), FF(17+), IE(9+)\n * 'mousewheel' -- Chrome, IE(6+), Opera, Safari\n * 'MozMousePixelScroll' -- FF(3.5 only!) (2010-2013) -- don't bother!\n * 'DOMMouseScroll' -- FF(0.9.7+) since 2003\n *\n * So what to do? The is the best:\n *\n * normalizeWheel.getEventType();\n *\n * In your event callback, use this code to get sane interpretation of the\n * deltas. This code will return an object with properties:\n *\n * spinX -- normalized spin speed (use for zoom) - x plane\n * spinY -- \" - y plane\n * pixelX -- normalized distance (to pixels) - x plane\n * pixelY -- \" - y plane\n *\n * Wheel values are provided by the browser assuming you are using the wheel to\n * scroll a web page by a number of lines or pixels (or pages). Values can vary\n * significantly on different platforms and browsers, forgetting that you can\n * scroll at different speeds. Some devices (like trackpads) emit more events\n * at smaller increments with fine granularity, and some emit massive jumps with\n * linear speed or acceleration.\n *\n * This code does its best to normalize the deltas for you:\n *\n * - spin is trying to normalize how far the wheel was spun (or trackpad\n * dragged). This is super useful for zoom support where you want to\n * throw away the chunky scroll steps on the PC and make those equal to\n * the slow and smooth tiny steps on the Mac. Key data: This code tries to\n * resolve a single slow step on a wheel to 1.\n *\n * - pixel is normalizing the desired scroll delta in pixel units. You'll\n * get the crazy differences between browsers, but at least it'll be in\n * pixels!\n *\n * - positive value indicates scrolling DOWN/RIGHT, negative UP/LEFT. This\n * should translate to positive value zooming IN, negative zooming OUT.\n * This matches the newer 'wheel' event.\n *\n * Why are there spinX, spinY (or pixels)?\n *\n * - spinX is a 2-finger side drag on the trackpad, and a shift + wheel turn\n * with a mouse. It results in side-scrolling in the browser by default.\n *\n * - spinY is what you expect -- it's the classic axis of a mouse wheel.\n *\n * - I dropped spinZ/pixelZ. It is supported by the DOM 3 'wheel' event and\n * probably is by browsers in conjunction with fancy 3D controllers .. but\n * you know.\n *\n * Implementation info:\n *\n * Examples of 'wheel' event if you scroll slowly (down) by one step with an\n * average mouse:\n *\n * OS X + Chrome (mouse) - 4 pixel delta (wheelDelta -120)\n * OS X + Safari (mouse) - N/A pixel delta (wheelDelta -12)\n * OS X + Firefox (mouse) - 0.1 line delta (wheelDelta N/A)\n * Win8 + Chrome (mouse) - 100 pixel delta (wheelDelta -120)\n * Win8 + Firefox (mouse) - 3 line delta (wheelDelta -120)\n *\n * On the trackpad:\n *\n * OS X + Chrome (trackpad) - 2 pixel delta (wheelDelta -6)\n * OS X + Firefox (trackpad) - 1 pixel delta (wheelDelta N/A)\n *\n * On other/older browsers.. it's more complicated as there can be multiple and\n * also missing delta values.\n *\n * The 'wheel' event is more standard:\n *\n * http://www.w3.org/TR/DOM-Level-3-Events/#events-wheelevents\n *\n * The basics is that it includes a unit, deltaMode (pixels, lines, pages), and\n * deltaX, deltaY and deltaZ. Some browsers provide other values to maintain\n * backward compatibility with older events. Those other values help us\n * better normalize spin speed. Example of what the browsers provide:\n *\n * | event.wheelDelta | event.detail\n * ------------------+------------------+--------------\n * Safari v5/OS X | -120 | 0\n * Safari v5/Win7 | -120 | 0\n * Chrome v17/OS X | -120 | 0\n * Chrome v17/Win7 | -120 | 0\n * IE9/Win7 | -120 | undefined\n * Firefox v4/OS X | undefined | 1\n * Firefox v4/Win7 | undefined | 3\n *\n */\n function normalizeWheel( /*object*/ event ) /*object*/ {\n // Reasonable defaults\n var PIXEL_STEP = 10;\n var LINE_HEIGHT = 40;\n var PAGE_HEIGHT = 800;\n \n var sX = 0, sY = 0, // spinX, spinY\n pX = 0, pY = 0; // pixelX, pixelY\n \n // Legacy\n if( 'detail' in event ) {\n sY = event.detail;\n }\n if( 'wheelDelta' in event ) {\n sY = -event.wheelDelta / 120;\n }\n if( 'wheelDeltaY' in event ) {\n sY = -event.wheelDeltaY / 120;\n }\n if( 'wheelDeltaX' in event ) {\n sX = -event.wheelDeltaX / 120;\n }\n \n // side scrolling on FF with DOMMouseScroll\n if( 'axis' in event && event.axis === event.HORIZONTAL_AXIS ) {\n sX = sY;\n sY = 0;\n }\n \n pX = sX * PIXEL_STEP;\n pY = sY * PIXEL_STEP;\n \n if( 'deltaY' in event ) {\n pY = event.deltaY;\n }\n if( 'deltaX' in event ) {\n pX = event.deltaX;\n }\n \n if( (pX || pY) && event.deltaMode ) {\n if( event.deltaMode === 1 ) { // delta in LINE units\n pX *= LINE_HEIGHT;\n pY *= LINE_HEIGHT;\n } else { // delta in PAGE units\n pX *= PAGE_HEIGHT;\n pY *= PAGE_HEIGHT;\n }\n }\n \n // Fall-back if spin cannot be determined\n if( pX && !sX ) {\n sX = (pX < 1) ? -1 : 1;\n }\n if( pY && !sY ) {\n sY = (pY < 1) ? -1 : 1;\n }\n \n return {\n spinX: sX,\n spinY: sY,\n pixelX: pX,\n pixelY: pY\n };\n }\n if (s.params.mousewheelControl) {\n /**\n * The best combination if you prefer spinX + spinY normalization. It favors\n * the older DOMMouseScroll for Firefox, as FF does not include wheelDelta with\n * 'wheel' event, making spin speed determination impossible.\n */\n s.mousewheel.event = (navigator.userAgent.indexOf('firefox') > -1) ?\n 'DOMMouseScroll' :\n isEventSupported() ?\n 'wheel' : 'mousewheel';\n }\n function handleMousewheel(e) {\n if (e.originalEvent) e = e.originalEvent; //jquery fix\n var delta = 0;\n var rtlFactor = s.rtl ? -1 : 1;\n \n var data = normalizeWheel( e );\n \n if (s.params.mousewheelForceToAxis) {\n if (s.isHorizontal()) {\n if (Math.abs(data.pixelX) > Math.abs(data.pixelY)) delta = data.pixelX * rtlFactor;\n else return;\n }\n else {\n if (Math.abs(data.pixelY) > Math.abs(data.pixelX)) delta = data.pixelY;\n else return;\n }\n }\n else {\n delta = Math.abs(data.pixelX) > Math.abs(data.pixelY) ? - data.pixelX * rtlFactor : - data.pixelY;\n }\n \n if (delta === 0) return;\n \n if (s.params.mousewheelInvert) delta = -delta;\n \n if (!s.params.freeMode) {\n if ((new window.Date()).getTime() - s.mousewheel.lastScrollTime > 60) {\n if (delta < 0) {\n if ((!s.isEnd || s.params.loop) && !s.animating) {\n s.slideNext();\n s.emit('onScroll', s, e);\n }\n else if (s.params.mousewheelReleaseOnEdges) return true;\n }\n else {\n if ((!s.isBeginning || s.params.loop) && !s.animating) {\n s.slidePrev();\n s.emit('onScroll', s, e);\n }\n else if (s.params.mousewheelReleaseOnEdges) return true;\n }\n }\n s.mousewheel.lastScrollTime = (new window.Date()).getTime();\n \n }\n else {\n //Freemode or scrollContainer:\n var position = s.getWrapperTranslate() + delta * s.params.mousewheelSensitivity;\n var wasBeginning = s.isBeginning,\n wasEnd = s.isEnd;\n \n if (position >= s.minTranslate()) position = s.minTranslate();\n if (position <= s.maxTranslate()) position = s.maxTranslate();\n \n s.setWrapperTransition(0);\n s.setWrapperTranslate(position);\n s.updateProgress();\n s.updateActiveIndex();\n \n if (!wasBeginning && s.isBeginning || !wasEnd && s.isEnd) {\n s.updateClasses();\n }\n \n if (s.params.freeModeSticky) {\n clearTimeout(s.mousewheel.timeout);\n s.mousewheel.timeout = setTimeout(function () {\n s.slideReset();\n }, 300);\n }\n else {\n if (s.params.lazyLoading && s.lazy) {\n s.lazy.load();\n }\n }\n // Emit event\n s.emit('onScroll', s, e);\n \n // Stop autoplay\n if (s.params.autoplay && s.params.autoplayDisableOnInteraction) s.stopAutoplay();\n \n // Return page scroll on edge positions\n if (position === 0 || position === s.maxTranslate()) return;\n }\n \n if (e.preventDefault) e.preventDefault();\n else e.returnValue = false;\n return false;\n }\n s.disableMousewheelControl = function () {\n if (!s.mousewheel.event) return false;\n var target = s.container;\n if (s.params.mousewheelEventsTarged !== 'container') {\n target = $(s.params.mousewheelEventsTarged);\n }\n target.off(s.mousewheel.event, handleMousewheel);\n s.params.mousewheelControl = false;\n return true;\n };\n \n s.enableMousewheelControl = function () {\n if (!s.mousewheel.event) return false;\n var target = s.container;\n if (s.params.mousewheelEventsTarged !== 'container') {\n target = $(s.params.mousewheelEventsTarged);\n }\n target.on(s.mousewheel.event, handleMousewheel);\n s.params.mousewheelControl = true;\n return true;\n };\n \n\n /*=========================\n Parallax\n ===========================*/\n function setParallaxTransform(el, progress) {\n el = $(el);\n var p, pX, pY;\n var rtlFactor = s.rtl ? -1 : 1;\n \n p = el.attr('data-swiper-parallax') || '0';\n pX = el.attr('data-swiper-parallax-x');\n pY = el.attr('data-swiper-parallax-y');\n if (pX || pY) {\n pX = pX || '0';\n pY = pY || '0';\n }\n else {\n if (s.isHorizontal()) {\n pX = p;\n pY = '0';\n }\n else {\n pY = p;\n pX = '0';\n }\n }\n \n if ((pX).indexOf('%') >= 0) {\n pX = parseInt(pX, 10) * progress * rtlFactor + '%';\n }\n else {\n pX = pX * progress * rtlFactor + 'px' ;\n }\n if ((pY).indexOf('%') >= 0) {\n pY = parseInt(pY, 10) * progress + '%';\n }\n else {\n pY = pY * progress + 'px' ;\n }\n \n el.transform('translate3d(' + pX + ', ' + pY + ',0px)');\n }\n s.parallax = {\n setTranslate: function () {\n s.container.children('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y]').each(function(){\n setParallaxTransform(this, s.progress);\n \n });\n s.slides.each(function () {\n var slide = $(this);\n slide.find('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y]').each(function () {\n var progress = Math.min(Math.max(slide[0].progress, -1), 1);\n setParallaxTransform(this, progress);\n });\n });\n },\n setTransition: function (duration) {\n if (typeof duration === 'undefined') duration = s.params.speed;\n s.container.find('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y]').each(function(){\n var el = $(this);\n var parallaxDuration = parseInt(el.attr('data-swiper-parallax-duration'), 10) || duration;\n if (duration === 0) parallaxDuration = 0;\n el.transition(parallaxDuration);\n });\n }\n };\n \n\n /*=========================\n Zoom\n ===========================*/\n s.zoom = {\n // \"Global\" Props\n scale: 1,\n currentScale: 1,\n isScaling: false,\n gesture: {\n slide: undefined,\n slideWidth: undefined,\n slideHeight: undefined,\n image: undefined,\n imageWrap: undefined,\n zoomMax: s.params.zoomMax\n },\n image: {\n isTouched: undefined,\n isMoved: undefined,\n currentX: undefined,\n currentY: undefined,\n minX: undefined,\n minY: undefined,\n maxX: undefined,\n maxY: undefined,\n width: undefined,\n height: undefined,\n startX: undefined,\n startY: undefined,\n touchesStart: {},\n touchesCurrent: {}\n },\n velocity: {\n x: undefined,\n y: undefined,\n prevPositionX: undefined,\n prevPositionY: undefined,\n prevTime: undefined\n },\n // Calc Scale From Multi-touches\n getDistanceBetweenTouches: function (e) {\n if (e.targetTouches.length < 2) return 1;\n var x1 = e.targetTouches[0].pageX,\n y1 = e.targetTouches[0].pageY,\n x2 = e.targetTouches[1].pageX,\n y2 = e.targetTouches[1].pageY;\n var distance = Math.sqrt(Math.pow(x2 - x1, 2) + Math.pow(y2 - y1, 2));\n return distance;\n },\n // Events\n onGestureStart: function (e) {\n var z = s.zoom;\n if (!s.support.gestures) {\n if (e.type !== 'touchstart' || e.type === 'touchstart' && e.targetTouches.length < 2) {\n return;\n }\n z.gesture.scaleStart = z.getDistanceBetweenTouches(e);\n }\n if (!z.gesture.slide || !z.gesture.slide.length) {\n z.gesture.slide = $(this);\n if (z.gesture.slide.length === 0) z.gesture.slide = s.slides.eq(s.activeIndex);\n z.gesture.image = z.gesture.slide.find('img, svg, canvas');\n z.gesture.imageWrap = z.gesture.image.parent('.' + s.params.zoomContainerClass);\n z.gesture.zoomMax = z.gesture.imageWrap.attr('data-swiper-zoom') || s.params.zoomMax ;\n if (z.gesture.imageWrap.length === 0) {\n z.gesture.image = undefined;\n return;\n }\n }\n z.gesture.image.transition(0);\n z.isScaling = true;\n },\n onGestureChange: function (e) {\n var z = s.zoom;\n if (!s.support.gestures) {\n if (e.type !== 'touchmove' || e.type === 'touchmove' && e.targetTouches.length < 2) {\n return;\n }\n z.gesture.scaleMove = z.getDistanceBetweenTouches(e);\n }\n if (!z.gesture.image || z.gesture.image.length === 0) return;\n if (s.support.gestures) {\n z.scale = e.scale * z.currentScale;\n }\n else {\n z.scale = (z.gesture.scaleMove / z.gesture.scaleStart) * z.currentScale;\n }\n if (z.scale > z.gesture.zoomMax) {\n z.scale = z.gesture.zoomMax - 1 + Math.pow((z.scale - z.gesture.zoomMax + 1), 0.5);\n }\n if (z.scale < s.params.zoomMin) {\n z.scale = s.params.zoomMin + 1 - Math.pow((s.params.zoomMin - z.scale + 1), 0.5);\n }\n z.gesture.image.transform('translate3d(0,0,0) scale(' + z.scale + ')');\n },\n onGestureEnd: function (e) {\n var z = s.zoom;\n if (!s.support.gestures) {\n if (e.type !== 'touchend' || e.type === 'touchend' && e.changedTouches.length < 2) {\n return;\n }\n }\n if (!z.gesture.image || z.gesture.image.length === 0) return;\n z.scale = Math.max(Math.min(z.scale, z.gesture.zoomMax), s.params.zoomMin);\n z.gesture.image.transition(s.params.speed).transform('translate3d(0,0,0) scale(' + z.scale + ')');\n z.currentScale = z.scale;\n z.isScaling = false;\n if (z.scale === 1) z.gesture.slide = undefined;\n },\n onTouchStart: function (s, e) {\n var z = s.zoom;\n if (!z.gesture.image || z.gesture.image.length === 0) return;\n if (z.image.isTouched) return;\n if (s.device.os === 'android') e.preventDefault();\n z.image.isTouched = true;\n z.image.touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n z.image.touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n },\n onTouchMove: function (e) {\n var z = s.zoom;\n if (!z.gesture.image || z.gesture.image.length === 0) return;\n s.allowClick = false;\n if (!z.image.isTouched || !z.gesture.slide) return;\n \n if (!z.image.isMoved) {\n z.image.width = z.gesture.image[0].offsetWidth;\n z.image.height = z.gesture.image[0].offsetHeight;\n z.image.startX = s.getTranslate(z.gesture.imageWrap[0], 'x') || 0;\n z.image.startY = s.getTranslate(z.gesture.imageWrap[0], 'y') || 0;\n z.gesture.slideWidth = z.gesture.slide[0].offsetWidth;\n z.gesture.slideHeight = z.gesture.slide[0].offsetHeight;\n z.gesture.imageWrap.transition(0);\n if (s.rtl) z.image.startX = -z.image.startX;\n if (s.rtl) z.image.startY = -z.image.startY;\n }\n // Define if we need image drag\n var scaledWidth = z.image.width * z.scale;\n var scaledHeight = z.image.height * z.scale;\n \n if (scaledWidth < z.gesture.slideWidth && scaledHeight < z.gesture.slideHeight) return;\n \n z.image.minX = Math.min((z.gesture.slideWidth / 2 - scaledWidth / 2), 0);\n z.image.maxX = -z.image.minX;\n z.image.minY = Math.min((z.gesture.slideHeight / 2 - scaledHeight / 2), 0);\n z.image.maxY = -z.image.minY;\n \n z.image.touchesCurrent.x = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;\n z.image.touchesCurrent.y = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n \n if (!z.image.isMoved && !z.isScaling) {\n if (s.isHorizontal() &&\n (Math.floor(z.image.minX) === Math.floor(z.image.startX) && z.image.touchesCurrent.x < z.image.touchesStart.x) ||\n (Math.floor(z.image.maxX) === Math.floor(z.image.startX) && z.image.touchesCurrent.x > z.image.touchesStart.x)\n ) {\n z.image.isTouched = false;\n return;\n }\n else if (!s.isHorizontal() &&\n (Math.floor(z.image.minY) === Math.floor(z.image.startY) && z.image.touchesCurrent.y < z.image.touchesStart.y) ||\n (Math.floor(z.image.maxY) === Math.floor(z.image.startY) && z.image.touchesCurrent.y > z.image.touchesStart.y)\n ) {\n z.image.isTouched = false;\n return;\n }\n }\n e.preventDefault();\n e.stopPropagation();\n \n z.image.isMoved = true;\n z.image.currentX = z.image.touchesCurrent.x - z.image.touchesStart.x + z.image.startX;\n z.image.currentY = z.image.touchesCurrent.y - z.image.touchesStart.y + z.image.startY;\n \n if (z.image.currentX < z.image.minX) {\n z.image.currentX = z.image.minX + 1 - Math.pow((z.image.minX - z.image.currentX + 1), 0.8);\n }\n if (z.image.currentX > z.image.maxX) {\n z.image.currentX = z.image.maxX - 1 + Math.pow((z.image.currentX - z.image.maxX + 1), 0.8);\n }\n \n if (z.image.currentY < z.image.minY) {\n z.image.currentY = z.image.minY + 1 - Math.pow((z.image.minY - z.image.currentY + 1), 0.8);\n }\n if (z.image.currentY > z.image.maxY) {\n z.image.currentY = z.image.maxY - 1 + Math.pow((z.image.currentY - z.image.maxY + 1), 0.8);\n }\n \n //Velocity\n if (!z.velocity.prevPositionX) z.velocity.prevPositionX = z.image.touchesCurrent.x;\n if (!z.velocity.prevPositionY) z.velocity.prevPositionY = z.image.touchesCurrent.y;\n if (!z.velocity.prevTime) z.velocity.prevTime = Date.now();\n z.velocity.x = (z.image.touchesCurrent.x - z.velocity.prevPositionX) / (Date.now() - z.velocity.prevTime) / 2;\n z.velocity.y = (z.image.touchesCurrent.y - z.velocity.prevPositionY) / (Date.now() - z.velocity.prevTime) / 2;\n if (Math.abs(z.image.touchesCurrent.x - z.velocity.prevPositionX) < 2) z.velocity.x = 0;\n if (Math.abs(z.image.touchesCurrent.y - z.velocity.prevPositionY) < 2) z.velocity.y = 0;\n z.velocity.prevPositionX = z.image.touchesCurrent.x;\n z.velocity.prevPositionY = z.image.touchesCurrent.y;\n z.velocity.prevTime = Date.now();\n \n z.gesture.imageWrap.transform('translate3d(' + z.image.currentX + 'px, ' + z.image.currentY + 'px,0)');\n },\n onTouchEnd: function (s, e) {\n var z = s.zoom;\n if (!z.gesture.image || z.gesture.image.length === 0) return;\n if (!z.image.isTouched || !z.image.isMoved) {\n z.image.isTouched = false;\n z.image.isMoved = false;\n return;\n }\n z.image.isTouched = false;\n z.image.isMoved = false;\n var momentumDurationX = 300;\n var momentumDurationY = 300;\n var momentumDistanceX = z.velocity.x * momentumDurationX;\n var newPositionX = z.image.currentX + momentumDistanceX;\n var momentumDistanceY = z.velocity.y * momentumDurationY;\n var newPositionY = z.image.currentY + momentumDistanceY;\n \n //Fix duration\n if (z.velocity.x !== 0) momentumDurationX = Math.abs((newPositionX - z.image.currentX) / z.velocity.x);\n if (z.velocity.y !== 0) momentumDurationY = Math.abs((newPositionY - z.image.currentY) / z.velocity.y);\n var momentumDuration = Math.max(momentumDurationX, momentumDurationY);\n \n z.image.currentX = newPositionX;\n z.image.currentY = newPositionY;\n \n // Define if we need image drag\n var scaledWidth = z.image.width * z.scale;\n var scaledHeight = z.image.height * z.scale;\n z.image.minX = Math.min((z.gesture.slideWidth / 2 - scaledWidth / 2), 0);\n z.image.maxX = -z.image.minX;\n z.image.minY = Math.min((z.gesture.slideHeight / 2 - scaledHeight / 2), 0);\n z.image.maxY = -z.image.minY;\n z.image.currentX = Math.max(Math.min(z.image.currentX, z.image.maxX), z.image.minX);\n z.image.currentY = Math.max(Math.min(z.image.currentY, z.image.maxY), z.image.minY);\n \n z.gesture.imageWrap.transition(momentumDuration).transform('translate3d(' + z.image.currentX + 'px, ' + z.image.currentY + 'px,0)');\n },\n onTransitionEnd: function (s) {\n var z = s.zoom;\n if (z.gesture.slide && s.previousIndex !== s.activeIndex) {\n z.gesture.image.transform('translate3d(0,0,0) scale(1)');\n z.gesture.imageWrap.transform('translate3d(0,0,0)');\n z.gesture.slide = z.gesture.image = z.gesture.imageWrap = undefined;\n z.scale = z.currentScale = 1;\n }\n },\n // Toggle Zoom\n toggleZoom: function (s, e) {\n var z = s.zoom;\n if (!z.gesture.slide) {\n z.gesture.slide = s.clickedSlide ? $(s.clickedSlide) : s.slides.eq(s.activeIndex);\n z.gesture.image = z.gesture.slide.find('img, svg, canvas');\n z.gesture.imageWrap = z.gesture.image.parent('.' + s.params.zoomContainerClass);\n }\n if (!z.gesture.image || z.gesture.image.length === 0) return;\n \n var touchX, touchY, offsetX, offsetY, diffX, diffY, translateX, translateY, imageWidth, imageHeight, scaledWidth, scaledHeight, translateMinX, translateMinY, translateMaxX, translateMaxY, slideWidth, slideHeight;\n \n if (typeof z.image.touchesStart.x === 'undefined' && e) {\n touchX = e.type === 'touchend' ? e.changedTouches[0].pageX : e.pageX;\n touchY = e.type === 'touchend' ? e.changedTouches[0].pageY : e.pageY;\n }\n else {\n touchX = z.image.touchesStart.x;\n touchY = z.image.touchesStart.y;\n }\n \n if (z.scale && z.scale !== 1) {\n // Zoom Out\n z.scale = z.currentScale = 1;\n z.gesture.imageWrap.transition(300).transform('translate3d(0,0,0)');\n z.gesture.image.transition(300).transform('translate3d(0,0,0) scale(1)');\n z.gesture.slide = undefined;\n }\n else {\n // Zoom In\n z.scale = z.currentScale = z.gesture.imageWrap.attr('data-swiper-zoom') || s.params.zoomMax;\n if (e) {\n slideWidth = z.gesture.slide[0].offsetWidth;\n slideHeight = z.gesture.slide[0].offsetHeight;\n offsetX = z.gesture.slide.offset().left;\n offsetY = z.gesture.slide.offset().top;\n diffX = offsetX + slideWidth/2 - touchX;\n diffY = offsetY + slideHeight/2 - touchY;\n \n imageWidth = z.gesture.image[0].offsetWidth;\n imageHeight = z.gesture.image[0].offsetHeight;\n scaledWidth = imageWidth * z.scale;\n scaledHeight = imageHeight * z.scale;\n \n translateMinX = Math.min((slideWidth / 2 - scaledWidth / 2), 0);\n translateMinY = Math.min((slideHeight / 2 - scaledHeight / 2), 0);\n translateMaxX = -translateMinX;\n translateMaxY = -translateMinY;\n \n translateX = diffX * z.scale;\n translateY = diffY * z.scale;\n \n if (translateX < translateMinX) {\n translateX = translateMinX;\n }\n if (translateX > translateMaxX) {\n translateX = translateMaxX;\n }\n \n if (translateY < translateMinY) {\n translateY = translateMinY;\n }\n if (translateY > translateMaxY) {\n translateY = translateMaxY;\n }\n }\n else {\n translateX = 0;\n translateY = 0;\n }\n z.gesture.imageWrap.transition(300).transform('translate3d(' + translateX + 'px, ' + translateY + 'px,0)');\n z.gesture.image.transition(300).transform('translate3d(0,0,0) scale(' + z.scale + ')');\n }\n },\n // Attach/Detach Events\n attachEvents: function (detach) {\n var action = detach ? 'off' : 'on';\n \n if (s.params.zoom) {\n var target = s.slides;\n var passiveListener = s.touchEvents.start === 'touchstart' && s.support.passiveListener && s.params.passiveListeners ? {passive: true, capture: false} : false;\n // Scale image\n if (s.support.gestures) {\n s.slides[action]('gesturestart', s.zoom.onGestureStart, passiveListener);\n s.slides[action]('gesturechange', s.zoom.onGestureChange, passiveListener);\n s.slides[action]('gestureend', s.zoom.onGestureEnd, passiveListener);\n }\n else if (s.touchEvents.start === 'touchstart') {\n s.slides[action](s.touchEvents.start, s.zoom.onGestureStart, passiveListener);\n s.slides[action](s.touchEvents.move, s.zoom.onGestureChange, passiveListener);\n s.slides[action](s.touchEvents.end, s.zoom.onGestureEnd, passiveListener);\n }\n \n // Move image\n s[action]('touchStart', s.zoom.onTouchStart);\n s.slides.each(function (index, slide){\n if ($(slide).find('.' + s.params.zoomContainerClass).length > 0) {\n $(slide)[action](s.touchEvents.move, s.zoom.onTouchMove);\n }\n });\n s[action]('touchEnd', s.zoom.onTouchEnd);\n \n // Scale Out\n s[action]('transitionEnd', s.zoom.onTransitionEnd);\n if (s.params.zoomToggle) {\n s.on('doubleTap', s.zoom.toggleZoom);\n }\n }\n },\n init: function () {\n s.zoom.attachEvents();\n },\n destroy: function () {\n s.zoom.attachEvents(true);\n }\n };\n \n\n /*=========================\n Plugins API. Collect all and init all plugins\n ===========================*/\n s._plugins = [];\n for (var plugin in s.plugins) {\n var p = s.plugins[plugin](s, s.params[plugin]);\n if (p) s._plugins.push(p);\n }\n // Method to call all plugins event/method\n s.callPlugins = function (eventName) {\n for (var i = 0; i < s._plugins.length; i++) {\n if (eventName in s._plugins[i]) {\n s._plugins[i][eventName](arguments[1], arguments[2], arguments[3], arguments[4], arguments[5]);\n }\n }\n };\n \n\n /*=========================\n Events/Callbacks/Plugins Emitter\n ===========================*/\n function normalizeEventName (eventName) {\n if (eventName.indexOf('on') !== 0) {\n if (eventName[0] !== eventName[0].toUpperCase()) {\n eventName = 'on' + eventName[0].toUpperCase() + eventName.substring(1);\n }\n else {\n eventName = 'on' + eventName;\n }\n }\n return eventName;\n }\n s.emitterEventListeners = {\n \n };\n s.emit = function (eventName) {\n // Trigger callbacks\n if (s.params[eventName]) {\n s.params[eventName](arguments[1], arguments[2], arguments[3], arguments[4], arguments[5]);\n }\n var i;\n // Trigger events\n if (s.emitterEventListeners[eventName]) {\n for (i = 0; i < s.emitterEventListeners[eventName].length; i++) {\n s.emitterEventListeners[eventName][i](arguments[1], arguments[2], arguments[3], arguments[4], arguments[5]);\n }\n }\n // Trigger plugins\n if (s.callPlugins) s.callPlugins(eventName, arguments[1], arguments[2], arguments[3], arguments[4], arguments[5]);\n };\n s.on = function (eventName, handler) {\n eventName = normalizeEventName(eventName);\n if (!s.emitterEventListeners[eventName]) s.emitterEventListeners[eventName] = [];\n s.emitterEventListeners[eventName].push(handler);\n return s;\n };\n s.off = function (eventName, handler) {\n var i;\n eventName = normalizeEventName(eventName);\n if (typeof handler === 'undefined') {\n // Remove all handlers for such event\n s.emitterEventListeners[eventName] = [];\n return s;\n }\n if (!s.emitterEventListeners[eventName] || s.emitterEventListeners[eventName].length === 0) return;\n for (i = 0; i < s.emitterEventListeners[eventName].length; i++) {\n if(s.emitterEventListeners[eventName][i] === handler) s.emitterEventListeners[eventName].splice(i, 1);\n }\n return s;\n };\n s.once = function (eventName, handler) {\n eventName = normalizeEventName(eventName);\n var _handler = function () {\n handler(arguments[0], arguments[1], arguments[2], arguments[3], arguments[4]);\n s.off(eventName, _handler);\n };\n s.on(eventName, _handler);\n return s;\n };\n \n\n // Accessibility tools\n s.a11y = {\n makeFocusable: function ($el) {\n $el.attr('tabIndex', '0');\n return $el;\n },\n addRole: function ($el, role) {\n $el.attr('role', role);\n return $el;\n },\n \n addLabel: function ($el, label) {\n $el.attr('aria-label', label);\n return $el;\n },\n \n disable: function ($el) {\n $el.attr('aria-disabled', true);\n return $el;\n },\n \n enable: function ($el) {\n $el.attr('aria-disabled', false);\n return $el;\n },\n \n onEnterKey: function (event) {\n if (event.keyCode !== 13) return;\n if ($(event.target).is(s.params.nextButton)) {\n s.onClickNext(event);\n if (s.isEnd) {\n s.a11y.notify(s.params.lastSlideMessage);\n }\n else {\n s.a11y.notify(s.params.nextSlideMessage);\n }\n }\n else if ($(event.target).is(s.params.prevButton)) {\n s.onClickPrev(event);\n if (s.isBeginning) {\n s.a11y.notify(s.params.firstSlideMessage);\n }\n else {\n s.a11y.notify(s.params.prevSlideMessage);\n }\n }\n if ($(event.target).is('.' + s.params.bulletClass)) {\n $(event.target)[0].click();\n }\n },\n \n liveRegion: $(''),\n \n notify: function (message) {\n var notification = s.a11y.liveRegion;\n if (notification.length === 0) return;\n notification.html('');\n notification.html(message);\n },\n init: function () {\n // Setup accessibility\n if (s.params.nextButton && s.nextButton && s.nextButton.length > 0) {\n s.a11y.makeFocusable(s.nextButton);\n s.a11y.addRole(s.nextButton, 'button');\n s.a11y.addLabel(s.nextButton, s.params.nextSlideMessage);\n }\n if (s.params.prevButton && s.prevButton && s.prevButton.length > 0) {\n s.a11y.makeFocusable(s.prevButton);\n s.a11y.addRole(s.prevButton, 'button');\n s.a11y.addLabel(s.prevButton, s.params.prevSlideMessage);\n }\n \n $(s.container).append(s.a11y.liveRegion);\n },\n initPagination: function () {\n if (s.params.pagination && s.params.paginationClickable && s.bullets && s.bullets.length) {\n s.bullets.each(function () {\n var bullet = $(this);\n s.a11y.makeFocusable(bullet);\n s.a11y.addRole(bullet, 'button');\n s.a11y.addLabel(bullet, s.params.paginationBulletMessage.replace(/{{index}}/, bullet.index() + 1));\n });\n }\n },\n destroy: function () {\n if (s.a11y.liveRegion && s.a11y.liveRegion.length > 0) s.a11y.liveRegion.remove();\n }\n };\n \n\n /*=========================\n Init/Destroy\n ===========================*/\n s.init = function () {\n if (s.params.loop) s.createLoop();\n s.updateContainerSize();\n s.updateSlidesSize();\n s.updatePagination();\n if (s.params.scrollbar && s.scrollbar) {\n s.scrollbar.set();\n if (s.params.scrollbarDraggable) {\n s.scrollbar.enableDraggable();\n }\n }\n if (s.params.effect !== 'slide' && s.effects[s.params.effect]) {\n if (!s.params.loop) s.updateProgress();\n s.effects[s.params.effect].setTranslate();\n }\n if (s.params.loop) {\n s.slideTo(s.params.initialSlide + s.loopedSlides, 0, s.params.runCallbacksOnInit);\n }\n else {\n s.slideTo(s.params.initialSlide, 0, s.params.runCallbacksOnInit);\n if (s.params.initialSlide === 0) {\n if (s.parallax && s.params.parallax) s.parallax.setTranslate();\n if (s.lazy && s.params.lazyLoading) {\n s.lazy.load();\n s.lazy.initialImageLoaded = true;\n }\n }\n }\n s.attachEvents();\n if (s.params.observer && s.support.observer) {\n s.initObservers();\n }\n if (s.params.preloadImages && !s.params.lazyLoading) {\n s.preloadImages();\n }\n if (s.params.zoom && s.zoom) {\n s.zoom.init();\n }\n if (s.params.autoplay) {\n s.startAutoplay();\n }\n if (s.params.keyboardControl) {\n if (s.enableKeyboardControl) s.enableKeyboardControl();\n }\n if (s.params.mousewheelControl) {\n if (s.enableMousewheelControl) s.enableMousewheelControl();\n }\n // Deprecated hashnavReplaceState changed to replaceState for use in hashnav and history\n if (s.params.hashnavReplaceState) {\n s.params.replaceState = s.params.hashnavReplaceState;\n }\n if (s.params.history) {\n if (s.history) s.history.init();\n }\n if (s.params.hashnav) {\n if (s.hashnav) s.hashnav.init();\n }\n if (s.params.a11y && s.a11y) s.a11y.init();\n s.emit('onInit', s);\n };\n \n // Cleanup dynamic styles\n s.cleanupStyles = function () {\n // Container\n s.container.removeClass(s.classNames.join(' ')).removeAttr('style');\n \n // Wrapper\n s.wrapper.removeAttr('style');\n \n // Slides\n if (s.slides && s.slides.length) {\n s.slides\n .removeClass([\n s.params.slideVisibleClass,\n s.params.slideActiveClass,\n s.params.slideNextClass,\n s.params.slidePrevClass\n ].join(' '))\n .removeAttr('style')\n .removeAttr('data-swiper-column')\n .removeAttr('data-swiper-row');\n }\n \n // Pagination/Bullets\n if (s.paginationContainer && s.paginationContainer.length) {\n s.paginationContainer.removeClass(s.params.paginationHiddenClass);\n }\n if (s.bullets && s.bullets.length) {\n s.bullets.removeClass(s.params.bulletActiveClass);\n }\n \n // Buttons\n if (s.params.prevButton) $(s.params.prevButton).removeClass(s.params.buttonDisabledClass);\n if (s.params.nextButton) $(s.params.nextButton).removeClass(s.params.buttonDisabledClass);\n \n // Scrollbar\n if (s.params.scrollbar && s.scrollbar) {\n if (s.scrollbar.track && s.scrollbar.track.length) s.scrollbar.track.removeAttr('style');\n if (s.scrollbar.drag && s.scrollbar.drag.length) s.scrollbar.drag.removeAttr('style');\n }\n };\n \n // Destroy\n s.destroy = function (deleteInstance, cleanupStyles) {\n // Detach evebts\n s.detachEvents();\n // Stop autoplay\n s.stopAutoplay();\n // Disable draggable\n if (s.params.scrollbar && s.scrollbar) {\n if (s.params.scrollbarDraggable) {\n s.scrollbar.disableDraggable();\n }\n }\n // Destroy loop\n if (s.params.loop) {\n s.destroyLoop();\n }\n // Cleanup styles\n if (cleanupStyles) {\n s.cleanupStyles();\n }\n // Disconnect observer\n s.disconnectObservers();\n \n // Destroy zoom\n if (s.params.zoom && s.zoom) {\n s.zoom.destroy();\n }\n // Disable keyboard/mousewheel\n if (s.params.keyboardControl) {\n if (s.disableKeyboardControl) s.disableKeyboardControl();\n }\n if (s.params.mousewheelControl) {\n if (s.disableMousewheelControl) s.disableMousewheelControl();\n }\n // Disable a11y\n if (s.params.a11y && s.a11y) s.a11y.destroy();\n // Delete history popstate\n if (s.params.history && !s.params.replaceState) {\n window.removeEventListener('popstate', s.history.setHistoryPopState);\n }\n if (s.params.hashnav && s.hashnav) {\n s.hashnav.destroy();\n }\n // Destroy callback\n s.emit('onDestroy');\n // Delete instance\n if (deleteInstance !== false) s = null;\n };\n \n s.init();\n \n\n \n // Return swiper instance\n return s;\n };\n \n\n /*==================================================\n Prototype\n ====================================================*/\n Swiper.prototype = {\n isSafari: (function () {\n var ua = window.navigator.userAgent.toLowerCase();\n return (ua.indexOf('safari') >= 0 && ua.indexOf('chrome') < 0 && ua.indexOf('android') < 0);\n })(),\n isUiWebView: /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(window.navigator.userAgent),\n isArray: function (arr) {\n return Object.prototype.toString.apply(arr) === '[object Array]';\n },\n /*==================================================\n Browser\n ====================================================*/\n browser: {\n ie: window.navigator.pointerEnabled || window.navigator.msPointerEnabled,\n ieTouch: (window.navigator.msPointerEnabled && window.navigator.msMaxTouchPoints > 1) || (window.navigator.pointerEnabled && window.navigator.maxTouchPoints > 1),\n lteIE9: (function() {\n // create temporary DIV\n var div = document.createElement('div');\n // add content to tmp DIV which is wrapped into the IE HTML conditional statement\n div.innerHTML = '';\n // return true / false value based on what will browser render\n return div.getElementsByTagName('i').length === 1;\n })()\n },\n /*==================================================\n Devices\n ====================================================*/\n device: (function () {\n var ua = window.navigator.userAgent;\n var android = ua.match(/(Android);?[\\s\\/]+([\\d.]+)?/);\n var ipad = ua.match(/(iPad).*OS\\s([\\d_]+)/);\n var ipod = ua.match(/(iPod)(.*OS\\s([\\d_]+))?/);\n var iphone = !ipad && ua.match(/(iPhone\\sOS|iOS)\\s([\\d_]+)/);\n return {\n ios: ipad || iphone || ipod,\n android: android\n };\n })(),\n /*==================================================\n Feature Detection\n ====================================================*/\n support: {\n touch : (window.Modernizr && Modernizr.touch === true) || (function () {\n return !!(('ontouchstart' in window) || window.DocumentTouch && document instanceof DocumentTouch);\n })(),\n \n transforms3d : (window.Modernizr && Modernizr.csstransforms3d === true) || (function () {\n var div = document.createElement('div').style;\n return ('webkitPerspective' in div || 'MozPerspective' in div || 'OPerspective' in div || 'MsPerspective' in div || 'perspective' in div);\n })(),\n \n flexbox: (function () {\n var div = document.createElement('div').style;\n var styles = ('alignItems webkitAlignItems webkitBoxAlign msFlexAlign mozBoxAlign webkitFlexDirection msFlexDirection mozBoxDirection mozBoxOrient webkitBoxDirection webkitBoxOrient').split(' ');\n for (var i = 0; i < styles.length; i++) {\n if (styles[i] in div) return true;\n }\n })(),\n \n observer: (function () {\n return ('MutationObserver' in window || 'WebkitMutationObserver' in window);\n })(),\n \n passiveListener: (function () {\n var supportsPassive = false;\n try {\n var opts = Object.defineProperty({}, 'passive', {\n get: function() {\n supportsPassive = true;\n }\n });\n window.addEventListener('testPassiveListener', null, opts);\n } catch (e) {}\n return supportsPassive;\n })(),\n \n gestures: (function () {\n return 'ongesturestart' in window;\n })()\n },\n /*==================================================\n Plugins\n ====================================================*/\n plugins: {}\n };\n \n\n /*===========================\n Dom7 Library\n ===========================*/\n var Dom7 = (function () {\n var Dom7 = function (arr) {\n var _this = this, i = 0;\n // Create array-like object\n for (i = 0; i < arr.length; i++) {\n _this[i] = arr[i];\n }\n _this.length = arr.length;\n // Return collection with methods\n return this;\n };\n var $ = function (selector, context) {\n var arr = [], i = 0;\n if (selector && !context) {\n if (selector instanceof Dom7) {\n return selector;\n }\n }\n if (selector) {\n // String\n if (typeof selector === 'string') {\n var els, tempParent, html = selector.trim();\n if (html.indexOf('<') >= 0 && html.indexOf('>') >= 0) {\n var toCreate = 'div';\n if (html.indexOf(':~]/)) {\n // Pure ID selector\n els = [document.getElementById(selector.split('#')[1])];\n }\n else {\n // Other selectors\n els = (context || document).querySelectorAll(selector);\n }\n for (i = 0; i < els.length; i++) {\n if (els[i]) arr.push(els[i]);\n }\n }\n }\n // Node/element\n else if (selector.nodeType || selector === window || selector === document) {\n arr.push(selector);\n }\n //Array of elements or instance of Dom\n else if (selector.length > 0 && selector[0].nodeType) {\n for (i = 0; i < selector.length; i++) {\n arr.push(selector[i]);\n }\n }\n }\n return new Dom7(arr);\n };\n Dom7.prototype = {\n // Classes and attriutes\n addClass: function (className) {\n if (typeof className === 'undefined') {\n return this;\n }\n var classes = className.split(' ');\n for (var i = 0; i < classes.length; i++) {\n for (var j = 0; j < this.length; j++) {\n this[j].classList.add(classes[i]);\n }\n }\n return this;\n },\n removeClass: function (className) {\n var classes = className.split(' ');\n for (var i = 0; i < classes.length; i++) {\n for (var j = 0; j < this.length; j++) {\n this[j].classList.remove(classes[i]);\n }\n }\n return this;\n },\n hasClass: function (className) {\n if (!this[0]) return false;\n else return this[0].classList.contains(className);\n },\n toggleClass: function (className) {\n var classes = className.split(' ');\n for (var i = 0; i < classes.length; i++) {\n for (var j = 0; j < this.length; j++) {\n this[j].classList.toggle(classes[i]);\n }\n }\n return this;\n },\n attr: function (attrs, value) {\n if (arguments.length === 1 && typeof attrs === 'string') {\n // Get attr\n if (this[0]) return this[0].getAttribute(attrs);\n else return undefined;\n }\n else {\n // Set attrs\n for (var i = 0; i < this.length; i++) {\n if (arguments.length === 2) {\n // String\n this[i].setAttribute(attrs, value);\n }\n else {\n // Object\n for (var attrName in attrs) {\n this[i][attrName] = attrs[attrName];\n this[i].setAttribute(attrName, attrs[attrName]);\n }\n }\n }\n return this;\n }\n },\n removeAttr: function (attr) {\n for (var i = 0; i < this.length; i++) {\n this[i].removeAttribute(attr);\n }\n return this;\n },\n data: function (key, value) {\n if (typeof value === 'undefined') {\n // Get value\n if (this[0]) {\n var dataKey = this[0].getAttribute('data-' + key);\n if (dataKey) return dataKey;\n else if (this[0].dom7ElementDataStorage && (key in this[0].dom7ElementDataStorage)) return this[0].dom7ElementDataStorage[key];\n else return undefined;\n }\n else return undefined;\n }\n else {\n // Set value\n for (var i = 0; i < this.length; i++) {\n var el = this[i];\n if (!el.dom7ElementDataStorage) el.dom7ElementDataStorage = {};\n el.dom7ElementDataStorage[key] = value;\n }\n return this;\n }\n },\n // Transforms\n transform : function (transform) {\n for (var i = 0; i < this.length; i++) {\n var elStyle = this[i].style;\n elStyle.webkitTransform = elStyle.MsTransform = elStyle.msTransform = elStyle.MozTransform = elStyle.OTransform = elStyle.transform = transform;\n }\n return this;\n },\n transition: function (duration) {\n if (typeof duration !== 'string') {\n duration = duration + 'ms';\n }\n for (var i = 0; i < this.length; i++) {\n var elStyle = this[i].style;\n elStyle.webkitTransitionDuration = elStyle.MsTransitionDuration = elStyle.msTransitionDuration = elStyle.MozTransitionDuration = elStyle.OTransitionDuration = elStyle.transitionDuration = duration;\n }\n return this;\n },\n //Events\n on: function (eventName, targetSelector, listener, capture) {\n function handleLiveEvent(e) {\n var target = e.target;\n if ($(target).is(targetSelector)) listener.call(target, e);\n else {\n var parents = $(target).parents();\n for (var k = 0; k < parents.length; k++) {\n if ($(parents[k]).is(targetSelector)) listener.call(parents[k], e);\n }\n }\n }\n var events = eventName.split(' ');\n var i, j;\n for (i = 0; i < this.length; i++) {\n if (typeof targetSelector === 'function' || targetSelector === false) {\n // Usual events\n if (typeof targetSelector === 'function') {\n listener = arguments[1];\n capture = arguments[2] || false;\n }\n for (j = 0; j < events.length; j++) {\n this[i].addEventListener(events[j], listener, capture);\n }\n }\n else {\n //Live events\n for (j = 0; j < events.length; j++) {\n if (!this[i].dom7LiveListeners) this[i].dom7LiveListeners = [];\n this[i].dom7LiveListeners.push({listener: listener, liveListener: handleLiveEvent});\n this[i].addEventListener(events[j], handleLiveEvent, capture);\n }\n }\n }\n \n return this;\n },\n off: function (eventName, targetSelector, listener, capture) {\n var events = eventName.split(' ');\n for (var i = 0; i < events.length; i++) {\n for (var j = 0; j < this.length; j++) {\n if (typeof targetSelector === 'function' || targetSelector === false) {\n // Usual events\n if (typeof targetSelector === 'function') {\n listener = arguments[1];\n capture = arguments[2] || false;\n }\n this[j].removeEventListener(events[i], listener, capture);\n }\n else {\n // Live event\n if (this[j].dom7LiveListeners) {\n for (var k = 0; k < this[j].dom7LiveListeners.length; k++) {\n if (this[j].dom7LiveListeners[k].listener === listener) {\n this[j].removeEventListener(events[i], this[j].dom7LiveListeners[k].liveListener, capture);\n }\n }\n }\n }\n }\n }\n return this;\n },\n once: function (eventName, targetSelector, listener, capture) {\n var dom = this;\n if (typeof targetSelector === 'function') {\n targetSelector = false;\n listener = arguments[1];\n capture = arguments[2];\n }\n function proxy(e) {\n listener(e);\n dom.off(eventName, targetSelector, proxy, capture);\n }\n dom.on(eventName, targetSelector, proxy, capture);\n },\n trigger: function (eventName, eventData) {\n for (var i = 0; i < this.length; i++) {\n var evt;\n try {\n evt = new window.CustomEvent(eventName, {detail: eventData, bubbles: true, cancelable: true});\n }\n catch (e) {\n evt = document.createEvent('Event');\n evt.initEvent(eventName, true, true);\n evt.detail = eventData;\n }\n this[i].dispatchEvent(evt);\n }\n return this;\n },\n transitionEnd: function (callback) {\n var events = ['webkitTransitionEnd', 'transitionend', 'oTransitionEnd', 'MSTransitionEnd', 'msTransitionEnd'],\n i, j, dom = this;\n function fireCallBack(e) {\n /*jshint validthis:true */\n if (e.target !== this) return;\n callback.call(this, e);\n for (i = 0; i < events.length; i++) {\n dom.off(events[i], fireCallBack);\n }\n }\n if (callback) {\n for (i = 0; i < events.length; i++) {\n dom.on(events[i], fireCallBack);\n }\n }\n return this;\n },\n // Sizing/Styles\n width: function () {\n if (this[0] === window) {\n return window.innerWidth;\n }\n else {\n if (this.length > 0) {\n return parseFloat(this.css('width'));\n }\n else {\n return null;\n }\n }\n },\n outerWidth: function (includeMargins) {\n if (this.length > 0) {\n if (includeMargins)\n return this[0].offsetWidth + parseFloat(this.css('margin-right')) + parseFloat(this.css('margin-left'));\n else\n return this[0].offsetWidth;\n }\n else return null;\n },\n height: function () {\n if (this[0] === window) {\n return window.innerHeight;\n }\n else {\n if (this.length > 0) {\n return parseFloat(this.css('height'));\n }\n else {\n return null;\n }\n }\n },\n outerHeight: function (includeMargins) {\n if (this.length > 0) {\n if (includeMargins)\n return this[0].offsetHeight + parseFloat(this.css('margin-top')) + parseFloat(this.css('margin-bottom'));\n else\n return this[0].offsetHeight;\n }\n else return null;\n },\n offset: function () {\n if (this.length > 0) {\n var el = this[0];\n var box = el.getBoundingClientRect();\n var body = document.body;\n var clientTop = el.clientTop || body.clientTop || 0;\n var clientLeft = el.clientLeft || body.clientLeft || 0;\n var scrollTop = window.pageYOffset || el.scrollTop;\n var scrollLeft = window.pageXOffset || el.scrollLeft;\n return {\n top: box.top + scrollTop - clientTop,\n left: box.left + scrollLeft - clientLeft\n };\n }\n else {\n return null;\n }\n },\n css: function (props, value) {\n var i;\n if (arguments.length === 1) {\n if (typeof props === 'string') {\n if (this[0]) return window.getComputedStyle(this[0], null).getPropertyValue(props);\n }\n else {\n for (i = 0; i < this.length; i++) {\n for (var prop in props) {\n this[i].style[prop] = props[prop];\n }\n }\n return this;\n }\n }\n if (arguments.length === 2 && typeof props === 'string') {\n for (i = 0; i < this.length; i++) {\n this[i].style[props] = value;\n }\n return this;\n }\n return this;\n },\n \n //Dom manipulation\n each: function (callback) {\n for (var i = 0; i < this.length; i++) {\n callback.call(this[i], i, this[i]);\n }\n return this;\n },\n html: function (html) {\n if (typeof html === 'undefined') {\n return this[0] ? this[0].innerHTML : undefined;\n }\n else {\n for (var i = 0; i < this.length; i++) {\n this[i].innerHTML = html;\n }\n return this;\n }\n },\n text: function (text) {\n if (typeof text === 'undefined') {\n if (this[0]) {\n return this[0].textContent.trim();\n }\n else return null;\n }\n else {\n for (var i = 0; i < this.length; i++) {\n this[i].textContent = text;\n }\n return this;\n }\n },\n is: function (selector) {\n if (!this[0]) return false;\n var compareWith, i;\n if (typeof selector === 'string') {\n var el = this[0];\n if (el === document) return selector === document;\n if (el === window) return selector === window;\n \n if (el.matches) return el.matches(selector);\n else if (el.webkitMatchesSelector) return el.webkitMatchesSelector(selector);\n else if (el.mozMatchesSelector) return el.mozMatchesSelector(selector);\n else if (el.msMatchesSelector) return el.msMatchesSelector(selector);\n else {\n compareWith = $(selector);\n for (i = 0; i < compareWith.length; i++) {\n if (compareWith[i] === this[0]) return true;\n }\n return false;\n }\n }\n else if (selector === document) return this[0] === document;\n else if (selector === window) return this[0] === window;\n else {\n if (selector.nodeType || selector instanceof Dom7) {\n compareWith = selector.nodeType ? [selector] : selector;\n for (i = 0; i < compareWith.length; i++) {\n if (compareWith[i] === this[0]) return true;\n }\n return false;\n }\n return false;\n }\n \n },\n index: function () {\n if (this[0]) {\n var child = this[0];\n var i = 0;\n while ((child = child.previousSibling) !== null) {\n if (child.nodeType === 1) i++;\n }\n return i;\n }\n else return undefined;\n },\n eq: function (index) {\n if (typeof index === 'undefined') return this;\n var length = this.length;\n var returnIndex;\n if (index > length - 1) {\n return new Dom7([]);\n }\n if (index < 0) {\n returnIndex = length + index;\n if (returnIndex < 0) return new Dom7([]);\n else return new Dom7([this[returnIndex]]);\n }\n return new Dom7([this[index]]);\n },\n append: function (newChild) {\n var i, j;\n for (i = 0; i < this.length; i++) {\n if (typeof newChild === 'string') {\n var tempDiv = document.createElement('div');\n tempDiv.innerHTML = newChild;\n while (tempDiv.firstChild) {\n this[i].appendChild(tempDiv.firstChild);\n }\n }\n else if (newChild instanceof Dom7) {\n for (j = 0; j < newChild.length; j++) {\n this[i].appendChild(newChild[j]);\n }\n }\n else {\n this[i].appendChild(newChild);\n }\n }\n return this;\n },\n prepend: function (newChild) {\n var i, j;\n for (i = 0; i < this.length; i++) {\n if (typeof newChild === 'string') {\n var tempDiv = document.createElement('div');\n tempDiv.innerHTML = newChild;\n for (j = tempDiv.childNodes.length - 1; j >= 0; j--) {\n this[i].insertBefore(tempDiv.childNodes[j], this[i].childNodes[0]);\n }\n // this[i].insertAdjacentHTML('afterbegin', newChild);\n }\n else if (newChild instanceof Dom7) {\n for (j = 0; j < newChild.length; j++) {\n this[i].insertBefore(newChild[j], this[i].childNodes[0]);\n }\n }\n else {\n this[i].insertBefore(newChild, this[i].childNodes[0]);\n }\n }\n return this;\n },\n insertBefore: function (selector) {\n var before = $(selector);\n for (var i = 0; i < this.length; i++) {\n if (before.length === 1) {\n before[0].parentNode.insertBefore(this[i], before[0]);\n }\n else if (before.length > 1) {\n for (var j = 0; j < before.length; j++) {\n before[j].parentNode.insertBefore(this[i].cloneNode(true), before[j]);\n }\n }\n }\n },\n insertAfter: function (selector) {\n var after = $(selector);\n for (var i = 0; i < this.length; i++) {\n if (after.length === 1) {\n after[0].parentNode.insertBefore(this[i], after[0].nextSibling);\n }\n else if (after.length > 1) {\n for (var j = 0; j < after.length; j++) {\n after[j].parentNode.insertBefore(this[i].cloneNode(true), after[j].nextSibling);\n }\n }\n }\n },\n next: function (selector) {\n if (this.length > 0) {\n if (selector) {\n if (this[0].nextElementSibling && $(this[0].nextElementSibling).is(selector)) return new Dom7([this[0].nextElementSibling]);\n else return new Dom7([]);\n }\n else {\n if (this[0].nextElementSibling) return new Dom7([this[0].nextElementSibling]);\n else return new Dom7([]);\n }\n }\n else return new Dom7([]);\n },\n nextAll: function (selector) {\n var nextEls = [];\n var el = this[0];\n if (!el) return new Dom7([]);\n while (el.nextElementSibling) {\n var next = el.nextElementSibling;\n if (selector) {\n if($(next).is(selector)) nextEls.push(next);\n }\n else nextEls.push(next);\n el = next;\n }\n return new Dom7(nextEls);\n },\n prev: function (selector) {\n if (this.length > 0) {\n if (selector) {\n if (this[0].previousElementSibling && $(this[0].previousElementSibling).is(selector)) return new Dom7([this[0].previousElementSibling]);\n else return new Dom7([]);\n }\n else {\n if (this[0].previousElementSibling) return new Dom7([this[0].previousElementSibling]);\n else return new Dom7([]);\n }\n }\n else return new Dom7([]);\n },\n prevAll: function (selector) {\n var prevEls = [];\n var el = this[0];\n if (!el) return new Dom7([]);\n while (el.previousElementSibling) {\n var prev = el.previousElementSibling;\n if (selector) {\n if($(prev).is(selector)) prevEls.push(prev);\n }\n else prevEls.push(prev);\n el = prev;\n }\n return new Dom7(prevEls);\n },\n parent: function (selector) {\n var parents = [];\n for (var i = 0; i < this.length; i++) {\n if (selector) {\n if ($(this[i].parentNode).is(selector)) parents.push(this[i].parentNode);\n }\n else {\n parents.push(this[i].parentNode);\n }\n }\n return $($.unique(parents));\n },\n parents: function (selector) {\n var parents = [];\n for (var i = 0; i < this.length; i++) {\n var parent = this[i].parentNode;\n while (parent) {\n if (selector) {\n if ($(parent).is(selector)) parents.push(parent);\n }\n else {\n parents.push(parent);\n }\n parent = parent.parentNode;\n }\n }\n return $($.unique(parents));\n },\n find : function (selector) {\n var foundElements = [];\n for (var i = 0; i < this.length; i++) {\n var found = this[i].querySelectorAll(selector);\n for (var j = 0; j < found.length; j++) {\n foundElements.push(found[j]);\n }\n }\n return new Dom7(foundElements);\n },\n children: function (selector) {\n var children = [];\n for (var i = 0; i < this.length; i++) {\n var childNodes = this[i].childNodes;\n \n for (var j = 0; j < childNodes.length; j++) {\n if (!selector) {\n if (childNodes[j].nodeType === 1) children.push(childNodes[j]);\n }\n else {\n if (childNodes[j].nodeType === 1 && $(childNodes[j]).is(selector)) children.push(childNodes[j]);\n }\n }\n }\n return new Dom7($.unique(children));\n },\n remove: function () {\n for (var i = 0; i < this.length; i++) {\n if (this[i].parentNode) this[i].parentNode.removeChild(this[i]);\n }\n return this;\n },\n add: function () {\n var dom = this;\n var i, j;\n for (i = 0; i < arguments.length; i++) {\n var toAdd = $(arguments[i]);\n for (j = 0; j < toAdd.length; j++) {\n dom[dom.length] = toAdd[j];\n dom.length++;\n }\n }\n return dom;\n }\n };\n $.fn = Dom7.prototype;\n $.unique = function (arr) {\n var unique = [];\n for (var i = 0; i < arr.length; i++) {\n if (unique.indexOf(arr[i]) === -1) unique.push(arr[i]);\n }\n return unique;\n };\n \n return $;\n })();\n \n\n /*===========================\n Get Dom libraries\n ===========================*/\n var swiperDomPlugins = ['jQuery', 'Zepto', 'Dom7'];\n for (var i = 0; i < swiperDomPlugins.length; i++) {\n \tif (window[swiperDomPlugins[i]]) {\n \t\taddLibraryPlugin(window[swiperDomPlugins[i]]);\n \t}\n }\n // Required DOM Plugins\n var domLib;\n if (typeof Dom7 === 'undefined') {\n \tdomLib = window.Dom7 || window.Zepto || window.jQuery;\n }\n else {\n \tdomLib = Dom7;\n }\n \n\n /*===========================\n Add .swiper plugin from Dom libraries\n ===========================*/\n function addLibraryPlugin(lib) {\n lib.fn.swiper = function (params) {\n var firstInstance;\n lib(this).each(function () {\n var s = new Swiper(this, params);\n if (!firstInstance) firstInstance = s;\n });\n return firstInstance;\n };\n }\n \n if (domLib) {\n if (!('transitionEnd' in domLib.fn)) {\n domLib.fn.transitionEnd = function (callback) {\n var events = ['webkitTransitionEnd', 'transitionend', 'oTransitionEnd', 'MSTransitionEnd', 'msTransitionEnd'],\n i, j, dom = this;\n function fireCallBack(e) {\n /*jshint validthis:true */\n if (e.target !== this) return;\n callback.call(this, e);\n for (i = 0; i < events.length; i++) {\n dom.off(events[i], fireCallBack);\n }\n }\n if (callback) {\n for (i = 0; i < events.length; i++) {\n dom.on(events[i], fireCallBack);\n }\n }\n return this;\n };\n }\n if (!('transform' in domLib.fn)) {\n domLib.fn.transform = function (transform) {\n for (var i = 0; i < this.length; i++) {\n var elStyle = this[i].style;\n elStyle.webkitTransform = elStyle.MsTransform = elStyle.msTransform = elStyle.MozTransform = elStyle.OTransform = elStyle.transform = transform;\n }\n return this;\n };\n }\n if (!('transition' in domLib.fn)) {\n domLib.fn.transition = function (duration) {\n if (typeof duration !== 'string') {\n duration = duration + 'ms';\n }\n for (var i = 0; i < this.length; i++) {\n var elStyle = this[i].style;\n elStyle.webkitTransitionDuration = elStyle.MsTransitionDuration = elStyle.msTransitionDuration = elStyle.MozTransitionDuration = elStyle.OTransitionDuration = elStyle.transitionDuration = duration;\n }\n return this;\n };\n }\n if (!('outerWidth' in domLib.fn)) {\n domLib.fn.outerWidth = function (includeMargins) {\n if (this.length > 0) {\n if (includeMargins)\n return this[0].offsetWidth + parseFloat(this.css('margin-right')) + parseFloat(this.css('margin-left'));\n else\n return this[0].offsetWidth;\n }\n else return null;\n };\n }\n }\n \n\n window.Swiper = Swiper;\n})();\n\n/*===========================\nSwiper AMD Export\n===========================*/\nif (typeof(module) !== 'undefined')\n{\n module.exports = window.Swiper;\n}\nelse if (typeof define === 'function' && define.amd) {\n define([], function () {\n 'use strict';\n return window.Swiper;\n });\n}\n\n//# sourceMappingURL=maps/swiper.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/swiper/dist/js/swiper.js\n// module id = 1\n// module chunks = 0","function injectStyle (ssrContext) {\n require(\"!!../../node_modules/extract-text-webpack-plugin/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true}!vue-style-loader!css-loader?{\\\"minimize\\\":true,\\\"sourceMap\\\":true}!../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-0a8c1354\\\",\\\"scoped\\\":false,\\\"hasInlineConfig\\\":false}!sass-loader?{\\\"sourceMap\\\":true}!sass-resources-loader?{\\\"resources\\\":\\\"c:\\\\\\\\vsts-agent\\\\\\\\_work\\\\\\\\269\\\\\\\\s\\\\\\\\src\\\\\\\\styles\\\\\\\\general.scss\\\"}!../../node_modules/vue-loader/lib/selector?type=styles&index=0!./carousel.vue\")\n}\nvar Component = require(\"!../../node_modules/vue-loader/lib/component-normalizer\")(\n /* script */\n require(\"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./carousel.vue\"),\n /* template */\n require(\"!!../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-0a8c1354\\\",\\\"transformToRequire\\\":{\\\"video\\\":\\\"src\\\",\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"}}!../../node_modules/vue-loader/lib/selector?type=template&index=0!./carousel.vue\"),\n /* styles */\n injectStyle,\n /* scopeId */\n null,\n /* moduleIdentifier (server only) */\n null\n)\n\nmodule.exports = Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/carousel.vue\n// module id = 3\n// module chunks = 0","const Vue = window.Vue\r\nconst VueResource = window.VueResource\r\nimport carousel from './components/carousel.vue'\r\nimport './styles/lib.scss'\r\n\r\nVue.use(VueResource)\r\n\r\nwindow.arkWidgetCarousel = {\r\n Init: function (inputData) {\r\n window.carousel = new Vue({\r\n el: inputData.el,\r\n data: function () {\r\n return {\r\n config: inputData.config\r\n }\r\n },\r\n created: function () {\r\n console.log('arkWidgetCarousel created')\r\n },\r\n render: h => h(carousel)\r\n })\r\n }\r\n}\r\n//\r\n// window.arkWidgetCarousel.Init({el: '#carousel', config: { name: 'name', alwaysShowNav: true, locale: {play: 'play now12'}, backUrl: 'http://arenaservices-testing.as.arkadiumhosted.com/gamelist/api/gamelist/get/arenapromo/', arenaName: 'arena.ac4-0.arkadium.com' }})\r\n\r\nexport default carousel\r\n\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/lib.js","\r\n\r\n\r\n\n\n\n// WEBPACK FOOTER //\n// slide.vue?287f0d8b","\r\n\r\n\r\n\n\n\n// WEBPACK FOOTER //\n// swiper.vue?a9a074ce","\r\n\r\n\r\n\r\n\r\n\n\n\n// WEBPACK FOOTER //\n// carousel.vue?4d3476b9","/**\r\n * Vue-awesome-swiper\r\n * @author Surmon.me\r\n */\r\n\r\nvar Swiper = require('swiper')\r\nvar SwiperComponent = require('./src/swiper.vue')\r\nvar SlideComponent = require('./src/slide.vue')\r\nSwiperComponent = SwiperComponent.default || SwiperComponent\r\nSlideComponent = SlideComponent.default || SlideComponent\r\nif (typeof window !== 'undefined') {\r\n window.Swiper = Swiper\r\n}\r\n\r\nvar swiper = {\r\n swiperSlide: SlideComponent,\r\n swiper: SwiperComponent,\r\n swiperPlugins: Swiper.prototype.plugins,\r\n install: function(Vue) {\r\n Vue.component(SwiperComponent.name, SwiperComponent)\r\n Vue.component(SlideComponent.name, SlideComponent)\r\n }\r\n}\r\n\r\nmodule.exports = swiper\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/vue-awesome-swiper/index.js\n// module id = 9\n// module chunks = 0","var Component = require(\"!../../vue-loader/lib/component-normalizer\")(\n /* script */\n require(\"!!babel-loader!../../vue-loader/lib/selector?type=script&index=0!./slide.vue\"),\n /* template */\n require(\"!!../../vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-25af55eb\\\",\\\"transformToRequire\\\":{\\\"video\\\":\\\"src\\\",\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"}}!../../vue-loader/lib/selector?type=template&index=0!./slide.vue\"),\n /* styles */\n null,\n /* scopeId */\n null,\n /* moduleIdentifier (server only) */\n null\n)\n\nmodule.exports = Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/vue-awesome-swiper/src/slide.vue\n// module id = 10\n// module chunks = 0","var Component = require(\"!../../vue-loader/lib/component-normalizer\")(\n /* script */\n require(\"!!babel-loader!../../vue-loader/lib/selector?type=script&index=0!./swiper.vue\"),\n /* template */\n require(\"!!../../vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-6d947d2e\\\",\\\"transformToRequire\\\":{\\\"video\\\":\\\"src\\\",\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"}}!../../vue-loader/lib/selector?type=template&index=0!./swiper.vue\"),\n /* styles */\n null,\n /* scopeId */\n null,\n /* moduleIdentifier (server only) */\n null\n)\n\nmodule.exports = Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/vue-awesome-swiper/src/swiper.vue\n// module id = 11\n// module chunks = 0","module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;\n return _c('div', {\n ref: \"swiperCarousel\",\n staticClass: \"swiper-carousel\",\n style: ({\n height: _vm.swiperCarouselHeight + 24 + 5 + 'px'\n })\n }, [(_vm.swiperSlides.length === 0) ? _c('div', {\n staticClass: \"swiper-carousel__loading-container\",\n style: ({\n height: _vm.swiperCarouselHeight + 'px'\n })\n }, [_c('svg', {\n attrs: {\n \"xmlns\": \"http://www.w3.org/2000/svg\",\n \"width\": \"44\",\n \"height\": \"12\",\n \"viewBox\": \"0 0 44 12\"\n }\n }, [_c('circle', {\n staticClass: \"dot dot-1\",\n attrs: {\n \"cx\": \"6\",\n \"cy\": \"6\",\n \"r\": \"6\"\n }\n }), _vm._v(\" \"), _c('circle', {\n staticClass: \"dot dot-2\",\n attrs: {\n \"cx\": \"22\",\n \"cy\": \"6\",\n \"r\": \"6\"\n }\n }), _vm._v(\" \"), _c('circle', {\n staticClass: \"dot dot-3\",\n attrs: {\n \"cx\": \"38\",\n \"cy\": \"6\",\n \"r\": \"6\"\n }\n })])]) : _vm._e(), _vm._v(\" \"), (_vm.swiperSlides.length !== 0) ? _c('swiper', {\n attrs: {\n \"options\": _vm.swiperOption,\n \"ark-ga-track\": 'impression',\n \"ark-ga-track-category\": 'Carousel',\n \"ark-ga-track-dimensions\": _vm.getImpressionDimensionsAttribute(),\n \"ark-ga-track-condition\": 'arkGaPageHelpers.get({ func: \\'defaultTrackCondition\\' })'\n }\n }, [_vm._l((_vm.swiperSlides), function(slide) {\n return (_vm.swiperSlides) ? _c('swiper-slide', {\n key: slide.externalId\n }, [_c('div', {\n staticClass: \"slide\",\n on: {\n \"click\": function($event) {\n _vm.handleGameClick(slide)\n }\n }\n }, [_c('a', {\n staticClass: \"ark-carousel-slide__link\",\n attrs: {\n \"href\": _vm.getGameUrl(slide),\n \"ark-ga-track\": 'click',\n \"ark-ga-track-category\": 'Carousel',\n \"ark-ga-track-condition\": 'arkGaPageHelpers.get({ func: \\'defaultTrackCondition\\' })',\n \"ark-ga-track-dimensions\": _vm.getClickDimensionsAttribute(slide.externalId)\n }\n }, [_c('img', {\n staticClass: \"slide__img\",\n attrs: {\n \"src\": _vm.getImg(slide),\n \"alt\": \"\"\n }\n }), _vm._v(\" \"), _c('div', {\n staticClass: \"slide__footer\"\n }, [_c('a', {\n staticClass: \"slide__button\",\n attrs: {\n \"href\": _vm.getGameUrl(slide)\n }\n }, [_c('span', {\n staticClass: \"slide__button-text\"\n }, [_vm._v(_vm._s(_vm.locale.play))]), _c('i', {\n staticClass: \"triangle-right\"\n })])])])])]) : _vm._e()\n }), _vm._v(\" \"), _c('div', {\n staticClass: \"swiper-pagination\",\n slot: \"pagination\"\n }), _vm._v(\" \"), _c('div', {\n class: ['swiper-button-prev', {\n 'swiper-button-always-show': _vm.alwaysShowNav\n }],\n slot: \"button-prev\"\n }), _vm._v(\" \"), _c('div', {\n class: ['swiper-button-next', {\n 'swiper-button-always-show': _vm.alwaysShowNav\n }],\n slot: \"button-next\"\n })], 2) : _vm._e()], 1)\n},staticRenderFns: []}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/vue-loader/lib/template-compiler?{\"id\":\"data-v-0a8c1354\",\"transformToRequire\":{\"video\":\"src\",\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"}}!./~/vue-loader/lib/selector.js?type=template&index=0!./src/components/carousel.vue\n// module id = 12\n// module chunks = 0","module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;\n return _c('div', {\n class: _vm.slideClass\n }, [_vm._t(\"default\")], 2)\n},staticRenderFns: []}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/vue-loader/lib/template-compiler?{\"id\":\"data-v-25af55eb\",\"transformToRequire\":{\"video\":\"src\",\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"}}!./~/vue-loader/lib/selector.js?type=template&index=0!./~/vue-awesome-swiper/src/slide.vue\n// module id = 13\n// module chunks = 0","module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;\n return _c('div', {\n staticClass: \"swiper-container\"\n }, [_vm._t(\"parallax-bg\"), _vm._v(\" \"), _c('div', {\n class: _vm.defaultSwiperClasses.wrapperClass\n }, [_vm._t(\"default\")], 2), _vm._v(\" \"), _vm._t(\"pagination\"), _vm._v(\" \"), _vm._t(\"button-prev\"), _vm._v(\" \"), _vm._t(\"button-next\"), _vm._v(\" \"), _vm._t(\"scrollbar\")], 2)\n},staticRenderFns: []}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/vue-loader/lib/template-compiler?{\"id\":\"data-v-6d947d2e\",\"transformToRequire\":{\"video\":\"src\",\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"}}!./~/vue-loader/lib/selector.js?type=template&index=0!./~/vue-awesome-swiper/src/swiper.vue\n// module id = 14\n// module chunks = 0"],"sourceRoot":""}