From a47d9e40948711c1055cd71d0a9693f536b97aab Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alvaro=20Trigo=20Lo=CC=81pez?= Date: Wed, 7 Mar 2018 16:27:38 +0100 Subject: [PATCH] - Fixing bug ##103 - Updating version and dist files --- dist/jquery.multiscroll.css | 2 +- dist/jquery.multiscroll.extensions.min.js | 2 +- dist/jquery.multiscroll.js | 4 ++-- dist/jquery.multiscroll.min.css | 2 +- dist/jquery.multiscroll.min.css.map | 2 +- dist/jquery.multiscroll.min.js | 4 ++-- dist/jquery.multiscroll.min.js.map | 2 +- jquery.multiscroll.css | 2 +- jquery.multiscroll.js | 4 ++-- jquery.multiscroll.min.js | 4 ++-- package.json | 2 +- 11 files changed, 15 insertions(+), 15 deletions(-) diff --git a/dist/jquery.multiscroll.css b/dist/jquery.multiscroll.css index 9883832..b08d7f8 100644 --- a/dist/jquery.multiscroll.css +++ b/dist/jquery.multiscroll.css @@ -1,5 +1,5 @@ /*! - * multiscroll.js 0.1.9 + * multiscroll.js 0.2.0 * https://github.com/alvarotrigo/multiscroll.js * @license MIT licensed * diff --git a/dist/jquery.multiscroll.extensions.min.js b/dist/jquery.multiscroll.extensions.min.js index 63f9224..609b418 100644 --- a/dist/jquery.multiscroll.extensions.min.js +++ b/dist/jquery.multiscroll.extensions.min.js @@ -1,5 +1,5 @@ /*! - * multiscroll.js 0.1.9 - Extensions 0.0.6 + * multiscroll.js 0.2.0 - Extensions 0.0.6 * https://github.com/alvarotrigo/multiscroll.js * @license MIT licensed * diff --git a/dist/jquery.multiscroll.js b/dist/jquery.multiscroll.js index 359e565..7467598 100644 --- a/dist/jquery.multiscroll.js +++ b/dist/jquery.multiscroll.js @@ -1,5 +1,5 @@ /*! - * multiscroll.js 0.1.9 + * multiscroll.js 0.2.0 * https://github.com/alvarotrigo/multiscroll.js * @license MIT licensed * @@ -335,7 +335,7 @@ $(window).on('resize', resizeHandler); - var previousHeight = windowsHeight; + var previousHeight = windowHeight; /** * When resizing is finished, we adjust the slides sizes and positions diff --git a/dist/jquery.multiscroll.min.css b/dist/jquery.multiscroll.min.css index 35adf96..9918216 100644 --- a/dist/jquery.multiscroll.min.css +++ b/dist/jquery.multiscroll.min.css @@ -1,5 +1,5 @@ /*! - * multiscroll.js 0.1.9 + * multiscroll.js 0.2.0 * https://github.com/alvarotrigo/multiscroll.js * @license MIT licensed * diff --git a/dist/jquery.multiscroll.min.css.map b/dist/jquery.multiscroll.min.css.map index 272714a..dbbe37e 100644 --- a/dist/jquery.multiscroll.min.css.map +++ b/dist/jquery.multiscroll.min.css.map @@ -1 +1 @@ -{"version":3,"sources":["jquery.multiscroll.css"],"names":[],"mappings":";;;;;;AAOM,KAAN,KACI,OAAQ,EACR,QAAS,EACT,SAAS,OACT,4BAA6B,cAEjC,YACI,SAAU,SACV,mBAAoB,WACpB,gBAAiB,WACjB,WAAY,WAEhB,qBACI,QAAS,MACT,MAAO,KAEX,cACI,QAAS,WACT,eAAgB,OAChB,MAAO,KACP,OAAQ,KAEZ,WACI,mBAAoB,IAAI,IAAK,SAC7B,gBAAiB,IAAI,IAAK,SAC1B,cAAe,IAAI,IAAK,SACxB,WAAY,IAAI,IAAK,SAEzB,iBACI,SAAU,MACV,QAAS,IACT,WAAY,MACZ,IAAK,IACL,QAAS,EAEb,uBACI,MAAO,KAEX,sBACI,KAAM,KAEV,oBACE,OAAQ,EACR,QAAS,EAEX,oBACI,QAAS,MACT,MAAO,KACP,OAAQ,KACR,OAAQ,IACR,SAAS,SAEb,sBACI,QAAS,MACT,SAAU,SACV,QAAS,EACT,MAAO,KACP,OAAQ,KACR,OAAQ,QACR,gBAAiB,KAErB,iCACI,WAAY,KAEhB,sBACI,IAAK,IACL,KAAM,IACN,MAAO,IACP,OAAQ,IACR,OAAQ,IAAI,MAAM,KAClB,WAAY,cACZ,sBAAuB,IACvB,mBAAoB,IACpB,cAAe,IACf,SAAU,SACV,QAAS,EAEb,qBACI,SAAU,SACV,MAAO,KACP,UAAW,KACX,YAAa,MAAO,UAAW,WAC/B,IAAK,KACL,YAAa,OACb,UAAW,MAEf,2BACI,MAAO,KAEX,0BACI,KAAM,KAEV,wBACI,QAAS,KAEb,eACI,SAAU,OACV,SAAU,SAEd,aACI,SAAU,OAEd,kBACI,OAAQ","file":"jquery.multiscroll.min.css","sourcesContent":["/*!\r\n * multiscroll.js 0.1.9\r\n * https://github.com/alvarotrigo/multiscroll.js\r\n * @license MIT licensed\r\n *\r\n * Copyright (C) 2016 alvarotrigo.com - A project by Alvaro Trigo\r\n */\r\nhtml, body {\r\n margin: 0;\r\n padding: 0;\r\n overflow:hidden;\r\n -webkit-tap-highlight-color: rgba(0,0,0,0);\r\n}\r\n.ms-section {\r\n position: relative;\r\n -webkit-box-sizing: border-box;\r\n -moz-box-sizing: border-box;\r\n box-sizing: border-box;\r\n}\r\n.ms-section.ms-table{\r\n display: table;\r\n width: 100%;\r\n}\r\n.ms-tableCell {\r\n display: table-cell;\r\n vertical-align: middle;\r\n width: 100%;\r\n height: 100%;\r\n}\r\n.ms-easing {\r\n -webkit-transition: all 0.7s ease-out;\r\n -moz-transition: all 0.7s ease-out;\r\n -o-transition: all 0.7s ease-out;\r\n transition: all 0.7s ease-out;\r\n}\r\n#multiscroll-nav {\r\n position: fixed;\r\n z-index: 100;\r\n margin-top: -32px;\r\n top: 50%;\r\n opacity: 1;\r\n}\r\n#multiscroll-nav.right {\r\n right: 17px;\r\n}\r\n#multiscroll-nav.left {\r\n left: 17px;\r\n}\r\n#multiscroll-nav ul{\r\n margin: 0;\r\n padding: 0;\r\n}\r\n#multiscroll-nav li{\r\n display: block;\r\n width: 14px;\r\n height: 13px;\r\n margin: 7px;\r\n position:relative;\r\n}\r\n#multiscroll-nav li a{\r\n display: block;\r\n position: relative;\r\n z-index: 1;\r\n width: 100%;\r\n height: 100%;\r\n cursor: pointer;\r\n text-decoration: none;\r\n}\r\n#multiscroll-nav li .active span{\r\n background: #333;\r\n}\r\n#multiscroll-nav span{\r\n top: 2px;\r\n left: 2px;\r\n width: 8px;\r\n height: 8px;\r\n border: 1px solid #000;\r\n background: rgba(0, 0, 0, 0);\r\n -webkit-border-radius: 50%;\r\n -moz-border-radius: 50%;\r\n border-radius: 50%;\r\n position: absolute;\r\n z-index: 1;\r\n}\r\n.multiscroll-tooltip {\r\n position: absolute;\r\n color: #fff;\r\n font-size: 14px;\r\n font-family: arial, helvetica, sans-serif;\r\n top: -2px;\r\n white-space: nowrap;\r\n max-width: 220px;\r\n}\r\n.multiscroll-tooltip.right {\r\n right: 20px;\r\n}\r\n.multiscroll-tooltip.left {\r\n left: 20px;\r\n}\r\n.ms-responsive .ms-hide{\r\n display: none;\r\n}\r\n.ms-scrollable {\r\n overflow: hidden;\r\n position: relative;\r\n}\r\n.ms-scroller{\r\n overflow: hidden;\r\n}\r\n.iScrollIndicator{\r\n border: 0 !important;\r\n}\r\n"]} \ No newline at end of file +{"version":3,"sources":["jquery.multiscroll.css"],"names":[],"mappings":";;;;;;AAOM,KAAN,KACI,OAAQ,EACR,QAAS,EACT,SAAS,OACT,4BAA6B,cAEjC,YACI,SAAU,SACV,mBAAoB,WACpB,gBAAiB,WACjB,WAAY,WAEhB,qBACI,QAAS,MACT,MAAO,KAEX,cACI,QAAS,WACT,eAAgB,OAChB,MAAO,KACP,OAAQ,KAEZ,WACI,mBAAoB,IAAI,IAAK,SAC7B,gBAAiB,IAAI,IAAK,SAC1B,cAAe,IAAI,IAAK,SACxB,WAAY,IAAI,IAAK,SAEzB,iBACI,SAAU,MACV,QAAS,IACT,WAAY,MACZ,IAAK,IACL,QAAS,EAEb,uBACI,MAAO,KAEX,sBACI,KAAM,KAEV,oBACE,OAAQ,EACR,QAAS,EAEX,oBACI,QAAS,MACT,MAAO,KACP,OAAQ,KACR,OAAQ,IACR,SAAS,SAEb,sBACI,QAAS,MACT,SAAU,SACV,QAAS,EACT,MAAO,KACP,OAAQ,KACR,OAAQ,QACR,gBAAiB,KAErB,iCACI,WAAY,KAEhB,sBACI,IAAK,IACL,KAAM,IACN,MAAO,IACP,OAAQ,IACR,OAAQ,IAAI,MAAM,KAClB,WAAY,cACZ,sBAAuB,IACvB,mBAAoB,IACpB,cAAe,IACf,SAAU,SACV,QAAS,EAEb,qBACI,SAAU,SACV,MAAO,KACP,UAAW,KACX,YAAa,MAAO,UAAW,WAC/B,IAAK,KACL,YAAa,OACb,UAAW,MAEf,2BACI,MAAO,KAEX,0BACI,KAAM,KAEV,wBACI,QAAS,KAEb,eACI,SAAU,OACV,SAAU,SAEd,aACI,SAAU,OAEd,kBACI,OAAQ","file":"jquery.multiscroll.min.css","sourcesContent":["/*!\r\n * multiscroll.js 0.2.0\r\n * https://github.com/alvarotrigo/multiscroll.js\r\n * @license MIT licensed\r\n *\r\n * Copyright (C) 2016 alvarotrigo.com - A project by Alvaro Trigo\r\n */\r\nhtml, body {\r\n margin: 0;\r\n padding: 0;\r\n overflow:hidden;\r\n -webkit-tap-highlight-color: rgba(0,0,0,0);\r\n}\r\n.ms-section {\r\n position: relative;\r\n -webkit-box-sizing: border-box;\r\n -moz-box-sizing: border-box;\r\n box-sizing: border-box;\r\n}\r\n.ms-section.ms-table{\r\n display: table;\r\n width: 100%;\r\n}\r\n.ms-tableCell {\r\n display: table-cell;\r\n vertical-align: middle;\r\n width: 100%;\r\n height: 100%;\r\n}\r\n.ms-easing {\r\n -webkit-transition: all 0.7s ease-out;\r\n -moz-transition: all 0.7s ease-out;\r\n -o-transition: all 0.7s ease-out;\r\n transition: all 0.7s ease-out;\r\n}\r\n#multiscroll-nav {\r\n position: fixed;\r\n z-index: 100;\r\n margin-top: -32px;\r\n top: 50%;\r\n opacity: 1;\r\n}\r\n#multiscroll-nav.right {\r\n right: 17px;\r\n}\r\n#multiscroll-nav.left {\r\n left: 17px;\r\n}\r\n#multiscroll-nav ul{\r\n margin: 0;\r\n padding: 0;\r\n}\r\n#multiscroll-nav li{\r\n display: block;\r\n width: 14px;\r\n height: 13px;\r\n margin: 7px;\r\n position:relative;\r\n}\r\n#multiscroll-nav li a{\r\n display: block;\r\n position: relative;\r\n z-index: 1;\r\n width: 100%;\r\n height: 100%;\r\n cursor: pointer;\r\n text-decoration: none;\r\n}\r\n#multiscroll-nav li .active span{\r\n background: #333;\r\n}\r\n#multiscroll-nav span{\r\n top: 2px;\r\n left: 2px;\r\n width: 8px;\r\n height: 8px;\r\n border: 1px solid #000;\r\n background: rgba(0, 0, 0, 0);\r\n -webkit-border-radius: 50%;\r\n -moz-border-radius: 50%;\r\n border-radius: 50%;\r\n position: absolute;\r\n z-index: 1;\r\n}\r\n.multiscroll-tooltip {\r\n position: absolute;\r\n color: #fff;\r\n font-size: 14px;\r\n font-family: arial, helvetica, sans-serif;\r\n top: -2px;\r\n white-space: nowrap;\r\n max-width: 220px;\r\n}\r\n.multiscroll-tooltip.right {\r\n right: 20px;\r\n}\r\n.multiscroll-tooltip.left {\r\n left: 20px;\r\n}\r\n.ms-responsive .ms-hide{\r\n display: none;\r\n}\r\n.ms-scrollable {\r\n overflow: hidden;\r\n position: relative;\r\n}\r\n.ms-scroller{\r\n overflow: hidden;\r\n}\r\n.iScrollIndicator{\r\n border: 0 !important;\r\n}\r\n"]} \ No newline at end of file diff --git a/dist/jquery.multiscroll.min.js b/dist/jquery.multiscroll.min.js index 7e459ab..884aaeb 100644 --- a/dist/jquery.multiscroll.min.js +++ b/dist/jquery.multiscroll.min.js @@ -1,9 +1,9 @@ /*! - * multiscroll.js 0.1.9 + * multiscroll.js 0.2.0 * https://github.com/alvarotrigo/multiscroll.js * @license MIT licensed * * Copyright (C) 2016 alvarotrigo.com - A project by Alvaro Trigo */ -!function(z,R,F,Y,I){z.fn.multiscroll=function(v){var o=z.fn.multiscroll;v=z.extend({verticalCentered:!0,scrollingSpeed:700,easing:"easeInQuart",menu:!1,sectionsColor:[],anchors:[],navigation:!1,navigationPosition:"right",navigationColor:"#000",navigationTooltips:[],loopBottom:!1,loopTop:!1,css3:!1,paddingTop:0,paddingBottom:0,fixedElements:null,normalScrollElements:null,keyboardScrolling:!0,touchSensitivity:5,sectionSelector:".ms-section",leftSelector:".ms-left",rightSelector:".ms-right",afterLoad:null,onLeave:null,afterRender:null,afterResize:null},v);var h=600,n=navigator.userAgent.match(/(iPhone|iPod|iPad|Android|playbook|silk|BlackBerry|BB10|Windows Phone|Tizen|Bada|webOS|IEMobile|Opera Mini)/),i="ontouchstart"in R||0'+e+"").hide().appendTo(z(this)).fadeIn(200)}function m(){z(this).find(".multiscroll-tooltip").fadeOut(200,function(){z(this).remove()})}w(),L(),v.css3&&(v.css3=function(){var e,t=F.createElement("p"),n={webkitTransform:"-webkit-transform",OTransform:"-o-transform",msTransform:"-ms-transform",MozTransform:"-moz-transform",transform:"transform"};for(var o in F.body.insertBefore(t,null),n)t.style[o]!==I&&(t.style[o]="translate3d(1px,1px,1px)",e=R.getComputedStyle(t).getPropertyValue(n[o]));return F.body.removeChild(t),e!==I&&0
    '),(s=z("#multiscroll-nav")).css("color",v.navigationColor),s.addClass(v.navigationPosition)),z(".ms-right, .ms-left").css({width:"50%",position:"absolute",height:"100%","-ms-touch-action":"none"}),z(".ms-right").css({right:"1px",top:"0","-ms-touch-action":"none","touch-action":"none"}),z(".ms-left").css({left:"0",top:"0","-ms-touch-action":"none","touch-action":"none"}),z(".ms-left .ms-section, .ms-right .ms-section").each(function(){var e,t=z(this).index();if((v.paddingTop||v.paddingBottom)&&z(this).css("padding",v.paddingTop+" 0 "+v.paddingBottom+" 0"),void 0!==v.sectionsColor[t]&&z(this).css("background-color",v.sectionsColor[t]),void 0!==v.anchors[t]&&z(this).attr("data-anchor",v.anchors[t]),v.verticalCentered&&(e=z(this)).addClass("ms-table").wrapInner('
    '),z(this).closest(".ms-left").length&&v.navigation){var n="";v.anchors.length&&(n=v.anchors[t]);var o=v.navigationTooltips[t];void 0===o&&(o=""),v.navigation&&s.find("ul").append('
  • ')}}),z(".ms-right").html(z(".ms-right").find(".ms-section").get().reverse()),z(".ms-left .ms-section, .ms-right .ms-section").each(function(){var e=z(this).index();z(this).css({height:"100%"}),!e&&v.navigation&&s.find("li").eq(e).find("a").addClass("active")}).promise().done(function(){z(".ms-left .ms-section.active").length||(z(".ms-right").find(".ms-section").last().addClass("active"),z(".ms-left").find(".ms-section").first().addClass("active")),v.navigation&&s.css("margin-top","-"+s.height()/2+"px"),z.isFunction(v.afterRender)&&v.afterRender.call(this),p(),y(),z(R).on("load",function(){var e,t;e=R.location.hash.replace("#",""),t=z('.ms-left .ms-section[data-anchor="'+e+'"]'),e.length&&S(t)})}),z(R).on("hashchange",e),z(F).keydown(function(e){clearTimeout(l);var t=z(F.activeElement);if(!t.is("textarea")&&!t.is("input")&&!t.is("select")&&v.keyboardScrolling){var n=e.which;-120*Y.max(d,t)/100&&(f(!0),d=t)}}else clearTimeout(a),a=setTimeout(function(){f(!0)},350)});var d=windowsHeight;function f(e){r=z(R).height(),z(".ms-tableCell").each(function(){z(this).css({height:C(z(this).parent())})}),v.scrollOverflow&&scrollBarHandler.createScrollBarForAll(),p(),z.isFunction(v.afterResize)&&v.afterResize.call(this)}function p(){v.css3?(b(z(".ms-left"),"translate3d(0px, -"+z(".ms-left").find(".ms-section.active").position().top+"px, 0px)",!1),b(z(".ms-right"),"translate3d(0px, -"+z(".ms-right").find(".ms-section.active").position().top+"px, 0px)",!1)):(z(".ms-left").css("top",-z(".ms-left").find(".ms-section.active").position().top),z(".ms-right").css("top",-z(".ms-right").find(".ms-section.active").position().top))}function S(e){var t=e.index(),n=z(".ms-right").find(".ms-section").eq(u-1-t),o=e.data("anchor"),i=z(".ms-left .ms-section.active").index()+1,s=function(e){var t=z(".ms-left .ms-section.active").index(),n=e.index();if(nz(R).height()/100*v.touchSensitivity&&(E'+e+"
    ").hide().appendTo(z(this)).fadeIn(200)}function m(){z(this).find(".multiscroll-tooltip").fadeOut(200,function(){z(this).remove()})}w(),L(),v.css3&&(v.css3=function(){var e,t=F.createElement("p"),n={webkitTransform:"-webkit-transform",OTransform:"-o-transform",msTransform:"-ms-transform",MozTransform:"-moz-transform",transform:"transform"};for(var o in F.body.insertBefore(t,null),n)t.style[o]!==I&&(t.style[o]="translate3d(1px,1px,1px)",e=R.getComputedStyle(t).getPropertyValue(n[o]));return F.body.removeChild(t),e!==I&&0
      '),(s=z("#multiscroll-nav")).css("color",v.navigationColor),s.addClass(v.navigationPosition)),z(".ms-right, .ms-left").css({width:"50%",position:"absolute",height:"100%","-ms-touch-action":"none"}),z(".ms-right").css({right:"1px",top:"0","-ms-touch-action":"none","touch-action":"none"}),z(".ms-left").css({left:"0",top:"0","-ms-touch-action":"none","touch-action":"none"}),z(".ms-left .ms-section, .ms-right .ms-section").each(function(){var e,t=z(this).index();if((v.paddingTop||v.paddingBottom)&&z(this).css("padding",v.paddingTop+" 0 "+v.paddingBottom+" 0"),void 0!==v.sectionsColor[t]&&z(this).css("background-color",v.sectionsColor[t]),void 0!==v.anchors[t]&&z(this).attr("data-anchor",v.anchors[t]),v.verticalCentered&&(e=z(this)).addClass("ms-table").wrapInner('
      '),z(this).closest(".ms-left").length&&v.navigation){var n="";v.anchors.length&&(n=v.anchors[t]);var o=v.navigationTooltips[t];void 0===o&&(o=""),v.navigation&&s.find("ul").append('
    • ')}}),z(".ms-right").html(z(".ms-right").find(".ms-section").get().reverse()),z(".ms-left .ms-section, .ms-right .ms-section").each(function(){var e=z(this).index();z(this).css({height:"100%"}),!e&&v.navigation&&s.find("li").eq(e).find("a").addClass("active")}).promise().done(function(){z(".ms-left .ms-section.active").length||(z(".ms-right").find(".ms-section").last().addClass("active"),z(".ms-left").find(".ms-section").first().addClass("active")),v.navigation&&s.css("margin-top","-"+s.height()/2+"px"),z.isFunction(v.afterRender)&&v.afterRender.call(this),p(),y(),z(R).on("load",function(){var e,t;e=R.location.hash.replace("#",""),t=z('.ms-left .ms-section[data-anchor="'+e+'"]'),e.length&&S(t)})}),z(R).on("hashchange",e),z(F).keydown(function(e){clearTimeout(l);var t=z(F.activeElement);if(!t.is("textarea")&&!t.is("input")&&!t.is("select")&&v.keyboardScrolling){var n=e.which;-120*Y.max(d,t)/100&&(f(!0),d=t)}}else clearTimeout(a),a=setTimeout(function(){f(!0)},350)});var d=r;function f(e){r=z(R).height(),z(".ms-tableCell").each(function(){z(this).css({height:C(z(this).parent())})}),v.scrollOverflow&&scrollBarHandler.createScrollBarForAll(),p(),z.isFunction(v.afterResize)&&v.afterResize.call(this)}function p(){v.css3?(b(z(".ms-left"),"translate3d(0px, -"+z(".ms-left").find(".ms-section.active").position().top+"px, 0px)",!1),b(z(".ms-right"),"translate3d(0px, -"+z(".ms-right").find(".ms-section.active").position().top+"px, 0px)",!1)):(z(".ms-left").css("top",-z(".ms-left").find(".ms-section.active").position().top),z(".ms-right").css("top",-z(".ms-right").find(".ms-section.active").position().top))}function S(e){var t=e.index(),n=z(".ms-right").find(".ms-section").eq(u-1-t),o=e.data("anchor"),i=z(".ms-left .ms-section.active").index()+1,s=function(e){var t=z(".ms-left .ms-section.active").index(),n=e.index();if(nz(R).height()/100*v.touchSensitivity&&(E 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 isMoving = false;\r\n var nav;\r\n var windowHeight = $(window).height();\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 $(window).on('load', function() {\r\n scrollToAnchor();\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 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 * 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 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 = windowsHeight;\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\r\n //preventing from activating the MouseWheelHandler event\r\n //more than once if the page is scrolling\r\n isMoving = true;\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 //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 setTimeout(function () {\r\n //callback (afterLoad)\r\n $.isFunction(options.afterLoad) && options.afterLoad.call(this, anchorLink, (leftDestinationIndex + 1));\r\n\r\n setTimeout(function () {\r\n isMoving = false;\r\n }, scrollDelay);\r\n }, options.scrollingSpeed);\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 setTimeout(function () {\r\n isMoving = false;\r\n }, scrollDelay);\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\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 function MouseWheelHandler(e) {\r\n // cross-browser wheel delta\r\n e = window.event || e;\r\n var delta = Math.max(-1, Math.min(1,\r\n (e.wheelDelta || -e.deltaY || -e.detail)));\r\n\r\n if (!isMoving) { //if theres any #\r\n\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 * 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 container.toggleClass('ms-easing', animated);\r\n\r\n container.css(getTransforms(translate3d));\r\n }\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){ //if theres any #\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(event){\r\n var e = event.originalEvent;\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 (!isMoving) { //if theres any #\r\n var touchEvents = getEventsPage(e);\r\n touchEndY = touchEvents['y'];\r\n touchEndX = touchEvents['x'];\r\n\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(event){\r\n var e = event.originalEvent;\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){\r\n //Microsoft pointers\r\n MSPointer = getMSPointer();\r\n\r\n $(document).off('touchstart ' + MSPointer.down).on('touchstart ' + MSPointer.down, touchStartHandler);\r\n $(document).off('touchmove ' + MSPointer.move).on('touchmove ' + MSPointer.move, touchMoveHandler);\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){\r\n //Microsoft pointers\r\n MSPointer = getMSPointer();\r\n\r\n $(document).off('touchstart ' + MSPointer.down);\r\n $(document).off('touchmove ' + MSPointer.move);\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)){\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', doneResizing);\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', doneResizing);\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})(jQuery, window, document, Math);\r\n"]} \ No newline at end of file +{"version":3,"sources":["jquery.multiscroll.js"],"names":["$","window","document","Math","undefined","fn","multiscroll","options","MS","extend","verticalCentered","scrollingSpeed","easing","menu","sectionsColor","anchors","navigation","navigationPosition","navigationColor","navigationTooltips","loopBottom","loopTop","css3","paddingTop","paddingBottom","fixedElements","normalScrollElements","keyboardScrolling","touchSensitivity","sectionSelector","leftSelector","rightSelector","afterLoad","onLeave","afterRender","afterResize","scrollDelay","isTouchDevice","navigator","userAgent","match","isTouch","msMaxTouchPoints","addClass","nav","resizeId","keydownId","numberSections","find","length","isMoving","windowHeight","height","hashChangeHandler","sectionAnchor","location","hash","replace","section","lastScrolledDestiny","scrollPage","navClickHandler","e","preventDefault","index","this","parent","eq","navMouseEnterHandler","tooltip","data","hide","appendTo","fadeIn","navMouseLeaveHandler","fadeOut","remove","addMouseWheelHandler","addTouchHandler","has3d","el","createElement","transforms","webkitTransform","OTransform","msTransform","MozTransform","transform","t","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","on","keydown","clearTimeout","activeElement","is","keyCode","which","inArray","setTimeout","shiftPressed","shiftKey","moveSectionUp","moveSectionDown","moveTo","onkeydown","mousedown","button","mouseenter","mouseleave","setMouseWheelScrolling","currentHeight","$window","abs","previousHeight","max","reBuild","resizing","scrollOverflow","scrollBarHandler","createScrollBarForAll","transformContainer","leftDestination","leftDestinationIndex","rightDestination","anchorLink","leavingSection","yMovement","destiny","fromIndex","toIndex","getYmovement","name","topPos","siblings","removeClass","setURLHash","translate3dLeft","translate3dRight","animate","addEventListener","MouseWheelHandler","attachEvent","event","delta","min","wheelDelta","deltaY","detail","container","translate3d","animated","toggleClass","-webkit-transform","-moz-transform","-ms-transform","text","String","classRe","RegExp","className","sectionHeight","paddings","parseInt","prev","next","isNaN","setKeyboardScrolling","value","removeEventListener","detachEvent","setScrollingSpeed","touchStartY","touchEndY","touchMoveHandler","originalEvent","isReallyTouch","touchEvents","getEventsPage","pointerType","touchStartHandler","MSPointer","getMSPointer","off","down","move","PointerEvent","events","y","pageY","pageX","touches","x","destroy","doneResizing","build","jQuery"],"mappings":"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","file":"jquery.multiscroll.min.js","sourcesContent":["/*!\r\n * multiscroll.js 0.2.0\r\n * https://github.com/alvarotrigo/multiscroll.js\r\n * @license MIT licensed\r\n *\r\n * Copyright (C) 2016 alvarotrigo.com - 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\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 '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': false,\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 //Defines the delay to take place before being able to scroll to the next section\r\n //BE CAREFUL! Not recommened to change it under 400 for a good behavior in laptops and\r\n //Apple devices (laptops, mouses...)\r\n var scrollDelay = 600;\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 isMoving = false;\r\n var nav;\r\n var windowHeight = $(window).height();\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 $(window).on('load', function() {\r\n scrollToAnchor();\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 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 * 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 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\r\n //preventing from activating the MouseWheelHandler event\r\n //more than once if the page is scrolling\r\n isMoving = true;\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 //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 setTimeout(function () {\r\n //callback (afterLoad)\r\n $.isFunction(options.afterLoad) && options.afterLoad.call(this, anchorLink, (leftDestinationIndex + 1));\r\n\r\n setTimeout(function () {\r\n isMoving = false;\r\n }, scrollDelay);\r\n }, options.scrollingSpeed);\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 setTimeout(function () {\r\n isMoving = false;\r\n }, scrollDelay);\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\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 function MouseWheelHandler(e) {\r\n // cross-browser wheel delta\r\n e = window.event || e;\r\n var delta = Math.max(-1, Math.min(1,\r\n (e.wheelDelta || -e.deltaY || -e.detail)));\r\n\r\n if (!isMoving) { //if theres any #\r\n\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 * 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 container.toggleClass('ms-easing', animated);\r\n\r\n container.css(getTransforms(translate3d));\r\n }\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){ //if theres any #\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(event){\r\n var e = event.originalEvent;\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 (!isMoving) { //if theres any #\r\n var touchEvents = getEventsPage(e);\r\n touchEndY = touchEvents['y'];\r\n touchEndX = touchEvents['x'];\r\n\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(event){\r\n var e = event.originalEvent;\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){\r\n //Microsoft pointers\r\n MSPointer = getMSPointer();\r\n\r\n $(document).off('touchstart ' + MSPointer.down).on('touchstart ' + MSPointer.down, touchStartHandler);\r\n $(document).off('touchmove ' + MSPointer.move).on('touchmove ' + MSPointer.move, touchMoveHandler);\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){\r\n //Microsoft pointers\r\n MSPointer = getMSPointer();\r\n\r\n $(document).off('touchstart ' + MSPointer.down);\r\n $(document).off('touchmove ' + MSPointer.move);\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)){\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', doneResizing);\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', doneResizing);\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})(jQuery, window, document, Math);\r\n"]} \ No newline at end of file diff --git a/jquery.multiscroll.css b/jquery.multiscroll.css index 9883832..b08d7f8 100644 --- a/jquery.multiscroll.css +++ b/jquery.multiscroll.css @@ -1,5 +1,5 @@ /*! - * multiscroll.js 0.1.9 + * multiscroll.js 0.2.0 * https://github.com/alvarotrigo/multiscroll.js * @license MIT licensed * diff --git a/jquery.multiscroll.js b/jquery.multiscroll.js index 359e565..7467598 100644 --- a/jquery.multiscroll.js +++ b/jquery.multiscroll.js @@ -1,5 +1,5 @@ /*! - * multiscroll.js 0.1.9 + * multiscroll.js 0.2.0 * https://github.com/alvarotrigo/multiscroll.js * @license MIT licensed * @@ -335,7 +335,7 @@ $(window).on('resize', resizeHandler); - var previousHeight = windowsHeight; + var previousHeight = windowHeight; /** * When resizing is finished, we adjust the slides sizes and positions diff --git a/jquery.multiscroll.min.js b/jquery.multiscroll.min.js index 0319d45..cf2ae85 100644 --- a/jquery.multiscroll.min.js +++ b/jquery.multiscroll.min.js @@ -1,9 +1,9 @@ /*! - * multiscroll.js 0.1.8 Beta + * multiscroll.js 0.2.0 * https://github.com/alvarotrigo/multiscroll.js * @license MIT licensed * * Copyright (C) 2016 alvarotrigo.com - A project by Alvaro Trigo */ -!function(e,t,n,o,i){e.fn.multiscroll=function(s){function a(){var n=t.location.hash.replace("#",""),o=n;if(o.length){var i=e(".ms-left").find('[data-anchor="'+o+'"]'),s="undefined"==typeof lastScrolledDestiny;(s||o!==lastScrolledDestiny)&&h(i)}}function l(t){clearTimeout(N);var o=e(n.activeElement);if(!o.is("textarea")&&!o.is("input")&&!o.is("select")&&s.keyboardScrolling){var i=t.which,a=[40,38,32,33,34];e.inArray(i,a)>-1&&t.preventDefault(),N=setTimeout(function(){r(t)},150)}}function r(t){var n=t.shiftKey;switch(t.which){case 38:case 33:F.moveSectionUp();break;case 32:if(n){F.moveSectionUp();break}case 40:case 34:F.moveSectionDown();break;case 36:F.moveTo(1);break;case 35:F.moveTo(e(".ms-left .ms-section").length);break;default:return}}function c(t){t.preventDefault();var n=e(this).parent().index();h(e(".ms-left .ms-section").eq(n))}function m(){var t=e(this).data("tooltip");e('
          '+t+"
          ").hide().appendTo(e(this)).fadeIn(200)}function f(){e(this).find(".multiscroll-tooltip").fadeOut(200,function(){e(this).remove()})}function d(){K=e(t).height(),e(".ms-tableCell").each(function(){e(this).css({height:L(e(this).parent())})}),u(),e.isFunction(s.afterResize)&&s.afterResize.call(this)}function u(){s.css3?(S(e(".ms-left"),"translate3d(0px, -"+e(".ms-left").find(".ms-section.active").position().top+"px, 0px)",!1),S(e(".ms-right"),"translate3d(0px, -"+e(".ms-right").find(".ms-section.active").position().top+"px, 0px)",!1)):(e(".ms-left").css("top",-e(".ms-left").find(".ms-section.active").position().top),e(".ms-right").css("top",-e(".ms-right").find(".ms-section.active").position().top))}function h(t){var n=t.index(),o=e(".ms-right").find(".ms-section").eq(U-1-n),i=t.data("anchor"),a=e(".ms-left .ms-section.active"),l=a.index()+1,r=w(t);W=!0;var c={left:t.position().top,right:o.position().top};if(o.addClass("active").siblings().removeClass("active"),t.addClass("active").siblings().removeClass("active"),C(i),s.css3){e.isFunction(s.onLeave)&&s.onLeave.call(this,l,n+1,r);var m="translate3d(0px, -"+c.left+"px, 0px)",f="translate3d(0px, -"+c.right+"px, 0px)";S(e(".ms-left"),m,!0),S(e(".ms-right"),f,!0),setTimeout(function(){e.isFunction(s.afterLoad)&&s.afterLoad.call(this,i,n+1),setTimeout(function(){W=!1},X)},s.scrollingSpeed)}else e.isFunction(s.onLeave)&&s.onLeave.call(this,l,n+1,r),e(".ms-left").animate({top:-c.left},s.scrollingSpeed,s.easing,function(){e.isFunction(s.afterLoad)&&s.afterLoad.call(this,i,n+1),setTimeout(function(){W=!1},X)}),e(".ms-right").animate({top:-c.right},s.scrollingSpeed,s.easing);lastScrolledDestiny=i,b(i),x(i,n)}function v(){n.addEventListener?(n.removeEventListener("mousewheel",g,!1),n.removeEventListener("wheel",g,!1)):n.detachEvent("onmousewheel",g)}function p(){n.addEventListener?(n.addEventListener("mousewheel",g,!1),n.addEventListener("wheel",g,!1)):n.attachEvent("onmousewheel",g)}function g(e){e=t.event||e;var n=o.max(-1,o.min(1,e.wheelDelta||-e.deltaY||-e.detail));return W||(n<0?F.moveSectionDown():F.moveSectionUp()),!1}function S(e,t,n){e.toggleClass("ms-easing",n),e.css(y(t))}function y(e){return{"-webkit-transform":e,"-moz-transform":e,"-ms-transform":e,transform:e}}function x(t,n){s.navigation&&(e("#multiscroll-nav").find(".active").removeClass("active"),t?e("#multiscroll-nav").find('a[href="#'+t+'"]').addClass("active"):e("#multiscroll-nav").find("li").eq(n).find("a").addClass("active"))}function b(t){s.menu&&(e(s.menu).find(".active").removeClass("active"),e(s.menu).find('[data-menuanchor="'+t+'"]').addClass("active"))}function w(t){var n=e(".ms-left .ms-section.active").index(),o=t.index();return n>o?"up":"down"}function C(e){s.anchors.length&&(location.hash=e),T()}function T(){var t=e(".ms-left .ms-section.active"),n=t.data("anchor"),o=t.index(),i=String(o);s.anchors.length&&(i=n),i=i.replace("/","-").replace("#","");var a=new RegExp("\\b\\s?ms-viewing-[^\\s]+\\b","g");e("body")[0].className=e("body")[0].className.replace(a,""),e("body").addClass("ms-viewing-"+i)}function E(){var e,o=n.createElement("p"),s={webkitTransform:"-webkit-transform",OTransform:"-o-transform",msTransform:"-ms-transform",MozTransform:"-moz-transform",transform:"transform"};n.body.insertBefore(o,null);for(var a in s)o.style[a]!==i&&(o.style[a]="translate3d(1px,1px,1px)",e=t.getComputedStyle(o).getPropertyValue(s[a]));return n.body.removeChild(o),e!==i&&e.length>0&&"none"!==e}function k(e){e.addClass("ms-table").wrapInner('
          ')}function L(e){var t=K;if(s.paddingTop||s.paddingBottom){var n=parseInt(e.css("padding-top"))+parseInt(e.css("padding-bottom"));t=K-n}return t}function M(){var n=t.location.hash.replace("#",""),o=e('.ms-left .ms-section[data-anchor="'+n+'"]');n.length&&h(o)}function P(n){var i=n.originalEvent;if(D(i)){n.preventDefault();e(".ms-left .ms-section.active");if(!W){var a=Y(i);j=a.y,A=a.x,o.abs(O-j)>e(t).height()/100*s.touchSensitivity&&(O>j?F.moveSectionDown():j>O&&F.moveSectionUp())}}}function D(e){return"undefined"==typeof e.pointerType||"mouse"!=e.pointerType}function z(e){var t=e.originalEvent;if(D(t)){var n=Y(t);O=n.y,Q=n.x}}function B(){q&&(MSPointer=R(),e(n).off("touchstart "+MSPointer.down).on("touchstart "+MSPointer.down,z),e(n).off("touchmove "+MSPointer.move).on("touchmove "+MSPointer.move,P))}function R(){var e;return e=t.PointerEvent?{down:"pointerdown",move:"pointermove"}:{down:"MSPointerDown",move:"MSPointerMove"}}function Y(e){var t=[];return t.y="undefined"!=typeof e.pageY&&(e.pageY||e.pageX)?e.pageY:e.touches[0].pageY,t.x="undefined"!=typeof e.pageX&&(e.pageY||e.pageX)?e.pageX:e.touches[0].pageX,q&&D(e)&&(t.y=e.touches[0].pageY,t.x=e.touches[0].pageX),t}var F=e.fn.multiscroll;s=e.extend({verticalCentered:!0,scrollingSpeed:700,easing:"easeInQuart",menu:!1,sectionsColor:[],anchors:[],navigation:!1,navigationPosition:"right",navigationColor:"#000",navigationTooltips:[],loopBottom:!1,loopTop:!1,css3:!1,paddingTop:0,paddingBottom:0,fixedElements:null,normalScrollElements:null,keyboardScrolling:!0,touchSensitivity:5,sectionSelector:".ms-section",leftSelector:".ms-left",rightSelector:".ms-right",afterLoad:null,onLeave:null,afterRender:null,afterResize:null},s);var X=600,q="ontouchstart"in t||navigator.msMaxTouchPoints>0||navigator.maxTouchPoints;".ms-right"!==s.rightSelector&&e(s.rightSelector).addClass("ms-right"),".ms-left"!==s.leftSelector&&e(s.leftSelector).addClass("ms-left");var I,U=e(".ms-left").find(".ms-section").length,W=!1,K=e(t).height();p(),B(),s.css3&&(s.css3=E()),e("html, body").css({overflow:"hidden",height:"100%"}),".ms-section"!==s.sectionSelector&&e(s.sectionSelector).each(function(){e(this).addClass("ms-section")}),s.navigation&&(e("body").append('
            '),I=e("#multiscroll-nav"),I.css("color",s.navigationColor),I.addClass(s.navigationPosition)),e(".ms-right, .ms-left").css({width:"50%",position:"absolute",height:"100%","-ms-touch-action":"none"}),e(".ms-right").css({right:"1px",top:"0","-ms-touch-action":"none","touch-action":"none"}),e(".ms-left").css({left:"0",top:"0","-ms-touch-action":"none","touch-action":"none"}),e(".ms-left .ms-section, .ms-right .ms-section").each(function(){var t=e(this).index();if((s.paddingTop||s.paddingBottom)&&e(this).css("padding",s.paddingTop+" 0 "+s.paddingBottom+" 0"),"undefined"!=typeof s.sectionsColor[t]&&e(this).css("background-color",s.sectionsColor[t]),"undefined"!=typeof s.anchors[t]&&e(this).attr("data-anchor",s.anchors[t]),s.verticalCentered&&k(e(this)),e(this).closest(".ms-left").length&&s.navigation){var n="";s.anchors.length&&(n=s.anchors[t]);var o=s.navigationTooltips[t];"undefined"==typeof o&&(o=""),s.navigation&&I.find("ul").append('
          • ')}}),e(".ms-right").html(e(".ms-right").find(".ms-section").get().reverse()),e(".ms-left .ms-section, .ms-right .ms-section").each(function(){var t=e(this).index();e(this).css({height:"100%"}),!t&&s.navigation&&I.find("li").eq(t).find("a").addClass("active")}).promise().done(function(){e(".ms-left .ms-section.active").length||(e(".ms-right").find(".ms-section").last().addClass("active"),e(".ms-left").find(".ms-section").first().addClass("active")),s.navigation&&I.css("margin-top","-"+I.height()/2+"px"),e.isFunction(s.afterRender)&&s.afterRender.call(this),u(),T(),e(t).on("load",function(){M()})}),e(t).on("hashchange",a),e(n).keydown(l);var N;e(n).mousedown(function(e){if(1==e.button)return e.preventDefault(),!1}),e(n).on("click","#multiscroll-nav a",c),e(n).on({mouseenter:m,mouseleave:f},"#multiscroll-nav li"),s.normalScrollElements&&(e(n).on("mouseenter",s.normalScrollElements,function(){F.setMouseWheelScrolling(!1)}),e(n).on("mouseleave",s.normalScrollElements,function(){F.setMouseWheelScrolling(!0)})),e(t).on("resize",d),F.moveSectionUp=function(){var t=e(".ms-left .ms-section.active").prev(".ms-section");!t.length&&s.loopTop&&(t=e(".ms-left .ms-section").last()),t.length&&h(t)},F.moveSectionDown=function(){var t=e(".ms-left .ms-section.active").next(".ms-section");!t.length&&s.loopBottom&&(t=e(".ms-left .ms-section").first()),t.length&&h(t)},F.moveTo=function(t){var n="";n=isNaN(t)?e('.ms-left [data-anchor="'+t+'"]'):e(".ms-left .ms-section").eq(t-1),h(n)},F.setKeyboardScrolling=function(e){s.keyboardScrolling=e},F.setMouseWheelScrolling=function(e){e?p():v()},F.setScrollingSpeed=function(e){s.scrollingSpeed=e};var O=0,Q=0,j=0,A=0;F.destroy=function(){F.setKeyboardScrolling(!1),F.setMouseWheelScrolling(!1),e(t).off("hashchange",a).off("resize",d),e(n).off("mouseenter","#multiscroll-nav li").off("mouseleave","#multiscroll-nav li").off("click","#multiscroll-nav a")},F.build=function(){F.setKeyboardScrolling(!0),F.setMouseWheelScrolling(!0),e(t).on("hashchange",a).on("resize",d),e(n).on("mouseenter","#multiscroll-nav li",m).on("mouseleave","#multiscroll-nav li",f).on("click","#multiscroll-nav a",c)}}}(jQuery,window,document,Math); +!function(z,R,F,Y,I){z.fn.multiscroll=function(v){var o=z.fn.multiscroll;v=z.extend({verticalCentered:!0,scrollingSpeed:700,easing:"easeInQuart",menu:!1,sectionsColor:[],anchors:[],navigation:!1,navigationPosition:"right",navigationColor:"#000",navigationTooltips:[],loopBottom:!1,loopTop:!1,css3:!1,paddingTop:0,paddingBottom:0,fixedElements:null,normalScrollElements:null,keyboardScrolling:!0,touchSensitivity:5,sectionSelector:".ms-section",leftSelector:".ms-left",rightSelector:".ms-right",afterLoad:null,onLeave:null,afterRender:null,afterResize:null},v);var h=600,n=navigator.userAgent.match(/(iPhone|iPod|iPad|Android|playbook|silk|BlackBerry|BB10|Windows Phone|Tizen|Bada|webOS|IEMobile|Opera Mini)/),i="ontouchstart"in R||0'+e+"
            ").hide().appendTo(z(this)).fadeIn(200)}function m(){z(this).find(".multiscroll-tooltip").fadeOut(200,function(){z(this).remove()})}w(),L(),v.css3&&(v.css3=function(){var e,t=F.createElement("p"),n={webkitTransform:"-webkit-transform",OTransform:"-o-transform",msTransform:"-ms-transform",MozTransform:"-moz-transform",transform:"transform"};for(var o in F.body.insertBefore(t,null),n)t.style[o]!==I&&(t.style[o]="translate3d(1px,1px,1px)",e=R.getComputedStyle(t).getPropertyValue(n[o]));return F.body.removeChild(t),e!==I&&0
              '),(s=z("#multiscroll-nav")).css("color",v.navigationColor),s.addClass(v.navigationPosition)),z(".ms-right, .ms-left").css({width:"50%",position:"absolute",height:"100%","-ms-touch-action":"none"}),z(".ms-right").css({right:"1px",top:"0","-ms-touch-action":"none","touch-action":"none"}),z(".ms-left").css({left:"0",top:"0","-ms-touch-action":"none","touch-action":"none"}),z(".ms-left .ms-section, .ms-right .ms-section").each(function(){var e,t=z(this).index();if((v.paddingTop||v.paddingBottom)&&z(this).css("padding",v.paddingTop+" 0 "+v.paddingBottom+" 0"),void 0!==v.sectionsColor[t]&&z(this).css("background-color",v.sectionsColor[t]),void 0!==v.anchors[t]&&z(this).attr("data-anchor",v.anchors[t]),v.verticalCentered&&(e=z(this)).addClass("ms-table").wrapInner('
              '),z(this).closest(".ms-left").length&&v.navigation){var n="";v.anchors.length&&(n=v.anchors[t]);var o=v.navigationTooltips[t];void 0===o&&(o=""),v.navigation&&s.find("ul").append('
            • ')}}),z(".ms-right").html(z(".ms-right").find(".ms-section").get().reverse()),z(".ms-left .ms-section, .ms-right .ms-section").each(function(){var e=z(this).index();z(this).css({height:"100%"}),!e&&v.navigation&&s.find("li").eq(e).find("a").addClass("active")}).promise().done(function(){z(".ms-left .ms-section.active").length||(z(".ms-right").find(".ms-section").last().addClass("active"),z(".ms-left").find(".ms-section").first().addClass("active")),v.navigation&&s.css("margin-top","-"+s.height()/2+"px"),z.isFunction(v.afterRender)&&v.afterRender.call(this),p(),y(),z(R).on("load",function(){var e,t;e=R.location.hash.replace("#",""),t=z('.ms-left .ms-section[data-anchor="'+e+'"]'),e.length&&S(t)})}),z(R).on("hashchange",e),z(F).keydown(function(e){clearTimeout(l);var t=z(F.activeElement);if(!t.is("textarea")&&!t.is("input")&&!t.is("select")&&v.keyboardScrolling){var n=e.which;-120*Y.max(d,t)/100&&(f(!0),d=t)}}else clearTimeout(a),a=setTimeout(function(){f(!0)},350)});var d=r;function f(e){r=z(R).height(),z(".ms-tableCell").each(function(){z(this).css({height:C(z(this).parent())})}),v.scrollOverflow&&scrollBarHandler.createScrollBarForAll(),p(),z.isFunction(v.afterResize)&&v.afterResize.call(this)}function p(){v.css3?(b(z(".ms-left"),"translate3d(0px, -"+z(".ms-left").find(".ms-section.active").position().top+"px, 0px)",!1),b(z(".ms-right"),"translate3d(0px, -"+z(".ms-right").find(".ms-section.active").position().top+"px, 0px)",!1)):(z(".ms-left").css("top",-z(".ms-left").find(".ms-section.active").position().top),z(".ms-right").css("top",-z(".ms-right").find(".ms-section.active").position().top))}function S(e){var t=e.index(),n=z(".ms-right").find(".ms-section").eq(u-1-t),o=e.data("anchor"),i=z(".ms-left .ms-section.active").index()+1,s=function(e){var t=z(".ms-left .ms-section.active").index(),n=e.index();if(nz(R).height()/100*v.touchSensitivity&&(E