{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./cartridges/app_storefront_naturesmenu/cartridge/client/default/js/homepageEndorsementBlock.js","webpack:///./node_modules/swiper/dist/js/swiper.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","Swiper","require","endorsementsBlocks","$","isMobile","document","width","resizeLastOddSlide","j","length","slideCards","find","css","outerWidth","ready","endorsementBlock","addClass","slice","wrapAll","zoom","slidesPerView","loop","centeredSlides","keyboardControl","grabCursor","spaceBetween","pagination","breakpoints","584","768","1024","window","on","div","ua","container","params","this","defaults","direction","touchEventsTarget","initialSlide","speed","autoplay","autoplayDisableOnInteraction","autoplayStopOnLast","iOSEdgeSwipeDetection","iOSEdgeSwipeThreshold","freeMode","freeModeMomentum","freeModeMomentumRatio","freeModeMomentumBounce","freeModeMomentumBounceRatio","freeModeMomentumVelocityRatio","freeModeSticky","freeModeMinimumVelocity","autoHeight","setWrapperSize","virtualTranslate","effect","coverflow","rotate","stretch","depth","modifier","slideShadows","flip","limitRotation","cube","shadow","shadowOffset","shadowScale","fade","crossFade","parallax","zoomMax","zoomMin","zoomToggle","scrollbar","scrollbarHide","scrollbarDraggable","scrollbarSnapOnRelease","mousewheelControl","mousewheelReleaseOnEdges","mousewheelInvert","mousewheelForceToAxis","mousewheelSensitivity","mousewheelEventsTarged","hashnav","hashnavWatchState","history","replaceState","undefined","slidesPerColumn","slidesPerColumnFill","slidesPerGroup","slidesOffsetBefore","slidesOffsetAfter","roundLengths","touchRatio","touchAngle","simulateTouch","shortSwipes","longSwipes","longSwipesRatio","longSwipesMs","followFinger","onlyExternal","threshold","touchMoveStopPropagation","touchReleaseOnEdges","uniqueNavElements","paginationElement","paginationClickable","paginationHide","paginationBulletRender","paginationProgressRender","paginationFractionRender","paginationCustomRender","paginationType","resistance","resistanceRatio","nextButton","prevButton","watchSlidesProgress","watchSlidesVisibility","preventClicks","preventClicksPropagation","slideToClickedSlide","lazyLoading","lazyLoadingInPrevNext","lazyLoadingInPrevNextAmount","lazyLoadingOnTransitionStart","preloadImages","updateOnImagesReady","loopAdditionalSlides","loopedSlides","control","controlInverse","controlBy","normalizeSlideIndex","allowSwipeToPrev","allowSwipeToNext","swipeHandler","noSwiping","noSwipingClass","passiveListeners","containerModifierClass","slideClass","slideActiveClass","slideDuplicateActiveClass","slideVisibleClass","slideDuplicateClass","slideNextClass","slideDuplicateNextClass","slidePrevClass","slideDuplicatePrevClass","wrapperClass","bulletClass","bulletActiveClass","buttonDisabledClass","paginationCurrentClass","paginationTotalClass","paginationHiddenClass","paginationProgressbarClass","paginationClickableClass","paginationModifierClass","lazyLoadingClass","lazyStatusLoadingClass","lazyStatusLoadedClass","lazyPreloaderClass","notificationClass","preloaderClass","zoomContainerClass","observer","observeParents","a11y","prevSlideMessage","nextSlideMessage","firstSlideMessage","lastSlideMessage","paginationBulletMessage","runCallbacksOnInit","initialVirtualTranslate","originalParams","param","_typeof","nodeType","Dom7","jQuery","deepParam","def","deepDef","classNames","Zepto","currentBreakpoint","getActiveBreakpoint","point","breakpoint","points","push","sort","a","b","parseInt","innerWidth","setBreakpoint","breakPointsParams","needsReLoop","destroyLoop","reLoop","swipers","each","swiper","data","support","flexbox","indexOf","transforms3d","touch","wrapper","children","paginationContainer","isHorizontal","rtl","dir","toLowerCase","wrongRTL","device","android","join","translate","progress","velocity","lockSwipeToNext","unsetGrabCursor","lockSwipeToPrev","lockSwipes","unlockSwipeToNext","setGrabCursor","unlockSwipeToPrev","unlockSwipes","moving","style","cursor","imagesToLoad","imagesLoaded","loadImage","imgElement","src","srcset","sizes","checkForComplete","callback","image","onReady","complete","Image","onload","onerror","_onReady","update","emit","currentSrc","getAttribute","autoplayTimeoutId","autoplaying","autoplayPaused","startAutoplay","stopAutoplay","internal","clearTimeout","pauseAutoplay","transitionEnd","minTranslate","snapGrid","maxTranslate","updateAutoHeight","activeSlides","newHeight","Math","ceil","index","activeIndex","slides","eq","height","offsetHeight","updateContainerSize","clientWidth","clientHeight","size","updateSlidesSize","slidesGrid","slidesSizesGrid","slidePosition","prevSlideSize","slidesNumberEvenToRows","slideSize","parseFloat","replace","virtualSize","marginLeft","marginTop","marginRight","marginBottom","floor","max","newSlidesGrid","slidesPerRow","numFullColumns","newSlideOrderIndex","column","row","slide","attr","outerHeight","round","swiperSlideSize","abs","updateSlidesOffset","swiperSlideOffset","offsetLeft","offsetTop","currentSlidesPerView","spv","breakLoop","updateSlidesProgress","offsetCenter","removeClass","slideProgress","slideBefore","slideAfter","updateProgress","translatesDiff","wasBeginning","isBeginning","wasEnd","isEnd","updateActiveIndex","newActiveIndex","snapIndex","previousIndex","updateClasses","updateRealIndex","realIndex","activeSlide","hasClass","nextSlide","next","prevSlide","prev","current","total","bullets","text","scale","scaleX","scaleY","transform","transition","html","disable","enable","updatePagination","paginationHTML","numberOfBullets","initPagination","updateTranslate","newTranslate","set","controller","spline","forceSetTranslate","slideTo","min","setWrapperTranslate","onResize","forceUpdatePagination","onBeforeResize","slideChangedBySlideTo","lazy","load","onAfterResize","touchEventsDesktop","start","move","end","navigator","pointerEnabled","msPointerEnabled","touchEvents","initEvents","detach","actionDom","action","target","moveCapture","nested","browser","ie","onTouchStart","onTouchMove","onTouchEnd","passiveListener","passive","capture","ios","onClickNext","onEnterKey","onClickPrev","onClickIndex","attachEvents","detachEvents","allowClick","e","preventDefault","animating","stopPropagation","stopImmediatePropagation","slideNext","slidePrev","updateClickedSlide","findElementInEvent","slideFound","clickedSlide","clickedIndex","slideToIndex","fixLoop","setTimeout","isTouched","isMoved","allowTouchCallbacks","touchStartTime","isScrolling","currentTranslate","startTranslate","allowThresholdMove","clickTimeout","allowMomentumBounce","isTouchEvent","startMoving","formElements","lastClickTime","Date","now","velocities","plugin","touches","startX","startY","currentX","currentY","diff","originalEvent","type","which","targetTouches","pageX","pageY","swipeDirection","is","activeElement","blur","preventedByNestedSwiper","atan2","PI","getWrapperTranslate","setWrapperTransition","trigger","disableParentSwiper","pow","position","time","getTime","currentPos","touchEndTime","timeDiff","toggleClass","lastMoveEvent","pop","velocityEvent","distance","momentumDuration","momentumDistance","newPosition","afterBouncePosition","doBounce","bounceAmount","slideReset","onTransitionStart","onTransitionEnd","stopIndex","groupSize","ratio","_slideTo","slideIndex","runCallbacks","lteIE9","setHistory","setHash","clientLeft","_slideNext","_slidePrev","disableTouchControl","enableTouchControl","duration","byController","effects","setTransition","x","y","setTranslate","getTranslate","el","axis","matrix","curTransform","curStyle","transformMatrix","getComputedStyle","WebKitCSSMatrix","webkitTransform","split","map","MozTransform","OTransform","MsTransform","msTransform","getPropertyValue","toString","m41","m42","observers","initObservers","containerParents","parents","initObserver","childList","attributes","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","shadowAngle","multiplier","sin","cos","scale1","scale2","offset","zFactor","isSafari","isUiWebView","center","offsetMultiplier","translateZ","translateY","translateX","slideTransform","perspectiveOrigin","initialImageLoaded","loadImageInSlide","loadInDuplicate","img","add","_img","background","slideOriginalIndex","originalSlide","duplicatedSlide","amount","maxIndex","minIndex","setDragPosition","sb","clientX","clientY","track","dragSize","positionMin","moveDivider","positionMax","dragStart","dragTimeout","drag","dragMove","returnValue","dragEnd","draggableEvents","enableDraggable","disableDraggable","off","trackSize","offsetWidth","divider","display","newPos","newSize","timeout","LinearSpline","guess","i1","i3","binarySearch","array","val","lastIndex","interpolate","x2","getInterpolateFunction","controlledTranslate","controlled","setControlledTranslate","Array","isArray","setControlledTransition","onHashCange","newHash","location","hash","initialized","init","destroy","pushState","paths","getPathValues","scrollToSlide","addEventListener","setHistoryPopState","pathArray","pathname","slugify","includes","disableKeyboardControl","handleKeyboard","enableKeyboardControl","mousewheel","event","lastScrollTime","userAgent","isSupported","element","createElement","setAttribute","implementation","hasFeature","isEventSupported","disableMousewheelControl","handleMousewheel","enableMousewheelControl","setParallaxTransform","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","parent","onGestureChange","scaleMove","onGestureEnd","changedTouches","os","scaledWidth","scaledHeight","momentumDurationX","momentumDurationY","momentumDistanceX","newPositionX","momentumDistanceY","newPositionY","toggleZoom","touchX","touchY","diffX","diffY","imageWidth","imageHeight","translateMinX","translateMinY","translateMaxX","translateMaxY","left","top","_plugins","plugins","callPlugins","eventName","arguments","emitterEventListeners","handler","normalizeEventName","splice","once","_handler","makeFocusable","$el","addRole","role","addLabel","label","keyCode","notify","click","liveRegion","message","notification","bullet","hashnavReplaceState","cleanupStyles","deleteInstance","removeEventListener","autoplayDelay","selector","found","_el","options","MutationObserver","WebkitMutationObserver","mutations","forEach","mutation","observe","characterData","kc","charCode","shiftKey","altKey","ctrlKey","metaKey","nodeName","inView","windowScroll","pageXOffset","pageYOffset","windowWidth","windowHeight","innerHeight","swiperOffset","scrollLeft","swiperCoord","sX","sY","pX","pY","delta","rtlFactor","detail","wheelDelta","wheelDeltaY","wheelDeltaX","HORIZONTAL_AXIS","deltaY","deltaX","deltaMode","spinX","spinY","pixelX","pixelY","toUpperCase","substring","test","arr","apply","ieTouch","msMaxTouchPoints","maxTouchPoints","innerHTML","getElementsByTagName","match","ipad","ipod","iphone","Modernizr","DocumentTouch","csstransforms3d","styles","supportsPassive","opts","domLib","context","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","dom","proxy","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","addLibraryPlugin","lib","firstInstance"],"mappings":"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","file":"default/js/homepageEndorsementBlock.js","sourcesContent":[" \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// 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, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\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 = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 229);\n","const Swiper = require('swiper');\nconst endorsementsBlocks = $('.homepage-endorsement-block');\nconst isMobile = $(document).width() < 768;\n\n/**\n* Resizes the last odd slide card in the endorsements block to match the width of the second last card\n*/\nfunction resizeLastOddSlide() {\n for (var j = 0; j < endorsementsBlocks.length; j++) {\n const endorsementBlock = $(endorsementsBlocks[j]);\n const slideCards = endorsementBlock.find('.experience-commerce_assets-homepageEndorsementBlockCard');\n \n if (!isMobile && slideCards.length > 3 && slideCards.length % 3 !== 0) {\n $(slideCards[slideCards.length - 1]).find('.homepage-endorsement-block-card').css('max-width', $(slideCards[slideCards.length - 3]).find('.homepage-endorsement-block-card').outerWidth() + 'px');\n }\n }\n}\n\n$(document).ready(function () {\n for (var i = 0; i < endorsementsBlocks.length; i++) {\n const endorsementBlock = $(endorsementsBlocks[i]);\n const slideCards = endorsementBlock.find('.experience-commerce_assets-homepageEndorsementBlockCard');\n\n if ((isMobile && slideCards.length <= 1) || (!isMobile && slideCards.length <= 3)) {\n endorsementBlock.find('.homepage-endorsement-block-wrapper').addClass('px-lg-0 px-4');\n endorsementBlock.find('.homepage-endorsement-block-card').addClass('limit-width');\n\n if (!isMobile) {\n endorsementBlock.find('.swiper-wrapper').addClass('with-gap');\n }\n } else {\n if (isMobile) {\n slideCards.addClass('swiper-slide');\n } else {\n for (let i = 0; i < slideCards.length; i += 3) {\n const pair = slideCards.slice(i, i + 3);\n pair.wrapAll('
');\n }\n }\n }\n }\n\n if ($('.swiper-homepage-endorsement-block').length > 0) {\n // eslint-disable-next-line no-unused-vars\n var endorsementsSlider = new Swiper('.swiper-homepage-endorsement-block', {\n zoom: false,\n slidesPerView: 1,\n loop: false,\n centeredSlides: false,\n keyboardControl: false,\n grabCursor: true,\n spaceBetween: 16,\n pagination: '.swiper-pagination-endorsement-block',\n breakpoints: {\n 584: {\n slidesPerView: 1,\n loop: true\n },\n 768: {\n slidesPerView: 1,\n loop: false\n },\n 1024: {\n slidesPerView: 1,\n loop: false\n }\n }\n });\n\n resizeLastOddSlide();\n }\n\n $(window).on('resize', function () {\n resizeLastOddSlide();\n });\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 (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"],"sourceRoot":""}