{"version":3,"sources":["secondary-nav.js"],"names":["window","document","Math","rAF","requestAnimationFrame","webkitRequestAnimationFrame","mozRequestAnimationFrame","oRequestAnimationFrame","msRequestAnimationFrame","callback","setTimeout","utils","me","_elementStyle","createElement","style","_vendor","vendors","i","l","length","substr","_prefixStyle","charAt","toUpperCase","getTime","Date","now","extend","target","obj","addEvent","el","type","fn","capture","addEventListener","removeEvent","removeEventListener","prefixPointerEvent","pointerEvent","MSPointerEvent","momentum","current","start","time","lowerMargin","wrapperSize","deceleration","destination","duration","distance","speed","abs","undefined","round","_transform","hasTransform","hasPerspective","hasTouch","hasPointer","PointerEvent","hasTransition","isBadAndroid","appVersion","navigator","test","safariVersion","match","parseFloat","transform","transitionTimingFunction","transitionDuration","transitionDelay","transformOrigin","touchAction","hasClass","e","c","RegExp","className","addClass","newclass","split","push","join","removeClass","re","replace","offset","left","offsetLeft","top","offsetTop","offsetParent","preventDefaultException","exceptions","eventType","touchstart","touchmove","touchend","mousedown","mousemove","mouseup","pointerdown","pointermove","pointerup","MSPointerDown","MSPointerMove","MSPointerUp","ease","quadratic","k","circular","sqrt","back","bounce","elastic","pow","sin","f","PI","tap","eventName","ev","createEvent","initEvent","pageX","pageY","dispatchEvent","click","tagName","MouseEvent","view","detail","screenX","screenY","clientX","clientY","ctrlKey","altKey","shiftKey","metaKey","button","relatedTarget","_constructed","getTouchAction","eventPassthrough","addPinch","getRect","SVGElement","rect","getBoundingClientRect","width","height","offsetWidth","offsetHeight","IScroll","options","this","wrapper","querySelector","scroller","children","scrollerStyle","resizeScrollbars","mouseWheelSpeed","snapThreshold","disablePointer","disableTouch","disableMouse","startX","startY","scrollY","directionLockThreshold","bounceTime","bounceEasing","preventDefault","HWCompositing","useTransition","useTransform","bindToWrapper","onmousedown","translateZ","scrollX","freeScroll","resizePolling","position","shrinkScrollbars","invertWheelDirection","probeType","x","y","directionX","directionY","_events","_init","refresh","scrollTo","enable","createDefaultScrollbar","direction","interactive","scrollbar","indicator","cssText","pointerEvents","appendChild","Indicator","wrapperStyle","indicatorStyle","listenX","listenY","resize","defaultScrollbars","shrink","fade","speedRatioX","speedRatioY","sizeRatioX","sizeRatioY","maxPosX","maxPosY","durationProp","self","opacity","prototype","version","_initEvents","scrollbars","indicators","_initIndicators","mouseWheel","_initWheel","snap","_initSnap","keyBindings","_initKeys","destroy","clearTimeout","resizeTimeout","_execEvent","_transitionEnd","isInTransition","_transitionTime","resetPosition","_start","which","enabled","initiated","pos","point","touches","moved","distX","distY","directionLocked","startTime","getComputedPosition","_translate","isAnimating","absStartX","absStartY","pointX","pointY","_move","newX","newY","absDistX","absDistY","deltaX","deltaY","timestamp","endTime","hasHorizontalScroll","hasVerticalScroll","maxScrollX","maxScrollY","_end","changedTouches","momentumX","momentumY","distanceX","distanceY","easing","flick","wrapperWidth","wrapperHeight","max","_nearestSnap","currentPage","snapSpeed","min","_resize","that","disable","clientWidth","clientHeight","scrollerWidth","scrollerHeight","wrapperOffset","on","off","index","indexOf","splice","apply","slice","call","arguments","scrollBy","transitionType","_transitionTimingFunction","_animate","scrollToElement","offsetX","offsetY","nodeType","elRect","wrapperRect","transitionTime","updatePosition","remove","matrix","getComputedStyle","interactiveScrollbars","customStyle","fadeScrollbars","concat","_indicatorsMap","wheelTimeout","_wheel","wheelDeltaX","wheelDeltaY","deltaMode","wheelDelta","goToPage","querySelectorAll","n","cx","cy","m","stepX","snapStepX","stepY","snapStepY","pages","snapThresholdX","snapThresholdY","posX","posY","next","prev","keys","pageUp","pageDown","end","home","up","right","down","charCodeAt","_key","prevTime","keyTime","keyAcceleration","keyCode","destX","destY","easingFn","destTime","step","handleEvent","stopPropagation","fadeTimeout","parentNode","removeChild","lastPointX","lastPointY","_pos","display","bottom","indicatorWidth","minBoundaryX","maxBoundaryX","indicatorHeight","minBoundaryY","maxBoundaryY","ignoreBoundaries","val","hold","visible","delay","bind","module","exports","define","amd","secondaryNav","scrollArea","activeNavTimer","lineElement","enableScroll","lastScrollPosition","lineOverlap","clickedLink","updateNavigation","sectionId","correspondingLink","animatedSelectedLine","forEach","element","classList","currentItem","closest","add","shouldScrollBeEnabled","navItems","lastItem","includeSpaceForLastItem","scrollerElement","navLinks","widthOfLastItem","setScrollerWidth","activeElement","matchMedia","matches","paddingLeftOfActiveLink","parseInt","getPropertyValue","paddingRightOfActiveLink","positionOfActiveItem","widthOfActiveItem","init","headerElement","debouncedScrollevent","debouncedResizeEvent","observer","body","debounce","site","isLockedOut","scrollPosition","pageYOffset","IntersectionObserver","entries","entry","isIntersecting","getAttribute","root","rootMargin","threshold","item","section","observe","currentActiveLink","len","setNavItemsWidth","$"],"mappings":"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","file":"secondary-nav-9556e09d83.min.js","sourcesContent":["\r\n/*! iScroll v5.2.0-snapshot ~ (c) 2008-2017 Matteo Spinelli ~ http://cubiq.org/license */\r\n(function (window, document, Math) {\r\n\tvar rAF = window.requestAnimationFrame ||\r\n\t\twindow.webkitRequestAnimationFrame ||\r\n\t\twindow.mozRequestAnimationFrame ||\r\n\t\twindow.oRequestAnimationFrame ||\r\n\t\twindow.msRequestAnimationFrame ||\r\n\t\tfunction (callback) { window.setTimeout(callback, 1000 / 60); };\r\n\r\n\tvar utils = (function () {\r\n\t\tvar me = {};\r\n\r\n\t\tvar _elementStyle = document.createElement('div').style;\r\n\t\tvar _vendor = (function () {\r\n\t\t\tvar vendors = ['t', 'webkitT', 'MozT', 'msT', 'OT'],\r\n\t\t\t\ttransform,\r\n\t\t\t\ti = 0,\r\n\t\t\t\tl = vendors.length;\r\n\r\n\t\t\tfor (; i < l; i++) {\r\n\t\t\t\ttransform = vendors[i] + 'ransform';\r\n\t\t\t\tif (transform in _elementStyle) return vendors[i].substr(0, vendors[i].length - 1);\r\n\t\t\t}\r\n\r\n\t\t\treturn false;\r\n\t\t})();\r\n\r\n\t\tfunction _prefixStyle(style) {\r\n\t\t\tif (_vendor === false) return false;\r\n\t\t\tif (_vendor === '') return style;\r\n\t\t\treturn _vendor + style.charAt(0).toUpperCase() + style.substr(1);\r\n\t\t}\r\n\r\n\t\tme.getTime = Date.now || function getTime() { return new Date().getTime(); };\r\n\r\n\t\tme.extend = function (target, obj) {\r\n\t\t\tfor (var i in obj) {\r\n\t\t\t\ttarget[i] = obj[i];\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tme.addEvent = function (el, type, fn, capture) {\r\n\t\t\tel.addEventListener(type, fn, !!capture);\r\n\t\t};\r\n\r\n\t\tme.removeEvent = function (el, type, fn, capture) {\r\n\t\t\tel.removeEventListener(type, fn, !!capture);\r\n\t\t};\r\n\r\n\t\tme.prefixPointerEvent = function (pointerEvent) {\r\n\t\t\treturn window.MSPointerEvent ?\r\n\t\t\t\t'MSPointer' + pointerEvent.charAt(7).toUpperCase() + pointerEvent.substr(8) :\r\n\t\t\t\tpointerEvent;\r\n\t\t};\r\n\r\n\t\tme.momentum = function (current, start, time, lowerMargin, wrapperSize, deceleration) {\r\n\t\t\tvar distance = current - start,\r\n\t\t\t\tspeed = Math.abs(distance) / time,\r\n\t\t\t\tdestination,\r\n\t\t\t\tduration;\r\n\r\n\t\t\tdeceleration = deceleration === undefined ? 0.0006 : deceleration;\r\n\r\n\t\t\tdestination = current + (speed * speed) / (2 * deceleration) * (distance < 0 ? -1 : 1);\r\n\t\t\tduration = speed / deceleration;\r\n\r\n\t\t\tif (destination < lowerMargin) {\r\n\t\t\t\tdestination = wrapperSize ? lowerMargin - (wrapperSize / 2.5 * (speed / 8)) : lowerMargin;\r\n\t\t\t\tdistance = Math.abs(destination - current);\r\n\t\t\t\tduration = distance / speed;\r\n\t\t\t} else if (destination > 0) {\r\n\t\t\t\tdestination = wrapperSize ? wrapperSize / 2.5 * (speed / 8) : 0;\r\n\t\t\t\tdistance = Math.abs(current) + destination;\r\n\t\t\t\tduration = distance / speed;\r\n\t\t\t}\r\n\r\n\t\t\treturn {\r\n\t\t\t\tdestination: Math.round(destination),\r\n\t\t\t\tduration: duration\r\n\t\t\t};\r\n\t\t};\r\n\r\n\t\tvar _transform = _prefixStyle('transform');\r\n\r\n\t\tme.extend(me, {\r\n\t\t\thasTransform: _transform !== false,\r\n\t\t\thasPerspective: _prefixStyle('perspective') in _elementStyle,\r\n\t\t\thasTouch: 'ontouchstart' in window,\r\n\t\t\thasPointer: !!(window.PointerEvent || window.MSPointerEvent), // IE10 is prefixed\r\n\t\t\thasTransition: _prefixStyle('transition') in _elementStyle\r\n\t\t});\r\n\r\n\t\t/*\r\n\t\tThis should find all Android browsers lower than build 535.19 (both stock browser and webview)\r\n\t\t- galaxy S2 is ok\r\n\t\t- 2.3.6 : `AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1`\r\n\t\t- 4.0.4 : `AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30`\r\n\t - galaxy S3 is badAndroid (stock brower, webview)\r\n\t\t `AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30`\r\n\t - galaxy S4 is badAndroid (stock brower, webview)\r\n\t\t `AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30`\r\n\t - galaxy S5 is OK\r\n\t\t `AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Mobile Safari/537.36 (Chrome/)`\r\n\t - galaxy S6 is OK\r\n\t\t `AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Mobile Safari/537.36 (Chrome/)`\r\n\t */\r\n\t\tme.isBadAndroid = (function () {\r\n\t\t\tvar appVersion = window.navigator.appVersion;\r\n\t\t\t// Android browser is not a chrome browser.\r\n\t\t\tif (/Android/.test(appVersion) && !(/Chrome\\/\\d/.test(appVersion))) {\r\n\t\t\t\tvar safariVersion = appVersion.match(/Safari\\/(\\d+.\\d)/);\r\n\t\t\t\tif (safariVersion && typeof safariVersion === \"object\" && safariVersion.length >= 2) {\r\n\t\t\t\t\treturn parseFloat(safariVersion[1]) < 535.19;\r\n\t\t\t\t} else {\r\n\t\t\t\t\treturn true;\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t})();\r\n\r\n\t\tme.extend(me.style = {}, {\r\n\t\t\ttransform: _transform,\r\n\t\t\ttransitionTimingFunction: _prefixStyle('transitionTimingFunction'),\r\n\t\t\ttransitionDuration: _prefixStyle('transitionDuration'),\r\n\t\t\ttransitionDelay: _prefixStyle('transitionDelay'),\r\n\t\t\ttransformOrigin: _prefixStyle('transformOrigin'),\r\n\t\t\ttouchAction: _prefixStyle('touchAction')\r\n\t\t});\r\n\r\n\t\tme.hasClass = function (e, c) {\r\n\t\t\tvar re = new RegExp(\"(^|\\\\s)\" + c + \"(\\\\s|$)\");\r\n\t\t\treturn re.test(e.className);\r\n\t\t};\r\n\r\n\t\tme.addClass = function (e, c) {\r\n\t\t\tif (me.hasClass(e, c)) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tvar newclass = e.className.split(' ');\r\n\t\t\tnewclass.push(c);\r\n\t\t\te.className = newclass.join(' ');\r\n\t\t};\r\n\r\n\t\tme.removeClass = function (e, c) {\r\n\t\t\tif (!me.hasClass(e, c)) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tvar re = new RegExp(\"(^|\\\\s)\" + c + \"(\\\\s|$)\", 'g');\r\n\t\t\te.className = e.className.replace(re, ' ');\r\n\t\t};\r\n\r\n\t\tme.offset = function (el) {\r\n\t\t\tvar left = -el.offsetLeft,\r\n\t\t\t\ttop = -el.offsetTop;\r\n\r\n\t\t\t// jshint -W084\r\n\t\t\twhile (el = el.offsetParent) {\r\n\t\t\t\tleft -= el.offsetLeft;\r\n\t\t\t\ttop -= el.offsetTop;\r\n\t\t\t}\r\n\t\t\t// jshint +W084\r\n\r\n\t\t\treturn {\r\n\t\t\t\tleft: left,\r\n\t\t\t\ttop: top\r\n\t\t\t};\r\n\t\t};\r\n\r\n\t\tme.preventDefaultException = function (el, exceptions) {\r\n\t\t\tfor (var i in exceptions) {\r\n\t\t\t\tif (exceptions[i].test(el[i])) {\r\n\t\t\t\t\treturn true;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\treturn false;\r\n\t\t};\r\n\r\n\t\tme.extend(me.eventType = {}, {\r\n\t\t\ttouchstart: 1,\r\n\t\t\ttouchmove: 1,\r\n\t\t\ttouchend: 1,\r\n\r\n\t\t\tmousedown: 2,\r\n\t\t\tmousemove: 2,\r\n\t\t\tmouseup: 2,\r\n\r\n\t\t\tpointerdown: 3,\r\n\t\t\tpointermove: 3,\r\n\t\t\tpointerup: 3,\r\n\r\n\t\t\tMSPointerDown: 3,\r\n\t\t\tMSPointerMove: 3,\r\n\t\t\tMSPointerUp: 3\r\n\t\t});\r\n\r\n\t\tme.extend(me.ease = {}, {\r\n\t\t\tquadratic: {\r\n\t\t\t\tstyle: 'cubic-bezier(0.25, 0.46, 0.45, 0.94)',\r\n\t\t\t\tfn: function (k) {\r\n\t\t\t\t\treturn k * (2 - k);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tcircular: {\r\n\t\t\t\tstyle: 'cubic-bezier(0.1, 0.57, 0.1, 1)',\t// Not properly \"circular\" but this looks better, it should be (0.075, 0.82, 0.165, 1)\r\n\t\t\t\tfn: function (k) {\r\n\t\t\t\t\treturn Math.sqrt(1 - (--k * k));\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tback: {\r\n\t\t\t\tstyle: 'cubic-bezier(0.175, 0.885, 0.32, 1.275)',\r\n\t\t\t\tfn: function (k) {\r\n\t\t\t\t\tvar b = 4;\r\n\t\t\t\t\treturn (k = k - 1) * k * ((b + 1) * k + b) + 1;\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tbounce: {\r\n\t\t\t\tstyle: '',\r\n\t\t\t\tfn: function (k) {\r\n\t\t\t\t\tif ((k /= 1) < (1 / 2.75)) {\r\n\t\t\t\t\t\treturn 7.5625 * k * k;\r\n\t\t\t\t\t} else if (k < (2 / 2.75)) {\r\n\t\t\t\t\t\treturn 7.5625 * (k -= (1.5 / 2.75)) * k + 0.75;\r\n\t\t\t\t\t} else if (k < (2.5 / 2.75)) {\r\n\t\t\t\t\t\treturn 7.5625 * (k -= (2.25 / 2.75)) * k + 0.9375;\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\treturn 7.5625 * (k -= (2.625 / 2.75)) * k + 0.984375;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\telastic: {\r\n\t\t\t\tstyle: '',\r\n\t\t\t\tfn: function (k) {\r\n\t\t\t\t\tvar f = 0.22,\r\n\t\t\t\t\t\te = 0.4;\r\n\r\n\t\t\t\t\tif (k === 0) { return 0; }\r\n\t\t\t\t\tif (k == 1) { return 1; }\r\n\r\n\t\t\t\t\treturn (e * Math.pow(2, - 10 * k) * Math.sin((k - f / 4) * (2 * Math.PI) / f) + 1);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tme.tap = function (e, eventName) {\r\n\t\t\tvar ev = document.createEvent('Event');\r\n\t\t\tev.initEvent(eventName, true, true);\r\n\t\t\tev.pageX = e.pageX;\r\n\t\t\tev.pageY = e.pageY;\r\n\t\t\te.target.dispatchEvent(ev);\r\n\t\t};\r\n\r\n\t\tme.click = function (e) {\r\n\t\t\tvar target = e.target,\r\n\t\t\t\tev;\r\n\r\n\t\t\tif (!(/(SELECT|INPUT|TEXTAREA)/i).test(target.tagName)) {\r\n\t\t\t\t// https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent/initMouseEvent\r\n\t\t\t\t// initMouseEvent is deprecated.\r\n\t\t\t\tev = document.createEvent(window.MouseEvent ? 'MouseEvents' : 'Event');\r\n\t\t\t\tev.initEvent('click', true, true);\r\n\t\t\t\tev.view = e.view || window;\r\n\t\t\t\tev.detail = 1;\r\n\t\t\t\tev.screenX = target.screenX || 0;\r\n\t\t\t\tev.screenY = target.screenY || 0;\r\n\t\t\t\tev.clientX = target.clientX || 0;\r\n\t\t\t\tev.clientY = target.clientY || 0;\r\n\t\t\t\tev.ctrlKey = !!e.ctrlKey;\r\n\t\t\t\tev.altKey = !!e.altKey;\r\n\t\t\t\tev.shiftKey = !!e.shiftKey;\r\n\t\t\t\tev.metaKey = !!e.metaKey;\r\n\t\t\t\tev.button = 0;\r\n\t\t\t\tev.relatedTarget = null;\r\n\t\t\t\tev._constructed = true;\r\n\t\t\t\ttarget.dispatchEvent(ev);\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tme.getTouchAction = function (eventPassthrough, addPinch) {\r\n\t\t\tvar touchAction = 'none';\r\n\t\t\tif (eventPassthrough === 'vertical') {\r\n\t\t\t\ttouchAction = 'pan-y';\r\n\t\t\t} else if (eventPassthrough === 'horizontal') {\r\n\t\t\t\ttouchAction = 'pan-x';\r\n\t\t\t}\r\n\t\t\tif (addPinch && touchAction != 'none') {\r\n\t\t\t\t// add pinch-zoom support if the browser supports it, but if not (eg. Chrome <55) do nothing\r\n\t\t\t\ttouchAction += ' pinch-zoom';\r\n\t\t\t}\r\n\t\t\treturn touchAction;\r\n\t\t};\r\n\r\n\t\tme.getRect = function (el) {\r\n\t\t\tif (el instanceof SVGElement) {\r\n\t\t\t\tvar rect = el.getBoundingClientRect();\r\n\t\t\t\treturn {\r\n\t\t\t\t\ttop: rect.top,\r\n\t\t\t\t\tleft: rect.left,\r\n\t\t\t\t\twidth: rect.width,\r\n\t\t\t\t\theight: rect.height\r\n\t\t\t\t};\r\n\t\t\t} else {\r\n\t\t\t\treturn {\r\n\t\t\t\t\ttop: el.offsetTop,\r\n\t\t\t\t\tleft: el.offsetLeft,\r\n\t\t\t\t\twidth: el.offsetWidth,\r\n\t\t\t\t\theight: el.offsetHeight\r\n\t\t\t\t};\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\treturn me;\r\n\t})();\r\n\tfunction IScroll(el, options) {\r\n\t\tthis.wrapper = typeof el == 'string' ? document.querySelector(el) : el;\r\n\t\tthis.scroller = this.wrapper.children[0];\r\n\t\tthis.scrollerStyle = this.scroller.style;\t\t// cache style for better performance\r\n\r\n\t\tthis.options = {\r\n\r\n\t\t\tresizeScrollbars: true,\r\n\r\n\t\t\tmouseWheelSpeed: 20,\r\n\r\n\t\t\tsnapThreshold: 0.334,\r\n\r\n\t\t\t// INSERT POINT: OPTIONS\r\n\t\t\tdisablePointer: !utils.hasPointer,\r\n\t\t\tdisableTouch: utils.hasPointer || !utils.hasTouch,\r\n\t\t\tdisableMouse: utils.hasPointer || utils.hasTouch,\r\n\t\t\tstartX: 0,\r\n\t\t\tstartY: 0,\r\n\t\t\tscrollY: true,\r\n\t\t\tdirectionLockThreshold: 5,\r\n\t\t\tmomentum: true,\r\n\r\n\t\t\tbounce: true,\r\n\t\t\tbounceTime: 600,\r\n\t\t\tbounceEasing: '',\r\n\r\n\t\t\tpreventDefault: true,\r\n\t\t\tpreventDefaultException: { tagName: /^(INPUT|TEXTAREA|BUTTON|SELECT)$/ },\r\n\r\n\t\t\tHWCompositing: true,\r\n\t\t\tuseTransition: true,\r\n\t\t\tuseTransform: true,\r\n\t\t\tbindToWrapper: typeof window.onmousedown === \"undefined\"\r\n\t\t};\r\n\r\n\t\tfor (var i in options) {\r\n\t\t\tthis.options[i] = options[i];\r\n\t\t}\r\n\r\n\t\t// Normalize options\r\n\t\tthis.translateZ = this.options.HWCompositing && utils.hasPerspective ? ' translateZ(0)' : '';\r\n\r\n\t\tthis.options.useTransition = utils.hasTransition && this.options.useTransition;\r\n\t\tthis.options.useTransform = utils.hasTransform && this.options.useTransform;\r\n\r\n\t\tthis.options.eventPassthrough = this.options.eventPassthrough === true ? 'vertical' : this.options.eventPassthrough;\r\n\t\tthis.options.preventDefault = !this.options.eventPassthrough && this.options.preventDefault;\r\n\r\n\t\t// If you want eventPassthrough I have to lock one of the axes\r\n\t\tthis.options.scrollY = this.options.eventPassthrough == 'vertical' ? false : this.options.scrollY;\r\n\t\tthis.options.scrollX = this.options.eventPassthrough == 'horizontal' ? false : this.options.scrollX;\r\n\r\n\t\t// With eventPassthrough we also need lockDirection mechanism\r\n\t\tthis.options.freeScroll = this.options.freeScroll && !this.options.eventPassthrough;\r\n\t\tthis.options.directionLockThreshold = this.options.eventPassthrough ? 0 : this.options.directionLockThreshold;\r\n\r\n\t\tthis.options.bounceEasing = typeof this.options.bounceEasing == 'string' ? utils.ease[this.options.bounceEasing] || utils.ease.circular : this.options.bounceEasing;\r\n\r\n\t\tthis.options.resizePolling = this.options.resizePolling === undefined ? 60 : this.options.resizePolling;\r\n\r\n\t\tif (this.options.tap === true) {\r\n\t\t\tthis.options.tap = 'tap';\r\n\t\t}\r\n\r\n\t\t// https://github.com/cubiq/iscroll/issues/1029\r\n\t\tif (!this.options.useTransition && !this.options.useTransform) {\r\n\t\t\tif (!(/relative|absolute/i).test(this.scrollerStyle.position)) {\r\n\t\t\t\tthis.scrollerStyle.position = \"relative\";\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (this.options.shrinkScrollbars == 'scale') {\r\n\t\t\tthis.options.useTransition = false;\r\n\t\t}\r\n\r\n\t\tthis.options.invertWheelDirection = this.options.invertWheelDirection ? -1 : 1;\r\n\r\n\t\tif (this.options.probeType == 3) {\r\n\t\t\tthis.options.useTransition = false;\r\n\t\t}\r\n\r\n\t\t// INSERT POINT: NORMALIZATION\r\n\r\n\t\t// Some defaults\r\n\t\tthis.x = 0;\r\n\t\tthis.y = 0;\r\n\t\tthis.directionX = 0;\r\n\t\tthis.directionY = 0;\r\n\t\tthis._events = {};\r\n\r\n\t\t// INSERT POINT: DEFAULTS\r\n\r\n\t\tthis._init();\r\n\t\tthis.refresh();\r\n\r\n\t\tthis.scrollTo(this.options.startX, this.options.startY);\r\n\t\tthis.enable();\r\n\t}\r\n\r\n\tIScroll.prototype = {\r\n\t\tversion: '5.2.0-snapshot',\r\n\r\n\t\t_init: function () {\r\n\t\t\tthis._initEvents();\r\n\r\n\t\t\tif (this.options.scrollbars || this.options.indicators) {\r\n\t\t\t\tthis._initIndicators();\r\n\t\t\t}\r\n\r\n\t\t\tif (this.options.mouseWheel) {\r\n\t\t\t\tthis._initWheel();\r\n\t\t\t}\r\n\r\n\t\t\tif (this.options.snap) {\r\n\t\t\t\tthis._initSnap();\r\n\t\t\t}\r\n\r\n\t\t\tif (this.options.keyBindings) {\r\n\t\t\t\tthis._initKeys();\r\n\t\t\t}\r\n\r\n\t\t\t// INSERT POINT: _init\r\n\r\n\t\t},\r\n\r\n\t\tdestroy: function () {\r\n\t\t\tthis._initEvents(true);\r\n\t\t\tclearTimeout(this.resizeTimeout);\r\n\t\t\tthis.resizeTimeout = null;\r\n\t\t\tthis._execEvent('destroy');\r\n\t\t},\r\n\r\n\t\t_transitionEnd: function (e) {\r\n\t\t\tif (e.target != this.scroller || !this.isInTransition) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tthis._transitionTime();\r\n\t\t\tif (!this.resetPosition(this.options.bounceTime)) {\r\n\t\t\t\tthis.isInTransition = false;\r\n\t\t\t\tthis._execEvent('scrollEnd');\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\t_start: function (e) {\r\n\t\t\t// React to left mouse button only\r\n\t\t\tif (utils.eventType[e.type] != 1) {\r\n\t\t\t\t// for button property\r\n\t\t\t\t// http://unixpapa.com/js/mouse.html\r\n\t\t\t\tvar button;\r\n\t\t\t\tif (!e.which) {\r\n\t\t\t\t\t/* IE case */\r\n\t\t\t\t\tbutton = (e.button < 2) ? 0 :\r\n\t\t\t\t\t\t((e.button == 4) ? 1 : 2);\r\n\t\t\t\t} else {\r\n\t\t\t\t\t/* All others */\r\n\t\t\t\t\tbutton = e.button;\r\n\t\t\t\t}\r\n\t\t\t\tif (button !== 0) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif (!this.enabled || (this.initiated && utils.eventType[e.type] !== this.initiated)) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tif (this.options.preventDefault && !utils.isBadAndroid && !utils.preventDefaultException(e.target, this.options.preventDefaultException)) {\r\n\t\t\t\te.preventDefault();\r\n\t\t\t}\r\n\r\n\t\t\tvar point = e.touches ? e.touches[0] : e,\r\n\t\t\t\tpos;\r\n\r\n\t\t\tthis.initiated = utils.eventType[e.type];\r\n\t\t\tthis.moved = false;\r\n\t\t\tthis.distX = 0;\r\n\t\t\tthis.distY = 0;\r\n\t\t\tthis.directionX = 0;\r\n\t\t\tthis.directionY = 0;\r\n\t\t\tthis.directionLocked = 0;\r\n\r\n\t\t\tthis.startTime = utils.getTime();\r\n\r\n\t\t\tif (this.options.useTransition && this.isInTransition) {\r\n\t\t\t\tthis._transitionTime();\r\n\t\t\t\tthis.isInTransition = false;\r\n\t\t\t\tpos = this.getComputedPosition();\r\n\t\t\t\tthis._translate(Math.round(pos.x), Math.round(pos.y));\r\n\t\t\t\tthis._execEvent('scrollEnd');\r\n\t\t\t} else if (!this.options.useTransition && this.isAnimating) {\r\n\t\t\t\tthis.isAnimating = false;\r\n\t\t\t\tthis._execEvent('scrollEnd');\r\n\t\t\t}\r\n\r\n\t\t\tthis.startX = this.x;\r\n\t\t\tthis.startY = this.y;\r\n\t\t\tthis.absStartX = this.x;\r\n\t\t\tthis.absStartY = this.y;\r\n\t\t\tthis.pointX = point.pageX;\r\n\t\t\tthis.pointY = point.pageY;\r\n\r\n\t\t\tthis._execEvent('beforeScrollStart');\r\n\t\t},\r\n\r\n\t\t_move: function (e) {\r\n\t\t\tif (!this.enabled || utils.eventType[e.type] !== this.initiated) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tif (this.options.preventDefault) {\t// increases performance on Android? TODO: check!\r\n\t\t\t\te.preventDefault();\r\n\t\t\t}\r\n\r\n\t\t\tvar point = e.touches ? e.touches[0] : e,\r\n\t\t\t\tdeltaX = point.pageX - this.pointX,\r\n\t\t\t\tdeltaY = point.pageY - this.pointY,\r\n\t\t\t\ttimestamp = utils.getTime(),\r\n\t\t\t\tnewX, newY,\r\n\t\t\t\tabsDistX, absDistY;\r\n\r\n\t\t\tthis.pointX = point.pageX;\r\n\t\t\tthis.pointY = point.pageY;\r\n\r\n\t\t\tthis.distX += deltaX;\r\n\t\t\tthis.distY += deltaY;\r\n\t\t\tabsDistX = Math.abs(this.distX);\r\n\t\t\tabsDistY = Math.abs(this.distY);\r\n\r\n\t\t\t// We need to move at least 10 pixels for the scrolling to initiate\r\n\t\t\tif (timestamp - this.endTime > 300 && (absDistX < 10 && absDistY < 10)) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\t// If you are scrolling in one direction lock the other\r\n\t\t\tif (!this.directionLocked && !this.options.freeScroll) {\r\n\t\t\t\tif (absDistX > absDistY + this.options.directionLockThreshold) {\r\n\t\t\t\t\tthis.directionLocked = 'h';\t\t// lock horizontally\r\n\t\t\t\t} else if (absDistY >= absDistX + this.options.directionLockThreshold) {\r\n\t\t\t\t\tthis.directionLocked = 'v';\t\t// lock vertically\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis.directionLocked = 'n';\t\t// no lock\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif (this.directionLocked == 'h') {\r\n\t\t\t\tif (this.options.eventPassthrough == 'vertical') {\r\n\t\t\t\t\te.preventDefault();\r\n\t\t\t\t} else if (this.options.eventPassthrough == 'horizontal') {\r\n\t\t\t\t\tthis.initiated = false;\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tdeltaY = 0;\r\n\t\t\t} else if (this.directionLocked == 'v') {\r\n\t\t\t\tif (this.options.eventPassthrough == 'horizontal') {\r\n\t\t\t\t\te.preventDefault();\r\n\t\t\t\t} else if (this.options.eventPassthrough == 'vertical') {\r\n\t\t\t\t\tthis.initiated = false;\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tdeltaX = 0;\r\n\t\t\t}\r\n\r\n\t\t\tdeltaX = this.hasHorizontalScroll ? deltaX : 0;\r\n\t\t\tdeltaY = this.hasVerticalScroll ? deltaY : 0;\r\n\r\n\t\t\tnewX = this.x + deltaX;\r\n\t\t\tnewY = this.y + deltaY;\r\n\r\n\t\t\t// Slow down if outside of the boundaries\r\n\t\t\tif (newX > 0 || newX < this.maxScrollX) {\r\n\t\t\t\tnewX = this.options.bounce ? this.x + deltaX / 3 : newX > 0 ? 0 : this.maxScrollX;\r\n\t\t\t}\r\n\t\t\tif (newY > 0 || newY < this.maxScrollY) {\r\n\t\t\t\tnewY = this.options.bounce ? this.y + deltaY / 3 : newY > 0 ? 0 : this.maxScrollY;\r\n\t\t\t}\r\n\r\n\t\t\tthis.directionX = deltaX > 0 ? -1 : deltaX < 0 ? 1 : 0;\r\n\t\t\tthis.directionY = deltaY > 0 ? -1 : deltaY < 0 ? 1 : 0;\r\n\r\n\t\t\tif (!this.moved) {\r\n\t\t\t\tthis._execEvent('scrollStart');\r\n\t\t\t}\r\n\r\n\t\t\tthis.moved = true;\r\n\r\n\t\t\tthis._translate(newX, newY);\r\n\r\n\t\t\t/* REPLACE START: _move */\r\n\t\t\tif (timestamp - this.startTime > 300) {\r\n\t\t\t\tthis.startTime = timestamp;\r\n\t\t\t\tthis.startX = this.x;\r\n\t\t\t\tthis.startY = this.y;\r\n\r\n\t\t\t\tif (this.options.probeType == 1) {\r\n\t\t\t\t\tthis._execEvent('scroll');\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif (this.options.probeType > 1) {\r\n\t\t\t\tthis._execEvent('scroll');\r\n\t\t\t}\r\n\t\t\t/* REPLACE END: _move */\r\n\r\n\t\t},\r\n\r\n\t\t_end: function (e) {\r\n\t\t\tif (!this.enabled || utils.eventType[e.type] !== this.initiated) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tif (this.options.preventDefault && !utils.preventDefaultException(e.target, this.options.preventDefaultException)) {\r\n\t\t\t\te.preventDefault();\r\n\t\t\t}\r\n\r\n\t\t\tvar point = e.changedTouches ? e.changedTouches[0] : e,\r\n\t\t\t\tmomentumX,\r\n\t\t\t\tmomentumY,\r\n\t\t\t\tduration = utils.getTime() - this.startTime,\r\n\t\t\t\tnewX = Math.round(this.x),\r\n\t\t\t\tnewY = Math.round(this.y),\r\n\t\t\t\tdistanceX = Math.abs(newX - this.startX),\r\n\t\t\t\tdistanceY = Math.abs(newY - this.startY),\r\n\t\t\t\ttime = 0,\r\n\t\t\t\teasing = '';\r\n\r\n\t\t\tthis.isInTransition = 0;\r\n\t\t\tthis.initiated = 0;\r\n\t\t\tthis.endTime = utils.getTime();\r\n\r\n\t\t\t// reset if we are outside of the boundaries\r\n\t\t\tif (this.resetPosition(this.options.bounceTime)) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tthis.scrollTo(newX, newY);\t// ensures that the last position is rounded\r\n\r\n\t\t\t// we scrolled less than 10 pixels\r\n\t\t\tif (!this.moved) {\r\n\t\t\t\tif (this.options.tap) {\r\n\t\t\t\t\tutils.tap(e, this.options.tap);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (this.options.click) {\r\n\t\t\t\t\tutils.click(e);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis._execEvent('scrollCancel');\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tif (this._events.flick && duration < 200 && distanceX < 100 && distanceY < 100) {\r\n\t\t\t\tthis._execEvent('flick');\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\t// start momentum animation if needed\r\n\t\t\tif (this.options.momentum && duration < 300) {\r\n\t\t\t\tmomentumX = this.hasHorizontalScroll ? utils.momentum(this.x, this.startX, duration, this.maxScrollX, this.options.bounce ? this.wrapperWidth : 0, this.options.deceleration) : { destination: newX, duration: 0 };\r\n\t\t\t\tmomentumY = this.hasVerticalScroll ? utils.momentum(this.y, this.startY, duration, this.maxScrollY, this.options.bounce ? this.wrapperHeight : 0, this.options.deceleration) : { destination: newY, duration: 0 };\r\n\t\t\t\tnewX = momentumX.destination;\r\n\t\t\t\tnewY = momentumY.destination;\r\n\t\t\t\ttime = Math.max(momentumX.duration, momentumY.duration);\r\n\t\t\t\tthis.isInTransition = 1;\r\n\t\t\t}\r\n\r\n\r\n\t\t\tif (this.options.snap) {\r\n\t\t\t\tvar snap = this._nearestSnap(newX, newY);\r\n\t\t\t\tthis.currentPage = snap;\r\n\t\t\t\ttime = this.options.snapSpeed || Math.max(\r\n\t\t\t\t\tMath.max(\r\n\t\t\t\t\t\tMath.min(Math.abs(newX - snap.x), 1000),\r\n\t\t\t\t\t\tMath.min(Math.abs(newY - snap.y), 1000)\r\n\t\t\t\t\t), 300);\r\n\t\t\t\tnewX = snap.x;\r\n\t\t\t\tnewY = snap.y;\r\n\r\n\t\t\t\tthis.directionX = 0;\r\n\t\t\t\tthis.directionY = 0;\r\n\t\t\t\teasing = this.options.bounceEasing;\r\n\t\t\t}\r\n\r\n\t\t\t// INSERT POINT: _end\r\n\r\n\t\t\tif (newX != this.x || newY != this.y) {\r\n\t\t\t\t// change easing function when scroller goes out of the boundaries\r\n\t\t\t\tif (newX > 0 || newX < this.maxScrollX || newY > 0 || newY < this.maxScrollY) {\r\n\t\t\t\t\teasing = utils.ease.quadratic;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.scrollTo(newX, newY, time, easing);\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tthis._execEvent('scrollEnd');\r\n\t\t},\r\n\r\n\t\t_resize: function () {\r\n\t\t\tvar that = this;\r\n\r\n\t\t\tclearTimeout(this.resizeTimeout);\r\n\r\n\t\t\tthis.resizeTimeout = setTimeout(function () {\r\n\t\t\t\tthat.refresh();\r\n\t\t\t}, this.options.resizePolling);\r\n\t\t},\r\n\r\n\t\tresetPosition: function (time) {\r\n\t\t\tvar x = this.x,\r\n\t\t\t\ty = this.y;\r\n\r\n\t\t\ttime = time || 0;\r\n\r\n\t\t\tif (!this.hasHorizontalScroll || this.x > 0) {\r\n\t\t\t\tx = 0;\r\n\t\t\t} else if (this.x < this.maxScrollX) {\r\n\t\t\t\tx = this.maxScrollX;\r\n\t\t\t}\r\n\r\n\t\t\tif (!this.hasVerticalScroll || this.y > 0) {\r\n\t\t\t\ty = 0;\r\n\t\t\t} else if (this.y < this.maxScrollY) {\r\n\t\t\t\ty = this.maxScrollY;\r\n\t\t\t}\r\n\r\n\t\t\tif (x == this.x && y == this.y) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\r\n\t\t\tthis.scrollTo(x, y, time, this.options.bounceEasing);\r\n\r\n\t\t\treturn true;\r\n\t\t},\r\n\r\n\t\tdisable: function () {\r\n\t\t\tthis.enabled = false;\r\n\t\t},\r\n\r\n\t\tenable: function () {\r\n\t\t\tthis.enabled = true;\r\n\t\t},\r\n\r\n\t\trefresh: function () {\r\n\t\t\tutils.getRect(this.wrapper);\t\t// Force reflow\r\n\r\n\t\t\tthis.wrapperWidth = this.wrapper.clientWidth;\r\n\t\t\tthis.wrapperHeight = this.wrapper.clientHeight;\r\n\r\n\t\t\tvar rect = utils.getRect(this.scroller);\r\n\t\t\t/* REPLACE START: refresh */\r\n\r\n\t\t\tthis.scrollerWidth = rect.width;\r\n\t\t\tthis.scrollerHeight = rect.height;\r\n\r\n\t\t\tthis.maxScrollX = this.wrapperWidth - this.scrollerWidth;\r\n\t\t\tthis.maxScrollY = this.wrapperHeight - this.scrollerHeight;\r\n\r\n\t\t\t/* REPLACE END: refresh */\r\n\r\n\t\t\tthis.hasHorizontalScroll = this.options.scrollX && this.maxScrollX < 0;\r\n\t\t\tthis.hasVerticalScroll = this.options.scrollY && this.maxScrollY < 0;\r\n\r\n\t\t\tif (!this.hasHorizontalScroll) {\r\n\t\t\t\tthis.maxScrollX = 0;\r\n\t\t\t\tthis.scrollerWidth = this.wrapperWidth;\r\n\t\t\t}\r\n\r\n\t\t\tif (!this.hasVerticalScroll) {\r\n\t\t\t\tthis.maxScrollY = 0;\r\n\t\t\t\tthis.scrollerHeight = this.wrapperHeight;\r\n\t\t\t}\r\n\r\n\t\t\tthis.endTime = 0;\r\n\t\t\tthis.directionX = 0;\r\n\t\t\tthis.directionY = 0;\r\n\r\n\t\t\tif (utils.hasPointer && !this.options.disablePointer) {\r\n\t\t\t\t// The wrapper should have `touchAction` property for using pointerEvent.\r\n\t\t\t\tthis.wrapper.style[utils.style.touchAction] = utils.getTouchAction(this.options.eventPassthrough, true);\r\n\r\n\t\t\t\t// case. not support 'pinch-zoom'\r\n\t\t\t\t// https://github.com/cubiq/iscroll/issues/1118#issuecomment-270057583\r\n\t\t\t\tif (!this.wrapper.style[utils.style.touchAction]) {\r\n\t\t\t\t\tthis.wrapper.style[utils.style.touchAction] = utils.getTouchAction(this.options.eventPassthrough, false);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tthis.wrapperOffset = utils.offset(this.wrapper);\r\n\r\n\t\t\tthis._execEvent('refresh');\r\n\r\n\t\t\tthis.resetPosition();\r\n\r\n\t\t\t// INSERT POINT: _refresh\r\n\r\n\t\t},\r\n\r\n\t\ton: function (type, fn) {\r\n\t\t\tif (!this._events[type]) {\r\n\t\t\t\tthis._events[type] = [];\r\n\t\t\t}\r\n\r\n\t\t\tthis._events[type].push(fn);\r\n\t\t},\r\n\r\n\t\toff: function (type, fn) {\r\n\t\t\tif (!this._events[type]) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tvar index = this._events[type].indexOf(fn);\r\n\r\n\t\t\tif (index > -1) {\r\n\t\t\t\tthis._events[type].splice(index, 1);\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\t_execEvent: function (type) {\r\n\t\t\tif (!this._events[type]) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tvar i = 0,\r\n\t\t\t\tl = this._events[type].length;\r\n\r\n\t\t\tif (!l) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tfor (; i < l; i++) {\r\n\t\t\t\tthis._events[type][i].apply(this, [].slice.call(arguments, 1));\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tscrollBy: function (x, y, time, easing) {\r\n\t\t\tx = this.x + x;\r\n\t\t\ty = this.y + y;\r\n\t\t\ttime = time || 0;\r\n\r\n\t\t\tthis.scrollTo(x, y, time, easing);\r\n\t\t},\r\n\r\n\t\tscrollTo: function (x, y, time, easing) {\r\n\t\t\teasing = easing || utils.ease.circular;\r\n\r\n\t\t\tthis.isInTransition = this.options.useTransition && time > 0;\r\n\t\t\tvar transitionType = this.options.useTransition && easing.style;\r\n\t\t\tif (!time || transitionType) {\r\n\t\t\t\tif (transitionType) {\r\n\t\t\t\t\tthis._transitionTimingFunction(easing.style);\r\n\t\t\t\t\tthis._transitionTime(time);\r\n\t\t\t\t}\r\n\t\t\t\tthis._translate(x, y);\r\n\t\t\t} else {\r\n\t\t\t\tthis._animate(x, y, time, easing.fn);\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tscrollToElement: function (el, time, offsetX, offsetY, easing) {\r\n\t\t\tel = el.nodeType ? el : this.scroller.querySelector(el);\r\n\r\n\t\t\tif (!el) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tvar pos = utils.offset(el);\r\n\r\n\t\t\tpos.left -= this.wrapperOffset.left;\r\n\t\t\tpos.top -= this.wrapperOffset.top;\r\n\r\n\t\t\t// if offsetX/Y are true we center the element to the screen\r\n\t\t\tvar elRect = utils.getRect(el);\r\n\t\t\tvar wrapperRect = utils.getRect(this.wrapper);\r\n\t\t\tif (offsetX === true) {\r\n\t\t\t\toffsetX = Math.round(elRect.width / 2 - wrapperRect.width / 2);\r\n\t\t\t}\r\n\t\t\tif (offsetY === true) {\r\n\t\t\t\toffsetY = Math.round(elRect.height / 2 - wrapperRect.height / 2);\r\n\t\t\t}\r\n\r\n\t\t\tpos.left -= offsetX || 0;\r\n\t\t\tpos.top -= offsetY || 0;\r\n\r\n\t\t\tpos.left = pos.left > 0 ? 0 : pos.left < this.maxScrollX ? this.maxScrollX : pos.left;\r\n\t\t\tpos.top = pos.top > 0 ? 0 : pos.top < this.maxScrollY ? this.maxScrollY : pos.top;\r\n\r\n\t\t\ttime = time === undefined || time === null || time === 'auto' ? Math.max(Math.abs(this.x - pos.left), Math.abs(this.y - pos.top)) : time;\r\n\r\n\t\t\tthis.scrollTo(pos.left, pos.top, time, easing);\r\n\t\t},\r\n\r\n\t\t_transitionTime: function (time) {\r\n\t\t\tif (!this.options.useTransition) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\ttime = time || 0;\r\n\t\t\tvar durationProp = utils.style.transitionDuration;\r\n\t\t\tif (!durationProp) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tthis.scrollerStyle[durationProp] = time + 'ms';\r\n\r\n\t\t\tif (!time && utils.isBadAndroid) {\r\n\t\t\t\tthis.scrollerStyle[durationProp] = '0.0001ms';\r\n\t\t\t\t// remove 0.0001ms\r\n\t\t\t\tvar self = this;\r\n\t\t\t\trAF(function () {\r\n\t\t\t\t\tif (self.scrollerStyle[durationProp] === '0.0001ms') {\r\n\t\t\t\t\t\tself.scrollerStyle[durationProp] = '0s';\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\r\n\t\t\tif (this.indicators) {\r\n\t\t\t\tfor (var i = this.indicators.length; i--;) {\r\n\t\t\t\t\tthis.indicators[i].transitionTime(time);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\r\n\t\t\t// INSERT POINT: _transitionTime\r\n\r\n\t\t},\r\n\r\n\t\t_transitionTimingFunction: function (easing) {\r\n\t\t\tthis.scrollerStyle[utils.style.transitionTimingFunction] = easing;\r\n\r\n\r\n\t\t\tif (this.indicators) {\r\n\t\t\t\tfor (var i = this.indicators.length; i--;) {\r\n\t\t\t\t\tthis.indicators[i].transitionTimingFunction(easing);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\r\n\t\t\t// INSERT POINT: _transitionTimingFunction\r\n\r\n\t\t},\r\n\r\n\t\t_translate: function (x, y) {\r\n\t\t\tif (this.options.useTransform) {\r\n\r\n\t\t\t\t/* REPLACE START: _translate */\r\n\r\n\t\t\t\tthis.scrollerStyle[utils.style.transform] = 'translate(' + x + 'px,' + y + 'px)' + this.translateZ;\r\n\r\n\t\t\t\t/* REPLACE END: _translate */\r\n\r\n\t\t\t} else {\r\n\t\t\t\tx = Math.round(x);\r\n\t\t\t\ty = Math.round(y);\r\n\t\t\t\tthis.scrollerStyle.left = x + 'px';\r\n\t\t\t\tthis.scrollerStyle.top = y + 'px';\r\n\t\t\t}\r\n\r\n\t\t\tthis.x = x;\r\n\t\t\tthis.y = y;\r\n\r\n\r\n\t\t\tif (this.indicators) {\r\n\t\t\t\tfor (var i = this.indicators.length; i--;) {\r\n\t\t\t\t\tthis.indicators[i].updatePosition();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\r\n\t\t\t// INSERT POINT: _translate\r\n\r\n\t\t},\r\n\r\n\t\t_initEvents: function (remove) {\r\n\t\t\tvar eventType = remove ? utils.removeEvent : utils.addEvent,\r\n\t\t\t\ttarget = this.options.bindToWrapper ? this.wrapper : window;\r\n\r\n\t\t\teventType(window, 'orientationchange', this);\r\n\t\t\teventType(window, 'resize', this);\r\n\r\n\t\t\tif (this.options.click) {\r\n\t\t\t\teventType(this.wrapper, 'click', this, true);\r\n\t\t\t}\r\n\r\n\t\t\tif (!this.options.disableMouse) {\r\n\t\t\t\teventType(this.wrapper, 'mousedown', this);\r\n\t\t\t\teventType(target, 'mousemove', this);\r\n\t\t\t\teventType(target, 'mousecancel', this);\r\n\t\t\t\teventType(target, 'mouseup', this);\r\n\t\t\t}\r\n\r\n\t\t\tif (utils.hasPointer && !this.options.disablePointer) {\r\n\t\t\t\teventType(this.wrapper, utils.prefixPointerEvent('pointerdown'), this);\r\n\t\t\t\teventType(target, utils.prefixPointerEvent('pointermove'), this);\r\n\t\t\t\teventType(target, utils.prefixPointerEvent('pointercancel'), this);\r\n\t\t\t\teventType(target, utils.prefixPointerEvent('pointerup'), this);\r\n\t\t\t}\r\n\r\n\t\t\tif (utils.hasTouch && !this.options.disableTouch) {\r\n\t\t\t\teventType(this.wrapper, 'touchstart', this);\r\n\t\t\t\teventType(target, 'touchmove', this);\r\n\t\t\t\teventType(target, 'touchcancel', this);\r\n\t\t\t\teventType(target, 'touchend', this);\r\n\t\t\t}\r\n\r\n\t\t\teventType(this.scroller, 'transitionend', this);\r\n\t\t\teventType(this.scroller, 'webkitTransitionEnd', this);\r\n\t\t\teventType(this.scroller, 'oTransitionEnd', this);\r\n\t\t\teventType(this.scroller, 'MSTransitionEnd', this);\r\n\t\t},\r\n\r\n\t\tgetComputedPosition: function () {\r\n\t\t\tvar matrix = window.getComputedStyle(this.scroller, null),\r\n\t\t\t\tx, y;\r\n\r\n\t\t\tif (this.options.useTransform) {\r\n\t\t\t\tmatrix = matrix[utils.style.transform].split(')')[0].split(', ');\r\n\t\t\t\tx = +(matrix[12] || matrix[4]);\r\n\t\t\t\ty = +(matrix[13] || matrix[5]);\r\n\t\t\t} else {\r\n\t\t\t\tx = +matrix.left.replace(/[^-\\d.]/g, '');\r\n\t\t\t\ty = +matrix.top.replace(/[^-\\d.]/g, '');\r\n\t\t\t}\r\n\r\n\t\t\treturn { x: x, y: y };\r\n\t\t},\r\n\t\t_initIndicators: function () {\r\n\t\t\tvar interactive = this.options.interactiveScrollbars,\r\n\t\t\t\tcustomStyle = typeof this.options.scrollbars != 'string',\r\n\t\t\t\tindicators = [],\r\n\t\t\t\tindicator;\r\n\r\n\t\t\tvar that = this;\r\n\r\n\t\t\tthis.indicators = [];\r\n\r\n\t\t\tif (this.options.scrollbars) {\r\n\t\t\t\t// Vertical scrollbar\r\n\t\t\t\tif (this.options.scrollY) {\r\n\t\t\t\t\tindicator = {\r\n\t\t\t\t\t\tel: createDefaultScrollbar('v', interactive, this.options.scrollbars),\r\n\t\t\t\t\t\tinteractive: interactive,\r\n\t\t\t\t\t\tdefaultScrollbars: true,\r\n\t\t\t\t\t\tcustomStyle: customStyle,\r\n\t\t\t\t\t\tresize: this.options.resizeScrollbars,\r\n\t\t\t\t\t\tshrink: this.options.shrinkScrollbars,\r\n\t\t\t\t\t\tfade: this.options.fadeScrollbars,\r\n\t\t\t\t\t\tlistenX: false\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\t\tthis.wrapper.appendChild(indicator.el);\r\n\t\t\t\t\tindicators.push(indicator);\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// Horizontal scrollbar\r\n\t\t\t\tif (this.options.scrollX) {\r\n\t\t\t\t\tindicator = {\r\n\t\t\t\t\t\tel: createDefaultScrollbar('h', interactive, this.options.scrollbars),\r\n\t\t\t\t\t\tinteractive: interactive,\r\n\t\t\t\t\t\tdefaultScrollbars: true,\r\n\t\t\t\t\t\tcustomStyle: customStyle,\r\n\t\t\t\t\t\tresize: this.options.resizeScrollbars,\r\n\t\t\t\t\t\tshrink: this.options.shrinkScrollbars,\r\n\t\t\t\t\t\tfade: this.options.fadeScrollbars,\r\n\t\t\t\t\t\tlistenY: false\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\t\tthis.wrapper.appendChild(indicator.el);\r\n\t\t\t\t\tindicators.push(indicator);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif (this.options.indicators) {\r\n\t\t\t\t// TODO: check concat compatibility\r\n\t\t\t\tindicators = indicators.concat(this.options.indicators);\r\n\t\t\t}\r\n\r\n\t\t\tfor (var i = indicators.length; i--;) {\r\n\t\t\t\tthis.indicators.push(new Indicator(this, indicators[i]));\r\n\t\t\t}\r\n\r\n\t\t\t// TODO: check if we can use array.map (wide compatibility and performance issues)\r\n\t\t\tfunction _indicatorsMap(fn) {\r\n\t\t\t\tif (that.indicators) {\r\n\t\t\t\t\tfor (var i = that.indicators.length; i--;) {\r\n\t\t\t\t\t\tfn.call(that.indicators[i]);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif (this.options.fadeScrollbars) {\r\n\t\t\t\tthis.on('scrollEnd', function () {\r\n\t\t\t\t\t_indicatorsMap(function () {\r\n\t\t\t\t\t\tthis.fade();\r\n\t\t\t\t\t});\r\n\t\t\t\t});\r\n\r\n\t\t\t\tthis.on('scrollCancel', function () {\r\n\t\t\t\t\t_indicatorsMap(function () {\r\n\t\t\t\t\t\tthis.fade();\r\n\t\t\t\t\t});\r\n\t\t\t\t});\r\n\r\n\t\t\t\tthis.on('scrollStart', function () {\r\n\t\t\t\t\t_indicatorsMap(function () {\r\n\t\t\t\t\t\tthis.fade(1);\r\n\t\t\t\t\t});\r\n\t\t\t\t});\r\n\r\n\t\t\t\tthis.on('beforeScrollStart', function () {\r\n\t\t\t\t\t_indicatorsMap(function () {\r\n\t\t\t\t\t\tthis.fade(1, true);\r\n\t\t\t\t\t});\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\r\n\t\t\tthis.on('refresh', function () {\r\n\t\t\t\t_indicatorsMap(function () {\r\n\t\t\t\t\tthis.refresh();\r\n\t\t\t\t});\r\n\t\t\t});\r\n\r\n\t\t\tthis.on('destroy', function () {\r\n\t\t\t\t_indicatorsMap(function () {\r\n\t\t\t\t\tthis.destroy();\r\n\t\t\t\t});\r\n\r\n\t\t\t\tdelete this.indicators;\r\n\t\t\t});\r\n\t\t},\r\n\r\n\t\t_initWheel: function () {\r\n\t\t\tutils.addEvent(this.wrapper, 'wheel', this);\r\n\t\t\tutils.addEvent(this.wrapper, 'mousewheel', this);\r\n\t\t\tutils.addEvent(this.wrapper, 'DOMMouseScroll', this);\r\n\r\n\t\t\tthis.on('destroy', function () {\r\n\t\t\t\tclearTimeout(this.wheelTimeout);\r\n\t\t\t\tthis.wheelTimeout = null;\r\n\t\t\t\tutils.removeEvent(this.wrapper, 'wheel', this);\r\n\t\t\t\tutils.removeEvent(this.wrapper, 'mousewheel', this);\r\n\t\t\t\tutils.removeEvent(this.wrapper, 'DOMMouseScroll', this);\r\n\t\t\t});\r\n\t\t},\r\n\r\n\t\t_wheel: function (e) {\r\n\t\t\tif (!this.enabled) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\te.preventDefault();\r\n\r\n\t\t\tvar wheelDeltaX, wheelDeltaY,\r\n\t\t\t\tnewX, newY,\r\n\t\t\t\tthat = this;\r\n\r\n\t\t\tif (this.wheelTimeout === undefined) {\r\n\t\t\t\tthat._execEvent('scrollStart');\r\n\t\t\t}\r\n\r\n\t\t\t// Execute the scrollEnd event after 400ms the wheel stopped scrolling\r\n\t\t\tclearTimeout(this.wheelTimeout);\r\n\t\t\tthis.wheelTimeout = setTimeout(function () {\r\n\t\t\t\tif (!that.options.snap) {\r\n\t\t\t\t\tthat._execEvent('scrollEnd');\r\n\t\t\t\t}\r\n\t\t\t\tthat.wheelTimeout = undefined;\r\n\t\t\t}, 400);\r\n\r\n\t\t\tif ('deltaX' in e) {\r\n\t\t\t\tif (e.deltaMode === 1) {\r\n\t\t\t\t\twheelDeltaX = -e.deltaX * this.options.mouseWheelSpeed;\r\n\t\t\t\t\twheelDeltaY = -e.deltaY * this.options.mouseWheelSpeed;\r\n\t\t\t\t} else {\r\n\t\t\t\t\twheelDeltaX = -e.deltaX;\r\n\t\t\t\t\twheelDeltaY = -e.deltaY;\r\n\t\t\t\t}\r\n\t\t\t} else if ('wheelDeltaX' in e) {\r\n\t\t\t\twheelDeltaX = e.wheelDeltaX / 120 * this.options.mouseWheelSpeed;\r\n\t\t\t\twheelDeltaY = e.wheelDeltaY / 120 * this.options.mouseWheelSpeed;\r\n\t\t\t} else if ('wheelDelta' in e) {\r\n\t\t\t\twheelDeltaX = wheelDeltaY = e.wheelDelta / 120 * this.options.mouseWheelSpeed;\r\n\t\t\t} else if ('detail' in e) {\r\n\t\t\t\twheelDeltaX = wheelDeltaY = -e.detail / 3 * this.options.mouseWheelSpeed;\r\n\t\t\t} else {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\twheelDeltaX *= this.options.invertWheelDirection;\r\n\t\t\twheelDeltaY *= this.options.invertWheelDirection;\r\n\r\n\t\t\tif (!this.hasVerticalScroll) {\r\n\t\t\t\twheelDeltaX = wheelDeltaY;\r\n\t\t\t\twheelDeltaY = 0;\r\n\t\t\t}\r\n\r\n\t\t\tif (this.options.snap) {\r\n\t\t\t\tnewX = this.currentPage.pageX;\r\n\t\t\t\tnewY = this.currentPage.pageY;\r\n\r\n\t\t\t\tif (wheelDeltaX > 0) {\r\n\t\t\t\t\tnewX--;\r\n\t\t\t\t} else if (wheelDeltaX < 0) {\r\n\t\t\t\t\tnewX++;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (wheelDeltaY > 0) {\r\n\t\t\t\t\tnewY--;\r\n\t\t\t\t} else if (wheelDeltaY < 0) {\r\n\t\t\t\t\tnewY++;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.goToPage(newX, newY);\r\n\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tnewX = this.x + Math.round(this.hasHorizontalScroll ? wheelDeltaX : 0);\r\n\t\t\tnewY = this.y + Math.round(this.hasVerticalScroll ? wheelDeltaY : 0);\r\n\r\n\t\t\tthis.directionX = wheelDeltaX > 0 ? -1 : wheelDeltaX < 0 ? 1 : 0;\r\n\t\t\tthis.directionY = wheelDeltaY > 0 ? -1 : wheelDeltaY < 0 ? 1 : 0;\r\n\r\n\t\t\tif (newX > 0) {\r\n\t\t\t\tnewX = 0;\r\n\t\t\t} else if (newX < this.maxScrollX) {\r\n\t\t\t\tnewX = this.maxScrollX;\r\n\t\t\t}\r\n\r\n\t\t\tif (newY > 0) {\r\n\t\t\t\tnewY = 0;\r\n\t\t\t} else if (newY < this.maxScrollY) {\r\n\t\t\t\tnewY = this.maxScrollY;\r\n\t\t\t}\r\n\r\n\t\t\tthis.scrollTo(newX, newY, 0);\r\n\r\n\t\t\tif (this.options.probeType > 1) {\r\n\t\t\t\tthis._execEvent('scroll');\r\n\t\t\t}\r\n\r\n\t\t\t// INSERT POINT: _wheel\r\n\t\t},\r\n\r\n\t\t_initSnap: function () {\r\n\t\t\tthis.currentPage = {};\r\n\r\n\t\t\tif (typeof this.options.snap == 'string') {\r\n\t\t\t\tthis.options.snap = this.scroller.querySelectorAll(this.options.snap);\r\n\t\t\t}\r\n\r\n\t\t\tthis.on('refresh', function () {\r\n\t\t\t\tvar i = 0, l,\r\n\t\t\t\t\tm = 0, n,\r\n\t\t\t\t\tcx, cy,\r\n\t\t\t\t\tx = 0, y,\r\n\t\t\t\t\tstepX = this.options.snapStepX || this.wrapperWidth,\r\n\t\t\t\t\tstepY = this.options.snapStepY || this.wrapperHeight,\r\n\t\t\t\t\tel,\r\n\t\t\t\t\trect;\r\n\r\n\t\t\t\tthis.pages = [];\r\n\r\n\t\t\t\tif (!this.wrapperWidth || !this.wrapperHeight || !this.scrollerWidth || !this.scrollerHeight) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (this.options.snap === true) {\r\n\t\t\t\t\tcx = Math.round(stepX / 2);\r\n\t\t\t\t\tcy = Math.round(stepY / 2);\r\n\r\n\t\t\t\t\twhile (x > -this.scrollerWidth) {\r\n\t\t\t\t\t\tthis.pages[i] = [];\r\n\t\t\t\t\t\tl = 0;\r\n\t\t\t\t\t\ty = 0;\r\n\r\n\t\t\t\t\t\twhile (y > -this.scrollerHeight) {\r\n\t\t\t\t\t\t\tthis.pages[i][l] = {\r\n\t\t\t\t\t\t\t\tx: Math.max(x, this.maxScrollX),\r\n\t\t\t\t\t\t\t\ty: Math.max(y, this.maxScrollY),\r\n\t\t\t\t\t\t\t\twidth: stepX,\r\n\t\t\t\t\t\t\t\theight: stepY,\r\n\t\t\t\t\t\t\t\tcx: x - cx,\r\n\t\t\t\t\t\t\t\tcy: y - cy\r\n\t\t\t\t\t\t\t};\r\n\r\n\t\t\t\t\t\t\ty -= stepY;\r\n\t\t\t\t\t\t\tl++;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tx -= stepX;\r\n\t\t\t\t\t\ti++;\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\tel = this.options.snap;\r\n\t\t\t\t\tl = el.length;\r\n\t\t\t\t\tn = -1;\r\n\r\n\t\t\t\t\tfor (; i < l; i++) {\r\n\t\t\t\t\t\trect = utils.getRect(el[i]);\r\n\t\t\t\t\t\tif (i === 0 || rect.left <= utils.getRect(el[i - 1]).left) {\r\n\t\t\t\t\t\t\tm = 0;\r\n\t\t\t\t\t\t\tn++;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif (!this.pages[m]) {\r\n\t\t\t\t\t\t\tthis.pages[m] = [];\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tx = Math.max(-rect.left, this.maxScrollX);\r\n\t\t\t\t\t\ty = Math.max(-rect.top, this.maxScrollY);\r\n\t\t\t\t\t\tcx = x - Math.round(rect.width / 2);\r\n\t\t\t\t\t\tcy = y - Math.round(rect.height / 2);\r\n\r\n\t\t\t\t\t\tthis.pages[m][n] = {\r\n\t\t\t\t\t\t\tx: x,\r\n\t\t\t\t\t\t\ty: y,\r\n\t\t\t\t\t\t\twidth: rect.width,\r\n\t\t\t\t\t\t\theight: rect.height,\r\n\t\t\t\t\t\t\tcx: cx,\r\n\t\t\t\t\t\t\tcy: cy\r\n\t\t\t\t\t\t};\r\n\r\n\t\t\t\t\t\tif (x > this.maxScrollX) {\r\n\t\t\t\t\t\t\tm++;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.goToPage(this.currentPage.pageX || 0, this.currentPage.pageY || 0, 0);\r\n\r\n\t\t\t\t// Update snap threshold if needed\r\n\t\t\t\tif (this.options.snapThreshold % 1 === 0) {\r\n\t\t\t\t\tthis.snapThresholdX = this.options.snapThreshold;\r\n\t\t\t\t\tthis.snapThresholdY = this.options.snapThreshold;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis.snapThresholdX = Math.round(this.pages[this.currentPage.pageX][this.currentPage.pageY].width * this.options.snapThreshold);\r\n\t\t\t\t\tthis.snapThresholdY = Math.round(this.pages[this.currentPage.pageX][this.currentPage.pageY].height * this.options.snapThreshold);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tthis.on('flick', function () {\r\n\t\t\t\tvar time = this.options.snapSpeed || Math.max(\r\n\t\t\t\t\tMath.max(\r\n\t\t\t\t\t\tMath.min(Math.abs(this.x - this.startX), 1000),\r\n\t\t\t\t\t\tMath.min(Math.abs(this.y - this.startY), 1000)\r\n\t\t\t\t\t), 300);\r\n\r\n\t\t\t\tthis.goToPage(\r\n\t\t\t\t\tthis.currentPage.pageX + this.directionX,\r\n\t\t\t\t\tthis.currentPage.pageY + this.directionY,\r\n\t\t\t\t\ttime\r\n\t\t\t\t);\r\n\t\t\t});\r\n\t\t},\r\n\r\n\t\t_nearestSnap: function (x, y) {\r\n\t\t\tif (!this.pages.length) {\r\n\t\t\t\treturn { x: 0, y: 0, pageX: 0, pageY: 0 };\r\n\t\t\t}\r\n\r\n\t\t\tvar i = 0,\r\n\t\t\t\tl = this.pages.length,\r\n\t\t\t\tm = 0;\r\n\r\n\t\t\t// Check if we exceeded the snap threshold\r\n\t\t\tif (Math.abs(x - this.absStartX) < this.snapThresholdX &&\r\n\t\t\t\tMath.abs(y - this.absStartY) < this.snapThresholdY) {\r\n\t\t\t\treturn this.currentPage;\r\n\t\t\t}\r\n\r\n\t\t\tif (x > 0) {\r\n\t\t\t\tx = 0;\r\n\t\t\t} else if (x < this.maxScrollX) {\r\n\t\t\t\tx = this.maxScrollX;\r\n\t\t\t}\r\n\r\n\t\t\tif (y > 0) {\r\n\t\t\t\ty = 0;\r\n\t\t\t} else if (y < this.maxScrollY) {\r\n\t\t\t\ty = this.maxScrollY;\r\n\t\t\t}\r\n\r\n\t\t\tfor (; i < l; i++) {\r\n\t\t\t\tif (x >= this.pages[i][0].cx) {\r\n\t\t\t\t\tx = this.pages[i][0].x;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tl = this.pages[i].length;\r\n\r\n\t\t\tfor (; m < l; m++) {\r\n\t\t\t\tif (y >= this.pages[0][m].cy) {\r\n\t\t\t\t\ty = this.pages[0][m].y;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif (i == this.currentPage.pageX) {\r\n\t\t\t\ti += this.directionX;\r\n\r\n\t\t\t\tif (i < 0) {\r\n\t\t\t\t\ti = 0;\r\n\t\t\t\t} else if (i >= this.pages.length) {\r\n\t\t\t\t\ti = this.pages.length - 1;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tx = this.pages[i][0].x;\r\n\t\t\t}\r\n\r\n\t\t\tif (m == this.currentPage.pageY) {\r\n\t\t\t\tm += this.directionY;\r\n\r\n\t\t\t\tif (m < 0) {\r\n\t\t\t\t\tm = 0;\r\n\t\t\t\t} else if (m >= this.pages[0].length) {\r\n\t\t\t\t\tm = this.pages[0].length - 1;\r\n\t\t\t\t}\r\n\r\n\t\t\t\ty = this.pages[0][m].y;\r\n\t\t\t}\r\n\r\n\t\t\treturn {\r\n\t\t\t\tx: x,\r\n\t\t\t\ty: y,\r\n\t\t\t\tpageX: i,\r\n\t\t\t\tpageY: m\r\n\t\t\t};\r\n\t\t},\r\n\r\n\t\tgoToPage: function (x, y, time, easing) {\r\n\t\t\teasing = easing || this.options.bounceEasing;\r\n\r\n\t\t\tif (x >= this.pages.length) {\r\n\t\t\t\tx = this.pages.length - 1;\r\n\t\t\t} else if (x < 0) {\r\n\t\t\t\tx = 0;\r\n\t\t\t}\r\n\r\n\t\t\tif (y >= this.pages[x].length) {\r\n\t\t\t\ty = this.pages[x].length - 1;\r\n\t\t\t} else if (y < 0) {\r\n\t\t\t\ty = 0;\r\n\t\t\t}\r\n\r\n\t\t\tvar posX = this.pages[x][y].x,\r\n\t\t\t\tposY = this.pages[x][y].y;\r\n\r\n\t\t\ttime = time === undefined ? this.options.snapSpeed || Math.max(\r\n\t\t\t\tMath.max(\r\n\t\t\t\t\tMath.min(Math.abs(posX - this.x), 1000),\r\n\t\t\t\t\tMath.min(Math.abs(posY - this.y), 1000)\r\n\t\t\t\t), 300) : time;\r\n\r\n\t\t\tthis.currentPage = {\r\n\t\t\t\tx: posX,\r\n\t\t\t\ty: posY,\r\n\t\t\t\tpageX: x,\r\n\t\t\t\tpageY: y\r\n\t\t\t};\r\n\r\n\t\t\tthis.scrollTo(posX, posY, time, easing);\r\n\t\t},\r\n\r\n\t\tnext: function (time, easing) {\r\n\t\t\tvar x = this.currentPage.pageX,\r\n\t\t\t\ty = this.currentPage.pageY;\r\n\r\n\t\t\tx++;\r\n\r\n\t\t\tif (x >= this.pages.length && this.hasVerticalScroll) {\r\n\t\t\t\tx = 0;\r\n\t\t\t\ty++;\r\n\t\t\t}\r\n\r\n\t\t\tthis.goToPage(x, y, time, easing);\r\n\t\t},\r\n\r\n\t\tprev: function (time, easing) {\r\n\t\t\tvar x = this.currentPage.pageX,\r\n\t\t\t\ty = this.currentPage.pageY;\r\n\r\n\t\t\tx--;\r\n\r\n\t\t\tif (x < 0 && this.hasVerticalScroll) {\r\n\t\t\t\tx = 0;\r\n\t\t\t\ty--;\r\n\t\t\t}\r\n\r\n\t\t\tthis.goToPage(x, y, time, easing);\r\n\t\t},\r\n\r\n\t\t_initKeys: function (e) {\r\n\t\t\t// default key bindings\r\n\t\t\tvar keys = {\r\n\t\t\t\tpageUp: 33,\r\n\t\t\t\tpageDown: 34,\r\n\t\t\t\tend: 35,\r\n\t\t\t\thome: 36,\r\n\t\t\t\tleft: 37,\r\n\t\t\t\tup: 38,\r\n\t\t\t\tright: 39,\r\n\t\t\t\tdown: 40\r\n\t\t\t};\r\n\t\t\tvar i;\r\n\r\n\t\t\t// if you give me characters I give you keycode\r\n\t\t\tif (typeof this.options.keyBindings == 'object') {\r\n\t\t\t\tfor (i in this.options.keyBindings) {\r\n\t\t\t\t\tif (typeof this.options.keyBindings[i] == 'string') {\r\n\t\t\t\t\t\tthis.options.keyBindings[i] = this.options.keyBindings[i].toUpperCase().charCodeAt(0);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tthis.options.keyBindings = {};\r\n\t\t\t}\r\n\r\n\t\t\tfor (i in keys) {\r\n\t\t\t\tthis.options.keyBindings[i] = this.options.keyBindings[i] || keys[i];\r\n\t\t\t}\r\n\r\n\t\t\tutils.addEvent(window, 'keydown', this);\r\n\r\n\t\t\tthis.on('destroy', function () {\r\n\t\t\t\tutils.removeEvent(window, 'keydown', this);\r\n\t\t\t});\r\n\t\t},\r\n\r\n\t\t_key: function (e) {\r\n\t\t\tif (!this.enabled) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tvar snap = this.options.snap,\t// we are using this alot, better to cache it\r\n\t\t\t\tnewX = snap ? this.currentPage.pageX : this.x,\r\n\t\t\t\tnewY = snap ? this.currentPage.pageY : this.y,\r\n\t\t\t\tnow = utils.getTime(),\r\n\t\t\t\tprevTime = this.keyTime || 0,\r\n\t\t\t\tacceleration = 0.250,\r\n\t\t\t\tpos;\r\n\r\n\t\t\tif (this.options.useTransition && this.isInTransition) {\r\n\t\t\t\tpos = this.getComputedPosition();\r\n\r\n\t\t\t\tthis._translate(Math.round(pos.x), Math.round(pos.y));\r\n\t\t\t\tthis.isInTransition = false;\r\n\t\t\t}\r\n\r\n\t\t\tthis.keyAcceleration = now - prevTime < 200 ? Math.min(this.keyAcceleration + acceleration, 50) : 0;\r\n\r\n\t\t\tswitch (e.keyCode) {\r\n\t\t\t\tcase this.options.keyBindings.pageUp:\r\n\t\t\t\t\tif (this.hasHorizontalScroll && !this.hasVerticalScroll) {\r\n\t\t\t\t\t\tnewX += snap ? 1 : this.wrapperWidth;\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tnewY += snap ? 1 : this.wrapperHeight;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase this.options.keyBindings.pageDown:\r\n\t\t\t\t\tif (this.hasHorizontalScroll && !this.hasVerticalScroll) {\r\n\t\t\t\t\t\tnewX -= snap ? 1 : this.wrapperWidth;\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tnewY -= snap ? 1 : this.wrapperHeight;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase this.options.keyBindings.end:\r\n\t\t\t\t\tnewX = snap ? this.pages.length - 1 : this.maxScrollX;\r\n\t\t\t\t\tnewY = snap ? this.pages[0].length - 1 : this.maxScrollY;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase this.options.keyBindings.home:\r\n\t\t\t\t\tnewX = 0;\r\n\t\t\t\t\tnewY = 0;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase this.options.keyBindings.left:\r\n\t\t\t\t\tnewX += snap ? -1 : 5 + this.keyAcceleration >> 0;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase this.options.keyBindings.up:\r\n\t\t\t\t\tnewY += snap ? 1 : 5 + this.keyAcceleration >> 0;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase this.options.keyBindings.right:\r\n\t\t\t\t\tnewX -= snap ? -1 : 5 + this.keyAcceleration >> 0;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase this.options.keyBindings.down:\r\n\t\t\t\t\tnewY -= snap ? 1 : 5 + this.keyAcceleration >> 0;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tdefault:\r\n\t\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tif (snap) {\r\n\t\t\t\tthis.goToPage(newX, newY);\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tif (newX > 0) {\r\n\t\t\t\tnewX = 0;\r\n\t\t\t\tthis.keyAcceleration = 0;\r\n\t\t\t} else if (newX < this.maxScrollX) {\r\n\t\t\t\tnewX = this.maxScrollX;\r\n\t\t\t\tthis.keyAcceleration = 0;\r\n\t\t\t}\r\n\r\n\t\t\tif (newY > 0) {\r\n\t\t\t\tnewY = 0;\r\n\t\t\t\tthis.keyAcceleration = 0;\r\n\t\t\t} else if (newY < this.maxScrollY) {\r\n\t\t\t\tnewY = this.maxScrollY;\r\n\t\t\t\tthis.keyAcceleration = 0;\r\n\t\t\t}\r\n\r\n\t\t\tthis.scrollTo(newX, newY, 0);\r\n\r\n\t\t\tthis.keyTime = now;\r\n\t\t},\r\n\r\n\t\t_animate: function (destX, destY, duration, easingFn) {\r\n\t\t\tvar that = this,\r\n\t\t\t\tstartX = this.x,\r\n\t\t\t\tstartY = this.y,\r\n\t\t\t\tstartTime = utils.getTime(),\r\n\t\t\t\tdestTime = startTime + duration;\r\n\r\n\t\t\tfunction step() {\r\n\t\t\t\tvar now = utils.getTime(),\r\n\t\t\t\t\tnewX, newY,\r\n\t\t\t\t\teasing;\r\n\r\n\t\t\t\tif (now >= destTime) {\r\n\t\t\t\t\tthat.isAnimating = false;\r\n\t\t\t\t\tthat._translate(destX, destY);\r\n\r\n\t\t\t\t\tif (!that.resetPosition(that.options.bounceTime)) {\r\n\t\t\t\t\t\tthat._execEvent('scrollEnd');\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tnow = (now - startTime) / duration;\r\n\t\t\t\teasing = easingFn(now);\r\n\t\t\t\tnewX = (destX - startX) * easing + startX;\r\n\t\t\t\tnewY = (destY - startY) * easing + startY;\r\n\t\t\t\tthat._translate(newX, newY);\r\n\r\n\t\t\t\tif (that.isAnimating) {\r\n\t\t\t\t\trAF(step);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (that.options.probeType == 3) {\r\n\t\t\t\t\tthat._execEvent('scroll');\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tthis.isAnimating = true;\r\n\t\t\tstep();\r\n\t\t},\r\n\r\n\t\thandleEvent: function (e) {\r\n\t\t\tswitch (e.type) {\r\n\t\t\t\tcase 'touchstart':\r\n\t\t\t\tcase 'pointerdown':\r\n\t\t\t\tcase 'MSPointerDown':\r\n\t\t\t\tcase 'mousedown':\r\n\t\t\t\t\tthis._start(e);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase 'touchmove':\r\n\t\t\t\tcase 'pointermove':\r\n\t\t\t\tcase 'MSPointerMove':\r\n\t\t\t\tcase 'mousemove':\r\n\t\t\t\t\tthis._move(e);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase 'touchend':\r\n\t\t\t\tcase 'pointerup':\r\n\t\t\t\tcase 'MSPointerUp':\r\n\t\t\t\tcase 'mouseup':\r\n\t\t\t\tcase 'touchcancel':\r\n\t\t\t\tcase 'pointercancel':\r\n\t\t\t\tcase 'MSPointerCancel':\r\n\t\t\t\tcase 'mousecancel':\r\n\t\t\t\t\tthis._end(e);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase 'orientationchange':\r\n\t\t\t\tcase 'resize':\r\n\t\t\t\t\tthis._resize();\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase 'transitionend':\r\n\t\t\t\tcase 'webkitTransitionEnd':\r\n\t\t\t\tcase 'oTransitionEnd':\r\n\t\t\t\tcase 'MSTransitionEnd':\r\n\t\t\t\t\tthis._transitionEnd(e);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase 'wheel':\r\n\t\t\t\tcase 'DOMMouseScroll':\r\n\t\t\t\tcase 'mousewheel':\r\n\t\t\t\t\tthis._wheel(e);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase 'keydown':\r\n\t\t\t\t\tthis._key(e);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase 'click':\r\n\t\t\t\t\tif (this.enabled && !e._constructed) {\r\n\t\t\t\t\t\te.preventDefault();\r\n\t\t\t\t\t\te.stopPropagation();\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\tfunction createDefaultScrollbar(direction, interactive, type) {\r\n\t\tvar scrollbar = document.createElement('div'),\r\n\t\t\tindicator = document.createElement('div');\r\n\r\n\t\tif (type === true) {\r\n\t\t\tscrollbar.style.cssText = 'position:absolute;z-index:9999';\r\n\t\t\tindicator.style.cssText = '-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;position:absolute;background:rgba(0,0,0,0.5);border:1px solid rgba(255,255,255,0.9);border-radius:3px';\r\n\t\t}\r\n\r\n\t\tindicator.className = 'iScrollIndicator';\r\n\r\n\t\tif (direction == 'h') {\r\n\t\t\tif (type === true) {\r\n\t\t\t\tscrollbar.style.cssText += ';height:7px;left:2px;right:2px;bottom:0';\r\n\t\t\t\tindicator.style.height = '100%';\r\n\t\t\t}\r\n\t\t\tscrollbar.className = 'iScrollHorizontalScrollbar';\r\n\t\t} else {\r\n\t\t\tif (type === true) {\r\n\t\t\t\tscrollbar.style.cssText += ';width:7px;bottom:2px;top:2px;right:1px';\r\n\t\t\t\tindicator.style.width = '100%';\r\n\t\t\t}\r\n\t\t\tscrollbar.className = 'iScrollVerticalScrollbar';\r\n\t\t}\r\n\r\n\t\tscrollbar.style.cssText += ';overflow:hidden';\r\n\r\n\t\tif (!interactive) {\r\n\t\t\tscrollbar.style.pointerEvents = 'none';\r\n\t\t}\r\n\r\n\t\tscrollbar.appendChild(indicator);\r\n\r\n\t\treturn scrollbar;\r\n\t}\r\n\r\n\tfunction Indicator(scroller, options) {\r\n\t\tthis.wrapper = typeof options.el == 'string' ? document.querySelector(options.el) : options.el;\r\n\t\tthis.wrapperStyle = this.wrapper.style;\r\n\t\tthis.indicator = this.wrapper.children[0];\r\n\t\tthis.indicatorStyle = this.indicator.style;\r\n\t\tthis.scroller = scroller;\r\n\r\n\t\tthis.options = {\r\n\t\t\tlistenX: true,\r\n\t\t\tlistenY: true,\r\n\t\t\tinteractive: false,\r\n\t\t\tresize: true,\r\n\t\t\tdefaultScrollbars: false,\r\n\t\t\tshrink: false,\r\n\t\t\tfade: false,\r\n\t\t\tspeedRatioX: 0,\r\n\t\t\tspeedRatioY: 0\r\n\t\t};\r\n\r\n\t\tfor (var i in options) {\r\n\t\t\tthis.options[i] = options[i];\r\n\t\t}\r\n\r\n\t\tthis.sizeRatioX = 1;\r\n\t\tthis.sizeRatioY = 1;\r\n\t\tthis.maxPosX = 0;\r\n\t\tthis.maxPosY = 0;\r\n\r\n\t\tif (this.options.interactive) {\r\n\t\t\tif (!this.options.disableTouch) {\r\n\t\t\t\tutils.addEvent(this.indicator, 'touchstart', this);\r\n\t\t\t\tutils.addEvent(window, 'touchend', this);\r\n\t\t\t}\r\n\t\t\tif (!this.options.disablePointer) {\r\n\t\t\t\tutils.addEvent(this.indicator, utils.prefixPointerEvent('pointerdown'), this);\r\n\t\t\t\tutils.addEvent(window, utils.prefixPointerEvent('pointerup'), this);\r\n\t\t\t}\r\n\t\t\tif (!this.options.disableMouse) {\r\n\t\t\t\tutils.addEvent(this.indicator, 'mousedown', this);\r\n\t\t\t\tutils.addEvent(window, 'mouseup', this);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (this.options.fade) {\r\n\t\t\tthis.wrapperStyle[utils.style.transform] = this.scroller.translateZ;\r\n\t\t\tvar durationProp = utils.style.transitionDuration;\r\n\t\t\tif (!durationProp) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tthis.wrapperStyle[durationProp] = utils.isBadAndroid ? '0.0001ms' : '0ms';\r\n\t\t\t// remove 0.0001ms\r\n\t\t\tvar self = this;\r\n\t\t\tif (utils.isBadAndroid) {\r\n\t\t\t\trAF(function () {\r\n\t\t\t\t\tif (self.wrapperStyle[durationProp] === '0.0001ms') {\r\n\t\t\t\t\t\tself.wrapperStyle[durationProp] = '0s';\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t\tthis.wrapperStyle.opacity = '0';\r\n\t\t}\r\n\t}\r\n\r\n\tIndicator.prototype = {\r\n\t\thandleEvent: function (e) {\r\n\t\t\tswitch (e.type) {\r\n\t\t\t\tcase 'touchstart':\r\n\t\t\t\tcase 'pointerdown':\r\n\t\t\t\tcase 'MSPointerDown':\r\n\t\t\t\tcase 'mousedown':\r\n\t\t\t\t\tthis._start(e);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase 'touchmove':\r\n\t\t\t\tcase 'pointermove':\r\n\t\t\t\tcase 'MSPointerMove':\r\n\t\t\t\tcase 'mousemove':\r\n\t\t\t\t\tthis._move(e);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase 'touchend':\r\n\t\t\t\tcase 'pointerup':\r\n\t\t\t\tcase 'MSPointerUp':\r\n\t\t\t\tcase 'mouseup':\r\n\t\t\t\tcase 'touchcancel':\r\n\t\t\t\tcase 'pointercancel':\r\n\t\t\t\tcase 'MSPointerCancel':\r\n\t\t\t\tcase 'mousecancel':\r\n\t\t\t\t\tthis._end(e);\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tdestroy: function () {\r\n\t\t\tif (this.options.fadeScrollbars) {\r\n\t\t\t\tclearTimeout(this.fadeTimeout);\r\n\t\t\t\tthis.fadeTimeout = null;\r\n\t\t\t}\r\n\t\t\tif (this.options.interactive) {\r\n\t\t\t\tutils.removeEvent(this.indicator, 'touchstart', this);\r\n\t\t\t\tutils.removeEvent(this.indicator, utils.prefixPointerEvent('pointerdown'), this);\r\n\t\t\t\tutils.removeEvent(this.indicator, 'mousedown', this);\r\n\r\n\t\t\t\tutils.removeEvent(window, 'touchmove', this);\r\n\t\t\t\tutils.removeEvent(window, utils.prefixPointerEvent('pointermove'), this);\r\n\t\t\t\tutils.removeEvent(window, 'mousemove', this);\r\n\r\n\t\t\t\tutils.removeEvent(window, 'touchend', this);\r\n\t\t\t\tutils.removeEvent(window, utils.prefixPointerEvent('pointerup'), this);\r\n\t\t\t\tutils.removeEvent(window, 'mouseup', this);\r\n\t\t\t}\r\n\r\n\t\t\tif (this.options.defaultScrollbars && this.wrapper.parentNode) {\r\n\t\t\t\tthis.wrapper.parentNode.removeChild(this.wrapper);\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\t_start: function (e) {\r\n\t\t\tvar point = e.touches ? e.touches[0] : e;\r\n\r\n\t\t\te.preventDefault();\r\n\t\t\te.stopPropagation();\r\n\r\n\t\t\tthis.transitionTime();\r\n\r\n\t\t\tthis.initiated = true;\r\n\t\t\tthis.moved = false;\r\n\t\t\tthis.lastPointX = point.pageX;\r\n\t\t\tthis.lastPointY = point.pageY;\r\n\r\n\t\t\tthis.startTime = utils.getTime();\r\n\r\n\t\t\tif (!this.options.disableTouch) {\r\n\t\t\t\tutils.addEvent(window, 'touchmove', this);\r\n\t\t\t}\r\n\t\t\tif (!this.options.disablePointer) {\r\n\t\t\t\tutils.addEvent(window, utils.prefixPointerEvent('pointermove'), this);\r\n\t\t\t}\r\n\t\t\tif (!this.options.disableMouse) {\r\n\t\t\t\tutils.addEvent(window, 'mousemove', this);\r\n\t\t\t}\r\n\r\n\t\t\tthis.scroller._execEvent('beforeScrollStart');\r\n\t\t},\r\n\r\n\t\t_move: function (e) {\r\n\t\t\tvar point = e.touches ? e.touches[0] : e,\r\n\t\t\t\tdeltaX, deltaY,\r\n\t\t\t\tnewX, newY,\r\n\t\t\t\ttimestamp = utils.getTime();\r\n\r\n\t\t\tif (!this.moved) {\r\n\t\t\t\tthis.scroller._execEvent('scrollStart');\r\n\t\t\t}\r\n\r\n\t\t\tthis.moved = true;\r\n\r\n\t\t\tdeltaX = point.pageX - this.lastPointX;\r\n\t\t\tthis.lastPointX = point.pageX;\r\n\r\n\t\t\tdeltaY = point.pageY - this.lastPointY;\r\n\t\t\tthis.lastPointY = point.pageY;\r\n\r\n\t\t\tnewX = this.x + deltaX;\r\n\t\t\tnewY = this.y + deltaY;\r\n\r\n\t\t\tthis._pos(newX, newY);\r\n\r\n\r\n\t\t\tif (this.scroller.options.probeType == 1 && timestamp - this.startTime > 300) {\r\n\t\t\t\tthis.startTime = timestamp;\r\n\t\t\t\tthis.scroller._execEvent('scroll');\r\n\t\t\t} else if (this.scroller.options.probeType > 1) {\r\n\t\t\t\tthis.scroller._execEvent('scroll');\r\n\t\t\t}\r\n\r\n\r\n\t\t\t// INSERT POINT: indicator._move\r\n\r\n\t\t\te.preventDefault();\r\n\t\t\te.stopPropagation();\r\n\t\t},\r\n\r\n\t\t_end: function (e) {\r\n\t\t\tif (!this.initiated) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tthis.initiated = false;\r\n\r\n\t\t\te.preventDefault();\r\n\t\t\te.stopPropagation();\r\n\r\n\t\t\tutils.removeEvent(window, 'touchmove', this);\r\n\t\t\tutils.removeEvent(window, utils.prefixPointerEvent('pointermove'), this);\r\n\t\t\tutils.removeEvent(window, 'mousemove', this);\r\n\r\n\t\t\tif (this.scroller.options.snap) {\r\n\t\t\t\tvar snap = this.scroller._nearestSnap(this.scroller.x, this.scroller.y);\r\n\r\n\t\t\t\tvar time = this.options.snapSpeed || Math.max(\r\n\t\t\t\t\tMath.max(\r\n\t\t\t\t\t\tMath.min(Math.abs(this.scroller.x - snap.x), 1000),\r\n\t\t\t\t\t\tMath.min(Math.abs(this.scroller.y - snap.y), 1000)\r\n\t\t\t\t\t), 300);\r\n\r\n\t\t\t\tif (this.scroller.x != snap.x || this.scroller.y != snap.y) {\r\n\t\t\t\t\tthis.scroller.directionX = 0;\r\n\t\t\t\t\tthis.scroller.directionY = 0;\r\n\t\t\t\t\tthis.scroller.currentPage = snap;\r\n\t\t\t\t\tthis.scroller.scrollTo(snap.x, snap.y, time, this.scroller.options.bounceEasing);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif (this.moved) {\r\n\t\t\t\tthis.scroller._execEvent('scrollEnd');\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\ttransitionTime: function (time) {\r\n\t\t\ttime = time || 0;\r\n\t\t\tvar durationProp = utils.style.transitionDuration;\r\n\t\t\tif (!durationProp) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tthis.indicatorStyle[durationProp] = time + 'ms';\r\n\r\n\t\t\tif (!time && utils.isBadAndroid) {\r\n\t\t\t\tthis.indicatorStyle[durationProp] = '0.0001ms';\r\n\t\t\t\t// remove 0.0001ms\r\n\t\t\t\tvar self = this;\r\n\t\t\t\trAF(function () {\r\n\t\t\t\t\tif (self.indicatorStyle[durationProp] === '0.0001ms') {\r\n\t\t\t\t\t\tself.indicatorStyle[durationProp] = '0s';\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\ttransitionTimingFunction: function (easing) {\r\n\t\t\tthis.indicatorStyle[utils.style.transitionTimingFunction] = easing;\r\n\t\t},\r\n\r\n\t\trefresh: function () {\r\n\t\t\tthis.transitionTime();\r\n\r\n\t\t\tif (this.options.listenX && !this.options.listenY) {\r\n\t\t\t\tthis.indicatorStyle.display = this.scroller.hasHorizontalScroll ? 'block' : 'none';\r\n\t\t\t} else if (this.options.listenY && !this.options.listenX) {\r\n\t\t\t\tthis.indicatorStyle.display = this.scroller.hasVerticalScroll ? 'block' : 'none';\r\n\t\t\t} else {\r\n\t\t\t\tthis.indicatorStyle.display = this.scroller.hasHorizontalScroll || this.scroller.hasVerticalScroll ? 'block' : 'none';\r\n\t\t\t}\r\n\r\n\t\t\tif (this.scroller.hasHorizontalScroll && this.scroller.hasVerticalScroll) {\r\n\t\t\t\tutils.addClass(this.wrapper, 'iScrollBothScrollbars');\r\n\t\t\t\tutils.removeClass(this.wrapper, 'iScrollLoneScrollbar');\r\n\r\n\t\t\t\tif (this.options.defaultScrollbars && this.options.customStyle) {\r\n\t\t\t\t\tif (this.options.listenX) {\r\n\t\t\t\t\t\tthis.wrapper.style.right = '8px';\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tthis.wrapper.style.bottom = '8px';\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tutils.removeClass(this.wrapper, 'iScrollBothScrollbars');\r\n\t\t\t\tutils.addClass(this.wrapper, 'iScrollLoneScrollbar');\r\n\r\n\t\t\t\tif (this.options.defaultScrollbars && this.options.customStyle) {\r\n\t\t\t\t\tif (this.options.listenX) {\r\n\t\t\t\t\t\tthis.wrapper.style.right = '2px';\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tthis.wrapper.style.bottom = '2px';\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tutils.getRect(this.wrapper);\t// force refresh\r\n\r\n\t\t\tif (this.options.listenX) {\r\n\t\t\t\tthis.wrapperWidth = this.wrapper.clientWidth;\r\n\t\t\t\tif (this.options.resize) {\r\n\t\t\t\t\tthis.indicatorWidth = Math.max(Math.round(this.wrapperWidth * this.wrapperWidth / (this.scroller.scrollerWidth || this.wrapperWidth || 1)), 8);\r\n\t\t\t\t\tthis.indicatorStyle.width = this.indicatorWidth + 'px';\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis.indicatorWidth = this.indicator.clientWidth;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.maxPosX = this.wrapperWidth - this.indicatorWidth;\r\n\r\n\t\t\t\tif (this.options.shrink == 'clip') {\r\n\t\t\t\t\tthis.minBoundaryX = -this.indicatorWidth + 8;\r\n\t\t\t\t\tthis.maxBoundaryX = this.wrapperWidth - 8;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis.minBoundaryX = 0;\r\n\t\t\t\t\tthis.maxBoundaryX = this.maxPosX;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.sizeRatioX = this.options.speedRatioX || (this.scroller.maxScrollX && (this.maxPosX / this.scroller.maxScrollX));\r\n\t\t\t}\r\n\r\n\t\t\tif (this.options.listenY) {\r\n\t\t\t\tthis.wrapperHeight = this.wrapper.clientHeight;\r\n\t\t\t\tif (this.options.resize) {\r\n\t\t\t\t\tthis.indicatorHeight = Math.max(Math.round(this.wrapperHeight * this.wrapperHeight / (this.scroller.scrollerHeight || this.wrapperHeight || 1)), 8);\r\n\t\t\t\t\tthis.indicatorStyle.height = this.indicatorHeight + 'px';\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis.indicatorHeight = this.indicator.clientHeight;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.maxPosY = this.wrapperHeight - this.indicatorHeight;\r\n\r\n\t\t\t\tif (this.options.shrink == 'clip') {\r\n\t\t\t\t\tthis.minBoundaryY = -this.indicatorHeight + 8;\r\n\t\t\t\t\tthis.maxBoundaryY = this.wrapperHeight - 8;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis.minBoundaryY = 0;\r\n\t\t\t\t\tthis.maxBoundaryY = this.maxPosY;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.maxPosY = this.wrapperHeight - this.indicatorHeight;\r\n\t\t\t\tthis.sizeRatioY = this.options.speedRatioY || (this.scroller.maxScrollY && (this.maxPosY / this.scroller.maxScrollY));\r\n\t\t\t}\r\n\r\n\t\t\tthis.updatePosition();\r\n\t\t},\r\n\r\n\t\tupdatePosition: function () {\r\n\t\t\tvar x = this.options.listenX && Math.round(this.sizeRatioX * this.scroller.x) || 0,\r\n\t\t\t\ty = this.options.listenY && Math.round(this.sizeRatioY * this.scroller.y) || 0;\r\n\r\n\t\t\tif (!this.options.ignoreBoundaries) {\r\n\t\t\t\tif (x < this.minBoundaryX) {\r\n\t\t\t\t\tif (this.options.shrink == 'scale') {\r\n\t\t\t\t\t\tthis.width = Math.max(this.indicatorWidth + x, 8);\r\n\t\t\t\t\t\tthis.indicatorStyle.width = this.width + 'px';\r\n\t\t\t\t\t}\r\n\t\t\t\t\tx = this.minBoundaryX;\r\n\t\t\t\t} else if (x > this.maxBoundaryX) {\r\n\t\t\t\t\tif (this.options.shrink == 'scale') {\r\n\t\t\t\t\t\tthis.width = Math.max(this.indicatorWidth - (x - this.maxPosX), 8);\r\n\t\t\t\t\t\tthis.indicatorStyle.width = this.width + 'px';\r\n\t\t\t\t\t\tx = this.maxPosX + this.indicatorWidth - this.width;\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tx = this.maxBoundaryX;\r\n\t\t\t\t\t}\r\n\t\t\t\t} else if (this.options.shrink == 'scale' && this.width != this.indicatorWidth) {\r\n\t\t\t\t\tthis.width = this.indicatorWidth;\r\n\t\t\t\t\tthis.indicatorStyle.width = this.width + 'px';\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (y < this.minBoundaryY) {\r\n\t\t\t\t\tif (this.options.shrink == 'scale') {\r\n\t\t\t\t\t\tthis.height = Math.max(this.indicatorHeight + y * 3, 8);\r\n\t\t\t\t\t\tthis.indicatorStyle.height = this.height + 'px';\r\n\t\t\t\t\t}\r\n\t\t\t\t\ty = this.minBoundaryY;\r\n\t\t\t\t} else if (y > this.maxBoundaryY) {\r\n\t\t\t\t\tif (this.options.shrink == 'scale') {\r\n\t\t\t\t\t\tthis.height = Math.max(this.indicatorHeight - (y - this.maxPosY) * 3, 8);\r\n\t\t\t\t\t\tthis.indicatorStyle.height = this.height + 'px';\r\n\t\t\t\t\t\ty = this.maxPosY + this.indicatorHeight - this.height;\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\ty = this.maxBoundaryY;\r\n\t\t\t\t\t}\r\n\t\t\t\t} else if (this.options.shrink == 'scale' && this.height != this.indicatorHeight) {\r\n\t\t\t\t\tthis.height = this.indicatorHeight;\r\n\t\t\t\t\tthis.indicatorStyle.height = this.height + 'px';\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tthis.x = x;\r\n\t\t\tthis.y = y;\r\n\r\n\t\t\tif (this.scroller.options.useTransform) {\r\n\t\t\t\tthis.indicatorStyle[utils.style.transform] = 'translate(' + x + 'px,' + y + 'px)' + this.scroller.translateZ;\r\n\t\t\t} else {\r\n\t\t\t\tthis.indicatorStyle.left = x + 'px';\r\n\t\t\t\tthis.indicatorStyle.top = y + 'px';\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\t_pos: function (x, y) {\r\n\t\t\tif (x < 0) {\r\n\t\t\t\tx = 0;\r\n\t\t\t} else if (x > this.maxPosX) {\r\n\t\t\t\tx = this.maxPosX;\r\n\t\t\t}\r\n\r\n\t\t\tif (y < 0) {\r\n\t\t\t\ty = 0;\r\n\t\t\t} else if (y > this.maxPosY) {\r\n\t\t\t\ty = this.maxPosY;\r\n\t\t\t}\r\n\r\n\t\t\tx = this.options.listenX ? Math.round(x / this.sizeRatioX) : this.scroller.x;\r\n\t\t\ty = this.options.listenY ? Math.round(y / this.sizeRatioY) : this.scroller.y;\r\n\r\n\t\t\tthis.scroller.scrollTo(x, y);\r\n\t\t},\r\n\r\n\t\tfade: function (val, hold) {\r\n\t\t\tif (hold && !this.visible) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tclearTimeout(this.fadeTimeout);\r\n\t\t\tthis.fadeTimeout = null;\r\n\r\n\t\t\tvar time = val ? 250 : 500,\r\n\t\t\t\tdelay = val ? 0 : 300;\r\n\r\n\t\t\tval = val ? '1' : '0';\r\n\r\n\t\t\tthis.wrapperStyle[utils.style.transitionDuration] = time + 'ms';\r\n\r\n\t\t\tthis.fadeTimeout = setTimeout((function (val) {\r\n\t\t\t\tthis.wrapperStyle.opacity = val;\r\n\t\t\t\tthis.visible = +val;\r\n\t\t\t}).bind(this, val), delay);\r\n\t\t}\r\n\t};\r\n\r\n\tIScroll.utils = utils;\r\n\r\n\tif (typeof module != 'undefined' && module.exports) {\r\n\t\tmodule.exports = IScroll;\r\n\t} else if (typeof define == 'function' && define.amd) {\r\n\t\tdefine(function () { return IScroll; });\r\n\t} else {\r\n\t\twindow.IScroll = IScroll;\r\n\t}\r\n\r\n})(window, document, Math);\r\n\r\n\r\nvar secondaryNav = function () {\r\n\r\n\r\n\r\n\tvar enableScroll = false;\r\n\r\n\tvar scrollArea;\r\n\r\n\tvar lastScrollPosition = 0;\r\n\r\n\tvar activeNavTimer;\r\n\r\n\tvar lineElement;\r\n\r\n\tvar lineOverlap = 4;\r\n\r\n\tvar clickedLink = false;\r\n\r\n\r\n\r\n\tfunction init() {\r\n\r\n\r\n\r\n\t\tif (!document.querySelector('.js-secondary-nav')) {\r\n\r\n\t\t\treturn;\r\n\r\n\t\t}\r\n\r\n\r\n\r\n\t\tdocument.body.classList.add('has-secondary-nav');\r\n\r\n\t\tlineElement = document.querySelector('.js-secondary-nav-active-line');\r\n\r\n\t\tattachScrollEvent();\r\n\r\n\t\tattachResizeEvent();\r\n\r\n\t\tsetupScrollSpy();\r\n\r\n\t\tsetupScrollBar();\r\n\r\n\t\tshouldScrollBeEnabled();\r\n\r\n\t\tlastScrollPosition = window.pageYOffset;\r\n\r\n\t\tsetupSelectedLineAnimation();\r\n\r\n\t\tsetNavItemsWidth();\r\n\r\n\t\t\r\n\r\n\t}\r\n\r\n\r\n\r\n\tfunction attachScrollEvent() {\r\n\r\n\t\tvar headerElement = document.querySelector('.js-site-header');\r\n\r\n\r\n\r\n\t\tvar debouncedScrollevent = utils.debounce(\r\n\r\n\t\t\tfunction () {\r\n\r\n\t\t\t\tif (site.isLockedOut()) { // prevent showing main header when a lightbox is open\r\n\r\n\t\t\t\t\treturn;\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvar scrollPosition = window.pageYOffset;\r\n\r\n\t\t\t\tif (scrollPosition > lastScrollPosition) {\r\n\r\n\t\t\t\t\tif (scrollPosition > 5) {\r\n\r\n\t\t\t\t\t\theaderElement.classList.add('is-hidden');\r\n\r\n\t\t\t\t\t} else {\r\n\r\n\t\t\t\t\t\theaderElement.classList.remove('is-hidden');\r\n\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t} else {\r\n\r\n\t\t\t\t\theaderElement.classList.remove('is-hidden');\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t\tlastScrollPosition = scrollPosition;\r\n\r\n\t\t\t}\r\n\r\n\t\t\t, 25);\r\n\r\n\t\twindow.addEventListener('touchmove', debouncedScrollevent); // touchmove needed for iOS devices, as the scroll event does not trigger until the end\r\n\r\n\t\twindow.addEventListener('scroll', debouncedScrollevent);\r\n\r\n\t}\r\n\r\n\r\n\r\n\tfunction attachResizeEvent() {\r\n\r\n\t\tvar debouncedResizeEvent = utils.debounce(function () {\r\n\r\n\t\t\tshouldScrollBeEnabled();\r\n\r\n\t\t}, 150);\r\n\r\n\t\twindow.addEventListener('resize', debouncedResizeEvent);\r\n\r\n\t}\r\n\r\n\r\n\r\n\tfunction setupScrollSpy() {\r\n\r\n\t\tvar observer = new IntersectionObserver(handleIntersection, {\r\n\r\n\t\t\troot: null,\r\n\r\n\t\t\trootMargin: \"-10% 0px -60% 0px\",\r\n\r\n\t\t\tthreshold: 0,\r\n\r\n\t\t});\r\n\r\n\r\n\r\n\t\tdocument.querySelectorAll('.js-secondary-nav-list-item a').forEach(function (item) {\r\n\r\n\t\t\titem.addEventListener('click', function () {\r\n\r\n\t\t\t\tclickedLink = true;\r\n\r\n\t\t\t\tsetTimeout(function () {\r\n\r\n\t\t\t\t\tclickedLink = false;\r\n\r\n\t\t\t\t}, 1000);\r\n\r\n\t\t\t\tvar sectionId = item.getAttribute(\"href\").replace('#', '');\r\n\r\n\t\t\t\tupdateNavigation(sectionId);\r\n\r\n\t\t\t});\r\n\r\n\t\t\tvar section = document.querySelector(item.getAttribute(\"href\"));\r\n\r\n\t\t\tif(section) {\r\n\r\n\t\t\t\tobserver.observe(section);\r\n\r\n\t\t\t}\r\n\r\n\t\t});\r\n\r\n\r\n\r\n\t\tfunction handleIntersection(entries, observer) {\r\n\r\n\t\t\tentries.forEach(function(entry) {\r\n\r\n\t\t\t\tif (entry.isIntersecting && entry.target && entry.target.getAttribute) {\r\n\r\n\t\t\t\t\tvar sectionId = entry.target.getAttribute('id');\r\n\r\n\t\t\t\t\tif (sectionId && !clickedLink) {\r\n\r\n\t\t\t\t\t\tupdateNavigation(sectionId);\r\n\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t});\r\n\r\n\t\t}\r\n\r\n\t}\r\n\r\n\t\r\n\r\n\tfunction updateNavigation(sectionId) {\r\n\r\n\t\tvar correspondingLink = document.querySelector('.js-secondary-nav-list-item a[href=\"#' + sectionId + '\"]');\r\n\r\n\t\tanimatedSelectedLine(correspondingLink);\r\n\r\n\r\n\r\n\t\tvar listItems = document.querySelectorAll('.js-secondary-nav-list-item');\r\n\r\n\t\tlistItems.forEach(function(element) {\r\n\r\n\t\t\telement.classList.remove('active');\r\n\r\n\t\t});\r\n\r\n\r\n\r\n\t\tvar currentItem = correspondingLink.closest(\".js-secondary-nav-list-item\");\r\n\r\n\r\n\r\n\t\tcurrentItem.classList.add('active');\r\n\r\n\r\n\r\n\t\tif (activeNavTimer) {\r\n\r\n\t\t\tclearTimeout(activeNavTimer);\r\n\r\n\t\t}\r\n\r\n\r\n\r\n\t\t// scroll the active link into view\r\n\r\n\t\tactiveNavTimer = setTimeout(function () {\r\n\r\n\t\t\tscrollArea.scrollToElement(currentItem, 250, 0, 0, linearEasing());\r\n\r\n\t\t}, 400);\r\n\r\n\r\n\r\n\t}\r\n\r\n\r\n\r\n\tfunction setScrollerWidth(includeSpaceForLastItem) {\r\n\r\n\t\tvar scrollerElement = document.querySelector('.js-secondary-nav-nav');\r\n\r\n\t\tif (includeSpaceForLastItem) {\r\n\r\n\t\t\tvar navLinks = document.querySelectorAll('.js-secondary-nav-list .m-secondary-nav__link');\r\n\r\n\t\t\tvar widthOfLastItem = navLinks[navLinks.length - 1].clientWidth;\r\n\r\n\t\t\tscrollerElement.style.width = document.querySelector('.js-secondary-nav-list').clientWidth + (document.querySelector('.js-secondary-nav-scroller').clientWidth - widthOfLastItem) + 'px';\r\n\r\n\t\t} else {\r\n\r\n\t\t\tscrollerElement.style.width = document.querySelector('.js-secondary-nav-list').clientWidth + 'px';\r\n\r\n\t\t}\r\n\r\n\t\tif (scrollArea) {\r\n\r\n\t\t\tscrollArea.refresh();\r\n\r\n\t\t}\r\n\r\n\r\n\r\n\t}\r\n\r\n\r\n\r\n\tfunction shouldScrollBeEnabled() {\r\n\r\n\t\tvar navItems = document.querySelectorAll('.js-secondary-nav-list-item');\r\n\r\n\t\tif (navItems.length) {\r\n\r\n\t\t\tdocument.querySelector('.js-secondary-nav-nav').style.width = 'auto';\r\n\r\n\t\t\tvar lastItem = navItems[navItems.length - 1];\r\n\r\n\t\t\tenableScroll = outOfBounds(lastItem);\r\n\r\n\t\t\tsetScrollerWidth(enableScroll);\r\n\r\n\t\t} else {\r\n\r\n\t\t\tenableScroll = false;\r\n\r\n\t\t}\r\n\r\n\t}\r\n\r\n\r\n\r\n\tfunction outOfBounds(el) {\r\n\r\n\t\tif ((el.offsetLeft + el.clientWidth) > document.querySelector('.js-secondary-nav-inner').clientWidth - document.querySelector('.js-secondary-nav-title').clientWidth) {\r\n\r\n\t\t\treturn true;\r\n\r\n\t\t} else {\r\n\r\n\t\t\treturn false;\r\n\r\n\t\t}\r\n\r\n\t} \r\n\r\n\r\n\r\n\tfunction setupScrollBar() {\r\n\r\n\r\n\r\n\t\tscrollArea = new IScroll('.js-secondary-nav-scroller', {\r\n\r\n\t\t\tscrollbars: false,\r\n\r\n\t\t\tscrollX: true,\r\n\r\n\t\t\tscrollY: false,\r\n\r\n\t\t\tclick: true\r\n\r\n\t\t});\r\n\r\n\r\n\r\n\t\tscrollArea.on('beforeScrollStart', function (e) {\r\n\r\n\r\n\r\n\t\t\tif (enableScroll) {\r\n\r\n\t\t\t\tscrollArea.enable();\r\n\r\n\t\t\t} else {\r\n\r\n\t\t\t\tscrollArea.disable();\r\n\r\n\t\t\t}\r\n\r\n\r\n\r\n\t\t});\r\n\r\n\r\n\r\n\t}\r\n\r\n\r\n\r\n\tfunction linearEasing() {\r\n\r\n\t\treturn {\r\n\r\n\t\t\tstyle: 'cubic-bezier(0,0,1,1)',\r\n\r\n\t\t\tfn: function (k) { return k; }\r\n\r\n\t\t};\r\n\r\n\t}\r\n\r\n\r\n\r\n\tfunction setupSelectedLineAnimation() {\r\n\r\n\r\n\r\n\t\tvar debouncedResizeEvent = utils.debounce(function () {\r\n\r\n\t\t\tvar currentActiveLink = document.querySelector('.js-secondary-nav-list-item.active .js-secondary-nav-list-item-link');\r\n\r\n\t\t\tif (currentActiveLink) {\r\n\r\n\t\t\t\tanimatedSelectedLine(currentActiveLink);\r\n\r\n\t\t\t}\r\n\r\n\t\t}, 150);\r\n\r\n\t\twindow.addEventListener('resize', debouncedResizeEvent);\r\n\r\n\r\n\r\n\t}\r\n\r\n\r\n\r\n\tfunction animatedSelectedLine(activeElement) {\r\n\r\n\r\n\r\n\t\tif (!window.matchMedia('(min-width: 768px)').matches) {\r\n\r\n\t\t\treturn;\r\n\r\n\t\t}\r\n\r\n\r\n\r\n\t\tshowSelectedLine();\r\n\r\n\t\tvar paddingLeftOfActiveLink = parseInt(window.getComputedStyle(activeElement, null).getPropertyValue('padding-left'));\r\n\r\n\t\tvar paddingRightOfActiveLink = parseInt(window.getComputedStyle(activeElement, null).getPropertyValue('padding-right'));\r\n\r\n\t\tvar positionOfActiveItem = activeElement.offsetLeft + paddingLeftOfActiveLink;\r\n\r\n\t\tvar widthOfActiveItem = activeElement.getBoundingClientRect().width - paddingLeftOfActiveLink - paddingRightOfActiveLink;\r\n\r\n\r\n\r\n\t\tlineElement.style.transform = \"translateX(\" + (positionOfActiveItem - lineOverlap) + \"px)\";\r\n\r\n\t\tlineElement.style.width = widthOfActiveItem + (lineOverlap * 2) + \"px\";\r\n\r\n\r\n\r\n\t}\r\n\r\n\r\n\r\n\tfunction showSelectedLine() {\r\n\r\n\t\tlineElement.classList.add('is-active');\r\n\r\n\t}\r\n\r\n\r\n\r\n\tfunction hideSelectedLine() {\r\n\r\n\t\tlineElement.classList.remove('is-active');\r\n\r\n\t}\r\n\r\n\r\n\r\n\tfunction setNavItemsWidth() {\r\n\r\n\t\tvar navItems = document.querySelectorAll('.js-secondary-nav-list-item');\r\n\r\n\t\tfor (var i = 0, len = navItems.length; i < len; i++) {\r\n\r\n\r\n\r\n\t\t\tnavItems[i].style.width = navItems[i].clientWidth + 'px';\r\n\r\n\r\n\r\n\t\t}\r\n\r\n\t}\r\n\r\n\r\n\r\n\treturn {\r\n\r\n\t\tinit: init\r\n\r\n\t};\r\n\r\n\r\n\r\n}();\r\n\r\n\r\n\r\n$(function () {\r\n\r\n\tsecondaryNav.init();\r\n\r\n});"]}