{"version":3,"sources":["jquery.multiscroll.js"],"names":["$","window","document","Math","undefined","fn","multiscroll","options","afterSectionLoadsId","g_transitionLapseId","MS","isOK","RegExp","test","domain","indexOf","NO_TRANSITION","canScroll","scrollings","extend","verticalCentered","scrollingSpeed","easing","easingcss3","menu","sectionsColor","anchors","navigation","navigationPosition","navigationColor","navigationTooltips","loopBottom","loopTop","css3","paddingTop","paddingBottom","fixedElements","normalScrollElements","keyboardScrolling","touchSensitivity","sectionSelector","leftSelector","rightSelector","afterLoad","onLeave","afterRender","afterResize","easeInQuart","x","t","b","c","d","isTouchDevice","navigator","userAgent","match","isTouch","msMaxTouchPoints","addClass","nav","resizeId","keydownId","numberSections","find","length","windowHeight","height","MSPointer","pointer","PointerEvent","down","move","getMSPointer","events","touchmove","touchstart","hashChangeHandler","sectionAnchor","location","hash","replace","section","lastScrolledDestiny","scrollPage","navClickHandler","e","preventDefault","index","this","parent","eq","navMouseEnterHandler","tooltip","data","hide","appendTo","fadeIn","navMouseLeaveHandler","fadeOut","remove","showError","displayWarnings","addMouseWheelHandler","addTouchHandler","has3d","el","createElement","transforms","webkitTransform","OTransform","msTransform","MozTransform","transform","body","insertBefore","style","getComputedStyle","getPropertyValue","removeChild","support3d","css","overflow","each","append","width","position","-ms-touch-action","right","top","touch-action","left","element","sectionIndex","attr","wrapInner","getTableHeight","closest","link","html","get","reverse","promise","done","last","first","isFunction","call","silentScroll","setBodyClass","readyState","scrollToAnchor","on","keydown","clearTimeout","activeElement","is","keyCode","which","inArray","setTimeout","shiftPressed","shiftKey","moveSectionUp","moveSectionDown","moveTo","onkeydown","mousedown","button","mouseenter","mouseleave","setMouseWheelScrolling","resizeHandler","previousHeight","currentHeight","abs","max","reBuild","resizing","scrollOverflow","scrollBarHandler","createScrollBarForAll","transformContainer","leftDestination","leftDestinationIndex","rightDestination","anchorLink","leavingSection","yMovement","destiny","fromIndex","toIndex","getYmovement","isFastSpeed","transitionLapse","name","topPos","siblings","removeClass","setURLHash","translate3dLeft","translate3dRight","animate","addEventListener","MouseWheelHandler","attachEvent","prev","next","isNaN","prevTime","Date","getTime","curTime","value","event","wheelDelta","deltaY","detail","delta","min","horizontalDetection","wheelDeltaX","deltaX","isScrollingVertically","timeDiff","push","averageEnd","getAverage","elements","number","sum","lastElements","slice","i","ceil","container","translate3d","animated","transition","-webkit-transition","-webkit-transform","-moz-transform","-ms-transform","text","String","classRe","className","sectionHeight","paddings","parseInt","setKeyboardScrolling","removeEventListener","detachEvent","setScrollingSpeed","touchStartY","touchEndY","touchMoveHandler","isReallyTouch","touchEvents","getEventsPage","pointerType","touchStartHandler","passive","y","pageY","pageX","touches","type","console","destroy","off","build","jQuery"],"mappings":"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","file":"jquery.multiscroll.min.js","sourcesContent":["/*!\r\n * multiscroll.js 0.2.3\r\n * https://github.com/alvarotrigo/multiscroll.js\r\n *\r\n * @license\r\n * Get a multiScroll.js Commercial License for commercial use\r\n * https://alvarotrigo.com/multiScroll/pricing/\r\n *\r\n * Copyright (C) 2018 http://alvarotrigo.com/multiScroll/ - A project by Alvaro Trigo\r\n */\r\n(function($, window, document, Math, undefined) {\r\n\r\n $.fn.multiscroll = function(options) {\r\n var MS = $.fn.multiscroll;\r\n var isOK = options && new RegExp('([\\\\d\\\\w]{8}-){3}[\\\\d\\\\w]{8}|^(?=.*?[A-Y])(?=.*?[a-y])(?=.*?[0-8])(?=.*?[#?!@$%^&*-]).{8,}$').test(options['li'+'cen'+'seK' + 'e' + 'y']) || document.domain.indexOf('al'+'varotri' +'go' + '.' + 'com') > -1;\r\n var NO_TRANSITION = 'ms-notransition';\r\n var canScroll = true;\r\n var scrollings = [];\r\n var afterSectionLoadsId;\r\n var g_transitionLapseId;\r\n\r\n // Create some defaults, extending them with any options that were provided\r\n options = $.extend({\r\n 'verticalCentered' : true,\r\n 'scrollingSpeed': 700,\r\n 'easing': 'easeInQuart',\r\n 'easingcss3': 'ease-out',\r\n 'menu': false,\r\n 'sectionsColor': [],\r\n 'anchors':[],\r\n 'navigation': false,\r\n 'navigationPosition': 'right',\r\n 'navigationColor': '#000',\r\n 'navigationTooltips': [],\r\n 'loopBottom': false,\r\n 'loopTop': false,\r\n 'css3': true,\r\n 'paddingTop': 0,\r\n 'paddingBottom': 0,\r\n 'fixedElements': null,\r\n 'normalScrollElements': null,\r\n 'keyboardScrolling': true,\r\n 'touchSensitivity': 5,\r\n\r\n // Custom selectors\r\n 'sectionSelector': '.ms-section',\r\n 'leftSelector': '.ms-left',\r\n 'rightSelector': '.ms-right',\r\n\r\n //events\r\n 'afterLoad': null,\r\n 'onLeave': null,\r\n 'afterRender': null,\r\n 'afterResize': null\r\n }, options);\r\n\r\n // adding default easing\r\n $.extend($.easing, {\r\n easeInQuart: function (x, t, b, c, d) {\r\n return c*(t/=d)*t*t*t + b;\r\n }\r\n });\r\n\r\n var isTouchDevice = navigator.userAgent.match(/(iPhone|iPod|iPad|Android|playbook|silk|BlackBerry|BB10|Windows Phone|Tizen|Bada|webOS|IEMobile|Opera Mini)/);\r\n var isTouch = (('ontouchstart' in window) || (navigator.msMaxTouchPoints > 0) || (navigator.maxTouchPoints));\r\n\r\n // adding class namef for right and left blocks\r\n if (options.rightSelector !== '.ms-right') {\r\n $(options.rightSelector).addClass('ms-right');\r\n }\r\n\r\n if (options.leftSelector !== '.ms-left') {\r\n $(options.leftSelector).addClass('ms-left');\r\n }\r\n\r\n var numberSections = $('.ms-left').find('.ms-section').length;\r\n var nav;\r\n var windowHeight = $(window).height();\r\n var MSPointer = getMSPointer();\r\n var events = {\r\n touchmove: 'ontouchmove' in window ? 'touchmove' : MSPointer.move,\r\n touchstart: 'ontouchstart' in window ? 'touchstart' : MSPointer.down\r\n };\r\n\r\n //only once my friend!\r\n displayWarnings();\r\n\r\n //timeouts\r\n var resizeId;\r\n\r\n addMouseWheelHandler();\r\n addTouchHandler();\r\n\r\n //if css3 is not supported, it will use jQuery animations\r\n if(options.css3){\r\n options.css3 = support3d();\r\n }\r\n\r\n $('html, body').css({\r\n 'overflow' : 'hidden',\r\n 'height' : '100%'\r\n });\r\n\r\n //adding class names to each sections\r\n if (options.sectionSelector !== '.ms-section') {\r\n $(options.sectionSelector).each(function(){\r\n $(this).addClass('ms-section');\r\n });\r\n }\r\n\r\n //creating the navigation dots\r\n if (options.navigation) {\r\n $('body').append('
');\r\n nav = $('#multiscroll-nav');\r\n\r\n nav.css('color', options.navigationColor);\r\n nav.addClass(options.navigationPosition);\r\n }\r\n\r\n $('.ms-right, .ms-left').css({\r\n 'width': '50%',\r\n 'position': 'absolute',\r\n 'height': '100%',\r\n '-ms-touch-action': 'none'\r\n });\r\n\r\n $('.ms-right').css({\r\n 'right': '1px', //http://stackoverflow.com/questions/23675457/chrome-and-opera-creating-small-padding-when-using-displaytable\r\n 'top': '0',\r\n '-ms-touch-action': 'none',\r\n 'touch-action': 'none'\r\n });\r\n\r\n $('.ms-left').css({\r\n 'left': '0',\r\n 'top': '0',\r\n '-ms-touch-action': 'none',\r\n 'touch-action': 'none'\r\n });\r\n\r\n\r\n $('.ms-left .ms-section, .ms-right .ms-section').each(function(){\r\n var sectionIndex = $(this).index();\r\n\r\n if(options.paddingTop || options.paddingBottom){\r\n $(this).css('padding', options.paddingTop + ' 0 ' + options.paddingBottom + ' 0');\r\n }\r\n\r\n if (typeof options.sectionsColor[sectionIndex] !== 'undefined') {\r\n $(this).css('background-color', options.sectionsColor[sectionIndex]);\r\n }\r\n\r\n if (typeof options.anchors[sectionIndex] !== 'undefined') {\r\n $(this).attr('data-anchor', options.anchors[sectionIndex]);\r\n }\r\n\r\n if(options.verticalCentered){\r\n addTableClass($(this));\r\n }\r\n\r\n //only for the left panel\r\n if($(this).closest('.ms-left').length && options.navigation) {\r\n var link = '';\r\n if(options.anchors.length){\r\n link = options.anchors[sectionIndex];\r\n }\r\n var tooltip = options.navigationTooltips[sectionIndex];\r\n if(typeof tooltip === 'undefined'){\r\n tooltip = '';\r\n }\r\n if (options.navigation) {\r\n nav.find('ul').append('
  • ');\r\n }\r\n }\r\n });\r\n\r\n //inverting the right panel\r\n $('.ms-right').html( $('.ms-right').find('.ms-section').get().reverse());\r\n\r\n $('.ms-left .ms-section, .ms-right .ms-section').each(function(){\r\n var sectionIndex = $(this).index();\r\n\r\n $(this).css({\r\n 'height': '100%'\r\n });\r\n\r\n\r\n if(!sectionIndex && options.navigation ){\r\n //activating the navigation bullet\r\n nav.find('li').eq(sectionIndex).find('a').addClass('active');\r\n }\r\n }).promise().done(function(){\r\n\r\n //if no active section is defined, the 1st one will be the default one\r\n if(!$('.ms-left .ms-section.active').length){\r\n $('.ms-right').find('.ms-section').last().addClass('active');\r\n $('.ms-left').find('.ms-section').first().addClass('active');\r\n }\r\n\r\n //vertical centered of the navigation + first bullet active\r\n if(options.navigation){\r\n nav.css('margin-top', '-' + (nav.height()/2) + 'px');\r\n }\r\n $.isFunction( options.afterRender ) && options.afterRender.call( this);\r\n\r\n //scrolling to the defined active section and adjusting right and left panels\r\n silentScroll();\r\n\r\n //setting the class for the body element\r\n setBodyClass();\r\n\r\n if (document.readyState == 'complete'){\r\n scrollToAnchor();\r\n }else{\r\n $(window).on('load', function() {\r\n scrollToAnchor();\r\n });\r\n }\r\n });\r\n\r\n\r\n //detecting any change on the URL to scroll to the given anchor link\r\n //(a way to detect back history button as we play with the hashes on the URL)\r\n $(window).on('hashchange', hashChangeHandler);\r\n\r\n function hashChangeHandler(){\r\n var value = window.location.hash.replace('#', '');\r\n var sectionAnchor = value;\r\n\r\n if(sectionAnchor.length){\r\n var section = $('.ms-left').find('[data-anchor=\"'+sectionAnchor+'\"]');\r\n\r\n if(section.length){\r\n var isFirstScrollMove = (typeof lastScrolledDestiny === 'undefined' );\r\n\r\n if (isFirstScrollMove || sectionAnchor !== lastScrolledDestiny){\r\n scrollPage(section);\r\n }\r\n }\r\n }\r\n };\r\n\r\n\r\n /**\r\n * Sliding with arrow keys, both, vertical and horizontal\r\n */\r\n $(document).keydown(keydownHandler);\r\n\r\n\r\n var keydownId;\r\n function keydownHandler(e) {\r\n clearTimeout(keydownId);\r\n\r\n var activeElement = $(document.activeElement);\r\n\r\n if(!activeElement.is('textarea') && !activeElement.is('input') && !activeElement.is('select') &&\r\n options.keyboardScrolling){\r\n var keyCode = e.which;\r\n\r\n //preventing the scroll with arrow keys & spacebar & Page Up & Down keys\r\n var keyControls = [40, 38, 32, 33, 34];\r\n if($.inArray(keyCode, keyControls) > -1){\r\n e.preventDefault();\r\n }\r\n\r\n keydownId = setTimeout(function(){\r\n onkeydown(e);\r\n },150);\r\n }\r\n }\r\n\r\n /**\r\n * Sliding with arrow keys, both, vertical and horizontal\r\n */\r\n function onkeydown(e){\r\n var shiftPressed = e.shiftKey;\r\n\r\n //do nothing if we can not scroll \r\n if(!canScroll){\r\n return;\r\n }\r\n\r\n switch (e.which) {\r\n //up\r\n case 38:\r\n case 33:\r\n MS.moveSectionUp();\r\n break;\r\n\r\n //down\r\n case 32: //spacebar\r\n if(shiftPressed){\r\n MS.moveSectionUp();\r\n break;\r\n }\r\n case 40:\r\n case 34:\r\n MS.moveSectionDown();\r\n break;\r\n\r\n //Home\r\n case 36:\r\n MS.moveTo(1);\r\n break;\r\n\r\n //End\r\n case 35:\r\n MS.moveTo( $('.ms-left .ms-section').length);\r\n break;\r\n\r\n default:\r\n return; // exit this handler for other keys\r\n }\r\n }\r\n\r\n /**\r\n * Disabling any action when pressing of the mouse wheel (Chrome, IE, Opera, Safari)\r\n */\r\n $(document).mousedown(function(e) {\r\n if(e.button == 1){\r\n e.preventDefault();\r\n return false;\r\n }\r\n });\r\n\r\n function navClickHandler(e) {\r\n e.preventDefault();\r\n var index = $(this).parent().index();\r\n scrollPage($('.ms-left .ms-section').eq(index));\r\n }\r\n\r\n //navigation action\r\n $(document).on('click', '#multiscroll-nav a', navClickHandler);\r\n\r\n function navMouseEnterHandler() {\r\n var tooltip = $(this).data('tooltip');\r\n $('
    ' + tooltip + '
    ').hide().appendTo($(this)).fadeIn(200);\r\n }\r\n\r\n function navMouseLeaveHandler() {\r\n $(this).find('.multiscroll-tooltip').fadeOut(200, function() {\r\n $(this).remove();\r\n });\r\n }\r\n\r\n //navigation tooltips\r\n $(document).on({\r\n mouseenter: navMouseEnterHandler,\r\n mouseleave: navMouseLeaveHandler\r\n }, '#multiscroll-nav li');\r\n\r\n\r\n if(options.normalScrollElements){\r\n $(document).on('mouseenter', options.normalScrollElements, function () {\r\n MS.setMouseWheelScrolling(false);\r\n });\r\n\r\n $(document).on('mouseleave', options.normalScrollElements, function(){\r\n MS.setMouseWheelScrolling(true);\r\n });\r\n }\r\n\r\n\r\n //when resizing the site, we adjust the heights of the sections\r\n $(window).on('resize', resizeHandler);\r\n\r\n\r\n var previousHeight = windowHeight;\r\n\r\n /**\r\n * When resizing is finished, we adjust the slides sizes and positions\r\n */\r\n function resizeHandler() {\r\n // rebuild immediately on touch devices\r\n if (isTouchDevice) {\r\n var activeElement = $(document.activeElement);\r\n\r\n //if the keyboard is NOT visible\r\n if (!activeElement.is('textarea') && !activeElement.is('input') && !activeElement.is('select')) {\r\n var currentHeight = $(window).height();\r\n\r\n //making sure the change in the viewport size is enough to force a rebuild. (20 % of the window to avoid problems when hidding scroll bars)\r\n if( Math.abs(currentHeight - previousHeight) > (20 * Math.max(previousHeight, currentHeight) / 100) ){\r\n reBuild(true);\r\n previousHeight = currentHeight;\r\n }\r\n }\r\n }else{\r\n //in order to call the functions only when the resize is finished\r\n //http://stackoverflow.com/questions/4298612/jquery-how-to-call-resize-event-only-once-its-finished-resizing\r\n clearTimeout(resizeId);\r\n\r\n resizeId = setTimeout(function(){\r\n reBuild(true);\r\n }, 350);\r\n }\r\n }\r\n\r\n /**\r\n * When resizing is finished, we adjust the slides sizes and positions\r\n */\r\n function reBuild(resizing){\r\n windowHeight = $(window).height();\r\n $('.ms-tableCell').each(function() {\r\n $(this).css({ height: getTableHeight($(this).parent()) });\r\n });\r\n\r\n if(options.scrollOverflow){\r\n scrollBarHandler.createScrollBarForAll();\r\n }\r\n\r\n silentScroll();\r\n $.isFunction( options.afterResize ) && options.afterResize.call( this);\r\n }\r\n\r\n function silentScroll(){\r\n //moving the right section to the bottom\r\n if(options.css3){\r\n transformContainer($('.ms-left'), 'translate3d(0px, -' + $('.ms-left').find('.ms-section.active').position().top + 'px, 0px)', false);\r\n transformContainer($('.ms-right'), 'translate3d(0px, -' + $('.ms-right').find('.ms-section.active').position().top + 'px, 0px)', false);\r\n }else{\r\n $('.ms-left').css('top', -$('.ms-left').find('.ms-section.active').position().top );\r\n $('.ms-right').css('top', -$('.ms-right').find('.ms-section.active').position().top );\r\n }\r\n }\r\n\r\n MS.moveSectionUp = function(){\r\n var prev = $('.ms-left .ms-section.active').prev('.ms-section');\r\n\r\n if(!prev.length && options.loopTop){\r\n prev = $('.ms-left .ms-section').last();\r\n }\r\n\r\n if (prev.length) {\r\n scrollPage(prev);\r\n }\r\n };\r\n\r\n MS.moveSectionDown = function (){\r\n var next = $('.ms-left .ms-section.active').next('.ms-section');\r\n\r\n if(!next.length && options.loopBottom ){\r\n next = $('.ms-left .ms-section').first();\r\n }\r\n\r\n if(next.length){\r\n scrollPage(next);\r\n }\r\n };\r\n\r\n MS.moveTo = function (section){\r\n var destiny = '';\r\n\r\n if(isNaN(section)){\r\n destiny = $('.ms-left [data-anchor=\"'+section+'\"]');\r\n }else{\r\n destiny = $('.ms-left .ms-section').eq( (section -1) );\r\n }\r\n\r\n scrollPage(destiny);\r\n };\r\n\r\n function scrollPage(leftDestination){\r\n var leftDestinationIndex = leftDestination.index();\r\n var rightDestination = $('.ms-right').find('.ms-section').eq( numberSections -1 - leftDestinationIndex);\r\n var rightDestinationIndex = numberSections - 1 - leftDestinationIndex;\r\n var anchorLink = leftDestination.data('anchor');\r\n var activeSection = $('.ms-left .ms-section.active');\r\n var leavingSection = activeSection.index() + 1;\r\n var yMovement = getYmovement(leftDestination);\r\n var isFastSpeed = options.scrollingSpeed < 700;\r\n var transitionLapse = isFastSpeed ? 700 : options.scrollingSpeed; \r\n\r\n //preventing from activating the MouseWheelHandler event\r\n //more than once if the page is scrolling\r\n canScroll = false;\r\n\r\n var topPos = {\r\n 'left' : leftDestination.position().top,\r\n 'right': rightDestination.position().top\r\n };\r\n\r\n rightDestination.addClass('active').siblings().removeClass('active');\r\n leftDestination.addClass('active').siblings().removeClass('active');\r\n\r\n setURLHash(anchorLink);\r\n\r\n // Use CSS3 translate functionality or...\r\n if (options.css3){\r\n\r\n //callback (onLeave)\r\n $.isFunction(options.onLeave) && options.onLeave.call(this, leavingSection, (leftDestinationIndex + 1), yMovement);\r\n\r\n var translate3dLeft = 'translate3d(0px, -' + topPos['left'] + 'px, 0px)';\r\n var translate3dRight = 'translate3d(0px, -' + topPos['right'] + 'px, 0px)';\r\n\r\n transformContainer($('.ms-left'), translate3dLeft, true);\r\n transformContainer($('.ms-right'), translate3dRight, true);\r\n\r\n if(options.scrollingSpeed){\r\n clearTimeout(afterSectionLoadsId);\r\n afterSectionLoadsId = setTimeout(function () {\r\n //callback (afterLoad)\r\n $.isFunction(options.afterLoad) && options.afterLoad.call(this, anchorLink, (leftDestinationIndex + 1));\r\n\r\n //disabling canScroll when using fastSpeed\r\n canScroll = !isFastSpeed; \r\n }, options.scrollingSpeed);\r\n }else{\r\n $.isFunction(options.afterLoad) && options.afterLoad.call(this, anchorLink, (leftDestinationIndex + 1));\r\n }\r\n }else{\r\n //callback (onLeave)\r\n $.isFunction(options.onLeave) && options.onLeave.call(this, leavingSection, (leftDestinationIndex + 1), yMovement);\r\n\r\n $('.ms-left').animate({\r\n 'top': -topPos['left']\r\n }, options.scrollingSpeed, options.easing, function(){\r\n $.isFunction(options.afterLoad) && options.afterLoad.call(this, anchorLink, (leftDestinationIndex + 1));\r\n\r\n canScroll = !isFastSpeed;\r\n });\r\n\r\n $('.ms-right').animate({\r\n 'top': -topPos['right']\r\n }, options.scrollingSpeed, options.easing);\r\n }\r\n\r\n //flag to avoid callingn `scrollPage()` twice in case of using anchor links\r\n lastScrolledDestiny = anchorLink;\r\n\r\n activateMenuElement(anchorLink);\r\n activateNavDots(anchorLink, leftDestinationIndex);\r\n\r\n // enabling canScroll after the minimum transition laps\r\n if(isFastSpeed){\r\n clearTimeout(g_transitionLapseId);\r\n g_transitionLapseId = setTimeout(function(){\r\n canScroll = true;\r\n }, transitionLapse);\r\n }\r\n }\r\n\r\n /**\r\n * Removes the auto scrolling action fired by the mouse wheel and tackpad.\r\n * After this function is called, the mousewheel and trackpad movements won't scroll through sections.\r\n */\r\n function removeMouseWheelHandler(){\r\n if (document.addEventListener) {\r\n document.removeEventListener('mousewheel', MouseWheelHandler, false); //IE9, Chrome, Safari, Oper\r\n document.removeEventListener('wheel', MouseWheelHandler, false); //Firefox\r\n } else {\r\n document.detachEvent(\"onmousewheel\", MouseWheelHandler); //IE 6/7/8\r\n }\r\n }\r\n\r\n /**\r\n * Adds the auto scrolling action for the mouse wheel and tackpad.\r\n * After this function is called, the mousewheel and trackpad movements will scroll through sections\r\n */\r\n function addMouseWheelHandler(){\r\n if (document.addEventListener) {\r\n document.addEventListener(\"mousewheel\", MouseWheelHandler, false); //IE9, Chrome, Safari, Oper\r\n document.addEventListener(\"wheel\", MouseWheelHandler, false); //Firefox\r\n } else {\r\n document.attachEvent(\"onmousewheel\", MouseWheelHandler); //IE 6/7/8\r\n }\r\n }\r\n\r\n /**\r\n * Detecting mousewheel scrolling\r\n *\r\n * http://blogs.sitepointstatic.com/examples/tech/mouse-wheel/index.html\r\n * http://www.sitepoint.com/html5-javascript-mouse-wheel/\r\n */\r\n var prevTime = new Date().getTime();\r\n\r\n function MouseWheelHandler(e) {\r\n var curTime = new Date().getTime();\r\n \r\n // cross-browser wheel delta\r\n e = e || window.event;\r\n var value = e.wheelDelta || -e.deltaY || -e.detail;\r\n var delta = Math.max(-1, Math.min(1, value));\r\n\r\n var horizontalDetection = typeof e.wheelDeltaX !== 'undefined' || typeof e.deltaX !== 'undefined';\r\n var isScrollingVertically = (Math.abs(e.wheelDeltaX) < Math.abs(e.wheelDelta)) || (Math.abs(e.deltaX ) < Math.abs(e.deltaY) || !horizontalDetection);\r\n\r\n //time difference between the last scroll and the current one\r\n var timeDiff = curTime-prevTime;\r\n prevTime = curTime;\r\n\r\n //keeping record of the previous scrollings\r\n scrollings.push(Math.abs(value));\r\n\r\n //haven't they scrolled in a while?\r\n //(enough to be consider a different scrolling action to scroll another section)\r\n if(timeDiff > 200){\r\n //emptying the array, we dont care about old scrollings for our averages\r\n scrollings = [];\r\n }\r\n\r\n if (canScroll) {\r\n var averageEnd = getAverage(scrollings, 10);\r\n var averageMiddle = getAverage(scrollings, 70);\r\n var isAccelerating = averageEnd >= averageMiddle;\r\n\r\n if(isAccelerating && isScrollingVertically){\r\n //scrolling down?\r\n if (delta < 0) {\r\n MS.moveSectionDown();\r\n }\r\n\r\n //scrolling up?\r\n else {\r\n MS.moveSectionUp();\r\n }\r\n }\r\n }\r\n\r\n return false;\r\n }\r\n\r\n /**\r\n * Gets the average of the last `number` elements of the given array.\r\n */\r\n function getAverage(elements, number){\r\n var sum = 0;\r\n\r\n //taking `number` elements from the end to make the average, if there are not enought, 1\r\n var lastElements = elements.slice(Math.max(elements.length - number, 1));\r\n\r\n for(var i = 0; i < lastElements.length; i++){\r\n sum = sum + lastElements[i];\r\n }\r\n\r\n return Math.ceil(sum/number);\r\n }\r\n\r\n /**\r\n * Adds a css3 transform property to the container class with or without animation depending on the animated param.\r\n */\r\n function transformContainer(container, translate3d, animated){\r\n if(animated){\r\n addAnimation(container);\r\n }else{\r\n removeAnimation(container);\r\n }\r\n\r\n container.css(getTransforms(translate3d));\r\n }\r\n\r\n /**\r\n * Adds transition animations for the given element\r\n */\r\n function addAnimation(element){\r\n var transition = 'all ' + options.scrollingSpeed + 'ms ' + options.easingcss3;\r\n\r\n element.removeClass(NO_TRANSITION);\r\n return element.css({\r\n '-webkit-transition': transition,\r\n 'transition': transition\r\n });\r\n }\r\n\r\n /**\r\n * Remove transition animations for the given element\r\n */\r\n function removeAnimation(element){\r\n return element.addClass(NO_TRANSITION);\r\n }\r\n\r\n /**\r\n * Returns the transform styles for all browsers\r\n */\r\n function getTransforms(translate3d){\r\n return {\r\n '-webkit-transform': translate3d,\r\n '-moz-transform': translate3d,\r\n '-ms-transform':translate3d,\r\n 'transform': translate3d\r\n };\r\n }\r\n\r\n /**\r\n * Activating the website navigation dots according to the given slide name.\r\n */\r\n function activateNavDots(name, sectionIndex){\r\n if(options.navigation){\r\n $('#multiscroll-nav').find('.active').removeClass('active');\r\n if(name){\r\n $('#multiscroll-nav').find('a[href=\"#' + name + '\"]').addClass('active');\r\n }else{\r\n $('#multiscroll-nav').find('li').eq(sectionIndex).find('a').addClass('active');\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Activating the website main menu elements according to the given slide name.\r\n */\r\n function activateMenuElement(name){\r\n if(options.menu){\r\n $(options.menu).find('.active').removeClass('active');\r\n $(options.menu).find('[data-menuanchor=\"'+name+'\"]').addClass('active');\r\n }\r\n }\r\n\r\n /**\r\n * Retuns `up` or `down` depending on the scrolling movement to reach its destination\r\n * from the current section.\r\n */\r\n function getYmovement(destiny){\r\n var fromIndex = $('.ms-left .ms-section.active').index();\r\n var toIndex = destiny.index();\r\n\r\n if(fromIndex > toIndex){\r\n return 'up';\r\n }\r\n return 'down';\r\n }\r\n\r\n\r\n /**\r\n * Sets the URL hash for a section with slides\r\n */\r\n function setURLHash(anchorLink){\r\n if(options.anchors.length){\r\n location.hash = anchorLink;\r\n }\r\n\r\n setBodyClass();\r\n }\r\n\r\n /**\r\n * Sets a class for the body of the page depending on the active section / slide\r\n */\r\n function setBodyClass(){\r\n var section = $('.ms-left .ms-section.active');\r\n var sectionAnchor = section.data('anchor');\r\n var sectionIndex = section.index();\r\n\r\n var text = String(sectionIndex);\r\n\r\n if(options.anchors.length){\r\n text = sectionAnchor;\r\n }\r\n\r\n //changing slash for dash to make it a valid CSS style\r\n text = text.replace('/', '-').replace('#','');\r\n\r\n //removing previous anchor classes\r\n var classRe = new RegExp('\\\\b\\\\s?' + 'ms-viewing' + '-[^\\\\s]+\\\\b', \"g\");\r\n $('body')[0].className = $('body')[0].className.replace(classRe, '');\r\n\r\n //adding the current anchor\r\n $('body').addClass('ms-viewing-' + text);\r\n }\r\n\r\n\r\n /**\r\n * Checks for translate3d support\r\n * @return boolean\r\n * http://stackoverflow.com/questions/5661671/detecting-transform-translate3d-support\r\n */\r\n function support3d() {\r\n var el = document.createElement('p'),\r\n has3d,\r\n transforms = {\r\n 'webkitTransform':'-webkit-transform',\r\n 'OTransform':'-o-transform',\r\n 'msTransform':'-ms-transform',\r\n 'MozTransform':'-moz-transform',\r\n 'transform':'transform'\r\n };\r\n\r\n // Add it to the body to get the computed style.\r\n document.body.insertBefore(el, null);\r\n\r\n for (var t in transforms) {\r\n if (el.style[t] !== undefined) {\r\n el.style[t] = \"translate3d(1px,1px,1px)\";\r\n has3d = window.getComputedStyle(el).getPropertyValue(transforms[t]);\r\n }\r\n }\r\n\r\n document.body.removeChild(el);\r\n\r\n return (has3d !== undefined && has3d.length > 0 && has3d !== \"none\");\r\n }\r\n\r\n /**\r\n * Wraps an element in order to center it vertically by using a class style.\r\n */\r\n function addTableClass(element){\r\n element.addClass('ms-table').wrapInner('
    ');\r\n }\r\n\r\n /**\r\n * Gets the height of the section after removing the paddings.\r\n */\r\n function getTableHeight(section){\r\n var sectionHeight = windowHeight;\r\n\r\n if(options.paddingTop || options.paddingBottom){\r\n var paddings = parseInt(section.css('padding-top')) + parseInt(section.css('padding-bottom'));\r\n sectionHeight = (windowHeight - paddings);\r\n }\r\n\r\n return sectionHeight;\r\n }\r\n\r\n\r\n /**\r\n * Scrolls the page to the existent anchor in the URL\r\n */\r\n function scrollToAnchor(){\r\n //getting the anchor link in the URL and deleting the `#`\r\n var sectionAnchor = window.location.hash.replace('#', '');\r\n var section = $('.ms-left .ms-section[data-anchor=\"'+sectionAnchor+'\"]');\r\n\r\n if(sectionAnchor.length && section.length){\r\n scrollPage(section);\r\n }\r\n }\r\n\r\n /**\r\n * Adds or remove the possiblity of scrolling through sections by using the keyboard arrow keys\r\n */\r\n MS.setKeyboardScrolling = function (value){\r\n options.keyboardScrolling = value;\r\n };\r\n\r\n /**\r\n * Adds or remove the possiblity of scrolling through sections by using the mouse wheel or the trackpad.\r\n */\r\n MS.setMouseWheelScrolling = function (value){\r\n if(value){\r\n addMouseWheelHandler();\r\n }else{\r\n removeMouseWheelHandler();\r\n }\r\n };\r\n\r\n /**\r\n * Defines the scrolling speed\r\n */\r\n MS.setScrollingSpeed = function(value){\r\n options.scrollingSpeed = value;\r\n };\r\n\r\n\r\n\r\n var touchStartY = 0;\r\n var touchStartX = 0;\r\n var touchEndY = 0;\r\n var touchEndX = 0;\r\n\r\n /* Detecting touch events\r\n\r\n * As we are changing the top property of the page on scrolling, we can not use the traditional way to detect it.\r\n * This way, the touchstart and the touch moves shows an small difference between them which is the\r\n * used one to determine the direction.\r\n */\r\n function touchMoveHandler(e){\r\n\r\n if(isReallyTouch(e)){\r\n //preventing the easing on iOS devices\r\n event.preventDefault();\r\n\r\n var activeSection = $('.ms-left .ms-section.active');\r\n\r\n if (canScroll) { //if theres any #\r\n var touchEvents = getEventsPage(e);\r\n touchEndY = touchEvents['y'];\r\n touchEndX = touchEvents['x'];\r\n\r\n //is the movement greater than the minimum resistance to scroll?\r\n if (Math.abs(touchStartY - touchEndY) > ($(window).height() / 100 * options.touchSensitivity)) {\r\n\r\n if (touchStartY > touchEndY) {\r\n MS.moveSectionDown();\r\n\r\n } else if (touchEndY > touchStartY) {\r\n MS.moveSectionUp();\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * As IE >= 10 fires both touch and mouse events when using a mouse in a touchscreen\r\n * this way we make sure that is really a touch event what IE is detecting.\r\n */\r\n function isReallyTouch(e){\r\n //if is not IE || IE is detecting `touch` or `pen`\r\n return typeof e.pointerType === 'undefined' || e.pointerType != 'mouse';\r\n }\r\n\r\n\r\n /**\r\n * Handler to get he coordinates of the starting touch\r\n */\r\n function touchStartHandler(e){\r\n\r\n if(isReallyTouch(e)){\r\n var touchEvents = getEventsPage(e);\r\n touchStartY = touchEvents['y'];\r\n touchStartX = touchEvents['x'];\r\n }\r\n }\r\n\r\n\r\n /**\r\n * Adds the possibility to auto scroll through sections on touch devices.\r\n */\r\n function addTouchHandler(){\r\n if(isTouch || isTouchDevice){\r\n document.removeEventListener(events.touchstart, touchStartHandler);\r\n document.removeEventListener(events.touchmove, touchMoveHandler, {passive: false});\r\n\r\n document.addEventListener(events.touchstart, touchStartHandler);\r\n document.addEventListener(events.touchmove, touchMoveHandler, {passive: false});\r\n }\r\n }\r\n\r\n /**\r\n * Removes the auto scrolling for touch devices.\r\n */\r\n function removeTouchHandler(){\r\n if(isTouch || isTouchDevice){\r\n document.removeEventListener(events.touchstart, touchStartHandler);\r\n document.removeEventListener(events.touchmove, touchMoveHandler, {passive: false});\r\n }\r\n }\r\n\r\n /*\r\n * Returns and object with Microsoft pointers (for IE<11 and for IE >= 11)\r\n * http://msdn.microsoft.com/en-us/library/ie/dn304886(v=vs.85).aspx\r\n */\r\n function getMSPointer(){\r\n var pointer;\r\n\r\n //IE >= 11\r\n if(window.PointerEvent){\r\n pointer = { down: \"pointerdown\", move: \"pointermove\"};\r\n }\r\n\r\n //IE < 11\r\n else{\r\n pointer = { down: \"MSPointerDown\", move: \"MSPointerMove\"};\r\n }\r\n\r\n return pointer;\r\n }\r\n\r\n /**\r\n * Gets the pageX and pageY properties depending on the browser.\r\n * https://github.com/alvarotrigo/fullPage.js/issues/194#issuecomment-34069854\r\n */\r\n function getEventsPage(e){\r\n var events = [];\r\n\r\n events.y = (typeof e.pageY !== 'undefined' && (e.pageY || e.pageX) ? e.pageY : e.touches[0].pageY);\r\n events.x = (typeof e.pageX !== 'undefined' && (e.pageY || e.pageX) ? e.pageX : e.touches[0].pageX);\r\n\r\n //in touch devices with scrollBar:true, e.pageY is detected, but we have to deal with touch events. #1008\r\n if(isTouch && isReallyTouch(e) && typeof e.touches !== 'undefined'){\r\n events.y = e.touches[0].pageY;\r\n events.x = e.touches[0].pageX;\r\n }\r\n\r\n return events;\r\n }\r\n\r\n /**\r\n * Destroy multiscroll.js plugin's events\r\n */\r\n MS.destroy = function() {\r\n MS.setKeyboardScrolling(false);\r\n MS.setMouseWheelScrolling(false);\r\n removeTouchHandler();\r\n\r\n $(window)\r\n .off('hashchange', hashChangeHandler)\r\n .off('resize', resizeHandler);\r\n\r\n $(document)\r\n .off('mouseenter', '#multiscroll-nav li')\r\n .off('mouseleave', '#multiscroll-nav li')\r\n .off('click', '#multiscroll-nav a');\r\n };\r\n\r\n /**\r\n * Build multiscroll.js plugin's events after destroy\r\n */\r\n MS.build = function() {\r\n MS.setKeyboardScrolling(true);\r\n MS.setMouseWheelScrolling(true);\r\n addTouchHandler();\r\n\r\n $(window)\r\n .on('hashchange', hashChangeHandler)\r\n .on('resize', resizeHandler);\r\n\r\n $(document)\r\n .on('mouseenter', '#multiscroll-nav li', navMouseEnterHandler)\r\n .on('mouseleave', '#multiscroll-nav li', navMouseLeaveHandler)\r\n .on('click', '#multiscroll-nav a', navClickHandler);\r\n };\r\n\r\n /**\r\n * Displays warnings\r\n */\r\n function displayWarnings(){\r\n var l = options['li' + 'c' + 'enseK' + 'e' + 'y'];\r\n var msgStyle = 'font-size: 15px;background:yellow;';\r\n\r\n if(!isOK){\r\n showError('error', 'multiScroll.js version 0.2.3 has changed its license to GPLv3 and it requires a `licenseKey` option. Read about it here:');\r\n showError('error', 'https://github.com/alvarotrigo/multiScroll.js#options');\r\n }\r\n }\r\n\r\n /**\r\n * Shows a message in the console of the given type.\r\n */\r\n function showError(type, text){\r\n window.console && window.console[type] && window.console[type]('multiScroll: ' + text);\r\n }\r\n };\r\n})(jQuery, window, document, Math);\r\n"]}