From 5235aa5f0c05d12c702411b5a33d0ef871fb8e06 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=C3=81lvaro?= <atrigol@gmail.com>
Date: Thu, 7 Jul 2016 16:31:40 +0200
Subject: [PATCH] - Added gulp and `dist` files - Added package.json file -
 Added gitignore - Improved credits in CSS and JS files

---
 .gitignore                         |   3 +
 dist/jquery.pagepiling.css         | 128 ++++
 dist/jquery.pagepiling.js          | 928 +++++++++++++++++++++++++++++
 dist/jquery.pagepiling.min.css     |   9 +
 dist/jquery.pagepiling.min.css.map |   1 +
 dist/jquery.pagepiling.min.js      |  10 +
 dist/jquery.pagepiling.min.js.map  |   1 +
 examples/examples.css              | 629 +++++++++----------
 gulpfile.js                        |  34 ++
 jquery.pagepiling.css              |   7 +-
 jquery.pagepiling.js               |   4 +-
 package.json                       |  37 ++
 12 files changed, 1478 insertions(+), 313 deletions(-)
 create mode 100644 .gitignore
 create mode 100644 dist/jquery.pagepiling.css
 create mode 100644 dist/jquery.pagepiling.js
 create mode 100644 dist/jquery.pagepiling.min.css
 create mode 100644 dist/jquery.pagepiling.min.css.map
 create mode 100644 dist/jquery.pagepiling.min.js
 create mode 100644 dist/jquery.pagepiling.min.js.map
 create mode 100644 gulpfile.js
 create mode 100644 package.json

diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..f2b726b
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,3 @@
+.DS_Store
+bower_components/
+/node_modules
diff --git a/dist/jquery.pagepiling.css b/dist/jquery.pagepiling.css
new file mode 100644
index 0000000..baf0594
--- /dev/null
+++ b/dist/jquery.pagepiling.css
@@ -0,0 +1,128 @@
+/*!
+ * pagepiling.js 1.5.3
+ *
+ * https://github.com/alvarotrigo/pagePiling.js
+ * @license MIT licensed
+ *
+ * Copyright (C) 2016 alvarotrigo.com - A project by Alvaro Trigo
+ */
+html, body {
+    overflow:hidden;
+    margin:0;
+    padding:0;
+
+    /*Avoid flicker on slides transitions for mobile phones #336 */
+    -webkit-tap-highlight-color: rgba(0,0,0,0);
+}
+.pp-section {
+    height:100%;
+    position:absolute;
+    width:100%;
+}
+.pp-easing {
+    -webkit-transition: all 1000ms cubic-bezier(0.550, 0.085, 0.000, 0.990);
+    -moz-transition: all 1000ms cubic-bezier(0.550, 0.085, 0.000, 0.990);
+    -o-transition: all 1000ms cubic-bezier(0.550, 0.085, 0.000, 0.990);
+    transition: all 1000ms cubic-bezier(0.550, 0.085, 0.000, 0.990);
+    /* custom */
+    -webkit-transition-timing-function: cubic-bezier(0.550, 0.085, 0.000, 0.990);
+    -moz-transition-timing-function: cubic-bezier(0.550, 0.085, 0.000, 0.990);
+    -o-transition-timing-function: cubic-bezier(0.550, 0.085, 0.000, 0.990);
+    transition-timing-function: cubic-bezier(0.550, 0.085, 0.000, 0.990);
+    /* custom */
+}
+#pp-nav {
+    position: fixed;
+    z-index: 100;
+    margin-top: -32px;
+    top: 50%;
+    opacity: 1;
+}
+#pp-nav.right {
+    right: 17px;
+}
+#pp-nav.left {
+    left: 17px;
+}
+.pp-section.pp-table{
+    display: table;
+}
+.pp-tableCell {
+    display: table-cell;
+    vertical-align: middle;
+    width: 100%;
+    height: 100%;
+}
+.pp-slidesNav{
+    position: absolute;
+    z-index: 4;
+    left: 50%;
+    opacity: 1;
+}
+.pp-slidesNav.bottom {
+    bottom: 17px;
+}
+.pp-slidesNav.top {
+    top: 17px;
+}
+#pp-nav ul,
+.pp-slidesNav ul {
+  margin: 0;
+  padding: 0;
+}
+#pp-nav li,
+.pp-slidesNav li {
+    display: block;
+    width: 14px;
+    height: 13px;
+    margin: 7px;
+    position:relative;
+}
+.pp-slidesNav li {
+    display: inline-block;
+}
+#pp-nav li a,
+.pp-slidesNav li a {
+    display: block;
+    position: relative;
+    z-index: 1;
+    width: 100%;
+    height: 100%;
+    cursor: pointer;
+    text-decoration: none;
+}
+#pp-nav li .active span,
+.pp-slidesNav .active span {
+    background: #333;
+}
+#pp-nav span,
+.pp-slidesNav span {
+    top: 2px;
+    left: 2px;
+    width: 8px;
+    height: 8px;
+    border: 1px solid #000;
+    background: rgba(0, 0, 0, 0);
+    border-radius: 50%;
+    position: absolute;
+    z-index: 1;
+}
+.pp-tooltip {
+    position: absolute;
+    top: -2px;
+    color: #fff;
+    font-size: 14px;
+    font-family: arial, helvetica, sans-serif;
+    white-space: nowrap;
+    max-width: 220px;
+}
+.pp-tooltip.right {
+    right: 20px;
+}
+.pp-tooltip.left {
+    left: 20px;
+}
+.pp-scrollable{
+    overflow-y: scroll;
+    height: 100%;
+}
\ No newline at end of file
diff --git a/dist/jquery.pagepiling.js b/dist/jquery.pagepiling.js
new file mode 100644
index 0000000..6c1e109
--- /dev/null
+++ b/dist/jquery.pagepiling.js
@@ -0,0 +1,928 @@
+/*!
+ * pagepiling.js 1.5.3
+ *
+ * https://github.com/alvarotrigo/pagePiling.js
+ * @license MIT licensed
+ *
+ * Copyright (C) 2016 alvarotrigo.com - A project by Alvaro Trigo
+ */
+(function ($, document, window, undefined) {
+    'use strict';
+
+    $.fn.pagepiling = function (custom) {
+        var PP = $.fn.pagepiling;
+        var container = $(this);
+        var lastScrolledDestiny;
+        var lastAnimation = 0;
+        var isTouch = (('ontouchstart' in window) || (navigator.msMaxTouchPoints > 0) || (navigator.maxTouchPoints));
+        var touchStartY = 0, touchStartX = 0, touchEndY = 0, touchEndX = 0;
+
+        //Defines the delay to take place before being able to scroll to the next section
+        //BE CAREFUL! Not recommened to change it under 400 for a good behavior in laptops and
+        //Apple devices (laptops, mouses...)
+        var scrollDelay = 600;
+
+        // Create some defaults, extending them with any options that were provided
+        var options = $.extend(true, {
+            direction: 'vertical',
+            menu: null,
+            verticalCentered: true,
+            sectionsColor: [],
+            anchors: [],
+            scrollingSpeed: 700,
+            easing: 'easeInQuart',
+            loopBottom: false,
+            loopTop: false,
+            css3: true,
+            navigation: {
+                textColor: '#000',
+                bulletsColor: '#000',
+                position: 'right',
+                tooltips: []
+            },
+            normalScrollElements: null,
+            normalScrollElementTouchThreshold: 5,
+            touchSensitivity: 5,
+            keyboardScrolling: true,
+            sectionSelector: '.section',
+            animateAnchor: false,
+
+            //events
+            afterLoad: null,
+            onLeave: null,
+            afterRender: null
+        }, custom);
+
+
+        //easeInQuart animation included in the plugin
+        $.extend($.easing,{ easeInQuart: function (x, t, b, c, d) { return c*(t/=d)*t*t*t + b; }});
+
+        /**
+        * Defines the scrolling speed
+        */
+        PP.setScrollingSpeed = function(value){
+           options.scrollingSpeed = value;
+        };
+
+        /**
+        * Adds or remove the possiblity of scrolling through sections by using the mouse wheel or the trackpad.
+        */
+        PP.setMouseWheelScrolling = function (value){
+            if(value){
+                addMouseWheelHandler();
+            }else{
+                removeMouseWheelHandler();
+            }
+        };
+
+        /**
+        * Adds or remove the possiblity of scrolling through sections by using the mouse wheel/trackpad or touch gestures.
+        */
+        PP.setAllowScrolling = function (value){
+            if(value){
+                PP.setMouseWheelScrolling(true);
+                addTouchHandler();
+            }else{
+                PP.setMouseWheelScrolling(false);
+                removeTouchHandler();
+            }
+        };
+
+        /**
+        * Adds or remove the possiblity of scrolling through sections by using the keyboard arrow keys
+        */
+        PP.setKeyboardScrolling = function (value){
+            options.keyboardScrolling = value;
+        };
+
+        /**
+        * Moves sectio up
+        */
+        PP.moveSectionUp = function () {
+            var prev = $('.pp-section.active').prev('.pp-section');
+
+            //looping to the bottom if there's no more sections above
+            if (!prev.length && options.loopTop) {
+                prev = $('.pp-section').last();
+            }
+
+            if (prev.length) {
+                scrollPage(prev);
+            }
+        };
+
+        /**
+        * Moves sectio down
+        */
+        PP.moveSectionDown = function () {
+            var next = $('.pp-section.active').next('.pp-section');
+
+            //looping to the top if there's no more sections below
+            if(!next.length && options.loopBottom){
+                next = $('.pp-section').first();
+            }
+
+            if (next.length) {
+                scrollPage(next);
+            }
+        };
+
+        /**
+        * Moves the site to the given anchor or index
+        */
+        PP.moveTo = function (section){
+            var destiny = '';
+
+            if(isNaN(section)){
+                destiny = $(document).find('[data-anchor="'+section+'"]');
+            }else{
+                destiny = $('.pp-section').eq( (section -1) );
+            }
+
+
+            if(destiny.length > 0){
+                scrollPage(destiny);
+            }
+        };
+
+        //adding internal class names to void problem with common ones
+        $(options.sectionSelector).each(function(){
+            $(this).addClass('pp-section');
+        });
+
+        //if css3 is not supported, it will use jQuery animations
+        if(options.css3){
+            options.css3 = support3d();
+        }
+
+        $(container).css({
+            'overflow' : 'hidden',
+            '-ms-touch-action': 'none',  /* Touch detection for Windows 8 */
+            'touch-action': 'none'       /* IE 11 on Windows Phone 8.1*/
+        });
+
+        //init
+        PP.setAllowScrolling(true);
+
+        //creating the navigation dots
+        if (!$.isEmptyObject(options.navigation) ) {
+            addVerticalNavigation();
+        }
+
+         var zIndex = $('.pp-section').length;
+
+        $('.pp-section').each(function (index) {
+            $(this).data('data-index', index);
+            $(this).css('z-index', zIndex);
+
+            //if no active section is defined, the 1st one will be the default one
+            if (!index && $('.pp-section.active').length === 0) {
+                $(this).addClass('active');
+            }
+
+            if (typeof options.anchors[index] !== 'undefined') {
+                $(this).attr('data-anchor', options.anchors[index]);
+            }
+
+            if (typeof options.sectionsColor[index] !== 'undefined') {
+                $(this).css('background-color', options.sectionsColor[index]);
+            }
+
+            if(options.verticalCentered && !$(this).hasClass('pp-scrollable')){
+                addTableClass($(this));
+            }
+
+            zIndex = zIndex - 1;
+        }).promise().done(function(){
+            //vertical centered of the navigation + first bullet active
+            if(options.navigation){
+                $('#pp-nav').css('margin-top', '-' + ($('#pp-nav').height()/2) + 'px');
+                $('#pp-nav').find('li').eq($('.pp-section.active').index('.pp-section')).find('a').addClass('active');
+            }
+
+            $(window).on('load', function() {
+                scrollToAnchor();
+            });
+
+            $.isFunction( options.afterRender ) && options.afterRender.call( this);
+        });
+
+        /**
+        * Enables vertical centering by wrapping the content and the use of table and table-cell
+        */
+        function addTableClass(element){
+            element.addClass('pp-table').wrapInner('<div class="pp-tableCell" style="height:100%" />');
+        }
+
+
+       /**
+        * Retuns `up` or `down` depending on the scrolling movement to reach its destination
+        * from the current section.
+        */
+        function getYmovement(destiny){
+            var fromIndex = $('.pp-section.active').index('.pp-section');
+            var toIndex = destiny.index('.pp-section');
+
+            if(fromIndex > toIndex){
+                return 'up';
+            }
+            return 'down';
+        }
+
+        /**
+        * Scrolls the page to the given destination
+        */
+        function scrollPage(destination, animated) {
+            var v ={
+                destination: destination,
+                animated: animated,
+                activeSection: $('.pp-section.active'),
+                anchorLink: destination.data('anchor'),
+                sectionIndex: destination.index('.pp-section'),
+                toMove: destination,
+                yMovement: getYmovement(destination),
+                leavingSection: $('.pp-section.active').index('.pp-section') + 1
+            };
+
+            //quiting when activeSection is the target element
+            if(v.activeSection.is(destination)){ return; }
+
+            if(typeof v.animated === 'undefined'){
+                v.animated = true;
+            }
+
+            if(typeof v.anchorLink !== 'undefined'){
+                setURLHash(v.anchorLink, v.sectionIndex);
+            }
+
+            v.destination.addClass('active').siblings().removeClass('active');
+
+            v.sectionsToMove = getSectionsToMove(v);
+
+            //scrolling down (moving sections up making them disappear)
+            if (v.yMovement === 'down') {
+                v.translate3d = getTranslate3d();
+                v.scrolling = '-100%';
+
+                if(!options.css3){
+                    v.sectionsToMove.each(function(index){
+                        if(index != v.activeSection.index('.pp-section')){
+                            $(this).css(getScrollProp(v.scrolling));
+                        }
+                    });
+                }
+
+                v.animateSection = v.activeSection;
+            }
+
+            //scrolling up (moving section down to the viewport)
+            else {
+                v.translate3d = 'translate3d(0px, 0px, 0px)';
+                v.scrolling = '0';
+
+                v.animateSection = destination;
+            }
+
+            $.isFunction(options.onLeave) && options.onLeave.call(this, v.leavingSection, (v.sectionIndex + 1), v.yMovement);
+
+            performMovement(v);
+
+            activateMenuElement(v.anchorLink);
+            activateNavDots(v.anchorLink, v.sectionIndex);
+            lastScrolledDestiny = v.anchorLink;
+
+            var timeNow = new Date().getTime();
+            lastAnimation = timeNow;
+        }
+
+        /**
+        * Performs the movement (by CSS3 or by jQuery)
+        */
+        function performMovement(v){
+            if(options.css3){
+                transformContainer(v.animateSection, v.translate3d, v.animated);
+
+                v.sectionsToMove.each(function(){
+                    transformContainer($(this), v.translate3d, v.animated);
+                });
+
+                setTimeout(function () {
+                    afterSectionLoads(v);
+                }, options.scrollingSpeed);
+            }else{
+                v.scrollOptions = getScrollProp(v.scrolling);
+
+                if(v.animated){
+                    v.animateSection.animate(
+                        v.scrollOptions,
+                    options.scrollingSpeed, options.easing, function () {
+                        readjustSections(v);
+                        afterSectionLoads(v);
+                    });
+                }else{
+                    v.animateSection.css(getScrollProp(v.scrolling));
+                    setTimeout(function(){
+                        readjustSections(v);
+                        afterSectionLoads(v);
+                    },400);
+                }
+            }
+        }
+
+        /**
+        * Actions to execute after a secion is loaded
+        */
+        function afterSectionLoads(v){
+            //callback (afterLoad) if the site is not just resizing and readjusting the slides
+            $.isFunction(options.afterLoad) && options.afterLoad.call(this, v.anchorLink, (v.sectionIndex + 1));
+        }
+
+
+        function getSectionsToMove(v){
+            var sectionToMove;
+
+            if(v.yMovement === 'down'){
+                sectionToMove = $('.pp-section').map(function(index){
+                    if (index < v.destination.index('.pp-section')){
+                        return $(this);
+                    }
+                });
+            }else{
+                sectionToMove = $('.pp-section').map(function(index){
+                    if (index > v.destination.index('.pp-section')){
+                        return $(this);
+                    }
+                });
+            }
+
+            return sectionToMove;
+        }
+
+        /**
+        * Returns the sections to re-adjust in the background after the section loads.
+        */
+        function readjustSections(v){
+            if(v.yMovement === 'up'){
+                v.sectionsToMove.each(function(index){
+                    $(this).css(getScrollProp(v.scrolling));
+                });
+            }
+        }
+
+        /**
+        * Gets the property used to create the scrolling effect when using jQuery animations
+        * depending on the plugin direction option.
+        */
+        function getScrollProp(propertyValue){
+            if(options.direction === 'vertical'){
+                return {'top': propertyValue};
+            }
+            return {'left': propertyValue};
+        }
+
+        /**
+        * Scrolls the site without anymations (usually used in the background without the user noticing it)
+        */
+        function silentScroll(section, offset){
+            if (options.css3) {
+                transformContainer(section, getTranslate3d(), false);
+            }
+            else{
+                section.css(getScrollProp(offset));
+            }
+        }
+
+        /**
+        * Sets the URL hash for a section with slides
+        */
+        function setURLHash(anchorLink, sectionIndex){
+            if(options.anchors.length){
+                location.hash = anchorLink;
+
+                setBodyClass(location.hash);
+            }else{
+                setBodyClass(String(sectionIndex));
+            }
+        }
+
+        /**
+        * Sets a class for the body of the page depending on the active section / slide
+        */
+        function setBodyClass(text){
+            //removing the #
+            text = text.replace('#','');
+
+            //removing previous anchor classes
+            $('body')[0].className = $('body')[0].className.replace(/\b\s?pp-viewing-[^\s]+\b/g, '');
+
+            //adding the current anchor
+            $('body').addClass('pp-viewing-' + text);
+        }
+
+        //TO DO
+        function scrollToAnchor(){
+            //getting the anchor link in the URL and deleting the `#`
+            var value =  window.location.hash.replace('#', '');
+            var sectionAnchor = value;
+            var section = $(document).find('.pp-section[data-anchor="'+sectionAnchor+'"]');
+
+            if(section.length > 0){  //if theres any #
+                scrollPage(section, options.animateAnchor);
+            }
+        }
+
+        /**
+        * Determines if the transitions between sections still taking place.
+        * The variable `scrollDelay` adds a "save zone" for devices such as Apple laptops and Apple magic mouses
+        */
+        function isMoving(){
+            var timeNow = new Date().getTime();
+            // Cancel scroll if currently animating or within quiet period
+            if (timeNow - lastAnimation < scrollDelay + options.scrollingSpeed) {
+                return true;
+            }
+            return false;
+        }
+
+        //detecting any change on the URL to scroll to the given anchor link
+        //(a way to detect back history button as we play with the hashes on the URL)
+        $(window).on('hashchange', hashChangeHandler);
+
+        /**
+        * Actions to do when the hash (#) in the URL changes.
+        */
+        function hashChangeHandler(){
+            var value =  window.location.hash.replace('#', '').split('/');
+            var sectionAnchor = value[0];
+
+            if(sectionAnchor.length){
+                /*in order to call scrollpage() only once for each destination at a time
+                It is called twice for each scroll otherwise, as in case of using anchorlinks `hashChange`
+                event is fired on every scroll too.*/
+                if (sectionAnchor && sectionAnchor !== lastScrolledDestiny)  {
+                    var section;
+
+                    if(isNaN(sectionAnchor)){
+                        section = $(document).find('[data-anchor="'+sectionAnchor+'"]');
+                    }else{
+                        section = $('.pp-section').eq( (sectionAnchor -1) );
+                    }
+                    scrollPage(section);
+                }
+            }
+        }
+
+        /**
+        * Cross browser transformations
+        */
+        function getTransforms(translate3d) {
+            return {
+                '-webkit-transform': translate3d,
+                    '-moz-transform': translate3d,
+                    '-ms-transform': translate3d,
+                    'transform': translate3d
+            };
+        }
+
+        /**
+         * Adds a css3 transform property to the container class with or without animation depending on the animated param.
+         */
+        function transformContainer(element, translate3d, animated) {
+            element.toggleClass('pp-easing', animated);
+
+            element.css(getTransforms(translate3d));
+        }
+
+        /**
+         * Sliding with arrow keys, both, vertical and horizontal
+         */
+        $(document).keydown(function (e) {
+            if(options.keyboardScrolling && !isMoving()){
+                //Moving the main page with the keyboard arrows if keyboard scrolling is enabled
+                switch (e.which) {
+                        //up
+                    case 38:
+                    case 33:
+                        PP.moveSectionUp();
+                        break;
+
+                        //down
+                    case 40:
+                    case 34:
+                        PP.moveSectionDown();
+                        break;
+
+                        //Home
+                    case 36:
+                        PP.moveTo(1);
+                        break;
+
+                        //End
+                    case 35:
+                        PP.moveTo($('.pp-section').length);
+                        break;
+
+                        //left
+                    case 37:
+                        PP.moveSectionUp();
+                        break;
+
+                        //right
+                    case 39:
+                        PP.moveSectionDown();
+                        break;
+
+                    default:
+                        return; // exit this handler for other keys
+                }
+            }
+        });
+
+        /**
+        * If `normalScrollElements` is used, the mouse wheel scrolling will scroll normally
+        * over the defined elements in the option.
+        */
+        if(options.normalScrollElements){
+            $(document).on('mouseenter', options.normalScrollElements, function () {
+                PP.setMouseWheelScrolling(false);
+            });
+
+            $(document).on('mouseleave', options.normalScrollElements, function(){
+                PP.setMouseWheelScrolling(true);
+            });
+        }
+
+        /**
+         * Detecting mousewheel scrolling
+         *
+         * http://blogs.sitepointstatic.com/examples/tech/mouse-wheel/index.html
+         * http://www.sitepoint.com/html5-javascript-mouse-wheel/
+         */
+        function MouseWheelHandler(e) {
+            if(!isMoving()){
+                // cross-browser wheel delta
+                e = window.event || e;
+                var delta = Math.max(-1, Math.min(1,
+                        (e.wheelDelta || -e.deltaY || -e.detail)));
+
+                var activeSection = $('.pp-section.active');
+                var scrollable = isScrollable(activeSection);
+
+                //scrolling down?
+                if (delta < 0) {
+                    scrolling('down', scrollable);
+
+                //scrolling up?
+                }else {
+                    scrolling('up', scrollable);
+                }
+
+
+                return false;
+            }
+         }
+
+        /**
+        * Determines the way of scrolling up or down:
+        * by 'automatically' scrolling a section or by using the default and normal scrolling.
+        */
+        function scrolling(type, scrollable){
+            var check;
+            var scrollSection;
+
+            if(type == 'down'){
+                check = 'bottom';
+                scrollSection = PP.moveSectionDown;
+            }else{
+                check = 'top';
+                scrollSection = PP.moveSectionUp;
+            }
+
+            if(scrollable.length > 0 ){
+                //is the scrollbar at the start/end of the scroll?
+                if(isScrolled(check, scrollable)){
+                    scrollSection();
+                }else{
+                    return true;
+                }
+            }else{
+                // moved up/down
+                scrollSection();
+            }
+        }
+
+        /**
+        * Return a boolean depending on whether the scrollable element is at the end or at the start of the scrolling
+        * depending on the given type.
+        */
+        function isScrolled(type, scrollable){
+            if(type === 'top'){
+                return !scrollable.scrollTop();
+            }else if(type === 'bottom'){
+                return scrollable.scrollTop() + 1 + scrollable.innerHeight() >= scrollable[0].scrollHeight;
+            }
+        }
+
+         /**
+        * Determines whether the active section or slide is scrollable through and scrolling bar
+        */
+        function isScrollable(activeSection){
+            return activeSection.filter('.pp-scrollable');
+        }
+
+        /**
+        * Removes the auto scrolling action fired by the mouse wheel and tackpad.
+        * After this function is called, the mousewheel and trackpad movements won't scroll through sections.
+        */
+        function removeMouseWheelHandler(){
+            if (container.get(0).addEventListener) {
+                container.get(0).removeEventListener('mousewheel', MouseWheelHandler, false); //IE9, Chrome, Safari, Oper
+                container.get(0).removeEventListener('wheel', MouseWheelHandler, false); //Firefox
+            } else {
+                container.get(0).detachEvent('onmousewheel', MouseWheelHandler); //IE 6/7/8
+            }
+        }
+
+        /**
+        * Adds the auto scrolling action for the mouse wheel and tackpad.
+        * After this function is called, the mousewheel and trackpad movements will scroll through sections
+        */
+        function addMouseWheelHandler(){
+            if (container.get(0).addEventListener) {
+                container.get(0).addEventListener('mousewheel', MouseWheelHandler, false); //IE9, Chrome, Safari, Oper
+                container.get(0).addEventListener('wheel', MouseWheelHandler, false); //Firefox
+            } else {
+                container.get(0).attachEvent('onmousewheel', MouseWheelHandler); //IE 6/7/8
+            }
+        }
+
+        /**
+        * Adds the possibility to auto scroll through sections on touch devices.
+        */
+        function addTouchHandler(){
+            if(isTouch){
+                //Microsoft pointers
+                var MSPointer = getMSPointer();
+
+                container.off('touchstart ' +  MSPointer.down).on('touchstart ' + MSPointer.down, touchStartHandler);
+                container.off('touchmove ' + MSPointer.move).on('touchmove ' + MSPointer.move, touchMoveHandler);
+            }
+        }
+
+        /**
+        * Removes the auto scrolling for touch devices.
+        */
+        function removeTouchHandler(){
+            if(isTouch){
+                //Microsoft pointers
+                var MSPointer = getMSPointer();
+
+                container.off('touchstart ' + MSPointer.down);
+                container.off('touchmove ' + MSPointer.move);
+            }
+        }
+
+        /*
+        * Returns and object with Microsoft pointers (for IE<11 and for IE >= 11)
+        * http://msdn.microsoft.com/en-us/library/ie/dn304886(v=vs.85).aspx
+        */
+        function getMSPointer(){
+            var pointer;
+
+            //IE >= 11 & rest of browsers
+            if(window.PointerEvent){
+                pointer = { down: 'pointerdown', move: 'pointermove', up: 'pointerup'};
+            }
+
+            //IE < 11
+            else{
+                pointer = { down: 'MSPointerDown', move: 'MSPointerMove', up: 'MSPointerUp'};
+            }
+
+            return pointer;
+        }
+
+        /**
+        * Gets the pageX and pageY properties depending on the browser.
+        * https://github.com/alvarotrigo/fullPage.js/issues/194#issuecomment-34069854
+        */
+        function getEventsPage(e){
+            var events = new Array();
+
+            events.y = (typeof e.pageY !== 'undefined' && (e.pageY || e.pageX) ? e.pageY : e.touches[0].pageY);
+            events.x = (typeof e.pageX !== 'undefined' && (e.pageY || e.pageX) ? e.pageX : e.touches[0].pageX);
+
+            return events;
+        }
+
+        /**
+        * As IE >= 10 fires both touch and mouse events when using a mouse in a touchscreen
+        * this way we make sure that is really a touch event what IE is detecting.
+        */
+        function isReallyTouch(e){
+            //if is not IE   ||  IE is detecting `touch` or `pen`
+            return typeof e.pointerType === 'undefined' || e.pointerType != 'mouse';
+        }
+
+        /**
+        * Getting the starting possitions of the touch event
+        */
+        function touchStartHandler(event){
+            var e = event.originalEvent;
+
+            if(isReallyTouch(e)){
+                var touchEvents = getEventsPage(e);
+                touchStartY = touchEvents.y;
+                touchStartX = touchEvents.x;
+            }
+        }
+
+        /* Detecting touch events
+        */
+        function touchMoveHandler(event){
+            var e = event.originalEvent;
+
+            // additional: if one of the normalScrollElements isn't within options.normalScrollElementTouchThreshold hops up the DOM chain
+            if ( !checkParentForNormalScrollElement(event.target) && isReallyTouch(e) ) {
+
+                var activeSection = $('.pp-section.active');
+                var scrollable = isScrollable(activeSection);
+
+                if(!scrollable.length){
+                    event.preventDefault();
+                }
+
+                if (!isMoving()) {
+                    var touchEvents = getEventsPage(e);
+                    touchEndY = touchEvents.y;
+                    touchEndX = touchEvents.x;
+
+                  //$('body').append('<span style="position:fixed; top: 250px; left: 20px; z-index:88; font-size: 25px; color: #000;">touchEndY: ' + touchEndY  + '</div>');
+
+                    //X movement bigger than Y movement?
+                    if (options.direction === 'horizontal' && Math.abs(touchStartX - touchEndX) > (Math.abs(touchStartY - touchEndY))) {
+                        //is the movement greater than the minimum resistance to scroll?
+                        if (Math.abs(touchStartX - touchEndX) > (container.width() / 100 * options.touchSensitivity)) {
+                            if (touchStartX > touchEndX) {
+                                scrolling('down', scrollable);
+                            } else if (touchEndX > touchStartX) {
+                                scrolling('up', scrollable);
+                            }
+                        }
+                    } else {
+                        if (Math.abs(touchStartY - touchEndY) > (container.height() / 100 * options.touchSensitivity)) {
+                            if (touchStartY > touchEndY) {
+                                scrolling('down', scrollable);
+                            } else if (touchEndY > touchStartY) {
+                                scrolling('up', scrollable);
+                            }
+                        }
+                    }
+                }
+            }
+        }
+
+        /**
+         * recursive function to loop up the parent nodes to check if one of them exists in options.normalScrollElements
+         * Currently works well for iOS - Android might need some testing
+         * @param  {Element} el  target element / jquery selector (in subsequent nodes)
+         * @param  {int}     hop current hop compared to options.normalScrollElementTouchThreshold
+         * @return {boolean} true if there is a match to options.normalScrollElements
+         */
+        function checkParentForNormalScrollElement (el, hop) {
+            hop = hop || 0;
+            var parent = $(el).parent();
+
+            if (hop < options.normalScrollElementTouchThreshold &&
+                parent.is(options.normalScrollElements) ) {
+                return true;
+            } else if (hop == options.normalScrollElementTouchThreshold) {
+                return false;
+            } else {
+                return checkParentForNormalScrollElement(parent, ++hop);
+            }
+        }
+
+
+        /**
+        * Creates a vertical navigation bar.
+        */
+        function addVerticalNavigation(){
+            $('body').append('<div id="pp-nav"><ul></ul></div>');
+            var nav = $('#pp-nav');
+
+            nav.css('color', options.navigation.textColor);
+
+            nav.addClass(options.navigation.position);
+
+            for(var cont = 0; cont < $('.pp-section').length; cont++){
+                var link = '';
+                if(options.anchors.length){
+                    link = options.anchors[cont];
+                }
+                if(options.navigation.tooltips !== 'undefined'){
+                    var tooltip = options.navigation.tooltips[cont];
+                    if(typeof tooltip === 'undefined'){
+                        tooltip = '';
+                    }
+                }
+
+                nav.find('ul').append('<li data-tooltip="' + tooltip + '"><a href="#' + link + '"><span></span></a></li>');
+            }
+
+            nav.find('span').css('border-color', options.navigation.bulletsColor);
+        }
+
+        /**
+        * Scrolls to the section when clicking the navigation bullet
+        */
+        $(document).on('click touchstart', '#pp-nav a', function(e){
+            e.preventDefault();
+            var index = $(this).parent().index();
+
+            scrollPage($('.pp-section').eq(index));
+        });
+
+        /**
+        * Navigation tooltips
+        */
+        $(document).on({
+            mouseenter: function(){
+                var tooltip = $(this).data('tooltip');
+                $('<div class="pp-tooltip ' + options.navigation.position +'">' + tooltip + '</div>').hide().appendTo($(this)).fadeIn(200);
+            },
+            mouseleave: function(){
+                $(this).find('.pp-tooltip').fadeOut(200, function() {
+                    $(this).remove();
+                });
+            }
+        }, '#pp-nav li');
+
+         /**
+         * Activating the website navigation dots according to the given slide name.
+         */
+        function activateNavDots(name, sectionIndex){
+            if(options.navigation){
+                $('#pp-nav').find('.active').removeClass('active');
+                if(name){
+                    $('#pp-nav').find('a[href="#' + name + '"]').addClass('active');
+                }else{
+                    $('#pp-nav').find('li').eq(sectionIndex).find('a').addClass('active');
+                }
+            }
+        }
+
+        /**
+         * Activating the website main menu elements according to the given slide name.
+         */
+        function activateMenuElement(name){
+            if(options.menu){
+                $(options.menu).find('.active').removeClass('active');
+                $(options.menu).find('[data-menuanchor="'+name+'"]').addClass('active');
+            }
+        }
+
+        /**
+        * Checks for translate3d support
+        * @return boolean
+        * http://stackoverflow.com/questions/5661671/detecting-transform-translate3d-support
+        */
+        function support3d() {
+            var el = document.createElement('p'),
+                has3d,
+                transforms = {
+                    'webkitTransform':'-webkit-transform',
+                    'OTransform':'-o-transform',
+                    'msTransform':'-ms-transform',
+                    'MozTransform':'-moz-transform',
+                    'transform':'transform'
+                };
+
+            // Add it to the body to get the computed style.
+            document.body.insertBefore(el, null);
+
+            for (var t in transforms) {
+                if (el.style[t] !== undefined) {
+                    el.style[t] = 'translate3d(1px,1px,1px)';
+                    has3d = window.getComputedStyle(el).getPropertyValue(transforms[t]);
+                }
+            }
+
+            document.body.removeChild(el);
+
+            return (has3d !== undefined && has3d.length > 0 && has3d !== 'none');
+        }
+
+        /**
+        * Gets the translate3d property to apply when using css3:true depending on the `direction` option.
+        */
+        function getTranslate3d(){
+            if (options.direction !== 'vertical') {
+                  return 'translate3d(-100%, 0px, 0px)';
+            }
+
+            return 'translate3d(0px, -100%, 0px)';
+        }
+
+    };
+})(jQuery, document, window);
\ No newline at end of file
diff --git a/dist/jquery.pagepiling.min.css b/dist/jquery.pagepiling.min.css
new file mode 100644
index 0000000..1cf264b
--- /dev/null
+++ b/dist/jquery.pagepiling.min.css
@@ -0,0 +1,9 @@
+/*!
+ * pagepiling.js 1.5.3
+ *
+ * https://github.com/alvarotrigo/pagePiling.js
+ * @license MIT licensed
+ *
+ * Copyright (C) 2016 alvarotrigo.com - A project by Alvaro Trigo
+ */body,html{overflow:hidden;margin:0;padding:0;-webkit-tap-highlight-color:rgba(0,0,0,0)}.pp-section{height:100%;position:absolute;width:100%}.pp-easing{-webkit-transition:all 1s cubic-bezier(.55,.085,0,.99);-moz-transition:all 1s cubic-bezier(.55,.085,0,.99);-o-transition:all 1s cubic-bezier(.55,.085,0,.99);transition:all 1s cubic-bezier(.55,.085,0,.99);-webkit-transition-timing-function:cubic-bezier(.55,.085,0,.99);-moz-transition-timing-function:cubic-bezier(.55,.085,0,.99);-o-transition-timing-function:cubic-bezier(.55,.085,0,.99);transition-timing-function:cubic-bezier(.55,.085,0,.99)}#pp-nav{position:fixed;z-index:100;margin-top:-32px;top:50%;opacity:1}#pp-nav.right{right:17px}#pp-nav.left{left:17px}.pp-section.pp-table{display:table}.pp-tableCell{display:table-cell;vertical-align:middle;width:100%;height:100%}.pp-slidesNav{position:absolute;z-index:4;left:50%;opacity:1}.pp-slidesNav.bottom{bottom:17px}.pp-slidesNav.top{top:17px}#pp-nav ul,.pp-slidesNav ul{margin:0;padding:0}#pp-nav li,.pp-slidesNav li{display:block;width:14px;height:13px;margin:7px;position:relative}.pp-slidesNav li{display:inline-block}#pp-nav li a,.pp-slidesNav li a{display:block;position:relative;z-index:1;width:100%;height:100%;cursor:pointer;text-decoration:none}#pp-nav li .active span,.pp-slidesNav .active span{background:#333}#pp-nav span,.pp-slidesNav span{top:2px;left:2px;width:8px;height:8px;border:1px solid #000;background:rgba(0,0,0,0);border-radius:50%;position:absolute;z-index:1}.pp-tooltip{position:absolute;top:-2px;color:#fff;font-size:14px;font-family:arial,helvetica,sans-serif;white-space:nowrap;max-width:220px}.pp-tooltip.right{right:20px}.pp-tooltip.left{left:20px}.pp-scrollable{overflow-y:scroll;height:100%}
+/*# sourceMappingURL=jquery.pagepiling.min.css.map */
diff --git a/dist/jquery.pagepiling.min.css.map b/dist/jquery.pagepiling.min.css.map
new file mode 100644
index 0000000..a9c004b
--- /dev/null
+++ b/dist/jquery.pagepiling.min.css.map
@@ -0,0 +1 @@
+{"version":3,"sources":["jquery.pagepiling.css"],"names":[],"mappings":";;;;;;;AAQM,KAAN,KACI,SAAS,OACT,OAAO,EACP,QAAQ,EAGR,4BAAgG,cAEpG,YACI,OAAO,KACP,SAAS,SACT,MAAM,KAEV,WACI,mBAAoB,IAAI,GAAO,6BAC/B,gBAAiB,IAAI,GAAO,6BAC5B,cAAe,IAAI,GAAO,6BAC1B,WAAY,IAAI,GAAO,6BAEvB,mCAAoH,6BACpH,gCAAiC,6BACjC,8BAA+B,6BAC/B,2BAA4B,6BAGhC,QACI,SAAU,MACV,QAAS,IACT,WAAY,MACZ,IAAK,IACL,QAAS,EAEb,cACI,MAAO,KAEX,aACI,KAAM,KAEV,qBACI,QAAS,MAEb,cACI,QAAS,WACT,eAAgB,OAChB,MAAO,KACP,OAAQ,KAEZ,cACI,SAAU,SACV,QAAS,EACT,KAAM,IACN,QAAS,EAEb,qBACI,OAAQ,KAEZ,kBACI,IAAK,KAET,WACA,iBACE,OAAQ,EACR,QAAS,EAEX,WACA,iBACI,QAAS,MACT,MAAO,KACP,OAAQ,KACR,OAAQ,IACR,SAAS,SAEb,iBACI,QAAS,aAEb,aACA,mBACI,QAAS,MACT,SAAU,SACV,QAAS,EACT,MAAO,KACP,OAAQ,KACR,OAAQ,QACR,gBAAiB,KAErB,wBACA,2BACI,WAAY,KAEhB,aACA,mBACI,IAAK,IACL,KAAM,IACN,MAAO,IACP,OAAQ,IACR,OAAQ,IAAI,MAAM,KAClB,WAAY,cACZ,cAAe,IACf,SAAU,SACV,QAAS,EAEb,YACI,SAAU,SACV,IAAK,KACL,MAAO,KACP,UAAW,KACX,YAAa,MAAO,UAAW,WAC/B,YAAa,OACb,UAAW,MAEf,kBACI,MAAO,KAEX,iBACI,KAAM,KAEV,eACI,WAAY,OACZ,OAAQ","file":"jquery.pagepiling.min.css","sourceRoot":"/source/","sourcesContent":["/*!\r\n * pagepiling.js 1.5.3\r\n *\r\n * https://github.com/alvarotrigo/pagePiling.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    overflow:hidden;\r\n    margin:0;\r\n    padding:0;\r\n\r\n    /*Avoid flicker on slides transitions for mobile phones #336 */\r\n    -webkit-tap-highlight-color: rgba(0,0,0,0);\r\n}\r\n.pp-section {\r\n    height:100%;\r\n    position:absolute;\r\n    width:100%;\r\n}\r\n.pp-easing {\r\n    -webkit-transition: all 1000ms cubic-bezier(0.550, 0.085, 0.000, 0.990);\r\n    -moz-transition: all 1000ms cubic-bezier(0.550, 0.085, 0.000, 0.990);\r\n    -o-transition: all 1000ms cubic-bezier(0.550, 0.085, 0.000, 0.990);\r\n    transition: all 1000ms cubic-bezier(0.550, 0.085, 0.000, 0.990);\r\n    /* custom */\r\n    -webkit-transition-timing-function: cubic-bezier(0.550, 0.085, 0.000, 0.990);\r\n    -moz-transition-timing-function: cubic-bezier(0.550, 0.085, 0.000, 0.990);\r\n    -o-transition-timing-function: cubic-bezier(0.550, 0.085, 0.000, 0.990);\r\n    transition-timing-function: cubic-bezier(0.550, 0.085, 0.000, 0.990);\r\n    /* custom */\r\n}\r\n#pp-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#pp-nav.right {\r\n    right: 17px;\r\n}\r\n#pp-nav.left {\r\n    left: 17px;\r\n}\r\n.pp-section.pp-table{\r\n    display: table;\r\n}\r\n.pp-tableCell {\r\n    display: table-cell;\r\n    vertical-align: middle;\r\n    width: 100%;\r\n    height: 100%;\r\n}\r\n.pp-slidesNav{\r\n    position: absolute;\r\n    z-index: 4;\r\n    left: 50%;\r\n    opacity: 1;\r\n}\r\n.pp-slidesNav.bottom {\r\n    bottom: 17px;\r\n}\r\n.pp-slidesNav.top {\r\n    top: 17px;\r\n}\r\n#pp-nav ul,\r\n.pp-slidesNav ul {\r\n  margin: 0;\r\n  padding: 0;\r\n}\r\n#pp-nav li,\r\n.pp-slidesNav 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.pp-slidesNav li {\r\n    display: inline-block;\r\n}\r\n#pp-nav li a,\r\n.pp-slidesNav 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#pp-nav li .active span,\r\n.pp-slidesNav .active span {\r\n    background: #333;\r\n}\r\n#pp-nav span,\r\n.pp-slidesNav 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    border-radius: 50%;\r\n    position: absolute;\r\n    z-index: 1;\r\n}\r\n.pp-tooltip {\r\n    position: absolute;\r\n    top: -2px;\r\n    color: #fff;\r\n    font-size: 14px;\r\n    font-family: arial, helvetica, sans-serif;\r\n    white-space: nowrap;\r\n    max-width: 220px;\r\n}\r\n.pp-tooltip.right {\r\n    right: 20px;\r\n}\r\n.pp-tooltip.left {\r\n    left: 20px;\r\n}\r\n.pp-scrollable{\r\n    overflow-y: scroll;\r\n    height: 100%;\r\n}"]}
\ No newline at end of file
diff --git a/dist/jquery.pagepiling.min.js b/dist/jquery.pagepiling.min.js
new file mode 100644
index 0000000..3a7d024
--- /dev/null
+++ b/dist/jquery.pagepiling.min.js
@@ -0,0 +1,10 @@
+/*!
+ * pagepiling.js 1.5.3
+ *
+ * https://github.com/alvarotrigo/pagePiling.js
+ * @license MIT licensed
+ *
+ * Copyright (C) 2016 alvarotrigo.com - A project by Alvaro Trigo
+ */
+!function(n,e,t,o){"use strict";n.fn.pagepiling=function(i){function a(n){n.addClass("pp-table").wrapInner('<div class="pp-tableCell" style="height:100%" />')}function s(e){var t=n(".pp-section.active").index(".pp-section"),o=e.index(".pp-section");return t>o?"up":"down"}function c(e,t){var o={destination:e,animated:t,activeSection:n(".pp-section.active"),anchorLink:e.data("anchor"),sectionIndex:e.index(".pp-section"),toMove:e,yMovement:s(e),leavingSection:n(".pp-section.active").index(".pp-section")+1};if(!o.activeSection.is(e)){"undefined"==typeof o.animated&&(o.animated=!0),"undefined"!=typeof o.anchorLink&&v(o.anchorLink,o.sectionIndex),o.destination.addClass("active").siblings().removeClass("active"),o.sectionsToMove=p(o),"down"===o.yMovement?(o.translate3d=U(),o.scrolling="-100%",G.css3||o.sectionsToMove.each(function(e){e!=o.activeSection.index(".pp-section")&&n(this).css(u(o.scrolling))}),o.animateSection=o.activeSection):(o.translate3d="translate3d(0px, 0px, 0px)",o.scrolling="0",o.animateSection=e),n.isFunction(G.onLeave)&&G.onLeave.call(this,o.leavingSection,o.sectionIndex+1,o.yMovement),r(o),A(o.anchorLink),z(o.anchorLink,o.sectionIndex),W=o.anchorLink;var i=(new Date).getTime();F=i}}function r(e){G.css3?(w(e.animateSection,e.translate3d,e.animated),e.sectionsToMove.each(function(){w(n(this),e.translate3d,e.animated)}),setTimeout(function(){l(e)},G.scrollingSpeed)):(e.scrollOptions=u(e.scrolling),e.animated?e.animateSection.animate(e.scrollOptions,G.scrollingSpeed,G.easing,function(){d(e),l(e)}):(e.animateSection.css(u(e.scrolling)),setTimeout(function(){d(e),l(e)},400)))}function l(e){n.isFunction(G.afterLoad)&&G.afterLoad.call(this,e.anchorLink,e.sectionIndex+1)}function p(e){var t;return t="down"===e.yMovement?n(".pp-section").map(function(t){if(t<e.destination.index(".pp-section"))return n(this)}):n(".pp-section").map(function(t){if(t>e.destination.index(".pp-section"))return n(this)})}function d(e){"up"===e.yMovement&&e.sectionsToMove.each(function(t){n(this).css(u(e.scrolling))})}function u(n){return"vertical"===G.direction?{top:n}:{left:n}}function v(n,e){G.anchors.length?(location.hash=n,f(location.hash)):f(String(e))}function f(e){e=e.replace("#",""),n("body")[0].className=n("body")[0].className.replace(/\b\s?pp-viewing-[^\s]+\b/g,""),n("body").addClass("pp-viewing-"+e)}function h(){var o=t.location.hash.replace("#",""),i=o,a=n(e).find('.pp-section[data-anchor="'+i+'"]');a.length>0&&c(a,G.animateAnchor)}function m(){var n=(new Date).getTime();return n-F<V+G.scrollingSpeed}function g(){var o=t.location.hash.replace("#","").split("/"),i=o[0];if(i.length&&i&&i!==W){var a;a=isNaN(i)?n(e).find('[data-anchor="'+i+'"]'):n(".pp-section").eq(i-1),c(a)}}function S(n){return{"-webkit-transform":n,"-moz-transform":n,"-ms-transform":n,transform:n}}function w(n,e,t){n.toggleClass("pp-easing",t),n.css(S(e))}function y(e){if(!m()){e=t.event||e;var o=Math.max(-1,Math.min(1,e.wheelDelta||-e.deltaY||-e.detail)),i=n(".pp-section.active"),a=T(i);return o<0?x("down",a):x("up",a),!1}}function x(n,e){var t,o;if("down"==n?(t="bottom",o=X.moveSectionDown):(t="top",o=X.moveSectionUp),e.length>0){if(!b(t,e))return!0;o()}else o()}function b(n,e){return"top"===n?!e.scrollTop():"bottom"===n?e.scrollTop()+1+e.innerHeight()>=e[0].scrollHeight:void 0}function T(n){return n.filter(".pp-scrollable")}function C(){B.get(0).addEventListener?(B.get(0).removeEventListener("mousewheel",y,!1),B.get(0).removeEventListener("wheel",y,!1)):B.get(0).detachEvent("onmousewheel",y)}function M(){B.get(0).addEventListener?(B.get(0).addEventListener("mousewheel",y,!1),B.get(0).addEventListener("wheel",y,!1)):B.get(0).attachEvent("onmousewheel",y)}function k(){if(Q){var n=L();B.off("touchstart "+n.down).on("touchstart "+n.down,P),B.off("touchmove "+n.move).on("touchmove "+n.move,N)}}function E(){if(Q){var n=L();B.off("touchstart "+n.down),B.off("touchmove "+n.move)}}function L(){var n;return n=t.PointerEvent?{down:"pointerdown",move:"pointermove",up:"pointerup"}:{down:"MSPointerDown",move:"MSPointerMove",up:"MSPointerUp"}}function D(n){var e=new Array;return e.y="undefined"!=typeof n.pageY&&(n.pageY||n.pageX)?n.pageY:n.touches[0].pageY,e.x="undefined"!=typeof n.pageX&&(n.pageY||n.pageX)?n.pageX:n.touches[0].pageX,e}function I(n){return"undefined"==typeof n.pointerType||"mouse"!=n.pointerType}function P(n){var e=n.originalEvent;if(I(e)){var t=D(e);R=t.y,j=t.x}}function N(e){var t=e.originalEvent;if(!Y(e.target)&&I(t)){var o=n(".pp-section.active"),i=T(o);if(i.length||e.preventDefault(),!m()){var a=D(t);H=a.y,K=a.x,"horizontal"===G.direction&&Math.abs(j-K)>Math.abs(R-H)?Math.abs(j-K)>B.width()/100*G.touchSensitivity&&(j>K?x("down",i):K>j&&x("up",i)):Math.abs(R-H)>B.height()/100*G.touchSensitivity&&(R>H?x("down",i):H>R&&x("up",i))}}}function Y(e,t){t=t||0;var o=n(e).parent();return!!(t<G.normalScrollElementTouchThreshold&&o.is(G.normalScrollElements))||t!=G.normalScrollElementTouchThreshold&&Y(o,++t)}function q(){n("body").append('<div id="pp-nav"><ul></ul></div>');var e=n("#pp-nav");e.css("color",G.navigation.textColor),e.addClass(G.navigation.position);for(var t=0;t<n(".pp-section").length;t++){var o="";if(G.anchors.length&&(o=G.anchors[t]),"undefined"!==G.navigation.tooltips){var i=G.navigation.tooltips[t];"undefined"==typeof i&&(i="")}e.find("ul").append('<li data-tooltip="'+i+'"><a href="#'+o+'"><span></span></a></li>')}e.find("span").css("border-color",G.navigation.bulletsColor)}function z(e,t){G.navigation&&(n("#pp-nav").find(".active").removeClass("active"),e?n("#pp-nav").find('a[href="#'+e+'"]').addClass("active"):n("#pp-nav").find("li").eq(t).find("a").addClass("active"))}function A(e){G.menu&&(n(G.menu).find(".active").removeClass("active"),n(G.menu).find('[data-menuanchor="'+e+'"]').addClass("active"))}function O(){var n,i=e.createElement("p"),a={webkitTransform:"-webkit-transform",OTransform:"-o-transform",msTransform:"-ms-transform",MozTransform:"-moz-transform",transform:"transform"};e.body.insertBefore(i,null);for(var s in a)i.style[s]!==o&&(i.style[s]="translate3d(1px,1px,1px)",n=t.getComputedStyle(i).getPropertyValue(a[s]));return e.body.removeChild(i),n!==o&&n.length>0&&"none"!==n}function U(){return"vertical"!==G.direction?"translate3d(-100%, 0px, 0px)":"translate3d(0px, -100%, 0px)"}var W,X=n.fn.pagepiling,B=n(this),F=0,Q="ontouchstart"in t||navigator.msMaxTouchPoints>0||navigator.maxTouchPoints,R=0,j=0,H=0,K=0,V=600,G=n.extend(!0,{direction:"vertical",menu:null,verticalCentered:!0,sectionsColor:[],anchors:[],scrollingSpeed:700,easing:"easeInQuart",loopBottom:!1,loopTop:!1,css3:!0,navigation:{textColor:"#000",bulletsColor:"#000",position:"right",tooltips:[]},normalScrollElements:null,normalScrollElementTouchThreshold:5,touchSensitivity:5,keyboardScrolling:!0,sectionSelector:".section",animateAnchor:!1,afterLoad:null,onLeave:null,afterRender:null},i);n.extend(n.easing,{easeInQuart:function(n,e,t,o,i){return o*(e/=i)*e*e*e+t}}),X.setScrollingSpeed=function(n){G.scrollingSpeed=n},X.setMouseWheelScrolling=function(n){n?M():C()},X.setAllowScrolling=function(n){n?(X.setMouseWheelScrolling(!0),k()):(X.setMouseWheelScrolling(!1),E())},X.setKeyboardScrolling=function(n){G.keyboardScrolling=n},X.moveSectionUp=function(){var e=n(".pp-section.active").prev(".pp-section");!e.length&&G.loopTop&&(e=n(".pp-section").last()),e.length&&c(e)},X.moveSectionDown=function(){var e=n(".pp-section.active").next(".pp-section");!e.length&&G.loopBottom&&(e=n(".pp-section").first()),e.length&&c(e)},X.moveTo=function(t){var o="";o=isNaN(t)?n(e).find('[data-anchor="'+t+'"]'):n(".pp-section").eq(t-1),o.length>0&&c(o)},n(G.sectionSelector).each(function(){n(this).addClass("pp-section")}),G.css3&&(G.css3=O()),n(B).css({overflow:"hidden","-ms-touch-action":"none","touch-action":"none"}),X.setAllowScrolling(!0),n.isEmptyObject(G.navigation)||q();var J=n(".pp-section").length;n(".pp-section").each(function(e){n(this).data("data-index",e),n(this).css("z-index",J),e||0!==n(".pp-section.active").length||n(this).addClass("active"),"undefined"!=typeof G.anchors[e]&&n(this).attr("data-anchor",G.anchors[e]),"undefined"!=typeof G.sectionsColor[e]&&n(this).css("background-color",G.sectionsColor[e]),G.verticalCentered&&!n(this).hasClass("pp-scrollable")&&a(n(this)),J-=1}).promise().done(function(){G.navigation&&(n("#pp-nav").css("margin-top","-"+n("#pp-nav").height()/2+"px"),n("#pp-nav").find("li").eq(n(".pp-section.active").index(".pp-section")).find("a").addClass("active")),n(t).on("load",function(){h()}),n.isFunction(G.afterRender)&&G.afterRender.call(this)}),n(t).on("hashchange",g),n(e).keydown(function(e){if(G.keyboardScrolling&&!m())switch(e.which){case 38:case 33:X.moveSectionUp();break;case 40:case 34:X.moveSectionDown();break;case 36:X.moveTo(1);break;case 35:X.moveTo(n(".pp-section").length);break;case 37:X.moveSectionUp();break;case 39:X.moveSectionDown();break;default:return}}),G.normalScrollElements&&(n(e).on("mouseenter",G.normalScrollElements,function(){X.setMouseWheelScrolling(!1)}),n(e).on("mouseleave",G.normalScrollElements,function(){X.setMouseWheelScrolling(!0)})),n(e).on("click touchstart","#pp-nav a",function(e){e.preventDefault();var t=n(this).parent().index();c(n(".pp-section").eq(t))}),n(e).on({mouseenter:function(){var e=n(this).data("tooltip");n('<div class="pp-tooltip '+G.navigation.position+'">'+e+"</div>").hide().appendTo(n(this)).fadeIn(200)},mouseleave:function(){n(this).find(".pp-tooltip").fadeOut(200,function(){n(this).remove()})}},"#pp-nav li")}}(jQuery,document,window);
+//# sourceMappingURL=jquery.pagepiling.min.js.map
diff --git a/dist/jquery.pagepiling.min.js.map b/dist/jquery.pagepiling.min.js.map
new file mode 100644
index 0000000..f86e46d
--- /dev/null
+++ b/dist/jquery.pagepiling.min.js.map
@@ -0,0 +1 @@
+{"version":3,"sources":["jquery.pagepiling.js"],"names":["$","document","window","undefined","fn","pagepiling","custom","addTableClass","element","addClass","wrapInner","getYmovement","destiny","fromIndex","index","toIndex","scrollPage","destination","animated","v","activeSection","anchorLink","data","sectionIndex","toMove","yMovement","leavingSection","is","setURLHash","siblings","removeClass","sectionsToMove","getSectionsToMove","translate3d","getTranslate3d","scrolling","options","css3","each","this","css","getScrollProp","animateSection","isFunction","onLeave","call","performMovement","activateMenuElement","activateNavDots","lastScrolledDestiny","timeNow","Date","getTime","lastAnimation","transformContainer","setTimeout","afterSectionLoads","scrollingSpeed","scrollOptions","animate","easing","readjustSections","afterLoad","sectionToMove","map","propertyValue","direction","top","left","anchors","length","location","hash","setBodyClass","String","text","replace","className","scrollToAnchor","value","sectionAnchor","section","find","animateAnchor","isMoving","scrollDelay","hashChangeHandler","split","isNaN","eq","getTransforms","-webkit-transform","-moz-transform","-ms-transform","transform","toggleClass","MouseWheelHandler","e","event","delta","Math","max","min","wheelDelta","deltaY","detail","scrollable","isScrollable","type","check","scrollSection","PP","moveSectionDown","moveSectionUp","isScrolled","scrollTop","innerHeight","scrollHeight","filter","removeMouseWheelHandler","container","get","addEventListener","removeEventListener","detachEvent","addMouseWheelHandler","attachEvent","addTouchHandler","isTouch","MSPointer","getMSPointer","off","down","on","touchStartHandler","move","touchMoveHandler","removeTouchHandler","pointer","PointerEvent","up","getEventsPage","events","Array","y","pageY","pageX","touches","x","isReallyTouch","pointerType","originalEvent","touchEvents","touchStartY","touchStartX","checkParentForNormalScrollElement","target","preventDefault","touchEndY","touchEndX","abs","width","touchSensitivity","height","el","hop","parent","normalScrollElementTouchThreshold","normalScrollElements","addVerticalNavigation","append","nav","navigation","textColor","position","cont","link","tooltips","tooltip","bulletsColor","name","menu","support3d","has3d","createElement","transforms","webkitTransform","OTransform","msTransform","MozTransform","body","insertBefore","t","style","getComputedStyle","getPropertyValue","removeChild","navigator","msMaxTouchPoints","extend","verticalCentered","sectionsColor","loopBottom","loopTop","keyboardScrolling","sectionSelector","afterRender","easeInQuart","b","c","d","setScrollingSpeed","setMouseWheelScrolling","setAllowScrolling","setKeyboardScrolling","prev","last","next","first","moveTo","overflow","-ms-touch-action","touch-action","isEmptyObject","zIndex","attr","hasClass","promise","done","keydown","which","mouseenter","hide","appendTo","fadeIn","mouseleave","fadeOut","remove","jQuery"],"mappings":"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","file":"jquery.pagepiling.min.js","sourcesContent":["/*!\r\n * pagepiling.js 1.5.3\r\n *\r\n * https://github.com/alvarotrigo/pagePiling.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 ($, document, window, undefined) {\r\n    'use strict';\r\n\r\n    $.fn.pagepiling = function (custom) {\r\n        var PP = $.fn.pagepiling;\r\n        var container = $(this);\r\n        var lastScrolledDestiny;\r\n        var lastAnimation = 0;\r\n        var isTouch = (('ontouchstart' in window) || (navigator.msMaxTouchPoints > 0) || (navigator.maxTouchPoints));\r\n        var touchStartY = 0, touchStartX = 0, touchEndY = 0, touchEndX = 0;\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        // Create some defaults, extending them with any options that were provided\r\n        var options = $.extend(true, {\r\n            direction: 'vertical',\r\n            menu: null,\r\n            verticalCentered: true,\r\n            sectionsColor: [],\r\n            anchors: [],\r\n            scrollingSpeed: 700,\r\n            easing: 'easeInQuart',\r\n            loopBottom: false,\r\n            loopTop: false,\r\n            css3: true,\r\n            navigation: {\r\n                textColor: '#000',\r\n                bulletsColor: '#000',\r\n                position: 'right',\r\n                tooltips: []\r\n            },\r\n            normalScrollElements: null,\r\n            normalScrollElementTouchThreshold: 5,\r\n            touchSensitivity: 5,\r\n            keyboardScrolling: true,\r\n            sectionSelector: '.section',\r\n            animateAnchor: false,\r\n\r\n            //events\r\n            afterLoad: null,\r\n            onLeave: null,\r\n            afterRender: null\r\n        }, custom);\r\n\r\n\r\n        //easeInQuart animation included in the plugin\r\n        $.extend($.easing,{ easeInQuart: function (x, t, b, c, d) { return c*(t/=d)*t*t*t + b; }});\r\n\r\n        /**\r\n        * Defines the scrolling speed\r\n        */\r\n        PP.setScrollingSpeed = function(value){\r\n           options.scrollingSpeed = 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        PP.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        * Adds or remove the possiblity of scrolling through sections by using the mouse wheel/trackpad or touch gestures.\r\n        */\r\n        PP.setAllowScrolling = function (value){\r\n            if(value){\r\n                PP.setMouseWheelScrolling(true);\r\n                addTouchHandler();\r\n            }else{\r\n                PP.setMouseWheelScrolling(false);\r\n                removeTouchHandler();\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        PP.setKeyboardScrolling = function (value){\r\n            options.keyboardScrolling = value;\r\n        };\r\n\r\n        /**\r\n        * Moves sectio up\r\n        */\r\n        PP.moveSectionUp = function () {\r\n            var prev = $('.pp-section.active').prev('.pp-section');\r\n\r\n            //looping to the bottom if there's no more sections above\r\n            if (!prev.length && options.loopTop) {\r\n                prev = $('.pp-section').last();\r\n            }\r\n\r\n            if (prev.length) {\r\n                scrollPage(prev);\r\n            }\r\n        };\r\n\r\n        /**\r\n        * Moves sectio down\r\n        */\r\n        PP.moveSectionDown = function () {\r\n            var next = $('.pp-section.active').next('.pp-section');\r\n\r\n            //looping to the top if there's no more sections below\r\n            if(!next.length && options.loopBottom){\r\n                next = $('.pp-section').first();\r\n            }\r\n\r\n            if (next.length) {\r\n                scrollPage(next);\r\n            }\r\n        };\r\n\r\n        /**\r\n        * Moves the site to the given anchor or index\r\n        */\r\n        PP.moveTo = function (section){\r\n            var destiny = '';\r\n\r\n            if(isNaN(section)){\r\n                destiny = $(document).find('[data-anchor=\"'+section+'\"]');\r\n            }else{\r\n                destiny = $('.pp-section').eq( (section -1) );\r\n            }\r\n\r\n\r\n            if(destiny.length > 0){\r\n                scrollPage(destiny);\r\n            }\r\n        };\r\n\r\n        //adding internal class names to void problem with common ones\r\n        $(options.sectionSelector).each(function(){\r\n            $(this).addClass('pp-section');\r\n        });\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        $(container).css({\r\n            'overflow' : 'hidden',\r\n            '-ms-touch-action': 'none',  /* Touch detection for Windows 8 */\r\n            'touch-action': 'none'       /* IE 11 on Windows Phone 8.1*/\r\n        });\r\n\r\n        //init\r\n        PP.setAllowScrolling(true);\r\n\r\n        //creating the navigation dots\r\n        if (!$.isEmptyObject(options.navigation) ) {\r\n            addVerticalNavigation();\r\n        }\r\n\r\n         var zIndex = $('.pp-section').length;\r\n\r\n        $('.pp-section').each(function (index) {\r\n            $(this).data('data-index', index);\r\n            $(this).css('z-index', zIndex);\r\n\r\n            //if no active section is defined, the 1st one will be the default one\r\n            if (!index && $('.pp-section.active').length === 0) {\r\n                $(this).addClass('active');\r\n            }\r\n\r\n            if (typeof options.anchors[index] !== 'undefined') {\r\n                $(this).attr('data-anchor', options.anchors[index]);\r\n            }\r\n\r\n            if (typeof options.sectionsColor[index] !== 'undefined') {\r\n                $(this).css('background-color', options.sectionsColor[index]);\r\n            }\r\n\r\n            if(options.verticalCentered && !$(this).hasClass('pp-scrollable')){\r\n                addTableClass($(this));\r\n            }\r\n\r\n            zIndex = zIndex - 1;\r\n        }).promise().done(function(){\r\n            //vertical centered of the navigation + first bullet active\r\n            if(options.navigation){\r\n                $('#pp-nav').css('margin-top', '-' + ($('#pp-nav').height()/2) + 'px');\r\n                $('#pp-nav').find('li').eq($('.pp-section.active').index('.pp-section')).find('a').addClass('active');\r\n            }\r\n\r\n            $(window).on('load', function() {\r\n                scrollToAnchor();\r\n            });\r\n\r\n            $.isFunction( options.afterRender ) && options.afterRender.call( this);\r\n        });\r\n\r\n        /**\r\n        * Enables vertical centering by wrapping the content and the use of table and table-cell\r\n        */\r\n        function addTableClass(element){\r\n            element.addClass('pp-table').wrapInner('<div class=\"pp-tableCell\" style=\"height:100%\" />');\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 = $('.pp-section.active').index('.pp-section');\r\n            var toIndex = destiny.index('.pp-section');\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        * Scrolls the page to the given destination\r\n        */\r\n        function scrollPage(destination, animated) {\r\n            var v ={\r\n                destination: destination,\r\n                animated: animated,\r\n                activeSection: $('.pp-section.active'),\r\n                anchorLink: destination.data('anchor'),\r\n                sectionIndex: destination.index('.pp-section'),\r\n                toMove: destination,\r\n                yMovement: getYmovement(destination),\r\n                leavingSection: $('.pp-section.active').index('.pp-section') + 1\r\n            };\r\n\r\n            //quiting when activeSection is the target element\r\n            if(v.activeSection.is(destination)){ return; }\r\n\r\n            if(typeof v.animated === 'undefined'){\r\n                v.animated = true;\r\n            }\r\n\r\n            if(typeof v.anchorLink !== 'undefined'){\r\n                setURLHash(v.anchorLink, v.sectionIndex);\r\n            }\r\n\r\n            v.destination.addClass('active').siblings().removeClass('active');\r\n\r\n            v.sectionsToMove = getSectionsToMove(v);\r\n\r\n            //scrolling down (moving sections up making them disappear)\r\n            if (v.yMovement === 'down') {\r\n                v.translate3d = getTranslate3d();\r\n                v.scrolling = '-100%';\r\n\r\n                if(!options.css3){\r\n                    v.sectionsToMove.each(function(index){\r\n                        if(index != v.activeSection.index('.pp-section')){\r\n                            $(this).css(getScrollProp(v.scrolling));\r\n                        }\r\n                    });\r\n                }\r\n\r\n                v.animateSection = v.activeSection;\r\n            }\r\n\r\n            //scrolling up (moving section down to the viewport)\r\n            else {\r\n                v.translate3d = 'translate3d(0px, 0px, 0px)';\r\n                v.scrolling = '0';\r\n\r\n                v.animateSection = destination;\r\n            }\r\n\r\n            $.isFunction(options.onLeave) && options.onLeave.call(this, v.leavingSection, (v.sectionIndex + 1), v.yMovement);\r\n\r\n            performMovement(v);\r\n\r\n            activateMenuElement(v.anchorLink);\r\n            activateNavDots(v.anchorLink, v.sectionIndex);\r\n            lastScrolledDestiny = v.anchorLink;\r\n\r\n            var timeNow = new Date().getTime();\r\n            lastAnimation = timeNow;\r\n        }\r\n\r\n        /**\r\n        * Performs the movement (by CSS3 or by jQuery)\r\n        */\r\n        function performMovement(v){\r\n            if(options.css3){\r\n                transformContainer(v.animateSection, v.translate3d, v.animated);\r\n\r\n                v.sectionsToMove.each(function(){\r\n                    transformContainer($(this), v.translate3d, v.animated);\r\n                });\r\n\r\n                setTimeout(function () {\r\n                    afterSectionLoads(v);\r\n                }, options.scrollingSpeed);\r\n            }else{\r\n                v.scrollOptions = getScrollProp(v.scrolling);\r\n\r\n                if(v.animated){\r\n                    v.animateSection.animate(\r\n                        v.scrollOptions,\r\n                    options.scrollingSpeed, options.easing, function () {\r\n                        readjustSections(v);\r\n                        afterSectionLoads(v);\r\n                    });\r\n                }else{\r\n                    v.animateSection.css(getScrollProp(v.scrolling));\r\n                    setTimeout(function(){\r\n                        readjustSections(v);\r\n                        afterSectionLoads(v);\r\n                    },400);\r\n                }\r\n            }\r\n        }\r\n\r\n        /**\r\n        * Actions to execute after a secion is loaded\r\n        */\r\n        function afterSectionLoads(v){\r\n            //callback (afterLoad) if the site is not just resizing and readjusting the slides\r\n            $.isFunction(options.afterLoad) && options.afterLoad.call(this, v.anchorLink, (v.sectionIndex + 1));\r\n        }\r\n\r\n\r\n        function getSectionsToMove(v){\r\n            var sectionToMove;\r\n\r\n            if(v.yMovement === 'down'){\r\n                sectionToMove = $('.pp-section').map(function(index){\r\n                    if (index < v.destination.index('.pp-section')){\r\n                        return $(this);\r\n                    }\r\n                });\r\n            }else{\r\n                sectionToMove = $('.pp-section').map(function(index){\r\n                    if (index > v.destination.index('.pp-section')){\r\n                        return $(this);\r\n                    }\r\n                });\r\n            }\r\n\r\n            return sectionToMove;\r\n        }\r\n\r\n        /**\r\n        * Returns the sections to re-adjust in the background after the section loads.\r\n        */\r\n        function readjustSections(v){\r\n            if(v.yMovement === 'up'){\r\n                v.sectionsToMove.each(function(index){\r\n                    $(this).css(getScrollProp(v.scrolling));\r\n                });\r\n            }\r\n        }\r\n\r\n        /**\r\n        * Gets the property used to create the scrolling effect when using jQuery animations\r\n        * depending on the plugin direction option.\r\n        */\r\n        function getScrollProp(propertyValue){\r\n            if(options.direction === 'vertical'){\r\n                return {'top': propertyValue};\r\n            }\r\n            return {'left': propertyValue};\r\n        }\r\n\r\n        /**\r\n        * Scrolls the site without anymations (usually used in the background without the user noticing it)\r\n        */\r\n        function silentScroll(section, offset){\r\n            if (options.css3) {\r\n                transformContainer(section, getTranslate3d(), false);\r\n            }\r\n            else{\r\n                section.css(getScrollProp(offset));\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, sectionIndex){\r\n            if(options.anchors.length){\r\n                location.hash = anchorLink;\r\n\r\n                setBodyClass(location.hash);\r\n            }else{\r\n                setBodyClass(String(sectionIndex));\r\n            }\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(text){\r\n            //removing the #\r\n            text = text.replace('#','');\r\n\r\n            //removing previous anchor classes\r\n            $('body')[0].className = $('body')[0].className.replace(/\\b\\s?pp-viewing-[^\\s]+\\b/g, '');\r\n\r\n            //adding the current anchor\r\n            $('body').addClass('pp-viewing-' + text);\r\n        }\r\n\r\n        //TO DO\r\n        function scrollToAnchor(){\r\n            //getting the anchor link in the URL and deleting the `#`\r\n            var value =  window.location.hash.replace('#', '');\r\n            var sectionAnchor = value;\r\n            var section = $(document).find('.pp-section[data-anchor=\"'+sectionAnchor+'\"]');\r\n\r\n            if(section.length > 0){  //if theres any #\r\n                scrollPage(section, options.animateAnchor);\r\n            }\r\n        }\r\n\r\n        /**\r\n        * Determines if the transitions between sections still taking place.\r\n        * The variable `scrollDelay` adds a \"save zone\" for devices such as Apple laptops and Apple magic mouses\r\n        */\r\n        function isMoving(){\r\n            var timeNow = new Date().getTime();\r\n            // Cancel scroll if currently animating or within quiet period\r\n            if (timeNow - lastAnimation < scrollDelay + options.scrollingSpeed) {\r\n                return true;\r\n            }\r\n            return false;\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        /**\r\n        * Actions to do when the hash (#) in the URL changes.\r\n        */\r\n        function hashChangeHandler(){\r\n            var value =  window.location.hash.replace('#', '').split('/');\r\n            var sectionAnchor = value[0];\r\n\r\n            if(sectionAnchor.length){\r\n                /*in order to call scrollpage() only once for each destination at a time\r\n                It is called twice for each scroll otherwise, as in case of using anchorlinks `hashChange`\r\n                event is fired on every scroll too.*/\r\n                if (sectionAnchor && sectionAnchor !== lastScrolledDestiny)  {\r\n                    var section;\r\n\r\n                    if(isNaN(sectionAnchor)){\r\n                        section = $(document).find('[data-anchor=\"'+sectionAnchor+'\"]');\r\n                    }else{\r\n                        section = $('.pp-section').eq( (sectionAnchor -1) );\r\n                    }\r\n                    scrollPage(section);\r\n                }\r\n            }\r\n        }\r\n\r\n        /**\r\n        * Cross browser transformations\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         * Adds a css3 transform property to the container class with or without animation depending on the animated param.\r\n         */\r\n        function transformContainer(element, translate3d, animated) {\r\n            element.toggleClass('pp-easing', animated);\r\n\r\n            element.css(getTransforms(translate3d));\r\n        }\r\n\r\n        /**\r\n         * Sliding with arrow keys, both, vertical and horizontal\r\n         */\r\n        $(document).keydown(function (e) {\r\n            if(options.keyboardScrolling && !isMoving()){\r\n                //Moving the main page with the keyboard arrows if keyboard scrolling is enabled\r\n                switch (e.which) {\r\n                        //up\r\n                    case 38:\r\n                    case 33:\r\n                        PP.moveSectionUp();\r\n                        break;\r\n\r\n                        //down\r\n                    case 40:\r\n                    case 34:\r\n                        PP.moveSectionDown();\r\n                        break;\r\n\r\n                        //Home\r\n                    case 36:\r\n                        PP.moveTo(1);\r\n                        break;\r\n\r\n                        //End\r\n                    case 35:\r\n                        PP.moveTo($('.pp-section').length);\r\n                        break;\r\n\r\n                        //left\r\n                    case 37:\r\n                        PP.moveSectionUp();\r\n                        break;\r\n\r\n                        //right\r\n                    case 39:\r\n                        PP.moveSectionDown();\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        /**\r\n        * If `normalScrollElements` is used, the mouse wheel scrolling will scroll normally\r\n        * over the defined elements in the option.\r\n        */\r\n        if(options.normalScrollElements){\r\n            $(document).on('mouseenter', options.normalScrollElements, function () {\r\n                PP.setMouseWheelScrolling(false);\r\n            });\r\n\r\n            $(document).on('mouseleave', options.normalScrollElements, function(){\r\n                PP.setMouseWheelScrolling(true);\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            if(!isMoving()){\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                var activeSection = $('.pp-section.active');\r\n                var scrollable = isScrollable(activeSection);\r\n\r\n                //scrolling down?\r\n                if (delta < 0) {\r\n                    scrolling('down', scrollable);\r\n\r\n                //scrolling up?\r\n                }else {\r\n                    scrolling('up', scrollable);\r\n                }\r\n\r\n\r\n                return false;\r\n            }\r\n         }\r\n\r\n        /**\r\n        * Determines the way of scrolling up or down:\r\n        * by 'automatically' scrolling a section or by using the default and normal scrolling.\r\n        */\r\n        function scrolling(type, scrollable){\r\n            var check;\r\n            var scrollSection;\r\n\r\n            if(type == 'down'){\r\n                check = 'bottom';\r\n                scrollSection = PP.moveSectionDown;\r\n            }else{\r\n                check = 'top';\r\n                scrollSection = PP.moveSectionUp;\r\n            }\r\n\r\n            if(scrollable.length > 0 ){\r\n                //is the scrollbar at the start/end of the scroll?\r\n                if(isScrolled(check, scrollable)){\r\n                    scrollSection();\r\n                }else{\r\n                    return true;\r\n                }\r\n            }else{\r\n                // moved up/down\r\n                scrollSection();\r\n            }\r\n        }\r\n\r\n        /**\r\n        * Return a boolean depending on whether the scrollable element is at the end or at the start of the scrolling\r\n        * depending on the given type.\r\n        */\r\n        function isScrolled(type, scrollable){\r\n            if(type === 'top'){\r\n                return !scrollable.scrollTop();\r\n            }else if(type === 'bottom'){\r\n                return scrollable.scrollTop() + 1 + scrollable.innerHeight() >= scrollable[0].scrollHeight;\r\n            }\r\n        }\r\n\r\n         /**\r\n        * Determines whether the active section or slide is scrollable through and scrolling bar\r\n        */\r\n        function isScrollable(activeSection){\r\n            return activeSection.filter('.pp-scrollable');\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 (container.get(0).addEventListener) {\r\n                container.get(0).removeEventListener('mousewheel', MouseWheelHandler, false); //IE9, Chrome, Safari, Oper\r\n                container.get(0).removeEventListener('wheel', MouseWheelHandler, false); //Firefox\r\n            } else {\r\n                container.get(0).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 (container.get(0).addEventListener) {\r\n                container.get(0).addEventListener('mousewheel', MouseWheelHandler, false); //IE9, Chrome, Safari, Oper\r\n                container.get(0).addEventListener('wheel', MouseWheelHandler, false); //Firefox\r\n            } else {\r\n                container.get(0).attachEvent('onmousewheel', MouseWheelHandler); //IE 6/7/8\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                var MSPointer = getMSPointer();\r\n\r\n                container.off('touchstart ' +  MSPointer.down).on('touchstart ' + MSPointer.down, touchStartHandler);\r\n                container.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                var MSPointer = getMSPointer();\r\n\r\n                container.off('touchstart ' + MSPointer.down);\r\n                container.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 & rest of browsers\r\n            if(window.PointerEvent){\r\n                pointer = { down: 'pointerdown', move: 'pointermove', up: 'pointerup'};\r\n            }\r\n\r\n            //IE < 11\r\n            else{\r\n                pointer = { down: 'MSPointerDown', move: 'MSPointerMove', up: 'MSPointerUp'};\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 = new Array();\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            return events;\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        * Getting the starting possitions of the touch event\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        /* Detecting touch events\r\n        */\r\n        function touchMoveHandler(event){\r\n            var e = event.originalEvent;\r\n\r\n            // additional: if one of the normalScrollElements isn't within options.normalScrollElementTouchThreshold hops up the DOM chain\r\n            if ( !checkParentForNormalScrollElement(event.target) && isReallyTouch(e) ) {\r\n\r\n                var activeSection = $('.pp-section.active');\r\n                var scrollable = isScrollable(activeSection);\r\n\r\n                if(!scrollable.length){\r\n                    event.preventDefault();\r\n                }\r\n\r\n                if (!isMoving()) {\r\n                    var touchEvents = getEventsPage(e);\r\n                    touchEndY = touchEvents.y;\r\n                    touchEndX = touchEvents.x;\r\n\r\n                  //$('body').append('<span style=\"position:fixed; top: 250px; left: 20px; z-index:88; font-size: 25px; color: #000;\">touchEndY: ' + touchEndY  + '</div>');\r\n\r\n                    //X movement bigger than Y movement?\r\n                    if (options.direction === 'horizontal' && Math.abs(touchStartX - touchEndX) > (Math.abs(touchStartY - touchEndY))) {\r\n                        //is the movement greater than the minimum resistance to scroll?\r\n                        if (Math.abs(touchStartX - touchEndX) > (container.width() / 100 * options.touchSensitivity)) {\r\n                            if (touchStartX > touchEndX) {\r\n                                scrolling('down', scrollable);\r\n                            } else if (touchEndX > touchStartX) {\r\n                                scrolling('up', scrollable);\r\n                            }\r\n                        }\r\n                    } else {\r\n                        if (Math.abs(touchStartY - touchEndY) > (container.height() / 100 * options.touchSensitivity)) {\r\n                            if (touchStartY > touchEndY) {\r\n                                scrolling('down', scrollable);\r\n                            } else if (touchEndY > touchStartY) {\r\n                                scrolling('up', scrollable);\r\n                            }\r\n                        }\r\n                    }\r\n                }\r\n            }\r\n        }\r\n\r\n        /**\r\n         * recursive function to loop up the parent nodes to check if one of them exists in options.normalScrollElements\r\n         * Currently works well for iOS - Android might need some testing\r\n         * @param  {Element} el  target element / jquery selector (in subsequent nodes)\r\n         * @param  {int}     hop current hop compared to options.normalScrollElementTouchThreshold\r\n         * @return {boolean} true if there is a match to options.normalScrollElements\r\n         */\r\n        function checkParentForNormalScrollElement (el, hop) {\r\n            hop = hop || 0;\r\n            var parent = $(el).parent();\r\n\r\n            if (hop < options.normalScrollElementTouchThreshold &&\r\n                parent.is(options.normalScrollElements) ) {\r\n                return true;\r\n            } else if (hop == options.normalScrollElementTouchThreshold) {\r\n                return false;\r\n            } else {\r\n                return checkParentForNormalScrollElement(parent, ++hop);\r\n            }\r\n        }\r\n\r\n\r\n        /**\r\n        * Creates a vertical navigation bar.\r\n        */\r\n        function addVerticalNavigation(){\r\n            $('body').append('<div id=\"pp-nav\"><ul></ul></div>');\r\n            var nav = $('#pp-nav');\r\n\r\n            nav.css('color', options.navigation.textColor);\r\n\r\n            nav.addClass(options.navigation.position);\r\n\r\n            for(var cont = 0; cont < $('.pp-section').length; cont++){\r\n                var link = '';\r\n                if(options.anchors.length){\r\n                    link = options.anchors[cont];\r\n                }\r\n                if(options.navigation.tooltips !== 'undefined'){\r\n                    var tooltip = options.navigation.tooltips[cont];\r\n                    if(typeof tooltip === 'undefined'){\r\n                        tooltip = '';\r\n                    }\r\n                }\r\n\r\n                nav.find('ul').append('<li data-tooltip=\"' + tooltip + '\"><a href=\"#' + link + '\"><span></span></a></li>');\r\n            }\r\n\r\n            nav.find('span').css('border-color', options.navigation.bulletsColor);\r\n        }\r\n\r\n        /**\r\n        * Scrolls to the section when clicking the navigation bullet\r\n        */\r\n        $(document).on('click touchstart', '#pp-nav a', function(e){\r\n            e.preventDefault();\r\n            var index = $(this).parent().index();\r\n\r\n            scrollPage($('.pp-section').eq(index));\r\n        });\r\n\r\n        /**\r\n        * Navigation tooltips\r\n        */\r\n        $(document).on({\r\n            mouseenter: function(){\r\n                var tooltip = $(this).data('tooltip');\r\n                $('<div class=\"pp-tooltip ' + options.navigation.position +'\">' + tooltip + '</div>').hide().appendTo($(this)).fadeIn(200);\r\n            },\r\n            mouseleave: function(){\r\n                $(this).find('.pp-tooltip').fadeOut(200, function() {\r\n                    $(this).remove();\r\n                });\r\n            }\r\n        }, '#pp-nav li');\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                $('#pp-nav').find('.active').removeClass('active');\r\n                if(name){\r\n                    $('#pp-nav').find('a[href=\"#' + name + '\"]').addClass('active');\r\n                }else{\r\n                    $('#pp-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        * 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        * Gets the translate3d property to apply when using css3:true depending on the `direction` option.\r\n        */\r\n        function getTranslate3d(){\r\n            if (options.direction !== 'vertical') {\r\n                  return 'translate3d(-100%, 0px, 0px)';\r\n            }\r\n\r\n            return 'translate3d(0px, -100%, 0px)';\r\n        }\r\n\r\n    };\r\n})(jQuery, document, window);"],"sourceRoot":"/source/"}
\ No newline at end of file
diff --git a/examples/examples.css b/examples/examples.css
index 546c43a..977bffb 100644
--- a/examples/examples.css
+++ b/examples/examples.css
@@ -1,307 +1,322 @@
-@CHARSET "ISO-8859-1";
-/* Reset CSS
- * --------------------------------------- */
-body,div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,pre,
-form,fieldset,input,textarea,p,blockquote,th,td {
-    padding: 0;
-    margin: 0;
-}
-a{
-	text-decoration:none;
-}
-table {
-    border-spacing: 0;
-}
-fieldset,img {
-    border: 0;
-}
-address,caption,cite,code,dfn,em,strong,th,var {
-    font-weight: normal;
-    font-style: normal;
-}
-strong{
-	font-weight: bold;
-}
-ol,ul {
-    list-style: none;
-    margin:0;
-    padding:0;
-}
-caption,th {
-    text-align: left;
-
-}
-h1,h2,h3,h4,h5,h6 {
-    font-weight: normal;
-    font-size: 100%;
-    margin:0;
-    padding:0;
-    color:#f2f2f2;
-}
-q:before,q:after {
-    content:'';
-}
-abbr,acronym { border: 0;
-}
-
-/* Custom CSS
- * --------------------------------------- */
-body{
-	font-family: 'Lato', Calibri, Arial, sans-serif;
-	color: #f2f2f2;
-}
-h1{
-	font-size: 6em;
-}
-p{
-	font-size: 2em;
-}
-.section{
-	text-align: center;
-}
-
-/* Menu
- * --------------------------------------- */
-#menu li {
-	display:inline-block;
-	margin: 10px;
-	color: #000;
-	background:#fff;
-	background: rgba(255,255,255, 0.5);
-	-webkit-border-radius: 10px;
-            border-radius: 10px;
-}
-#menu li.active{
-	background:#666;
-	background: rgba(0,0,0, 0.5);
-	color: #fff;
-}
-#menu li a{
-	text-decoration:none;
-	color: #000;
-}
-#menu li.active a:hover{
-	color: #000;
-}
-#menu li:hover{
-	background: rgba(255,255,255, 0.8);
-}
-#menu li a,
-#menu li.active a{
-	padding: 9px 18px;
-	display:block;
-}
-#menu li.active a{
-	color: #fff;
-}
-#menu{
-	position:fixed;
-	top:0;
-	left:0;
-	height: 40px;
-	z-index: 70;
-	width: 100%;
-	padding: 0;
-	margin:0;
-}
-
-
-.intro p{
-	width: 50%;
-	margin: 0 auto;
-	font-size: 1.5em;
-}
-.twitter-share-button{
-	position: fixed;
-	z-index: 99;
-	right: 149px;
-	top: 9px;
-}
-
-#download{
-	margin: 10px 0 0 0;
-	padding: 15px 10px;
-	color: #fff;
-	text-shadow: 0 -1px 0 rgba(0,0,0,0.25);
-	background-color: #49afcd;
-	background-image: -moz-linear-gradient(top, #5bc0de, #2f96b4);
-	background-image: -ms-linear-gradient(top, #5bc0de, #2f96b4);
-	background-image: -webkit-gradient(linear,0 0,0 100%,from( #5bc0de),to( #2f96b4));
-	background-image: -webkit-linear-gradient(top, #5bc0de, #2f96b4);
-	background-image: -o-linear-gradient(top, #5bc0de, #2f96b4);
-	background-image: linear-gradient(top, #5bc0de, #2f96b4);
-	background-repeat: repeat-x;
-	filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#5bc0de', endColorstr='#2f96b4', GradientType=0);
-	border-color: #2f96b4 #2f96b4 #1f6377;
-	border-color: rgba(0,0,0,.1) rgba(0,0,0,.1) rgba(0,0,0,.25);
-	filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);
-
-	-webkit-border-radius: 6px;
-	-moz-border-radius: 6px;
-	border-radius: 6px;
-	vertical-align: middle;
-	cursor: pointer;
-	display: inline-block;
-	-webkit-box-shadow: inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);
-	-moz-box-shadow: inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);
-	box-shadow: inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);
-}
-#download a{
-	text-decoration:none;
-	color:#fff;
-}
-#download:hover{
-	text-shadow: 0 -1px 0 rgba(0,0,0,.25);
-	background-color: #2F96B4;
-	background-position: 0 -15px;
-	-webkit-transition: background-position .1s linear;
-	-moz-transition: background-position .1s linear;
-	-ms-transition: background-position .1s linear;
-	-o-transition: background-position .1s linear;
-	transition: background-position .1s linear;
-}
-
-#infoMenu{
-	height: 20px;
-	color: #f2f2f2;
-	position:fixed;
-	z-index:70;
-	bottom:0;
-	width:100%;
-	text-align:right;
-	font-size:0.9em;
-	padding:8px 0 8px 0;
-}
-#infoMenu ul{
-	padding: 0 40px;
-}
-#infoMenu li a{
-	display: block;
-	margin: 0 22px 0 0;
-	color: #333;
-}
-#infoMenu li a:hover{
-	text-decoration:underline;
-}
-#infoMenu li{
-	display:inline-block;
-	position:relative;
-}
-#examplesList{
-	display:none;
-	background: #282828;
-	-webkit-border-radius: 6px;
-	-moz-border-radius: 6px;
-	border-radius: 6px;
-	padding: 20px;
-	float: left;
-	position: absolute;
-	bottom: 29px;
-	right: 0;
-	width:638px;
-	text-align:left;
-}
-#examplesList ul{
-	padding:0;
-}
-#examplesList ul li{
-	display:block;
-	margin: 5px 0;
-}
-#examplesList ul li a{
-	color: #BDBDBD;
-	margin:0;
-}
-#examplesList ul li a:hover{
-	color: #f2f2f2;
-}
-#examplesList .column{
-	float: left;
-	margin: 0 20px 0 0;
-}
-#examplesList h3{
-	color: #f2f2f2;
-	font-size: 1.2em;
-	margin: 0 0 15px 0;
-	border-bottom: 1px solid rgba(0, 0, 0, 0.4);
-	-webkit-box-shadow: 0 1px 0 rgba(255, 255, 255, 0.1);
-	-moz-box-shadow: 0 1px 0 rgba(255,255,255,0.1);
-	box-shadow: 0 1px 0 rgba(255, 255, 255, 0.1);
-	padding: 0 0 5px 0;
-}
-
-/* Section 1
- * --------------------------------------- */
-#section1 h1{
-	color: #444;
-}
-#section1 p{
-	color: #333;
-	color: rgba(0,0,0,0.3);
-}
-#section1 img{
-	margin: 20px 0;
-	opacity: 0.7;
-}
-
-/* Section 2
- * --------------------------------------- */
-#section2 h1,
-#section2 p{
-	z-index: 3;
-}
-#section2 p{
-	opacity: 0.8;
-}
-
-#section2 #colors{
-	right: 60px;
-	bottom: 0;
-	position: absolute;
-	height: 413px;
-	width: 258px;
-	background-image: url(imgs/colors.gif);
-	background-repeat: no-repeat;
-}
-
-/* Section 3
- * --------------------------------------- */
-#section3 #colors{
-	left: 60px;
-	bottom: 0;
-}
-#section3 p{
-	color: #757575;
-}
-
-#colors2,
-#colors3{
-	position: absolute;
-	height: 163px;
-	width: 362px;
-	z-index: 1;
-	background-repeat: no-repeat;
-	left: 0;
-	margin: 0 auto;
-	right: 0;
-}
-#colors2{
-	background-image: url(imgs/colors2.gif);
-	top:0;
-}
-#colors3{
-	background-image: url(imgs/colors3.gif);
-	bottom:0;
-}
-
-/* Section 4
- * --------------------------------------- */
-#section4 p{
-	opacity: 0.6;
-}
-
-/* Overwriting fullPage.js tooltip color
-* --------------------------------------- */
-#pp-nav.custom .pp-tooltip{
-	color: #AAA;
-}
+@CHARSET "ISO-8859-1";
+/* Reset CSS
+ * --------------------------------------- */
+body,div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,pre,
+form,fieldset,input,textarea,p,blockquote,th,td {
+    padding: 0;
+    margin: 0;
+}
+a{
+	text-decoration:none;
+}
+table {
+    border-spacing: 0;
+}
+fieldset,img {
+    border: 0;
+}
+address,caption,cite,code,dfn,em,strong,th,var {
+    font-weight: normal;
+    font-style: normal;
+}
+strong{
+	font-weight: bold;
+}
+ol,ul {
+    list-style: none;
+    margin:0;
+    padding:0;
+}
+caption,th {
+    text-align: left;
+
+}
+h1,h2,h3,h4,h5,h6 {
+    font-weight: normal;
+    font-size: 100%;
+    margin:0;
+    padding:0;
+    color:#f2f2f2;
+}
+q:before,q:after {
+    content:'';
+}
+abbr,acronym { border: 0;
+}
+
+/* Custom CSS
+ * --------------------------------------- */
+body{
+	font-family: 'Lato', Calibri, Arial, sans-serif;
+	color: #f2f2f2;
+}
+h1{
+	font-size: 6em;
+}
+p{
+	font-size: 2em;
+}
+.section{
+	text-align: center;
+}
+
+/* Menu
+ * --------------------------------------- */
+#menu li {
+	display:inline-block;
+	margin: 10px;
+	color: #000;
+	background:#fff;
+	background: rgba(255,255,255, 0.5);
+	-webkit-border-radius: 10px;
+            border-radius: 10px;
+}
+#menu li.active{
+	background:#666;
+	background: rgba(0,0,0, 0.5);
+	color: #fff;
+}
+#menu li a{
+	text-decoration:none;
+	color: #000;
+}
+#menu li.active a:hover{
+	color: #000;
+}
+#menu li:hover{
+	background: rgba(255,255,255, 0.8);
+}
+#menu li a,
+#menu li.active a{
+	padding: 9px 18px;
+	display:block;
+}
+#menu li.active a{
+	color: #fff;
+}
+#menu{
+	position:fixed;
+	top:0;
+	left:0;
+	height: 40px;
+	z-index: 70;
+	width: 100%;
+	padding: 0;
+	margin:0;
+}
+
+
+.intro p{
+	width: 50%;
+	margin: 0 auto;
+	font-size: 1.5em;
+}
+.twitter-share-button{
+	position: fixed !important;
+	z-index: 99;
+	right: 149px;
+	top: 9px;
+}
+
+#download{
+	margin: 10px 0 0 0;
+	padding: 15px 10px;
+	color: #fff;
+	text-shadow: 0 -1px 0 rgba(0,0,0,0.25);
+	background-color: #49afcd;
+	background-image: -moz-linear-gradient(top, #5bc0de, #2f96b4);
+	background-image: -ms-linear-gradient(top, #5bc0de, #2f96b4);
+	background-image: -webkit-gradient(linear,0 0,0 100%,from( #5bc0de),to( #2f96b4));
+	background-image: -webkit-linear-gradient(top, #5bc0de, #2f96b4);
+	background-image: -o-linear-gradient(top, #5bc0de, #2f96b4);
+	background-image: linear-gradient(top, #5bc0de, #2f96b4);
+	background-repeat: repeat-x;
+	filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#5bc0de', endColorstr='#2f96b4', GradientType=0);
+	border-color: #2f96b4 #2f96b4 #1f6377;
+	border-color: rgba(0,0,0,.1) rgba(0,0,0,.1) rgba(0,0,0,.25);
+	filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);
+
+	-webkit-border-radius: 6px;
+	-moz-border-radius: 6px;
+	border-radius: 6px;
+	vertical-align: middle;
+	cursor: pointer;
+	display: inline-block;
+	-webkit-box-shadow: inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);
+	-moz-box-shadow: inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);
+	box-shadow: inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);
+}
+#download a{
+	text-decoration:none;
+	color:#fff;
+}
+#download:hover{
+	text-shadow: 0 -1px 0 rgba(0,0,0,.25);
+	background-color: #2F96B4;
+	background-position: 0 -15px;
+	-webkit-transition: background-position .1s linear;
+	-moz-transition: background-position .1s linear;
+	-ms-transition: background-position .1s linear;
+	-o-transition: background-position .1s linear;
+	transition: background-position .1s linear;
+}
+
+#infoMenu{
+	height: 20px;
+	color: #f2f2f2;
+	position:fixed;
+	z-index:70;
+	bottom:0;
+	width:100%;
+	text-align:right;
+	font-size:0.9em;
+	padding:8px 0 8px 0;
+}
+#infoMenu ul{
+	padding: 0 40px;
+}
+#infoMenu li a{
+	display: block;
+	margin: 0 22px 0 0;
+	color: #333;
+}
+#infoMenu li a:hover{
+	text-decoration:underline;
+}
+#infoMenu li{
+	display:inline-block;
+	position:relative;
+}
+#examplesList{
+	display:none;
+	background: #282828;
+	-webkit-border-radius: 6px;
+	-moz-border-radius: 6px;
+	border-radius: 6px;
+	padding: 20px;
+	float: left;
+	position: absolute;
+	bottom: 29px;
+	right: 0;
+	width:638px;
+	text-align:left;
+}
+#examplesList ul{
+	padding:0;
+}
+#examplesList ul li{
+	display:block;
+	margin: 5px 0;
+}
+#examplesList ul li a{
+	color: #BDBDBD;
+	margin:0;
+}
+#examplesList ul li a:hover{
+	color: #f2f2f2;
+}
+#examplesList .column{
+	float: left;
+	margin: 0 20px 0 0;
+}
+#examplesList h3{
+	color: #f2f2f2;
+	font-size: 1.2em;
+	margin: 0 0 15px 0;
+	border-bottom: 1px solid rgba(0, 0, 0, 0.4);
+	-webkit-box-shadow: 0 1px 0 rgba(255, 255, 255, 0.1);
+	-moz-box-shadow: 0 1px 0 rgba(255,255,255,0.1);
+	box-shadow: 0 1px 0 rgba(255, 255, 255, 0.1);
+	padding: 0 0 5px 0;
+}
+
+/* Section 1
+ * --------------------------------------- */
+#section1 h1{
+	color: #444;
+}
+#section1 p{
+	color: #333;
+	color: rgba(0,0,0,0.3);
+}
+#section1 img{
+	margin: 20px 0;
+	opacity: 0.7;
+}
+
+/* Section 2
+ * --------------------------------------- */
+#section2 h1,
+#section2 p{
+	z-index: 3;
+}
+#section2 p{
+	opacity: 0.8;
+}
+
+#section2 #colors{
+	right: 60px;
+	bottom: 0;
+	position: absolute;
+	height: 413px;
+	width: 258px;
+	background-image: url(imgs/colors.gif);
+	background-repeat: no-repeat;
+}
+
+/* Section 3
+ * --------------------------------------- */
+#section3 #colors{
+	left: 60px;
+	bottom: 0;
+}
+#section3 p{
+	color: #757575;
+}
+
+#colors2,
+#colors3{
+	position: absolute;
+	height: 163px;
+	width: 362px;
+	z-index: 1;
+	background-repeat: no-repeat;
+	left: 0;
+	margin: 0 auto;
+	right: 0;
+}
+#colors2{
+	background-image: url(imgs/colors2.gif);
+	top:0;
+}
+#colors3{
+	background-image: url(imgs/colors3.gif);
+	bottom:0;
+}
+
+/* Section 4
+ * --------------------------------------- */
+#section4 p{
+	opacity: 0.6;
+}
+
+/* Overwriting fullPage.js tooltip color
+* --------------------------------------- */
+#pp-nav.custom .pp-tooltip{
+	color: #AAA;
+}
+
+
+.twitter-share-button{
+	position: fixed;
+	z-index: 99;
+	right: 149px;
+	top: 9px;
+}
+#starGithub{
+	position: fixed;
+	z-index: 99;
+	right: 264px;
+	top: 9px;
+	width: 90px;
+}
\ No newline at end of file
diff --git a/gulpfile.js b/gulpfile.js
new file mode 100644
index 0000000..0140d12
--- /dev/null
+++ b/gulpfile.js
@@ -0,0 +1,34 @@
+var gulp = require('gulp');
+var rename = require('gulp-rename');
+var sourcemaps = require('gulp-sourcemaps');
+var uglify = require('gulp-uglify');
+var sass = require('gulp-sass');
+var minifyCss = require('gulp-clean-css');
+
+gulp.task('css', function() {
+    gulp.src('./jquery.pagepiling.css')
+        .pipe(sourcemaps.init())
+        .pipe(gulp.dest('./dist'))
+        .pipe(minifyCss({
+            compatibility: 'ie8',
+            advanced: false,
+            keepSpecialComments: '1'
+        }))
+        .pipe(rename({suffix: '.min'}))
+        .pipe(sourcemaps.write('.')) 
+        .pipe(gulp.dest('./dist'));
+});
+
+gulp.task('js', function() {
+    gulp.src('./jquery.pagepiling.js')
+        .pipe(sourcemaps.init())
+        .pipe(gulp.dest('./dist'))
+        .pipe(uglify({
+            preserveComments: 'license'
+        }))
+        .pipe(rename({suffix: '.min'}))
+        .pipe(sourcemaps.write('.'))
+        .pipe(gulp.dest('./dist'));
+});
+
+gulp.task('default', ['css', 'js']);
\ No newline at end of file
diff --git a/jquery.pagepiling.css b/jquery.pagepiling.css
index 80b2bb5..baf0594 100644
--- a/jquery.pagepiling.css
+++ b/jquery.pagepiling.css
@@ -1,11 +1,10 @@
 /*!
  * pagepiling.js 1.5.3
  *
- * https://github.com/alvarotrigo/fullPage.js
- * MIT licensed
- *
- * Copyright (C) 2013 alvarotrigo.com - A project by Alvaro Trigo
+ * https://github.com/alvarotrigo/pagePiling.js
+ * @license MIT licensed
  *
+ * Copyright (C) 2016 alvarotrigo.com - A project by Alvaro Trigo
  */
 html, body {
     overflow:hidden;
diff --git a/jquery.pagepiling.js b/jquery.pagepiling.js
index 8046257..48e74db 100644
--- a/jquery.pagepiling.js
+++ b/jquery.pagepiling.js
@@ -2,9 +2,9 @@
  * pagepiling.js 1.5.3
  *
  * https://github.com/alvarotrigo/pagePiling.js
- * MIT licensed
+ * @license MIT licensed
  *
- * Copyright (C) 2013 alvarotrigo.com - A project by Alvaro Trigo
+ * Copyright (C) 2016 alvarotrigo.com - A project by Alvaro Trigo
  */
 (function ($, document, window, undefined) {
     'use strict';
diff --git a/package.json b/package.json
new file mode 100644
index 0000000..e04a824
--- /dev/null
+++ b/package.json
@@ -0,0 +1,37 @@
+{
+  "name": "pagepiling.js",
+  "version": "1.5.3",
+  "description": "Create a scrolling pile of sections",
+  "main": "jquery.pagepiling.js",
+  "scripts": {
+    "test": "echo \"Error: no test specified\" && exit 1"
+  },
+  "repository": {
+    "type": "git",
+    "url": "git+ssh://git@github.com/alvarotrigo/pagePiling.js.git"
+  },
+  "keywords": [
+    "jquery",
+    "scrolling",
+    "pile",
+    "sections",
+    "slides"
+  ],
+  "authors": [
+    "Alvaro Trigo https://github.com/alvarotrigo"
+  ],
+  "license": "MIT",
+  "bugs": {
+    "url": "https://github.com/alvarotrigo/pagePiling.js/issues"
+  },
+  "homepage": "https://github.com/alvarotrigo/pagePiling.js#readme",
+  "namespace": "$.fn.pagepiling",
+  "devDependencies": {
+    "gulp": "^3.9.0",
+    "gulp-clean-css": "^2.0.8",
+    "gulp-rename": "^1.2.2",
+    "gulp-sass": "^2.0.4",
+    "gulp-sourcemaps": "^1.6.0",
+    "gulp-uglify": "^1.4.1"
+  }
+}
