{"version":3,"file":"/m/all/js/libs/sm-extend.js.map","sources":["/m/all/js/libs/sm-extend.js"],"sourcesContent":["/*!\n * =====================================================\n * SUI Mobile - http://m.sui.taobao.org/\n *\n * =====================================================\n */\n/*===========================\nSwiper\n===========================*/\n/* global WebKitCSSMatrix:true */\n/* global Modernizr:true */\n/* global DocumentTouch:true */\n+function($){\n \"use strict\";\n var Swiper = function (container, params) {\n // if (!(this instanceof Swiper)) return new Swiper(container, params);\n var defaults = this.defaults;\n var initalVirtualTranslate = params && params.virtualTranslate;\n\n params = params || {};\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\n // Classname\n s.classNames = [];\n\n // Export it to Swiper instance\n s.$ = $;\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 s.container.each(function () {\n new $.Swiper(this, params);\n });\n return;\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('swiper-container-' + s.params.direction);\n\n if (s.params.freeMode) {\n s.classNames.push('swiper-container-free-mode');\n }\n if (!s.support.flexbox) {\n s.classNames.push('swiper-container-no-flexbox');\n s.params.slidesPerColumn = 1;\n }\n // Enable slides progress when required\n if (s.params.parallax || s.params.watchSlidesVisibility) {\n s.params.watchSlidesProgress = true;\n }\n // Coverflow / 3D\n if (['cube', 'coverflow'].indexOf(s.params.effect) >= 0) {\n if (s.support.transforms3d) {\n s.params.watchSlidesProgress = true;\n s.classNames.push('swiper-container-3d');\n }\n else {\n s.params.effect = 'slide';\n }\n }\n if (s.params.effect !== 'slide') {\n s.classNames.push('swiper-container-' + 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 s.params.setWrapperSize = false;\n }\n if (s.params.effect === 'fade') {\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 initalVirtualTranslate === '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.paginationClickable) {\n s.paginationContainer.addClass('swiper-pagination-clickable');\n }\n }\n\n // Is Horizontal\n function isH() {\n return s.params.direction === 'horizontal';\n }\n\n // RTL\n s.rtl = isH() && (s.container[0].dir.toLowerCase() === 'rtl' || s.container.css('direction') === 'rtl');\n if (s.rtl) {\n s.classNames.push('swiper-container-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('swiper-container-multirow');\n }\n\n // Check for Android\n if (s.device.android) {\n s.classNames.push('swiper-container-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 // Locks, unlocks\n s.lockSwipeToNext = function () {\n s.params.allowSwipeToNext = false;\n };\n s.lockSwipeToPrev = function () {\n s.params.allowSwipeToPrev = false;\n };\n s.lockSwipes = function () {\n s.params.allowSwipeToNext = s.params.allowSwipeToPrev = false;\n };\n s.unlockSwipeToNext = function () {\n s.params.allowSwipeToNext = true;\n };\n s.unlockSwipeToPrev = function () {\n s.params.allowSwipeToPrev = true;\n };\n s.unlockSwipes = function () {\n s.params.allowSwipeToNext = s.params.allowSwipeToPrev = true;\n };\n\n\n /*=========================\n Set grab cursor\n ===========================*/\n if (s.params.grabCursor) {\n s.container[0].style.cursor = 'move';\n s.container[0].style.cursor = '-webkit-grab';\n s.container[0].style.cursor = '-moz-grab';\n s.container[0].style.cursor = 'grab';\n }\n /*=========================\n Update on Images Ready\n ===========================*/\n s.imagesToLoad = [];\n s.imagesLoaded = 0;\n\n s.loadImage = function (imgElement, src, checkForComplete, callback) {\n var image;\n function onReady () {\n if (callback) callback();\n }\n if (!imgElement.complete || !checkForComplete) {\n if (src) {\n image = new Image();\n image.onload = onReady;\n image.onerror = onReady;\n image.src = src;\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) 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')), 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 s.autoplayTimeoutId = setTimeout(function () {\n if (s.params.loop) {\n s.fixLoop();\n s._slideNext();\n }\n else {\n if (!s.isEnd) {\n s._slideNext();\n }\n else {\n if (!params.autoplayStopOnLast) {\n s._slideTo(0);\n }\n else {\n s.stopAutoplay();\n }\n }\n }\n }, s.params.autoplay);\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 () {\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 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.updateContainerSize = function () {\n s.width = s.container[0].clientWidth;\n s.height = s.container[0].clientHeight;\n s.size = isH() ? 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 = 0,\n i,\n prevSlideSize = 0,\n index = 0;\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 }\n\n // Calc slides\n var slideSize;\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 var slidesPerColumn = s.params.slidesPerColumn;\n var slidesPerRow;\n if (s.params.slidesPerColumnFill === 'column') {\n column = Math.floor(i / slidesPerColumn);\n row = i - column * slidesPerColumn;\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 slidesPerRow = slidesNumberEvenToRows / slidesPerColumn;\n row = Math.floor(i / slidesPerRow);\n column = i - row * slidesPerRow;\n\n }\n slide\n .css({\n 'margin-top': (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 = isH() ? slide.outerWidth(true) : slide.outerHeight(true);\n }\n else {\n slideSize = (s.size - (s.params.slidesPerView - 1) * spaceBetween) / s.params.slidesPerView;\n if (isH()) {\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 (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);\n\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 (isH()) 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 s.wrapper.css({width: 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])) {\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 (isH()) {\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 = isH() ? s.slides[i].offsetLeft : s.slides[i].offsetTop;\n }\n };\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 = s.params.centeredSlides ? -translate + s.size / 2 : -translate;\n if (s.rtl) offsetCenter = s.params.centeredSlides ? translate - s.size / 2 : 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 slideCenterOffset = (s.params.centeredSlides === true) ? slide.swiperSlideSize / 2 : 0;\n var slideProgress = (offsetCenter - slide.swiperSlideOffset - slideCenterOffset) / (slide.swiperSlideSize + s.params.spaceBetween);\n if (s.params.watchSlidesVisibility) {\n var slideBefore = -(offsetCenter - slide.swiperSlideOffset - slideCenterOffset);\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 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) s.emit('onReachBeginning', s);\n if (s.isEnd) 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 (newActiveIndex < 0 || typeof newActiveIndex === 'undefined') newActiveIndex = 0;\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 };\n\n /*=========================\n Classes\n ===========================*/\n s.updateClasses = function () {\n s.slides.removeClass(s.params.slideActiveClass + ' ' + s.params.slideNextClass + ' ' + s.params.slidePrevClass);\n var activeSlide = s.slides.eq(s.activeIndex);\n // Active classes\n activeSlide.addClass(s.params.slideActiveClass);\n activeSlide.next('.' + s.params.slideClass).addClass(s.params.slideNextClass);\n activeSlide.prev('.' + s.params.slideClass).addClass(s.params.slidePrevClass);\n\n // Pagination\n if (s.bullets && s.bullets.length > 0) {\n s.bullets.removeClass(s.params.bulletActiveClass);\n var bulletIndex;\n if (s.params.loop) {\n bulletIndex = Math.ceil(s.activeIndex - s.loopedSlides)/s.params.slidesPerGroup;\n if (bulletIndex > s.slides.length - 1 - s.loopedSlides * 2) {\n bulletIndex = bulletIndex - (s.slides.length - s.loopedSlides * 2);\n }\n if (bulletIndex > s.bullets.length - 1) bulletIndex = bulletIndex - s.bullets.length;\n }\n else {\n if (typeof s.snapIndex !== 'undefined') {\n bulletIndex = s.snapIndex;\n }\n else {\n bulletIndex = s.activeIndex || 0;\n }\n }\n if (s.paginationContainer.length > 1) {\n s.bullets.each(function () {\n if ($(this).index() === bulletIndex) $(this).addClass(s.params.bulletActiveClass);\n });\n }\n else {\n s.bullets.eq(bulletIndex).addClass(s.params.bulletActiveClass);\n }\n }\n\n // Next/active buttons\n if (!s.params.loop) {\n if (s.params.prevButton) {\n if (s.isBeginning) {\n $(s.params.prevButton).addClass(s.params.buttonDisabledClass);\n if (s.params.a11y && s.a11y) s.a11y.disable($(s.params.prevButton));\n }\n else {\n $(s.params.prevButton).removeClass(s.params.buttonDisabledClass);\n if (s.params.a11y && s.a11y) s.a11y.enable($(s.params.prevButton));\n }\n }\n if (s.params.nextButton) {\n if (s.isEnd) {\n $(s.params.nextButton).addClass(s.params.buttonDisabledClass);\n if (s.params.a11y && s.a11y) s.a11y.disable($(s.params.nextButton));\n }\n else {\n $(s.params.nextButton).removeClass(s.params.buttonDisabledClass);\n if (s.params.a11y && s.a11y) s.a11y.enable($(s.params.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 bulletsHTML = '';\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 bulletsHTML += s.params.paginationBulletRender(i, s.params.bulletClass);\n }\n else {\n bulletsHTML += '';\n }\n }\n s.paginationContainer.html(bulletsHTML);\n s.bullets = s.paginationContainer.find('.' + s.params.bulletClass);\n }\n };\n /*=========================\n Common update method\n ===========================*/\n s.update = function (updateTranslate) {\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 function forceSetTranslate() {\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, newTranslate;\n if (s.params.freeMode) {\n forceSetTranslate();\n }\n else {\n if (s.params.slidesPerView === 'auto' && 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 }\n };\n\n /*=========================\n Resize Handler\n ===========================*/\n s.onResize = function () {\n s.updateContainerSize();\n s.updateSlidesSize();\n s.updateProgress();\n if (s.params.slidesPerView === 'auto' || s.params.freeMode) s.updatePagination();\n if (s.params.scrollbar && s.scrollbar) {\n s.scrollbar.set();\n }\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 else {\n s.updateClasses();\n if (s.params.slidesPerView === 'auto' && s.isEnd && !s.params.centeredSlides) {\n s.slideTo(s.slides.length - 1, 0, false, true);\n }\n else {\n s.slideTo(s.activeIndex, 0, false, true);\n }\n }\n\n };\n\n /*=========================\n Events\n ===========================*/\n\n //Define Touch Events\n var desktopEvents = ['mousedown', 'mousemove', 'mouseup'];\n if (window.navigator.pointerEnabled) desktopEvents = ['pointerdown', 'pointermove', 'pointerup'];\n else if (window.navigator.msPointerEnabled) desktopEvents = ['MSPointerDown', 'MSPointerMove', 'MSPointerUp'];\n s.touchEvents = {\n start : s.support.touch || !s.params.simulateTouch ? 'touchstart' : desktopEvents[0],\n move : s.support.touch || !s.params.simulateTouch ? 'touchmove' : desktopEvents[1],\n end : s.support.touch || !s.params.simulateTouch ? 'touchend' : desktopEvents[2]\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 touchEventsTarget[action](s.touchEvents.start, s.onTouchStart, false);\n touchEventsTarget[action](s.touchEvents.move, s.onTouchMove, moveCapture);\n touchEventsTarget[action](s.touchEvents.end, s.onTouchEnd, false);\n }\n if (params.simulateTouch && !s.device.ios && !s.device.android) {\n touchEventsTarget[action]('mousedown', s.onTouchStart, false);\n target[action]('mousemove', s.onTouchMove, moveCapture);\n target[action]('mouseup', s.onTouchEnd, false);\n }\n }\n window[action]('resize', s.onResize);\n\n // Next, Prev, Index\n if (s.params.nextButton) {\n $(s.params.nextButton)[actionDom]('click', s.onClickNext);\n if (s.params.a11y && s.a11y) $(s.params.nextButton)[actionDom]('keydown', s.a11y.onEnterKey);\n }\n if (s.params.prevButton) {\n $(s.params.prevButton)[actionDom]('click', s.onClickPrev);\n if (s.params.a11y && s.a11y) $(s.params.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 }\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) {\n e.stopPropagation();\n e.stopImmediatePropagation();\n }\n }\n };\n // Clicks\n s.onClickNext = function (e) {\n e.preventDefault();\n s.slideNext();\n };\n s.onClickPrev = function (e) {\n e.preventDefault();\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 if (slide) {\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 if (s.params.loop) {\n realIndex = $(s.clickedSlide).attr('data-swiper-slide-index');\n if (slideToIndex > s.slides.length - s.params.slidesPerView) {\n s.fixLoop();\n slideToIndex = s.wrapper.children('.' + s.params.slideClass + '[data-swiper-slide-index=\"' + realIndex + '\"]').eq(0).index();\n setTimeout(function () {\n s.slideTo(slideToIndex);\n }, 0);\n }\n else if (slideToIndex < s.params.slidesPerView - 1) {\n s.fixLoop();\n var duplicatedSlides = s.wrapper.children('.' + s.params.slideClass + '[data-swiper-slide-index=\"' + realIndex + '\"]');\n slideToIndex = duplicatedSlides.eq(duplicatedSlides.length - 1).index();\n setTimeout(function () {\n s.slideTo(slideToIndex);\n }, 0);\n }\n else {\n s.slideTo(slideToIndex);\n }\n }\n else {\n s.slideTo(slideToIndex);\n }\n }\n };\n\n var isTouched,\n isMoved,\n touchStartTime,\n isScrolling,\n currentTranslate,\n startTranslate,\n allowThresholdMove,\n // Form elements to match\n formElements = 'input, select, textarea, button',\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 isTouched = true;\n isMoved = false;\n isScrolling = undefined;\n startMoving = undefined;\n s.touches.startX = s.touches.currentX = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n s.touches.startY = s.touches.currentY = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\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) return;\n if (s.params.onlyExternal) {\n isMoved = true;\n s.allowClick = false;\n return;\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\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 = Math.atan2(Math.abs(s.touches.currentY - s.touches.startY), Math.abs(s.touches.currentX - s.touches.startX)) * 180 / Math.PI;\n isScrolling = isH() ? touchAngle > s.params.touchAngle : (90 - touchAngle > s.params.touchAngle);\n }\n if (isScrolling) {\n s.emit('onTouchMoveOpposite', s, e);\n }\n if (typeof startMoving === 'undefined' && s.browser.ieTouch) {\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 && s.browser.ieTouch) {\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) {\n s.container[0].style.cursor = 'move';\n s.container[0].style.cursor = '-webkit-grabbing';\n s.container[0].style.cursor = '-moz-grabbin';\n s.container[0].style.cursor = 'grabbing';\n }\n }\n isMoved = true;\n\n var diff = s.touches.diff = isH() ? 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 if (!s.params.followFinger) return;\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 = isH() ? 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 // 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[isH() ? 'startX' : 'startY'],\n time: touchStartTime\n });\n }\n velocities.push({\n position: s.touches[isH() ? 'currentX' : 'currentY'],\n time: (new 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 s.emit('onTouchEnd', s, e);\n if (!isTouched) return;\n //Return Grab Cursor\n if (s.params.grabCursor && isMoved && isTouched) {\n s.container[0].style.cursor = 'move';\n s.container[0].style.cursor = '-webkit-grab';\n s.container[0].style.cursor = '-moz-grab';\n s.container[0].style.cursor = 'grab';\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) 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 s.slideTo(s.slides.length - 1);\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) < 0.02) {\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 Date().getTime() - lastMoveEvent.time) > 300) {\n s.velocity = 0;\n }\n } else {\n s.velocity = 0;\n }\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 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 //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\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 (!allowMomentumBounce) return;\n s.emit('onMomentumBounce', s);\n\n s.setWrapperTransition(s.params.speed);\n s.setWrapperTranslate(afterBouncePosition);\n s.wrapper.transitionEnd(function () {\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 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\n // Stop autoplay\n\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 for (var i = 0; i < s.slidesGrid.length; i++) {\n if (- translate >= s.slidesGrid[i]) {\n slideIndex = i;\n }\n }\n\n if (typeof speed === 'undefined') speed = s.params.speed;\n s.previousIndex = s.activeIndex || 0;\n s.activeIndex = slideIndex;\n\n if (translate === s.translate) {\n s.updateClasses();\n return false;\n }\n s.onTransitionStart(runCallbacks);\n if (speed === 0) {\n s.setWrapperTransition(0);\n s.setWrapperTranslate(translate);\n s.onTransitionEnd(runCallbacks);\n }\n else {\n s.setWrapperTransition(speed);\n s.setWrapperTranslate(translate);\n if (!s.animating) {\n s.animating = true;\n s.wrapper.transitionEnd(function () {\n s.onTransitionEnd(runCallbacks);\n });\n }\n\n }\n s.updateClasses();\n return true;\n };\n\n s.onTransitionStart = function (runCallbacks) {\n if (typeof runCallbacks === 'undefined') runCallbacks = true;\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 }\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 }\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 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 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) {\n return s.slideTo(s.activeIndex, speed, runCallbacks);\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 (isH()) {\n x = s.rtl ? -translate : translate;\n }\n else {\n y = translate;\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 = isH() ? x : y;\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 // Some old versions of Webkit choke when 'none' is passed; pass\n // empty string instead in this case\n transformMatrix = new WebKitCSSMatrix(curStyle.webkitTransform === 'none' ? '' : curStyle.webkitTransform);\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 = isH() ? '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();\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 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.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 }\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.observer && s.support.observer)) {\n s.update(true);\n }\n s.slideTo(newActiveIndex, 0, false);\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 fadeIndex: null,\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 (!isH()) {\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 if (slideOpacity > 0 && slideOpacity < 1) {\n s.effects.fade.fadeIndex = i;\n }\n slide\n .css({\n opacity: slideOpacity\n })\n .transform('translate3d(' + tx + 'px, ' + ty + 'px, 0px)');\n\n }\n },\n setTransition: function (duration) {\n s.slides.transition(duration);\n if (s.params.virtualTranslate && duration !== 0) {\n var fadeIndex = s.effects.fade.fadeIndex !== null ? s.effects.fade.fadeIndex : s.activeIndex;\n s.slides.eq(fadeIndex).transitionEnd(function () {\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 (isH()) {\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 (!isH()) {\n ty = tx;\n tx = 0;\n }\n\n var transform = 'rotateX(' + (isH() ? 0 : -slideAngle) + 'deg) rotateY(' + (isH() ? 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 = isH() ? slide.find('.swiper-slide-shadow-left') : slide.find('.swiper-slide-shadow-top');\n var shadowAfter = isH() ? 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 = -slide[0].progress;\n if (shadowAfter.length) shadowAfter[0].style.opacity = slide[0].progress;\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 (isH()) {\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(' + (isH() ? 0 : wrapperRotate) + 'deg) rotateY(' + (isH() ? -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 && !isH()) {\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 = isH() ? -transform + s.width / 2 : -transform + s.height / 2;\n var rotate = isH() ? 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 = isH() ? rotate * offsetMultiplier : 0;\n var rotateX = isH() ? 0 : rotate * offsetMultiplier;\n // var rotateZ = 0\n var translateZ = -translate * Math.abs(offsetMultiplier);\n\n var translateY = isH() ? 0 : s.params.coverflow.stretch * (offsetMultiplier);\n var translateX = isH() ? 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 = isH() ? slide.find('.swiper-slide-shadow-left') : slide.find('.swiper-slide-shadow-top');\n var shadowAfter = isH() ? 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 Images Lazy Loading\n ===========================*/\n s.lazy = {\n initialImageLoaded: false,\n loadImageInSlide: function (index) {\n if (typeof index === 'undefined') return;\n if (s.slides.length === 0) return;\n\n var slide = s.slides.eq(index);\n var img = slide.find('img.swiper-lazy:not(.swiper-lazy-loaded):not(.swiper-lazy-loading)');\n if (img.length === 0) return;\n\n img.each(function () {\n var _img = $(this);\n _img.addClass('swiper-lazy-loading');\n\n var src = _img.attr('data-src');\n\n s.loadImage(_img[0], src, false, function () {\n _img.attr('src', src);\n _img.removeAttr('data-src');\n _img.addClass('swiper-lazy-loaded').removeClass('swiper-lazy-loading');\n slide.find('.swiper-lazy-preloader, .preloader').remove();\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 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 (s.params.slidesPerView > 1) {\n for (var i = s.activeIndex; i < s.activeIndex + s.params.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 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 onTransitionStart: function () {\n if (s.params.lazyLoading) {\n if (s.params.lazyLoadingOnTransitionStart || (!s.params.lazyLoadingOnTransitionStart && !s.lazy.initialImageLoaded)) {\n s.lazy.initialImageLoaded = true;\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 set: function () {\n if (!s.params.scrollbar) return;\n var sb = s.scrollbar;\n sb.track = $(s.params.scrollbar);\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 = isH() ? 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 (isH()) {\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 sb = s.scrollbar;\n var newPos;\n\n var newSize = sb.dragSize;\n newPos = (sb.trackSize - sb.dragSize) * s.progress;\n if (s.rtl && isH()) {\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 (isH()) {\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 Controller\n ===========================*/\n s.controller = {\n setTranslate: function (translate, byController) {\n var controlled = s.params.control;\n var multiplier, controlledTranslate;\n if (s.isArray(controlled)) {\n for (var i = 0; i < controlled.length; i++) {\n if (controlled[i] !== byController && controlled[i] instanceof Swiper) {\n translate = controlled[i].rtl && controlled[i].params.direction === 'horizontal' ? -s.translate : s.translate;\n multiplier = (controlled[i].maxTranslate() - controlled[i].minTranslate()) / (s.maxTranslate() - s.minTranslate());\n controlledTranslate = (translate - s.minTranslate()) * multiplier + controlled[i].minTranslate();\n if (s.params.controlInverse) {\n controlledTranslate = controlled[i].maxTranslate() - controlledTranslate;\n }\n controlled[i].updateProgress(controlledTranslate);\n controlled[i].setWrapperTranslate(controlledTranslate, false, s);\n controlled[i].updateActiveIndex();\n }\n }\n }\n else if (controlled instanceof Swiper && byController !== controlled) {\n translate = controlled.rtl && controlled.params.direction === 'horizontal' ? -s.translate : s.translate;\n multiplier = (controlled.maxTranslate() - controlled.minTranslate()) / (s.maxTranslate() - s.minTranslate());\n controlledTranslate = (translate - s.minTranslate()) * multiplier + controlled.minTranslate();\n if (s.params.controlInverse) {\n controlledTranslate = controlled.maxTranslate() - controlledTranslate;\n }\n controlled.updateProgress(controlledTranslate);\n controlled.setWrapperTranslate(controlledTranslate, false, s);\n controlled.updateActiveIndex();\n }\n },\n setTransition: function (duration, byController) {\n var controlled = s.params.control;\n if (s.isArray(controlled)) {\n for (var i = 0; i < controlled.length; i++) {\n if (controlled[i] !== byController && controlled[i] instanceof Swiper) {\n controlled[i].setWrapperTransition(duration, s);\n }\n }\n }\n else if (controlled instanceof Swiper && byController !== controlled) {\n controlled.setWrapperTransition(duration, s);\n }\n }\n };\n\n /*=========================\n Parallax\n ===========================*/\n function setParallaxTransform(el, progress) {\n el = $(el);\n var p, pX, pY;\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 (isH()) {\n pX = p;\n pY = '0';\n }\n else {\n pY = p;\n pX = '0';\n }\n }\n if ((pX).indexOf('%') >= 0) {\n pX = parseInt(pX, 10) * progress + '%';\n }\n else {\n pX = pX * progress + 'px' ;\n }\n if ((pY).indexOf('%') >= 0) {\n pY = parseInt(pY, 10) * progress + '%';\n }\n else {\n pY = pY * progress + 'px' ;\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 Plugins API. Collect all and init all plugins\n ===========================*/\n s._plugins = [];\n for (var plugin in s.plugins) {\n if(s.plugins.hasOwnProperty(plugin)){\n var p = s.plugins[plugin](s, s.params[plugin]);\n if (p) s._plugins.push(p);\n }\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 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 // 图片浏览器点击关闭后,swiper也关闭了,但会执行到此处\n if (!s) return;\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 // Accessibility tools\n s.a11y = {\n makeFocusable: function ($el) {\n $el[0].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.lastSlideMsg);\n }\n else {\n s.a11y.notify(s.params.nextSlideMsg);\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.firstSlideMsg);\n }\n else {\n s.a11y.notify(s.params.prevSlideMsg);\n }\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) {\n var nextButton = $(s.params.nextButton);\n s.a11y.makeFocusable(nextButton);\n s.a11y.addRole(nextButton, 'button');\n s.a11y.addLabel(nextButton, s.params.nextSlideMsg);\n }\n if (s.params.prevButton) {\n var prevButton = $(s.params.prevButton);\n s.a11y.makeFocusable(prevButton);\n s.a11y.addRole(prevButton, 'button');\n s.a11y.addLabel(prevButton, s.params.prevSlideMsg);\n }\n\n $(s.container).append(s.a11y.liveRegion);\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 }\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) s.lazy.load();\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.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 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 // 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 // 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 // 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 Prototype\n ====================================================*/\n Swiper.prototype = {\n defaults: {\n direction: 'horizontal',\n touchEventsTarget: 'container',\n initialSlide: 0,\n speed: 300,\n // autoplay\n autoplay: false,\n autoplayDisableOnInteraction: true,\n // Free mode\n freeMode: false,\n freeModeMomentum: true,\n freeModeMomentumRatio: 1,\n freeModeMomentumBounce: true,\n freeModeMomentumBounceRatio: 1,\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'\n coverflow: {\n rotate: 50,\n stretch: 0,\n depth: 100,\n modifier: 1,\n slideShadows : 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 // Scrollbar\n scrollbar: null,\n scrollbarHide: true,\n // Keyboard Mousewheel\n keyboardControl: false,\n mousewheelControl: false,\n mousewheelForceToAxis: false,\n // Hash Navigation\n hashnav: false,\n // Slides grid\n spaceBetween: 0,\n slidesPerView: 1,\n slidesPerColumn: 1,\n slidesPerColumnFill: 'column',\n slidesPerGroup: 1,\n centeredSlides: 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 // Pagination\n pagination: null,\n paginationClickable: false,\n paginationHide: false,\n paginationBulletRender: null,\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 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 // Swiping/no swiping\n allowSwipeToPrev: true,\n allowSwipeToNext: true,\n swipeHandler: null, //'.swipe-handler',\n noSwiping: true,\n noSwipingClass: 'swiper-no-swiping',\n // NS\n slideClass: 'swiper-slide',\n slideActiveClass: 'swiper-slide-active',\n slideVisibleClass: 'swiper-slide-visible',\n slideDuplicateClass: 'swiper-slide-duplicate',\n slideNextClass: 'swiper-slide-next',\n slidePrevClass: 'swiper-slide-prev',\n wrapperClass: 'swiper-wrapper',\n bulletClass: 'swiper-pagination-bullet',\n bulletActiveClass: 'swiper-pagination-bullet-active',\n buttonDisabledClass: 'swiper-button-disabled',\n paginationHiddenClass: 'swiper-pagination-hidden',\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 // Callbacks\n runCallbacksOnInit: true,\n /*\n Callbacks:\n onInit: function (swiper)\n onDestroy: 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 */\n\n },\n isSafari: (function () {\n var ua = 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(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 },\n /*==================================================\n Devices\n ====================================================*/\n device: (function () {\n var ua = navigator.userAgent;\n var android = ua.match(/(Android);?[\\s\\/]+([\\d.]+)?/);\n var ipad = ua.match(/(iPad).*OS\\s([\\d_]+)/);\n var iphone = !ipad && ua.match(/(iPhone\\sOS)\\s([\\d_]+)/);\n return {\n ios: ipad || iphone || ipad,\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 /*==================================================\n Plugins\n ====================================================*/\n plugins: {}\n };\n $.Swiper = Swiper;\n}(Zepto);\n\n+function($){\n 'use strict';\n $.Swiper.prototype.defaults.pagination = '.page-current .swiper-pagination';\n\n $.swiper = function (container, params) {\n return new $.Swiper(container, params);\n };\n $.fn.swiper = function (params) {\n return new $.Swiper(this, params);\n };\n $.initSwiper = function (pageContainer) {\n var page = $(pageContainer || document.body);\n var swipers = page.find('.swiper-container');\n if (swipers.length === 0) return;\n function destroySwiperOnRemove(slider) {\n function destroySwiper() {\n slider.destroy();\n page.off('pageBeforeRemove', destroySwiper);\n }\n page.on('pageBeforeRemove', destroySwiper);\n }\n for (var i = 0; i < swipers.length; i++) {\n var swiper = swipers.eq(i);\n var params;\n if (swiper.data('swiper')) {\n swiper.data(\"swiper\").update(true);\n continue;\n }\n else {\n params = swiper.dataset();\n }\n var _slider = $.swiper(swiper[0], params);\n destroySwiperOnRemove(_slider);\n }\n };\n $.reinitSwiper = function (pageContainer) {\n var page = $(pageContainer || '.page-current');\n var sliders = page.find('.swiper-container');\n if (sliders.length === 0) return;\n for (var i = 0; i < sliders.length; i++) {\n var sliderInstance = sliders[0].swiper;\n if (sliderInstance) {\n sliderInstance.update(true);\n }\n }\n };\n\n}(Zepto);\n\n/*======================================================\n************ Photo Browser ************\n======================================================*/\n+function($){\n 'use strict';\n var PhotoBrowser = function (params) {\n\n var pb = this, i;\n\n var defaults = this.defaults;\n\n params = params || {};\n for (var def in defaults) {\n if (typeof params[def] === 'undefined') {\n params[def] = defaults[def];\n }\n }\n\n pb.params = params;\n\n var navbarTemplate = pb.params.navbarTemplate ||\n '
' +\n '' +\n '

' + pb.params.ofText + '

' +\n '
';\n\n var toolbarTemplate = pb.params.toolbarTemplate ||\n '';\n\n var template = pb.params.template ||\n '
' +\n '{{navbar}}' +\n '{{toolbar}}' +\n '
' +\n '{{captions}}' +\n '
' +\n '
' +\n '{{photos}}' +\n '
' +\n '
' +\n '
' +\n '
';\n\n var photoTemplate = !pb.params.lazyLoading ?\n (pb.params.photoTemplate || '
') :\n (pb.params.photoLazyTemplate || '
');\n\n var captionsTheme = pb.params.captionsTheme || pb.params.theme;\n var captionsTemplate = pb.params.captionsTemplate || '
{{captions}}
';\n var captionTemplate = pb.params.captionTemplate || '
{{caption}}
';\n\n var objectTemplate = pb.params.objectTemplate || '
{{html}}
';\n var photosHtml = '';\n var captionsHtml = '';\n for (i = 0; i < pb.params.photos.length; i ++) {\n var photo = pb.params.photos[i];\n var thisTemplate = '';\n\n //check if photo is a string or string-like object, for backwards compatibility\n if (typeof(photo) === 'string' || photo instanceof String) {\n\n //check if \"photo\" is html object\n if (photo.indexOf('<') >= 0 || photo.indexOf('>') >= 0) {\n thisTemplate = objectTemplate.replace(/{{html}}/g, photo);\n } else {\n thisTemplate = photoTemplate.replace(/{{url}}/g, photo);\n }\n\n //photo is a string, thus has no caption, so remove the caption template placeholder\n //otherwise check if photo is an object with a url property\n } else if (typeof(photo) === 'object') {\n\n //check if \"photo\" is html object\n if (photo.hasOwnProperty('html') && photo.html.length > 0) {\n thisTemplate = objectTemplate.replace(/{{html}}/g, photo.html);\n } else if (photo.hasOwnProperty('url') && photo.url.length > 0) {\n thisTemplate = photoTemplate.replace(/{{url}}/g, photo.url);\n }\n\n //check if photo has a caption\n if (photo.hasOwnProperty('caption') && photo.caption.length > 0) {\n captionsHtml += captionTemplate.replace(/{{caption}}/g, photo.caption).replace(/{{captionIndex}}/g, i);\n } else {\n thisTemplate = thisTemplate.replace(/{{caption}}/g, '');\n }\n }\n\n photosHtml += thisTemplate;\n\n }\n\n var htmlTemplate = template\n .replace('{{navbar}}', (pb.params.navbar ? navbarTemplate : ''))\n .replace('{{noNavbar}}', (pb.params.navbar ? '' : 'no-navbar'))\n .replace('{{photos}}', photosHtml)\n .replace('{{captions}}', captionsTemplate.replace(/{{captions}}/g, captionsHtml))\n .replace('{{toolbar}}', (pb.params.toolbar ? toolbarTemplate : ''));\n\n pb.activeIndex = pb.params.initialSlide;\n pb.openIndex = pb.activeIndex;\n pb.opened = false;\n\n pb.open = function (index) {\n if (typeof index === 'undefined') index = pb.activeIndex;\n index = parseInt(index, 10);\n if (pb.opened && pb.swiper) {\n pb.swiper.slideTo(index);\n return;\n }\n pb.opened = true;\n pb.openIndex = index;\n // pb.initialLazyLoaded = false;\n if (pb.params.type === 'standalone') {\n $(pb.params.container).append(htmlTemplate);\n }\n if (pb.params.type === 'popup') {\n pb.popup = $.popup('
' + htmlTemplate + '
');\n $(pb.popup).on('closed', pb.onPopupClose);\n }\n if (pb.params.type === 'page') {\n $(document).on('pageBeforeInit', pb.onPageBeforeInit);\n $(document).on('pageBeforeRemove', pb.onPageBeforeRemove);\n if (!pb.params.view) pb.params.view = $.mainView;\n pb.params.view.loadContent(htmlTemplate);\n return;\n }\n pb.layout(pb.openIndex);\n if (pb.params.onOpen) {\n pb.params.onOpen(pb);\n }\n\n };\n pb.close = function () {\n pb.opened = false;\n if (!pb.swiperContainer || pb.swiperContainer.length === 0) {\n return;\n }\n if (pb.params.onClose) {\n pb.params.onClose(pb);\n }\n // Detach events\n pb.attachEvents(true);\n // Delete from DOM\n if (pb.params.type === 'standalone') {\n pb.container.removeClass('photo-browser-in').addClass('photo-browser-out').transitionEnd(function () {\n pb.container.remove();\n });\n }\n // Destroy slider\n pb.swiper.destroy();\n // Delete references\n pb.swiper = pb.swiperContainer = pb.swiperWrapper = pb.slides = gestureSlide = gestureImg = gestureImgWrap = undefined;\n };\n\n pb.onPopupClose = function () {\n pb.close();\n $(pb.popup).off('pageBeforeInit', pb.onPopupClose);\n };\n pb.onPageBeforeInit = function (e) {\n if (e.detail.page.name === 'photo-browser-slides') {\n pb.layout(pb.openIndex);\n }\n $(document).off('pageBeforeInit', pb.onPageBeforeInit);\n };\n pb.onPageBeforeRemove = function (e) {\n if (e.detail.page.name === 'photo-browser-slides') {\n pb.close();\n }\n $(document).off('pageBeforeRemove', pb.onPageBeforeRemove);\n };\n\n pb.onSliderTransitionStart = function (swiper) {\n pb.activeIndex = swiper.activeIndex;\n\n var current = swiper.activeIndex + 1;\n var total = swiper.slides.length;\n if (pb.params.loop) {\n total = total - 2;\n current = current - swiper.loopedSlides;\n if (current < 1) current = total + current;\n if (current > total) current = current - total;\n }\n pb.container.find('.photo-browser-current').text(current);\n pb.container.find('.photo-browser-total').text(total);\n\n $('.photo-browser-prev, .photo-browser-next').removeClass('photo-browser-link-inactive');\n\n if (swiper.isBeginning && !pb.params.loop) {\n $('.photo-browser-prev').addClass('photo-browser-link-inactive');\n }\n if (swiper.isEnd && !pb.params.loop) {\n $('.photo-browser-next').addClass('photo-browser-link-inactive');\n }\n\n // Update captions\n if (pb.captions.length > 0) {\n pb.captionsContainer.find('.photo-browser-caption-active').removeClass('photo-browser-caption-active');\n var captionIndex = pb.params.loop ? swiper.slides.eq(swiper.activeIndex).attr('data-swiper-slide-index') : pb.activeIndex;\n pb.captionsContainer.find('[data-caption-index=\"' + captionIndex + '\"]').addClass('photo-browser-caption-active');\n }\n\n\n // Stop Video\n var previousSlideVideo = swiper.slides.eq(swiper.previousIndex).find('video');\n if (previousSlideVideo.length > 0) {\n if ('pause' in previousSlideVideo[0]) previousSlideVideo[0].pause();\n }\n // Callback\n if (pb.params.onSlideChangeStart) pb.params.onSlideChangeStart(swiper);\n };\n pb.onSliderTransitionEnd = function (swiper) {\n // Reset zoom\n if (pb.params.zoom && gestureSlide && swiper.previousIndex !== swiper.activeIndex) {\n gestureImg.transform('translate3d(0,0,0) scale(1)');\n gestureImgWrap.transform('translate3d(0,0,0)');\n gestureSlide = gestureImg = gestureImgWrap = undefined;\n scale = currentScale = 1;\n }\n if (pb.params.onSlideChangeEnd) pb.params.onSlideChangeEnd(swiper);\n };\n\n pb.layout = function (index) {\n if (pb.params.type === 'page') {\n pb.container = $('.photo-browser-swiper-container').parents('.view');\n }\n else {\n pb.container = $('.photo-browser');\n }\n if (pb.params.type === 'standalone') {\n pb.container.addClass('photo-browser-in');\n // $.sizeNavbars(pb.container);\n }\n pb.swiperContainer = pb.container.find('.photo-browser-swiper-container');\n pb.swiperWrapper = pb.container.find('.photo-browser-swiper-wrapper');\n pb.slides = pb.container.find('.photo-browser-slide');\n pb.captionsContainer = pb.container.find('.photo-browser-captions');\n pb.captions = pb.container.find('.photo-browser-caption');\n\n var sliderSettings = {\n nextButton: pb.params.nextButton || '.photo-browser-next',\n prevButton: pb.params.prevButton || '.photo-browser-prev',\n indexButton: pb.params.indexButton,\n initialSlide: index,\n spaceBetween: pb.params.spaceBetween,\n speed: pb.params.speed,\n loop: pb.params.loop,\n lazyLoading: pb.params.lazyLoading,\n lazyLoadingInPrevNext: pb.params.lazyLoadingInPrevNext,\n lazyLoadingOnTransitionStart: pb.params.lazyLoadingOnTransitionStart,\n preloadImages: pb.params.lazyLoading ? false : true,\n onTap: function (swiper, e) {\n if (pb.params.onTap) pb.params.onTap(swiper, e);\n },\n onClick: function (swiper, e) {\n if (pb.params.exposition) pb.toggleExposition();\n if (pb.params.onClick) pb.params.onClick(swiper, e);\n },\n onDoubleTap: function (swiper, e) {\n pb.toggleZoom($(e.target).parents('.photo-browser-slide'));\n if (pb.params.onDoubleTap) pb.params.onDoubleTap(swiper, e);\n },\n onTransitionStart: function (swiper) {\n pb.onSliderTransitionStart(swiper);\n },\n onTransitionEnd: function (swiper) {\n pb.onSliderTransitionEnd(swiper);\n },\n onLazyImageLoad: function (swiper, slide, img) {\n if (pb.params.onLazyImageLoad) pb.params.onLazyImageLoad(pb, slide, img);\n },\n onLazyImageReady: function (swiper, slide, img) {\n $(slide).removeClass('photo-browser-slide-lazy');\n if (pb.params.onLazyImageReady) pb.params.onLazyImageReady(pb, slide, img);\n }\n };\n\n if (pb.params.swipeToClose && pb.params.type !== 'page') {\n sliderSettings.onTouchStart = pb.swipeCloseTouchStart;\n sliderSettings.onTouchMoveOpposite = pb.swipeCloseTouchMove;\n sliderSettings.onTouchEnd = pb.swipeCloseTouchEnd;\n }\n\n pb.swiper = $.swiper(pb.swiperContainer, sliderSettings);\n if (index === 0) {\n pb.onSliderTransitionStart(pb.swiper);\n }\n pb.attachEvents();\n };\n pb.attachEvents = function (detach) {\n var action = detach ? 'off' : 'on';\n // Slide between photos\n\n if (pb.params.zoom) {\n var target = pb.params.loop ? pb.swiper.slides : pb.slides;\n // Scale image\n target[action]('gesturestart', pb.onSlideGestureStart);\n target[action]('gesturechange', pb.onSlideGestureChange);\n target[action]('gestureend', pb.onSlideGestureEnd);\n // Move image\n target[action]('touchstart', pb.onSlideTouchStart);\n target[action]('touchmove', pb.onSlideTouchMove);\n target[action]('touchend', pb.onSlideTouchEnd);\n }\n pb.container.find('.photo-browser-close-link')[action]('click', pb.close);\n };\n\n // Expose\n pb.exposed = false;\n pb.toggleExposition = function () {\n if (pb.container) pb.container.toggleClass('photo-browser-exposed');\n if (pb.params.expositionHideCaptions) pb.captionsContainer.toggleClass('photo-browser-captions-exposed');\n pb.exposed = !pb.exposed;\n };\n pb.enableExposition = function () {\n if (pb.container) pb.container.addClass('photo-browser-exposed');\n if (pb.params.expositionHideCaptions) pb.captionsContainer.addClass('photo-browser-captions-exposed');\n pb.exposed = true;\n };\n pb.disableExposition = function () {\n if (pb.container) pb.container.removeClass('photo-browser-exposed');\n if (pb.params.expositionHideCaptions) pb.captionsContainer.removeClass('photo-browser-captions-exposed');\n pb.exposed = false;\n };\n\n // Gestures\n var gestureSlide, gestureImg, gestureImgWrap, scale = 1, currentScale = 1, isScaling = false;\n pb.onSlideGestureStart = function () {\n if (!gestureSlide) {\n gestureSlide = $(this);\n gestureImg = gestureSlide.find('img, svg, canvas');\n gestureImgWrap = gestureImg.parent('.photo-browser-zoom-container');\n if (gestureImgWrap.length === 0) {\n gestureImg = undefined;\n return;\n }\n }\n gestureImg.transition(0);\n isScaling = true;\n };\n pb.onSlideGestureChange = function (e) {\n if (!gestureImg || gestureImg.length === 0) return;\n scale = e.scale * currentScale;\n if (scale > pb.params.maxZoom) {\n scale = pb.params.maxZoom - 1 + Math.pow((scale - pb.params.maxZoom + 1), 0.5);\n }\n if (scale < pb.params.minZoom) {\n scale = pb.params.minZoom + 1 - Math.pow((pb.params.minZoom - scale + 1), 0.5);\n }\n gestureImg.transform('translate3d(0,0,0) scale(' + scale + ')');\n };\n pb.onSlideGestureEnd = function () {\n if (!gestureImg || gestureImg.length === 0) return;\n scale = Math.max(Math.min(scale, pb.params.maxZoom), pb.params.minZoom);\n gestureImg.transition(pb.params.speed).transform('translate3d(0,0,0) scale(' + scale + ')');\n currentScale = scale;\n isScaling = false;\n if (scale === 1) gestureSlide = undefined;\n };\n pb.toggleZoom = function () {\n if (!gestureSlide) {\n gestureSlide = pb.swiper.slides.eq(pb.swiper.activeIndex);\n gestureImg = gestureSlide.find('img, svg, canvas');\n gestureImgWrap = gestureImg.parent('.photo-browser-zoom-container');\n }\n if (!gestureImg || gestureImg.length === 0) return;\n gestureImgWrap.transition(300).transform('translate3d(0,0,0)');\n if (scale && scale !== 1) {\n scale = currentScale = 1;\n gestureImg.transition(300).transform('translate3d(0,0,0) scale(1)');\n gestureSlide = undefined;\n }\n else {\n scale = currentScale = pb.params.maxZoom;\n gestureImg.transition(300).transform('translate3d(0,0,0) scale(' + scale + ')');\n }\n };\n\n var imageIsTouched, imageIsMoved, imageCurrentX, imageCurrentY, imageMinX, imageMinY, imageMaxX, imageMaxY, imageWidth, imageHeight, imageTouchesStart = {}, imageTouchesCurrent = {}, imageStartX, imageStartY, velocityPrevPositionX, velocityPrevTime, velocityX, velocityPrevPositionY, velocityY;\n\n pb.onSlideTouchStart = function (e) {\n if (!gestureImg || gestureImg.length === 0) return;\n if (imageIsTouched) return;\n if ($.device.os === 'android') e.preventDefault();\n imageIsTouched = true;\n imageTouchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n imageTouchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n };\n pb.onSlideTouchMove = function (e) {\n if (!gestureImg || gestureImg.length === 0) return;\n pb.swiper.allowClick = false;\n if (!imageIsTouched || !gestureSlide) return;\n\n if (!imageIsMoved) {\n imageWidth = gestureImg[0].offsetWidth;\n imageHeight = gestureImg[0].offsetHeight;\n imageStartX = $.getTranslate(gestureImgWrap[0], 'x') || 0;\n imageStartY = $.getTranslate(gestureImgWrap[0], 'y') || 0;\n gestureImgWrap.transition(0);\n }\n // Define if we need image drag\n var scaledWidth = imageWidth * scale;\n var scaledHeight = imageHeight * scale;\n\n if (scaledWidth < pb.swiper.width && scaledHeight < pb.swiper.height) return;\n\n imageMinX = Math.min((pb.swiper.width / 2 - scaledWidth / 2), 0);\n imageMaxX = -imageMinX;\n imageMinY = Math.min((pb.swiper.height / 2 - scaledHeight / 2), 0);\n imageMaxY = -imageMinY;\n\n imageTouchesCurrent.x = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;\n imageTouchesCurrent.y = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n\n if (!imageIsMoved && !isScaling) {\n if (\n (Math.floor(imageMinX) === Math.floor(imageStartX) && imageTouchesCurrent.x < imageTouchesStart.x) ||\n (Math.floor(imageMaxX) === Math.floor(imageStartX) && imageTouchesCurrent.x > imageTouchesStart.x)\n ) {\n imageIsTouched = false;\n return;\n }\n }\n e.preventDefault();\n e.stopPropagation();\n imageIsMoved = true;\n imageCurrentX = imageTouchesCurrent.x - imageTouchesStart.x + imageStartX;\n imageCurrentY = imageTouchesCurrent.y - imageTouchesStart.y + imageStartY;\n\n if (imageCurrentX < imageMinX) {\n imageCurrentX = imageMinX + 1 - Math.pow((imageMinX - imageCurrentX + 1), 0.8);\n }\n if (imageCurrentX > imageMaxX) {\n imageCurrentX = imageMaxX - 1 + Math.pow((imageCurrentX - imageMaxX + 1), 0.8);\n }\n\n if (imageCurrentY < imageMinY) {\n imageCurrentY = imageMinY + 1 - Math.pow((imageMinY - imageCurrentY + 1), 0.8);\n }\n if (imageCurrentY > imageMaxY) {\n imageCurrentY = imageMaxY - 1 + Math.pow((imageCurrentY - imageMaxY + 1), 0.8);\n }\n\n //Velocity\n if (!velocityPrevPositionX) velocityPrevPositionX = imageTouchesCurrent.x;\n if (!velocityPrevPositionY) velocityPrevPositionY = imageTouchesCurrent.y;\n if (!velocityPrevTime) velocityPrevTime = Date.now();\n velocityX = (imageTouchesCurrent.x - velocityPrevPositionX) / (Date.now() - velocityPrevTime) / 2;\n velocityY = (imageTouchesCurrent.y - velocityPrevPositionY) / (Date.now() - velocityPrevTime) / 2;\n if (Math.abs(imageTouchesCurrent.x - velocityPrevPositionX) < 2) velocityX = 0;\n if (Math.abs(imageTouchesCurrent.y - velocityPrevPositionY) < 2) velocityY = 0;\n velocityPrevPositionX = imageTouchesCurrent.x;\n velocityPrevPositionY = imageTouchesCurrent.y;\n velocityPrevTime = Date.now();\n\n gestureImgWrap.transform('translate3d(' + imageCurrentX + 'px, ' + imageCurrentY + 'px,0)');\n };\n pb.onSlideTouchEnd = function () {\n if (!gestureImg || gestureImg.length === 0) return;\n if (!imageIsTouched || !imageIsMoved) {\n imageIsTouched = false;\n imageIsMoved = false;\n return;\n }\n imageIsTouched = false;\n imageIsMoved = false;\n var momentumDurationX = 300;\n var momentumDurationY = 300;\n var momentumDistanceX = velocityX * momentumDurationX;\n var newPositionX = imageCurrentX + momentumDistanceX;\n var momentumDistanceY = velocityY * momentumDurationY;\n var newPositionY = imageCurrentY + momentumDistanceY;\n\n //Fix duration\n if (velocityX !== 0) momentumDurationX = Math.abs((newPositionX - imageCurrentX) / velocityX);\n if (velocityY !== 0) momentumDurationY = Math.abs((newPositionY - imageCurrentY) / velocityY);\n var momentumDuration = Math.max(momentumDurationX, momentumDurationY);\n\n imageCurrentX = newPositionX;\n imageCurrentY = newPositionY;\n\n // Define if we need image drag\n var scaledWidth = imageWidth * scale;\n var scaledHeight = imageHeight * scale;\n imageMinX = Math.min((pb.swiper.width / 2 - scaledWidth / 2), 0);\n imageMaxX = -imageMinX;\n imageMinY = Math.min((pb.swiper.height / 2 - scaledHeight / 2), 0);\n imageMaxY = -imageMinY;\n imageCurrentX = Math.max(Math.min(imageCurrentX, imageMaxX), imageMinX);\n imageCurrentY = Math.max(Math.min(imageCurrentY, imageMaxY), imageMinY);\n\n gestureImgWrap.transition(momentumDuration).transform('translate3d(' + imageCurrentX + 'px, ' + imageCurrentY + 'px,0)');\n };\n\n // Swipe Up To Close\n var swipeToCloseIsTouched = false;\n var allowSwipeToClose = true;\n var swipeToCloseDiff, swipeToCloseStart, swipeToCloseCurrent, swipeToCloseStarted = false, swipeToCloseActiveSlide, swipeToCloseTimeStart;\n pb.swipeCloseTouchStart = function () {\n if (!allowSwipeToClose) return;\n swipeToCloseIsTouched = true;\n };\n pb.swipeCloseTouchMove = function (swiper, e) {\n if (!swipeToCloseIsTouched) return;\n if (!swipeToCloseStarted) {\n swipeToCloseStarted = true;\n swipeToCloseStart = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n swipeToCloseActiveSlide = pb.swiper.slides.eq(pb.swiper.activeIndex);\n swipeToCloseTimeStart = (new Date()).getTime();\n }\n e.preventDefault();\n swipeToCloseCurrent = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n swipeToCloseDiff = swipeToCloseStart - swipeToCloseCurrent;\n var opacity = 1 - Math.abs(swipeToCloseDiff) / 300;\n swipeToCloseActiveSlide.transform('translate3d(0,' + (-swipeToCloseDiff) + 'px,0)');\n pb.swiper.container.css('opacity', opacity).transition(0);\n };\n pb.swipeCloseTouchEnd = function () {\n swipeToCloseIsTouched = false;\n if (!swipeToCloseStarted) {\n swipeToCloseStarted = false;\n return;\n }\n swipeToCloseStarted = false;\n allowSwipeToClose = false;\n var diff = Math.abs(swipeToCloseDiff);\n var timeDiff = (new Date()).getTime() - swipeToCloseTimeStart;\n if ((timeDiff < 300 && diff > 20) || (timeDiff >= 300 && diff > 100)) {\n setTimeout(function () {\n if (pb.params.type === 'standalone') {\n pb.close();\n }\n if (pb.params.type === 'popup') {\n $.closeModal(pb.popup);\n }\n if (pb.params.onSwipeToClose) {\n pb.params.onSwipeToClose(pb);\n }\n allowSwipeToClose = true;\n }, 0);\n return;\n }\n if (diff !== 0) {\n swipeToCloseActiveSlide.addClass('transitioning').transitionEnd(function () {\n allowSwipeToClose = true;\n swipeToCloseActiveSlide.removeClass('transitioning');\n });\n }\n else {\n allowSwipeToClose = true;\n }\n pb.swiper.container.css('opacity', '').transition('');\n swipeToCloseActiveSlide.transform('');\n };\n\n return pb;\n };\n\n PhotoBrowser.prototype = {\n defaults: {\n photos : [],\n container: 'body',\n initialSlide: 0,\n spaceBetween: 20,\n speed: 300,\n zoom: true,\n maxZoom: 3,\n minZoom: 1,\n exposition: true,\n expositionHideCaptions: false,\n type: 'standalone',\n navbar: true,\n toolbar: true,\n theme: 'light',\n swipeToClose: true,\n backLinkText: 'Close',\n ofText: 'of',\n loop: false,\n lazyLoading: false,\n lazyLoadingInPrevNext: false,\n lazyLoadingOnTransitionStart: false,\n /*\n Callbacks:\n onLazyImageLoad(pb, slide, img)\n onLazyImageReady(pb, slide, img)\n onOpen(pb)\n onClose(pb)\n onSlideChangeStart(swiper)\n onSlideChangeEnd(swiper)\n onTap(swiper, e)\n onClick(swiper, e)\n onDoubleTap(swiper, e)\n onSwipeToClose(pb)\n */\n }\n };\n\n $.photoBrowser = function (params) {\n $.extend(params, $.photoBrowser.prototype.defaults);\n return new PhotoBrowser(params);\n };\n\n $.photoBrowser.prototype = {\n defaults: {}\n };\n\n}(Zepto);\n"],"names":["$","Swiper","container","params","isH","s","direction","autoplay","autoplayTimeoutId","setTimeout","loop","fixLoop","_slideNext","isEnd","autoplayStopOnLast","stopAutoplay","_slideTo","findElementInEvent","e","selector","el","target","is","parents","nodeType","found","each","index","_el","undefined","length","initObserver","options","ObserverFunc","window","MutationObserver","WebkitMutationObserver","observer","mutations","forEach","mutation","onResize","emit","observe","attributes","childList","characterData","observers","push","setParallaxTransform","progress","p","pX","pY","attr","indexOf","parseInt","transform","normalizeEventName","eventName","toUpperCase","substring","defaults","this","initalVirtualTranslate","virtualTranslate","def","deepDef","classNames","swiper","data","freeMode","support","flexbox","slidesPerColumn","parallax","watchSlidesVisibility","watchSlidesProgress","effect","transforms3d","resistanceRatio","slidesPerView","slidesPerGroup","centeredSlides","spaceBetween","setWrapperSize","grabCursor","touch","wrapper","children","wrapperClass","pagination","paginationContainer","paginationClickable","addClass","rtl","dir","toLowerCase","css","wrongRTL","device","android","join","translate","velocity","lockSwipeToNext","allowSwipeToNext","lockSwipeToPrev","allowSwipeToPrev","lockSwipes","unlockSwipeToNext","unlockSwipeToPrev","unlockSwipes","style","cursor","imagesToLoad","imagesLoaded","loadImage","imgElement","src","checkForComplete","callback","onReady","image","complete","Image","onload","onerror","preloadImages","_onReady","updateOnImagesReady","update","find","i","currentSrc","getAttribute","autoplaying","autoplayPaused","startAutoplay","clearTimeout","pauseAutoplay","speed","transitionEnd","minTranslate","snapGrid","maxTranslate","updateContainerSize","width","clientWidth","height","clientHeight","size","updateSlidesSize","slides","slideClass","slidesGrid","slidesSizesGrid","slidePosition","prevSlideSize","parseFloat","replace","virtualSize","marginLeft","marginTop","marginRight","marginBottom","slidesNumberEvenToRows","Math","floor","ceil","slideSize","slide","eq","newSlideOrderIndex","column","row","slidesPerRow","slidesPerColumnFill","-webkit-box-ordinal-group","-moz-box-ordinal-group","-ms-flex-order","-webkit-order","order","margin-top","outerWidth","outerHeight","swiperSlideSize","abs","max","newSlidesGrid","updateSlidesOffset","swiperSlideOffset","offsetLeft","offsetTop","updateSlidesProgress","offsetCenter","removeClass","slideVisibleClass","slideCenterOffset","slideProgress","slideBefore","slideAfter","isVisible","updateProgress","translatesDiff","isBeginning","updateActiveIndex","newActiveIndex","snapIndex","activeIndex","previousIndex","updateClasses","slideActiveClass","slideNextClass","slidePrevClass","activeSlide","next","prev","bullets","bulletActiveClass","bulletIndex","loopedSlides","prevButton","buttonDisabledClass","a11y","disable","enable","nextButton","updatePagination","bulletsHTML","numberOfBullets","paginationBulletRender","bulletClass","html","updateTranslate","forceSetTranslate","newTranslate","min","setWrapperTranslate","scrollbar","set","translated","slideTo","desktopEvents","navigator","pointerEnabled","msPointerEnabled","touchEvents","start","simulateTouch","move","end","touchEventsTarget","initEvents","detach","actionDom","action","document","moveCapture","nested","browser","ie","onTouchStart","onTouchMove","onTouchEnd","ios","onClickNext","onEnterKey","onClickPrev","onClickIndex","preventClicks","preventClicksPropagation","attachEvents","detachEvents","allowClick","preventDefault","stopPropagation","stopImmediatePropagation","slideNext","slidePrev","updateClickedSlide","clickedSlide","clickedIndex","slideToClickedSlide","realIndex","slideToIndex","duplicatedSlides","isTouched","isMoved","touchStartTime","isScrolling","currentTranslate","startTranslate","allowThresholdMove","clickTimeout","allowMomentumBounce","formElements","lastClickTime","Date","now","velocities","animating","touches","startX","startY","currentX","currentY","diff","isTouchEvent","startMoving","originalEvent","type","which","noSwiping","noSwipingClass","swipeHandler","targetTouches","pageX","pageY","swipeDirection","threshold","activeElement","blur","preventedByNestedSwiper","onlyExternal","touchAngle","atan2","PI","ieTouch","touchMoveStopPropagation","getWrapperTranslate","setWrapperTransition","trigger","autoplayDisableOnInteraction","touchRatio","disableParentSwiper","resistance","pow","followFinger","position","time","getTime","touchEndTime","timeDiff","paginationHide","hasClass","toggleClass","paginationHiddenClass","currentPos","freeModeMomentum","lastMoveEvent","pop","velocityEvent","distance","momentumDuration","freeModeMomentumRatio","momentumDistance","newPosition","afterBouncePosition","doBounce","bounceAmount","freeModeMomentumBounceRatio","freeModeMomentumBounce","onTransitionStart","onTransitionEnd","longSwipesMs","stopIndex","groupSize","ratio","longSwipes","longSwipesRatio","shortSwipes","slideIndex","runCallbacks","internal","lazy","hashnav","setHash","_slidePrev","slideReset","duration","byController","transition","effects","setTransition","control","controller","x","y","z","setTranslate","getTranslate","axis","matrix","curTransform","curStyle","transformMatrix","getComputedStyle","WebKitCSSMatrix","webkitTransform","MozTransform","OTransform","MsTransform","msTransform","getPropertyValue","toString","split","m41","m42","initObservers","observeParents","containerParents","disconnectObservers","disconnect","createLoop","slideDuplicateClass","remove","loopAdditionalSlides","prependSlides","appendSlides","append","cloneNode","prepend","destroyLoop","removeAttr","newIndex","appendSlide","prependSlide","removeSlide","slidesIndexes","indexToRemove","removeAllSlides","fade","fadeIndex","offset","tx","ty","slideOpacity","crossFade","opacity","triggerEvents","cube","cubeShadow","wrapperRotate","shadow","slideAngle","round","tz","slideShadows","shadowBefore","shadowAfter","-webkit-transform-origin","-moz-transform-origin","-ms-transform-origin","transform-origin","shadowOffset","shadowAngle","multiplier","sin","cos","scale1","shadowScale","scale2","zFactor","isSafari","isUiWebView","coverflow","center","rotate","depth","slideOffset","offsetMultiplier","modifier","rotateY","rotateX","translateZ","translateY","stretch","translateX","slideTransform","zIndex","ws","perspectiveOrigin","initialImageLoaded","loadImageInSlide","img","_img","load","lazyLoadingInPrevNext","nextSlide","prevSlide","lazyLoading","lazyLoadingOnTransitionStart","sb","track","drag","trackSize","offsetWidth","offsetHeight","divider","moveDivider","dragSize","display","scrollbarHide","newPos","newSize","timeout","controlledTranslate","controlled","isArray","controlInverse","parallaxDuration","_plugins","plugin","plugins","hasOwnProperty","callPlugins","arguments","emitterEventListeners","on","handler","off","splice","once","_handler","makeFocusable","$el","tabIndex","addRole","role","addLabel","label","event","keyCode","notify","lastSlideMsg","nextSlideMsg","firstSlideMsg","prevSlideMsg","liveRegion","message","notification","init","destroy","initialSlide","runCallbacksOnInit","keyboardControl","enableKeyboardControl","mousewheelControl","enableMousewheelControl","cleanupStyles","deleteInstance","disableKeyboardControl","disableMousewheelControl","prototype","mousewheelForceToAxis","prevSlideMessage","nextSlideMessage","firstSlideMessage","lastSlideMessage","ua","userAgent","test","arr","Object","apply","msMaxTouchPoints","maxTouchPoints","match","ipad","iphone","Modernizr","DocumentTouch","csstransforms3d","div","createElement","styles","Zepto","fn","initSwiper","pageContainer","destroySwiperOnRemove","slider","destroySwiper","page","body","swipers","dataset","_slider","reinitSwiper","sliders","sliderInstance","PhotoBrowser","pb","navbarTemplate","ofText","toolbarTemplate","template","theme","photoTemplate","photoLazyTemplate","captionsTheme","captionsTemplate","captionTemplate","objectTemplate","photosHtml","captionsHtml","photos","photo","thisTemplate","String","url","caption","htmlTemplate","navbar","toolbar","openIndex","opened","open","popup","onPopupClose","onPageBeforeInit","onPageBeforeRemove","view","mainView","loadContent","layout","onOpen","close","swiperContainer","onClose","swiperWrapper","gestureSlide","gestureImg","gestureImgWrap","detail","name","onSliderTransitionStart","current","total","text","captions","captionsContainer","captionIndex","previousSlideVideo","pause","onSlideChangeStart","onSliderTransitionEnd","zoom","scale","currentScale","onSlideChangeEnd","sliderSettings","indexButton","onTap","onClick","exposition","toggleExposition","onDoubleTap","toggleZoom","onLazyImageLoad","onLazyImageReady","swipeToClose","swipeCloseTouchStart","onTouchMoveOpposite","swipeCloseTouchMove","swipeCloseTouchEnd","onSlideGestureStart","onSlideGestureChange","onSlideGestureEnd","onSlideTouchStart","onSlideTouchMove","onSlideTouchEnd","exposed","expositionHideCaptions","enableExposition","disableExposition","isScaling","parent","maxZoom","minZoom","imageIsTouched","imageIsMoved","imageCurrentX","imageCurrentY","imageMinX","imageMinY","imageMaxX","imageMaxY","imageWidth","imageHeight","imageStartX","imageStartY","velocityPrevPositionX","velocityPrevTime","velocityX","velocityPrevPositionY","velocityY","imageTouchesStart","imageTouchesCurrent","os","scaledWidth","scaledHeight","momentumDurationX","momentumDurationY","momentumDistanceX","newPositionX","momentumDistanceY","newPositionY","swipeToCloseDiff","swipeToCloseStart","swipeToCloseCurrent","swipeToCloseActiveSlide","swipeToCloseTimeStart","swipeToCloseIsTouched","allowSwipeToClose","swipeToCloseStarted","closeModal","onSwipeToClose","backLinkText","photoBrowser","extend"],"mappings":"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"}