{"version":3,"sources":["../bower_components/bxslider-4/dist/jquery.bxslider.js"],"names":["$","defaults","mode","slideSelector","infiniteLoop","hideControlOnEnd","speed","easing","slideMargin","startSlide","randomStart","captions","ticker","tickerHover","adaptiveHeight","adaptiveHeightSpeed","video","useCSS","preloadImages","responsive","slideZIndex","wrapperClass","touchEnabled","swipeThreshold","oneToOneTouch","preventDefaultSwipeX","preventDefaultSwipeY","ariaLive","ariaHidden","keyboardEnabled","pager","pagerType","pagerShortSeparator","pagerSelector","buildPager","pagerCustom","controls","nextText","prevText","nextSelector","prevSelector","autoControls","startText","stopText","autoControlsCombine","autoControlsSelector","auto","pause","autoStart","autoDirection","stopAutoOnClick","autoHover","autoDelay","autoSlideForOnePage","minSlides","maxSlides","moveSlides","slideWidth","shrinkItems","onSliderLoad","onSlideBefore","onSlideAfter","onSlideNext","onSlidePrev","onSliderResize","onAutoChange","fn","bxSlider","options","this","length","each","slider","el","windowWidth","window","width","windowHeight","height","data","init","settings","extend","parseInt","children","Math","floor","random","active","index","carousel","minThreshold","maxThreshold","working","interval","animProp","usingCSS","div","document","createElement","props","i","undefined","style","cssPrefix","replace","toLowerCase","attr","setup","preloadSelector","eq","wrap","viewport","parent","loader","prepend","css","position","overflow","maxWidth","getViewportMaxWidth","float","listStyle","getSlideWidth","zIndex","display","appendCaptions","last","getPagerQty","fitVids","appendControls","appendControlsAuto","appendPager","after","start","loadElements","selector","callback","total","find","count","one","complete","src","trigger","slice","sliceAppend","clone","addClass","slicePrepend","append","remove","setSlidePosition","getViewportHeight","redrawSlider","call","initialized","on","resizeWindow","initAuto","initTicker","updatePagerActive","updateDirectionControls","initTouch","keydown","keyPress","currentIndex","getMoveBy","add","outerHeight","max","apply","map","get","parseFloat","newElWidth","wrapWidth","ceil","getNumberSlidesShowing","slidesShowing","childWidth","first","pagerQty","breakPoint","counter","lastChild","lastShowingIndex","setPositionProperty","left","outerWidth","top","value","type","duration","params","animateObj","propValue","e","target","is","off","updateAfterSlideTransition","resetValue","tickerLoop","animate","populatePager","pagerHtml","linkContent","isFunction","pagerEl","html","clickPagerBind","next","prev","clickNextBind","clickPrevBind","directionEl","stop","autoEl","clickStartBind","clickStopBind","updateAutoControls","title","preventDefault","hasClass","stopAuto","goToNextSlide","goToPrevSlide","startAuto","pagerLink","pagerIndex","currentTarget","goToSlide","slideIndex","len","removeClass","oldIndex","state","windowFocusHandler","windowBlurHandler","setTimeout","focus","blur","hover","autoPaused","transform","idx","ratio","property","newSpeed","totalDimens","startPosition","split","abs","resumeSpeed","animateProperty","reset","isOnScreen","win","scrollTop","scrollLeft","bounds","offset","right","bottom","activeElementTag","activeElement","tagName","tagFilters","p","RegExp","result","exec","keyCode","touch","x","y","end","onTouchStart","button","originalPos","orig","originalEvent","touchPoints","changedTouches","chromePointerEvents","PointerEvent","pointerId","pageX","pageY","setPointerCapture","originalClickTarget","originalTarget","originalClickButton","originalClickButtons","buttons","originalEventType","hasMove","onTouchMove","onTouchEnd","onPointerCancel","releasePointerCapture","xMovement","yMovement","change","distance","windowWidthNew","windowHeightNew","applyAriaHiddenAttributes","startVisibleIndex","numberOfSlidesShowing","setSlideIndex","direction","requestEl","performTransition","moveBy","filter","fadeOut","fadeIn","preventControlUpdate","setInterval","clearInterval","getCurrentSlide","getCurrentSlideElement","getSlideElement","getSlideCount","isWorking","destroySlider","removeAttr","unwrap","removeData","reloadSlider","jQuery"],"mappings":"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","file":"jquery.bxslider.js","sourcesContent":["/**\n * bxSlider v4.2.1d\n * Copyright 2013-2017 Steven Wanderski\n * Written while drinking Belgian ales and listening to jazz\n * Licensed under MIT (http://opensource.org/licenses/MIT)\n */\n\n;(function($) {\n\n var defaults = {\n\n // GENERAL\n mode: 'horizontal',\n slideSelector: '',\n infiniteLoop: true,\n hideControlOnEnd: false,\n speed: 500,\n easing: null,\n slideMargin: 0,\n startSlide: 0,\n randomStart: false,\n captions: false,\n ticker: false,\n tickerHover: false,\n adaptiveHeight: false,\n adaptiveHeightSpeed: 500,\n video: false,\n useCSS: true,\n preloadImages: 'visible',\n responsive: true,\n slideZIndex: 50,\n wrapperClass: 'bx-wrapper',\n\n // TOUCH\n touchEnabled: true,\n swipeThreshold: 50,\n oneToOneTouch: true,\n preventDefaultSwipeX: true,\n preventDefaultSwipeY: false,\n\n // ACCESSIBILITY\n ariaLive: true,\n ariaHidden: true,\n\n // KEYBOARD\n keyboardEnabled: false,\n\n // PAGER\n pager: true,\n pagerType: 'full',\n pagerShortSeparator: ' / ',\n pagerSelector: null,\n buildPager: null,\n pagerCustom: null,\n\n // CONTROLS\n controls: true,\n nextText: 'Next',\n prevText: 'Prev',\n nextSelector: null,\n prevSelector: null,\n autoControls: false,\n startText: 'Start',\n stopText: 'Stop',\n autoControlsCombine: false,\n autoControlsSelector: null,\n\n // AUTO\n auto: false,\n pause: 4000,\n autoStart: true,\n autoDirection: 'next',\n stopAutoOnClick: false,\n autoHover: false,\n autoDelay: 0,\n autoSlideForOnePage: false,\n\n // CAROUSEL\n minSlides: 1,\n maxSlides: 1,\n moveSlides: 0,\n slideWidth: 0,\n shrinkItems: false,\n\n // CALLBACKS\n onSliderLoad: function() { return true; },\n onSlideBefore: function() { return true; },\n onSlideAfter: function() { return true; },\n onSlideNext: function() { return true; },\n onSlidePrev: function() { return true; },\n onSliderResize: function() { return true; },\n\tonAutoChange: function() { return true; } //calls when auto slides starts and stops\n };\n\n $.fn.bxSlider = function(options) {\n\n if (this.length === 0) {\n return this;\n }\n\n // support multiple elements\n if (this.length > 1) {\n this.each(function() {\n $(this).bxSlider(options);\n });\n return this;\n }\n\n // create a namespace to be used throughout the plugin\n var slider = {},\n // set a reference to our slider element\n el = this,\n // get the original window dimens (thanks a lot IE)\n windowWidth = $(window).width(),\n windowHeight = $(window).height();\n\n // Return if slider is already initialized\n if ($(el).data('bxSlider')) { return; }\n\n /**\n * ===================================================================================\n * = PRIVATE FUNCTIONS\n * ===================================================================================\n */\n\n /**\n * Initializes namespace settings to be used throughout plugin\n */\n var init = function() {\n // Return if slider is already initialized\n if ($(el).data('bxSlider')) { return; }\n // merge user-supplied options with the defaults\n slider.settings = $.extend({}, defaults, options);\n // parse slideWidth setting\n slider.settings.slideWidth = parseInt(slider.settings.slideWidth);\n // store the original children\n slider.children = el.children(slider.settings.slideSelector);\n // check if actual number of slides is less than minSlides / maxSlides\n if (slider.children.length < slider.settings.minSlides) { slider.settings.minSlides = slider.children.length; }\n if (slider.children.length < slider.settings.maxSlides) { slider.settings.maxSlides = slider.children.length; }\n // if random start, set the startSlide setting to random number\n if (slider.settings.randomStart) { slider.settings.startSlide = Math.floor(Math.random() * slider.children.length); }\n // store active slide information\n slider.active = { index: slider.settings.startSlide };\n // store if the slider is in carousel mode (displaying / moving multiple slides)\n slider.carousel = slider.settings.minSlides > 1 || slider.settings.maxSlides > 1;\n // if carousel, force preloadImages = 'all'\n if (slider.carousel) { slider.settings.preloadImages = 'all'; }\n // calculate the min / max width thresholds based on min / max number of slides\n // used to setup and update carousel slides dimensions\n slider.minThreshold = (slider.settings.minSlides * slider.settings.slideWidth) + ((slider.settings.minSlides - 1) * slider.settings.slideMargin);\n slider.maxThreshold = (slider.settings.maxSlides * slider.settings.slideWidth) + ((slider.settings.maxSlides - 1) * slider.settings.slideMargin);\n // store the current state of the slider (if currently animating, working is true)\n slider.working = false;\n // initialize the controls object\n slider.controls = {};\n // initialize an auto interval\n slider.interval = null;\n // determine which property to use for transitions\n slider.animProp = slider.settings.mode === 'vertical' ? 'top' : 'left';\n // determine if hardware acceleration can be used\n slider.usingCSS = slider.settings.useCSS && slider.settings.mode !== 'fade' && (function() {\n // create our test div element\n var div = document.createElement('div'),\n // css transition properties\n props = ['WebkitPerspective', 'MozPerspective', 'OPerspective', 'msPerspective'];\n // test for each property\n for (var i = 0; i < props.length; i++) {\n if (div.style[props[i]] !== undefined) {\n slider.cssPrefix = props[i].replace('Perspective', '').toLowerCase();\n slider.animProp = '-' + slider.cssPrefix + '-transform';\n return true;\n }\n }\n return false;\n }());\n // if vertical mode always make maxSlides and minSlides equal\n if (slider.settings.mode === 'vertical') { slider.settings.maxSlides = slider.settings.minSlides; }\n // save original style data\n el.data('origStyle', el.attr('style'));\n el.children(slider.settings.slideSelector).each(function() {\n $(this).data('origStyle', $(this).attr('style'));\n });\n\n // perform all DOM / CSS modifications\n setup();\n };\n\n /**\n * Performs all DOM and CSS modifications\n */\n var setup = function() {\n var preloadSelector = slider.children.eq(slider.settings.startSlide); // set the default preload selector (visible)\n\n // wrap el in a wrapper\n el.wrap('
');\n // store a namespace reference to .bx-viewport\n slider.viewport = el.parent();\n\n // add aria-live if the setting is enabled and ticker mode is disabled\n if (slider.settings.ariaLive && !slider.settings.ticker) {\n slider.viewport.attr('aria-live', 'polite');\n }\n // add a loading div to display while images are loading\n slider.loader = $('
');\n slider.viewport.prepend(slider.loader);\n // set el to a massive width, to hold any needed slides\n // also strip any margin and padding from el\n el.css({\n width: slider.settings.mode === 'horizontal' ? (slider.children.length * 1000 + 215) + '%' : 'auto',\n position: 'relative'\n });\n // if using CSS, add the easing property\n if (slider.usingCSS && slider.settings.easing) {\n el.css('-' + slider.cssPrefix + '-transition-timing-function', slider.settings.easing);\n // if not using CSS and no easing value was supplied, use the default JS animation easing (swing)\n } else if (!slider.settings.easing) {\n slider.settings.easing = 'swing';\n }\n // make modifications to the viewport (.bx-viewport)\n slider.viewport.css({\n width: '100%',\n overflow: 'hidden',\n position: 'relative'\n });\n slider.viewport.parent().css({\n maxWidth: getViewportMaxWidth()\n });\n // apply css to all slider children\n slider.children.css({\n // the float attribute is a reserved word in compressors like YUI compressor and need to be quoted #48\n 'float': slider.settings.mode === 'horizontal' ? 'left' : 'none',\n listStyle: 'none',\n position: 'relative'\n });\n // apply the calculated width after the float is applied to prevent scrollbar interference\n slider.children.css('width', getSlideWidth());\n // if slideMargin is supplied, add the css\n if (slider.settings.mode === 'horizontal' && slider.settings.slideMargin > 0) { slider.children.css('marginRight', slider.settings.slideMargin); }\n if (slider.settings.mode === 'vertical' && slider.settings.slideMargin > 0) { slider.children.css('marginBottom', slider.settings.slideMargin); }\n // if \"fade\" mode, add positioning and z-index CSS\n if (slider.settings.mode === 'fade') {\n slider.children.css({\n position: 'absolute',\n zIndex: 0,\n display: 'none'\n });\n // prepare the z-index on the showing element\n slider.children.eq(slider.settings.startSlide).css({zIndex: slider.settings.slideZIndex, display: 'block'});\n }\n // create an element to contain all slider controls (pager, start / stop, etc)\n slider.controls.el = $('
');\n // if captions are requested, add them\n if (slider.settings.captions) { appendCaptions(); }\n // check if startSlide is last slide\n slider.active.last = slider.settings.startSlide === getPagerQty() - 1;\n // if video is true, set up the fitVids plugin\n if (slider.settings.video) { el.fitVids(); }\n\t //preloadImages\n\t if (slider.settings.preloadImages === 'none') { \n\t\t preloadSelector = null; \n\t }\n else if (slider.settings.preloadImages === 'all' || slider.settings.ticker) { \n\t\t preloadSelector = slider.children; \n\t }\n // only check for control addition if not in \"ticker\" mode\n if (!slider.settings.ticker) {\n // if controls are requested, add them\n if (slider.settings.controls) { appendControls(); }\n // if auto is true, and auto controls are requested, add them\n if (slider.settings.auto && slider.settings.autoControls) { appendControlsAuto(); }\n // if pager is requested, add it\n if (slider.settings.pager) { appendPager(); }\n // if any control option is requested, add the controls wrapper\n if (slider.settings.controls || slider.settings.autoControls || slider.settings.pager) { slider.viewport.after(slider.controls.el); }\n // if ticker mode, do not allow a pager\n } else {\n slider.settings.pager = false;\n }\n\t if (preloadSelector === null) {\n start();\n } else {\n loadElements(preloadSelector, start);\n }\n };\n\n var loadElements = function(selector, callback) {\n var total = selector.find('img:not([src=\"\"]), iframe').length,\n count = 0;\n if (total === 0) {\n callback();\n return;\n }\n selector.find('img:not([src=\"\"]), iframe').each(function() {\n $(this).one('load error', function() {\n if (++count === total) { callback(); }\n }).each(function() {\n if (this.complete || this.src == '') { $(this).trigger('load'); }\n });\n });\n };\n\n /**\n * Start the slider\n */\n var start = function() {\n // if infinite loop, prepare additional slides\n if (slider.settings.infiniteLoop && slider.settings.mode !== 'fade' && !slider.settings.ticker) {\n var slice = slider.settings.mode === 'vertical' ? slider.settings.minSlides : slider.settings.maxSlides,\n sliceAppend = slider.children.slice(0, slice).clone(true).addClass('bx-clone'),\n slicePrepend = slider.children.slice(-slice).clone(true).addClass('bx-clone');\n if (slider.settings.ariaHidden) {\n sliceAppend.attr('aria-hidden', true);\n slicePrepend.attr('aria-hidden', true);\n }\n el.append(sliceAppend).prepend(slicePrepend);\n }\n // remove the loading DOM element\n slider.loader.remove();\n // set the left / top position of \"el\"\n setSlidePosition();\n // if \"vertical\" mode, always use adaptiveHeight to prevent odd behavior\n if (slider.settings.mode === 'vertical') { slider.settings.adaptiveHeight = true; }\n // set the viewport height\n slider.viewport.height(getViewportHeight());\n // make sure everything is positioned just right (same as a window resize)\n el.redrawSlider();\n // onSliderLoad callback\n slider.settings.onSliderLoad.call(el, slider.active.index);\n // slider has been fully initialized\n slider.initialized = true;\n // add the resize call to the window\n if (slider.settings.responsive) { $(window).on('resize', resizeWindow); }\n // if auto is true and has more than 1 page, start the show\n if (slider.settings.auto && slider.settings.autoStart && (getPagerQty() > 1 || slider.settings.autoSlideForOnePage)) { initAuto(); }\n // if ticker is true, start the ticker\n if (slider.settings.ticker) { initTicker(); }\n // if pager is requested, make the appropriate pager link active\n if (slider.settings.pager) { updatePagerActive(slider.settings.startSlide); }\n // check for any updates to the controls (like hideControlOnEnd updates)\n if (slider.settings.controls) { updateDirectionControls(); }\n // if touchEnabled is true, setup the touch events\n if (slider.settings.touchEnabled && !slider.settings.ticker) { initTouch(); }\n // if keyboardEnabled is true, setup the keyboard events\n if (slider.settings.keyboardEnabled && !slider.settings.ticker) {\n $(document).keydown(keyPress);\n }\n };\n\n /**\n * Returns the calculated height of the viewport, used to determine either adaptiveHeight or the maxHeight value\n */\n var getViewportHeight = function() {\n var height = 0;\n // first determine which children (slides) should be used in our height calculation\n var children = $();\n // if mode is not \"vertical\" and adaptiveHeight is false, include all children\n if (slider.settings.mode !== 'vertical' && !slider.settings.adaptiveHeight) {\n children = slider.children;\n } else {\n // if not carousel, return the single active child\n if (!slider.carousel) {\n children = slider.children.eq(slider.active.index);\n // if carousel, return a slice of children\n } else {\n // get the individual slide index\n var currentIndex = slider.settings.moveSlides === 1 ? slider.active.index : slider.active.index * getMoveBy();\n // add the current slide to the children\n children = slider.children.eq(currentIndex);\n // cycle through the remaining \"showing\" slides\n for (i = 1; i <= slider.settings.maxSlides - 1; i++) {\n // if looped back to the start\n if (currentIndex + i >= slider.children.length) {\n children = children.add(slider.children.eq(i - 1));\n } else {\n children = children.add(slider.children.eq(currentIndex + i));\n }\n }\n }\n }\n // if \"vertical\" mode, calculate the sum of the heights of the children\n if (slider.settings.mode === 'vertical') {\n children.each(function(index) {\n height += $(this).outerHeight();\n });\n // add user-supplied margins\n if (slider.settings.slideMargin > 0) {\n height += slider.settings.slideMargin * (slider.settings.minSlides - 1);\n }\n // if not \"vertical\" mode, calculate the max height of the children\n } else {\n height = Math.max.apply(Math, children.map(function() {\n return $(this).outerHeight(false);\n }).get());\n }\n\n if (slider.viewport.css('box-sizing') === 'border-box') {\n height += parseFloat(slider.viewport.css('padding-top')) + parseFloat(slider.viewport.css('padding-bottom')) +\n parseFloat(slider.viewport.css('border-top-width')) + parseFloat(slider.viewport.css('border-bottom-width'));\n } else if (slider.viewport.css('box-sizing') === 'padding-box') {\n height += parseFloat(slider.viewport.css('padding-top')) + parseFloat(slider.viewport.css('padding-bottom'));\n }\n\n return height;\n };\n\n /**\n * Returns the calculated width to be used for the outer wrapper / viewport\n */\n var getViewportMaxWidth = function() {\n var width = '100%';\n if (slider.settings.slideWidth > 0) {\n if (slider.settings.mode === 'horizontal') {\n width = (slider.settings.maxSlides * slider.settings.slideWidth) + ((slider.settings.maxSlides - 1) * slider.settings.slideMargin);\n } else {\n width = slider.settings.slideWidth;\n }\n }\n return width;\n };\n\n /**\n * Returns the calculated width to be applied to each slide\n */\n var getSlideWidth = function() {\n var newElWidth = slider.settings.slideWidth, // start with any user-supplied slide width\n wrapWidth = slider.viewport.width(); // get the current viewport width\n // if slide width was not supplied, or is larger than the viewport use the viewport width\n if (slider.settings.slideWidth === 0 ||\n (slider.settings.slideWidth > wrapWidth && !slider.carousel) ||\n slider.settings.mode === 'vertical') {\n newElWidth = wrapWidth;\n // if carousel, use the thresholds to determine the width\n } else if (slider.settings.maxSlides > 1 && slider.settings.mode === 'horizontal') {\n if (wrapWidth > slider.maxThreshold) {\n return newElWidth;\n } else if (wrapWidth < slider.minThreshold) {\n newElWidth = (wrapWidth - (slider.settings.slideMargin * (slider.settings.minSlides - 1))) / slider.settings.minSlides;\n } else if (slider.settings.shrinkItems) {\n newElWidth = Math.floor((wrapWidth + slider.settings.slideMargin) / (Math.ceil((wrapWidth + slider.settings.slideMargin) / (newElWidth + slider.settings.slideMargin))) - slider.settings.slideMargin);\n }\n }\n return newElWidth;\n };\n\n /**\n * Returns the number of slides currently visible in the viewport (includes partially visible slides)\n */\n var getNumberSlidesShowing = function() {\n var slidesShowing = 1,\n childWidth = null;\n if (slider.settings.mode === 'horizontal' && slider.settings.slideWidth > 0) {\n // if viewport is smaller than minThreshold, return minSlides\n if (slider.viewport.width() < slider.minThreshold) {\n slidesShowing = slider.settings.minSlides;\n // if viewport is larger than maxThreshold, return maxSlides\n } else if (slider.viewport.width() > slider.maxThreshold) {\n slidesShowing = slider.settings.maxSlides;\n // if viewport is between min / max thresholds, divide viewport width by first child width\n } else {\n childWidth = slider.children.first().width() + slider.settings.slideMargin;\n slidesShowing = Math.floor((slider.viewport.width() +\n slider.settings.slideMargin) / childWidth) || 1;\n }\n // if \"vertical\" mode, slides showing will always be minSlides\n } else if (slider.settings.mode === 'vertical') {\n slidesShowing = slider.settings.minSlides;\n }\n return slidesShowing;\n };\n\n /**\n * Returns the number of pages (one full viewport of slides is one \"page\")\n */\n var getPagerQty = function() {\n var pagerQty = 0,\n breakPoint = 0,\n counter = 0;\n // if moveSlides is specified by the user\n if (slider.settings.moveSlides > 0) {\n if (slider.settings.infiniteLoop) {\n pagerQty = Math.ceil(slider.children.length / getMoveBy());\n } else {\n // when breakpoint goes above children length, counter is the number of pages\n while (breakPoint < slider.children.length) {\n ++pagerQty;\n breakPoint = counter + getNumberSlidesShowing();\n counter += slider.settings.moveSlides <= getNumberSlidesShowing() ? slider.settings.moveSlides : getNumberSlidesShowing();\n }\n\t\t return counter;\n }\n // if moveSlides is 0 (auto) divide children length by sides showing, then round up\n } else {\n pagerQty = Math.ceil(slider.children.length / getNumberSlidesShowing());\n }\n return pagerQty;\n };\n\n /**\n * Returns the number of individual slides by which to shift the slider\n */\n var getMoveBy = function() {\n // if moveSlides was set by the user and moveSlides is less than number of slides showing\n if (slider.settings.moveSlides > 0 && slider.settings.moveSlides <= getNumberSlidesShowing()) {\n return slider.settings.moveSlides;\n }\n // if moveSlides is 0 (auto)\n return getNumberSlidesShowing();\n };\n\n /**\n * Sets the slider's (el) left or top position\n */\n var setSlidePosition = function() {\n var position, lastChild, lastShowingIndex;\n // if last slide, not infinite loop, and number of children is larger than specified maxSlides\n if (slider.children.length > slider.settings.maxSlides && slider.active.last && !slider.settings.infiniteLoop) {\n if (slider.settings.mode === 'horizontal') {\n // get the last child's position\n lastChild = slider.children.last();\n position = lastChild.position();\n // set the left position\n setPositionProperty(-(position.left - (slider.viewport.width() - lastChild.outerWidth())), 'reset', 0);\n } else if (slider.settings.mode === 'vertical') {\n // get the last showing index's position\n lastShowingIndex = slider.children.length - slider.settings.minSlides;\n position = slider.children.eq(lastShowingIndex).position();\n // set the top position\n setPositionProperty(-position.top, 'reset', 0);\n }\n // if not last slide\n } else {\n // get the position of the first showing slide\n position = slider.children.eq(slider.active.index * getMoveBy()).position();\n // check for last slide\n if (slider.active.index === getPagerQty() - 1) { slider.active.last = true; }\n // set the respective position\n if (position !== undefined) {\n if (slider.settings.mode === 'horizontal') { setPositionProperty(-position.left, 'reset', 0); }\n else if (slider.settings.mode === 'vertical') { setPositionProperty(-position.top, 'reset', 0); }\n }\n }\n };\n\n /**\n * Sets the el's animating property position (which in turn will sometimes animate el).\n * If using CSS, sets the transform property. If not using CSS, sets the top / left property.\n *\n * @param value (int)\n * - the animating property's value\n *\n * @param type (string) 'slide', 'reset', 'ticker'\n * - the type of instance for which the function is being\n *\n * @param duration (int)\n * - the amount of time (in ms) the transition should occupy\n *\n * @param params (array) optional\n * - an optional parameter containing any variables that need to be passed in\n */\n var setPositionProperty = function(value, type, duration, params) {\n var animateObj, propValue;\n // use CSS transform\n if (slider.usingCSS) {\n // determine the translate3d value\n propValue = slider.settings.mode === 'vertical' ? 'translate3d(0, ' + value + 'px, 0)' : 'translate3d(' + value + 'px, 0, 0)';\n // add the CSS transition-duration\n el.css('-' + slider.cssPrefix + '-transition-duration', duration / 1000 + 's');\n if (type === 'slide') {\n // set the property value\n el.css(slider.animProp, propValue);\n if (duration !== 0) {\n // add a callback method - executes when CSS transition completes\n el.on('transitionend webkitTransitionEnd oTransitionEnd MSTransitionEnd', function(e) {\n //make sure it's the correct one\n if (!$(e.target).is(el)) { return; }\n // remove the callback\n el.off('transitionend webkitTransitionEnd oTransitionEnd MSTransitionEnd');\n updateAfterSlideTransition();\n });\n } else { //duration = 0\n updateAfterSlideTransition();\n }\n } else if (type === 'reset') {\n el.css(slider.animProp, propValue);\n } else if (type === 'ticker') {\n // make the transition use 'linear'\n el.css('-' + slider.cssPrefix + '-transition-timing-function', 'linear');\n el.css(slider.animProp, propValue);\n if (duration !== 0) {\n el.on('transitionend webkitTransitionEnd oTransitionEnd MSTransitionEnd', function(e) {\n //make sure it's the correct one\n if (!$(e.target).is(el)) { return; }\n // remove the callback\n el.off('transitionend webkitTransitionEnd oTransitionEnd MSTransitionEnd');\n // reset the position\n setPositionProperty(params.resetValue, 'reset', 0);\n // start the loop again\n tickerLoop();\n });\n } else { //duration = 0\n setPositionProperty(params.resetValue, 'reset', 0);\n tickerLoop();\n }\n }\n // use JS animate\n } else {\n animateObj = {};\n animateObj[slider.animProp] = value;\n if (type === 'slide') {\n el.animate(animateObj, duration, slider.settings.easing, function() {\n updateAfterSlideTransition();\n });\n } else if (type === 'reset') {\n el.css(slider.animProp, value);\n } else if (type === 'ticker') {\n el.animate(animateObj, duration, 'linear', function() {\n setPositionProperty(params.resetValue, 'reset', 0);\n // run the recursive loop after animation\n tickerLoop();\n });\n }\n }\n };\n\n /**\n * Populates the pager with proper amount of pages\n */\n var populatePager = function() {\n var pagerHtml = '',\n linkContent = '',\n pagerQty = getPagerQty();\n // loop through each pager item\n for (var i = 0; i < pagerQty; i++) {\n linkContent = '';\n // if a buildPager function is supplied, use it to get pager link value, else use index + 1\n if (slider.settings.buildPager && $.isFunction(slider.settings.buildPager) || slider.settings.pagerCustom) {\n linkContent = slider.settings.buildPager(i);\n slider.pagerEl.addClass('bx-custom-pager');\n } else {\n linkContent = i + 1;\n slider.pagerEl.addClass('bx-default-pager');\n }\n // var linkContent = slider.settings.buildPager && $.isFunction(slider.settings.buildPager) ? slider.settings.buildPager(i) : i + 1;\n // add the markup to the string\n pagerHtml += '';\n }\n // populate the pager element with pager links\n slider.pagerEl.html(pagerHtml);\n };\n\n /**\n * Appends the pager to the controls element\n */\n var appendPager = function() {\n if (!slider.settings.pagerCustom) {\n // create the pager DOM element\n slider.pagerEl = $('
');\n // if a pager selector was supplied, populate it with the pager\n if (slider.settings.pagerSelector) {\n $(slider.settings.pagerSelector).html(slider.pagerEl);\n // if no pager selector was supplied, add it after the wrapper\n } else {\n slider.controls.el.addClass('bx-has-pager').append(slider.pagerEl);\n }\n // populate the pager\n populatePager();\n } else {\n slider.pagerEl = $(slider.settings.pagerCustom);\n }\n // assign the pager click binding\n slider.pagerEl.on('click touchend', 'a', clickPagerBind);\n };\n\n /**\n * Appends prev / next controls to the controls element\n */\n var appendControls = function() {\n slider.controls.next = $('' + slider.settings.nextText + '');\n slider.controls.prev = $('' + slider.settings.prevText + '');\n // add click actions to the controls\n slider.controls.next.on('click touchend', clickNextBind);\n slider.controls.prev.on('click touchend', clickPrevBind);\n // if nextSelector was supplied, populate it\n if (slider.settings.nextSelector) {\n $(slider.settings.nextSelector).append(slider.controls.next);\n }\n // if prevSelector was supplied, populate it\n if (slider.settings.prevSelector) {\n $(slider.settings.prevSelector).append(slider.controls.prev);\n }\n // if no custom selectors were supplied\n if (!slider.settings.nextSelector && !slider.settings.prevSelector) {\n // add the controls to the DOM\n slider.controls.directionEl = $('
');\n // add the control elements to the directionEl\n slider.controls.directionEl.append(slider.controls.prev).append(slider.controls.next);\n // slider.viewport.append(slider.controls.directionEl);\n slider.controls.el.addClass('bx-has-controls-direction').append(slider.controls.directionEl);\n }\n };\n\n /**\n * Appends start / stop auto controls to the controls element\n */\n var appendControlsAuto = function() {\n slider.controls.start = $('');\n slider.controls.stop = $('');\n // add the controls to the DOM\n slider.controls.autoEl = $('
');\n // on click actions to the controls\n slider.controls.autoEl.on('click', '.bx-start', clickStartBind);\n slider.controls.autoEl.on('click', '.bx-stop', clickStopBind);\n // if autoControlsCombine, insert only the \"start\" control\n if (slider.settings.autoControlsCombine) {\n slider.controls.autoEl.append(slider.controls.start);\n // if autoControlsCombine is false, insert both controls\n } else {\n slider.controls.autoEl.append(slider.controls.start).append(slider.controls.stop);\n }\n // if auto controls selector was supplied, populate it with the controls\n if (slider.settings.autoControlsSelector) {\n $(slider.settings.autoControlsSelector).html(slider.controls.autoEl);\n // if auto controls selector was not supplied, add it after the wrapper\n } else {\n slider.controls.el.addClass('bx-has-controls-auto').append(slider.controls.autoEl);\n }\n // update the auto controls\n updateAutoControls(slider.settings.autoStart ? 'stop' : 'start');\n };\n\n /**\n * Appends image captions to the DOM\n */\n var appendCaptions = function() {\n // cycle through each child\n slider.children.each(function(index) {\n // get the image title attribute\n var title = $(this).find('img:first').attr('title');\n // append the caption\n if (title !== undefined && ('' + title).length) {\n $(this).append('
' + title + '
');\n }\n });\n };\n\n /**\n * Click next binding\n *\n * @param e (event)\n * - DOM event object\n */\n var clickNextBind = function(e) {\n e.preventDefault();\n if (slider.controls.el.hasClass('disabled')) { return; }\n // if auto show is running, stop it\n if (slider.settings.auto && slider.settings.stopAutoOnClick) { el.stopAuto(); }\n el.goToNextSlide();\n };\n\n /**\n * Click prev binding\n *\n * @param e (event)\n * - DOM event object\n */\n var clickPrevBind = function(e) {\n e.preventDefault();\n if (slider.controls.el.hasClass('disabled')) { return; }\n // if auto show is running, stop it\n if (slider.settings.auto && slider.settings.stopAutoOnClick) { el.stopAuto(); }\n el.goToPrevSlide();\n };\n\n /**\n * Click start binding\n *\n * @param e (event)\n * - DOM event object\n */\n var clickStartBind = function(e) {\n el.startAuto();\n e.preventDefault();\n };\n\n /**\n * Click stop binding\n *\n * @param e (event)\n * - DOM event object\n */\n var clickStopBind = function(e) {\n el.stopAuto();\n e.preventDefault();\n };\n\n /**\n * Click pager binding\n *\n * @param e (event)\n * - DOM event object\n */\n var clickPagerBind = function(e) {\n var pagerLink, pagerIndex;\n e.preventDefault();\n if (slider.controls.el.hasClass('disabled')) {\n return;\n }\n // if auto show is running, stop it\n if (slider.settings.auto && slider.settings.stopAutoOnClick) { el.stopAuto(); }\n pagerLink = $(e.currentTarget);\n if (pagerLink.attr('data-slide-index') !== undefined) {\n pagerIndex = parseInt(pagerLink.attr('data-slide-index'));\n // if clicked pager link is not active, continue with the goToSlide call\n if (pagerIndex !== slider.active.index) { el.goToSlide(pagerIndex); }\n }\n };\n\n /**\n * Updates the pager links with an active class\n *\n * @param slideIndex (int)\n * - index of slide to make active\n */\n var updatePagerActive = function(slideIndex) {\n // if \"short\" pager type\n var len = slider.children.length; // nb of children\n if (slider.settings.pagerType === 'short') {\n if (slider.settings.maxSlides > 1) {\n len = Math.ceil(slider.children.length / slider.settings.maxSlides);\n }\n slider.pagerEl.html((slideIndex + 1) + slider.settings.pagerShortSeparator + len);\n return;\n }\n // remove all pager active classes\n slider.pagerEl.find('a').removeClass('active');\n // apply the active class for all pagers\n slider.pagerEl.each(function(i, el) { $(el).find('a').eq(slideIndex).addClass('active'); });\n };\n\n /**\n * Performs needed actions after a slide transition\n */\n var updateAfterSlideTransition = function() {\n // if infinite loop is true\n if (slider.settings.infiniteLoop) {\n var position = '';\n // first slide\n if (slider.active.index === 0) {\n // set the new position\n position = slider.children.eq(0).position();\n // carousel, last slide\n } else if (slider.active.index === getPagerQty() - 1 && slider.carousel) {\n position = slider.children.eq((getPagerQty() - 1) * getMoveBy()).position();\n // last slide\n } else if (slider.active.index === slider.children.length - 1) {\n position = slider.children.eq(slider.children.length - 1).position();\n }\n if (position) {\n if (slider.settings.mode === 'horizontal') { setPositionProperty(-position.left, 'reset', 0); }\n else if (slider.settings.mode === 'vertical') { setPositionProperty(-position.top, 'reset', 0); }\n }\n }\n // declare that the transition is complete\n slider.working = false;\n // onSlideAfter callback\n slider.settings.onSlideAfter.call(el, slider.children.eq(slider.active.index), slider.oldIndex, slider.active.index);\n };\n\n /**\n * Updates the auto controls state (either active, or combined switch)\n *\n * @param state (string) \"start\", \"stop\"\n * - the new state of the auto show\n */\n var updateAutoControls = function(state) {\n // if autoControlsCombine is true, replace the current control with the new state\n if (slider.settings.autoControlsCombine) {\n slider.controls.autoEl.html(slider.controls[state]);\n // if autoControlsCombine is false, apply the \"active\" class to the appropriate control\n } else {\n slider.controls.autoEl.find('a').removeClass('active');\n slider.controls.autoEl.find('a:not(.bx-' + state + ')').addClass('active');\n }\n };\n\n /**\n * Updates the direction controls (checks if either should be hidden)\n */\n var updateDirectionControls = function() {\n if (getPagerQty() === 1) {\n slider.controls.prev.addClass('disabled');\n slider.controls.next.addClass('disabled');\n } else if (!slider.settings.infiniteLoop && slider.settings.hideControlOnEnd) {\n // if first slide\n if (slider.active.index === 0) {\n slider.controls.prev.addClass('disabled');\n slider.controls.next.removeClass('disabled');\n // if last slide\n } else if (slider.active.index === getPagerQty() - 1) {\n slider.controls.next.addClass('disabled');\n slider.controls.prev.removeClass('disabled');\n // if any slide in the middle\n } else {\n slider.controls.prev.removeClass('disabled');\n slider.controls.next.removeClass('disabled');\n }\n }\n };\n\t/* auto start and stop functions */\n\tvar windowFocusHandler = function() { el.startAuto(); };\n\tvar windowBlurHandler = function() { el.stopAuto(); };\n /**\n * Initializes the auto process\n */\n var initAuto = function() {\n // if autoDelay was supplied, launch the auto show using a setTimeout() call\n if (slider.settings.autoDelay > 0) {\n setTimeout(el.startAuto, slider.settings.autoDelay);\n // if autoDelay was not supplied, start the auto show normally\n } else {\n el.startAuto();\n\n //add focus and blur events to ensure its running if timeout gets paused\n $(window).focus(windowFocusHandler).blur(windowBlurHandler);\n }\n // if autoHover is requested\n if (slider.settings.autoHover) {\n // on el hover\n el.hover(function() {\n // if the auto show is currently playing (has an active interval)\n if (slider.interval) {\n // stop the auto show and pass true argument which will prevent control update\n el.stopAuto(true);\n // create a new autoPaused value which will be used by the relative \"mouseout\" event\n slider.autoPaused = true;\n }\n }, function() {\n // if the autoPaused value was created be the prior \"mouseover\" event\n if (slider.autoPaused) {\n // start the auto show and pass true argument which will prevent control update\n el.startAuto(true);\n // reset the autoPaused value\n slider.autoPaused = null;\n }\n });\n }\n };\n\n /**\n * Initializes the ticker process\n */\n var initTicker = function() {\n var startPosition = 0,\n position, transform, value, idx, ratio, property, newSpeed, totalDimens;\n // if autoDirection is \"next\", append a clone of the entire slider\n if (slider.settings.autoDirection === 'next') {\n el.append(slider.children.clone().addClass('bx-clone'));\n // if autoDirection is \"prev\", prepend a clone of the entire slider, and set the left position\n } else {\n el.prepend(slider.children.clone().addClass('bx-clone'));\n position = slider.children.first().position();\n startPosition = slider.settings.mode === 'horizontal' ? -position.left : -position.top;\n }\n setPositionProperty(startPosition, 'reset', 0);\n // do not allow controls in ticker mode\n slider.settings.pager = false;\n slider.settings.controls = false;\n slider.settings.autoControls = false;\n // if autoHover is requested\n if (slider.settings.tickerHover) {\n if (slider.usingCSS) {\n idx = slider.settings.mode === 'horizontal' ? 4 : 5;\n slider.viewport.hover(function() {\n transform = el.css('-' + slider.cssPrefix + '-transform');\n value = parseFloat(transform.split(',')[idx]);\n setPositionProperty(value, 'reset', 0);\n }, function() {\n totalDimens = 0;\n slider.children.each(function(index) {\n totalDimens += slider.settings.mode === 'horizontal' ? $(this).outerWidth(true) : $(this).outerHeight(true);\n });\n // calculate the speed ratio (used to determine the new speed to finish the paused animation)\n ratio = slider.settings.speed / totalDimens;\n // determine which property to use\n property = slider.settings.mode === 'horizontal' ? 'left' : 'top';\n // calculate the new speed\n newSpeed = ratio * (totalDimens - (Math.abs(parseInt(value))));\n tickerLoop(newSpeed);\n });\n } else {\n // on el hover\n slider.viewport.hover(function() {\n el.stop();\n }, function() {\n // calculate the total width of children (used to calculate the speed ratio)\n totalDimens = 0;\n slider.children.each(function(index) {\n totalDimens += slider.settings.mode === 'horizontal' ? $(this).outerWidth(true) : $(this).outerHeight(true);\n });\n // calculate the speed ratio (used to determine the new speed to finish the paused animation)\n ratio = slider.settings.speed / totalDimens;\n // determine which property to use\n property = slider.settings.mode === 'horizontal' ? 'left' : 'top';\n // calculate the new speed\n newSpeed = ratio * (totalDimens - (Math.abs(parseInt(el.css(property)))));\n tickerLoop(newSpeed);\n });\n }\n }\n // start the ticker loop\n tickerLoop();\n };\n\n /**\n * Runs a continuous loop, news ticker-style\n */\n var tickerLoop = function(resumeSpeed) {\n var speed = resumeSpeed ? resumeSpeed : slider.settings.speed,\n position = {left: 0, top: 0},\n reset = {left: 0, top: 0},\n animateProperty, resetValue, params;\n\n // if \"next\" animate left position to last child, then reset left to 0\n if (slider.settings.autoDirection === 'next') {\n position = el.find('.bx-clone').first().position();\n // if \"prev\" animate left position to 0, then reset left to first non-clone child\n } else {\n reset = slider.children.first().position();\n }\n animateProperty = slider.settings.mode === 'horizontal' ? -position.left : -position.top;\n resetValue = slider.settings.mode === 'horizontal' ? -reset.left : -reset.top;\n params = {resetValue: resetValue};\n setPositionProperty(animateProperty, 'ticker', speed, params);\n };\n\n /**\n * Check if el is on screen\n */\n var isOnScreen = function(el) {\n var win = $(window),\n viewport = {\n top: win.scrollTop(),\n left: win.scrollLeft()\n },\n bounds = el.offset();\n\n viewport.right = viewport.left + win.width();\n viewport.bottom = viewport.top + win.height();\n bounds.right = bounds.left + el.outerWidth();\n bounds.bottom = bounds.top + el.outerHeight();\n\n return (!(viewport.right < bounds.left || viewport.left > bounds.right || viewport.bottom < bounds.top || viewport.top > bounds.bottom));\n };\n\n /**\n * Initializes keyboard events\n */\n var keyPress = function(e) {\n var activeElementTag = document.activeElement.tagName.toLowerCase(),\n tagFilters = 'input|textarea',\n p = new RegExp(activeElementTag,['i']),\n result = p.exec(tagFilters);\n\n if (result == null && isOnScreen(el)) {\n if (e.keyCode === 39) {\n clickNextBind(e);\n return false;\n } else if (e.keyCode === 37) {\n clickPrevBind(e);\n return false;\n }\n }\n };\n\n /**\n * Initializes touch events\n */\n var initTouch = function() {\n // initialize object to contain all touch values\n slider.touch = {\n start: {x: 0, y: 0},\n end: {x: 0, y: 0}\n };\n slider.viewport.on('touchstart MSPointerDown pointerdown', onTouchStart);\n\n //for browsers that have implemented pointer events and fire a click after\n //every pointerup regardless of whether pointerup is on same screen location as pointerdown or not\n slider.viewport.on('click', '.bxslider a', function(e) {\n if (slider.viewport.hasClass('click-disabled')) {\n e.preventDefault();\n slider.viewport.removeClass('click-disabled');\n }\n });\n };\n\n /**\n * Event handler for \"touchstart\"\n *\n * @param e (event)\n * - DOM event object\n */\n var onTouchStart = function(e) {\n // watch only for left mouse, touch contact and pen contact\n // touchstart event object doesn`t have button property\n if (e.type !== 'touchstart' && e.button !== 0) {\n return;\n }\n e.preventDefault();\n //disable slider controls while user is interacting with slides to avoid slider freeze that happens on touch devices when a slide swipe happens immediately after interacting with slider controls\n slider.controls.el.addClass('disabled');\n\n if (slider.working) {\n slider.controls.el.removeClass('disabled');\n } else {\n // record the original position when touch starts\n slider.touch.originalPos = el.position();\n var orig = e.originalEvent,\n touchPoints = (typeof orig.changedTouches !== 'undefined') ? orig.changedTouches : [orig];\n\t\tvar chromePointerEvents = typeof PointerEvent === 'function'; \n\t\tif (chromePointerEvents) { \n\t\t\tif (orig.pointerId === undefined) { \n\t\t\t\treturn;\n\t\t\t} \n\t\t}\n // record the starting touch x, y coordinates\n slider.touch.start.x = touchPoints[0].pageX;\n slider.touch.start.y = touchPoints[0].pageY;\n\n if (slider.viewport.get(0).setPointerCapture) {\n slider.pointerId = orig.pointerId;\n slider.viewport.get(0).setPointerCapture(slider.pointerId);\n }\n // store original event data for click fixation\n slider.originalClickTarget = orig.originalTarget || orig.target;\n slider.originalClickButton = orig.button;\n slider.originalClickButtons = orig.buttons;\n slider.originalEventType = orig.type;\n // at this moment we don`t know what it is click or swipe\n slider.hasMove = false;\n // on a \"touchmove\" event to the viewport\n slider.viewport.on('touchmove MSPointerMove pointermove', onTouchMove);\n // on a \"touchend\" event to the viewport\n slider.viewport.on('touchend MSPointerUp pointerup', onTouchEnd);\n slider.viewport.on('MSPointerCancel pointercancel', onPointerCancel);\n }\n };\n\n /**\n * Cancel Pointer for Windows Phone\n *\n * @param e (event)\n * - DOM event object\n */\n var onPointerCancel = function(e) {\n e.preventDefault();\n /* onPointerCancel handler is needed to deal with situations when a touchend\n doesn't fire after a touchstart (this happens on windows phones only) */\n setPositionProperty(slider.touch.originalPos.left, 'reset', 0);\n\n //remove handlers\n slider.controls.el.removeClass('disabled');\n slider.viewport.off('MSPointerCancel pointercancel', onPointerCancel);\n slider.viewport.off('touchmove MSPointerMove pointermove', onTouchMove);\n slider.viewport.off('touchend MSPointerUp pointerup', onTouchEnd);\n if (slider.viewport.get(0).releasePointerCapture) {\n slider.viewport.get(0).releasePointerCapture(slider.pointerId);\n }\n };\n\n /**\n * Event handler for \"touchmove\"\n *\n * @param e (event)\n * - DOM event object\n */\n var onTouchMove = function(e) {\n var orig = e.originalEvent,\n touchPoints = (typeof orig.changedTouches !== 'undefined') ? orig.changedTouches : [orig],\n // if scrolling on y axis, do not prevent default\n xMovement = Math.abs(touchPoints[0].pageX - slider.touch.start.x),\n yMovement = Math.abs(touchPoints[0].pageY - slider.touch.start.y),\n value = 0,\n change = 0;\n // this is swipe\n slider.hasMove = true;\n\n // x axis swipe\n if ((xMovement * 3) > yMovement && slider.settings.preventDefaultSwipeX) {\n e.preventDefault();\n // y axis swipe\n } else if ((yMovement * 3) > xMovement && slider.settings.preventDefaultSwipeY) {\n e.preventDefault();\n }\n if (e.type !== 'touchmove') {\n e.preventDefault();\n }\n\n if (slider.settings.mode !== 'fade' && slider.settings.oneToOneTouch) {\n // if horizontal, drag along x axis\n if (slider.settings.mode === 'horizontal') {\n change = touchPoints[0].pageX - slider.touch.start.x;\n value = slider.touch.originalPos.left + change;\n // if vertical, drag along y axis\n } else {\n change = touchPoints[0].pageY - slider.touch.start.y;\n value = slider.touch.originalPos.top + change;\n }\n setPositionProperty(value, 'reset', 0);\n }\n };\n\n /**\n * Event handler for \"touchend\"\n *\n * @param e (event)\n * - DOM event object\n */\n var onTouchEnd = function(e) {\n e.preventDefault();\n slider.viewport.off('touchmove MSPointerMove pointermove', onTouchMove);\n //enable slider controls as soon as user stops interacing with slides\n slider.controls.el.removeClass('disabled');\n var orig = e.originalEvent,\n touchPoints = (typeof orig.changedTouches !== 'undefined') ? orig.changedTouches : [orig],\n value = 0,\n distance = 0;\n // record end x, y positions\n slider.touch.end.x = touchPoints[0].pageX;\n slider.touch.end.y = touchPoints[0].pageY;\n // if fade mode, check if absolute x distance clears the threshold\n if (slider.settings.mode === 'fade') {\n distance = Math.abs(slider.touch.start.x - slider.touch.end.x);\n if (distance >= slider.settings.swipeThreshold) {\n if (slider.touch.start.x > slider.touch.end.x) {\n el.goToNextSlide();\n } else {\n el.goToPrevSlide();\n }\n el.stopAuto();\n }\n // not fade mode\n } else {\n // calculate distance and el's animate property\n if (slider.settings.mode === 'horizontal') {\n distance = slider.touch.end.x - slider.touch.start.x;\n value = slider.touch.originalPos.left;\n } else {\n distance = slider.touch.end.y - slider.touch.start.y;\n value = slider.touch.originalPos.top;\n }\n // if not infinite loop and first / last slide, do not attempt a slide transition\n if (!slider.settings.infiniteLoop && ((slider.active.index === 0 && distance > 0) || (slider.active.last && distance < 0))) {\n setPositionProperty(value, 'reset', 200);\n } else {\n // check if distance clears threshold\n if (Math.abs(distance) >= slider.settings.swipeThreshold) {\n if (distance < 0) {\n el.goToNextSlide();\n } else {\n el.goToPrevSlide();\n }\n el.stopAuto();\n } else {\n // el.animate(property, 200);\n setPositionProperty(value, 'reset', 200);\n }\n }\n }\n slider.viewport.off('touchend MSPointerUp pointerup', onTouchEnd);\n\n if (slider.viewport.get(0).releasePointerCapture) {\n slider.viewport.get(0).releasePointerCapture(slider.pointerId);\n }\n // if slider had swipe with left mouse, touch contact and pen contact\n if (slider.hasMove === false && (slider.originalClickButton === 0 || slider.originalEventType === 'touchstart')) {\n // trigger click event (fix for Firefox59 and PointerEvent standard compatibility)\n $(slider.originalClickTarget).trigger({\n type: 'click',\n button: slider.originalClickButton,\n buttons: slider.originalClickButtons\n });\n }\n };\n\n /**\n * Window resize event callback\n */\n var resizeWindow = function(e) {\n // don't do anything if slider isn't initialized.\n if (!slider.initialized) { return; }\n // Delay if slider working.\n if (slider.working) {\n window.setTimeout(resizeWindow, 10);\n } else {\n // get the new window dimens (again, thank you IE)\n var windowWidthNew = $(window).width(),\n windowHeightNew = $(window).height();\n // make sure that it is a true window resize\n // *we must check this because our dinosaur friend IE fires a window resize event when certain DOM elements\n // are resized. Can you just die already?*\n if (windowWidth !== windowWidthNew || windowHeight !== windowHeightNew) {\n // set the new window dimens\n windowWidth = windowWidthNew;\n windowHeight = windowHeightNew;\n // update all dynamic elements\n el.redrawSlider();\n // Call user resize handler\n slider.settings.onSliderResize.call(el, slider.active.index);\n }\n }\n };\n\n /**\n * Adds an aria-hidden=true attribute to each element\n *\n * @param startVisibleIndex (int)\n * - the first visible element's index\n */\n var applyAriaHiddenAttributes = function(startVisibleIndex) {\n var numberOfSlidesShowing = getNumberSlidesShowing();\n // only apply attributes if the setting is enabled and not in ticker mode\n if (slider.settings.ariaHidden && !slider.settings.ticker) {\n // add aria-hidden=true to all elements\n slider.children.attr('aria-hidden', 'true');\n // get the visible elements and change to aria-hidden=false\n slider.children.slice(startVisibleIndex, startVisibleIndex + numberOfSlidesShowing).attr('aria-hidden', 'false');\n }\n };\n\n /**\n * Returns index according to present page range\n *\n * @param slideOndex (int)\n * - the desired slide index\n */\n var setSlideIndex = function(slideIndex) {\n if (slideIndex < 0) {\n if (slider.settings.infiniteLoop) {\n return getPagerQty() - 1;\n }else {\n //we don't go to undefined slides\n return slider.active.index;\n }\n // if slideIndex is greater than children length, set active index to 0 (this happens during infinite loop)\n } else if (slideIndex >= getPagerQty()) {\n if (slider.settings.infiniteLoop) {\n return 0;\n } else {\n //we don't move to undefined pages\n return slider.active.index;\n }\n // set active index to requested slide\n } else {\n return slideIndex;\n }\n };\n\n /**\n * ===================================================================================\n * = PUBLIC FUNCTIONS\n * ===================================================================================\n */\n\n /**\n * Performs slide transition to the specified slide\n *\n * @param slideIndex (int)\n * - the destination slide's index (zero-based)\n *\n * @param direction (string)\n * - INTERNAL USE ONLY - the direction of travel (\"prev\" / \"next\")\n */\n el.goToSlide = function(slideIndex, direction) {\n // onSlideBefore, onSlideNext, onSlidePrev callbacks\n // Allow transition canceling based on returned value\n var performTransition = true,\n moveBy = 0,\n position = {left: 0, top: 0},\n lastChild = null,\n lastShowingIndex, eq, value, requestEl;\n // store the old index\n slider.oldIndex = slider.active.index;\n //set new index\n slider.active.index = setSlideIndex(slideIndex);\n\n // if plugin is currently in motion, ignore request\n if (slider.working || slider.active.index === slider.oldIndex) { return; }\n // declare that plugin is in motion\n slider.working = true;\n\n performTransition = slider.settings.onSlideBefore.call(el, slider.children.eq(slider.active.index), slider.oldIndex, slider.active.index);\n\n // If transitions canceled, reset and return\n if (typeof (performTransition) !== 'undefined' && !performTransition) {\n slider.active.index = slider.oldIndex; // restore old index\n slider.working = false; // is not in motion\n return;\n }\n\n if (direction === 'next') {\n // Prevent canceling in future functions or lack there-of from negating previous commands to cancel\n if (!slider.settings.onSlideNext.call(el, slider.children.eq(slider.active.index), slider.oldIndex, slider.active.index)) {\n performTransition = false;\n }\n } else if (direction === 'prev') {\n // Prevent canceling in future functions or lack there-of from negating previous commands to cancel\n if (!slider.settings.onSlidePrev.call(el, slider.children.eq(slider.active.index), slider.oldIndex, slider.active.index)) {\n performTransition = false;\n }\n }\n\n // check if last slide\n slider.active.last = slider.active.index >= getPagerQty() - 1;\n // update the pager with active class\n if (slider.settings.pager || slider.settings.pagerCustom) { updatePagerActive(slider.active.index); }\n // // check for direction control update\n if (slider.settings.controls) { updateDirectionControls(); }\n // if slider is set to mode: \"fade\"\n if (slider.settings.mode === 'fade') {\n // if adaptiveHeight is true and next height is different from current height, animate to the new height\n if (slider.settings.adaptiveHeight && slider.viewport.height() !== getViewportHeight()) {\n slider.viewport.animate({height: getViewportHeight()}, slider.settings.adaptiveHeightSpeed);\n }\n // fade out the visible child and reset its z-index value\n slider.children.filter(':visible').fadeOut(slider.settings.speed).css({zIndex: 0});\n // fade in the newly requested slide\n slider.children.eq(slider.active.index).css('zIndex', slider.settings.slideZIndex + 1).fadeIn(slider.settings.speed, function() {\n $(this).css('zIndex', slider.settings.slideZIndex);\n updateAfterSlideTransition();\n });\n // slider mode is not \"fade\"\n } else {\n // if adaptiveHeight is true and next height is different from current height, animate to the new height\n if (slider.settings.adaptiveHeight && slider.viewport.height() !== getViewportHeight()) {\n slider.viewport.animate({height: getViewportHeight()}, slider.settings.adaptiveHeightSpeed);\n }\n // if carousel and not infinite loop\n if (!slider.settings.infiniteLoop && slider.carousel && slider.active.last) {\n if (slider.settings.mode === 'horizontal') {\n // get the last child position\n lastChild = slider.children.eq(slider.children.length - 1);\n position = lastChild.position();\n // calculate the position of the last slide\n moveBy = slider.viewport.width() - lastChild.outerWidth();\n } else {\n // get last showing index position\n lastShowingIndex = slider.children.length - slider.settings.minSlides;\n position = slider.children.eq(lastShowingIndex).position();\n }\n // horizontal carousel, going previous while on first slide (infiniteLoop mode)\n } else if (slider.carousel && slider.active.last && direction === 'prev') {\n // get the last child position\n eq = slider.settings.moveSlides === 1 ? slider.settings.maxSlides - getMoveBy() : ((getPagerQty() - 1) * getMoveBy()) - (slider.children.length - slider.settings.maxSlides);\n lastChild = el.children('.bx-clone').eq(eq);\n position = lastChild.position();\n // if infinite loop and \"Next\" is clicked on the last slide\n } else if (direction === 'next' && slider.active.index === 0) {\n // get the last clone position\n position = el.find('> .bx-clone').eq(slider.settings.maxSlides).position();\n slider.active.last = false;\n // normal non-zero requests\n } else if (slideIndex >= 0) {\n //parseInt is applied to allow floats for slides/page\n requestEl = slideIndex * parseInt(getMoveBy());\n position = slider.children.eq(requestEl).position();\n }\n\n /* If the position doesn't exist\n * (e.g. if you destroy the slider on a next click),\n * it doesn't throw an error.\n */\n if (typeof (position) !== 'undefined') {\n value = slider.settings.mode === 'horizontal' ? -(position.left - moveBy) : -position.top;\n // plugin values to be animated\n setPositionProperty(value, 'slide', slider.settings.speed);\n }\n slider.working = false;\n }\n if (slider.settings.ariaHidden) { applyAriaHiddenAttributes(slider.active.index * getMoveBy()); }\n };\n\n /**\n * Transitions to the next slide in the show\n */\n el.goToNextSlide = function() {\n // if infiniteLoop is false and last page is showing, disregard call\n if (!slider.settings.infiniteLoop && slider.active.last) { return; }\n\t if (slider.working === true){ return ;}\n var pagerIndex = parseInt(slider.active.index) + 1;\n el.goToSlide(pagerIndex, 'next');\n };\n\n /**\n * Transitions to the prev slide in the show\n */\n el.goToPrevSlide = function() {\n // if infiniteLoop is false and last page is showing, disregard call\n if (!slider.settings.infiniteLoop && slider.active.index === 0) { return; }\n\t if (slider.working === true){ return ;}\n var pagerIndex = parseInt(slider.active.index) - 1;\n el.goToSlide(pagerIndex, 'prev');\n };\n\n /**\n * Starts the auto show\n *\n * @param preventControlUpdate (boolean)\n * - if true, auto controls state will not be updated\n */\n el.startAuto = function(preventControlUpdate) {\n // if an interval already exists, disregard call\n if (slider.interval) { return; }\n // create an interval\n slider.interval = setInterval(function() {\n if (slider.settings.autoDirection === 'next') {\n el.goToNextSlide();\n } else {\n el.goToPrevSlide();\n }\n }, slider.settings.pause);\n\t //allback for when the auto rotate status changes\n\t slider.settings.onAutoChange.call(el, true);\n // if auto controls are displayed and preventControlUpdate is not true\n if (slider.settings.autoControls && preventControlUpdate !== true) { updateAutoControls('stop'); }\n };\n\n /**\n * Stops the auto show\n *\n * @param preventControlUpdate (boolean)\n * - if true, auto controls state will not be updated\n */\n el.stopAuto = function(preventControlUpdate) {\n // if slider is auto paused, just clear that state\n if (slider.autoPaused) slider.autoPaused = false;\n // if no interval exists, disregard call\n if (!slider.interval) { return; }\n // clear the interval\n clearInterval(slider.interval);\n slider.interval = null;\n\t //allback for when the auto rotate status changes\n\t slider.settings.onAutoChange.call(el, false);\n // if auto controls are displayed and preventControlUpdate is not true\n if (slider.settings.autoControls && preventControlUpdate !== true) { updateAutoControls('start'); }\n };\n\n /**\n * Returns current slide index (zero-based)\n */\n el.getCurrentSlide = function() {\n return slider.active.index;\n };\n\n /**\n * Returns current slide element\n */\n el.getCurrentSlideElement = function() {\n return slider.children.eq(slider.active.index);\n };\n\n /**\n * Returns a slide element\n * @param index (int)\n * - The index (zero-based) of the element you want returned.\n */\n el.getSlideElement = function(index) {\n return slider.children.eq(index);\n };\n\n /**\n * Returns number of slides in show\n */\n el.getSlideCount = function() {\n return slider.children.length;\n };\n\n /**\n * Return slider.working variable\n */\n el.isWorking = function() {\n return slider.working;\n };\n\n /**\n * Update all dynamic slider elements\n */\n el.redrawSlider = function() {\n // resize all children in ratio to new screen size\n slider.children.add(el.find('.bx-clone')).outerWidth(getSlideWidth());\n // adjust the height\n slider.viewport.css('height', getViewportHeight());\n // update the slide position\n if (!slider.settings.ticker) { setSlidePosition(); }\n // if active.last was true before the screen resize, we want\n // to keep it last no matter what screen size we end on\n if (slider.active.last) { slider.active.index = getPagerQty() - 1; }\n // if the active index (page) no longer exists due to the resize, simply set the index as last\n if (slider.active.index >= getPagerQty()) { slider.active.last = true; }\n // if a pager is being displayed and a custom pager is not being used, update it\n if (slider.settings.pager && !slider.settings.pagerCustom) {\n populatePager();\n updatePagerActive(slider.active.index);\n }\n if (slider.settings.ariaHidden) { applyAriaHiddenAttributes(slider.active.index * getMoveBy()); }\n };\n\n /**\n * Destroy the current instance of the slider (revert everything back to original state)\n */\n el.destroySlider = function() {\n // don't do anything if slider has already been destroyed\n if (!slider.initialized) { return; }\n slider.initialized = false;\n $('.bx-clone', this).remove();\n slider.children.each(function() {\n if ($(this).data('origStyle') !== undefined) {\n $(this).attr('style', $(this).data('origStyle'));\n } else {\n $(this).removeAttr('style');\n }\n });\n if ($(this).data('origStyle') !== undefined) {\n this.attr('style', $(this).data('origStyle'));\n } else {\n $(this).removeAttr('style');\n }\n $(this).unwrap().unwrap();\n if (slider.controls.el) { slider.controls.el.remove(); }\n if (slider.controls.next) { slider.controls.next.remove(); }\n if (slider.controls.prev) { slider.controls.prev.remove(); }\n if (slider.pagerEl && slider.settings.controls && !slider.settings.pagerCustom) { slider.pagerEl.remove(); }\n $('.bx-caption', this).remove();\n if (slider.controls.autoEl) { slider.controls.autoEl.remove(); }\n clearInterval(slider.interval);\n if (slider.settings.responsive) { $(window).off('resize', resizeWindow); }\n if (slider.settings.keyboardEnabled) { $(document).off('keydown', keyPress); }\n //remove self reference in data\n $(this).removeData('bxSlider');\n\t // remove global window handlers\n\t $(window).off('blur', windowBlurHandler).off('focus', windowFocusHandler);\n };\n\n /**\n * Reload the slider (revert all DOM changes, and re-initialize)\n */\n el.reloadSlider = function(settings) {\n if (settings !== undefined) { options = settings; }\n el.destroySlider();\n init();\n //store reference to self in order to access public functions later\n $(el).data('bxSlider', this);\n };\n\n init();\n\n $(el).data('bxSlider', this);\n\n // returns the current jQuery object\n return this;\n };\n\n})(jQuery);\n"],"sourceRoot":"assets/scripts/"}