De promotiewebsite die de reguliere site vervangt tijdens de Kick-In. https://join.harambee.utwente.nl
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
kick-in-promo-site/vendors/scrolloverflow.min.js.map

1 lines
129 KiB

{"version":3,"sources":["scrolloverflow.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","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","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","eventPassthrough","scrollX","freeScroll","resizePolling","position","shrinkScrollbars","invertWheelDirection","x","y","directionX","directionY","_events","_init","refresh","scrollTo","enable","createDefaultScrollbar","direction","interactive","scrollbar","indicator","cssText","height","width","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","offsetHeight","clientWidth","clientHeight","scrollerWidth","offsetWidth","scrollerHeight","wrapperOffset","on","off","index","indexOf","splice","apply","slice","call","arguments","scrollBy","transitionType","_transitionTimingFunction","_animate","scrollToElement","offsetX","offsetY","nodeType","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","fp_scrolloverflow","SCROLLABLE","SCROLLABLE_SEL","ACTIVE_SEL","SECTION_SEL","SECTION_ACTIVE_SEL","SLIDE_SEL","SLIDE_ACTIVE_SEL","TABLE_CELL_SEL","RESPONSIVE","AUTO_HEIGHT_RESPONSIVE","getPaddings","element","section","fp_utils","closest","parseInt","scrollBarHandler","createScrollBarForAll","scrollOverflowHandler","body","forEachSectionAndSlide","createScrollBar","css","overflow","contentHeight","wrap","wrapContent","scrollable","paddings","scrollHeight","verticalCentered","$","getWindowHeight","update","wrapInner","create","iscrollOptions","forEach","slides","slide","init","readyState","fullpage_api","shared","afterRenderActions","wheelOn","wheelOff","iscrollHandler","refreshId","iScrollInstances","hideScrollbars","isTouch","msMaxTouchPoints","deepExtend","scrollOverflowOptions","toggleWheel","value","item","iScrollInstance","fp_iscrollInstance","onLeave","beforeLeave","afterLoad","instance","isScrolled","getScrollTop","activeSection","outerHTML","innerHTML","silentMoveTo"],"mappings":"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","file":"scrolloverflow.min.js","sourcesContent":["/**\n* Customized version of iScroll.js 0.0.9\n* It fixes bugs affecting its integration with fullpage.js\n* @license\n*/\n/*! iScroll v5.2.0 ~ (c) 2008-2016 Matteo Spinelli ~ http://cubiq.org/license */\n(function (window, document, Math) {\nvar rAF = window.requestAnimationFrame ||\n window.webkitRequestAnimationFrame ||\n window.mozRequestAnimationFrame ||\n window.oRequestAnimationFrame ||\n window.msRequestAnimationFrame ||\n function (callback) { window.setTimeout(callback, 1000 / 60); };\n\nvar utils = (function () {\n var me = {};\n\n var _elementStyle = document.createElement('div').style;\n var _vendor = (function () {\n var vendors = ['t', 'webkitT', 'MozT', 'msT', 'OT'],\n transform,\n i = 0,\n l = vendors.length;\n\n for ( ; i < l; i++ ) {\n transform = vendors[i] + 'ransform';\n if ( transform in _elementStyle ) return vendors[i].substr(0, vendors[i].length-1);\n }\n\n return false;\n })();\n\n function _prefixStyle (style) {\n if ( _vendor === false ) return false;\n if ( _vendor === '' ) return style;\n return _vendor + style.charAt(0).toUpperCase() + style.substr(1);\n }\n\n me.getTime = Date.now || function getTime () { return new Date().getTime(); };\n\n me.extend = function (target, obj) {\n for ( var i in obj ) {\n target[i] = obj[i];\n }\n };\n\n me.addEvent = function (el, type, fn, capture) {\n el.addEventListener(type, fn, !!capture);\n };\n\n me.removeEvent = function (el, type, fn, capture) {\n el.removeEventListener(type, fn, !!capture);\n };\n\n me.prefixPointerEvent = function (pointerEvent) {\n return window.MSPointerEvent ?\n 'MSPointer' + pointerEvent.charAt(7).toUpperCase() + pointerEvent.substr(8):\n pointerEvent;\n };\n\n me.momentum = function (current, start, time, lowerMargin, wrapperSize, deceleration) {\n var distance = current - start,\n speed = Math.abs(distance) / time,\n destination,\n duration;\n\n deceleration = deceleration === undefined ? 0.0006 : deceleration;\n\n destination = current + ( speed * speed ) / ( 2 * deceleration ) * ( distance < 0 ? -1 : 1 );\n duration = speed / deceleration;\n\n if ( destination < lowerMargin ) {\n destination = wrapperSize ? lowerMargin - ( wrapperSize / 2.5 * ( speed / 8 ) ) : lowerMargin;\n distance = Math.abs(destination - current);\n duration = distance / speed;\n } else if ( destination > 0 ) {\n destination = wrapperSize ? wrapperSize / 2.5 * ( speed / 8 ) : 0;\n distance = Math.abs(current) + destination;\n duration = distance / speed;\n }\n\n return {\n destination: Math.round(destination),\n duration: duration\n };\n };\n\n var _transform = _prefixStyle('transform');\n\n me.extend(me, {\n hasTransform: _transform !== false,\n hasPerspective: _prefixStyle('perspective') in _elementStyle,\n hasTouch: 'ontouchstart' in window,\n hasPointer: !!(window.PointerEvent || window.MSPointerEvent), // IE10 is prefixed\n hasTransition: _prefixStyle('transition') in _elementStyle\n });\n\n /*\n This should find all Android browsers lower than build 535.19 (both stock browser and webview)\n - galaxy S2 is ok\n - 2.3.6 : `AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1`\n - 4.0.4 : `AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30`\n - galaxy S3 is badAndroid (stock brower, webview)\n `AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30`\n - galaxy S4 is badAndroid (stock brower, webview)\n `AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30`\n - galaxy S5 is OK\n `AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Mobile Safari/537.36 (Chrome/)`\n - galaxy S6 is OK\n `AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Mobile Safari/537.36 (Chrome/)`\n */\n me.isBadAndroid = (function() {\n var appVersion = window.navigator.appVersion;\n // Android browser is not a chrome browser.\n if (/Android/.test(appVersion) && !(/Chrome\\/\\d/.test(appVersion))) {\n var safariVersion = appVersion.match(/Safari\\/(\\d+.\\d)/);\n if(safariVersion && typeof safariVersion === \"object\" && safariVersion.length >= 2) {\n return parseFloat(safariVersion[1]) < 535.19;\n } else {\n return true;\n }\n } else {\n return false;\n }\n })();\n\n me.extend(me.style = {}, {\n transform: _transform,\n transitionTimingFunction: _prefixStyle('transitionTimingFunction'),\n transitionDuration: _prefixStyle('transitionDuration'),\n transitionDelay: _prefixStyle('transitionDelay'),\n transformOrigin: _prefixStyle('transformOrigin')\n });\n\n me.hasClass = function (e, c) {\n var re = new RegExp(\"(^|\\\\s)\" + c + \"(\\\\s|$)\");\n return re.test(e.className);\n };\n\n me.addClass = function (e, c) {\n if ( me.hasClass(e, c) ) {\n return;\n }\n\n var newclass = e.className.split(' ');\n newclass.push(c);\n e.className = newclass.join(' ');\n };\n\n me.removeClass = function (e, c) {\n if ( !me.hasClass(e, c) ) {\n return;\n }\n\n var re = new RegExp(\"(^|\\\\s)\" + c + \"(\\\\s|$)\", 'g');\n e.className = e.className.replace(re, ' ');\n };\n\n me.offset = function (el) {\n var left = -el.offsetLeft,\n top = -el.offsetTop;\n\n // jshint -W084\n while (el = el.offsetParent) {\n left -= el.offsetLeft;\n top -= el.offsetTop;\n }\n // jshint +W084\n\n return {\n left: left,\n top: top\n };\n };\n\n me.preventDefaultException = function (el, exceptions) {\n for ( var i in exceptions ) {\n if ( exceptions[i].test(el[i]) ) {\n return true;\n }\n }\n\n return false;\n };\n\n me.extend(me.eventType = {}, {\n touchstart: 1,\n touchmove: 1,\n touchend: 1,\n\n mousedown: 2,\n mousemove: 2,\n mouseup: 2,\n\n pointerdown: 3,\n pointermove: 3,\n pointerup: 3,\n\n MSPointerDown: 3,\n MSPointerMove: 3,\n MSPointerUp: 3\n });\n\n me.extend(me.ease = {}, {\n quadratic: {\n style: 'cubic-bezier(0.25, 0.46, 0.45, 0.94)',\n fn: function (k) {\n return k * ( 2 - k );\n }\n },\n circular: {\n style: 'cubic-bezier(0.1, 0.57, 0.1, 1)', // Not properly \"circular\" but this looks better, it should be (0.075, 0.82, 0.165, 1)\n fn: function (k) {\n return Math.sqrt( 1 - ( --k * k ) );\n }\n },\n back: {\n style: 'cubic-bezier(0.175, 0.885, 0.32, 1.275)',\n fn: function (k) {\n var b = 4;\n return ( k = k - 1 ) * k * ( ( b + 1 ) * k + b ) + 1;\n }\n },\n bounce: {\n style: '',\n fn: function (k) {\n if ( ( k /= 1 ) < ( 1 / 2.75 ) ) {\n return 7.5625 * k * k;\n } else if ( k < ( 2 / 2.75 ) ) {\n return 7.5625 * ( k -= ( 1.5 / 2.75 ) ) * k + 0.75;\n } else if ( k < ( 2.5 / 2.75 ) ) {\n return 7.5625 * ( k -= ( 2.25 / 2.75 ) ) * k + 0.9375;\n } else {\n return 7.5625 * ( k -= ( 2.625 / 2.75 ) ) * k + 0.984375;\n }\n }\n },\n elastic: {\n style: '',\n fn: function (k) {\n var f = 0.22,\n e = 0.4;\n\n if ( k === 0 ) { return 0; }\n if ( k == 1 ) { return 1; }\n\n return ( e * Math.pow( 2, - 10 * k ) * Math.sin( ( k - f / 4 ) * ( 2 * Math.PI ) / f ) + 1 );\n }\n }\n });\n\n me.tap = function (e, eventName) {\n var ev = document.createEvent('Event');\n ev.initEvent(eventName, true, true);\n ev.pageX = e.pageX;\n ev.pageY = e.pageY;\n e.target.dispatchEvent(ev);\n };\n\n me.click = function (e) {\n var target = e.target,\n ev;\n\n if ( !(/(SELECT|INPUT|TEXTAREA)/i).test(target.tagName) ) {\n // https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent/initMouseEvent\n // initMouseEvent is deprecated.\n ev = document.createEvent(window.MouseEvent ? 'MouseEvents' : 'Event');\n ev.initEvent('click', true, true);\n ev.view = e.view || window;\n ev.detail = 1;\n ev.screenX = target.screenX || 0;\n ev.screenY = target.screenY || 0;\n ev.clientX = target.clientX || 0;\n ev.clientY = target.clientY || 0;\n ev.ctrlKey = !!e.ctrlKey;\n ev.altKey = !!e.altKey;\n ev.shiftKey = !!e.shiftKey;\n ev.metaKey = !!e.metaKey;\n ev.button = 0;\n ev.relatedTarget = null;\n ev._constructed = true;\n target.dispatchEvent(ev);\n }\n };\n\n return me;\n})();\nfunction IScroll (el, options) {\n this.wrapper = typeof el == 'string' ? document.querySelector(el) : el;\n this.scroller = this.wrapper.children[0];\n this.scrollerStyle = this.scroller.style; // cache style for better performance\n\n this.options = {\n\n resizeScrollbars: true,\n\n mouseWheelSpeed: 20,\n\n snapThreshold: 0.334,\n\n// INSERT POINT: OPTIONS\n disablePointer : !utils.hasPointer,\n disableTouch : utils.hasPointer || !utils.hasTouch,\n disableMouse : utils.hasPointer || utils.hasTouch,\n startX: 0,\n startY: 0,\n scrollY: true,\n directionLockThreshold: 5,\n momentum: true,\n\n bounce: true,\n bounceTime: 600,\n bounceEasing: '',\n\n preventDefault: true,\n preventDefaultException: { tagName: /^(INPUT|TEXTAREA|BUTTON|SELECT|LABEL)$/ },\n\n HWCompositing: true,\n useTransition: true,\n useTransform: true,\n bindToWrapper: typeof window.onmousedown === \"undefined\"\n };\n\n for ( var i in options ) {\n this.options[i] = options[i];\n }\n\n // Normalize options\n this.translateZ = this.options.HWCompositing && utils.hasPerspective ? ' translateZ(0)' : '';\n\n this.options.useTransition = utils.hasTransition && this.options.useTransition;\n this.options.useTransform = utils.hasTransform && this.options.useTransform;\n\n this.options.eventPassthrough = this.options.eventPassthrough === true ? 'vertical' : this.options.eventPassthrough;\n this.options.preventDefault = !this.options.eventPassthrough && this.options.preventDefault;\n\n // If you want eventPassthrough I have to lock one of the axes\n this.options.scrollY = this.options.eventPassthrough == 'vertical' ? false : this.options.scrollY;\n this.options.scrollX = this.options.eventPassthrough == 'horizontal' ? false : this.options.scrollX;\n\n // With eventPassthrough we also need lockDirection mechanism\n this.options.freeScroll = this.options.freeScroll && !this.options.eventPassthrough;\n this.options.directionLockThreshold = this.options.eventPassthrough ? 0 : this.options.directionLockThreshold;\n\n this.options.bounceEasing = typeof this.options.bounceEasing == 'string' ? utils.ease[this.options.bounceEasing] || utils.ease.circular : this.options.bounceEasing;\n\n this.options.resizePolling = this.options.resizePolling === undefined ? 60 : this.options.resizePolling;\n\n if ( this.options.tap === true ) {\n this.options.tap = 'tap';\n }\n\n // https://github.com/cubiq/iscroll/issues/1029\n if (!this.options.useTransition && !this.options.useTransform) {\n if(!(/relative|absolute/i).test(this.scrollerStyle.position)) {\n this.scrollerStyle.position = \"relative\";\n }\n }\n\n if ( this.options.shrinkScrollbars == 'scale' ) {\n this.options.useTransition = false;\n }\n\n this.options.invertWheelDirection = this.options.invertWheelDirection ? -1 : 1;\n\n// INSERT POINT: NORMALIZATION\n\n // Some defaults\n this.x = 0;\n this.y = 0;\n this.directionX = 0;\n this.directionY = 0;\n this._events = {};\n\n// INSERT POINT: DEFAULTS\n\n this._init();\n this.refresh();\n\n this.scrollTo(this.options.startX, this.options.startY);\n this.enable();\n}\n\nIScroll.prototype = {\n version: '5.2.0',\n\n _init: function () {\n this._initEvents();\n\n if ( this.options.scrollbars || this.options.indicators ) {\n this._initIndicators();\n }\n\n if ( this.options.mouseWheel ) {\n this._initWheel();\n }\n\n if ( this.options.snap ) {\n this._initSnap();\n }\n\n if ( this.options.keyBindings ) {\n this._initKeys();\n }\n\n// INSERT POINT: _init\n\n },\n\n destroy: function () {\n this._initEvents(true);\n clearTimeout(this.resizeTimeout);\n this.resizeTimeout = null;\n this._execEvent('destroy');\n },\n\n _transitionEnd: function (e) {\n if ( e.target != this.scroller || !this.isInTransition ) {\n return;\n }\n\n this._transitionTime();\n if ( !this.resetPosition(this.options.bounceTime) ) {\n this.isInTransition = false;\n this._execEvent('scrollEnd');\n }\n },\n\n _start: function (e) {\n // React to left mouse button only\n if ( utils.eventType[e.type] != 1 ) {\n // for button property\n // http://unixpapa.com/js/mouse.html\n var button;\n if (!e.which) {\n /* IE case */\n button = (e.button < 2) ? 0 :\n ((e.button == 4) ? 1 : 2);\n } else {\n /* All others */\n button = e.button;\n }\n if ( button !== 0 ) {\n return;\n }\n }\n\n if ( !this.enabled || (this.initiated && utils.eventType[e.type] !== this.initiated) ) {\n return;\n }\n\n if ( this.options.preventDefault && !utils.isBadAndroid && !utils.preventDefaultException(e.target, this.options.preventDefaultException) ) {\n e.preventDefault();\n }\n\n var point = e.touches ? e.touches[0] : e,\n pos;\n\n this.initiated = utils.eventType[e.type];\n this.moved = false;\n this.distX = 0;\n this.distY = 0;\n this.directionX = 0;\n this.directionY = 0;\n this.directionLocked = 0;\n\n this.startTime = utils.getTime();\n\n if ( this.options.useTransition && this.isInTransition ) {\n this._transitionTime();\n this.isInTransition = false;\n pos = this.getComputedPosition();\n this._translate(Math.round(pos.x), Math.round(pos.y));\n this._execEvent('scrollEnd');\n } else if ( !this.options.useTransition && this.isAnimating ) {\n this.isAnimating = false;\n this._execEvent('scrollEnd');\n }\n\n this.startX = this.x;\n this.startY = this.y;\n this.absStartX = this.x;\n this.absStartY = this.y;\n this.pointX = point.pageX;\n this.pointY = point.pageY;\n\n this._execEvent('beforeScrollStart');\n },\n\n _move: function (e) {\n if ( !this.enabled || utils.eventType[e.type] !== this.initiated ) {\n return;\n }\n\n if ( this.options.preventDefault ) { // increases performance on Android? TODO: check!\n e.preventDefault();\n }\n\n var point = e.touches ? e.touches[0] : e,\n deltaX = point.pageX - this.pointX,\n deltaY = point.pageY - this.pointY,\n timestamp = utils.getTime(),\n newX, newY,\n absDistX, absDistY;\n\n this.pointX = point.pageX;\n this.pointY = point.pageY;\n\n this.distX += deltaX;\n this.distY += deltaY;\n absDistX = Math.abs(this.distX);\n absDistY = Math.abs(this.distY);\n\n // We need to move at least 10 pixels for the scrolling to initiate\n if ( timestamp - this.endTime > 300 && (absDistX < 10 && absDistY < 10) ) {\n return;\n }\n\n // If you are scrolling in one direction lock the other\n if ( !this.directionLocked && !this.options.freeScroll ) {\n if ( absDistX > absDistY + this.options.directionLockThreshold ) {\n this.directionLocked = 'h'; // lock horizontally\n } else if ( absDistY >= absDistX + this.options.directionLockThreshold ) {\n this.directionLocked = 'v'; // lock vertically\n } else {\n this.directionLocked = 'n'; // no lock\n }\n }\n\n if ( this.directionLocked == 'h' ) {\n if ( this.options.eventPassthrough == 'vertical' ) {\n e.preventDefault();\n } else if ( this.options.eventPassthrough == 'horizontal' ) {\n this.initiated = false;\n return;\n }\n\n deltaY = 0;\n } else if ( this.directionLocked == 'v' ) {\n if ( this.options.eventPassthrough == 'horizontal' ) {\n e.preventDefault();\n } else if ( this.options.eventPassthrough == 'vertical' ) {\n this.initiated = false;\n return;\n }\n\n deltaX = 0;\n }\n\n deltaX = this.hasHorizontalScroll ? deltaX : 0;\n deltaY = this.hasVerticalScroll ? deltaY : 0;\n\n newX = this.x + deltaX;\n newY = this.y + deltaY;\n\n // Slow down if outside of the boundaries\n if ( newX > 0 || newX < this.maxScrollX ) {\n newX = this.options.bounce ? this.x + deltaX / 3 : newX > 0 ? 0 : this.maxScrollX;\n }\n if ( newY > 0 || newY < this.maxScrollY ) {\n newY = this.options.bounce ? this.y + deltaY / 3 : newY > 0 ? 0 : this.maxScrollY;\n }\n\n this.directionX = deltaX > 0 ? -1 : deltaX < 0 ? 1 : 0;\n this.directionY = deltaY > 0 ? -1 : deltaY < 0 ? 1 : 0;\n\n if ( !this.moved ) {\n this._execEvent('scrollStart');\n }\n\n this.moved = true;\n\n this._translate(newX, newY);\n\n/* REPLACE START: _move */\n\n if ( timestamp - this.startTime > 300 ) {\n this.startTime = timestamp;\n this.startX = this.x;\n this.startY = this.y;\n }\n\n/* REPLACE END: _move */\n\n },\n\n _end: function (e) {\n if ( !this.enabled || utils.eventType[e.type] !== this.initiated ) {\n return;\n }\n\n if ( this.options.preventDefault && !utils.preventDefaultException(e.target, this.options.preventDefaultException) ) {\n e.preventDefault();\n }\n\n var point = e.changedTouches ? e.changedTouches[0] : e,\n momentumX,\n momentumY,\n duration = utils.getTime() - this.startTime,\n newX = Math.round(this.x),\n newY = Math.round(this.y),\n distanceX = Math.abs(newX - this.startX),\n distanceY = Math.abs(newY - this.startY),\n time = 0,\n easing = '';\n\n this.isInTransition = 0;\n this.initiated = 0;\n this.endTime = utils.getTime();\n\n // reset if we are outside of the boundaries\n if ( this.resetPosition(this.options.bounceTime) ) {\n return;\n }\n\n this.scrollTo(newX, newY); // ensures that the last position is rounded\n\n // we scrolled less than 10 pixels\n if ( !this.moved ) {\n if ( this.options.tap ) {\n utils.tap(e, this.options.tap);\n }\n\n if ( this.options.click ) {\n utils.click(e);\n }\n\n this._execEvent('scrollCancel');\n return;\n }\n\n if ( this._events.flick && duration < 200 && distanceX < 100 && distanceY < 100 ) {\n this._execEvent('flick');\n return;\n }\n\n // start momentum animation if needed\n if ( this.options.momentum && duration < 300 ) {\n momentumX = this.hasHorizontalScroll ? utils.momentum(this.x, this.startX, duration, this.maxScrollX, this.options.bounce ? this.wrapperWidth : 0, this.options.deceleration) : { destination: newX, duration: 0 };\n momentumY = this.hasVerticalScroll ? utils.momentum(this.y, this.startY, duration, this.maxScrollY, this.options.bounce ? this.wrapperHeight : 0, this.options.deceleration) : { destination: newY, duration: 0 };\n newX = momentumX.destination;\n newY = momentumY.destination;\n time = Math.max(momentumX.duration, momentumY.duration);\n this.isInTransition = 1;\n }\n\n\n if ( this.options.snap ) {\n var snap = this._nearestSnap(newX, newY);\n this.currentPage = snap;\n time = this.options.snapSpeed || Math.max(\n Math.max(\n Math.min(Math.abs(newX - snap.x), 1000),\n Math.min(Math.abs(newY - snap.y), 1000)\n ), 300);\n newX = snap.x;\n newY = snap.y;\n\n this.directionX = 0;\n this.directionY = 0;\n easing = this.options.bounceEasing;\n }\n\n// INSERT POINT: _end\n\n if ( newX != this.x || newY != this.y ) {\n // change easing function when scroller goes out of the boundaries\n if ( newX > 0 || newX < this.maxScrollX || newY > 0 || newY < this.maxScrollY ) {\n easing = utils.ease.quadratic;\n }\n\n this.scrollTo(newX, newY, time, easing);\n return;\n }\n\n this._execEvent('scrollEnd');\n },\n\n _resize: function () {\n var that = this;\n\n clearTimeout(this.resizeTimeout);\n\n this.resizeTimeout = setTimeout(function () {\n that.refresh();\n }, this.options.resizePolling);\n },\n\n resetPosition: function (time) {\n var x = this.x,\n y = this.y;\n\n time = time || 0;\n\n if ( !this.hasHorizontalScroll || this.x > 0 ) {\n x = 0;\n } else if ( this.x < this.maxScrollX ) {\n x = this.maxScrollX;\n }\n\n if ( !this.hasVerticalScroll || this.y > 0 ) {\n y = 0;\n } else if ( this.y < this.maxScrollY ) {\n y = this.maxScrollY;\n }\n\n if ( x == this.x && y == this.y ) {\n return false;\n }\n\n this.scrollTo(x, y, time, this.options.bounceEasing);\n\n return true;\n },\n\n disable: function () {\n this.enabled = false;\n },\n\n enable: function () {\n this.enabled = true;\n },\n\n refresh: function () {\n var rf = this.wrapper.offsetHeight; // Force reflow\n\n this.wrapperWidth = this.wrapper.clientWidth;\n this.wrapperHeight = this.wrapper.clientHeight;\n\n/* REPLACE START: refresh */\n\n this.scrollerWidth = this.scroller.offsetWidth;\n this.scrollerHeight = this.scroller.offsetHeight;\n\n this.maxScrollX = this.wrapperWidth - this.scrollerWidth;\n this.maxScrollY = this.wrapperHeight - this.scrollerHeight;\n\n/* REPLACE END: refresh */\n\n this.hasHorizontalScroll = this.options.scrollX && this.maxScrollX < 0;\n this.hasVerticalScroll = this.options.scrollY && this.maxScrollY < 0;\n\n if ( !this.hasHorizontalScroll ) {\n this.maxScrollX = 0;\n this.scrollerWidth = this.wrapperWidth;\n }\n\n if ( !this.hasVerticalScroll ) {\n this.maxScrollY = 0;\n this.scrollerHeight = this.wrapperHeight;\n }\n\n this.endTime = 0;\n this.directionX = 0;\n this.directionY = 0;\n\n this.wrapperOffset = utils.offset(this.wrapper);\n\n this._execEvent('refresh');\n\n this.resetPosition();\n\n// INSERT POINT: _refresh\n\n },\n\n on: function (type, fn) {\n if ( !this._events[type] ) {\n this._events[type] = [];\n }\n\n this._events[type].push(fn);\n },\n\n off: function (type, fn) {\n if ( !this._events[type] ) {\n return;\n }\n\n var index = this._events[type].indexOf(fn);\n\n if ( index > -1 ) {\n this._events[type].splice(index, 1);\n }\n },\n\n _execEvent: function (type) {\n if ( !this._events[type] ) {\n return;\n }\n\n var i = 0,\n l = this._events[type].length;\n\n if ( !l ) {\n return;\n }\n\n for ( ; i < l; i++ ) {\n this._events[type][i].apply(this, [].slice.call(arguments, 1));\n }\n },\n\n scrollBy: function (x, y, time, easing) {\n x = this.x + x;\n y = this.y + y;\n time = time || 0;\n\n this.scrollTo(x, y, time, easing);\n },\n\n scrollTo: function (x, y, time, easing) {\n easing = easing || utils.ease.circular;\n\n this.isInTransition = this.options.useTransition && time > 0;\n var transitionType = this.options.useTransition && easing.style;\n if ( !time || transitionType ) {\n if(transitionType) {\n this._transitionTimingFunction(easing.style);\n this._transitionTime(time);\n }\n this._translate(x, y);\n } else {\n this._animate(x, y, time, easing.fn);\n }\n },\n\n scrollToElement: function (el, time, offsetX, offsetY, easing) {\n el = el.nodeType ? el : this.scroller.querySelector(el);\n\n if ( !el ) {\n return;\n }\n\n var pos = utils.offset(el);\n\n pos.left -= this.wrapperOffset.left;\n pos.top -= this.wrapperOffset.top;\n\n // if offsetX/Y are true we center the element to the screen\n if ( offsetX === true ) {\n offsetX = Math.round(el.offsetWidth / 2 - this.wrapper.offsetWidth / 2);\n }\n if ( offsetY === true ) {\n offsetY = Math.round(el.offsetHeight / 2 - this.wrapper.offsetHeight / 2);\n }\n\n pos.left -= offsetX || 0;\n pos.top -= offsetY || 0;\n\n pos.left = pos.left > 0 ? 0 : pos.left < this.maxScrollX ? this.maxScrollX : pos.left;\n pos.top = pos.top > 0 ? 0 : pos.top < this.maxScrollY ? this.maxScrollY : pos.top;\n\n time = time === undefined || time === null || time === 'auto' ? Math.max(Math.abs(this.x-pos.left), Math.abs(this.y-pos.top)) : time;\n\n this.scrollTo(pos.left, pos.top, time, easing);\n },\n\n _transitionTime: function (time) {\n if (!this.options.useTransition) {\n return;\n }\n time = time || 0;\n var durationProp = utils.style.transitionDuration;\n if(!durationProp) {\n return;\n }\n\n this.scrollerStyle[durationProp] = time + 'ms';\n\n if ( !time && utils.isBadAndroid ) {\n this.scrollerStyle[durationProp] = '0.0001ms';\n // remove 0.0001ms\n var self = this;\n rAF(function() {\n if(self.scrollerStyle[durationProp] === '0.0001ms') {\n self.scrollerStyle[durationProp] = '0s';\n }\n });\n }\n\n\n if ( this.indicators ) {\n for ( var i = this.indicators.length; i--; ) {\n this.indicators[i].transitionTime(time);\n }\n }\n\n\n// INSERT POINT: _transitionTime\n\n },\n\n _transitionTimingFunction: function (easing) {\n this.scrollerStyle[utils.style.transitionTimingFunction] = easing;\n\n\n if ( this.indicators ) {\n for ( var i = this.indicators.length; i--; ) {\n this.indicators[i].transitionTimingFunction(easing);\n }\n }\n\n\n// INSERT POINT: _transitionTimingFunction\n\n },\n\n _translate: function (x, y) {\n if ( this.options.useTransform ) {\n\n/* REPLACE START: _translate */\n\n this.scrollerStyle[utils.style.transform] = 'translate(' + x + 'px,' + y + 'px)' + this.translateZ;\n\n/* REPLACE END: _translate */\n\n } else {\n x = Math.round(x);\n y = Math.round(y);\n this.scrollerStyle.left = x + 'px';\n this.scrollerStyle.top = y + 'px';\n }\n\n this.x = x;\n this.y = y;\n\n\n if ( this.indicators ) {\n for ( var i = this.indicators.length; i--; ) {\n this.indicators[i].updatePosition();\n }\n }\n\n\n// INSERT POINT: _translate\n\n },\n\n _initEvents: function (remove) {\n var eventType = remove ? utils.removeEvent : utils.addEvent,\n target = this.options.bindToWrapper ? this.wrapper : window;\n\n eventType(window, 'orientationchange', this);\n eventType(window, 'resize', this);\n\n if ( this.options.click ) {\n eventType(this.wrapper, 'click', this, true);\n }\n\n if ( !this.options.disableMouse ) {\n eventType(this.wrapper, 'mousedown', this);\n eventType(target, 'mousemove', this);\n eventType(target, 'mousecancel', this);\n eventType(target, 'mouseup', this);\n }\n\n if ( utils.hasPointer && !this.options.disablePointer ) {\n eventType(this.wrapper, utils.prefixPointerEvent('pointerdown'), this);\n eventType(target, utils.prefixPointerEvent('pointermove'), this);\n eventType(target, utils.prefixPointerEvent('pointercancel'), this);\n eventType(target, utils.prefixPointerEvent('pointerup'), this);\n }\n\n if ( utils.hasTouch && !this.options.disableTouch ) {\n eventType(this.wrapper, 'touchstart', this);\n eventType(target, 'touchmove', this);\n eventType(target, 'touchcancel', this);\n eventType(target, 'touchend', this);\n }\n\n eventType(this.scroller, 'transitionend', this);\n eventType(this.scroller, 'webkitTransitionEnd', this);\n eventType(this.scroller, 'oTransitionEnd', this);\n eventType(this.scroller, 'MSTransitionEnd', this);\n },\n\n getComputedPosition: function () {\n var matrix = window.getComputedStyle(this.scroller, null),\n x, y;\n\n if ( this.options.useTransform ) {\n matrix = matrix[utils.style.transform].split(')')[0].split(', ');\n x = +(matrix[12] || matrix[4]);\n y = +(matrix[13] || matrix[5]);\n } else {\n x = +matrix.left.replace(/[^-\\d.]/g, '');\n y = +matrix.top.replace(/[^-\\d.]/g, '');\n }\n\n return { x: x, y: y };\n },\n _initIndicators: function () {\n var interactive = this.options.interactiveScrollbars,\n customStyle = typeof this.options.scrollbars != 'string',\n indicators = [],\n indicator;\n\n var that = this;\n\n this.indicators = [];\n\n if ( this.options.scrollbars ) {\n // Vertical scrollbar\n if ( this.options.scrollY ) {\n indicator = {\n el: createDefaultScrollbar('v', interactive, this.options.scrollbars),\n interactive: interactive,\n defaultScrollbars: true,\n customStyle: customStyle,\n resize: this.options.resizeScrollbars,\n shrink: this.options.shrinkScrollbars,\n fade: this.options.fadeScrollbars,\n listenX: false\n };\n\n this.wrapper.appendChild(indicator.el);\n indicators.push(indicator);\n }\n\n // Horizontal scrollbar\n if ( this.options.scrollX ) {\n indicator = {\n el: createDefaultScrollbar('h', interactive, this.options.scrollbars),\n interactive: interactive,\n defaultScrollbars: true,\n customStyle: customStyle,\n resize: this.options.resizeScrollbars,\n shrink: this.options.shrinkScrollbars,\n fade: this.options.fadeScrollbars,\n listenY: false\n };\n\n this.wrapper.appendChild(indicator.el);\n indicators.push(indicator);\n }\n }\n\n if ( this.options.indicators ) {\n // TODO: check concat compatibility\n indicators = indicators.concat(this.options.indicators);\n }\n\n for ( var i = indicators.length; i--; ) {\n this.indicators.push( new Indicator(this, indicators[i]) );\n }\n\n // TODO: check if we can use array.map (wide compatibility and performance issues)\n function _indicatorsMap (fn) {\n if (that.indicators) {\n for ( var i = that.indicators.length; i--; ) {\n fn.call(that.indicators[i]);\n }\n }\n }\n\n if ( this.options.fadeScrollbars ) {\n this.on('scrollEnd', function () {\n _indicatorsMap(function () {\n this.fade();\n });\n });\n\n this.on('scrollCancel', function () {\n _indicatorsMap(function () {\n this.fade();\n });\n });\n\n this.on('scrollStart', function () {\n _indicatorsMap(function () {\n this.fade(1);\n });\n });\n\n this.on('beforeScrollStart', function () {\n _indicatorsMap(function () {\n this.fade(1, true);\n });\n });\n }\n\n\n this.on('refresh', function () {\n _indicatorsMap(function () {\n this.refresh();\n });\n });\n\n this.on('destroy', function () {\n _indicatorsMap(function () {\n this.destroy();\n });\n\n delete this.indicators;\n });\n },\n\n _initWheel: function () {\n utils.addEvent(this.wrapper, 'wheel', this);\n utils.addEvent(this.wrapper, 'mousewheel', this);\n utils.addEvent(this.wrapper, 'DOMMouseScroll', this);\n\n this.on('destroy', function () {\n clearTimeout(this.wheelTimeout);\n this.wheelTimeout = null;\n utils.removeEvent(this.wrapper, 'wheel', this);\n utils.removeEvent(this.wrapper, 'mousewheel', this);\n utils.removeEvent(this.wrapper, 'DOMMouseScroll', this);\n });\n },\n\n _wheel: function (e) {\n if ( !this.enabled ) {\n return;\n }\n\n var wheelDeltaX, wheelDeltaY,\n newX, newY,\n that = this;\n\n if ( this.wheelTimeout === undefined ) {\n that._execEvent('scrollStart');\n }\n\n // Execute the scrollEnd event after 400ms the wheel stopped scrolling\n clearTimeout(this.wheelTimeout);\n this.wheelTimeout = setTimeout(function () {\n if(!that.options.snap) {\n that._execEvent('scrollEnd');\n }\n that.wheelTimeout = undefined;\n }, 400);\n\n if ( 'deltaX' in e ) {\n if (e.deltaMode === 1) {\n wheelDeltaX = -e.deltaX * this.options.mouseWheelSpeed;\n wheelDeltaY = -e.deltaY * this.options.mouseWheelSpeed;\n } else {\n wheelDeltaX = -e.deltaX;\n wheelDeltaY = -e.deltaY;\n }\n } else if ( 'wheelDeltaX' in e ) {\n wheelDeltaX = e.wheelDeltaX / 120 * this.options.mouseWheelSpeed;\n wheelDeltaY = e.wheelDeltaY / 120 * this.options.mouseWheelSpeed;\n } else if ( 'wheelDelta' in e ) {\n wheelDeltaX = wheelDeltaY = e.wheelDelta / 120 * this.options.mouseWheelSpeed;\n } else if ( 'detail' in e ) {\n wheelDeltaX = wheelDeltaY = -e.detail / 3 * this.options.mouseWheelSpeed;\n } else {\n return;\n }\n\n wheelDeltaX *= this.options.invertWheelDirection;\n wheelDeltaY *= this.options.invertWheelDirection;\n\n if ( !this.hasVerticalScroll ) {\n wheelDeltaX = wheelDeltaY;\n wheelDeltaY = 0;\n }\n\n if ( this.options.snap ) {\n newX = this.currentPage.pageX;\n newY = this.currentPage.pageY;\n\n if ( wheelDeltaX > 0 ) {\n newX--;\n } else if ( wheelDeltaX < 0 ) {\n newX++;\n }\n\n if ( wheelDeltaY > 0 ) {\n newY--;\n } else if ( wheelDeltaY < 0 ) {\n newY++;\n }\n\n this.goToPage(newX, newY);\n\n return;\n }\n\n newX = this.x + Math.round(this.hasHorizontalScroll ? wheelDeltaX : 0);\n newY = this.y + Math.round(this.hasVerticalScroll ? wheelDeltaY : 0);\n\n this.directionX = wheelDeltaX > 0 ? -1 : wheelDeltaX < 0 ? 1 : 0;\n this.directionY = wheelDeltaY > 0 ? -1 : wheelDeltaY < 0 ? 1 : 0;\n\n if ( newX > 0 ) {\n newX = 0;\n } else if ( newX < this.maxScrollX ) {\n newX = this.maxScrollX;\n }\n\n if ( newY > 0 ) {\n newY = 0;\n } else if ( newY < this.maxScrollY ) {\n newY = this.maxScrollY;\n }\n\n this.scrollTo(newX, newY, 0);\n\n// INSERT POINT: _wheel\n },\n\n _initSnap: function () {\n this.currentPage = {};\n\n if ( typeof this.options.snap == 'string' ) {\n this.options.snap = this.scroller.querySelectorAll(this.options.snap);\n }\n\n this.on('refresh', function () {\n var i = 0, l,\n m = 0, n,\n cx, cy,\n x = 0, y,\n stepX = this.options.snapStepX || this.wrapperWidth,\n stepY = this.options.snapStepY || this.wrapperHeight,\n el;\n\n this.pages = [];\n\n if ( !this.wrapperWidth || !this.wrapperHeight || !this.scrollerWidth || !this.scrollerHeight ) {\n return;\n }\n\n if ( this.options.snap === true ) {\n cx = Math.round( stepX / 2 );\n cy = Math.round( stepY / 2 );\n\n while ( x > -this.scrollerWidth ) {\n this.pages[i] = [];\n l = 0;\n y = 0;\n\n while ( y > -this.scrollerHeight ) {\n this.pages[i][l] = {\n x: Math.max(x, this.maxScrollX),\n y: Math.max(y, this.maxScrollY),\n width: stepX,\n height: stepY,\n cx: x - cx,\n cy: y - cy\n };\n\n y -= stepY;\n l++;\n }\n\n x -= stepX;\n i++;\n }\n } else {\n el = this.options.snap;\n l = el.length;\n n = -1;\n\n for ( ; i < l; i++ ) {\n if ( i === 0 || el[i].offsetLeft <= el[i-1].offsetLeft ) {\n m = 0;\n n++;\n }\n\n if ( !this.pages[m] ) {\n this.pages[m] = [];\n }\n\n x = Math.max(-el[i].offsetLeft, this.maxScrollX);\n y = Math.max(-el[i].offsetTop, this.maxScrollY);\n cx = x - Math.round(el[i].offsetWidth / 2);\n cy = y - Math.round(el[i].offsetHeight / 2);\n\n this.pages[m][n] = {\n x: x,\n y: y,\n width: el[i].offsetWidth,\n height: el[i].offsetHeight,\n cx: cx,\n cy: cy\n };\n\n if ( x > this.maxScrollX ) {\n m++;\n }\n }\n }\n\n this.goToPage(this.currentPage.pageX || 0, this.currentPage.pageY || 0, 0);\n\n // Update snap threshold if needed\n if ( this.options.snapThreshold % 1 === 0 ) {\n this.snapThresholdX = this.options.snapThreshold;\n this.snapThresholdY = this.options.snapThreshold;\n } else {\n this.snapThresholdX = Math.round(this.pages[this.currentPage.pageX][this.currentPage.pageY].width * this.options.snapThreshold);\n this.snapThresholdY = Math.round(this.pages[this.currentPage.pageX][this.currentPage.pageY].height * this.options.snapThreshold);\n }\n });\n\n this.on('flick', function () {\n var time = this.options.snapSpeed || Math.max(\n Math.max(\n Math.min(Math.abs(this.x - this.startX), 1000),\n Math.min(Math.abs(this.y - this.startY), 1000)\n ), 300);\n\n this.goToPage(\n this.currentPage.pageX + this.directionX,\n this.currentPage.pageY + this.directionY,\n time\n );\n });\n },\n\n _nearestSnap: function (x, y) {\n if ( !this.pages.length ) {\n return { x: 0, y: 0, pageX: 0, pageY: 0 };\n }\n\n var i = 0,\n l = this.pages.length,\n m = 0;\n\n // Check if we exceeded the snap threshold\n if ( Math.abs(x - this.absStartX) < this.snapThresholdX &&\n Math.abs(y - this.absStartY) < this.snapThresholdY ) {\n return this.currentPage;\n }\n\n if ( x > 0 ) {\n x = 0;\n } else if ( x < this.maxScrollX ) {\n x = this.maxScrollX;\n }\n\n if ( y > 0 ) {\n y = 0;\n } else if ( y < this.maxScrollY ) {\n y = this.maxScrollY;\n }\n\n for ( ; i < l; i++ ) {\n if ( x >= this.pages[i][0].cx ) {\n x = this.pages[i][0].x;\n break;\n }\n }\n\n l = this.pages[i].length;\n\n for ( ; m < l; m++ ) {\n if ( y >= this.pages[0][m].cy ) {\n y = this.pages[0][m].y;\n break;\n }\n }\n\n if ( i == this.currentPage.pageX ) {\n i += this.directionX;\n\n if ( i < 0 ) {\n i = 0;\n } else if ( i >= this.pages.length ) {\n i = this.pages.length - 1;\n }\n\n x = this.pages[i][0].x;\n }\n\n if ( m == this.currentPage.pageY ) {\n m += this.directionY;\n\n if ( m < 0 ) {\n m = 0;\n } else if ( m >= this.pages[0].length ) {\n m = this.pages[0].length - 1;\n }\n\n y = this.pages[0][m].y;\n }\n\n return {\n x: x,\n y: y,\n pageX: i,\n pageY: m\n };\n },\n\n goToPage: function (x, y, time, easing) {\n easing = easing || this.options.bounceEasing;\n\n if ( x >= this.pages.length ) {\n x = this.pages.length - 1;\n } else if ( x < 0 ) {\n x = 0;\n }\n\n if ( y >= this.pages[x].length ) {\n y = this.pages[x].length - 1;\n } else if ( y < 0 ) {\n y = 0;\n }\n\n var posX = this.pages[x][y].x,\n posY = this.pages[x][y].y;\n\n time = time === undefined ? this.options.snapSpeed || Math.max(\n Math.max(\n Math.min(Math.abs(posX - this.x), 1000),\n Math.min(Math.abs(posY - this.y), 1000)\n ), 300) : time;\n\n this.currentPage = {\n x: posX,\n y: posY,\n pageX: x,\n pageY: y\n };\n\n this.scrollTo(posX, posY, time, easing);\n },\n\n next: function (time, easing) {\n var x = this.currentPage.pageX,\n y = this.currentPage.pageY;\n\n x++;\n\n if ( x >= this.pages.length && this.hasVerticalScroll ) {\n x = 0;\n y++;\n }\n\n this.goToPage(x, y, time, easing);\n },\n\n prev: function (time, easing) {\n var x = this.currentPage.pageX,\n y = this.currentPage.pageY;\n\n x--;\n\n if ( x < 0 && this.hasVerticalScroll ) {\n x = 0;\n y--;\n }\n\n this.goToPage(x, y, time, easing);\n },\n\n _initKeys: function (e) {\n // default key bindings\n var keys = {\n pageUp: 33,\n pageDown: 34,\n end: 35,\n home: 36,\n left: 37,\n up: 38,\n right: 39,\n down: 40\n };\n var i;\n\n // if you give me characters I give you keycode\n if ( typeof this.options.keyBindings == 'object' ) {\n for ( i in this.options.keyBindings ) {\n if ( typeof this.options.keyBindings[i] == 'string' ) {\n this.options.keyBindings[i] = this.options.keyBindings[i].toUpperCase().charCodeAt(0);\n }\n }\n } else {\n this.options.keyBindings = {};\n }\n\n for ( i in keys ) {\n this.options.keyBindings[i] = this.options.keyBindings[i] || keys[i];\n }\n\n utils.addEvent(window, 'keydown', this);\n\n this.on('destroy', function () {\n utils.removeEvent(window, 'keydown', this);\n });\n },\n\n _key: function (e) {\n if ( !this.enabled ) {\n return;\n }\n\n var snap = this.options.snap, // we are using this alot, better to cache it\n newX = snap ? this.currentPage.pageX : this.x,\n newY = snap ? this.currentPage.pageY : this.y,\n now = utils.getTime(),\n prevTime = this.keyTime || 0,\n acceleration = 0.250,\n pos;\n\n if ( this.options.useTransition && this.isInTransition ) {\n pos = this.getComputedPosition();\n\n this._translate(Math.round(pos.x), Math.round(pos.y));\n this.isInTransition = false;\n }\n\n this.keyAcceleration = now - prevTime < 200 ? Math.min(this.keyAcceleration + acceleration, 50) : 0;\n\n switch ( e.keyCode ) {\n case this.options.keyBindings.pageUp:\n if ( this.hasHorizontalScroll && !this.hasVerticalScroll ) {\n newX += snap ? 1 : this.wrapperWidth;\n } else {\n newY += snap ? 1 : this.wrapperHeight;\n }\n break;\n case this.options.keyBindings.pageDown:\n if ( this.hasHorizontalScroll && !this.hasVerticalScroll ) {\n newX -= snap ? 1 : this.wrapperWidth;\n } else {\n newY -= snap ? 1 : this.wrapperHeight;\n }\n break;\n case this.options.keyBindings.end:\n newX = snap ? this.pages.length-1 : this.maxScrollX;\n newY = snap ? this.pages[0].length-1 : this.maxScrollY;\n break;\n case this.options.keyBindings.home:\n newX = 0;\n newY = 0;\n break;\n case this.options.keyBindings.left:\n newX += snap ? -1 : 5 + this.keyAcceleration>>0;\n break;\n case this.options.keyBindings.up:\n newY += snap ? 1 : 5 + this.keyAcceleration>>0;\n break;\n case this.options.keyBindings.right:\n newX -= snap ? -1 : 5 + this.keyAcceleration>>0;\n break;\n case this.options.keyBindings.down:\n newY -= snap ? 1 : 5 + this.keyAcceleration>>0;\n break;\n default:\n return;\n }\n\n if ( snap ) {\n this.goToPage(newX, newY);\n return;\n }\n\n if ( newX > 0 ) {\n newX = 0;\n this.keyAcceleration = 0;\n } else if ( newX < this.maxScrollX ) {\n newX = this.maxScrollX;\n this.keyAcceleration = 0;\n }\n\n if ( newY > 0 ) {\n newY = 0;\n this.keyAcceleration = 0;\n } else if ( newY < this.maxScrollY ) {\n newY = this.maxScrollY;\n this.keyAcceleration = 0;\n }\n\n this.scrollTo(newX, newY, 0);\n\n this.keyTime = now;\n },\n\n _animate: function (destX, destY, duration, easingFn) {\n var that = this,\n startX = this.x,\n startY = this.y,\n startTime = utils.getTime(),\n destTime = startTime + duration;\n\n function step () {\n var now = utils.getTime(),\n newX, newY,\n easing;\n\n if ( now >= destTime ) {\n that.isAnimating = false;\n that._translate(destX, destY);\n\n if ( !that.resetPosition(that.options.bounceTime) ) {\n that._execEvent('scrollEnd');\n }\n\n return;\n }\n\n now = ( now - startTime ) / duration;\n easing = easingFn(now);\n newX = ( destX - startX ) * easing + startX;\n newY = ( destY - startY ) * easing + startY;\n that._translate(newX, newY);\n\n if ( that.isAnimating ) {\n rAF(step);\n }\n }\n\n this.isAnimating = true;\n step();\n },\n handleEvent: function (e) {\n switch ( e.type ) {\n case 'touchstart':\n case 'pointerdown':\n case 'MSPointerDown':\n case 'mousedown':\n this._start(e);\n break;\n case 'touchmove':\n case 'pointermove':\n case 'MSPointerMove':\n case 'mousemove':\n this._move(e);\n break;\n case 'touchend':\n case 'pointerup':\n case 'MSPointerUp':\n case 'mouseup':\n case 'touchcancel':\n case 'pointercancel':\n case 'MSPointerCancel':\n case 'mousecancel':\n this._end(e);\n break;\n case 'orientationchange':\n case 'resize':\n this._resize();\n break;\n case 'transitionend':\n case 'webkitTransitionEnd':\n case 'oTransitionEnd':\n case 'MSTransitionEnd':\n this._transitionEnd(e);\n break;\n case 'wheel':\n case 'DOMMouseScroll':\n case 'mousewheel':\n this._wheel(e);\n break;\n case 'keydown':\n this._key(e);\n break;\n case 'click':\n if ( this.enabled && !e._constructed ) {\n e.preventDefault();\n e.stopPropagation();\n }\n break;\n }\n }\n};\nfunction createDefaultScrollbar (direction, interactive, type) {\n var scrollbar = document.createElement('div'),\n indicator = document.createElement('div');\n\n if ( type === true ) {\n scrollbar.style.cssText = 'position:absolute;z-index:9999';\n indicator.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';\n }\n\n indicator.className = 'iScrollIndicator';\n\n if ( direction == 'h' ) {\n if ( type === true ) {\n scrollbar.style.cssText += ';height:7px;left:2px;right:2px;bottom:0';\n indicator.style.height = '100%';\n }\n scrollbar.className = 'iScrollHorizontalScrollbar';\n } else {\n if ( type === true ) {\n scrollbar.style.cssText += ';width:7px;bottom:2px;top:2px;right:1px';\n indicator.style.width = '100%';\n }\n scrollbar.className = 'iScrollVerticalScrollbar';\n }\n\n scrollbar.style.cssText += ';overflow:hidden';\n\n if ( !interactive ) {\n scrollbar.style.pointerEvents = 'none';\n }\n\n scrollbar.appendChild(indicator);\n\n return scrollbar;\n}\n\nfunction Indicator (scroller, options) {\n this.wrapper = typeof options.el == 'string' ? document.querySelector(options.el) : options.el;\n this.wrapperStyle = this.wrapper.style;\n this.indicator = this.wrapper.children[0];\n this.indicatorStyle = this.indicator.style;\n this.scroller = scroller;\n\n this.options = {\n listenX: true,\n listenY: true,\n interactive: false,\n resize: true,\n defaultScrollbars: false,\n shrink: false,\n fade: false,\n speedRatioX: 0,\n speedRatioY: 0\n };\n\n for ( var i in options ) {\n this.options[i] = options[i];\n }\n\n this.sizeRatioX = 1;\n this.sizeRatioY = 1;\n this.maxPosX = 0;\n this.maxPosY = 0;\n\n if ( this.options.interactive ) {\n if ( !this.options.disableTouch ) {\n utils.addEvent(this.indicator, 'touchstart', this);\n utils.addEvent(window, 'touchend', this);\n }\n if ( !this.options.disablePointer ) {\n utils.addEvent(this.indicator, utils.prefixPointerEvent('pointerdown'), this);\n utils.addEvent(window, utils.prefixPointerEvent('pointerup'), this);\n }\n if ( !this.options.disableMouse ) {\n utils.addEvent(this.indicator, 'mousedown', this);\n utils.addEvent(window, 'mouseup', this);\n }\n }\n\n if ( this.options.fade ) {\n this.wrapperStyle[utils.style.transform] = this.scroller.translateZ;\n var durationProp = utils.style.transitionDuration;\n if(!durationProp) {\n return;\n }\n this.wrapperStyle[durationProp] = utils.isBadAndroid ? '0.0001ms' : '0ms';\n // remove 0.0001ms\n var self = this;\n if(utils.isBadAndroid) {\n rAF(function() {\n if(self.wrapperStyle[durationProp] === '0.0001ms') {\n self.wrapperStyle[durationProp] = '0s';\n }\n });\n }\n this.wrapperStyle.opacity = '0';\n }\n}\n\nIndicator.prototype = {\n handleEvent: function (e) {\n switch ( e.type ) {\n case 'touchstart':\n case 'pointerdown':\n case 'MSPointerDown':\n case 'mousedown':\n this._start(e);\n break;\n case 'touchmove':\n case 'pointermove':\n case 'MSPointerMove':\n case 'mousemove':\n this._move(e);\n break;\n case 'touchend':\n case 'pointerup':\n case 'MSPointerUp':\n case 'mouseup':\n case 'touchcancel':\n case 'pointercancel':\n case 'MSPointerCancel':\n case 'mousecancel':\n this._end(e);\n break;\n }\n },\n\n destroy: function () {\n if ( this.options.fadeScrollbars ) {\n clearTimeout(this.fadeTimeout);\n this.fadeTimeout = null;\n }\n if ( this.options.interactive ) {\n utils.removeEvent(this.indicator, 'touchstart', this);\n utils.removeEvent(this.indicator, utils.prefixPointerEvent('pointerdown'), this);\n utils.removeEvent(this.indicator, 'mousedown', this);\n\n utils.removeEvent(window, 'touchmove', this);\n utils.removeEvent(window, utils.prefixPointerEvent('pointermove'), this);\n utils.removeEvent(window, 'mousemove', this);\n\n utils.removeEvent(window, 'touchend', this);\n utils.removeEvent(window, utils.prefixPointerEvent('pointerup'), this);\n utils.removeEvent(window, 'mouseup', this);\n }\n\n if ( this.options.defaultScrollbars ) {\n this.wrapper.parentNode.removeChild(this.wrapper);\n }\n },\n\n _start: function (e) {\n var point = e.touches ? e.touches[0] : e;\n\n e.preventDefault();\n e.stopPropagation();\n\n this.transitionTime();\n\n this.initiated = true;\n this.moved = false;\n this.lastPointX = point.pageX;\n this.lastPointY = point.pageY;\n\n this.startTime = utils.getTime();\n\n if ( !this.options.disableTouch ) {\n utils.addEvent(window, 'touchmove', this);\n }\n if ( !this.options.disablePointer ) {\n utils.addEvent(window, utils.prefixPointerEvent('pointermove'), this);\n }\n if ( !this.options.disableMouse ) {\n utils.addEvent(window, 'mousemove', this);\n }\n\n this.scroller._execEvent('beforeScrollStart');\n },\n\n _move: function (e) {\n var point = e.touches ? e.touches[0] : e,\n deltaX, deltaY,\n newX, newY,\n timestamp = utils.getTime();\n\n if ( !this.moved ) {\n this.scroller._execEvent('scrollStart');\n }\n\n this.moved = true;\n\n deltaX = point.pageX - this.lastPointX;\n this.lastPointX = point.pageX;\n\n deltaY = point.pageY - this.lastPointY;\n this.lastPointY = point.pageY;\n\n newX = this.x + deltaX;\n newY = this.y + deltaY;\n\n this._pos(newX, newY);\n\n// INSERT POINT: indicator._move\n\n e.preventDefault();\n e.stopPropagation();\n },\n\n _end: function (e) {\n if ( !this.initiated ) {\n return;\n }\n\n this.initiated = false;\n\n e.preventDefault();\n e.stopPropagation();\n\n utils.removeEvent(window, 'touchmove', this);\n utils.removeEvent(window, utils.prefixPointerEvent('pointermove'), this);\n utils.removeEvent(window, 'mousemove', this);\n\n if ( this.scroller.options.snap ) {\n var snap = this.scroller._nearestSnap(this.scroller.x, this.scroller.y);\n\n var time = this.options.snapSpeed || Math.max(\n Math.max(\n Math.min(Math.abs(this.scroller.x - snap.x), 1000),\n Math.min(Math.abs(this.scroller.y - snap.y), 1000)\n ), 300);\n\n if ( this.scroller.x != snap.x || this.scroller.y != snap.y ) {\n this.scroller.directionX = 0;\n this.scroller.directionY = 0;\n this.scroller.currentPage = snap;\n this.scroller.scrollTo(snap.x, snap.y, time, this.scroller.options.bounceEasing);\n }\n }\n\n if ( this.moved ) {\n this.scroller._execEvent('scrollEnd');\n }\n },\n\n transitionTime: function (time) {\n time = time || 0;\n var durationProp = utils.style.transitionDuration;\n if(!durationProp) {\n return;\n }\n\n this.indicatorStyle[durationProp] = time + 'ms';\n\n if ( !time && utils.isBadAndroid ) {\n this.indicatorStyle[durationProp] = '0.0001ms';\n // remove 0.0001ms\n var self = this;\n rAF(function() {\n if(self.indicatorStyle[durationProp] === '0.0001ms') {\n self.indicatorStyle[durationProp] = '0s';\n }\n });\n }\n },\n\n transitionTimingFunction: function (easing) {\n this.indicatorStyle[utils.style.transitionTimingFunction] = easing;\n },\n\n refresh: function () {\n this.transitionTime();\n\n if ( this.options.listenX && !this.options.listenY ) {\n this.indicatorStyle.display = this.scroller.hasHorizontalScroll ? 'block' : 'none';\n } else if ( this.options.listenY && !this.options.listenX ) {\n this.indicatorStyle.display = this.scroller.hasVerticalScroll ? 'block' : 'none';\n } else {\n this.indicatorStyle.display = this.scroller.hasHorizontalScroll || this.scroller.hasVerticalScroll ? 'block' : 'none';\n }\n\n if ( this.scroller.hasHorizontalScroll && this.scroller.hasVerticalScroll ) {\n utils.addClass(this.wrapper, 'iScrollBothScrollbars');\n utils.removeClass(this.wrapper, 'iScrollLoneScrollbar');\n\n if ( this.options.defaultScrollbars && this.options.customStyle ) {\n if ( this.options.listenX ) {\n this.wrapper.style.right = '8px';\n } else {\n this.wrapper.style.bottom = '8px';\n }\n }\n } else {\n utils.removeClass(this.wrapper, 'iScrollBothScrollbars');\n utils.addClass(this.wrapper, 'iScrollLoneScrollbar');\n\n if ( this.options.defaultScrollbars && this.options.customStyle ) {\n if ( this.options.listenX ) {\n this.wrapper.style.right = '2px';\n } else {\n this.wrapper.style.bottom = '2px';\n }\n }\n }\n\n var r = this.wrapper.offsetHeight; // force refresh\n\n if ( this.options.listenX ) {\n this.wrapperWidth = this.wrapper.clientWidth;\n if ( this.options.resize ) {\n this.indicatorWidth = Math.max(Math.round(this.wrapperWidth * this.wrapperWidth / (this.scroller.scrollerWidth || this.wrapperWidth || 1)), 8);\n this.indicatorStyle.width = this.indicatorWidth + 'px';\n } else {\n this.indicatorWidth = this.indicator.clientWidth;\n }\n\n this.maxPosX = this.wrapperWidth - this.indicatorWidth;\n\n if ( this.options.shrink == 'clip' ) {\n this.minBoundaryX = -this.indicatorWidth + 8;\n this.maxBoundaryX = this.wrapperWidth - 8;\n } else {\n this.minBoundaryX = 0;\n this.maxBoundaryX = this.maxPosX;\n }\n\n this.sizeRatioX = this.options.speedRatioX || (this.scroller.maxScrollX && (this.maxPosX / this.scroller.maxScrollX));\n }\n\n if ( this.options.listenY ) {\n this.wrapperHeight = this.wrapper.clientHeight;\n if ( this.options.resize ) {\n this.indicatorHeight = Math.max(Math.round(this.wrapperHeight * this.wrapperHeight / (this.scroller.scrollerHeight || this.wrapperHeight || 1)), 8);\n this.indicatorStyle.height = this.indicatorHeight + 'px';\n } else {\n this.indicatorHeight = this.indicator.clientHeight;\n }\n\n this.maxPosY = this.wrapperHeight - this.indicatorHeight;\n\n if ( this.options.shrink == 'clip' ) {\n this.minBoundaryY = -this.indicatorHeight + 8;\n this.maxBoundaryY = this.wrapperHeight - 8;\n } else {\n this.minBoundaryY = 0;\n this.maxBoundaryY = this.maxPosY;\n }\n\n this.maxPosY = this.wrapperHeight - this.indicatorHeight;\n this.sizeRatioY = this.options.speedRatioY || (this.scroller.maxScrollY && (this.maxPosY / this.scroller.maxScrollY));\n }\n\n this.updatePosition();\n },\n\n updatePosition: function () {\n var x = this.options.listenX && Math.round(this.sizeRatioX * this.scroller.x) || 0,\n y = this.options.listenY && Math.round(this.sizeRatioY * this.scroller.y) || 0;\n\n if ( !this.options.ignoreBoundaries ) {\n if ( x < this.minBoundaryX ) {\n if ( this.options.shrink == 'scale' ) {\n this.width = Math.max(this.indicatorWidth + x, 8);\n this.indicatorStyle.width = this.width + 'px';\n }\n x = this.minBoundaryX;\n } else if ( x > this.maxBoundaryX ) {\n if ( this.options.shrink == 'scale' ) {\n this.width = Math.max(this.indicatorWidth - (x - this.maxPosX), 8);\n this.indicatorStyle.width = this.width + 'px';\n x = this.maxPosX + this.indicatorWidth - this.width;\n } else {\n x = this.maxBoundaryX;\n }\n } else if ( this.options.shrink == 'scale' && this.width != this.indicatorWidth ) {\n this.width = this.indicatorWidth;\n this.indicatorStyle.width = this.width + 'px';\n }\n\n if ( y < this.minBoundaryY ) {\n if ( this.options.shrink == 'scale' ) {\n this.height = Math.max(this.indicatorHeight + y * 3, 8);\n this.indicatorStyle.height = this.height + 'px';\n }\n y = this.minBoundaryY;\n } else if ( y > this.maxBoundaryY ) {\n if ( this.options.shrink == 'scale' ) {\n this.height = Math.max(this.indicatorHeight - (y - this.maxPosY) * 3, 8);\n this.indicatorStyle.height = this.height + 'px';\n y = this.maxPosY + this.indicatorHeight - this.height;\n } else {\n y = this.maxBoundaryY;\n }\n } else if ( this.options.shrink == 'scale' && this.height != this.indicatorHeight ) {\n this.height = this.indicatorHeight;\n this.indicatorStyle.height = this.height + 'px';\n }\n }\n\n this.x = x;\n this.y = y;\n\n if ( this.scroller.options.useTransform ) {\n this.indicatorStyle[utils.style.transform] = 'translate(' + x + 'px,' + y + 'px)' + this.scroller.translateZ;\n } else {\n this.indicatorStyle.left = x + 'px';\n this.indicatorStyle.top = y + 'px';\n }\n },\n\n _pos: function (x, y) {\n if ( x < 0 ) {\n x = 0;\n } else if ( x > this.maxPosX ) {\n x = this.maxPosX;\n }\n\n if ( y < 0 ) {\n y = 0;\n } else if ( y > this.maxPosY ) {\n y = this.maxPosY;\n }\n\n x = this.options.listenX ? Math.round(x / this.sizeRatioX) : this.scroller.x;\n y = this.options.listenY ? Math.round(y / this.sizeRatioY) : this.scroller.y;\n\n this.scroller.scrollTo(x, y);\n },\n\n fade: function (val, hold) {\n if ( hold && !this.visible ) {\n return;\n }\n\n clearTimeout(this.fadeTimeout);\n this.fadeTimeout = null;\n\n var time = val ? 250 : 500,\n delay = val ? 0 : 300;\n\n val = val ? '1' : '0';\n\n this.wrapperStyle[utils.style.transitionDuration] = time + 'ms';\n\n this.fadeTimeout = setTimeout((function (val) {\n this.wrapperStyle.opacity = val;\n this.visible = +val;\n }).bind(this, val), delay);\n }\n};\n\nIScroll.utils = utils;\n\nif ( typeof module != 'undefined' && module.exports ) {\n module.exports = IScroll;\n} else if ( typeof define == 'function' && define.amd ) {\n define( function () { return IScroll; } );\n} else {\n window.IScroll = IScroll;\n}\n\n})(window, document, Math);\n\n\n/*!\n* Scrolloverflow 2.0.0 module for fullPage.js >= 3\n* https://github.com/alvarotrigo/fullPage.js\n* @license MIT licensed\n*\n* Copyright (C) 2015 alvarotrigo.com - A project by Alvaro Trigo\n*/\n(function (window, document) {\n window.fp_scrolloverflow = (function() {\n\n // check if IScroll is available in global scope\n if (!window.IScroll) {\n // otherwise create local one from module.exports\n IScroll = module.exports;\n }\n\n // keeping central set of classnames and selectors\n var SCROLLABLE = 'fp-scrollable';\n var SCROLLABLE_SEL = '.' + SCROLLABLE;\n\n var ACTIVE = 'active';\n var ACTIVE_SEL = '.' + ACTIVE;\n\n var SECTION = 'fp-section';\n var SECTION_SEL = '.' + SECTION;\n var SECTION_ACTIVE_SEL = SECTION_SEL + ACTIVE_SEL;\n\n var SLIDE = 'fp-slide';\n var SLIDE_SEL = '.' + SLIDE;\n var SLIDE_ACTIVE_SEL = SLIDE_SEL + ACTIVE_SEL;\n\n var SLIDES_WRAPPER = 'fp-slides';\n var SLIDES_WRAPPER_SEL = '.' + SLIDES_WRAPPER;\n\n var TABLE_CELL = 'fp-tableCell';\n var TABLE_CELL_SEL = '.' + TABLE_CELL;\n\n var RESPONSIVE = 'fp-responsive';\n var AUTO_HEIGHT_RESPONSIVE= 'fp-auto-height-responsive';\n\n /*\n * Turns iScroll `mousewheel` option off dynamically\n * https://github.com/cubiq/iscroll/issues/1036\n */\n IScroll.prototype.wheelOn = function () {\n this.wrapper.addEventListener('wheel', this);\n this.wrapper.addEventListener('mousewheel', this);\n this.wrapper.addEventListener('DOMMouseScroll', this);\n };\n\n /*\n * Turns iScroll `mousewheel` option on dynamically\n * https://github.com/cubiq/iscroll/issues/1036\n */\n IScroll.prototype.wheelOff = function () {\n this.wrapper.removeEventListener('wheel', this);\n this.wrapper.removeEventListener('mousewheel', this);\n this.wrapper.removeEventListener('DOMMouseScroll', this);\n };\n\n /**\n * Returns an integer representing the padding dimensions in px.\n */\n function getPaddings(element){\n var section = fp_utils.closest(element, SECTION_SEL);\n if(section != null){\n return parseInt(getComputedStyle(section)['padding-bottom']) + parseInt(getComputedStyle(section)['padding-top']);\n }\n return 0;\n }\n\n function scrollBarHandler(){\n var self = this;\n self.options = null;\n\n self.init = function(options, iscrollOptions){\n self.options = options;\n self.iscrollOptions = iscrollOptions;\n\n if(document.readyState === 'complete'){\n createScrollBarForAll();\n fullpage_api.shared.afterRenderActions();\n }\n //after DOM and images are loaded\n window.addEventListener('load', function(){\n createScrollBarForAll();\n fullpage_api.shared.afterRenderActions();\n });\n\n return self;\n };\n\n /**\n * Creates the scrollbar for the sections and slides in the site\n */\n function createScrollBarForAll(){\n if(fp_utils.hasClass(document.body, RESPONSIVE)){\n removeResponsiveScrollOverflows();\n }\n else{\n forEachSectionAndSlide(createScrollBar);\n }\n }\n\n /**\n * Checks if the element needs scrollbar and if the user wants to apply it.\n * If so it creates it.\n *\n * @param {Object} element jQuery object of the section or slide\n */\n function createScrollBar(element){\n //User doesn't want scrollbar here? Sayonara baby!\n if(fp_utils.hasClass(element, 'fp-noscroll')) return;\n\n //necessary to make `scrollHeight` work under Opera 12\n fp_utils.css(element, {'overflow': 'hidden'});\n\n var scrollOverflowHandler = self.options.scrollOverflowHandler;\n var wrap = scrollOverflowHandler.wrapContent();\n var section = fp_utils.closest(element, SECTION_SEL); //in case element is a slide\n var scrollable = scrollOverflowHandler.scrollable(element);\n var contentHeight;\n var paddings = getPaddings(section);\n\n //if there was scroll, the contentHeight will be the one in the scrollable section\n if(scrollable != null){\n contentHeight = scrollOverflowHandler.scrollHeight(element);\n }\n else{\n contentHeight = element.scrollHeight - paddings;\n if(self.options.verticalCentered){\n contentHeight = $(TABLE_CELL_SEL, element)[0].scrollHeight - paddings;\n }\n }\n\n var scrollHeight = fp_utils.getWindowHeight() - paddings;\n\n //needs scroll?\n if ( contentHeight > scrollHeight) {\n //did we already have an scrollbar ? Updating it\n if(scrollable != null){\n scrollOverflowHandler.update(element, scrollHeight);\n }\n //creating the scrolling\n else{\n if(self.options.verticalCentered){\n fp_utils.wrapInner($(TABLE_CELL_SEL, element)[0], wrap.scroller);\n fp_utils.wrapInner($(TABLE_CELL_SEL, element)[0], wrap.scrollable);\n }else{\n fp_utils.wrapInner(element, wrap.scroller);\n fp_utils.wrapInner(element, wrap.scrollable);\n }\n scrollOverflowHandler.create(element, scrollHeight, self.iscrollOptions);\n }\n }\n\n //removing the scrolling when it is not necessary anymore\n else{\n scrollOverflowHandler.remove(element);\n }\n\n //undo\n fp_utils.css(element, {'overflow': ''});\n }\n\n /**\n * Applies a callback function to each section in the site\n * or the slides within them\n */\n function forEachSectionAndSlide(callback){\n $(SECTION_SEL).forEach(function(section){\n var slides = $(SLIDE_SEL, section);\n\n if(slides.length){\n slides.forEach(function(slide){\n callback(slide);\n });\n }else{\n callback(section);\n }\n });\n }\n\n /**\n * Removes scrollOverflow for sections using the class `fp-auto-height-responsive`\n */\n function removeResponsiveScrollOverflows(){\n var scrollOverflowHandler = self.options.scrollOverflowHandler;\n forEachSectionAndSlide(function(element){\n if(fp_utils.hasClass( fp_utils.closest(element, SECTION_SEL), AUTO_HEIGHT_RESPONSIVE)){\n scrollOverflowHandler.remove(element);\n }\n });\n }\n\n //public functions\n self.createScrollBarForAll = createScrollBarForAll;\n }\n\n /**\n * An object to handle overflow scrolling.\n * This uses jquery.slimScroll to accomplish overflow scrolling.\n * It is possible to pass in an alternate scrollOverflowHandler\n * to the fullpage.js option that implements the same functions\n * as this handler.\n *\n * @type {Object}\n */\n var $ = null;\n var iscrollHandler = {\n refreshId: null,\n iScrollInstances: [],\n\n // Default options for iScroll.js used when using scrollOverflow\n iscrollOptions: {\n scrollbars: true,\n mouseWheel: true,\n hideScrollbars: false,\n fadeScrollbars: false,\n disableMouse: true,\n interactiveScrollbars: true\n },\n\n init: function(options){\n $ = fp_utils.$;\n\n var isTouch = (('ontouchstart' in window) || (navigator.msMaxTouchPoints > 0) || (navigator.maxTouchPoints));\n\n //fixing bug in iScroll with links: https://github.com/cubiq/iscroll/issues/783\n iscrollHandler.iscrollOptions.click = isTouch; // see #2035\n\n //extending iScroll options with the user custom ones\n iscrollHandler.iscrollOptions = fp_utils.deepExtend(iscrollHandler.iscrollOptions, options.scrollOverflowOptions);\n\n return new scrollBarHandler().init(options, iscrollHandler.iscrollOptions);\n },\n\n // Enables or disables the mouse wheel for the active section or all slides in it\n toggleWheel: function(value){\n var scrollable = $(SCROLLABLE_SEL, $(SECTION_ACTIVE_SEL)[0]);\n scrollable.forEach(function(item){\n var iScrollInstance = item.fp_iscrollInstance;\n if(iScrollInstance != null){\n if(value){\n iScrollInstance.wheelOn();\n }\n else{\n iScrollInstance.wheelOff();\n }\n }\n });\n },\n\n /**\n * Turns off iScroll for the destination section.\n * When scrolling very fast on some trackpads (and Apple laptops) the inertial scrolling would\n * scroll the destination section/slide before the sections animations ends.\n */\n onLeave: function(){\n iscrollHandler.toggleWheel(false);\n },\n\n // Turns off iScroll for the leaving section\n beforeLeave: function(){\n iscrollHandler.onLeave()\n },\n\n // Turns on iScroll on section load\n afterLoad: function(){\n iscrollHandler.toggleWheel(true);\n },\n\n /**\n * Called when overflow scrolling is needed for a section.\n *\n * @param {Object} element jQuery object containing current section\n * @param {Number} scrollHeight Current window height in pixels\n */\n create: function(element, scrollHeight, iscrollOptions) {\n var scrollable = $(SCROLLABLE_SEL, element);\n\n scrollable.forEach(function(item) {\n fp_utils.css(item, {'height': scrollHeight + 'px'});\n\n var iScrollInstance = item.fp_iscrollInstance;\n if (iScrollInstance != null) {\n iscrollHandler.iScrollInstances.forEach(function(instance){\n instance.destroy();\n });\n }\n\n iScrollInstance = new IScroll(item, iscrollOptions);\n iscrollHandler.iScrollInstances.push(iScrollInstance);\n\n if(!fp_utils.hasClass(fp_utils.closest(element, SECTION_SEL), ACTIVE)){\n //off by default until the section gets active\n iScrollInstance.wheelOff();\n }\n\n item.fp_iscrollInstance = iScrollInstance;\n });\n },\n\n /**\n * Return a boolean depending on whether the scrollable element is a\n * the end or at the start of the scrolling depending on the given type.\n *\n * @param {String} type Either 'top' or 'bottom'\n * @param {Object} scrollable jQuery object for the scrollable element\n * @return {Boolean}\n */\n isScrolled: function(type, scrollable) {\n var scroller = scrollable.fp_iscrollInstance;\n\n //no scroller?\n if (!scroller) {\n return true;\n }\n\n if (type === 'top'){\n return scroller.y >= 0 && !fp_utils.getScrollTop(scrollable);\n } else if (type === 'bottom') {\n return (0 - scroller.y) + fp_utils.getScrollTop(scrollable) + 1 + scrollable.offsetHeight >= scrollable.scrollHeight;\n }\n },\n\n /**\n * Returns the scrollable element for the given section.\n * If there are landscape slides, will only return a scrollable element\n * if it is in the active slide.\n *\n * @param {Object} activeSection jQuery object containing current section\n * @return {Boolean}\n */\n scrollable: function(activeSection){\n // if there are landscape slides, we check if the scrolling bar is in the current one or not\n if ($(SLIDES_WRAPPER_SEL, activeSection).length) {\n return $(SCROLLABLE_SEL, $(SLIDE_ACTIVE_SEL, activeSection)[0] )[0];\n }\n return $(SCROLLABLE_SEL, activeSection)[0];\n },\n\n /**\n * Returns the scroll height of the wrapped content.\n * If this is larger than the window height minus section padding,\n * overflow scrolling is needed.\n *\n * @param {Object} element jQuery object containing current section\n * @return {Number}\n */\n scrollHeight: function(element) {\n return $('.fp-scroller', $(SCROLLABLE_SEL, element)[0] )[0].scrollHeight;\n },\n\n /**\n * Called when overflow scrolling is no longer needed for a section.\n *\n * @param {Object} element jQuery object containing current section\n */\n remove: function(element) {\n if(element == null) return;\n\n var scrollable = $(SCROLLABLE_SEL, element)[0];\n if (scrollable != null) {\n var iScrollInstance = scrollable.fp_iscrollInstance;\n if(iScrollInstance != null){\n iScrollInstance.destroy();\n }\n\n scrollable.fp_iscrollInstance = null;\n\n //unwrapping...\n $('.fp-scroller', element)[0].outerHTML = $('.fp-scroller', element)[0].innerHTML;\n $(SCROLLABLE_SEL, element)[0].outerHTML = $(SCROLLABLE_SEL, element)[0].innerHTML;\n }\n },\n\n /**\n * Called when overflow scrolling has already been setup but the\n * window height has potentially changed.\n *\n * @param {Object} element jQuery object containing current section\n * @param {Number} scrollHeight Current window height in pixels\n */\n update: function(element, scrollHeight) {\n //using a timeout in order to execute the refresh function only once when `update` is called multiple times in a\n //short period of time.\n //it also comes on handy because iScroll requires the use of timeout when using `refresh`.\n clearTimeout(iscrollHandler.refreshId);\n iscrollHandler.refreshId = setTimeout(function(){\n iscrollHandler.iScrollInstances.forEach(function(instance){\n instance.refresh();\n\n //ugly hack that we are forced to use due to the timeout delay\n //otherwise done on the fullpage.js reBuild function\n fullpage_api.silentMoveTo(fp_utils.index($(SECTION_ACTIVE_SEL)[0]) + 1);\n });\n }, 150);\n\n //updating the wrappers height\n fp_utils.css($(SCROLLABLE_SEL, element)[0], {'height': scrollHeight + 'px'});\n fp_utils.css($(SCROLLABLE_SEL, element)[0].parentNode, {'height': scrollHeight + getPaddings(element) + 'px'});\n },\n\n /**\n * Called to get any additional elements needed to wrap the section\n * content in order to facilitate overflow scrolling.\n *\n * @return {String|Object} Can be a string containing HTML,\n * a DOM element, or jQuery object.\n */\n wrapContent: function() {\n var scrollable = document.createElement('div');\n scrollable.className = SCROLLABLE;\n\n var scroller = document.createElement('div');\n scroller.className = 'fp-scroller';\n\n return {\n scrollable: scrollable,\n scroller: scroller\n };\n }\n };\n\n return {\n iscrollHandler: iscrollHandler\n };\n })();\n})(window, document);"]}