{"version":3,"sources":["../src/source/js/custom.js","../src/source/js/modernizr.custom.js","../src/node_modules/inview/inview.js","../src/source/js/mCustomScrollbarmin.js","../src/source/js/fullpage.js","../src/source/js/isotope.pkgd.js","../src/source/js/appear.js"],"names":["window","Modernizr","a","b","c","z","j","cssText","B","C","indexOf","D","d","e","E","f","bind","F","charAt","toUpperCase","slice","o","join","split","p","v","y","g","documentElement","h","i","createElement","style","m","n","toLowerCase","q","t","u","w","k","l","body","parseInt","id","appendChild","innerHTML","background","overflow","parentNode","removeChild","x","hasOwnProperty","G","call","constructor","prototype","Function","this","TypeError","arguments","apply","concat","Object","touch","DocumentTouch","offsetTop","cssanimations","csstransitions","push","addTest","className","r","elements","cache","cloneNode","test","createElem","canHaveChildren","frag","shivCSS","hasCSS","getElementsByTagName","insertBefore","lastChild","firstChild","createFrag","createDocumentFragment","shivMethods","replace","html5","childNodes","length","supportsUnknownElements","type","shivDocument","_version","_prefixes","_domPrefixes","_cssomPrefixes","testProp","testAllProps","testStyles","prefixed","document","shift","injectCss","injectJs","s","readyState","onload","onreadystatechange","errorTimeout","data","src","width","height","onerror","splice","loader","load","A","setTimeout","toString","createRange","compareNode","opera","attachEvent","Array","isArray","timeout","pop","url","origUrl","prefixes","autoCallback","bypass","instead","noexec","forceCSS","forceJS","attrs","both","callback","complete","yep","nope","yepnope","addPrefix","addFilter","addEventListener","removeEventListener","executeStack","setAttribute","href","rel","root","hasClass","el","name","RegExp","getScrollTop","pageYOffset","clientHeight","scrollTop","InView","_this","destroy","fn","threshhold","scope","last","deferTimer","isDestroyed","throttledCheck","obj","winTop","winBottom","objTop","objBottom","params","windowScrollTop","elementOffsetTop","inViewHeight","innerHeight","elementOffsetTopInViewHeight","getBoundingClientRect","top","scrollY","offsetHeight","newClass","removeClass","context","now","Date","args","clearTimeout","addEvent","detachEvent","exports","module","define","amd","jQuery","event","fix","detail","wheelDelta","wheelDeltaY","wheelDeltaX","axis","HORIZONTAL_AXIS","deltaY","deltaX","deltaMode","Math","max","abs","settings","normalizeOffset","clientX","left","clientY","deltaFactor","offsetX","offsetY","unshift","dispatch","handle","adjustOldDeltas","documentMode","fixHooks","mouseHooks","special","mousewheel","version","setup","onmousewheel","getLineHeight","getPageHeight","teardown","removeData","css","extend","trigger","unmousewheel","unbind","location","protocol","require","append","decodeURI","setTop","setLeft","scrollbarPosition","scrollInertia","autoDraggerLength","alwaysShowScrollbar","snapOffset","mouseWheel","enable","scrollAmount","disableOver","scrollButtons","scrollType","keyboard","contentTouchScroll","documentTouchScroll","advanced","autoScrollOnFocus","updateOnContentResize","updateOnImageLoad","autoUpdateTimeout","theme","callbacks","onTotalScrollOffset","onTotalScrollBackOffset","alwaysTriggerOffsets","init","live","liveSelector","selector","mCustomScrollbar","setWidth","set_width","setHeight","set_height","horizontalScroll","preventDefault","normalizeDelta","invert","mouseWheelPixels","normalizeMouseWheelDelta","each","idx","opt","scrollRatio","overflowed","contentReset","bindEvents","tweenRunning","sequential","langDir","cbOffsets","poll","size","img","change","onCreate","addClass","update","Q","onBeforeUpdate","_","autoExpandHorizontalScroll","M","S","T","offsetLeft","parent","dir","dur","overwrite","onImageLoad","onSelectorChange","onUpdate","N","scrollTo","scrollEasing","moveDragger","onStart","onComplete","Y","X","ne","stop","disable","$","remove","find","replaceWith","contents","inArray","autoExpandScrollbar","autoHideScrollbar","wrapInner","after","wrap","scrollWidth","children","map","outerWidth","get","min-width","overflow-x","ceil","position","right","floor","unwrap","oe","tabindex","prepend","next","outerHeight","round","max-height","line-height","max-width","closest","toggleClass","_draggable","scrollHeight","add","dx","I","W","P","U","H","releaseDraggableSelectors","extraDraggableSelectors","_focusTimeout","step","onCompleteTimeout","O","target","ownerDocument","frameElement","offset","view","originalEvent","pageY","pageX","touches","changedTouches","screenY","screenX","idleTimer","attr","drag","stopImmediatePropagation","ee","onselectstart","L","te","K","R","touchAction","contentDocument","contentWindow","getSelection","selection","text","webkitDirectionInvertedFromDevice","nodeName","is","activeElement","_focusTimer","ae","scrollLeft","keyCode","which","snapAmount","jquery","autoUpdate","parents","updateOnSelectorChange","offsetWidth","Image","Z","mcs","content","draggerTop","draggerLeft","topPct","leftPct","direction","onOverflowYNone","onOverflowXNone","onOverflowY","onOverflowX","V","onInit","J","onScrollStart","whileScrolling","onScroll","onTotalScroll","onTotalScrollBack","time","currVal","sqrt","pow","_mTween","requestAnimationFrame","cancelAnimationFrame","performance","webkitNow","getTime","pointerType","isNaN","parseFloat","isFinite","error","defaults","expr","mcsInView","mcsInSight","mcsOverflow","factory","undefined","fullpage","WRAPPER","WRAPPER_SEL","RESPONSIVE","NO_TRANSITION","DESTROYED","ENABLED","VIEWING_PREFIX","ACTIVE","ACTIVE_SEL","COMPLETELY","COMPLETELY_SEL","SECTION_DEFAULT_SEL","SECTION","SECTION_SEL","SECTION_ACTIVE_SEL","TABLE_CELL","TABLE_CELL_SEL","AUTO_HEIGHT","NORMAL_SCROLL","SECTION_NAV","SECTION_NAV_SEL","SECTION_NAV_TOOLTIP","SECTION_NAV_TOOLTIP_SEL","SHOW_ACTIVE_TOOLTIP","SLIDE_DEFAULT_SEL","SLIDE","SLIDE_SEL","SLIDE_ACTIVE_SEL","SLIDES_WRAPPER","SLIDES_WRAPPER_SEL","SLIDES_CONTAINER","SLIDES_CONTAINER_SEL","TABLE","SLIDES_NAV","SLIDES_NAV_SEL","SLIDES_NAV_LINK_SEL","SLIDES_ARROW_SEL","SLIDES_PREV","SLIDES_ARROW_PREV","SLIDES_ARROW","SLIDES_ARROW_PREV_SEL","SLIDES_ARROW_NEXT","SLIDES_ARROW_NEXT_SEL","querySelectorAll","deepExtend","out","len","key","classList","contains","getWindowHeight","items","props","getList","until","item","sibling","matches","prevUntil","nextUntil","prev","previousElementSibling","nextElementSibling","index","isArrayOrList","num","nodeType","hide","display","show","classNames","appendTo","toWrap","wrapper","isWrapAll","newParent","wrapAll","createElementFromHTML","wrapperContent","replaceChild","reference","nextSibling","before","beforeElement","doc","clientTop","siblings","filter","child","returnValue","isFunction","eventName","CustomEvent","createEvent","initCustomEvent","dispatchEvent","matchesSelector","msMatchesSelector","mozMatchesSelector","webkitMatchesSelector","oMatchesSelector","toggle","value","htmlString","div","trim","parentElement","untilAll","nextAll","prevAll","NodeList","forEach","thisArg","fp_utils","filterFn","showError","console","containerSelector","options","domain","$htmlBody","$body","FP","menu","anchors","lockAnchors","navigation","navigationPosition","navigationTooltips","showActiveTooltip","slidesNavigation","slidesNavPosition","scrollBar","hybrid","css3","scrollingSpeed","autoScrolling","fitToSection","fitToSectionDelay","easing","easingcss3","loopBottom","loopTop","loopHorizontal","continuousVertical","continuousHorizontal","scrollHorizontally","interlockedSlides","dragAndMove","offsetSections","resetSliders","fadingEffect","normalScrollElements","scrollOverflow","scrollOverflowReset","scrollOverflowHandler","fp_scrolloverflow","iscrollHandler","scrollOverflowOptions","touchSensitivity","normalScrollElementTouchThreshold","bigSectionsDestination","keyboardScrolling","animateAnchor","recordHistory","controlArrows","controlArrowColor","verticalCentered","sectionsColor","paddingTop","paddingBottom","fixedElements","responsive","responsiveWidth","responsiveHeight","responsiveSlides","parallax","parallaxOptions","percentage","property","sectionSelector","slideSelector","v2compatible","afterLoad","onLeave","afterRender","afterResize","afterReBuild","afterSlideLoad","onSlideLeave","afterResponsive","lazyLoading","lastScrolledDestiny","lastScrolledSlide","controlPressed","startingSection","slideMoving","isTouchDevice","navigator","userAgent","match","isTouch","msMaxTouchPoints","container","windowsHeight","isResizing","isWindowFocused","canScroll","scrollings","isScrollAllowed","up","down","scrollBarHandler","resizeId","afterSectionLoadsId","afterSlideLoadsId","scrollId","scrollId2","keydownId","activeAnimation","MSPointer","PointerEvent","move","events","touchmove","touchstart","focusableElementsString","originals","g_initialAnchorsInDom","displayWarnings","fp_easings","easeInOutCubic","setAutoScrolling","setRecordHistory","setScrollingSpeed","setFitToSection","setLockAnchors","setMouseWheelScrolling","setAllowScrolling","setKeyboardScrolling","moveSectionUp","moveSectionDown","silentMoveTo","moveTo","moveSlideRight","moveSlideLeft","reBuild","setResponsive","getFullpageData","all","setMouseHijack","scrollHandler","hashChangeHandler","resizeHandler","keydownHandler","keyUpHandler","delegatedEvents","onMouseEnterOrLeave","silentScroll","setSrc","background-color","padding","-ms-touch-action","touch-action","previousStyles","getAttribute","removeAttribute","removeAnimation","-webkit-transition","transition","getActiveSection","Section","getActiveSlide","nullOrSlide","translate3d","translate3dH","shared","afterRenderActions","fullpage_api","has3d","transforms","webkitTransform","OTransform","msTransform","MozTransform","transform","getComputedStyle","getPropertyValue","support3d","attrName","tooltips","setOptionsFromDOM","sections","sectionIndex","section","slides","numSlides","styleSection","styleMenu","styleSlides","addTableClass","divUl","nav","li","link","getBulletLinkName","tooltip","margin-top","addVerticalNavigation","element","newParam","originalSrc","prepareDom","setBodyClass","scrollToAnchor","blurHandler","forMouseLeaveOrTouch","isScrolling","lastScroll","touchStartY","touchStartX","touchEndY","touchEndX","prevTime","previousDestTop","oldPageY","previousHeight","setVariableState","scrollSettings","getScrollSettings","_addEventListener","prefix","support","MouseWheelHandler","addMouseWheelHandler","mouseDownHandler","mouseUpHandler","directions","setIsScrollAllowed","preventBouncing","passive","touchStartHandler","touchMoveHandler","addTouchHandler","removeTouchHandler","scrollPage","sectionAnchor","slideAnchor","destiny","getSectionByAnchor","scrollPageAndSlide","moveSlide","resizing","slidesWrap","getTableHeight","landscapeScroll","createScrollBarForAll","innerWidth","active","isResponsive","indexBullet","allowScrolling","normalSelector","sliderWidth","slideWidth","slidesWrapper","slidesContainer","arrows","border-color","createSlideArrows","margin-left","addSlidesNavigation","slide","startingSlide","silentLandscapeScroll","padding-top","padding-bottom","activateMenuAndNav","defaultName","destinationSection","lazyLoad","playMedia","getAnchorsURL","fireCallback","activeSection","anchorLink","currentSection","movement","bottom","currentScroll","scrollDirection","getScrollDirection","visibleSectionIndex","screen_mid","isAtBottom","slideIndex","slideAnchorLink","leavingSection","leavingSectionIndex","yMovement","getYmovement","activeSlide","callbacksParams","stopMedia","setState","scrolling","scrollSection","scrollable","check","isScrolled","isReallyTouch","touchEvents","getEventsPage","getAverage","number","sum","lastElements","curTime","isNormalScroll","delta","min","horizontalDetection","isScrollingVertically","timeDiff","currentSlide","slideSiblings","isTesting","keepSlidesPosition","activeSlides","isMovementUp","dtop","elementHeight","elementTop","isScrollingDown","sectionBottom","getDestinationPosition","localIsResizing","reverse","wrapAroundElements","createInfiniteSections","beforeLeave","transformContainer","afterSectionLoads","performMovement","objectData","eventData","paramsPerEvent","prevSlide","prevSlideIndex","nullOrSection","origin","destination","getEventData","keys","Item","scroll","continuousVerticalFixSectionOrder","attribute","getSlideOrSection","elementToPlay","panel","hasAttribute","play","playYoutube","postMessage","pause","isFirstSlideMove","isFirstScrollMove","hash","anchorsParts","isFunkyAnchor","decodeURIComponent","isShiftPressed","shiftKey","focusableElements","getFocusables","preventAndFocusFirst","focus","allFocusables","currentFocusIndex","focusDestinationIndex","focusDestination","destinationItemSlide","destinationItemSection","isFocusOutside","onTab","ctrlKey","shiftPressed","onkeydown","mouseMoveHandler","offsetParent","fromIndex","toIndex","destinyPos","slidesNav","getAnchor","xMovement","addAnimation","getTransforms","afterSlideLoads","performHorizontalMove","currentHeight","widthLimit","heightLimit","isBreakingPointWidth","isBreakingPointHeight","anchor","activateNavDots","sectionHeight","paddings","animated","getSlideByAnchor","scrollSlider","sectionHash","setUrlHash","history","replaceState","baseUrl","elementIndex","String","classRe","noCallbacks","roundedTop","setScrolling","-webkit-transform","-moz-transform","-ms-transform","variable","extension","nameAttr","idAttr","to","duration","start","self","getScrolledPosition","currentTime","animateScroll","val","isLast","isFirst","jQueryBridget","arraySlice","logError","message","namespace","PluginClass","option","opts","isPlainObject","arg0","$elems","methodName","pluginMethodStr","elem","instance","method","methodCall","_init","updateJQuery","bridget","global","EvEmitter","proto","on","listener","_events","listeners","once","onceEvents","_onceEvents","off","emitEvent","onceListeners","allOff","getSize","getStyleSize","measurements","measurementsLength","getStyle","isBoxSizeOuter","isSetup","borderStyle","borderWidth","boxSizing","querySelector","getZeroSize","isBorderBox","measurement","paddingWidth","paddingLeft","paddingRight","paddingHeight","marginWidth","marginLeft","marginRight","marginHeight","marginTop","marginBottom","borderLeftWidth","borderRightWidth","borderHeight","borderTopWidth","borderBottomWidth","isBorderBoxSizeOuter","styleWidth","styleHeight","matchesMethod","ElemProto","Element","fizzyUIUtils","utils","prop","modulo","makeArray","removeFrom","ary","getParent","getQueryElement","handleEvent","filterFindElements","elems","ffElems","HTMLElement","childElems","debounceMethod","_class","threshold","timeoutName","docReady","toDashed","str","$1","$2","htmlInit","WidgetClass","dashedNamespace","dataAttr","dataAttrElems","jsDashElems","dataOptionsAttr","JSON","parse","Outlayer","docElemStyle","transitionProperty","transformProperty","transitionEndEvent","WebkitTransition","vendorProperties","transitionDuration","transitionDelay","layout","_create","create","_transn","ingProperties","clean","onEnd","elemStyle","getPosition","isOriginLeft","_getOption","isOriginTop","xValue","yValue","layoutSize","layoutPosition","xPadding","xProperty","xResetProperty","getXValue","yPadding","yProperty","yResetProperty","getYValue","isHorizontal","percentPosition","_transitionTo","curX","curY","didNotMove","setPosition","isTransitioning","transX","transY","transitionStyle","getTranslate","onTransitionEnd","isCleaning","goTo","_nonTransition","_removeStyles","_transition","from","enableTransition","transitionProps","staggerDelay","onwebkitTransitionEnd","ontransitionend","onotransitionend","dashedVendorProperties","propertyName","isEmptyObj","disableTransition","removeTransitionStyles","cleanStyle","cleanTransitionStyle","stagger","delay","removeElem","reveal","isHidden","getHideRevealTransitionEndProperty","onRevealTransitionEnd","hiddenStyle","visibleStyle","styleProperty","optionStyle","opacity","onHideTransitionEnd","noop","GUID","instances","queryElement","$element","outlayerGUID","containerStyle","initLayout","originLeft","originTop","resize","resizeContainer","subclass","Parent","SubClass","oldOption","compatOptions","horizontal","layoutInstant","reloadItems","stamps","stamp","bindResize","_itemize","itemElems","_filterFindItemElements","itemSelector","getItemElements","_resetLayout","_manageStamps","isInstant","_isLayoutInited","layoutItems","_getMeasurement","_getItemsForLayout","_layoutItems","_postLayout","isIgnored","_emitCompleteOnItems","queue","_getItemLayoutPosition","isLayoutInstant","_processLayoutQueue","updateStagger","_positionItem","unit","mult","msUnits","getMilliseconds","_getContainerSize","_setContainerMeasure","measure","isWidth","elemSize","count","doneCount","tick","emitArgs","$event","Event","ignore","getItem","unignore","_find","unstamp","_getBoundingRect","_manageStamp","boundingRect","_boundingRect","_getElementOffset","thisRect","isResizeBound","unbindResize","onresize","needsResizeLayout","addItems","appended","prepended","previousItems","revealItemElements","getItems","hideItemElements","removeItems","Layout","ms","Isotope","itemGUID","sortData","updateSortData","random","getSortData","sorters","_sorters","sorter","_destroy","LayoutMode","isotope","filteredItems","needsVerticalResizeLayout","getColumnWidth","getSegmentSize","getRowHeight","segment","segmentName","outerSize","firstItemSize","getFirstItemSize","firstItem","modes","Mode","Masonry","fitWidth","measureColumns","colYs","cols","maxY","horizontalColIndex","getContainerWidth","columnWidth","firstItemElem","containerWidth","gutter","excess","remainder","colSpan","colPosition","horizontalOrder","col","setMax","_getTopColPosition","colGroup","_getTopColGroup","minimumY","groupCount","_getColGroupY","groupColYs","_getHorizontalColPosition","hasSize","stampSize","firstX","lastX","firstCol","lastCol","stampMaxY","_getContainerFitWidth","unusedCols","previousWidth","MasonryMode","keepModeMethods","isFitWidth","FitRows","itemWidth","Vertical","horizontalAlignment","layoutMode","isJQueryFiltering","sortAscending","_getSorters","sortHistory","_initLayoutMode","_updateItemsSortData","initialOpts","_layout","arrange","_getIsInstant","filtered","_filter","_bindArrangeComplete","_isInstant","_noTransition","_hideReveal","_sort","needReveal","needHide","isLayoutComplete","isHideComplete","isRevealComplete","arrangeParallelCallback","hiddenMatched","visibleUnmatched","_getFilterTest","isMatched","mungeSorter","query","attrMatch","getValue","textContent","getValueGetter","parser","sortDataParsers","sortBy","sortBys","_getIsSameSortBy","itemSorter","sortAsc","itemA","itemB","isAscending","getItemSorter","sort","_mode","mode","Error","_filterRevealAdded","insert","filteredInsertItems","_remove","shuffle","getFilteredItemElements","appear","one","accX","accY","appeared","ax","ay","th","wh","tw","ww","modifiedFn","checks","checkAll","run","old","imageUrl","ready","vidHeight","fadeOut","click","stopPropagation","fancybox","hover","$grid","filterFns","numberGreaterThan50","ium","filterValue","buttonGroup","$buttonGroup","tabId","vidSmHeight","fadeIn"],"mappings":"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","file":"build.min.js","sourcesContent":["if ($(window).width() > 1024) { \r\n //HOME PAGE SECTION SCROLL\r\n let myFullpage = new fullpage('#fullpage', {\r\n verticalCentered: false,\r\n css3:false,\r\n anchors: ['firstPage', 'secondPage'],\r\n menu: '#menu',\r\n lazyLoad: true,\r\n });\r\n}else{\r\n}\r\n\r\n//BACKGROUNT IMAGE\r\n$(\".div-bg\").each( function(){\r\n var imageUrl = $(this).find('img').attr(\"src\");\t\t\t\r\n $(this).find('img').css(\"visibility\",\"hidden\");\t\t\t\r\n $(this).css('background-image', 'url(' + imageUrl + ')').css(\"background-repeat\",\"no-repeat\").css(\"background-size\",\"cover\").css(\"background-position\",\"50% 50%\");\t\t\r\n});\r\n\r\n$( document ).ready(function() {\r\n //CONTACT FORM\r\n $('.controlElement').each(function(){\r\n if ($(this).val()){\r\n $(this).closest('.formGroup').addClass(\"quote\");\r\n }\r\n });\r\n $(\".formGroup .controlElement\").on('keyup focusout',function() {\r\n if ($(this).val().length === 0) {\r\n $(this).closest('.formGroup').removeClass('quote').removeClass('active-form');\r\n } else {\r\n $(this).closest('.formGroup').addClass('quote').addClass('active-form');\r\n }\r\n });\r\n $('.textClear').on('click', function (e){\r\n e.preventDefault();\r\n $(this).prev('.controlElement').val('');\r\n $(this).closest('.formGroup').removeClass('quote').removeClass('active-form');\r\n });\r\n // $('#sendBtn').on('click', function (){\r\n // if ($('.controlElement').val()){\r\n // $('#sendBtn').addClass('sending');\r\n // } else {\r\n // $('#sendBtn').removeClass('sending');\r\n // }\r\n // });\r\n //FIX HEIGHT\r\n let vidHeight = $('.videoHold').outerHeight();\r\n $('.templateMainHolder').css(\"min-height\", vidHeight);\r\n\r\n //PAGE PREE LOADER\r\n setTimeout(function(){\r\n $('.tempLoader').addClass('hide')\r\n }, 1500);\r\n \r\n setTimeout(function(){\r\n $('.tempLoader').fadeOut('hide')\r\n }, 1700);\r\n\r\n //NAV MENU\r\n $('.hamburger').click(function(){\r\n $('.navHolder').toggleClass('openNav');\r\n $(this).toggleClass('close');\r\n $('header').toggleClass('setNav');\r\n\r\n });\r\n // $('.closeBtn').click(function(){\r\n // $('.navHolder.openNav').removeClass('openNav');\r\n // });\r\n \r\n $('.fancybox-container').click(function(e){\r\n\t\te.stopPropagation();\r\n });\r\n $(\".wVideo\").fancybox();\r\n});\r\n\r\n$(window).on(\"load\",function(){\r\n //HOME PAGE SCROLL\r\n if($(window).width() > 991){\r\n $(\"#content-3\").mCustomScrollbar({\r\n scrollButtons:{enable:true},\r\n theme:\"light-thick\",\r\n scrollbarPosition:\"outside\"\r\n });\r\n }\r\n //HOVER FUNCTION\r\n $(\".splitList\").hover(function () {\r\n $(this).toggleClass(\"resultHover\");\r\n $(this).siblings().toggleClass(\"resultSib\");\r\n });\r\n\r\n //ISOTOP TAB\r\n // init Isotope\r\n var $grid = $('.tabgrid').isotope({\r\n itemSelector: '.element-item',\r\n layoutMode: 'fitRows',\r\n });\r\n \r\n // filter functions\r\n var filterFns = {\r\n // show if number is greater than 50\r\n numberGreaterThan50: function() {\r\n var number = $(this).find('.number').text();\r\n return parseInt( number, 10 ) > 50;\r\n },\r\n // show if name ends with -ium\r\n ium: function() {\r\n var name = $(this).find('.name').text();\r\n return name.match( /ium$/ );\r\n }\r\n };\r\n if($('.filters-button-group li').hasClass('is-checked')){\r\n var filterValue = $( this ).attr('data-filter');\r\n // use filterFn if matches value\r\n filterValue = filterFns[ filterValue ] || filterValue;\r\n $grid.isotope({ filter: filterValue });\r\n }\r\n // bind filter button click\r\n $('.filters-button-group').on( 'click', 'li', function() {\r\n var filterValue = $( this ).attr('data-filter');\r\n // use filterFn if matches value\r\n filterValue = filterFns[ filterValue ] || filterValue;\r\n $grid.isotope({ filter: filterValue });\r\n }); \r\n\r\n // change is-checked class on buttons\r\n $('.button-group').each( function( i, buttonGroup ) {\r\n var $buttonGroup = $( buttonGroup );\r\n $buttonGroup.on( 'click', 'li', function() {\r\n $buttonGroup.find('.is-checked').removeClass('is-checked');\r\n $( this ).addClass('is-checked');\r\n });\r\n });\r\n});\r\n\r\n$('.filters-button-group li').click (function(){\r\n var tabId = $(this).attr('data-tab');\r\n $('.filters-button-group li').removeClass('is-checked');\r\n $('.tabList').removeClass('active');\r\n $(this).addClass('is-checked');\r\n $(\"#\"+tabId).addClass('active');\r\n });\r\n\r\n// var bannerPosition = $(window).scrollTop();\r\n\r\n// $(window).scroll(function() {\r\n// var scroll = $(window).scrollTop();\r\n// if(scroll > bannerPosition) {\r\n// $('.templateListHolder').addClass('up');\r\n// } else {\r\n// $('.templateListHolder').removeClass('up');\r\n// }\r\n// bannerPosition = scroll;\r\n// });\r\n\r\n//var scroll = $(window).scrollTop();\r\n\r\nvar vidSmHeight = $('.videoSmHold').outerHeight;\r\n$(window).scroll(function() { \r\n var scroll = $(window).scrollTop();\r\n if (scroll >= 120) {\r\n $('.widgetMudeRow').fadeOut();\r\n } else {\r\n $('.widgetMudeRow').fadeIn();\r\n }\r\n});\r\n\r\n$( document ).ready(function() {\r\n $('.eLoader').removeClass('eLoader');\r\n setTimeout(function(){\r\n $('figure.secLoader').removeClass('secLoader');\r\n }, 500);\r\n}); ",";window.Modernizr=function(a,b,c){function z(a){j.cssText=a}function A(a,b){return z(m.join(a+\";\")+(b||\"\"))}function B(a,b){return typeof a===b}function C(a,b){return!!~(\"\"+a).indexOf(b)}function D(a,b){for(var d in a){var e=a[d];if(!C(e,\"-\")&&j[e]!==c)return b==\"pfx\"?e:!0}return!1}function E(a,b,d){for(var e in a){var f=b[a[e]];if(f!==c)return d===!1?a[e]:B(f,\"function\")?f.bind(d||b):f}return!1}function F(a,b,c){var d=a.charAt(0).toUpperCase()+a.slice(1),e=(a+\" \"+o.join(d+\" \")+d).split(\" \");return B(b,\"string\")||B(b,\"undefined\")?D(e,b):(e=(a+\" \"+p.join(d+\" \")+d).split(\" \"),E(e,b,c))}var d=\"2.6.2\",e={},f=!0,g=b.documentElement,h=\"modernizr\",i=b.createElement(h),j=i.style,k,l={}.toString,m=\" -webkit- -moz- -o- -ms- \".split(\" \"),n=\"Webkit Moz O ms\",o=n.split(\" \"),p=n.toLowerCase().split(\" \"),q={},r={},s={},t=[],u=t.slice,v,w=function(a,c,d,e){var f,i,j,k,l=b.createElement(\"div\"),m=b.body,n=m||b.createElement(\"body\");if(parseInt(d,10))while(d--)j=b.createElement(\"div\"),j.id=e?e[d]:h+(d+1),l.appendChild(j);return f=[\"\",'\"].join(\"\"),l.id=h,(m?l:n).innerHTML+=f,n.appendChild(l),m||(n.style.background=\"\",n.style.overflow=\"hidden\",k=g.style.overflow,g.style.overflow=\"hidden\",g.appendChild(n)),i=c(l,a),m?l.parentNode.removeChild(l):(n.parentNode.removeChild(n),g.style.overflow=k),!!i},x={}.hasOwnProperty,y;!B(x,\"undefined\")&&!B(x.call,\"undefined\")?y=function(a,b){return x.call(a,b)}:y=function(a,b){return b in a&&B(a.constructor.prototype[b],\"undefined\")},Function.prototype.bind||(Function.prototype.bind=function(b){var c=this;if(typeof c!=\"function\")throw new TypeError;var d=u.call(arguments,1),e=function(){if(this instanceof e){var a=function(){};a.prototype=c.prototype;var f=new a,g=c.apply(f,d.concat(u.call(arguments)));return Object(g)===g?g:f}return c.apply(b,d.concat(u.call(arguments)))};return e}),q.touch=function(){var c;return\"ontouchstart\"in a||a.DocumentTouch&&b instanceof DocumentTouch?c=!0:w([\"@media (\",m.join(\"touch-enabled),(\"),h,\")\",\"{#modernizr{top:9px;position:absolute}}\"].join(\"\"),function(a){c=a.offsetTop===9}),c},q.cssanimations=function(){return F(\"animationName\")},q.csstransitions=function(){return F(\"transition\")};for(var G in q)y(q,G)&&(v=G.toLowerCase(),e[v]=q[G](),t.push((e[v]?\"\":\"no-\")+v));return e.addTest=function(a,b){if(typeof a==\"object\")for(var d in a)y(a,d)&&e.addTest(d,a[d]);else{a=a.toLowerCase();if(e[a]!==c)return e;b=typeof b==\"function\"?b():b,typeof f!=\"undefined\"&&f&&(g.className+=\" \"+(b?\"\":\"no-\")+a),e[a]=b}return e},z(\"\"),i=k=null,function(a,b){function k(a,b){var c=a.createElement(\"p\"),d=a.getElementsByTagName(\"head\")[0]||a.documentElement;return c.innerHTML=\"x\",d.insertBefore(c.lastChild,d.firstChild)}function l(){var a=r.elements;return typeof a==\"string\"?a.split(\" \"):a}function m(a){var b=i[a[g]];return b||(b={},h++,a[g]=h,i[h]=b),b}function n(a,c,f){c||(c=b);if(j)return c.createElement(a);f||(f=m(c));var g;return f.cache[a]?g=f.cache[a].cloneNode():e.test(a)?g=(f.cache[a]=f.createElem(a)).cloneNode():g=f.createElem(a),g.canHaveChildren&&!d.test(a)?f.frag.appendChild(g):g}function o(a,c){a||(a=b);if(j)return a.createDocumentFragment();c=c||m(a);var d=c.frag.cloneNode(),e=0,f=l(),g=f.length;for(;e\",f=\"hidden\"in a,j=a.childNodes.length==1||function(){b.createElement(\"a\");var a=b.createDocumentFragment();return typeof a.cloneNode==\"undefined\"||typeof a.createDocumentFragment==\"undefined\"||typeof a.createElement==\"undefined\"}()}catch(c){f=!0,j=!0}})();var r={elements:c.elements||\"abbr article aside audio bdi canvas data datalist details figcaption figure footer header hgroup mark meter nav output progress section summary time video\",shivCSS:c.shivCSS!==!1,supportsUnknownElements:j,shivMethods:c.shivMethods!==!1,type:\"default\",shivDocument:q,createElement:n,createDocumentFragment:o};a.html5=r,q(b)}(this,b),e._version=d,e._prefixes=m,e._domPrefixes=p,e._cssomPrefixes=o,e.testProp=function(a){return D([a])},e.testAllProps=F,e.testStyles=w,e.prefixed=function(a,b,c){return b?F(a,b,c):F(a,\"pfx\")},g.className=g.className.replace(/(^|\\s)no-js(\\s|$)/,\"$1$2\")+(f?\" js \"+t.join(\" \"):\"\"),e}(this,this.document),function(a,b,c){function d(a){return\"[object Function]\"==o.call(a)}function e(a){return\"string\"==typeof a}function f(){}function g(a){return!a||\"loaded\"==a||\"complete\"==a||\"uninitialized\"==a}function h(){var a=p.shift();q=1,a?a.t?m(function(){(\"c\"==a.t?B.injectCss:B.injectJs)(a.s,0,a.a,a.x,a.e,1)},0):(a(),h()):q=0}function i(a,c,d,e,f,i,j){function k(b){if(!o&&g(l.readyState)&&(u.r=o=1,!q&&h(),l.onload=l.onreadystatechange=null,b)){\"img\"!=a&&m(function(){t.removeChild(l)},50);for(var d in y[c])y[c].hasOwnProperty(d)&&y[c][d].onload()}}var j=j||B.errorTimeout,l=b.createElement(a),o=0,r=0,u={t:d,s:c,e:f,a:i,x:j};1===y[c]&&(r=1,y[c]=[]),\"object\"==a?l.data=c:(l.src=c,l.type=a),l.width=l.height=\"0\",l.onerror=l.onload=l.onreadystatechange=function(){k.call(this,r)},p.splice(e,0,u),\"img\"!=a&&(r||2===y[c]?(t.insertBefore(l,s?null:n),m(k,j)):y[c].push(l))}function j(a,b,c,d,f){return q=0,b=b||\"j\",e(a)?i(\"c\"==b?v:u,a,b,this.i++,c,d,f):(p.splice(this.i++,0,a),1==p.length&&h()),this}function k(){var a=B;return a.loader={load:j,i:0},a}var l=b.documentElement,m=a.setTimeout,n=b.getElementsByTagName(\"script\")[0],o={}.toString,p=[],q=0,r=\"MozAppearance\"in l.style,s=r&&!!b.createRange().compareNode,t=s?l:n.parentNode,l=a.opera&&\"[object Opera]\"==o.call(a.opera),l=!!b.attachEvent&&!l,u=r?\"object\":l?\"script\":\"img\",v=l?\"script\":u,w=Array.isArray||function(a){return\"[object Array]\"==o.call(a)},x=[],y={},z={timeout:function(a,b){return b.length&&(a.timeout=b[0]),a}},A,B;B=function(a){function b(a){var a=a.split(\"!\"),b=x.length,c=a.pop(),d=a.length,c={url:c,origUrl:c,prefixes:a},e,f,g;for(f=0;f= 0) {\n newClass = newClass.replace(' ' + name + ' ', ' ');\n }\n el.className = newClass.replace(/^\\s+|\\s+$/g, '');\n }\n return el;\n }\n\n function removeEvent(el, name, fn) {\n if (el.removeEventListener) {\n return el.removeEventListener(name, fn);\n } else if (el.detachEvent) {\n return el.detachEvent('on' + name, fn);\n }\n }\n\n function addEvent(el, name, fn) {\n if (el.addEventListener) {\n return el.addEventListener(name, fn, false);\n } else if (el.attachEvent) {\n return el.attachEvent('on' + name, fn);\n }\n }\n\n function getScrollTop() {\n if (typeof window.pageYOffset !== 'undefined') {\n return window.pageYOffset;\n } else {\n var b = document.body;\n var d = document.documentElement;\n d = d.clientHeight ? d : b;\n return d.scrollTop;\n }\n }\n\n function isInView(obj) {\n var winTop = getScrollTop(),\n winBottom = winTop + window.innerHeight,\n objTop = obj.getBoundingClientRect().top + window.scrollY,\n objBottom = objTop + obj.offsetHeight,\n offset = 0;\n\n if ((objTop <= winBottom + offset) && (objBottom >= winTop)) {\n return true;\n }\n\n return false;\n }\n\n /**\n * @desc Create an InView instance.\n *\n * @class\n * @func InView\n * @param {HTMLElement} element - element to detect when scrolled to view\n * @param {scrollCallback} scrollCallback - callback function fired on scroll event\n * @return {HTMLElement} - element\n *\n * @example\n * var el = document.querySelector('.item');\n *\n * var InView = InView(el, function(isInView, data) {\n * if (isInView) {\n * console.log('in view');\n * } else {\n * if (data.windowScrollTop - (data.elementOffsetTop - data.inViewHeight) > data.inViewHeight) {\n * console.log('not in view (scroll up)');\n * } else {\n * console.log('not in view (scroll down)');\n * }\n * }\n * });\n */\n function InView (el, callback) {\n var _this = this;\n if (!(_this instanceof InView)) {\n return new InView(el, callback);\n }\n\n _this.el = el;\n _this.callback = callback.bind(_this);\n _this.destroy = function() {};\n\n if (!el) {\n return _this;\n }\n\n var isDestroyed = false;\n\n var check = function check(e) {\n if (isDestroyed) return false;\n\n var params = {\n windowScrollTop: getScrollTop(),\n elementOffsetTop: _this.el.offsetTop,\n inViewHeight: window.innerHeight,\n elementOffsetTopInViewHeight: window.innerHeight - (getScrollTop() - (_this.el.offsetTop - window.innerHeight))\n };\n if (isInView(_this.el)) {\n addClass(_this.el, 'inview');\n _this.callback.call(_this, true, params);\n } else {\n removeClass(_this.el, 'inview');\n _this.callback.call(_this, false, params);\n }\n }\n\n var throttledCheck = throttle(check, 100);\n\n addEvent(window, 'scroll', throttledCheck);\n\n _this.destroy = function() {\n isDestroyed = true;\n removeEvent(window, 'scroll', throttledCheck)\n };\n\n throttledCheck();\n\n return _this;\n }\n\n /**\n * @desc InView callback\n *\n * @callback scrollCallback\n * @param {boolean} isInView - is in view\n * @param {object} data - scroll data\n * @param {number} data.windowScrollTop - scrolled amount\n * @param {number} data.elementOffsetTop - element top offset\n * @param {number} data.inViewHeight - height of visible area\n * @param {number} data.elementOffsetTopInViewHeight - element top offset relative to height of visible area\n */\n\n if (typeof exports !== 'undefined') {\n if (typeof module !== 'undefined' && module.exports) {\n exports = module.exports = InView;\n }\n exports.InView = InView;\n } else {\n root.InView = InView;\n }\n\n})(window);\n","!function(a){\"function\"==typeof define&&define.amd?define([\"jquery\"],a):\"object\"==typeof exports?module.exports=a:a(jQuery)}(function(a){function b(b){var g=b||window.event,h=i.call(arguments,1),j=0,l=0,m=0,n=0,o=0,p=0;if(b=a.event.fix(g),b.type=\"mousewheel\",\"detail\"in g&&(m=-1*g.detail),\"wheelDelta\"in g&&(m=g.wheelDelta),\"wheelDeltaY\"in g&&(m=g.wheelDeltaY),\"wheelDeltaX\"in g&&(l=-1*g.wheelDeltaX),\"axis\"in g&&g.axis===g.HORIZONTAL_AXIS&&(l=-1*m,m=0),j=0===m?l:m,\"deltaY\"in g&&(m=-1*g.deltaY,j=m),\"deltaX\"in g&&(l=g.deltaX,0===m&&(j=-1*l)),0!==m||0!==l){if(1===g.deltaMode){var q=a.data(this,\"mousewheel-line-height\");j*=q,m*=q,l*=q}else if(2===g.deltaMode){var r=a.data(this,\"mousewheel-page-height\");j*=r,m*=r,l*=r}if(n=Math.max(Math.abs(m),Math.abs(l)),(!f||f>n)&&(f=n,d(g,n)&&(f/=40)),d(g,n)&&(j/=40,l/=40,m/=40),j=Math[j>=1?\"floor\":\"ceil\"](j/f),l=Math[l>=1?\"floor\":\"ceil\"](l/f),m=Math[m>=1?\"floor\":\"ceil\"](m/f),k.settings.normalizeOffset&&this.getBoundingClientRect){var s=this.getBoundingClientRect();o=b.clientX-s.left,p=b.clientY-s.top}return b.deltaX=l,b.deltaY=m,b.deltaFactor=f,b.offsetX=o,b.offsetY=p,b.deltaMode=0,h.unshift(b,j,l,m),e&&clearTimeout(e),e=setTimeout(c,200),(a.event.dispatch||a.event.handle).apply(this,h)}}function c(){f=null}function d(a,b){return k.settings.adjustOldDeltas&&\"mousewheel\"===a.type&&b%120===0}var e,f,g=[\"wheel\",\"mousewheel\",\"DOMMouseScroll\",\"MozMousePixelScroll\"],h=\"onwheel\"in document||document.documentMode>=9?[\"wheel\"]:[\"mousewheel\",\"DomMouseScroll\",\"MozMousePixelScroll\"],i=Array.prototype.slice;if(a.event.fixHooks)for(var j=g.length;j;)a.event.fixHooks[g[--j]]=a.event.mouseHooks;var k=a.event.special.mousewheel={version:\"3.1.12\",setup:function(){if(this.addEventListener)for(var c=h.length;c;)this.addEventListener(h[--c],b,!1);else this.onmousewheel=b;a.data(this,\"mousewheel-line-height\",k.getLineHeight(this)),a.data(this,\"mousewheel-page-height\",k.getPageHeight(this))},teardown:function(){if(this.removeEventListener)for(var c=h.length;c;)this.removeEventListener(h[--c],b,!1);else this.onmousewheel=null;a.removeData(this,\"mousewheel-line-height\"),a.removeData(this,\"mousewheel-page-height\")},getLineHeight:function(b){var c=a(b),d=c[\"offsetParent\"in a.fn?\"offsetParent\":\"parent\"]();return d.length||(d=a(\"body\")),parseInt(d.css(\"fontSize\"),10)||parseInt(c.css(\"fontSize\"),10)||16},getPageHeight:function(b){return a(b).height()},settings:{adjustOldDeltas:!0,normalizeOffset:!0}};a.fn.extend({mousewheel:function(a){return a?this.bind(\"mousewheel\",a):this.trigger(\"mousewheel\")},unmousewheel:function(a){return this.unbind(\"mousewheel\",a)}})});!function(a){\"function\"==typeof define&&define.amd?define([\"jquery\"],a):\"object\"==typeof exports?module.exports=a:a(jQuery)}(function(a){function b(b){var g=b||window.event,h=i.call(arguments,1),j=0,l=0,m=0,n=0,o=0,p=0;if(b=a.event.fix(g),b.type=\"mousewheel\",\"detail\"in g&&(m=-1*g.detail),\"wheelDelta\"in g&&(m=g.wheelDelta),\"wheelDeltaY\"in g&&(m=g.wheelDeltaY),\"wheelDeltaX\"in g&&(l=-1*g.wheelDeltaX),\"axis\"in g&&g.axis===g.HORIZONTAL_AXIS&&(l=-1*m,m=0),j=0===m?l:m,\"deltaY\"in g&&(m=-1*g.deltaY,j=m),\"deltaX\"in g&&(l=g.deltaX,0===m&&(j=-1*l)),0!==m||0!==l){if(1===g.deltaMode){var q=a.data(this,\"mousewheel-line-height\");j*=q,m*=q,l*=q}else if(2===g.deltaMode){var r=a.data(this,\"mousewheel-page-height\");j*=r,m*=r,l*=r}if(n=Math.max(Math.abs(m),Math.abs(l)),(!f||f>n)&&(f=n,d(g,n)&&(f/=40)),d(g,n)&&(j/=40,l/=40,m/=40),j=Math[j>=1?\"floor\":\"ceil\"](j/f),l=Math[l>=1?\"floor\":\"ceil\"](l/f),m=Math[m>=1?\"floor\":\"ceil\"](m/f),k.settings.normalizeOffset&&this.getBoundingClientRect){var s=this.getBoundingClientRect();o=b.clientX-s.left,p=b.clientY-s.top}return b.deltaX=l,b.deltaY=m,b.deltaFactor=f,b.offsetX=o,b.offsetY=p,b.deltaMode=0,h.unshift(b,j,l,m),e&&clearTimeout(e),e=setTimeout(c,200),(a.event.dispatch||a.event.handle).apply(this,h)}}function c(){f=null}function d(a,b){return k.settings.adjustOldDeltas&&\"mousewheel\"===a.type&&b%120===0}var e,f,g=[\"wheel\",\"mousewheel\",\"DOMMouseScroll\",\"MozMousePixelScroll\"],h=\"onwheel\"in document||document.documentMode>=9?[\"wheel\"]:[\"mousewheel\",\"DomMouseScroll\",\"MozMousePixelScroll\"],i=Array.prototype.slice;if(a.event.fixHooks)for(var j=g.length;j;)a.event.fixHooks[g[--j]]=a.event.mouseHooks;var k=a.event.special.mousewheel={version:\"3.1.12\",setup:function(){if(this.addEventListener)for(var c=h.length;c;)this.addEventListener(h[--c],b,!1);else this.onmousewheel=b;a.data(this,\"mousewheel-line-height\",k.getLineHeight(this)),a.data(this,\"mousewheel-page-height\",k.getPageHeight(this))},teardown:function(){if(this.removeEventListener)for(var c=h.length;c;)this.removeEventListener(h[--c],b,!1);else this.onmousewheel=null;a.removeData(this,\"mousewheel-line-height\"),a.removeData(this,\"mousewheel-page-height\")},getLineHeight:function(b){var c=a(b),d=c[\"offsetParent\"in a.fn?\"offsetParent\":\"parent\"]();return d.length||(d=a(\"body\")),parseInt(d.css(\"fontSize\"),10)||parseInt(c.css(\"fontSize\"),10)||16},getPageHeight:function(b){return a(b).height()},settings:{adjustOldDeltas:!0,normalizeOffset:!0}};a.fn.extend({mousewheel:function(a){return a?this.bind(\"mousewheel\",a):this.trigger(\"mousewheel\")},unmousewheel:function(a){return this.unbind(\"mousewheel\",a)}})});\n/* == malihu jquery custom scrollbar plugin == Version: 3.1.5, License: MIT License (MIT) */\n!function(e){\"function\"==typeof define&&define.amd?define([\"jquery\"],e):\"undefined\"!=typeof module&&module.exports?module.exports=e:e(jQuery,window,document)}(function(e){!function(t){var o=\"function\"==typeof define&&define.amd,a=\"undefined\"!=typeof module&&module.exports,n=\"https:\"==document.location.protocol?\"https:\":\"http:\",i=\"cdnjs.cloudflare.com/ajax/libs/jquery-mousewheel/3.1.13/jquery.mousewheel.min.js\";o||(a?require(\"jquery-mousewheel\")(e):e.event.special.mousewheel||e(\"head\").append(decodeURI(\"%3Cscript src=\"+n+\"//\"+i+\"%3E%3C/script%3E\"))),t()}(function(){var t,o=\"mCustomScrollbar\",a=\"mCS\",n=\".mCustomScrollbar\",i={setTop:0,setLeft:0,axis:\"y\",scrollbarPosition:\"inside\",scrollInertia:950,autoDraggerLength:!0,alwaysShowScrollbar:0,snapOffset:0,mouseWheel:{enable:!0,scrollAmount:\"auto\",axis:\"y\",deltaFactor:\"auto\",disableOver:[\"select\",\"option\",\"keygen\",\"datalist\",\"textarea\"]},scrollButtons:{scrollType:\"stepless\",scrollAmount:\"auto\"},keyboard:{enable:!0,scrollType:\"stepless\",scrollAmount:\"auto\"},contentTouchScroll:25,documentTouchScroll:!0,advanced:{autoScrollOnFocus:\"input,textarea,select,button,datalist,keygen,a[tabindex],area,object,[contenteditable='true']\",updateOnContentResize:!0,updateOnImageLoad:\"auto\",autoUpdateTimeout:60},theme:\"light\",callbacks:{onTotalScrollOffset:0,onTotalScrollBackOffset:0,alwaysTriggerOffsets:!0}},r=0,l={},s=window.attachEvent&&!window.addEventListener?1:0,c=!1,d=[\"mCSB_dragger_onDrag\",\"mCSB_scrollTools_onDrag\",\"mCS_img_loaded\",\"mCS_disabled\",\"mCS_destroyed\",\"mCS_no_scrollbar\",\"mCS-autoHide\",\"mCS-dir-rtl\",\"mCS_no_scrollbar_y\",\"mCS_no_scrollbar_x\",\"mCS_y_hidden\",\"mCS_x_hidden\",\"mCSB_draggerContainer\",\"mCSB_buttonUp\",\"mCSB_buttonDown\",\"mCSB_buttonLeft\",\"mCSB_buttonRight\"],u={init:function(t){var t=e.extend(!0,{},i,t),o=f.call(this);if(t.live){var s=t.liveSelector||this.selector||n,c=e(s);if(\"off\"===t.live)return void m(s);l[s]=setTimeout(function(){c.mCustomScrollbar(t),\"once\"===t.live&&c.length&&m(s)},500)}else m(s);return t.setWidth=t.set_width?t.set_width:t.setWidth,t.setHeight=t.set_height?t.set_height:t.setHeight,t.axis=t.horizontalScroll?\"x\":p(t.axis),t.scrollInertia=t.scrollInertia>0&&t.scrollInertia<17?17:t.scrollInertia,\"object\"!=typeof t.mouseWheel&&1==t.mouseWheel&&(t.mouseWheel={enable:!0,scrollAmount:\"auto\",axis:\"y\",preventDefault:!1,deltaFactor:\"auto\",normalizeDelta:!1,invert:!1}),t.mouseWheel.scrollAmount=t.mouseWheelPixels?t.mouseWheelPixels:t.mouseWheel.scrollAmount,t.mouseWheel.normalizeDelta=t.advanced.normalizeMouseWheelDelta?t.advanced.normalizeMouseWheelDelta:t.mouseWheel.normalizeDelta,t.scrollButtons.scrollType=g(t.scrollButtons.scrollType),h(t),e(o).each(function(){var o=e(this);if(!o.data(a)){o.data(a,{idx:++r,opt:t,scrollRatio:{y:null,x:null},overflowed:null,contentReset:{y:null,x:null},bindEvents:!1,tweenRunning:!1,sequential:{},langDir:o.css(\"direction\"),cbOffsets:null,trigger:null,poll:{size:{o:0,n:0},img:{o:0,n:0},change:{o:0,n:0}}});var n=o.data(a),i=n.opt,l=o.data(\"mcs-axis\"),s=o.data(\"mcs-scrollbar-position\"),c=o.data(\"mcs-theme\");l&&(i.axis=l),s&&(i.scrollbarPosition=s),c&&(i.theme=c,h(i)),v.call(this),n&&i.callbacks.onCreate&&\"function\"==typeof i.callbacks.onCreate&&i.callbacks.onCreate.call(this),e(\"#mCSB_\"+n.idx+\"_container img:not(.\"+d[2]+\")\").addClass(d[2]),u.update.call(null,o)}})},update:function(t,o){var n=t||f.call(this);return e(n).each(function(){var t=e(this);if(t.data(a)){var n=t.data(a),i=n.opt,r=e(\"#mCSB_\"+n.idx+\"_container\"),l=e(\"#mCSB_\"+n.idx),s=[e(\"#mCSB_\"+n.idx+\"_dragger_vertical\"),e(\"#mCSB_\"+n.idx+\"_dragger_horizontal\")];if(!r.length)return;n.tweenRunning&&Q(t),o&&n&&i.callbacks.onBeforeUpdate&&\"function\"==typeof i.callbacks.onBeforeUpdate&&i.callbacks.onBeforeUpdate.call(this),t.hasClass(d[3])&&t.removeClass(d[3]),t.hasClass(d[4])&&t.removeClass(d[4]),l.css(\"max-height\",\"none\"),l.height()!==t.height()&&l.css(\"max-height\",t.height()),_.call(this),\"y\"===i.axis||i.advanced.autoExpandHorizontalScroll||r.css(\"width\",x(r)),n.overflowed=y.call(this),M.call(this),i.autoDraggerLength&&S.call(this),b.call(this),T.call(this);var c=[Math.abs(r[0].offsetTop),Math.abs(r[0].offsetLeft)];\"x\"!==i.axis&&(n.overflowed[0]?s[0].height()>s[0].parent().height()?B.call(this):(G(t,c[0].toString(),{dir:\"y\",dur:0,overwrite:\"none\"}),n.contentReset.y=null):(B.call(this),\"y\"===i.axis?k.call(this):\"yx\"===i.axis&&n.overflowed[1]&&G(t,c[1].toString(),{dir:\"x\",dur:0,overwrite:\"none\"}))),\"y\"!==i.axis&&(n.overflowed[1]?s[1].width()>s[1].parent().width()?B.call(this):(G(t,c[1].toString(),{dir:\"x\",dur:0,overwrite:\"none\"}),n.contentReset.x=null):(B.call(this),\"x\"===i.axis?k.call(this):\"yx\"===i.axis&&n.overflowed[0]&&G(t,c[0].toString(),{dir:\"y\",dur:0,overwrite:\"none\"}))),o&&n&&(2===o&&i.callbacks.onImageLoad&&\"function\"==typeof i.callbacks.onImageLoad?i.callbacks.onImageLoad.call(this):3===o&&i.callbacks.onSelectorChange&&\"function\"==typeof i.callbacks.onSelectorChange?i.callbacks.onSelectorChange.call(this):i.callbacks.onUpdate&&\"function\"==typeof i.callbacks.onUpdate&&i.callbacks.onUpdate.call(this)),N.call(this)}})},scrollTo:function(t,o){if(\"undefined\"!=typeof t&&null!=t){var n=f.call(this);return e(n).each(function(){var n=e(this);if(n.data(a)){var i=n.data(a),r=i.opt,l={trigger:\"external\",scrollInertia:r.scrollInertia,scrollEasing:\"mcsEaseInOut\",moveDragger:!1,timeout:60,callbacks:!0,onStart:!0,onUpdate:!0,onComplete:!0},s=e.extend(!0,{},l,o),c=Y.call(this,t),d=s.scrollInertia>0&&s.scrollInertia<17?17:s.scrollInertia;c[0]=X.call(this,c[0],\"y\"),c[1]=X.call(this,c[1],\"x\"),s.moveDragger&&(c[0]*=i.scrollRatio.y,c[1]*=i.scrollRatio.x),s.dur=ne()?0:d,setTimeout(function(){null!==c[0]&&\"undefined\"!=typeof c[0]&&\"x\"!==r.axis&&i.overflowed[0]&&(s.dir=\"y\",s.overwrite=\"all\",G(n,c[0].toString(),s)),null!==c[1]&&\"undefined\"!=typeof c[1]&&\"y\"!==r.axis&&i.overflowed[1]&&(s.dir=\"x\",s.overwrite=\"none\",G(n,c[1].toString(),s))},s.timeout)}})}},stop:function(){var t=f.call(this);return e(t).each(function(){var t=e(this);t.data(a)&&Q(t)})},disable:function(t){var o=f.call(this);return e(o).each(function(){var o=e(this);if(o.data(a)){o.data(a);N.call(this,\"remove\"),k.call(this),t&&B.call(this),M.call(this,!0),o.addClass(d[3])}})},destroy:function(){var t=f.call(this);return e(t).each(function(){var n=e(this);if(n.data(a)){var i=n.data(a),r=i.opt,l=e(\"#mCSB_\"+i.idx),s=e(\"#mCSB_\"+i.idx+\"_container\"),c=e(\".mCSB_\"+i.idx+\"_scrollbar\");r.live&&m(r.liveSelector||e(t).selector),N.call(this,\"remove\"),k.call(this),B.call(this),n.removeData(a),$(this,\"mcs\"),c.remove(),s.find(\"img.\"+d[2]).removeClass(d[2]),l.replaceWith(s.contents()),n.removeClass(o+\" _\"+a+\"_\"+i.idx+\" \"+d[6]+\" \"+d[7]+\" \"+d[5]+\" \"+d[3]).addClass(d[4])}})}},f=function(){return\"object\"!=typeof e(this)||e(this).length<1?n:this},h=function(t){var o=[\"rounded\",\"rounded-dark\",\"rounded-dots\",\"rounded-dots-dark\"],a=[\"rounded-dots\",\"rounded-dots-dark\",\"3d\",\"3d-dark\",\"3d-thick\",\"3d-thick-dark\",\"inset\",\"inset-dark\",\"inset-2\",\"inset-2-dark\",\"inset-3\",\"inset-3-dark\"],n=[\"minimal\",\"minimal-dark\"],i=[\"minimal\",\"minimal-dark\"],r=[\"minimal\",\"minimal-dark\"];t.autoDraggerLength=e.inArray(t.theme,o)>-1?!1:t.autoDraggerLength,t.autoExpandScrollbar=e.inArray(t.theme,a)>-1?!1:t.autoExpandScrollbar,t.scrollButtons.enable=e.inArray(t.theme,n)>-1?!1:t.scrollButtons.enable,t.autoHideScrollbar=e.inArray(t.theme,i)>-1?!0:t.autoHideScrollbar,t.scrollbarPosition=e.inArray(t.theme,r)>-1?\"outside\":t.scrollbarPosition},m=function(e){l[e]&&(clearTimeout(l[e]),$(l,e))},p=function(e){return\"yx\"===e||\"xy\"===e||\"auto\"===e?\"yx\":\"x\"===e||\"horizontal\"===e?\"x\":\"y\"},g=function(e){return\"stepped\"===e||\"pixels\"===e||\"step\"===e||\"click\"===e?\"stepped\":\"stepless\"},v=function(){var t=e(this),n=t.data(a),i=n.opt,r=i.autoExpandScrollbar?\" \"+d[1]+\"_expand\":\"\",l=[\"\",\"\"],s=\"yx\"===i.axis?\"mCSB_vertical_horizontal\":\"x\"===i.axis?\"mCSB_horizontal\":\"mCSB_vertical\",c=\"yx\"===i.axis?l[0]+l[1]:\"x\"===i.axis?l[1]:l[0],u=\"yx\"===i.axis?\"\":\"\",f=i.autoHideScrollbar?\" \"+d[6]:\"\",h=\"x\"!==i.axis&&\"rtl\"===n.langDir?\" \"+d[7]:\"\";i.setWidth&&t.css(\"width\",i.setWidth),i.setHeight&&t.css(\"height\",i.setHeight),i.setLeft=\"y\"!==i.axis&&\"rtl\"===n.langDir?\"989999px\":i.setLeft,t.addClass(o+\" _\"+a+\"_\"+n.idx+f+h).wrapInner(\"\");var m=e(\"#mCSB_\"+n.idx),p=e(\"#mCSB_\"+n.idx+\"_container\");\"y\"===i.axis||i.advanced.autoExpandHorizontalScroll||p.css(\"width\",x(p)),\"outside\"===i.scrollbarPosition?(\"static\"===t.css(\"position\")&&t.css(\"position\",\"relative\"),t.css(\"overflow\",\"visible\"),m.addClass(\"mCSB_outside\").after(c)):(m.addClass(\"mCSB_inside\").append(c),p.wrap(u)),w.call(this);var g=[e(\"#mCSB_\"+n.idx+\"_dragger_vertical\"),e(\"#mCSB_\"+n.idx+\"_dragger_horizontal\")];g[0].css(\"min-height\",g[0].height()),g[1].css(\"min-width\",g[1].width())},x=function(t){var o=[t[0].scrollWidth,Math.max.apply(Math,t.children().map(function(){return e(this).outerWidth(!0)}).get())],a=t.parent().width();return o[0]>a?o[0]:o[1]>a?o[1]:\"100%\"},_=function(){var t=e(this),o=t.data(a),n=o.opt,i=e(\"#mCSB_\"+o.idx+\"_container\");if(n.advanced.autoExpandHorizontalScroll&&\"y\"!==n.axis){i.css({width:\"auto\",\"min-width\":0,\"overflow-x\":\"scroll\"});var r=Math.ceil(i[0].scrollWidth);3===n.advanced.autoExpandHorizontalScroll||2!==n.advanced.autoExpandHorizontalScroll&&r>i.parent().width()?i.css({width:r,\"min-width\":\"100%\",\"overflow-x\":\"inherit\"}):i.css({\"overflow-x\":\"inherit\",position:\"absolute\"}).wrap(\"\").css({width:Math.ceil(i[0].getBoundingClientRect().right+.4)-Math.floor(i[0].getBoundingClientRect().left),\"min-width\":\"100%\",position:\"relative\"}).unwrap()}},w=function(){var t=e(this),o=t.data(a),n=o.opt,i=e(\".mCSB_\"+o.idx+\"_scrollbar:first\"),r=oe(n.scrollButtons.tabindex)?\"tabindex='\"+n.scrollButtons.tabindex+\"'\":\"\",l=[\"\",\"\",\"\",\"\"],s=[\"x\"===n.axis?l[2]:l[0],\"x\"===n.axis?l[3]:l[1],l[2],l[3]];n.scrollButtons.enable&&i.prepend(s[0]).append(s[1]).next(\".mCSB_scrollTools\").prepend(s[2]).append(s[3])},S=function(){var t=e(this),o=t.data(a),n=e(\"#mCSB_\"+o.idx),i=e(\"#mCSB_\"+o.idx+\"_container\"),r=[e(\"#mCSB_\"+o.idx+\"_dragger_vertical\"),e(\"#mCSB_\"+o.idx+\"_dragger_horizontal\")],l=[n.height()/i.outerHeight(!1),n.width()/i.outerWidth(!1)],c=[parseInt(r[0].css(\"min-height\")),Math.round(l[0]*r[0].parent().height()),parseInt(r[1].css(\"min-width\")),Math.round(l[1]*r[1].parent().width())],d=s&&c[1]r&&(r=s),c>l&&(l=c),[r>n.height(),l>n.width()]},B=function(){var t=e(this),o=t.data(a),n=o.opt,i=e(\"#mCSB_\"+o.idx),r=e(\"#mCSB_\"+o.idx+\"_container\"),l=[e(\"#mCSB_\"+o.idx+\"_dragger_vertical\"),e(\"#mCSB_\"+o.idx+\"_dragger_horizontal\")];if(Q(t),(\"x\"!==n.axis&&!o.overflowed[0]||\"y\"===n.axis&&o.overflowed[0])&&(l[0].add(r).css(\"top\",0),G(t,\"_resetY\")),\"y\"!==n.axis&&!o.overflowed[1]||\"x\"===n.axis&&o.overflowed[1]){var s=dx=0;\"rtl\"===o.langDir&&(s=i.width()-r.outerWidth(!1),dx=Math.abs(s/o.scrollRatio.x)),r.css(\"left\",s),l[1].css(\"left\",dx),G(t,\"_resetX\")}},T=function(){function t(){r=setTimeout(function(){e.event.special.mousewheel?(clearTimeout(r),W.call(o[0])):t()},100)}var o=e(this),n=o.data(a),i=n.opt;if(!n.bindEvents){if(I.call(this),i.contentTouchScroll&&D.call(this),E.call(this),i.mouseWheel.enable){var r;t()}P.call(this),U.call(this),i.advanced.autoScrollOnFocus&&H.call(this),i.scrollButtons.enable&&F.call(this),i.keyboard.enable&&q.call(this),n.bindEvents=!0}},k=function(){var t=e(this),o=t.data(a),n=o.opt,i=a+\"_\"+o.idx,r=\".mCSB_\"+o.idx+\"_scrollbar\",l=e(\"#mCSB_\"+o.idx+\",#mCSB_\"+o.idx+\"_container,#mCSB_\"+o.idx+\"_container_wrapper,\"+r+\" .\"+d[12]+\",#mCSB_\"+o.idx+\"_dragger_vertical,#mCSB_\"+o.idx+\"_dragger_horizontal,\"+r+\">a\"),s=e(\"#mCSB_\"+o.idx+\"_container\");n.advanced.releaseDraggableSelectors&&l.add(e(n.advanced.releaseDraggableSelectors)),n.advanced.extraDraggableSelectors&&l.add(e(n.advanced.extraDraggableSelectors)),o.bindEvents&&(e(document).add(e(!A()||top.document)).unbind(\".\"+i),l.each(function(){e(this).unbind(\".\"+i)}),clearTimeout(t[0]._focusTimeout),$(t[0],\"_focusTimeout\"),clearTimeout(o.sequential.step),$(o.sequential,\"step\"),clearTimeout(s[0].onCompleteTimeout),$(s[0],\"onCompleteTimeout\"),o.bindEvents=!1)},M=function(t){var o=e(this),n=o.data(a),i=n.opt,r=e(\"#mCSB_\"+n.idx+\"_container_wrapper\"),l=r.length?r:e(\"#mCSB_\"+n.idx+\"_container\"),s=[e(\"#mCSB_\"+n.idx+\"_scrollbar_vertical\"),e(\"#mCSB_\"+n.idx+\"_scrollbar_horizontal\")],c=[s[0].find(\".mCSB_dragger\"),s[1].find(\".mCSB_dragger\")];\"x\"!==i.axis&&(n.overflowed[0]&&!t?(s[0].add(c[0]).add(s[0].children(\"a\")).css(\"display\",\"block\"),l.removeClass(d[8]+\" \"+d[10])):(i.alwaysShowScrollbar?(2!==i.alwaysShowScrollbar&&c[0].css(\"display\",\"none\"),l.removeClass(d[10])):(s[0].css(\"display\",\"none\"),l.addClass(d[10])),l.addClass(d[8]))),\"y\"!==i.axis&&(n.overflowed[1]&&!t?(s[1].add(c[1]).add(s[1].children(\"a\")).css(\"display\",\"block\"),l.removeClass(d[9]+\" \"+d[11])):(i.alwaysShowScrollbar?(2!==i.alwaysShowScrollbar&&c[1].css(\"display\",\"none\"),l.removeClass(d[11])):(s[1].css(\"display\",\"none\"),l.addClass(d[11])),l.addClass(d[9]))),n.overflowed[0]||n.overflowed[1]?o.removeClass(d[5]):o.addClass(d[5])},O=function(t){var o=t.type,a=t.target.ownerDocument!==document&&null!==frameElement?[e(frameElement).offset().top,e(frameElement).offset().left]:null,n=A()&&t.target.ownerDocument!==top.document&&null!==frameElement?[e(t.view.frameElement).offset().top,e(t.view.frameElement).offset().left]:[0,0];switch(o){case\"pointerdown\":case\"MSPointerDown\":case\"pointermove\":case\"MSPointerMove\":case\"pointerup\":case\"MSPointerUp\":return a?[t.originalEvent.pageY-a[0]+n[0],t.originalEvent.pageX-a[1]+n[1],!1]:[t.originalEvent.pageY,t.originalEvent.pageX,!1];case\"touchstart\":case\"touchmove\":case\"touchend\":var i=t.originalEvent.touches[0]||t.originalEvent.changedTouches[0],r=t.originalEvent.touches.length||t.originalEvent.changedTouches.length;return t.target.ownerDocument!==document?[i.screenY,i.screenX,r>1]:[i.pageY,i.pageX,r>1];default:return a?[t.pageY-a[0]+n[0],t.pageX-a[1]+n[1],!1]:[t.pageY,t.pageX,!1]}},I=function(){function t(e,t,a,n){if(h[0].idleTimer=d.scrollInertia<233?250:0,o.attr(\"id\")===f[1])var i=\"x\",s=(o[0].offsetLeft-t+n)*l.scrollRatio.x;else var i=\"y\",s=(o[0].offsetTop-e+a)*l.scrollRatio.y;G(r,s.toString(),{dir:i,drag:!0})}var o,n,i,r=e(this),l=r.data(a),d=l.opt,u=a+\"_\"+l.idx,f=[\"mCSB_\"+l.idx+\"_dragger_vertical\",\"mCSB_\"+l.idx+\"_dragger_horizontal\"],h=e(\"#mCSB_\"+l.idx+\"_container\"),m=e(\"#\"+f[0]+\",#\"+f[1]),p=d.advanced.releaseDraggableSelectors?m.add(e(d.advanced.releaseDraggableSelectors)):m,g=d.advanced.extraDraggableSelectors?e(!A()||top.document).add(e(d.advanced.extraDraggableSelectors)):e(!A()||top.document);m.bind(\"contextmenu.\"+u,function(e){e.preventDefault()}).bind(\"mousedown.\"+u+\" touchstart.\"+u+\" pointerdown.\"+u+\" MSPointerDown.\"+u,function(t){if(t.stopImmediatePropagation(),t.preventDefault(),ee(t)){c=!0,s&&(document.onselectstart=function(){return!1}),L.call(h,!1),Q(r),o=e(this);var a=o.offset(),l=O(t)[0]-a.top,u=O(t)[1]-a.left,f=o.height()+a.top,m=o.width()+a.left;f>l&&l>0&&m>u&&u>0&&(n=l,i=u),C(o,\"active\",d.autoExpandScrollbar)}}).bind(\"touchmove.\"+u,function(e){e.stopImmediatePropagation(),e.preventDefault();var a=o.offset(),r=O(e)[0]-a.top,l=O(e)[1]-a.left;t(n,i,r,l)}),e(document).add(g).bind(\"mousemove.\"+u+\" pointermove.\"+u+\" MSPointerMove.\"+u,function(e){if(o){var a=o.offset(),r=O(e)[0]-a.top,l=O(e)[1]-a.left;if(n===r&&i===l)return;t(n,i,r,l)}}).add(p).bind(\"mouseup.\"+u+\" touchend.\"+u+\" pointerup.\"+u+\" MSPointerUp.\"+u,function(){o&&(C(o,\"active\",d.autoExpandScrollbar),o=null),c=!1,s&&(document.onselectstart=null),L.call(h,!0)})},D=function(){function o(e){if(!te(e)||c||O(e)[2])return void(t=0);t=1,b=0,C=0,d=1,y.removeClass(\"mCS_touch_action\");var o=I.offset();u=O(e)[0]-o.top,f=O(e)[1]-o.left,z=[O(e)[0],O(e)[1]]}function n(e){if(te(e)&&!c&&!O(e)[2]&&(T.documentTouchScroll||e.preventDefault(),e.stopImmediatePropagation(),(!C||b)&&d)){g=K();var t=M.offset(),o=O(e)[0]-t.top,a=O(e)[1]-t.left,n=\"mcsLinearOut\";if(E.push(o),W.push(a),z[2]=Math.abs(O(e)[0]-z[0]),z[3]=Math.abs(O(e)[1]-z[1]),B.overflowed[0])var i=D[0].parent().height()-D[0].height(),r=u-o>0&&o-u>-(i*B.scrollRatio.y)&&(2*z[3]0&&a-f>-(l*B.scrollRatio.x)&&(2*z[2]30)){_=1e3/(v-p);var n=\"mcsEaseOut\",i=2.5>_,r=i?[E[E.length-2],W[W.length-2]]:[0,0];x=i?[o-r[0],a-r[1]]:[o-h,a-m];var u=[Math.abs(x[0]),Math.abs(x[1])];_=i?[Math.abs(x[0]/4),Math.abs(x[1]/4)]:[_,_];var f=[Math.abs(I[0].offsetTop)-x[0]*l(u[0]/_[0],_[0]),Math.abs(I[0].offsetLeft)-x[1]*l(u[1]/_[1],_[1])];w=\"yx\"===T.axis?[f[0],f[1]]:\"x\"===T.axis?[null,f[1]]:[f[0],null],S=[4*u[0]+T.scrollInertia,4*u[1]+T.scrollInertia];var y=parseInt(T.contentTouchScroll)||0;w[0]=u[0]>y?w[0]:0,w[1]=u[1]>y?w[1]:0,B.overflowed[0]&&s(w[0],S[0],n,\"y\",L,!1),B.overflowed[1]&&s(w[1],S[1],n,\"x\",L,!1)}}}function l(e,t){var o=[1.5*t,2*t,t/1.5,t/2];return e>90?t>4?o[0]:o[3]:e>60?t>3?o[3]:o[2]:e>30?t>8?o[1]:t>6?o[0]:t>4?t:o[2]:t>8?t:o[3]}function s(e,t,o,a,n,i){e&&G(y,e.toString(),{dur:t,scrollEasing:o,dir:a,overwrite:n,drag:i})}var d,u,f,h,m,p,g,v,x,_,w,S,b,C,y=e(this),B=y.data(a),T=B.opt,k=a+\"_\"+B.idx,M=e(\"#mCSB_\"+B.idx),I=e(\"#mCSB_\"+B.idx+\"_container\"),D=[e(\"#mCSB_\"+B.idx+\"_dragger_vertical\"),e(\"#mCSB_\"+B.idx+\"_dragger_horizontal\")],E=[],W=[],R=0,L=\"yx\"===T.axis?\"none\":\"all\",z=[],P=I.find(\"iframe\"),H=[\"touchstart.\"+k+\" pointerdown.\"+k+\" MSPointerDown.\"+k,\"touchmove.\"+k+\" pointermove.\"+k+\" MSPointerMove.\"+k,\"touchend.\"+k+\" pointerup.\"+k+\" MSPointerUp.\"+k],U=void 0!==document.body.style.touchAction&&\"\"!==document.body.style.touchAction;I.bind(H[0],function(e){o(e)}).bind(H[1],function(e){n(e)}),M.bind(H[0],function(e){i(e)}).bind(H[2],function(e){r(e)}),P.length&&P.each(function(){e(this).bind(\"load\",function(){A(this)&&e(this.contentDocument||this.contentWindow.document).bind(H[0],function(e){o(e),i(e)}).bind(H[1],function(e){n(e)}).bind(H[2],function(e){r(e)})})})},E=function(){function o(){return window.getSelection?window.getSelection().toString():document.selection&&\"Control\"!=document.selection.type?document.selection.createRange().text:0}function n(e,t,o){d.type=o&&i?\"stepped\":\"stepless\",d.scrollAmount=10,j(r,e,t,\"mcsLinearOut\",o?60:null)}var i,r=e(this),l=r.data(a),s=l.opt,d=l.sequential,u=a+\"_\"+l.idx,f=e(\"#mCSB_\"+l.idx+\"_container\"),h=f.parent();f.bind(\"mousedown.\"+u,function(){t||i||(i=1,c=!0)}).add(document).bind(\"mousemove.\"+u,function(e){if(!t&&i&&o()){var a=f.offset(),r=O(e)[0]-a.top+f[0].offsetTop,c=O(e)[1]-a.left+f[0].offsetLeft;r>0&&r0&&cr?n(\"on\",38):r>h.height()&&n(\"on\",40)),\"y\"!==s.axis&&l.overflowed[1]&&(0>c?n(\"on\",37):c>h.width()&&n(\"on\",39)))}}).bind(\"mouseup.\"+u+\" dragend.\"+u,function(){t||(i&&(i=0,n(\"off\",null)),c=!1)})},W=function(){function t(t,a){if(Q(o),!z(o,t.target)){var r=\"auto\"!==i.mouseWheel.deltaFactor?parseInt(i.mouseWheel.deltaFactor):s&&t.deltaFactor<100?100:t.deltaFactor||100,d=i.scrollInertia;if(\"x\"===i.axis||\"x\"===i.mouseWheel.axis)var u=\"x\",f=[Math.round(r*n.scrollRatio.x),parseInt(i.mouseWheel.scrollAmount)],h=\"auto\"!==i.mouseWheel.scrollAmount?f[1]:f[0]>=l.width()?.9*l.width():f[0],m=Math.abs(e(\"#mCSB_\"+n.idx+\"_container\")[0].offsetLeft),p=c[1][0].offsetLeft,g=c[1].parent().width()-c[1].width(),v=\"y\"===i.mouseWheel.axis?t.deltaY||a:t.deltaX;else var u=\"y\",f=[Math.round(r*n.scrollRatio.y),parseInt(i.mouseWheel.scrollAmount)],h=\"auto\"!==i.mouseWheel.scrollAmount?f[1]:f[0]>=l.height()?.9*l.height():f[0],m=Math.abs(e(\"#mCSB_\"+n.idx+\"_container\")[0].offsetTop),p=c[0][0].offsetTop,g=c[0].parent().height()-c[0].height(),v=t.deltaY||a;\"y\"===u&&!n.overflowed[0]||\"x\"===u&&!n.overflowed[1]||((i.mouseWheel.invert||t.webkitDirectionInvertedFromDevice)&&(v=-v),i.mouseWheel.normalizeDelta&&(v=0>v?-1:1),(v>0&&0!==p||0>v&&p!==g||i.mouseWheel.preventDefault)&&(t.stopImmediatePropagation(),t.preventDefault()),t.deltaFactor<5&&!i.mouseWheel.normalizeDelta&&(h=t.deltaFactor,d=17),G(o,(m-v*h).toString(),{dir:u,dur:d}))}}if(e(this).data(a)){var o=e(this),n=o.data(a),i=n.opt,r=a+\"_\"+n.idx,l=e(\"#mCSB_\"+n.idx),c=[e(\"#mCSB_\"+n.idx+\"_dragger_vertical\"),e(\"#mCSB_\"+n.idx+\"_dragger_horizontal\")],d=e(\"#mCSB_\"+n.idx+\"_container\").find(\"iframe\");d.length&&d.each(function(){e(this).bind(\"load\",function(){A(this)&&e(this.contentDocument||this.contentWindow.document).bind(\"mousewheel.\"+r,function(e,o){t(e,o)})})}),l.bind(\"mousewheel.\"+r,function(e,o){t(e,o)})}},R=new Object,A=function(t){var o=!1,a=!1,n=null;if(void 0===t?a=\"#empty\":void 0!==e(t).attr(\"id\")&&(a=e(t).attr(\"id\")),a!==!1&&void 0!==R[a])return R[a];if(t){try{var i=t.contentDocument||t.contentWindow.document;n=i.body.innerHTML}catch(r){}o=null!==n}else{try{var i=top.document;n=i.body.innerHTML}catch(r){}o=null!==n}return a!==!1&&(R[a]=o),o},L=function(e){var t=this.find(\"iframe\");if(t.length){var o=e?\"auto\":\"none\";t.css(\"pointer-events\",o)}},z=function(t,o){var n=o.nodeName.toLowerCase(),i=t.data(a).opt.mouseWheel.disableOver,r=[\"select\",\"textarea\"];return e.inArray(n,i)>-1&&!(e.inArray(n,r)>-1&&!e(o).is(\":focus\"))},P=function(){var t,o=e(this),n=o.data(a),i=a+\"_\"+n.idx,r=e(\"#mCSB_\"+n.idx+\"_container\"),l=r.parent(),s=e(\".mCSB_\"+n.idx+\"_scrollbar .\"+d[12]);s.bind(\"mousedown.\"+i+\" touchstart.\"+i+\" pointerdown.\"+i+\" MSPointerDown.\"+i,function(o){c=!0,e(o.target).hasClass(\"mCSB_dragger\")||(t=1)}).bind(\"touchend.\"+i+\" pointerup.\"+i+\" MSPointerUp.\"+i,function(){c=!1}).bind(\"click.\"+i,function(a){if(t&&(t=0,e(a.target).hasClass(d[12])||e(a.target).hasClass(\"mCSB_draggerRail\"))){Q(o);var i=e(this),s=i.find(\".mCSB_dragger\");if(i.parent(\".mCSB_scrollTools_horizontal\").length>0){if(!n.overflowed[1])return;var c=\"x\",u=a.pageX>s.offset().left?-1:1,f=Math.abs(r[0].offsetLeft)-u*(.9*l.width())}else{if(!n.overflowed[0])return;var c=\"y\",u=a.pageY>s.offset().top?-1:1,f=Math.abs(r[0].offsetTop)-u*(.9*l.height())}G(o,f.toString(),{dir:c,scrollEasing:\"mcsEaseInOut\"})}})},H=function(){var t=e(this),o=t.data(a),n=o.opt,i=a+\"_\"+o.idx,r=e(\"#mCSB_\"+o.idx+\"_container\"),l=r.parent();r.bind(\"focusin.\"+i,function(){var o=e(document.activeElement),a=r.find(\".mCustomScrollBox\").length,i=0;o.is(n.advanced.autoScrollOnFocus)&&(Q(t),clearTimeout(t[0]._focusTimeout),t[0]._focusTimer=a?(i+17)*a:0,t[0]._focusTimeout=setTimeout(function(){var e=[ae(o)[0],ae(o)[1]],a=[r[0].offsetTop,r[0].offsetLeft],s=[a[0]+e[0]>=0&&a[0]+e[0]=0&&a[0]+e[1]a\");s.bind(\"contextmenu.\"+r,function(e){e.preventDefault()}).bind(\"mousedown.\"+r+\" touchstart.\"+r+\" pointerdown.\"+r+\" MSPointerDown.\"+r+\" mouseup.\"+r+\" touchend.\"+r+\" pointerup.\"+r+\" MSPointerUp.\"+r+\" mouseout.\"+r+\" pointerout.\"+r+\" MSPointerOut.\"+r+\" click.\"+r,function(a){function r(e,o){i.scrollAmount=n.scrollButtons.scrollAmount,j(t,e,o)}if(a.preventDefault(),ee(a)){var l=e(this).attr(\"class\");switch(i.type=n.scrollButtons.scrollType,a.type){case\"mousedown\":case\"touchstart\":case\"pointerdown\":case\"MSPointerDown\":if(\"stepped\"===i.type)return;c=!0,o.tweenRunning=!1,r(\"on\",l);break;case\"mouseup\":case\"touchend\":case\"pointerup\":case\"MSPointerUp\":case\"mouseout\":case\"pointerout\":case\"MSPointerOut\":if(\"stepped\"===i.type)return;c=!1,i.dir&&r(\"off\",l);break;case\"click\":if(\"stepped\"!==i.type||o.tweenRunning)return;r(\"on\",l)}}})},q=function(){function t(t){function a(e,t){r.type=i.keyboard.scrollType,r.scrollAmount=i.keyboard.scrollAmount,\"stepped\"===r.type&&n.tweenRunning||j(o,e,t)}switch(t.type){case\"blur\":n.tweenRunning&&r.dir&&a(\"off\",null);break;case\"keydown\":case\"keyup\":var l=t.keyCode?t.keyCode:t.which,s=\"on\";if(\"x\"!==i.axis&&(38===l||40===l)||\"y\"!==i.axis&&(37===l||39===l)){if((38===l||40===l)&&!n.overflowed[0]||(37===l||39===l)&&!n.overflowed[1])return;\"keyup\"===t.type&&(s=\"off\"),e(document.activeElement).is(u)||(t.preventDefault(),t.stopImmediatePropagation(),a(s,l))}else if(33===l||34===l){if((n.overflowed[0]||n.overflowed[1])&&(t.preventDefault(),t.stopImmediatePropagation()),\"keyup\"===t.type){Q(o);var f=34===l?-1:1;if(\"x\"===i.axis||\"yx\"===i.axis&&n.overflowed[1]&&!n.overflowed[0])var h=\"x\",m=Math.abs(c[0].offsetLeft)-f*(.9*d.width());else var h=\"y\",m=Math.abs(c[0].offsetTop)-f*(.9*d.height());G(o,m.toString(),{dir:h,scrollEasing:\"mcsEaseInOut\"})}}else if((35===l||36===l)&&!e(document.activeElement).is(u)&&((n.overflowed[0]||n.overflowed[1])&&(t.preventDefault(),t.stopImmediatePropagation()),\"keyup\"===t.type)){if(\"x\"===i.axis||\"yx\"===i.axis&&n.overflowed[1]&&!n.overflowed[0])var h=\"x\",m=35===l?Math.abs(d.width()-c.outerWidth(!1)):0;else var h=\"y\",m=35===l?Math.abs(d.height()-c.outerHeight(!1)):0;G(o,m.toString(),{dir:h,scrollEasing:\"mcsEaseInOut\"})}}}var o=e(this),n=o.data(a),i=n.opt,r=n.sequential,l=a+\"_\"+n.idx,s=e(\"#mCSB_\"+n.idx),c=e(\"#mCSB_\"+n.idx+\"_container\"),d=c.parent(),u=\"input,textarea,select,datalist,keygen,[contenteditable='true']\",f=c.find(\"iframe\"),h=[\"blur.\"+l+\" keydown.\"+l+\" keyup.\"+l];f.length&&f.each(function(){e(this).bind(\"load\",function(){A(this)&&e(this.contentDocument||this.contentWindow.document).bind(h[0],function(e){t(e)})})}),s.attr(\"tabindex\",\"0\").bind(h[0],function(e){t(e)})},j=function(t,o,n,i,r){function l(e){u.snapAmount&&(f.scrollAmount=u.snapAmount instanceof Array?\"x\"===f.dir[0]?u.snapAmount[1]:u.snapAmount[0]:u.snapAmount);var o=\"stepped\"!==f.type,a=r?r:e?o?p/1.5:g:1e3/60,n=e?o?7.5:40:2.5,s=[Math.abs(h[0].offsetTop),Math.abs(h[0].offsetLeft)],d=[c.scrollRatio.y>10?10:c.scrollRatio.y,c.scrollRatio.x>10?10:c.scrollRatio.x],m=\"x\"===f.dir[0]?s[1]+f.dir[1]*(d[1]*n):s[0]+f.dir[1]*(d[0]*n),v=\"x\"===f.dir[0]?s[1]+f.dir[1]*parseInt(f.scrollAmount):s[0]+f.dir[1]*parseInt(f.scrollAmount),x=\"auto\"!==f.scrollAmount?v:m,_=i?i:e?o?\"mcsLinearOut\":\"mcsEaseInOut\":\"mcsLinear\",w=!!e;return e&&17>a&&(x=\"x\"===f.dir[0]?s[1]:s[0]),G(t,x.toString(),{dir:f.dir[0],scrollEasing:_,dur:a,onComplete:w}),e?void(f.dir=!1):(clearTimeout(f.step),void(f.step=setTimeout(function(){l()},a)))}function s(){clearTimeout(f.step),$(f,\"step\"),Q(t)}var c=t.data(a),u=c.opt,f=c.sequential,h=e(\"#mCSB_\"+c.idx+\"_container\"),m=\"stepped\"===f.type,p=u.scrollInertia<26?26:u.scrollInertia,g=u.scrollInertia<1?17:u.scrollInertia;switch(o){case\"on\":if(f.dir=[n===d[16]||n===d[15]||39===n||37===n?\"x\":\"y\",n===d[13]||n===d[15]||38===n||37===n?-1:1],Q(t),oe(n)&&\"stepped\"===f.type)return;l(m);break;case\"off\":s(),(m||c.tweenRunning&&f.dir)&&l(!0)}},Y=function(t){var o=e(this).data(a).opt,n=[];return\"function\"==typeof t&&(t=t()),t instanceof Array?n=t.length>1?[t[0],t[1]]:\"x\"===o.axis?[null,t[0]]:[t[0],null]:(n[0]=t.y?t.y:t.x||\"x\"===o.axis?null:t,n[1]=t.x?t.x:t.y||\"y\"===o.axis?null:t),\"function\"==typeof n[0]&&(n[0]=n[0]()),\"function\"==typeof n[1]&&(n[1]=n[1]()),n},X=function(t,o){if(null!=t&&\"undefined\"!=typeof t){var n=e(this),i=n.data(a),r=i.opt,l=e(\"#mCSB_\"+i.idx+\"_container\"),s=l.parent(),c=typeof t;o||(o=\"x\"===r.axis?\"x\":\"y\");var d=\"x\"===o?l.outerWidth(!1)-s.width():l.outerHeight(!1)-s.height(),f=\"x\"===o?l[0].offsetLeft:l[0].offsetTop,h=\"x\"===o?\"left\":\"top\";switch(c){case\"function\":return t();case\"object\":var m=t.jquery?t:e(t);if(!m.length)return;return\"x\"===o?ae(m)[1]:ae(m)[0];case\"string\":case\"number\":if(oe(t))return Math.abs(t);if(-1!==t.indexOf(\"%\"))return Math.abs(d*parseInt(t)/100);if(-1!==t.indexOf(\"-=\"))return Math.abs(f-parseInt(t.split(\"-=\")[1]));if(-1!==t.indexOf(\"+=\")){var p=f+parseInt(t.split(\"+=\")[1]);return p>=0?0:Math.abs(p)}if(-1!==t.indexOf(\"px\")&&oe(t.split(\"px\")[0]))return Math.abs(t.split(\"px\")[0]);if(\"top\"===t||\"left\"===t)return 0;if(\"bottom\"===t)return Math.abs(s.height()-l.outerHeight(!1));if(\"right\"===t)return Math.abs(s.width()-l.outerWidth(!1));if(\"first\"===t||\"last\"===t){var m=l.find(\":\"+t);return\"x\"===o?ae(m)[1]:ae(m)[0]}return e(t).length?\"x\"===o?ae(e(t))[1]:ae(e(t))[0]:(l.css(h,t),void u.update.call(null,n[0]))}}},N=function(t){function o(){return clearTimeout(f[0].autoUpdate),0===l.parents(\"html\").length?void(l=null):void(f[0].autoUpdate=setTimeout(function(){return c.advanced.updateOnSelectorChange&&(s.poll.change.n=i(),s.poll.change.n!==s.poll.change.o)?(s.poll.change.o=s.poll.change.n,void r(3)):c.advanced.updateOnContentResize&&(s.poll.size.n=l[0].scrollHeight+l[0].scrollWidth+f[0].offsetHeight+l[0].offsetHeight+l[0].offsetWidth,s.poll.size.n!==s.poll.size.o)?(s.poll.size.o=s.poll.size.n,void r(1)):!c.advanced.updateOnImageLoad||\"auto\"===c.advanced.updateOnImageLoad&&\"y\"===c.axis||(s.poll.img.n=f.find(\"img\").length,s.poll.img.n===s.poll.img.o)?void((c.advanced.updateOnSelectorChange||c.advanced.updateOnContentResize||c.advanced.updateOnImageLoad)&&o()):(s.poll.img.o=s.poll.img.n,void f.find(\"img\").each(function(){n(this)}))},c.advanced.autoUpdateTimeout))}function n(t){function o(e,t){return function(){\nreturn t.apply(e,arguments)}}function a(){this.onload=null,e(t).addClass(d[2]),r(2)}if(e(t).hasClass(d[2]))return void r();var n=new Image;n.onload=o(n,a),n.src=t.src}function i(){c.advanced.updateOnSelectorChange===!0&&(c.advanced.updateOnSelectorChange=\"*\");var e=0,t=f.find(c.advanced.updateOnSelectorChange);return c.advanced.updateOnSelectorChange&&t.length>0&&t.each(function(){e+=this.offsetHeight+this.offsetWidth}),e}function r(e){clearTimeout(f[0].autoUpdate),u.update.call(null,l[0],e)}var l=e(this),s=l.data(a),c=s.opt,f=e(\"#mCSB_\"+s.idx+\"_container\");return t?(clearTimeout(f[0].autoUpdate),void $(f[0],\"autoUpdate\")):void o()},V=function(e,t,o){return Math.round(e/t)*t-o},Q=function(t){var o=t.data(a),n=e(\"#mCSB_\"+o.idx+\"_container,#mCSB_\"+o.idx+\"_container_wrapper,#mCSB_\"+o.idx+\"_dragger_vertical,#mCSB_\"+o.idx+\"_dragger_horizontal\");n.each(function(){Z.call(this)})},G=function(t,o,n){function i(e){return s&&c.callbacks[e]&&\"function\"==typeof c.callbacks[e]}function r(){return[c.callbacks.alwaysTriggerOffsets||w>=S[0]+y,c.callbacks.alwaysTriggerOffsets||-B>=w]}function l(){var e=[h[0].offsetTop,h[0].offsetLeft],o=[x[0].offsetTop,x[0].offsetLeft],a=[h.outerHeight(!1),h.outerWidth(!1)],i=[f.height(),f.width()];t[0].mcs={content:h,top:e[0],left:e[1],draggerTop:o[0],draggerLeft:o[1],topPct:Math.round(100*Math.abs(e[0])/(Math.abs(a[0])-i[0])),leftPct:Math.round(100*Math.abs(e[1])/(Math.abs(a[1])-i[1])),direction:n.dir}}var s=t.data(a),c=s.opt,d={trigger:\"internal\",dir:\"y\",scrollEasing:\"mcsEaseOut\",drag:!1,dur:c.scrollInertia,overwrite:\"all\",callbacks:!0,onStart:!0,onUpdate:!0,onComplete:!0},n=e.extend(d,n),u=[n.dur,n.drag?0:n.dur],f=e(\"#mCSB_\"+s.idx),h=e(\"#mCSB_\"+s.idx+\"_container\"),m=h.parent(),p=c.callbacks.onTotalScrollOffset?Y.call(t,c.callbacks.onTotalScrollOffset):[0,0],g=c.callbacks.onTotalScrollBackOffset?Y.call(t,c.callbacks.onTotalScrollBackOffset):[0,0];if(s.trigger=n.trigger,0===m.scrollTop()&&0===m.scrollLeft()||(e(\".mCSB_\"+s.idx+\"_scrollbar\").css(\"visibility\",\"visible\"),m.scrollTop(0).scrollLeft(0)),\"_resetY\"!==o||s.contentReset.y||(i(\"onOverflowYNone\")&&c.callbacks.onOverflowYNone.call(t[0]),s.contentReset.y=1),\"_resetX\"!==o||s.contentReset.x||(i(\"onOverflowXNone\")&&c.callbacks.onOverflowXNone.call(t[0]),s.contentReset.x=1),\"_resetY\"!==o&&\"_resetX\"!==o){if(!s.contentReset.y&&t[0].mcs||!s.overflowed[0]||(i(\"onOverflowY\")&&c.callbacks.onOverflowY.call(t[0]),s.contentReset.x=null),!s.contentReset.x&&t[0].mcs||!s.overflowed[1]||(i(\"onOverflowX\")&&c.callbacks.onOverflowX.call(t[0]),s.contentReset.x=null),c.snapAmount){var v=c.snapAmount instanceof Array?\"x\"===n.dir?c.snapAmount[1]:c.snapAmount[0]:c.snapAmount;o=V(o,v,c.snapOffset)}switch(n.dir){case\"x\":var x=e(\"#mCSB_\"+s.idx+\"_dragger_horizontal\"),_=\"left\",w=h[0].offsetLeft,S=[f.width()-h.outerWidth(!1),x.parent().width()-x.width()],b=[o,0===o?0:o/s.scrollRatio.x],y=p[1],B=g[1],T=y>0?y/s.scrollRatio.x:0,k=B>0?B/s.scrollRatio.x:0;break;case\"y\":var x=e(\"#mCSB_\"+s.idx+\"_dragger_vertical\"),_=\"top\",w=h[0].offsetTop,S=[f.height()-h.outerHeight(!1),x.parent().height()-x.height()],b=[o,0===o?0:o/s.scrollRatio.y],y=p[0],B=g[0],T=y>0?y/s.scrollRatio.y:0,k=B>0?B/s.scrollRatio.y:0}b[1]<0||0===b[0]&&0===b[1]?b=[0,0]:b[1]>=S[1]?b=[S[0],S[1]]:b[0]=-b[0],t[0].mcs||(l(),i(\"onInit\")&&c.callbacks.onInit.call(t[0])),clearTimeout(h[0].onCompleteTimeout),J(x[0],_,Math.round(b[1]),u[1],n.scrollEasing),!s.tweenRunning&&(0===w&&b[0]>=0||w===S[0]&&b[0]<=S[0])||J(h[0],_,Math.round(b[0]),u[0],n.scrollEasing,n.overwrite,{onStart:function(){n.callbacks&&n.onStart&&!s.tweenRunning&&(i(\"onScrollStart\")&&(l(),c.callbacks.onScrollStart.call(t[0])),s.tweenRunning=!0,C(x),s.cbOffsets=r())},onUpdate:function(){n.callbacks&&n.onUpdate&&i(\"whileScrolling\")&&(l(),c.callbacks.whileScrolling.call(t[0]))},onComplete:function(){if(n.callbacks&&n.onComplete){\"yx\"===c.axis&&clearTimeout(h[0].onCompleteTimeout);var e=h[0].idleTimer||0;h[0].onCompleteTimeout=setTimeout(function(){i(\"onScroll\")&&(l(),c.callbacks.onScroll.call(t[0])),i(\"onTotalScroll\")&&b[1]>=S[1]-T&&s.cbOffsets[0]&&(l(),c.callbacks.onTotalScroll.call(t[0])),i(\"onTotalScrollBack\")&&b[1]<=k&&s.cbOffsets[1]&&(l(),c.callbacks.onTotalScrollBack.call(t[0])),s.tweenRunning=!1,h[0].idleTimer=0,C(x,\"hide\")},e)}}})}},J=function(e,t,o,a,n,i,r){function l(){S.stop||(x||m.call(),x=K()-v,s(),x>=S.time&&(S.time=x>S.time?x+f-(x-S.time):x+f-1,S.time0?(S.currVal=u(S.time,_,b,a,n),w[t]=Math.round(S.currVal)+\"px\"):w[t]=o+\"px\",p.call()}function c(){f=1e3/60,S.time=x+f,h=window.requestAnimationFrame?window.requestAnimationFrame:function(e){return s(),setTimeout(e,.01)},S.id=h(l)}function d(){null!=S.id&&(window.requestAnimationFrame?window.cancelAnimationFrame(S.id):clearTimeout(S.id),S.id=null)}function u(e,t,o,a,n){switch(n){case\"linear\":case\"mcsLinear\":return o*e/a+t;case\"mcsLinearOut\":return e/=a,e--,o*Math.sqrt(1-e*e)+t;case\"easeInOutSmooth\":return e/=a/2,1>e?o/2*e*e+t:(e--,-o/2*(e*(e-2)-1)+t);case\"easeInOutStrong\":return e/=a/2,1>e?o/2*Math.pow(2,10*(e-1))+t:(e--,o/2*(-Math.pow(2,-10*e)+2)+t);case\"easeInOut\":case\"mcsEaseInOut\":return e/=a/2,1>e?o/2*e*e*e+t:(e-=2,o/2*(e*e*e+2)+t);case\"easeOutSmooth\":return e/=a,e--,-o*(e*e*e*e-1)+t;case\"easeOutStrong\":return o*(-Math.pow(2,-10*e/a)+1)+t;case\"easeOut\":case\"mcsEaseOut\":default:var i=(e/=a)*e,r=i*e;return t+o*(.499999999999997*r*i+-2.5*i*i+5.5*r+-6.5*i+4*e)}}e._mTween||(e._mTween={top:{},left:{}});var f,h,r=r||{},m=r.onStart||function(){},p=r.onUpdate||function(){},g=r.onComplete||function(){},v=K(),x=0,_=e.offsetTop,w=e.style,S=e._mTween[t];\"left\"===t&&(_=e.offsetLeft);var b=o-_;S.stop=0,\"none\"!==i&&d(),c()},K=function(){return window.performance&&window.performance.now?window.performance.now():window.performance&&window.performance.webkitNow?window.performance.webkitNow():Date.now?Date.now():(new Date).getTime()},Z=function(){var e=this;e._mTween||(e._mTween={top:{},left:{}});for(var t=[\"top\",\"left\"],o=0;o=0&&a[0]+ae(n)[0]=0&&a[1]+ae(n)[1]=0&&r[1]-i[1]*l[1][0]<0&&r[1]+n[1]-i[1]*l[1][1]>=0},mcsOverflow:e.expr[\":\"].mcsOverflow||function(t){var o=e(t).data(a);if(o)return o.overflowed[0]||o.overflowed[1]}})})})});","/*!\r\n * fullPage 3.0.4\r\n * https://github.com/alvarotrigo/fullPage.js\r\n *\r\n * @license GPLv3 for open source use only\r\n * or Fullpage Commercial License for commercial use\r\n * http://alvarotrigo.com/fullPage/pricing/\r\n *\r\n * Copyright (C) 2018 http://alvarotrigo.com/fullPage - A project by Alvaro Trigo\r\n */\r\n(function( root, window, document, factory, undefined) {\r\n if( typeof define === 'function' && define.amd ) {\r\n // AMD. Register as an anonymous module.\r\n define( function() {\r\n root.fullpage = factory(window, document);\r\n return root.fullpage;\r\n } );\r\n } else if( typeof exports === 'object' ) {\r\n // Node. Does not work with strict CommonJS.\r\n module.exports = factory(window, document);\r\n } else {\r\n // Browser globals.\r\n window.fullpage = factory(window, document);\r\n }\r\n}(this, window, document, function(window, document){\r\n 'use strict';\r\n\r\n // keeping central set of classnames and selectors\r\n var WRAPPER = 'fullpage-wrapper';\r\n var WRAPPER_SEL = '.' + WRAPPER;\r\n\r\n // slimscroll\r\n var SCROLLABLE = 'fp-scrollable';\r\n var SCROLLABLE_SEL = '.' + SCROLLABLE;\r\n\r\n // util\r\n var RESPONSIVE = 'fp-responsive';\r\n var NO_TRANSITION = 'fp-notransition';\r\n var DESTROYED = 'fp-destroyed';\r\n var ENABLED = 'fp-enabled';\r\n var VIEWING_PREFIX = 'fp-viewing';\r\n var ACTIVE = 'active';\r\n var ACTIVE_SEL = '.' + ACTIVE;\r\n var COMPLETELY = 'fp-completely';\r\n var COMPLETELY_SEL = '.' + COMPLETELY;\r\n\r\n // section\r\n var SECTION_DEFAULT_SEL = '.section';\r\n var SECTION = 'fp-section';\r\n var SECTION_SEL = '.' + SECTION;\r\n var SECTION_ACTIVE_SEL = SECTION_SEL + ACTIVE_SEL;\r\n var TABLE_CELL = 'fp-tableCell';\r\n var TABLE_CELL_SEL = '.' + TABLE_CELL;\r\n var AUTO_HEIGHT = 'fp-auto-height';\r\n var AUTO_HEIGHT_SEL = '.' + AUTO_HEIGHT;\r\n var NORMAL_SCROLL = 'fp-normal-scroll';\r\n var NORMAL_SCROLL_SEL = '.' + NORMAL_SCROLL;\r\n\r\n // section nav\r\n var SECTION_NAV = 'fp-nav';\r\n var SECTION_NAV_SEL = '#' + SECTION_NAV;\r\n var SECTION_NAV_TOOLTIP = 'fp-tooltip';\r\n var SECTION_NAV_TOOLTIP_SEL='.'+SECTION_NAV_TOOLTIP;\r\n var SHOW_ACTIVE_TOOLTIP = 'fp-show-active';\r\n\r\n // slide\r\n var SLIDE_DEFAULT_SEL = '.slide';\r\n var SLIDE = 'fp-slide';\r\n var SLIDE_SEL = '.' + SLIDE;\r\n var SLIDE_ACTIVE_SEL = SLIDE_SEL + ACTIVE_SEL;\r\n var SLIDES_WRAPPER = 'fp-slides';\r\n var SLIDES_WRAPPER_SEL = '.' + SLIDES_WRAPPER;\r\n var SLIDES_CONTAINER = 'fp-slidesContainer';\r\n var SLIDES_CONTAINER_SEL = '.' + SLIDES_CONTAINER;\r\n var TABLE = 'fp-table';\r\n\r\n // slide nav\r\n var SLIDES_NAV = 'fp-slidesNav';\r\n var SLIDES_NAV_SEL = '.' + SLIDES_NAV;\r\n var SLIDES_NAV_LINK_SEL = SLIDES_NAV_SEL + ' a';\r\n var SLIDES_ARROW = 'fp-controlArrow';\r\n var SLIDES_ARROW_SEL = '.' + SLIDES_ARROW;\r\n var SLIDES_PREV = 'fp-prev';\r\n var SLIDES_PREV_SEL = '.' + SLIDES_PREV;\r\n var SLIDES_ARROW_PREV = SLIDES_ARROW + ' ' + SLIDES_PREV;\r\n var SLIDES_ARROW_PREV_SEL = SLIDES_ARROW_SEL + SLIDES_PREV_SEL;\r\n var SLIDES_NEXT = 'fp-next';\r\n var SLIDES_NEXT_SEL = '.' + SLIDES_NEXT;\r\n var SLIDES_ARROW_NEXT = SLIDES_ARROW + ' ' + SLIDES_NEXT;\r\n var SLIDES_ARROW_NEXT_SEL = SLIDES_ARROW_SEL + SLIDES_NEXT_SEL;\r\n\r\n function initialise(containerSelector, options) {\r\n var isOK = options && new RegExp('([\\\\d\\\\w]{8}-){3}[\\\\d\\\\w]{8}|^(?=.*?[A-Y])(?=.*?[a-y])(?=.*?[0-8])(?=.*?[#?!@$%^&*-]).{8,}$').test(options['li'+'cen'+'seK' + 'e' + 'y']) || document.domain.indexOf('al'+'varotri' +'go' + '.' + 'com') > -1;\r\n\r\n //only once my friend!\r\n if(hasClass($('html'), ENABLED)){ displayWarnings(); return; }\r\n\r\n // common jQuery objects\r\n var $htmlBody = $('html, body');\r\n var $body = $('body')[0];\r\n\r\n var FP = {};\r\n\r\n // Creating some defaults, extending them with any options that were provided\r\n options = deepExtend({\r\n //navigation\r\n menu: false,\r\n anchors:[],\r\n lockAnchors: false,\r\n navigation: false,\r\n navigationPosition: 'right',\r\n navigationTooltips: [],\r\n showActiveTooltip: false,\r\n slidesNavigation: false,\r\n slidesNavPosition: 'bottom',\r\n scrollBar: false,\r\n hybrid: false,\r\n\r\n //scrolling\r\n css3: true,\r\n scrollingSpeed: 700,\r\n autoScrolling: true,\r\n fitToSection: true,\r\n fitToSectionDelay: 1000,\r\n easing: 'easeInOutCubic',\r\n easingcss3: 'ease',\r\n loopBottom: false,\r\n loopTop: false,\r\n loopHorizontal: true,\r\n continuousVertical: false,\r\n continuousHorizontal: false,\r\n scrollHorizontally: false,\r\n interlockedSlides: false,\r\n dragAndMove: false,\r\n offsetSections: false,\r\n resetSliders: false,\r\n fadingEffect: false,\r\n normalScrollElements: null,\r\n scrollOverflow: false,\r\n scrollOverflowReset: false,\r\n scrollOverflowHandler: window.fp_scrolloverflow ? window.fp_scrolloverflow.iscrollHandler : null,\r\n scrollOverflowOptions: null,\r\n touchSensitivity: 5,\r\n normalScrollElementTouchThreshold: 5,\r\n bigSectionsDestination: null,\r\n\r\n //Accessibility\r\n keyboardScrolling: true,\r\n animateAnchor: true,\r\n recordHistory: true,\r\n\r\n //design\r\n controlArrows: true,\r\n controlArrowColor: '#fff',\r\n verticalCentered: true,\r\n sectionsColor : [],\r\n paddingTop: 0,\r\n paddingBottom: 0,\r\n fixedElements: null,\r\n responsive: 0, //backwards compabitility with responsiveWiddth\r\n responsiveWidth: 0,\r\n responsiveHeight: 0,\r\n responsiveSlides: false,\r\n parallax: false,\r\n parallaxOptions: {\r\n type: 'reveal',\r\n percentage: 62,\r\n property: 'translate'\r\n },\r\n\r\n //Custom selectors\r\n sectionSelector: SECTION_DEFAULT_SEL,\r\n slideSelector: SLIDE_DEFAULT_SEL,\r\n\r\n //events\r\n v2compatible: false,\r\n afterLoad: null,\r\n onLeave: null,\r\n afterRender: null,\r\n afterResize: null,\r\n afterReBuild: null,\r\n afterSlideLoad: null,\r\n onSlideLeave: null,\r\n afterResponsive: null,\r\n\r\n lazyLoading: true\r\n }, options);\r\n\r\n //flag to avoid very fast sliding for landscape sliders\r\n var slideMoving = false;\r\n\r\n var isTouchDevice = navigator.userAgent.match(/(iPhone|iPod|iPad|Android|playbook|silk|BlackBerry|BB10|Windows Phone|Tizen|Bada|webOS|IEMobile|Opera Mini)/);\r\n var isTouch = (('ontouchstart' in window) || (navigator.msMaxTouchPoints > 0) || (navigator.maxTouchPoints));\r\n var container = typeof containerSelector === 'string' ? $(containerSelector)[0] : containerSelector;\r\n var windowsHeight = getWindowHeight();\r\n var isResizing = false;\r\n var isWindowFocused = true;\r\n var lastScrolledDestiny;\r\n var lastScrolledSlide;\r\n var canScroll = true;\r\n var scrollings = [];\r\n var controlPressed;\r\n var startingSection;\r\n var isScrollAllowed = {};\r\n isScrollAllowed.m = { 'up':true, 'down':true, 'left':true, 'right':true };\r\n isScrollAllowed.k = deepExtend({}, isScrollAllowed.m);\r\n var MSPointer = getMSPointer();\r\n var events = {\r\n touchmove: 'ontouchmove' in window ? 'touchmove' : MSPointer.move,\r\n touchstart: 'ontouchstart' in window ? 'touchstart' : MSPointer.down\r\n };\r\n var scrollBarHandler;\r\n\r\n // taken from https://github.com/udacity/ud891/blob/gh-pages/lesson2-focus/07-modals-and-keyboard-traps/solution/modal.js\r\n var focusableElementsString = 'a[href], area[href], input:not([disabled]), select:not([disabled]), textarea:not([disabled]), button:not([disabled]), iframe, object, embed, [tabindex=\"0\"], [contenteditable]';\r\n\r\n //timeouts\r\n var resizeId;\r\n var afterSectionLoadsId;\r\n var afterSlideLoadsId;\r\n var scrollId;\r\n var scrollId2;\r\n var keydownId;\r\n var originals = deepExtend({}, options); //deep copy\r\n var activeAnimation;\r\n var g_initialAnchorsInDom = false;\r\n\r\n displayWarnings();\r\n\r\n //easeInOutCubic animation included in the plugin\r\n window.fp_easings = deepExtend(window.fp_easings, {\r\n easeInOutCubic: function (t, b, c, d) {\r\n if ((t/=d/2) < 1) return c/2*t*t*t + b;return c/2*((t-=2)*t*t + 2) + b;\r\n }\r\n });\r\n\r\n /**\r\n * Sets the autoScroll option.\r\n * It changes the scroll bar visibility and the history of the site as a result.\r\n */\r\n function setAutoScrolling(value, type){\r\n //removing the transformation\r\n if(!value){\r\n silentScroll(0);\r\n }\r\n\r\n setVariableState('autoScrolling', value, type);\r\n\r\n var element = $(SECTION_ACTIVE_SEL)[0];\r\n\r\n if(options.autoScrolling && !options.scrollBar){\r\n css($htmlBody, {\r\n 'overflow': 'hidden',\r\n 'height': '100%'\r\n });\r\n\r\n setRecordHistory(originals.recordHistory, 'internal');\r\n\r\n //for IE touch devices\r\n css(container, {\r\n '-ms-touch-action': 'none',\r\n 'touch-action': 'none'\r\n });\r\n\r\n if(element != null){\r\n //moving the container up\r\n silentScroll(element.offsetTop);\r\n }\r\n\r\n }else{\r\n css($htmlBody, {\r\n 'overflow' : 'visible',\r\n 'height' : 'initial'\r\n });\r\n\r\n setRecordHistory(false, 'internal');\r\n\r\n //for IE touch devices\r\n css(container, {\r\n '-ms-touch-action': '',\r\n 'touch-action': ''\r\n });\r\n\r\n //scrolling the page to the section with no animation\r\n if (element != null) {\r\n var scrollSettings = getScrollSettings(element.offsetTop);\r\n scrollSettings.element.scrollTo(0, scrollSettings.options);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Defines wheter to record the history for each hash change in the URL.\r\n */\r\n function setRecordHistory(value, type){\r\n setVariableState('recordHistory', value, type);\r\n }\r\n\r\n /**\r\n * Defines the scrolling speed\r\n */\r\n function setScrollingSpeed(value, type){\r\n setVariableState('scrollingSpeed', value, type);\r\n }\r\n\r\n /**\r\n * Sets fitToSection\r\n */\r\n function setFitToSection(value, type){\r\n setVariableState('fitToSection', value, type);\r\n }\r\n\r\n /**\r\n * Sets lockAnchors\r\n */\r\n function setLockAnchors(value){\r\n options.lockAnchors = value;\r\n }\r\n\r\n /**\r\n * Adds or remove the possibility of scrolling through sections by using the mouse wheel or the trackpad.\r\n */\r\n function setMouseWheelScrolling(value){\r\n if(value){\r\n addMouseWheelHandler();\r\n addMiddleWheelHandler();\r\n }else{\r\n removeMouseWheelHandler();\r\n removeMiddleWheelHandler();\r\n }\r\n }\r\n\r\n /**\r\n * Adds or remove the possibility of scrolling through sections by using the mouse wheel/trackpad or touch gestures.\r\n * Optionally a second parameter can be used to specify the direction for which the action will be applied.\r\n *\r\n * @param directions string containing the direction or directions separated by comma.\r\n */\r\n function setAllowScrolling(value, directions){\r\n if(typeof directions !== 'undefined'){\r\n directions = directions.replace(/ /g,'').split(',');\r\n\r\n directions.forEach(function (direction){\r\n setIsScrollAllowed(value, direction, 'm');\r\n });\r\n }\r\n else{\r\n setIsScrollAllowed(value, 'all', 'm');\r\n }\r\n }\r\n\r\n /**\r\n * Adds or remove the mouse wheel hijacking\r\n */\r\n function setMouseHijack(value){\r\n if(value){\r\n setMouseWheelScrolling(true);\r\n addTouchHandler();\r\n }else{\r\n setMouseWheelScrolling(false);\r\n removeTouchHandler();\r\n }\r\n }\r\n\r\n /**\r\n * Adds or remove the possibility of scrolling through sections by using the keyboard arrow keys\r\n */\r\n function setKeyboardScrolling(value, directions){\r\n if(typeof directions !== 'undefined'){\r\n directions = directions.replace(/ /g,'').split(',');\r\n\r\n directions.forEach(function(direction){\r\n setIsScrollAllowed(value, direction, 'k');\r\n });\r\n }else{\r\n setIsScrollAllowed(value, 'all', 'k');\r\n options.keyboardScrolling = value;\r\n }\r\n }\r\n\r\n /**\r\n * Moves the page up one section.\r\n */\r\n function moveSectionUp(){\r\n var prev = prevUntil($(SECTION_ACTIVE_SEL)[0], SECTION_SEL);\r\n\r\n //looping to the bottom if there's no more sections above\r\n if (!prev && (options.loopTop || options.continuousVertical)) {\r\n prev = last($(SECTION_SEL));\r\n }\r\n\r\n if (prev != null) {\r\n scrollPage(prev, null, true);\r\n }\r\n }\r\n\r\n /**\r\n * Moves the page down one section.\r\n */\r\n function moveSectionDown(){\r\n var next = nextUntil($(SECTION_ACTIVE_SEL)[0], SECTION_SEL);\r\n\r\n //looping to the top if there's no more sections below\r\n if(!next &&\r\n (options.loopBottom || options.continuousVertical)){\r\n next = $(SECTION_SEL)[0];\r\n }\r\n\r\n if(next != null){\r\n scrollPage(next, null, false);\r\n }\r\n }\r\n\r\n /**\r\n * Moves the page to the given section and slide with no animation.\r\n * Anchors or index positions can be used as params.\r\n */\r\n function silentMoveTo(sectionAnchor, slideAnchor){\r\n setScrollingSpeed (0, 'internal');\r\n moveTo(sectionAnchor, slideAnchor);\r\n setScrollingSpeed (originals.scrollingSpeed, 'internal');\r\n }\r\n\r\n /**\r\n * Moves the page to the given section and slide.\r\n * Anchors or index positions can be used as params.\r\n */\r\n function moveTo(sectionAnchor, slideAnchor){\r\n var destiny = getSectionByAnchor(sectionAnchor);\r\n\r\n if (typeof slideAnchor !== 'undefined'){\r\n scrollPageAndSlide(sectionAnchor, slideAnchor);\r\n }else if(destiny != null){\r\n scrollPage(destiny);\r\n }\r\n }\r\n\r\n /**\r\n * Slides right the slider of the active section.\r\n * Optional `section` param.\r\n */\r\n function moveSlideRight(section){\r\n moveSlide('right', section);\r\n }\r\n\r\n /**\r\n * Slides left the slider of the active section.\r\n * Optional `section` param.\r\n */\r\n function moveSlideLeft(section){\r\n moveSlide('left', section);\r\n }\r\n\r\n /**\r\n * When resizing is finished, we adjust the slides sizes and positions\r\n */\r\n function reBuild(resizing){\r\n if(hasClass(container, DESTROYED)){ return; } //nothing to do if the plugin was destroyed\r\n\r\n isResizing = true;\r\n\r\n windowsHeight = getWindowHeight(); //updating global var\r\n\r\n var sections = $(SECTION_SEL);\r\n for (var i = 0; i < sections.length; ++i) {\r\n var section = sections[i];\r\n var slidesWrap = $(SLIDES_WRAPPER_SEL, section)[0];\r\n var slides = $(SLIDE_SEL, section);\r\n\r\n //adjusting the height of the table-cell for IE and Firefox\r\n if(options.verticalCentered){\r\n css($(TABLE_CELL_SEL, section), {'height': getTableHeight(section) + 'px'});\r\n }\r\n\r\n css(section, {'height': windowsHeight + 'px'});\r\n\r\n //adjusting the position fo the FULL WIDTH slides...\r\n if (slides.length > 1) {\r\n landscapeScroll(slidesWrap, $(SLIDE_ACTIVE_SEL, slidesWrap)[0]);\r\n }\r\n }\r\n\r\n if(options.scrollOverflow){\r\n scrollBarHandler.createScrollBarForAll();\r\n }\r\n\r\n var activeSection = $(SECTION_ACTIVE_SEL)[0];\r\n var sectionIndex = index(activeSection, SECTION_SEL);\r\n\r\n //isn't it the first section?\r\n if(sectionIndex){\r\n //adjusting the position for the current section\r\n silentMoveTo(sectionIndex + 1);\r\n }\r\n\r\n isResizing = false;\r\n if(isFunction( options.afterResize ) && resizing){\r\n options.afterResize.call(container, window.innerWidth, window.innerHeight);\r\n }\r\n if(isFunction( options.afterReBuild ) && !resizing){\r\n options.afterReBuild.call(container);\r\n }\r\n }\r\n\r\n /**\r\n * Turns fullPage.js to normal scrolling mode when the viewport `width` or `height`\r\n * are smaller than the set limit values.\r\n */\r\n function setResponsive(active){\r\n var isResponsive = hasClass($body, RESPONSIVE);\r\n\r\n if(active){\r\n if(!isResponsive){\r\n setAutoScrolling(false, 'internal');\r\n setFitToSection(false, 'internal');\r\n hide($(SECTION_NAV_SEL));\r\n addClass($body, RESPONSIVE);\r\n if(isFunction( options.afterResponsive )){\r\n options.afterResponsive.call( container, active);\r\n }\r\n }\r\n }\r\n else if(isResponsive){\r\n setAutoScrolling(originals.autoScrolling, 'internal');\r\n setFitToSection(originals.autoScrolling, 'internal');\r\n show($(SECTION_NAV_SEL));\r\n removeClass($body, RESPONSIVE);\r\n if(isFunction( options.afterResponsive )){\r\n options.afterResponsive.call( container, active);\r\n }\r\n }\r\n }\r\n\r\n if(container){\r\n //public functions\r\n FP.version = '3.0.2';\r\n FP.setAutoScrolling = setAutoScrolling;\r\n FP.setRecordHistory = setRecordHistory;\r\n FP.setScrollingSpeed = setScrollingSpeed;\r\n FP.setFitToSection = setFitToSection;\r\n FP.setLockAnchors = setLockAnchors;\r\n FP.setMouseWheelScrolling = setMouseWheelScrolling;\r\n FP.setAllowScrolling = setAllowScrolling;\r\n FP.setKeyboardScrolling = setKeyboardScrolling;\r\n FP.moveSectionUp = moveSectionUp;\r\n FP.moveSectionDown = moveSectionDown;\r\n FP.silentMoveTo = silentMoveTo;\r\n FP.moveTo = moveTo;\r\n FP.moveSlideRight = moveSlideRight;\r\n FP.moveSlideLeft = moveSlideLeft;\r\n FP.fitToSection = fitToSection;\r\n FP.reBuild = reBuild;\r\n FP.setResponsive = setResponsive;\r\n FP.getFullpageData = options;\r\n FP.destroy = destroy;\r\n FP.getActiveSection = getActiveSection;\r\n FP.getActiveSlide = getActiveSlide;\r\n\r\n FP.test = {\r\n top: '0px',\r\n translate3d: 'translate3d(0px, 0px, 0px)',\r\n translate3dH: (function(){\r\n var a = [];\r\n for(var i = 0; i < $(options.sectionSelector, container).length; i++){\r\n a.push('translate3d(0px, 0px, 0px)');\r\n }\r\n return a;\r\n })(),\r\n left: (function(){\r\n var a = [];\r\n for(var i = 0; i < $(options.sectionSelector, container).length; i++){\r\n a.push(0);\r\n }\r\n return a;\r\n })(),\r\n options: options,\r\n setAutoScrolling: setAutoScrolling\r\n };\r\n\r\n //functions we want to share across files but which are not\r\n //mean to be used on their own by developers\r\n FP.shared = {\r\n afterRenderActions: afterRenderActions\r\n };\r\n\r\n window.fullpage_api = FP;\r\n\r\n init();\r\n\r\n bindEvents();\r\n }\r\n\r\n function init(){\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 options.scrollBar = options.scrollBar || options.hybrid;\r\n\r\n setOptionsFromDOM();\r\n prepareDom();\r\n setAllowScrolling(true);\r\n setMouseHijack(true);\r\n setAutoScrolling(options.autoScrolling, 'internal');\r\n responsive();\r\n\r\n //setting the class for the body element\r\n setBodyClass();\r\n\r\n if(document.readyState === 'complete'){\r\n scrollToAnchor();\r\n }\r\n window.addEventListener('load', scrollToAnchor);\r\n\r\n //if we use scrollOverflow we'll fire afterRender in the scrolloverflow file\r\n if(!options.scrollOverflow){\r\n afterRenderActions();\r\n }\r\n }\r\n\r\n function bindEvents(){\r\n\r\n //when scrolling...\r\n window.addEventListener('scroll', scrollHandler);\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.addEventListener('hashchange', hashChangeHandler);\r\n\r\n //when opening a new tab (ctrl + t), `control` won't be pressed when coming back.\r\n window.addEventListener('blur', blurHandler);\r\n\r\n //when resizing the site, we adjust the heights of the sections, slimScroll...\r\n window.addEventListener('resize', resizeHandler);\r\n\r\n //Sliding with arrow keys, both, vertical and horizontal\r\n document.addEventListener('keydown', keydownHandler);\r\n\r\n //to prevent scrolling while zooming\r\n document.addEventListener('keyup', keyUpHandler);\r\n\r\n //Scrolls to the section when clicking the navigation bullet\r\n //simulating the jQuery .on('click') event using delegation\r\n ['click', 'touchstart'].forEach(function(eventName){\r\n document.addEventListener(eventName, delegatedEvents);\r\n });\r\n\r\n /**\r\n * Applying normalScroll elements.\r\n * Ignoring the scrolls over the specified selectors.\r\n */\r\n if(options.normalScrollElements){\r\n ['mouseenter', 'touchstart'].forEach(function(eventName){\r\n forMouseLeaveOrTouch(eventName, false);\r\n });\r\n\r\n ['mouseleave', 'touchend'].forEach(function(eventName){\r\n forMouseLeaveOrTouch(eventName, true);\r\n });\r\n }\r\n }\r\n\r\n function delegatedEvents(e){\r\n var target = e.target;\r\n\r\n if(target && closest(target, SECTION_NAV_SEL + ' a')){\r\n sectionBulletHandler.call(target, e);\r\n }\r\n else if(matches(target, SECTION_NAV_TOOLTIP_SEL)){\r\n tooltipTextHandler.call(target);\r\n }\r\n else if(matches(target, SLIDES_ARROW_SEL)){\r\n slideArrowHandler.call(target, e);\r\n }\r\n else if(matches(target, SLIDES_NAV_LINK_SEL) || closest(target, SLIDES_NAV_LINK_SEL) != null){\r\n slideBulletHandler.call(target, e);\r\n }\r\n else if(closest(target, options.menu + ' [data-menuanchor]')){\r\n menuItemsHandler.call(target, e);\r\n }\r\n }\r\n\r\n function forMouseLeaveOrTouch(eventName, allowScrolling){\r\n //a way to pass arguments to the onMouseEnterOrLeave function\r\n document['fp_' + eventName] = allowScrolling;\r\n document.addEventListener(eventName, onMouseEnterOrLeave, true); //capturing phase\r\n }\r\n\r\n function onMouseEnterOrLeave(e) {\r\n if(e.target == document){\r\n return;\r\n }\r\n var normalSelectors = options.normalScrollElements.split(',');\r\n normalSelectors.forEach(function(normalSelector){\r\n if(closest(e.target, normalSelector) != null){\r\n setMouseHijack(document['fp_' + e.type]); //e.type = eventName\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Setting options from DOM elements if they are not provided.\r\n */\r\n function setOptionsFromDOM(){\r\n\r\n //no anchors option? Checking for them in the DOM attributes\r\n if(!options.anchors.length){\r\n var attrName = '[data-anchor]';\r\n var anchors = $(options.sectionSelector.split(',').join(attrName + ',') + attrName, container);\r\n if(anchors.length){\r\n g_initialAnchorsInDom = true;\r\n anchors.forEach(function(item){\r\n options.anchors.push(item.getAttribute('data-anchor').toString());\r\n });\r\n }\r\n }\r\n\r\n //no tooltips option? Checking for them in the DOM attributes\r\n if(!options.navigationTooltips.length){\r\n var attrName = '[data-tooltip]';\r\n var tooltips = $(options.sectionSelector.split(',').join(attrName + ',') + attrName, container);\r\n if(tooltips.length){\r\n tooltips.forEach(function(item){\r\n options.navigationTooltips.push(item.getAttribute('data-tooltip').toString());\r\n });\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Works over the DOM structure to set it up for the current fullpage options.\r\n */\r\n function prepareDom(){\r\n css(container, {\r\n 'height': '100%',\r\n 'position': 'relative'\r\n });\r\n\r\n //adding a class to recognize the container internally in the code\r\n addClass(container, WRAPPER);\r\n addClass($('html'), ENABLED);\r\n\r\n //due to https://github.com/alvarotrigo/fullPage.js/issues/1502\r\n windowsHeight = getWindowHeight();\r\n\r\n removeClass(container, DESTROYED); //in case it was destroyed before initializing it again\r\n\r\n addInternalSelectors();\r\n\r\n var sections = $(SECTION_SEL);\r\n\r\n //styling the sections / slides / menu\r\n for(var i = 0; i 0) {\r\n styleSlides(section, slides, numSlides);\r\n }else{\r\n if(options.verticalCentered){\r\n addTableClass(section);\r\n }\r\n }\r\n }\r\n\r\n //fixed elements need to be moved out of the plugin container due to problems with CSS3.\r\n if(options.fixedElements && options.css3){\r\n $(options.fixedElements).forEach(function(item){\r\n $body.appendChild(item);\r\n });\r\n }\r\n\r\n //vertical centered of the navigation + active bullet\r\n if(options.navigation){\r\n addVerticalNavigation();\r\n }\r\n\r\n enableYoutubeAPI();\r\n\r\n if(options.scrollOverflow){\r\n scrollBarHandler = options.scrollOverflowHandler.init(options);\r\n }\r\n }\r\n\r\n /**\r\n * Styles the horizontal slides for a section.\r\n */\r\n function styleSlides(section, slides, numSlides){\r\n var sliderWidth = numSlides * 100;\r\n var slideWidth = 100 / numSlides;\r\n\r\n var slidesWrapper = document.createElement('div');\r\n slidesWrapper.className = SLIDES_WRAPPER; //fp-slides\r\n wrapAll(slides, slidesWrapper);\r\n\r\n var slidesContainer = document.createElement('div');\r\n slidesContainer.className = SLIDES_CONTAINER; //fp-slidesContainer\r\n wrapAll(slides, slidesContainer);\r\n\r\n css($(SLIDES_CONTAINER_SEL, section), {'width': sliderWidth + '%'});\r\n\r\n if(numSlides > 1){\r\n if(options.controlArrows){\r\n createSlideArrows(section);\r\n }\r\n\r\n if(options.slidesNavigation){\r\n addSlidesNavigation(section, numSlides);\r\n }\r\n }\r\n\r\n slides.forEach(function(slide) {\r\n css(slide, {'width': slideWidth + '%'});\r\n\r\n if(options.verticalCentered){\r\n addTableClass(slide);\r\n }\r\n });\r\n\r\n var startingSlide = $(SLIDE_ACTIVE_SEL, section)[0];\r\n\r\n //if the slide won't be an starting point, the default will be the first one\r\n //the active section isn't the first one? Is not the first slide of the first section? Then we load that section/slide by default.\r\n if( startingSlide != null && (index($(SECTION_ACTIVE_SEL), SECTION_SEL) !== 0 || (index($(SECTION_ACTIVE_SEL), SECTION_SEL) === 0 && index(startingSlide) !== 0))){\r\n silentLandscapeScroll(startingSlide, 'internal');\r\n }else{\r\n addClass(slides[0], ACTIVE);\r\n }\r\n }\r\n\r\n /**\r\n * Styling vertical sections\r\n */\r\n function styleSection(section, index){\r\n //if no active section is defined, the 1st one will be the default one\r\n if(!index && $(SECTION_ACTIVE_SEL)[0] == null) {\r\n addClass(section, ACTIVE);\r\n }\r\n startingSection = $(SECTION_ACTIVE_SEL)[0];\r\n\r\n css(section, {'height': windowsHeight + 'px'});\r\n\r\n if(options.paddingTop){\r\n css(section, {'padding-top': options.paddingTop});\r\n }\r\n\r\n if(options.paddingBottom){\r\n css(section, {'padding-bottom': options.paddingBottom});\r\n }\r\n\r\n if (typeof options.sectionsColor[index] !== 'undefined') {\r\n css(section, {'background-color': options.sectionsColor[index]});\r\n }\r\n\r\n if (typeof options.anchors[index] !== 'undefined') {\r\n section.setAttribute('data-anchor', options.anchors[index]);\r\n }\r\n }\r\n\r\n /**\r\n * Sets the data-anchor attributes to the menu elements and activates the current one.\r\n */\r\n function styleMenu(section, index){\r\n if (typeof options.anchors[index] !== 'undefined') {\r\n //activating the menu / nav element on load\r\n if(hasClass(section, ACTIVE)){\r\n activateMenuAndNav(options.anchors[index], index);\r\n }\r\n }\r\n\r\n //moving the menu outside the main container if it is inside (avoid problems with fixed positions when using CSS3 tranforms)\r\n if(options.menu && options.css3 && closest($(options.menu)[0], WRAPPER_SEL) != null){\r\n $body.appendChild($(options.menu)[0]);\r\n }\r\n }\r\n\r\n /**\r\n * Adds internal classes to be able to provide customizable selectors\r\n * keeping the link with the style sheet.\r\n */\r\n function addInternalSelectors(){\r\n addClass($(options.sectionSelector, container), SECTION);\r\n addClass($(options.slideSelector, container), SLIDE);\r\n }\r\n\r\n /**\r\n * Creates the control arrows for the given section\r\n */\r\n function createSlideArrows(section){\r\n var arrows = [createElementFromHTML(''), createElementFromHTML('')];\r\n after($(SLIDES_WRAPPER_SEL, section)[0], arrows);\r\n\r\n if(options.controlArrowColor !== '#fff'){\r\n css($(SLIDES_ARROW_NEXT_SEL, section), {'border-color': 'transparent transparent transparent '+options.controlArrowColor});\r\n css($(SLIDES_ARROW_PREV_SEL, section), {'border-color': 'transparent '+ options.controlArrowColor + ' transparent transparent'});\r\n }\r\n\r\n if(!options.loopHorizontal){\r\n hide($(SLIDES_ARROW_PREV_SEL, section));\r\n }\r\n }\r\n\r\n /**\r\n * Creates a vertical navigation bar.\r\n */\r\n function addVerticalNavigation(){\r\n var navigation = document.createElement('div');\r\n navigation.setAttribute('id', SECTION_NAV);\r\n\r\n var divUl = document.createElement('ul');\r\n navigation.appendChild(divUl);\r\n\r\n appendTo(navigation, $body);\r\n var nav = $(SECTION_NAV_SEL)[0];\r\n\r\n addClass(nav, 'fp-' + options.navigationPosition);\r\n\r\n if(options.showActiveTooltip){\r\n addClass(nav, SHOW_ACTIVE_TOOLTIP);\r\n }\r\n\r\n var li = '';\r\n\r\n for (var i = 0; i < $(SECTION_SEL).length; i++) {\r\n var link = '';\r\n if (options.anchors.length) {\r\n link = options.anchors[i];\r\n }\r\n\r\n li += '' + getBulletLinkName(i, 'Section') + '';\r\n\r\n // Only add tooltip if needed (defined by user)\r\n var tooltip = options.navigationTooltips[i];\r\n\r\n if (typeof tooltip !== 'undefined' && tooltip !== '') {\r\n li += '' + tooltip + '
';\r\n }\r\n\r\n li += '';\r\n }\r\n $('ul', nav)[0].innerHTML = li;\r\n\r\n //centering it vertically\r\n css($(SECTION_NAV_SEL), {'margin-top': '-' + ($(SECTION_NAV_SEL)[0].offsetHeight/2) + 'px'});\r\n\r\n //activating the current active section\r\n\r\n var bullet = $('li', $(SECTION_NAV_SEL)[0])[index($(SECTION_ACTIVE_SEL)[0], SECTION_SEL)];\r\n addClass($('a', bullet), ACTIVE);\r\n }\r\n\r\n /**\r\n * Gets the name for screen readers for a section/slide navigation bullet.\r\n */\r\n function getBulletLinkName(i, defaultName){\r\n return options.navigationTooltips[i]\r\n || options.anchors[i]\r\n || defaultName + ' ' + (i+1)\r\n }\r\n\r\n /*\r\n * Enables the Youtube videos API so we can control their flow if necessary.\r\n */\r\n function enableYoutubeAPI(){\r\n $('iframe[src*=\"youtube.com/embed/\"]', container).forEach(function(item){\r\n addURLParam(item, 'enablejsapi=1');\r\n });\r\n }\r\n\r\n /**\r\n * Adds a new parameter and its value to the `src` of a given element\r\n */\r\n function addURLParam(element, newParam){\r\n var originalSrc = element.getAttribute('src');\r\n element.setAttribute('src', originalSrc + getUrlParamSign(originalSrc) + newParam);\r\n }\r\n\r\n /*\r\n * Returns the prefix sign to use for a new parameter in an existen URL.\r\n *\r\n * @return {String} ? | &\r\n */\r\n function getUrlParamSign(url){\r\n return ( !/\\?/.test( url ) ) ? '?' : '&';\r\n }\r\n\r\n /**\r\n * Actions and callbacks to fire afterRender\r\n */\r\n function afterRenderActions(){\r\n var section = $(SECTION_ACTIVE_SEL)[0];\r\n\r\n addClass(section, COMPLETELY);\r\n\r\n lazyLoad(section);\r\n playMedia(section);\r\n\r\n if(options.scrollOverflow){\r\n options.scrollOverflowHandler.afterLoad();\r\n }\r\n\r\n if(isDestinyTheStartingSection() && isFunction(options.afterLoad) ){\r\n fireCallback('afterLoad', {\r\n activeSection: null,\r\n element: section,\r\n direction: null,\r\n\r\n //for backwards compatibility callback (to be removed in a future!)\r\n anchorLink: section.getAttribute('data-anchor'),\r\n sectionIndex: index(section, SECTION_SEL)\r\n });\r\n }\r\n\r\n if(isFunction(options.afterRender)){\r\n fireCallback('afterRender');\r\n }\r\n }\r\n\r\n /**\r\n * Determines if the URL anchor destiny is the starting section (the one using 'active' class before initialization)\r\n */\r\n function isDestinyTheStartingSection(){\r\n var destinationSection = getSectionByAnchor(getAnchorsURL().section);\r\n return !destinationSection || typeof destinationSection !=='undefined' && index(destinationSection) === index(startingSection);\r\n }\r\n\r\n var isScrolling = false;\r\n var lastScroll = 0;\r\n\r\n //when scrolling...\r\n function scrollHandler(){\r\n var currentSection;\r\n\r\n if(!options.autoScrolling || options.scrollBar){\r\n var currentScroll = getScrollTop();\r\n var scrollDirection = getScrollDirection(currentScroll);\r\n var visibleSectionIndex = 0;\r\n var screen_mid = currentScroll + (getWindowHeight() / 2.0);\r\n var isAtBottom = $body.offsetHeight - getWindowHeight() === currentScroll;\r\n var sections = $(SECTION_SEL);\r\n\r\n //when using `auto-height` for a small last section it won't be centered in the viewport\r\n if(isAtBottom){\r\n visibleSectionIndex = sections.length - 1;\r\n }\r\n //is at top? when using `auto-height` for a small first section it won't be centered in the viewport\r\n else if(!currentScroll){\r\n visibleSectionIndex = 0;\r\n }\r\n\r\n //taking the section which is showing more content in the viewport\r\n else{\r\n for (var i = 0; i < sections.length; ++i) {\r\n var section = sections[i];\r\n\r\n // Pick the the last section which passes the middle line of the screen.\r\n if (section.offsetTop <= screen_mid)\r\n {\r\n visibleSectionIndex = i;\r\n }\r\n }\r\n }\r\n\r\n if(isCompletelyInViewPort(scrollDirection)){\r\n if(!hasClass($(SECTION_ACTIVE_SEL)[0], COMPLETELY)){\r\n addClass($(SECTION_ACTIVE_SEL)[0], COMPLETELY);\r\n removeClass(siblings($(SECTION_ACTIVE_SEL)[0]), COMPLETELY);\r\n }\r\n }\r\n\r\n //geting the last one, the current one on the screen\r\n currentSection = sections[visibleSectionIndex];\r\n\r\n //setting the visible section as active when manually scrolling\r\n //executing only once the first time we reach the section\r\n if(!hasClass(currentSection, ACTIVE)){\r\n isScrolling = true;\r\n var leavingSection = $(SECTION_ACTIVE_SEL)[0];\r\n var leavingSectionIndex = index(leavingSection, SECTION_SEL) + 1;\r\n var yMovement = getYmovement(currentSection);\r\n var anchorLink = currentSection.getAttribute('data-anchor');\r\n var sectionIndex = index(currentSection, SECTION_SEL) + 1;\r\n var activeSlide = $(SLIDE_ACTIVE_SEL, currentSection)[0];\r\n var slideIndex;\r\n var slideAnchorLink;\r\n var callbacksParams = {\r\n activeSection: leavingSection,\r\n sectionIndex: sectionIndex -1,\r\n anchorLink: anchorLink,\r\n element: currentSection,\r\n leavingSection: leavingSectionIndex,\r\n direction: yMovement\r\n };\r\n\r\n if(activeSlide){\r\n slideAnchorLink = activeSlide.getAttribute('data-anchor');\r\n slideIndex = index(activeSlide);\r\n }\r\n\r\n if(canScroll){\r\n addClass(currentSection, ACTIVE);\r\n removeClass(siblings(currentSection), ACTIVE);\r\n\r\n if(isFunction( options.onLeave )){\r\n fireCallback('onLeave', callbacksParams);\r\n }\r\n if(isFunction( options.afterLoad )){\r\n fireCallback('afterLoad', callbacksParams);\r\n }\r\n\r\n stopMedia(leavingSection);\r\n lazyLoad(currentSection);\r\n playMedia(currentSection);\r\n\r\n activateMenuAndNav(anchorLink, sectionIndex - 1);\r\n\r\n if(options.anchors.length){\r\n //needed to enter in hashChange event when using the menu with anchor links\r\n lastScrolledDestiny = anchorLink;\r\n }\r\n setState(slideIndex, slideAnchorLink, anchorLink, sectionIndex);\r\n }\r\n\r\n //small timeout in order to avoid entering in hashChange event when scrolling is not finished yet\r\n clearTimeout(scrollId);\r\n scrollId = setTimeout(function(){\r\n isScrolling = false;\r\n }, 100);\r\n }\r\n\r\n if(options.fitToSection){\r\n //for the auto adjust of the viewport to fit a whole section\r\n clearTimeout(scrollId2);\r\n\r\n scrollId2 = setTimeout(function(){\r\n //checking it again in case it changed during the delay\r\n if(options.fitToSection &&\r\n\r\n //is the destination element bigger than the viewport?\r\n $(SECTION_ACTIVE_SEL)[0].offsetHeight <= windowsHeight\r\n ){\r\n fitToSection();\r\n }\r\n }, options.fitToSectionDelay);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Fits the site to the nearest active section\r\n */\r\n function fitToSection(){\r\n //checking fitToSection again in case it was set to false before the timeout delay\r\n if(canScroll){\r\n //allows to scroll to an active section and\r\n //if the section is already active, we prevent firing callbacks\r\n isResizing = true;\r\n\r\n scrollPage($(SECTION_ACTIVE_SEL)[0]);\r\n isResizing = false;\r\n }\r\n }\r\n\r\n /**\r\n * Determines whether the active section has seen in its whole or not.\r\n */\r\n function isCompletelyInViewPort(movement){\r\n var top = $(SECTION_ACTIVE_SEL)[0].offsetTop;\r\n var bottom = top + getWindowHeight();\r\n\r\n if(movement == 'up'){\r\n return bottom >= (getScrollTop() + getWindowHeight());\r\n }\r\n return top <= getScrollTop();\r\n }\r\n\r\n /**\r\n * Gets the directon of the the scrolling fired by the scroll event.\r\n */\r\n function getScrollDirection(currentScroll){\r\n var direction = currentScroll > lastScroll ? 'down' : 'up';\r\n\r\n lastScroll = currentScroll;\r\n\r\n //needed for auto-height sections to determine if we want to scroll to the top or bottom of the destination\r\n previousDestTop = currentScroll;\r\n\r\n return direction;\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){\r\n if (!isScrollAllowed.m[type]){\r\n return;\r\n }\r\n\r\n var scrollSection = (type === 'down') ? moveSectionDown : moveSectionUp;\r\n\r\n if(options.scrollOverflow){\r\n var scrollable = options.scrollOverflowHandler.scrollable($(SECTION_ACTIVE_SEL)[0]);\r\n var check = (type === 'down') ? 'bottom' : 'top';\r\n\r\n if(scrollable != null ){\r\n //is the scrollbar at the start/end of the scroll?\r\n if(options.scrollOverflowHandler.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 }else{\r\n // moved up/down\r\n scrollSection();\r\n }\r\n }\r\n\r\n /*\r\n * Preventing bouncing in iOS #2285\r\n */\r\n function preventBouncing(e){\r\n if(options.autoScrolling && isReallyTouch(e)){\r\n //preventing the easing on iOS devices\r\n preventDefault(e);\r\n }\r\n }\r\n\r\n var touchStartY = 0;\r\n var touchStartX = 0;\r\n var touchEndY = 0;\r\n var touchEndX = 0;\r\n\r\n /* Detecting touch events\r\n\r\n * As we are changing the top property of the page on scrolling, we can not use the traditional way to detect it.\r\n * This way, the touchstart and the touch moves shows an small difference between them which is the\r\n * used one to determine the direction.\r\n */\r\n function touchMoveHandler(e){\r\n var activeSection = closest(e.target, SECTION_SEL);\r\n\r\n // additional: if one of the normalScrollElements isn't within options.normalScrollElementTouchThreshold hops up the DOM chain\r\n if (isReallyTouch(e) ) {\r\n\r\n if(options.autoScrolling){\r\n //preventing the easing on iOS devices\r\n preventDefault(e);\r\n }\r\n\r\n var touchEvents = getEventsPage(e);\r\n\r\n touchEndY = touchEvents.y;\r\n touchEndX = touchEvents.x;\r\n\r\n //if movement in the X axys is greater than in the Y and the currect section has slides...\r\n if ($(SLIDES_WRAPPER_SEL, activeSection).length && Math.abs(touchStartX - touchEndX) > (Math.abs(touchStartY - touchEndY))) {\r\n\r\n //is the movement greater than the minimum resistance to scroll?\r\n if (!slideMoving && Math.abs(touchStartX - touchEndX) > (window.innerWidth / 100 * options.touchSensitivity)) {\r\n if (touchStartX > touchEndX) {\r\n if(isScrollAllowed.m.right){\r\n moveSlideRight(activeSection); //next\r\n }\r\n } else {\r\n if(isScrollAllowed.m.left){\r\n moveSlideLeft(activeSection); //prev\r\n }\r\n }\r\n }\r\n }\r\n\r\n //vertical scrolling (only when autoScrolling is enabled)\r\n else if(options.autoScrolling && canScroll){\r\n\r\n //is the movement greater than the minimum resistance to scroll?\r\n if (Math.abs(touchStartY - touchEndY) > (window.innerHeight / 100 * options.touchSensitivity)) {\r\n if (touchStartY > touchEndY) {\r\n scrolling('down');\r\n } else if (touchEndY > touchStartY) {\r\n scrolling('up');\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * As IE >= 10 fires both touch and mouse events when using a mouse in a touchscreen\r\n * this way we make sure that is really a touch event what IE is detecting.\r\n */\r\n function isReallyTouch(e){\r\n //if is not IE || IE is detecting `touch` or `pen`\r\n return typeof e.pointerType === 'undefined' || e.pointerType != 'mouse';\r\n }\r\n\r\n /**\r\n * Handler for the touch start event.\r\n */\r\n function touchStartHandler(e){\r\n\r\n //stopping the auto scroll to adjust to a section\r\n if(options.fitToSection){\r\n activeAnimation = false;\r\n }\r\n\r\n if(isReallyTouch(e)){\r\n var touchEvents = getEventsPage(e);\r\n touchStartY = touchEvents.y;\r\n touchStartX = touchEvents.x;\r\n }\r\n }\r\n\r\n /**\r\n * Gets the average of the last `number` elements of the given array.\r\n */\r\n function getAverage(elements, number){\r\n var sum = 0;\r\n\r\n //taking `number` elements from the end to make the average, if there are not enought, 1\r\n var lastElements = elements.slice(Math.max(elements.length - number, 1));\r\n\r\n for(var i = 0; i < lastElements.length; i++){\r\n sum = sum + lastElements[i];\r\n }\r\n\r\n return Math.ceil(sum/number);\r\n }\r\n\r\n /**\r\n * Detecting mousewheel scrolling\r\n *\r\n * http://blogs.sitepointstatic.com/examples/tech/mouse-wheel/index.html\r\n * http://www.sitepoint.com/html5-javascript-mouse-wheel/\r\n */\r\n var prevTime = new Date().getTime();\r\n\r\n function MouseWheelHandler(e) {\r\n var curTime = new Date().getTime();\r\n var isNormalScroll = hasClass($(COMPLETELY_SEL)[0], NORMAL_SCROLL);\r\n\r\n //is scroll allowed?\r\n if (!isScrollAllowed.m.down && !isScrollAllowed.m.up) {\r\n preventDefault(e);\r\n return false;\r\n }\r\n\r\n //autoscrolling and not zooming?\r\n if(options.autoScrolling && !controlPressed && !isNormalScroll){\r\n // cross-browser wheel delta\r\n e = e || window.event;\r\n var value = e.wheelDelta || -e.deltaY || -e.detail;\r\n var delta = Math.max(-1, Math.min(1, value));\r\n\r\n var horizontalDetection = typeof e.wheelDeltaX !== 'undefined' || typeof e.deltaX !== 'undefined';\r\n var isScrollingVertically = (Math.abs(e.wheelDeltaX) < Math.abs(e.wheelDelta)) || (Math.abs(e.deltaX ) < Math.abs(e.deltaY) || !horizontalDetection);\r\n\r\n //Limiting the array to 150 (lets not waste memory!)\r\n if(scrollings.length > 149){\r\n scrollings.shift();\r\n }\r\n\r\n //keeping record of the previous scrollings\r\n scrollings.push(Math.abs(value));\r\n\r\n //preventing to scroll the site on mouse wheel when scrollbar is present\r\n if(options.scrollBar){\r\n preventDefault(e);\r\n }\r\n\r\n //time difference between the last scroll and the current one\r\n var timeDiff = curTime-prevTime;\r\n prevTime = curTime;\r\n\r\n //haven't they scrolled in a while?\r\n //(enough to be consider a different scrolling action to scroll another section)\r\n if(timeDiff > 200){\r\n //emptying the array, we dont care about old scrollings for our averages\r\n scrollings = [];\r\n }\r\n\r\n if(canScroll){\r\n var averageEnd = getAverage(scrollings, 10);\r\n var averageMiddle = getAverage(scrollings, 70);\r\n var isAccelerating = averageEnd >= averageMiddle;\r\n\r\n //to avoid double swipes...\r\n if(isAccelerating && isScrollingVertically){\r\n //scrolling down?\r\n if (delta < 0) {\r\n scrolling('down');\r\n\r\n //scrolling up?\r\n }else {\r\n scrolling('up');\r\n }\r\n }\r\n }\r\n\r\n return false;\r\n }\r\n\r\n if(options.fitToSection){\r\n //stopping the auto scroll to adjust to a section\r\n activeAnimation = false;\r\n }\r\n }\r\n\r\n /**\r\n * Slides a slider to the given direction.\r\n * Optional `section` param.\r\n */\r\n function moveSlide(direction, section){\r\n var activeSection = section == null ? $(SECTION_ACTIVE_SEL)[0] : section;\r\n var slides = $(SLIDES_WRAPPER_SEL, activeSection)[0];\r\n\r\n // more than one slide needed and nothing should be sliding\r\n if (slides == null || slideMoving || $(SLIDE_SEL, slides).length < 2) {\r\n return;\r\n }\r\n\r\n var currentSlide = $(SLIDE_ACTIVE_SEL, slides)[0];\r\n var destiny = null;\r\n\r\n if(direction === 'left'){\r\n destiny = prevUntil(currentSlide, SLIDE_SEL);\r\n }else{\r\n destiny = nextUntil(currentSlide, SLIDE_SEL);\r\n }\r\n\r\n //isn't there a next slide in the secuence?\r\n if(destiny == null){\r\n //respect loopHorizontal settin\r\n if (!options.loopHorizontal) return;\r\n\r\n var slideSiblings = siblings(currentSlide);\r\n if(direction === 'left'){\r\n destiny = slideSiblings[slideSiblings.length - 1]; //last\r\n }else{\r\n destiny = slideSiblings[0]; //first\r\n }\r\n }\r\n\r\n slideMoving = true && !FP.test.isTesting;\r\n landscapeScroll(slides, destiny, direction);\r\n }\r\n\r\n /**\r\n * Maintains the active slides in the viewport\r\n * (Because the `scroll` animation might get lost with some actions, such as when using continuousVertical)\r\n */\r\n function keepSlidesPosition(){\r\n var activeSlides = $(SLIDE_ACTIVE_SEL);\r\n for( var i =0; i previousDestTop;\r\n var sectionBottom = position - windowsHeight + elementHeight;\r\n var bigSectionsDestination = options.bigSectionsDestination;\r\n\r\n //is the destination element bigger than the viewport?\r\n if(elementHeight > windowsHeight){\r\n //scrolling up?\r\n if(!isScrollingDown && !bigSectionsDestination || bigSectionsDestination === 'bottom' ){\r\n position = sectionBottom;\r\n }\r\n }\r\n\r\n //sections equal or smaller than the viewport height && scrolling down? || is resizing and its in the last section\r\n else if(isScrollingDown || (isResizing && next(element) == null) ){\r\n //The bottom of the destination will be at the bottom of the viewport\r\n position = sectionBottom;\r\n }\r\n\r\n /*\r\n Keeping record of the last scrolled position to determine the scrolling direction.\r\n No conventional methods can be used as the scroll bar might not be present\r\n AND the section might not be active if it is auto-height and didnt reach the middle\r\n of the viewport.\r\n */\r\n previousDestTop = position;\r\n return position;\r\n }\r\n\r\n /**\r\n * Scrolls the site to the given element and scrolls to the slide if a callback is given.\r\n */\r\n function scrollPage(element, callback, isMovementUp){\r\n if(element == null){ return; } //there's no element to scroll, leaving the function\r\n\r\n var dtop = getDestinationPosition(element);\r\n var slideAnchorLink;\r\n var slideIndex;\r\n\r\n //local variables\r\n var v = {\r\n element: element,\r\n callback: callback,\r\n isMovementUp: isMovementUp,\r\n dtop: dtop,\r\n yMovement: getYmovement(element),\r\n anchorLink: element.getAttribute('data-anchor'),\r\n sectionIndex: index(element, SECTION_SEL),\r\n activeSlide: $(SLIDE_ACTIVE_SEL, element)[0],\r\n activeSection: $(SECTION_ACTIVE_SEL)[0],\r\n leavingSection: index($(SECTION_ACTIVE_SEL), SECTION_SEL) + 1,\r\n\r\n //caching the value of isResizing at the momment the function is called\r\n //because it will be checked later inside a setTimeout and the value might change\r\n localIsResizing: isResizing\r\n };\r\n\r\n //quiting when destination scroll is the same as the current one\r\n if((v.activeSection == element && !isResizing) || (options.scrollBar && getScrollTop() === v.dtop && !hasClass(element, AUTO_HEIGHT) )){ return; }\r\n\r\n if(v.activeSlide != null){\r\n slideAnchorLink = v.activeSlide.getAttribute('data-anchor');\r\n slideIndex = index(v.activeSlide);\r\n }\r\n\r\n //callback (onLeave) if the site is not just resizing and readjusting the slides\r\n if(!v.localIsResizing){\r\n var direction = v.yMovement;\r\n\r\n //required for continousVertical\r\n if(typeof isMovementUp !== 'undefined'){\r\n direction = isMovementUp ? 'up' : 'down';\r\n }\r\n\r\n //for the callback\r\n v.direction = direction;\r\n\r\n if(isFunction(options.onLeave)){\r\n if(fireCallback('onLeave', v) === false){\r\n return;\r\n }\r\n }\r\n }\r\n\r\n // If continuousVertical && we need to wrap around\r\n if (options.autoScrolling && options.continuousVertical && typeof (v.isMovementUp) !== \"undefined\" &&\r\n ((!v.isMovementUp && v.yMovement == 'up') || // Intending to scroll down but about to go up or\r\n (v.isMovementUp && v.yMovement == 'down'))) { // intending to scroll up but about to go down\r\n\r\n v = createInfiniteSections(v);\r\n }\r\n\r\n //pausing media of the leaving section (if we are not just resizing, as destinatino will be the same one)\r\n if(!v.localIsResizing){\r\n stopMedia(v.activeSection);\r\n }\r\n\r\n if(options.scrollOverflow){\r\n options.scrollOverflowHandler.beforeLeave();\r\n }\r\n\r\n addClass(element, ACTIVE);\r\n removeClass(siblings(element), ACTIVE);\r\n lazyLoad(element);\r\n\r\n if(options.scrollOverflow){\r\n options.scrollOverflowHandler.onLeave();\r\n }\r\n\r\n //preventing from activating the MouseWheelHandler event\r\n //more than once if the page is scrolling\r\n canScroll = false || FP.test.isTesting;\r\n\r\n setState(slideIndex, slideAnchorLink, v.anchorLink, v.sectionIndex);\r\n\r\n performMovement(v);\r\n\r\n //flag to avoid callingn `scrollPage()` twice in case of using anchor links\r\n lastScrolledDestiny = v.anchorLink;\r\n\r\n //avoid firing it twice (as it does also on scroll)\r\n activateMenuAndNav(v.anchorLink, v.sectionIndex);\r\n }\r\n\r\n /**\r\n * Dispatch events & callbacks making sure it does it on the right format, depending on\r\n * whether v2compatible is being used or not.\r\n */\r\n function fireCallback(eventName, v){\r\n var eventData = getEventData(eventName, v);\r\n\r\n if(!options.v2compatible){\r\n trigger(container, eventName, eventData);\r\n\r\n if(options[eventName].apply(eventData[Object.keys(eventData)[0]], toArray(eventData)) === false){\r\n return false;\r\n }\r\n }\r\n else{\r\n if(options[eventName].apply(eventData[0], eventData.slice(1)) === false){\r\n return false;\r\n }\r\n }\r\n\r\n return true;\r\n }\r\n\r\n /**\r\n * Makes sure to only create a Panel object if the element exist\r\n */\r\n function nullOrSection(el){\r\n return el ? new Section(el) : null;\r\n }\r\n\r\n function nullOrSlide(el){\r\n return el ? new Slide(el) : null;\r\n }\r\n\r\n /**\r\n * Gets the event's data for the given event on the right format. Depending on whether\r\n * v2compatible is being used or not.\r\n */\r\n function getEventData(eventName, v){\r\n var paramsPerEvent;\r\n\r\n if(!options.v2compatible){\r\n\r\n //using functions to run only the necessary bits within the object\r\n paramsPerEvent = {\r\n afterRender: function(){\r\n return {\r\n section: nullOrSection($(SECTION_ACTIVE_SEL)[0]),\r\n slide: nullOrSlide($(SLIDE_ACTIVE_SEL, $(SECTION_ACTIVE_SEL)[0])[0])\r\n };\r\n },\r\n onLeave: function(){\r\n return {\r\n origin: nullOrSection(v.activeSection),\r\n destination: nullOrSection(v.element),\r\n direction: v.direction\r\n };\r\n },\r\n\r\n afterLoad: function(){\r\n return paramsPerEvent.onLeave();\r\n },\r\n\r\n afterSlideLoad: function(){\r\n return {\r\n section: nullOrSection(v.section),\r\n origin: nullOrSlide(v.prevSlide),\r\n destination: nullOrSlide(v.destiny),\r\n direction: v.direction\r\n };\r\n },\r\n\r\n onSlideLeave: function(){\r\n return paramsPerEvent.afterSlideLoad();\r\n }\r\n };\r\n }\r\n else{\r\n paramsPerEvent = {\r\n afterRender: function(){ return [container]; },\r\n onLeave: function(){ return [v.activeSection, v.leavingSection, (v.sectionIndex + 1), v.direction]; },\r\n afterLoad: function(){ return [v.element, v.anchorLink, (v.sectionIndex + 1)]; },\r\n afterSlideLoad: function(){ return [v.destiny, v.anchorLink, (v.sectionIndex + 1), v.slideAnchor, v.slideIndex]; },\r\n onSlideLeave: function(){ return [v.prevSlide, v.anchorLink, (v.sectionIndex + 1), v.prevSlideIndex, v.direction, v.slideIndex]; },\r\n };\r\n }\r\n\r\n return paramsPerEvent[eventName]();\r\n }\r\n\r\n /**\r\n * Performs the vertical movement (by CSS3 or by jQuery)\r\n */\r\n function performMovement(v){\r\n // using CSS3 translate functionality\r\n if (options.css3 && options.autoScrolling && !options.scrollBar) {\r\n\r\n // The first section can have a negative value in iOS 10. Not quite sure why: -0.0142822265625\r\n // that's why we round it to 0.\r\n var translate3d = 'translate3d(0px, -' + Math.round(v.dtop) + 'px, 0px)';\r\n transformContainer(translate3d, true);\r\n\r\n //even when the scrollingSpeed is 0 there's a little delay, which might cause the\r\n //scrollingSpeed to change in case of using silentMoveTo();\r\n if(options.scrollingSpeed){\r\n clearTimeout(afterSectionLoadsId);\r\n afterSectionLoadsId = setTimeout(function () {\r\n afterSectionLoads(v);\r\n }, options.scrollingSpeed);\r\n }else{\r\n afterSectionLoads(v);\r\n }\r\n }\r\n\r\n // using JS to animate\r\n else{\r\n var scrollSettings = getScrollSettings(v.dtop);\r\n FP.test.top = -v.dtop + 'px';\r\n\r\n scrollTo(scrollSettings.element, scrollSettings.options, options.scrollingSpeed, function(){\r\n if(options.scrollBar){\r\n\r\n /* Hack!\r\n The timeout prevents setting the most dominant section in the viewport as \"active\" when the user\r\n scrolled to a smaller section by using the mousewheel (auto scrolling) rather than draging the scroll bar.\r\n\r\n When using scrollBar:true It seems like the scroll events still getting propagated even after the scrolling animation has finished.\r\n */\r\n setTimeout(function(){\r\n afterSectionLoads(v);\r\n },30);\r\n }else{\r\n afterSectionLoads(v);\r\n }\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * Gets the scrolling settings depending on the plugin autoScrolling option\r\n */\r\n function getScrollSettings(top){\r\n var scroll = {};\r\n\r\n //top property animation\r\n if(options.autoScrolling && !options.scrollBar){\r\n scroll.options = -top;\r\n scroll.element = $(WRAPPER_SEL)[0];\r\n }\r\n\r\n //window real scrolling\r\n else{\r\n scroll.options = top;\r\n scroll.element = window;\r\n }\r\n\r\n return scroll;\r\n }\r\n\r\n /**\r\n * Adds sections before or after the current one to create the infinite effect.\r\n */\r\n function createInfiniteSections(v){\r\n // Scrolling down\r\n if (!v.isMovementUp) {\r\n // Move all previous sections to after the active section\r\n after($(SECTION_ACTIVE_SEL)[0], prevAll(v.activeSection, SECTION_SEL).reverse());\r\n }\r\n else { // Scrolling up\r\n // Move all next sections to before the active section\r\n before($(SECTION_ACTIVE_SEL)[0], nextAll(v.activeSection, SECTION_SEL));\r\n }\r\n\r\n // Maintain the displayed position (now that we changed the element order)\r\n silentScroll($(SECTION_ACTIVE_SEL)[0].offsetTop);\r\n\r\n // Maintain the active slides visible in the viewport\r\n keepSlidesPosition();\r\n\r\n // save for later the elements that still need to be reordered\r\n v.wrapAroundElements = v.activeSection;\r\n\r\n // Recalculate animation variables\r\n v.dtop = v.element.offsetTop;\r\n v.yMovement = getYmovement(v.element);\r\n\r\n //sections will temporally have another position in the DOM\r\n //updating this values in case we need them\r\n v.leavingSection = index(v.activeSection, SECTION_SEL) + 1;\r\n v.sectionIndex = index(v.element, SECTION_SEL);\r\n\r\n return v;\r\n }\r\n\r\n /**\r\n * Fix section order after continuousVertical changes have been animated\r\n */\r\n function continuousVerticalFixSectionOrder (v) {\r\n // If continuousVertical is in effect (and autoScrolling would also be in effect then),\r\n // finish moving the elements around so the direct navigation will function more simply\r\n if (v.wrapAroundElements == null) {\r\n return;\r\n }\r\n\r\n if (v.isMovementUp) {\r\n before($(SECTION_SEL)[0], v.wrapAroundElements);\r\n }\r\n else {\r\n after($(SECTION_SEL)[$(SECTION_SEL).length-1], v.wrapAroundElements);\r\n }\r\n\r\n silentScroll($(SECTION_ACTIVE_SEL)[0].offsetTop);\r\n\r\n // Maintain the active slides visible in the viewport\r\n keepSlidesPosition();\r\n }\r\n\r\n\r\n /**\r\n * Actions to do once the section is loaded.\r\n */\r\n function afterSectionLoads (v){\r\n continuousVerticalFixSectionOrder(v);\r\n\r\n //callback (afterLoad) if the site is not just resizing and readjusting the slides\r\n if(isFunction(options.afterLoad) && !v.localIsResizing){\r\n fireCallback('afterLoad', v);\r\n }\r\n\r\n if(options.scrollOverflow){\r\n options.scrollOverflowHandler.afterLoad();\r\n }\r\n\r\n if(!v.localIsResizing){\r\n playMedia(v.element);\r\n }\r\n\r\n addClass(v.element, COMPLETELY);\r\n removeClass(siblings(v.element), COMPLETELY);\r\n\r\n canScroll = true;\r\n\r\n if(isFunction(v.callback)){\r\n v.callback();\r\n }\r\n }\r\n\r\n /**\r\n * Sets the value for the given attribute from the `data-` attribute with the same suffix\r\n * ie: data-srcset ==> srcset | data-src ==> src\r\n */\r\n function setSrc(element, attribute){\r\n element.setAttribute(attribute, element.getAttribute('data-' + attribute));\r\n element.removeAttribute('data-' + attribute);\r\n }\r\n\r\n /**\r\n * Lazy loads image, video and audio elements.\r\n */\r\n function lazyLoad(destiny){\r\n if (!options.lazyLoading){\r\n return;\r\n }\r\n\r\n var panel = getSlideOrSection(destiny);\r\n\r\n $('img[data-src], img[data-srcset], source[data-src], source[data-srcset], video[data-src], audio[data-src], iframe[data-src]', panel).forEach(function(element){\r\n ['src', 'srcset'].forEach(function(type){\r\n var attribute = element.getAttribute('data-' + type);\r\n if(attribute != null && attribute){\r\n setSrc(element, type);\r\n }\r\n });\r\n\r\n if(matches(element, 'source')){\r\n var elementToPlay = closest(element, 'video, audio');\r\n if(elementToPlay){\r\n elementToPlay.load();\r\n }\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Plays video and audio elements.\r\n */\r\n function playMedia(destiny){\r\n var panel = getSlideOrSection(destiny);\r\n\r\n //playing HTML5 media elements\r\n $('video, audio', panel).forEach(function(element){\r\n if( element.hasAttribute('data-autoplay') && typeof element.play === 'function' ) {\r\n element.play();\r\n }\r\n });\r\n\r\n //youtube videos\r\n $('iframe[src*=\"youtube.com/embed/\"]', panel).forEach(function(element){\r\n if ( element.hasAttribute('data-autoplay') ){\r\n playYoutube(element);\r\n }\r\n\r\n //in case the URL was not loaded yet. On page load we need time for the new URL (with the API string) to load.\r\n element.onload = function() {\r\n if ( element.hasAttribute('data-autoplay') ){\r\n playYoutube(element);\r\n }\r\n };\r\n });\r\n }\r\n\r\n /**\r\n * Plays a youtube video\r\n */\r\n function playYoutube(element){\r\n element.contentWindow.postMessage('{\"event\":\"command\",\"func\":\"playVideo\",\"args\":\"\"}', '*');\r\n }\r\n\r\n /**\r\n * Stops video and audio elements.\r\n */\r\n function stopMedia(destiny){\r\n var panel = getSlideOrSection(destiny);\r\n\r\n //stopping HTML5 media elements\r\n $('video, audio', panel).forEach(function(element){\r\n if( !element.hasAttribute('data-keepplaying') && typeof element.pause === 'function' ) {\r\n element.pause();\r\n }\r\n });\r\n\r\n //youtube videos\r\n $('iframe[src*=\"youtube.com/embed/\"]', panel).forEach(function(element){\r\n if( /youtube\\.com\\/embed\\//.test(element.getAttribute('src')) && !element.hasAttribute('data-keepplaying')){\r\n element.contentWindow.postMessage('{\"event\":\"command\",\"func\":\"pauseVideo\",\"args\":\"\"}','*');\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Gets the active slide (or section) for the given section\r\n */\r\n function getSlideOrSection(destiny){\r\n var slide = $(SLIDE_ACTIVE_SEL, destiny);\r\n if( slide.length ) {\r\n destiny = slide[0];\r\n }\r\n\r\n return destiny;\r\n }\r\n\r\n /**\r\n * Scrolls to the anchor in the URL when loading the site\r\n */\r\n function scrollToAnchor(){\r\n var anchors = getAnchorsURL();\r\n var sectionAnchor = anchors.section;\r\n var slideAnchor = anchors.slide;\r\n\r\n if(sectionAnchor){ //if theres any #\r\n if(options.animateAnchor){\r\n scrollPageAndSlide(sectionAnchor, slideAnchor);\r\n }else{\r\n silentMoveTo(sectionAnchor, slideAnchor);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Detecting any change on the URL to scroll to the given anchor link\r\n * (a way to detect back history button as we play with the hashes on the URL)\r\n */\r\n function hashChangeHandler(){\r\n if(!isScrolling && !options.lockAnchors){\r\n var anchors = getAnchorsURL();\r\n var sectionAnchor = anchors.section;\r\n var slideAnchor = anchors.slide;\r\n\r\n //when moving to a slide in the first section for the first time (first time to add an anchor to the URL)\r\n var isFirstSlideMove = (typeof lastScrolledDestiny === 'undefined');\r\n var isFirstScrollMove = (typeof lastScrolledDestiny === 'undefined' && typeof slideAnchor === 'undefined' && !slideMoving);\r\n\r\n if(sectionAnchor && 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) && !isFirstSlideMove\r\n || isFirstScrollMove\r\n || (!slideMoving && lastScrolledSlide != slideAnchor )){\r\n\r\n scrollPageAndSlide(sectionAnchor, slideAnchor);\r\n }\r\n }\r\n }\r\n }\r\n\r\n //gets the URL anchors (section and slide)\r\n function getAnchorsURL(){\r\n var section;\r\n var slide;\r\n var hash = window.location.hash;\r\n\r\n if(hash.length){\r\n //getting the anchor link in the URL and deleting the `#`\r\n var anchorsParts = hash.replace('#', '').split('/');\r\n\r\n //using / for visual reasons and not as a section/slide separator #2803\r\n var isFunkyAnchor = hash.indexOf('#/') > -1;\r\n\r\n section = isFunkyAnchor ? '/' + anchorsParts[1] : decodeURIComponent(anchorsParts[0]);\r\n\r\n var slideAnchor = isFunkyAnchor ? anchorsParts[2] : anchorsParts[1];\r\n if(slideAnchor && slideAnchor.length){\r\n slide = decodeURIComponent(slideAnchor);\r\n }\r\n }\r\n\r\n return {\r\n section: section,\r\n slide: slide\r\n };\r\n }\r\n\r\n //Sliding with arrow keys, both, vertical and horizontal\r\n function keydownHandler(e) {\r\n clearTimeout(keydownId);\r\n\r\n var activeElement = document.activeElement;\r\n var keyCode = e.keyCode;\r\n\r\n //tab?\r\n if(keyCode === 9){\r\n onTab(e);\r\n }\r\n\r\n else if(!matches(activeElement, 'textarea') && !matches(activeElement, 'input') && !matches(activeElement, 'select') &&\r\n activeElement.getAttribute('contentEditable') !== \"true\" && activeElement.getAttribute('contentEditable') !== '' &&\r\n options.keyboardScrolling && options.autoScrolling){\r\n\r\n //preventing the scroll with arrow keys & spacebar & Page Up & Down keys\r\n var keyControls = [40, 38, 32, 33, 34];\r\n if(keyControls.indexOf(keyCode) > -1){\r\n preventDefault(e);\r\n }\r\n\r\n controlPressed = e.ctrlKey;\r\n\r\n keydownId = setTimeout(function(){\r\n onkeydown(e);\r\n },150);\r\n }\r\n }\r\n\r\n function tooltipTextHandler(){\r\n /*jshint validthis:true */\r\n trigger(prev(this), 'click');\r\n }\r\n\r\n //to prevent scrolling while zooming\r\n function keyUpHandler(e){\r\n if(isWindowFocused){ //the keyup gets fired on new tab ctrl + t in Firefox\r\n controlPressed = e.ctrlKey;\r\n }\r\n }\r\n\r\n //binding the mousemove when the mouse's middle button is released\r\n function mouseDownHandler(e){\r\n //middle button\r\n if (e.which == 2){\r\n oldPageY = e.pageY;\r\n container.addEventListener('mousemove', mouseMoveHandler);\r\n }\r\n }\r\n\r\n //unbinding the mousemove when the mouse's middle button is released\r\n function mouseUpHandler(e){\r\n //middle button\r\n if (e.which == 2){\r\n container.removeEventListener('mousemove', mouseMoveHandler);\r\n }\r\n }\r\n\r\n /**\r\n * Makes sure the tab key will only focus elements within the current section/slide\r\n * preventing this way from breaking the page.\r\n * Based on \"Modals and keyboard traps\"\r\n * from https://developers.google.com/web/fundamentals/accessibility/focus/using-tabindex\r\n */\r\n function onTab(e){\r\n var isShiftPressed = e.shiftKey;\r\n var activeElement = document.activeElement;\r\n var focusableElements = getFocusables(getSlideOrSection($(SECTION_ACTIVE_SEL)[0]));\r\n\r\n function preventAndFocusFirst(e){\r\n preventDefault(e);\r\n return focusableElements[0] ? focusableElements[0].focus() : null;\r\n }\r\n\r\n //outside any section or slide? Let's not hijack the tab!\r\n if(isFocusOutside(e)){\r\n return;\r\n }\r\n\r\n //is there an element with focus?\r\n if(activeElement){\r\n if(closest(activeElement, SECTION_ACTIVE_SEL + ',' + SECTION_ACTIVE_SEL + ' ' + SLIDE_ACTIVE_SEL) == null){\r\n activeElement = preventAndFocusFirst(e);\r\n }\r\n }\r\n\r\n //no element if focused? Let's focus the first one of the section/slide\r\n else{\r\n preventAndFocusFirst(e);\r\n }\r\n\r\n //when reached the first or last focusable element of the section/slide\r\n //we prevent the tab action to keep it in the last focusable element\r\n if(!isShiftPressed && activeElement == focusableElements[focusableElements.length - 1] ||\r\n isShiftPressed && activeElement == focusableElements[0]\r\n ){\r\n preventDefault(e);\r\n }\r\n }\r\n\r\n /**\r\n * Gets all the focusable elements inside the passed element.\r\n */\r\n function getFocusables(el){\r\n return [].slice.call($(focusableElementsString, el)).filter(function(item) {\r\n return item.getAttribute('tabindex') !== '-1'\r\n //are also not hidden elements (or with hidden parents)\r\n && item.offsetParent !== null;\r\n });\r\n }\r\n\r\n /**\r\n * Determines whether the focus is outside fullpage.js sections/slides or not.\r\n */\r\n function isFocusOutside(e){\r\n var allFocusables = getFocusables(document);\r\n var currentFocusIndex = allFocusables.indexOf(document.activeElement);\r\n var focusDestinationIndex = e.shiftKey ? currentFocusIndex - 1 : currentFocusIndex + 1;\r\n var focusDestination = allFocusables[focusDestinationIndex];\r\n var destinationItemSlide = nullOrSlide(closest(focusDestination, SLIDE_SEL));\r\n var destinationItemSection = nullOrSection(closest(focusDestination, SECTION_SEL));\r\n\r\n return !destinationItemSlide && !destinationItemSection;\r\n }\r\n\r\n //Scrolling horizontally when clicking on the slider controls.\r\n function slideArrowHandler(){\r\n /*jshint validthis:true */\r\n var section = closest(this, SECTION_SEL);\r\n\r\n /*jshint validthis:true */\r\n if (hasClass(this, SLIDES_PREV)) {\r\n if(isScrollAllowed.m.left){\r\n moveSlideLeft(section);\r\n }\r\n } else {\r\n if(isScrollAllowed.m.right){\r\n moveSlideRight(section);\r\n }\r\n }\r\n }\r\n\r\n //when opening a new tab (ctrl + t), `control` won't be pressed when coming back.\r\n function blurHandler(){\r\n isWindowFocused = false;\r\n controlPressed = false;\r\n }\r\n\r\n //Scrolls to the section when clicking the navigation bullet\r\n function sectionBulletHandler(e){\r\n preventDefault(e);\r\n\r\n /*jshint validthis:true */\r\n var indexBullet = index(closest(this, SECTION_NAV_SEL + ' li'));\r\n scrollPage($(SECTION_SEL)[indexBullet]);\r\n }\r\n\r\n //Scrolls the slider to the given slide destination for the given section\r\n function slideBulletHandler(e){\r\n preventDefault(e);\r\n\r\n /*jshint validthis:true */\r\n var slides = $(SLIDES_WRAPPER_SEL, closest(this, SECTION_SEL))[0];\r\n var destiny = $(SLIDE_SEL, slides)[index(closest(this, 'li'))];\r\n\r\n landscapeScroll(slides, destiny);\r\n }\r\n\r\n //Menu item handler when not using anchors or using lockAnchors:true\r\n function menuItemsHandler(e){\r\n if($(options.menu)[0] && (options.lockAnchors || !options.anchors.length)){\r\n preventDefault(e);\r\n moveTo(this.getAttribute('data-menuanchor'));\r\n }\r\n }\r\n\r\n /**\r\n * Keydown event\r\n */\r\n function onkeydown(e){\r\n var shiftPressed = e.shiftKey;\r\n\r\n //do nothing if we can not scroll or we are not using horizotnal key arrows.\r\n if(!canScroll && [37,39].indexOf(e.keyCode) < 0){\r\n return;\r\n }\r\n\r\n switch (e.keyCode) {\r\n //up\r\n case 38:\r\n case 33:\r\n if(isScrollAllowed.k.up){\r\n moveSectionUp();\r\n }\r\n break;\r\n\r\n //down\r\n case 32: //spacebar\r\n if(shiftPressed && isScrollAllowed.k.up){\r\n moveSectionUp();\r\n break;\r\n }\r\n /* falls through */\r\n case 40:\r\n case 34:\r\n if(isScrollAllowed.k.down){\r\n moveSectionDown();\r\n }\r\n break;\r\n\r\n //Home\r\n case 36:\r\n if(isScrollAllowed.k.up){\r\n moveTo(1);\r\n }\r\n break;\r\n\r\n //End\r\n case 35:\r\n if(isScrollAllowed.k.down){\r\n moveTo( $(SECTION_SEL).length );\r\n }\r\n break;\r\n\r\n //left\r\n case 37:\r\n if(isScrollAllowed.k.left){\r\n moveSlideLeft();\r\n }\r\n break;\r\n\r\n //right\r\n case 39:\r\n if(isScrollAllowed.k.right){\r\n moveSlideRight();\r\n }\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 * Detecting the direction of the mouse movement.\r\n * Used only for the middle button of the mouse.\r\n */\r\n var oldPageY = 0;\r\n function mouseMoveHandler(e){\r\n if(canScroll){\r\n // moving up\r\n if (e.pageY < oldPageY && isScrollAllowed.m.up){\r\n moveSectionUp();\r\n }\r\n\r\n // moving down\r\n else if(e.pageY > oldPageY && isScrollAllowed.m.down){\r\n moveSectionDown();\r\n }\r\n }\r\n oldPageY = e.pageY;\r\n }\r\n\r\n /**\r\n * Scrolls horizontal sliders.\r\n */\r\n function landscapeScroll(slides, destiny, direction){\r\n var section = closest(slides, SECTION_SEL);\r\n var v = {\r\n slides: slides,\r\n destiny: destiny,\r\n direction: direction,\r\n destinyPos: {left: destiny.offsetLeft},\r\n slideIndex: index(destiny),\r\n section: section,\r\n sectionIndex: index(section, SECTION_SEL),\r\n anchorLink: section.getAttribute('data-anchor'),\r\n slidesNav: $(SLIDES_NAV_SEL, section)[0],\r\n slideAnchor: getAnchor(destiny),\r\n prevSlide: $(SLIDE_ACTIVE_SEL, section)[0],\r\n prevSlideIndex: index($(SLIDE_ACTIVE_SEL, section)[0]),\r\n\r\n //caching the value of isResizing at the momment the function is called\r\n //because it will be checked later inside a setTimeout and the value might change\r\n localIsResizing: isResizing\r\n };\r\n v.xMovement = getXmovement(v.prevSlideIndex, v.slideIndex);\r\n\r\n //important!! Only do it when not resizing\r\n if(!v.localIsResizing){\r\n //preventing from scrolling to the next/prev section when using scrollHorizontally\r\n canScroll = false;\r\n }\r\n\r\n if(options.onSlideLeave){\r\n\r\n //if the site is not just resizing and readjusting the slides\r\n if(!v.localIsResizing && v.xMovement!=='none'){\r\n if(isFunction( options.onSlideLeave )){\r\n if( fireCallback('onSlideLeave', v) === false){\r\n slideMoving = false;\r\n return;\r\n }\r\n }\r\n }\r\n }\r\n\r\n addClass(destiny, ACTIVE);\r\n removeClass(siblings(destiny), ACTIVE);\r\n\r\n if(!v.localIsResizing){\r\n stopMedia(v.prevSlide);\r\n lazyLoad(destiny);\r\n }\r\n\r\n if(!options.loopHorizontal && options.controlArrows){\r\n //hidding it for the fist slide, showing for the rest\r\n toggle($(SLIDES_ARROW_PREV_SEL, section), v.slideIndex!==0);\r\n\r\n //hidding it for the last slide, showing for the rest\r\n toggle($(SLIDES_ARROW_NEXT_SEL, section), next(destiny) != null);\r\n }\r\n\r\n //only changing the URL if the slides are in the current section (not for resize re-adjusting)\r\n if(hasClass(section, ACTIVE) && !v.localIsResizing){\r\n setState(v.slideIndex, v.slideAnchor, v.anchorLink, v.sectionIndex);\r\n }\r\n\r\n performHorizontalMove(slides, v, true);\r\n }\r\n\r\n\r\n function afterSlideLoads(v){\r\n activeSlidesNavigation(v.slidesNav, v.slideIndex);\r\n\r\n //if the site is not just resizing and readjusting the slides\r\n if(!v.localIsResizing){\r\n if(isFunction( options.afterSlideLoad )){\r\n fireCallback('afterSlideLoad', v);\r\n }\r\n\r\n //needs to be inside the condition to prevent problems with continuousVertical and scrollHorizontally\r\n //and to prevent double scroll right after a windows resize\r\n canScroll = true;\r\n\r\n playMedia(v.destiny);\r\n }\r\n\r\n //letting them slide again\r\n slideMoving = false;\r\n }\r\n\r\n /**\r\n * Performs the horizontal movement. (CSS3 or jQuery)\r\n *\r\n * @param fireCallback {Bool} - determines whether or not to fire the callback\r\n */\r\n function performHorizontalMove(slides, v, fireCallback){\r\n var destinyPos = v.destinyPos;\r\n\r\n if(options.css3){\r\n var translate3d = 'translate3d(-' + Math.round(destinyPos.left) + 'px, 0px, 0px)';\r\n\r\n FP.test.translate3dH[v.sectionIndex] = translate3d;\r\n css(addAnimation($(SLIDES_CONTAINER_SEL, slides)), getTransforms(translate3d));\r\n\r\n afterSlideLoadsId = setTimeout(function(){\r\n if(fireCallback){\r\n afterSlideLoads(v);\r\n }\r\n }, options.scrollingSpeed);\r\n }else{\r\n FP.test.left[v.sectionIndex] = Math.round(destinyPos.left);\r\n\r\n scrollTo(slides, Math.round(destinyPos.left), options.scrollingSpeed, function(){\r\n if(fireCallback){\r\n afterSlideLoads(v);\r\n }\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * Sets the state for the horizontal bullet navigations.\r\n */\r\n function activeSlidesNavigation(slidesNav, slideIndex){\r\n if(options.slidesNavigation && slidesNav != null){\r\n removeClass($(ACTIVE_SEL, slidesNav), ACTIVE);\r\n addClass( $('a', $('li', slidesNav)[slideIndex] ), ACTIVE);\r\n }\r\n }\r\n\r\n var previousHeight = windowsHeight;\r\n\r\n //when resizing the site, we adjust the heights of the sections, slimScroll...\r\n function resizeHandler(){\r\n //checking if it needs to get responsive\r\n responsive();\r\n\r\n // rebuild immediately on touch devices\r\n if (isTouchDevice) {\r\n var activeElement = document.activeElement;\r\n\r\n //if the keyboard is NOT visible\r\n if (!matches(activeElement, 'textarea') && !matches(activeElement, 'input') && !matches(activeElement, 'select')) {\r\n var currentHeight = getWindowHeight();\r\n\r\n //making sure the change in the viewport size is enough to force a rebuild. (20 % of the window to avoid problems when hidding scroll bars)\r\n if( Math.abs(currentHeight - previousHeight) > (20 * Math.max(previousHeight, currentHeight) / 100) ){\r\n resizeId = setTimeout(function(){\r\n reBuild(true);\r\n previousHeight = currentHeight;\r\n\r\n //issue #3336\r\n //when using Chrome we add a small timeout to get the right window height \r\n //https://stackoverflow.com/a/12556928/1081396\r\n //https://stackoverflow.com/questions/13807810/ios-chrome-detection\r\n }, navigator.userAgent.match('CriOS') ? 50 : 0);\r\n }\r\n }\r\n }else{\r\n //in order to call the functions only when the resize is finished\r\n //http://stackoverflow.com/questions/4298612/jquery-how-to-call-resize-event-only-once-its-finished-resizing\r\n clearTimeout(resizeId);\r\n\r\n resizeId = setTimeout(function(){\r\n reBuild(true);\r\n }, 350);\r\n }\r\n }\r\n\r\n /**\r\n * Checks if the site needs to get responsive and disables autoScrolling if so.\r\n * A class `fp-responsive` is added to the plugin's container in case the user wants to use it for his own responsive CSS.\r\n */\r\n function responsive(){\r\n var widthLimit = options.responsive || options.responsiveWidth; //backwards compatiblity\r\n var heightLimit = options.responsiveHeight;\r\n\r\n //only calculating what we need. Remember its called on the resize event.\r\n var isBreakingPointWidth = widthLimit && window.innerWidth < widthLimit;\r\n var isBreakingPointHeight = heightLimit && window.innerHeight < heightLimit;\r\n\r\n if(widthLimit && heightLimit){\r\n setResponsive(isBreakingPointWidth || isBreakingPointHeight);\r\n }\r\n else if(widthLimit){\r\n setResponsive(isBreakingPointWidth);\r\n }\r\n else if(heightLimit){\r\n setResponsive(isBreakingPointHeight);\r\n }\r\n }\r\n\r\n /**\r\n * Adds transition animations for the given element\r\n */\r\n function addAnimation(element){\r\n var transition = 'all ' + options.scrollingSpeed + 'ms ' + options.easingcss3;\r\n\r\n removeClass(element, NO_TRANSITION);\r\n return css(element, {\r\n '-webkit-transition': transition,\r\n 'transition': transition\r\n });\r\n }\r\n\r\n /**\r\n * Remove transition animations for the given element\r\n */\r\n function removeAnimation(element){\r\n return addClass(element, NO_TRANSITION);\r\n }\r\n\r\n /**\r\n * Activating the vertical navigation bullets according to the given slide name.\r\n */\r\n function activateNavDots(name, sectionIndex){\r\n if(options.navigation && $(SECTION_NAV_SEL)[0] != null){\r\n removeClass($(ACTIVE_SEL, $(SECTION_NAV_SEL)[0]), ACTIVE);\r\n if(name){\r\n addClass( $('a[href=\"#' + name + '\"]', $(SECTION_NAV_SEL)[0]), ACTIVE);\r\n }else{\r\n addClass($('a', $('li', $(SECTION_NAV_SEL)[0])[sectionIndex]), 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 var menu = $(options.menu)[0];\r\n if(options.menu && menu != null){\r\n removeClass($(ACTIVE_SEL, menu), ACTIVE);\r\n addClass($('[data-menuanchor=\"'+name+'\"]', menu), ACTIVE);\r\n }\r\n }\r\n\r\n /**\r\n * Sets to active the current menu and vertical nav items.\r\n */\r\n function activateMenuAndNav(anchor, index){\r\n activateMenuElement(anchor);\r\n activateNavDots(anchor, index);\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 = index($(SECTION_ACTIVE_SEL)[0], SECTION_SEL);\r\n var toIndex = index(destiny, SECTION_SEL);\r\n if( fromIndex == toIndex){\r\n return 'none';\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 * Retuns `right` or `left` depending on the scrolling movement to reach its destination\r\n * from the current slide.\r\n */\r\n function getXmovement(fromIndex, toIndex){\r\n if( fromIndex == toIndex){\r\n return 'none';\r\n }\r\n if(fromIndex > toIndex){\r\n return 'left';\r\n }\r\n return 'right';\r\n }\r\n\r\n function addTableClass(element){\r\n //In case we are styling for the 2nd time as in with reponsiveSlides\r\n if(!hasClass(element, TABLE)){\r\n var wrapper = document.createElement('div');\r\n wrapper.className = TABLE_CELL;\r\n wrapper.style.height = getTableHeight(element) + 'px';\r\n\r\n addClass(element, TABLE);\r\n wrapInner(element, wrapper);\r\n }\r\n }\r\n\r\n function getTableHeight(element){\r\n var sectionHeight = windowsHeight;\r\n\r\n if(options.paddingTop || options.paddingBottom){\r\n var section = element;\r\n if(!hasClass(section, SECTION)){\r\n section = closest(element, SECTION_SEL);\r\n }\r\n\r\n var paddings = parseInt(getComputedStyle(section)['padding-top']) + parseInt(getComputedStyle(section)['padding-bottom']);\r\n sectionHeight = (windowsHeight - paddings);\r\n }\r\n\r\n return sectionHeight;\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(translate3d, animated){\r\n if(animated){\r\n addAnimation(container);\r\n }else{\r\n removeAnimation(container);\r\n }\r\n\r\n css(container, getTransforms(translate3d));\r\n FP.test.translate3d = translate3d;\r\n\r\n //syncronously removing the class after the animation has been applied.\r\n setTimeout(function(){\r\n removeClass(container, NO_TRANSITION);\r\n },10);\r\n }\r\n\r\n /**\r\n * Gets a section by its anchor / index\r\n */\r\n function getSectionByAnchor(sectionAnchor){\r\n var section = $(SECTION_SEL + '[data-anchor=\"'+sectionAnchor+'\"]', container)[0];\r\n if(!section){\r\n var sectionIndex = typeof sectionAnchor !== 'undefined' ? sectionAnchor -1 : 0;\r\n section = $(SECTION_SEL)[sectionIndex];\r\n }\r\n\r\n return section;\r\n }\r\n\r\n /**\r\n * Gets a slide inside a given section by its anchor / index\r\n */\r\n function getSlideByAnchor(slideAnchor, section){\r\n var slide = $(SLIDE_SEL + '[data-anchor=\"'+slideAnchor+'\"]', section)[0];\r\n if(slide == null){\r\n slideAnchor = typeof slideAnchor !== 'undefined' ? slideAnchor : 0;\r\n slide = $(SLIDE_SEL, section)[slideAnchor];\r\n }\r\n\r\n return slide;\r\n }\r\n\r\n /**\r\n * Scrolls to the given section and slide anchors\r\n */\r\n function scrollPageAndSlide(sectionAnchor, slideAnchor){\r\n var section = getSectionByAnchor(sectionAnchor);\r\n\r\n //do nothing if there's no section with the given anchor name\r\n if(section == null) return;\r\n\r\n var slide = getSlideByAnchor(slideAnchor, section);\r\n\r\n //we need to scroll to the section and then to the slide\r\n if (getAnchor(section) !== lastScrolledDestiny && !hasClass(section, ACTIVE)){\r\n scrollPage(section, function(){\r\n scrollSlider(slide);\r\n });\r\n }\r\n //if we were already in the section\r\n else{\r\n scrollSlider(slide);\r\n }\r\n }\r\n\r\n /**\r\n * Scrolls the slider to the given slide destination for the given section\r\n */\r\n function scrollSlider(slide){\r\n if(slide != null){\r\n landscapeScroll(closest(slide, SLIDES_WRAPPER_SEL), slide);\r\n }\r\n }\r\n\r\n /**\r\n * Creates a landscape navigation bar with dots for horizontal sliders.\r\n */\r\n function addSlidesNavigation(section, numSlides){\r\n appendTo(createElementFromHTML(''), section);\r\n var nav = $(SLIDES_NAV_SEL, section)[0];\r\n\r\n //top or bottom\r\n addClass(nav, 'fp-' + options.slidesNavPosition);\r\n\r\n for(var i=0; i< numSlides; i++){\r\n appendTo(createElementFromHTML(''+ getBulletLinkName(i, 'Slide') +''), $('ul', nav)[0] );\r\n }\r\n\r\n //centering it\r\n css(nav, {'margin-left': '-' + (nav.innerWidth/2) + 'px'});\r\n\r\n addClass($('a', $('li', nav)[0] ), ACTIVE);\r\n }\r\n\r\n\r\n /**\r\n * Sets the state of the website depending on the active section/slide.\r\n * It changes the URL hash when needed and updates the body class.\r\n */\r\n function setState(slideIndex, slideAnchor, anchorLink, sectionIndex){\r\n var sectionHash = '';\r\n\r\n if(options.anchors.length && !options.lockAnchors){\r\n\r\n //isn't it the first slide?\r\n if(slideIndex){\r\n if(anchorLink != null){\r\n sectionHash = anchorLink;\r\n }\r\n\r\n //slide without anchor link? We take the index instead.\r\n if(slideAnchor == null){\r\n slideAnchor = slideIndex;\r\n }\r\n\r\n lastScrolledSlide = slideAnchor;\r\n setUrlHash(sectionHash + '/' + slideAnchor);\r\n\r\n //first slide won't have slide anchor, just the section one\r\n }else if(slideIndex != null){\r\n lastScrolledSlide = slideAnchor;\r\n setUrlHash(anchorLink);\r\n }\r\n\r\n //section without slides\r\n else{\r\n setUrlHash(anchorLink);\r\n }\r\n }\r\n\r\n setBodyClass();\r\n }\r\n\r\n /**\r\n * Sets the URL hash.\r\n */\r\n function setUrlHash(url){\r\n if(options.recordHistory){\r\n location.hash = url;\r\n }else{\r\n //Mobile Chrome doesn't work the normal way, so... lets use HTML5 for phones :)\r\n if(isTouchDevice || isTouch){\r\n window.history.replaceState(undefined, undefined, '#' + url);\r\n }else{\r\n var baseUrl = window.location.href.split('#')[0];\r\n window.location.replace( baseUrl + '#' + url );\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Gets the anchor for the given slide / section. Its index will be used if there's none.\r\n */\r\n function getAnchor(element){\r\n if(!element){\r\n return null;\r\n }\r\n var anchor = element.getAttribute('data-anchor');\r\n var elementIndex = index(element);\r\n\r\n //Slide without anchor link? We take the index instead.\r\n if(anchor == null){\r\n anchor = elementIndex;\r\n }\r\n\r\n return anchor;\r\n }\r\n\r\n /**\r\n * Sets a class for the body of the page depending on the active section / slide\r\n */\r\n function setBodyClass(){\r\n var section = $(SECTION_ACTIVE_SEL)[0];\r\n var slide = $(SLIDE_ACTIVE_SEL, section)[0];\r\n\r\n var sectionAnchor = getAnchor(section);\r\n var slideAnchor = getAnchor(slide);\r\n\r\n var text = String(sectionAnchor);\r\n\r\n if(slide){\r\n text = text + '-' + slideAnchor;\r\n }\r\n\r\n //changing slash for dash to make it a valid CSS style\r\n text = text.replace('/', '-').replace('#','');\r\n\r\n //removing previous anchor classes\r\n var classRe = new RegExp('\\\\b\\\\s?' + VIEWING_PREFIX + '-[^\\\\s]+\\\\b', \"g\");\r\n $body.className = $body.className.replace(classRe, '');\r\n\r\n //adding the current anchor\r\n addClass($body, VIEWING_PREFIX + '-' + text);\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 //preventing the style p:empty{display: none;} from returning the wrong result\r\n el.style.display = 'block'\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 * Removes the auto scrolling action fired by the mouse wheel and trackpad.\r\n * After this function is called, the mousewheel and trackpad movements won't scroll through sections.\r\n */\r\n function removeMouseWheelHandler(){\r\n if (document.addEventListener) {\r\n document.removeEventListener('mousewheel', MouseWheelHandler, false); //IE9, Chrome, Safari, Oper\r\n document.removeEventListener('wheel', MouseWheelHandler, false); //Firefox\r\n document.removeEventListener('MozMousePixelScroll', MouseWheelHandler, false); //old Firefox\r\n } else {\r\n document.detachEvent('onmousewheel', MouseWheelHandler); //IE 6/7/8\r\n }\r\n }\r\n\r\n /**\r\n * Adds the auto scrolling action for the mouse wheel and trackpad.\r\n * After this function is called, the mousewheel and trackpad movements will scroll through sections\r\n * https://developer.mozilla.org/en-US/docs/Web/Events/wheel\r\n */\r\n function addMouseWheelHandler(){\r\n var prefix = '';\r\n var _addEventListener;\r\n\r\n if (window.addEventListener){\r\n _addEventListener = \"addEventListener\";\r\n }else{\r\n _addEventListener = \"attachEvent\";\r\n prefix = 'on';\r\n }\r\n\r\n // detect available wheel event\r\n var support = 'onwheel' in document.createElement('div') ? 'wheel' : // Modern browsers support \"wheel\"\r\n document.onmousewheel !== undefined ? 'mousewheel' : // Webkit and IE support at least \"mousewheel\"\r\n 'DOMMouseScroll'; // let's assume that remaining browsers are older Firefox\r\n\r\n\r\n if(support == 'DOMMouseScroll'){\r\n document[ _addEventListener ](prefix + 'MozMousePixelScroll', MouseWheelHandler, false);\r\n }\r\n\r\n //handle MozMousePixelScroll in older Firefox\r\n else{\r\n document[ _addEventListener ](prefix + support, MouseWheelHandler, false);\r\n }\r\n }\r\n\r\n /**\r\n * Binding the mousemove when the mouse's middle button is pressed\r\n */\r\n function addMiddleWheelHandler(){\r\n container.addEventListener('mousedown', mouseDownHandler);\r\n container.addEventListener('mouseup', mouseUpHandler);\r\n }\r\n\r\n /**\r\n * Unbinding the mousemove when the mouse's middle button is released\r\n */\r\n function removeMiddleWheelHandler(){\r\n container.removeEventListener('mousedown', mouseDownHandler);\r\n container.removeEventListener('mouseup', mouseUpHandler);\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(isTouchDevice || isTouch){\r\n if(options.autoScrolling){\r\n $body.removeEventListener(events.touchmove, preventBouncing, {passive: false});\r\n $body.addEventListener(events.touchmove, preventBouncing, {passive: false});\r\n }\r\n\r\n var wrapper = $(WRAPPER_SEL)[0];\r\n if(wrapper){\r\n wrapper.removeEventListener(events.touchstart, touchStartHandler);\r\n wrapper.removeEventListener(events.touchmove, touchMoveHandler, {passive: false});\r\n\r\n wrapper.addEventListener(events.touchstart, touchStartHandler);\r\n wrapper.addEventListener(events.touchmove, touchMoveHandler, {passive: false});\r\n }\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(isTouchDevice || isTouch){\r\n // normalScrollElements requires it off #2691\r\n if(options.autoScrolling){\r\n $body.removeEventListener(events.touchmove, touchMoveHandler, {passive: false});\r\n $body.removeEventListener(events.touchmove, preventBouncing, {passive: false});\r\n }\r\n\r\n var wrapper = $(WRAPPER_SEL)[0];\r\n if(wrapper){\r\n wrapper.removeEventListener(events.touchstart, touchStartHandler);\r\n wrapper.removeEventListener(events.touchmove, touchMoveHandler, {passive: false});\r\n }\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'};\r\n }\r\n\r\n //IE < 11\r\n else{\r\n pointer = { down: 'MSPointerDown', move: 'MSPointerMove'};\r\n }\r\n\r\n return pointer;\r\n }\r\n\r\n /**\r\n * Gets the pageX and pageY properties depending on the browser.\r\n * https://github.com/alvarotrigo/fullPage.js/issues/194#issuecomment-34069854\r\n */\r\n function getEventsPage(e){\r\n var events = [];\r\n\r\n events.y = (typeof e.pageY !== 'undefined' && (e.pageY || e.pageX) ? e.pageY : e.touches[0].pageY);\r\n events.x = (typeof e.pageX !== 'undefined' && (e.pageY || e.pageX) ? e.pageX : e.touches[0].pageX);\r\n\r\n //in touch devices with scrollBar:true, e.pageY is detected, but we have to deal with touch events. #1008\r\n if(isTouch && isReallyTouch(e) && options.scrollBar && typeof e.touches !== 'undefined'){\r\n events.y = e.touches[0].pageY;\r\n events.x = e.touches[0].pageX;\r\n }\r\n\r\n return events;\r\n }\r\n\r\n /**\r\n * Slides silently (with no animation) the active slider to the given slide.\r\n * @param noCallback {bool} true or defined -> no callbacks\r\n */\r\n function silentLandscapeScroll(activeSlide, noCallbacks){\r\n setScrollingSpeed(0, 'internal');\r\n\r\n if(typeof noCallbacks !== 'undefined'){\r\n //preventing firing callbacks afterSlideLoad etc.\r\n isResizing = true;\r\n }\r\n\r\n landscapeScroll(closest(activeSlide, SLIDES_WRAPPER_SEL), activeSlide);\r\n\r\n if(typeof noCallbacks !== 'undefined'){\r\n isResizing = false;\r\n }\r\n\r\n setScrollingSpeed(originals.scrollingSpeed, 'internal');\r\n }\r\n\r\n /**\r\n * Scrolls silently (with no animation) the page to the given Y position.\r\n */\r\n function silentScroll(top){\r\n // The first section can have a negative value in iOS 10. Not quite sure why: -0.0142822265625\r\n // that's why we round it to 0.\r\n var roundedTop = Math.round(top);\r\n\r\n if (options.css3 && options.autoScrolling && !options.scrollBar){\r\n var translate3d = 'translate3d(0px, -' + roundedTop + 'px, 0px)';\r\n transformContainer(translate3d, false);\r\n }\r\n else if(options.autoScrolling && !options.scrollBar){\r\n css(container, {'top': -roundedTop + 'px'});\r\n FP.test.top = -roundedTop + 'px';\r\n }\r\n else{\r\n var scrollSettings = getScrollSettings(roundedTop);\r\n setScrolling(scrollSettings.element, scrollSettings.options);\r\n }\r\n }\r\n\r\n /**\r\n * Returns the cross-browser transform string.\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 * Allowing or disallowing the mouse/swipe scroll in a given direction. (not for keyboard)\r\n * @type m (mouse) or k (keyboard)\r\n */\r\n function setIsScrollAllowed(value, direction, type){\r\n //up, down, left, right\r\n if(direction !== 'all'){\r\n isScrollAllowed[type][direction] = value;\r\n }\r\n\r\n //all directions?\r\n else{\r\n Object.keys(isScrollAllowed[type]).forEach(function(key){\r\n isScrollAllowed[type][key] = value;\r\n });\r\n }\r\n }\r\n\r\n /*\r\n * Destroys fullpage.js plugin events and optinally its html markup and styles\r\n */\r\n function destroy(all){\r\n setAutoScrolling(false, 'internal');\r\n setAllowScrolling(true);\r\n setMouseHijack(false);\r\n setKeyboardScrolling(false);\r\n addClass(container, DESTROYED);\r\n\r\n clearTimeout(afterSlideLoadsId);\r\n clearTimeout(afterSectionLoadsId);\r\n clearTimeout(resizeId);\r\n clearTimeout(scrollId);\r\n clearTimeout(scrollId2);\r\n\r\n window.removeEventListener('scroll', scrollHandler);\r\n window.removeEventListener('hashchange', hashChangeHandler);\r\n window.removeEventListener('resize', resizeHandler);\r\n\r\n document.removeEventListener('keydown', keydownHandler);\r\n document.removeEventListener('keyup', keyUpHandler);\r\n\r\n ['click', 'touchstart'].forEach(function(eventName){\r\n document.removeEventListener(eventName, delegatedEvents);\r\n });\r\n\r\n ['mouseenter', 'touchstart', 'mouseleave', 'touchend'].forEach(function(eventName){\r\n document.removeEventListener(eventName, onMouseEnterOrLeave, true); //true is required!\r\n });\r\n\r\n clearTimeout(afterSlideLoadsId);\r\n clearTimeout(afterSectionLoadsId);\r\n\r\n //lets make a mess!\r\n if(all){\r\n destroyStructure();\r\n }\r\n }\r\n\r\n /*\r\n * Removes inline styles added by fullpage.js\r\n */\r\n function destroyStructure(){\r\n //reseting the `top` or `translate` properties to 0\r\n silentScroll(0);\r\n\r\n //loading all the lazy load content\r\n $('img[data-src], source[data-src], audio[data-src], iframe[data-src]', container).forEach(function(item){\r\n setSrc(item, 'src');\r\n });\r\n\r\n $('img[data-srcset]').forEach(function(item){\r\n setSrc(item, 'srcset');\r\n });\r\n\r\n remove($(SECTION_NAV_SEL + ', ' + SLIDES_NAV_SEL + ', ' + SLIDES_ARROW_SEL));\r\n\r\n //removing inline styles\r\n css($(SECTION_SEL), {\r\n 'height': '',\r\n 'background-color' : '',\r\n 'padding': ''\r\n });\r\n\r\n css($(SLIDE_SEL), {\r\n 'width': ''\r\n });\r\n\r\n css(container, {\r\n 'height': '',\r\n 'position': '',\r\n '-ms-touch-action': '',\r\n 'touch-action': ''\r\n });\r\n\r\n css($htmlBody, {\r\n 'overflow': '',\r\n 'height': ''\r\n });\r\n\r\n // remove .fp-enabled class\r\n removeClass($('html'), ENABLED);\r\n\r\n // remove .fp-responsive class\r\n removeClass($body, RESPONSIVE);\r\n\r\n // remove all of the .fp-viewing- classes\r\n $body.className.split(/\\s+/).forEach(function (className) {\r\n if (className.indexOf(VIEWING_PREFIX) === 0) {\r\n removeClass($body, className);\r\n }\r\n });\r\n\r\n //removing added classes\r\n $(SECTION_SEL + ', ' + SLIDE_SEL).forEach(function(item){\r\n if(options.scrollOverflowHandler && options.scrollOverflow){\r\n options.scrollOverflowHandler.remove(item);\r\n }\r\n removeClass(item, TABLE + ' ' + ACTIVE + ' ' + COMPLETELY);\r\n var previousStyles = item.getAttribute('data-fp-styles');\r\n if(previousStyles){\r\n item.setAttribute('style', item.getAttribute('data-fp-styles'));\r\n }\r\n\r\n //removing anchors if they were not set using the HTML markup\r\n if(hasClass(item, SECTION) && !g_initialAnchorsInDom){\r\n item.removeAttribute('data-anchor');\r\n }\r\n });\r\n\r\n //removing the applied transition from the fullpage wrapper\r\n removeAnimation(container);\r\n\r\n //Unwrapping content\r\n [TABLE_CELL_SEL, SLIDES_CONTAINER_SEL,SLIDES_WRAPPER_SEL].forEach(function(selector){\r\n $(selector, container).forEach(function(item){\r\n //unwrap not being use in case there's no child element inside and its just text\r\n unwrap(item);\r\n });\r\n });\r\n\r\n //removing the applied transition from the fullpage wrapper\r\n css(container, {\r\n '-webkit-transition': 'none',\r\n 'transition': 'none'\r\n });\r\n\r\n //scrolling the page to the top with no animation\r\n window.scrollTo(0, 0);\r\n\r\n //removing selectors\r\n var usedSelectors = [SECTION, SLIDE, SLIDES_CONTAINER];\r\n usedSelectors.forEach(function(item){\r\n removeClass($('.' + item), item);\r\n });\r\n }\r\n\r\n /*\r\n * Sets the state for a variable with multiple states (original, and temporal)\r\n * Some variables such as `autoScrolling` or `recordHistory` might change automatically its state when using `responsive` or `autoScrolling:false`.\r\n * This function is used to keep track of both states, the original and the temporal one.\r\n * If type is not 'internal', then we assume the user is globally changing the variable.\r\n */\r\n function setVariableState(variable, value, type){\r\n options[variable] = value;\r\n if(type !== 'internal'){\r\n originals[variable] = value;\r\n }\r\n }\r\n\r\n /**\r\n * Displays warnings\r\n */\r\n function displayWarnings(){\r\n if(!isOK){\r\n // showError('error', 'Fullpage.js version 3 has changed its license to GPLv3 and it requires a `licenseKey` option. Read about it here:');\r\n // showError('error', 'https://github.com/alvarotrigo/fullPage.js#options.');\r\n }\r\n\r\n var extensions = ['fadingEffect', 'continuousHorizontal', 'scrollHorizontally', 'interlockedSlides', 'resetSliders', 'responsiveSlides', 'offsetSections', 'dragAndMove', 'scrollOverflowReset', 'parallax'];\r\n if(hasClass($('html'), ENABLED)){\r\n // showError('error', 'Fullpage.js can only be initialized once and you are doing it multiple times!');\r\n return;\r\n }\r\n\r\n // Disable mutually exclusive settings\r\n if (options.continuousVertical &&\r\n (options.loopTop || options.loopBottom)) {\r\n options.continuousVertical = false;\r\n // showError('warn', 'Option `loopTop/loopBottom` is mutually exclusive with `continuousVertical`; `continuousVertical` disabled');\r\n }\r\n\r\n if(options.scrollOverflow &&\r\n (options.scrollBar || !options.autoScrolling)){\r\n // showError('warn', 'Options scrollBar:true and autoScrolling:false are mutually exclusive with scrollOverflow:true. Sections with scrollOverflow might not work well in Firefox');\r\n }\r\n\r\n if(options.continuousVertical && (options.scrollBar || !options.autoScrolling)){\r\n options.continuousVertical = false;\r\n // showError('warn', 'Scroll bars (`scrollBar:true` or `autoScrolling:false`) are mutually exclusive with `continuousVertical`; `continuousVertical` disabled');\r\n }\r\n\r\n if(options.scrollOverflow && options.scrollOverflowHandler == null){\r\n options.scrollOverflow = false;\r\n // showError('error', 'The option `scrollOverflow:true` requires the file `scrolloverflow.min.js`. Please include it before fullPage.js.');\r\n }\r\n\r\n //using extensions? Wrong file!\r\n extensions.forEach(function(extension){\r\n //is the option set to true?\r\n if(options[extension]){\r\n // showError('warn', 'fullpage.js extensions require fullpage.extensions.min.js file instead of the usual fullpage.js. Requested: '+ extension);\r\n }\r\n });\r\n\r\n //anchors can not have the same value as any element ID or NAME\r\n options.anchors.forEach(function(name){\r\n\r\n //case insensitive selectors (http://stackoverflow.com/a/19465187/1081396)\r\n var nameAttr = [].slice.call($('[name]')).filter(function(item) {\r\n return item.getAttribute('name') && item.getAttribute('name').toLowerCase() == name.toLowerCase();\r\n });\r\n\r\n var idAttr = [].slice.call($('[id]')).filter(function(item) {\r\n return item.getAttribute('id') && item.getAttribute('id').toLowerCase() == name.toLowerCase();\r\n });\r\n\r\n if(idAttr.length || nameAttr.length ){\r\n // showError('error', 'data-anchor tags can not have the same value as any `id` element on the site (or `name` element for IE).');\r\n if(idAttr.length){\r\n // showError('error', '\"' + name + '\" is is being used by another element `id` property');\r\n }\r\n if(nameAttr.length){\r\n // showError('error', '\"' + name + '\" is is being used by another element `name` property');\r\n }\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Getting the position of the element to scroll when using jQuery animations\r\n */\r\n function getScrolledPosition(element){\r\n var position;\r\n\r\n //is not the window element and is a slide?\r\n if(element.self != window && hasClass(element, SLIDES_WRAPPER)){\r\n position = element.scrollLeft;\r\n }\r\n else if(!options.autoScrolling || options.scrollBar){\r\n position = getScrollTop();\r\n }\r\n else{\r\n position = element.offsetTop;\r\n }\r\n\r\n //gets the top property of the wrapper\r\n return position;\r\n }\r\n\r\n /**\r\n * Simulates the animated scrollTop of jQuery. Used when css3:false or scrollBar:true or autoScrolling:false\r\n * http://stackoverflow.com/a/16136789/1081396\r\n */\r\n function scrollTo(element, to, duration, callback) {\r\n var start = getScrolledPosition(element);\r\n var change = to - start;\r\n var currentTime = 0;\r\n var increment = 20;\r\n activeAnimation = true;\r\n\r\n var animateScroll = function(){\r\n if(activeAnimation){ //in order to stope it from other function whenever we want\r\n var val = to;\r\n\r\n currentTime += increment;\r\n\r\n if(duration){\r\n val = window.fp_easings[options.easing](currentTime, start, change, duration);\r\n }\r\n\r\n setScrolling(element, val);\r\n\r\n if(currentTime < duration) {\r\n setTimeout(animateScroll, increment);\r\n }else if(typeof callback !== 'undefined'){\r\n callback();\r\n }\r\n }else if (currentTime < duration){\r\n callback();\r\n }\r\n };\r\n\r\n animateScroll();\r\n }\r\n\r\n /**\r\n * Scrolls the page / slider the given number of pixels.\r\n * It will do it one or another way dependiong on the library's config.\r\n */\r\n function setScrolling(element, val){\r\n if(!options.autoScrolling || options.scrollBar || (element.self != window && hasClass(element, SLIDES_WRAPPER))){\r\n\r\n //scrolling horizontally through the slides?\r\n if(element.self != window && hasClass(element, SLIDES_WRAPPER)){\r\n element.scrollLeft = val;\r\n }\r\n //vertical scroll\r\n else{\r\n element.scrollTo(0, val);\r\n }\r\n }else{\r\n element.style.top = val + 'px';\r\n }\r\n }\r\n\r\n /**\r\n * Gets the active slide.\r\n */\r\n function getActiveSlide(){\r\n var activeSlide = $(SLIDE_ACTIVE_SEL, $(SECTION_ACTIVE_SEL)[0])[0];\r\n return nullOrSlide(activeSlide);\r\n }\r\n\r\n /**\r\n * Gets the active section.\r\n */\r\n function getActiveSection(){\r\n return new Section($(SECTION_ACTIVE_SEL)[0]);\r\n }\r\n\r\n /**\r\n * Item. Slide or Section objects share the same properties.\r\n */\r\n function Item(el, selector){\r\n this.anchor = el.getAttribute('data-anchor');\r\n this.item = el;\r\n this.index = index(el, selector);\r\n this.isLast = this.index === el.parentElement.querySelectorAll(selector).length -1;\r\n this.isFirst = !this.index;\r\n }\r\n\r\n /**\r\n * Section object\r\n */\r\n function Section(el){\r\n Item.call(this, el, SECTION_SEL);\r\n }\r\n\r\n /**\r\n * Slide object\r\n */\r\n function Slide(el){\r\n Item.call(this, el, SLIDE_SEL);\r\n }\r\n\r\n return FP;\r\n } //end of $.fn.fullpage\r\n\r\n\r\n //utils\r\n /**\r\n * Shows a message in the console of the given type.\r\n */\r\n function showError(type, text){\r\n window.console && window.console[type] && window.console[type]('fullPage: ' + text);\r\n }\r\n\r\n /**\r\n * Equivalent or jQuery function $().\r\n */\r\n function $(selector, context){\r\n context = arguments.length > 1 ? context : document;\r\n return context ? context.querySelectorAll(selector) : null;\r\n }\r\n\r\n /**\r\n * Extends a given Object properties and its childs.\r\n */\r\n function deepExtend(out) {\r\n out = out || {};\r\n for (var i = 1, len = arguments.length; i < len; ++i){\r\n var obj = arguments[i];\r\n\r\n if(!obj){\r\n continue;\r\n }\r\n\r\n for(var key in obj){\r\n if (!obj.hasOwnProperty(key)){\r\n continue;\r\n }\r\n\r\n // based on https://javascriptweblog.wordpress.com/2011/08/08/fixing-the-javascript-typeof-operator/\r\n if (Object.prototype.toString.call(obj[key]) === '[object Object]'){\r\n out[key] = deepExtend(out[key], obj[key]);\r\n continue;\r\n }\r\n\r\n out[key] = obj[key];\r\n }\r\n }\r\n return out;\r\n }\r\n\r\n /**\r\n * Checks if the passed element contains the passed class.\r\n */\r\n function hasClass(el, className){\r\n if(el == null){\r\n return false;\r\n }\r\n if (el.classList){\r\n return el.classList.contains(className);\r\n }\r\n return new RegExp('(^| )' + className + '( |$)', 'gi').test(el.className);\r\n }\r\n\r\n /**\r\n * Gets the window height. Crossbrowser.\r\n */\r\n function getWindowHeight(){\r\n return 'innerHeight' in window ? window.innerHeight : document.documentElement.offsetHeight;\r\n }\r\n\r\n /**\r\n * Set's the CSS properties for the passed item/s.\r\n * @param {NodeList|HTMLElement} items\r\n * @param {Object} props css properties and values.\r\n */\r\n function css(items, props) {\r\n items = getList(items);\r\n\r\n var key;\r\n for (key in props) {\r\n if (props.hasOwnProperty(key)) {\r\n if (key !== null) {\r\n for (var i = 0; i < items.length; i++) {\r\n var item = items[i];\r\n item.style[key] = props[key];\r\n }\r\n }\r\n }\r\n }\r\n\r\n return items;\r\n }\r\n\r\n /**\r\n * Generic function to get the previous or next element.\r\n */\r\n function until(item, selector, fn){\r\n var sibling = item[fn];\r\n while(sibling && !matches(sibling, selector)){\r\n sibling = sibling[fn];\r\n }\r\n\r\n return sibling;\r\n }\r\n\r\n /**\r\n * Gets the previous element to the passed element that matches the passed selector.\r\n */\r\n function prevUntil(item, selector){\r\n return until(item, selector, 'previousElementSibling');\r\n }\r\n\r\n /**\r\n * Gets the next element to the passed element that matches the passed selector.\r\n */\r\n function nextUntil(item, selector){\r\n return until(item, selector, 'nextElementSibling');\r\n }\r\n\r\n /**\r\n * Gets the previous element to the passed element.\r\n */\r\n function prev(item){\r\n return item.previousElementSibling;\r\n }\r\n\r\n /**\r\n * Gets the next element to the passed element.\r\n */\r\n function next(item){\r\n return item.nextElementSibling;\r\n }\r\n\r\n /**\r\n * Gets the last element from the passed list of elements.\r\n */\r\n function last(item){\r\n return item[item.length-1];\r\n }\r\n\r\n /**\r\n * Gets index from the passed element.\r\n * @param {String} selector is optional.\r\n */\r\n function index(item, selector) {\r\n item = isArrayOrList(item) ? item[0] : item;\r\n var children = selector != null? $(selector, item.parentNode) : item.parentNode.childNodes;\r\n var num = 0;\r\n for (var i=0; iafdas');\r\n * wrapInner(document.querySelector('#pepe'), element);\r\n *\r\n * https://jsfiddle.net/zexxz0tw/6/\r\n *\r\n * https://stackoverflow.com/a/21817590/1081396\r\n */\r\n function wrapInner(parent, wrapper) {\r\n if (typeof wrapper === \"string\"){\r\n wrapper = createElementFromHTML(wrapper);\r\n }\r\n\r\n parent.appendChild(wrapper);\r\n\r\n while(parent.firstChild !== wrapper){\r\n wrapper.appendChild(parent.firstChild);\r\n }\r\n }\r\n\r\n /**\r\n * Usage:\r\n * unwrap(document.querySelector('#pepe'));\r\n * unwrap(element);\r\n *\r\n * https://jsfiddle.net/szjt0hxq/1/\r\n *\r\n */\r\n function unwrap(wrapper) {\r\n var wrapperContent = document.createDocumentFragment();\r\n while (wrapper.firstChild) {\r\n wrapperContent.appendChild(wrapper.firstChild);\r\n }\r\n\r\n wrapper.parentNode.replaceChild(wrapperContent, wrapper);\r\n }\r\n\r\n /**\r\n * http://stackoverflow.com/questions/22100853/dom-pure-javascript-solution-to-jquery-closest-implementation\r\n * Returns the element or `false` if there's none\r\n */\r\n function closest(el, selector) {\r\n if(el && el.nodeType === 1){\r\n if(matches(el, selector)){\r\n return el;\r\n }\r\n return closest(el.parentNode, selector);\r\n }\r\n return null;\r\n }\r\n\r\n /**\r\n * Places one element (rel) after another one or group of them (reference).\r\n * @param {HTMLElement} reference\r\n * @param {HTMLElement|NodeList|String} el\r\n * https://jsfiddle.net/9s97hhzv/1/\r\n */\r\n function after(reference, el) {\r\n insertBefore(reference, reference.nextSibling, el);\r\n }\r\n\r\n /**\r\n * Places one element (rel) before another one or group of them (reference).\r\n * @param {HTMLElement} reference\r\n * @param {HTMLElement|NodeList|String} el\r\n * https://jsfiddle.net/9s97hhzv/1/\r\n */\r\n function before(reference, el) {\r\n insertBefore(reference, reference, el);\r\n }\r\n\r\n /**\r\n * Based in https://stackoverflow.com/a/19316024/1081396\r\n * and https://stackoverflow.com/a/4793630/1081396\r\n */\r\n function insertBefore(reference, beforeElement, el){\r\n if(!isArrayOrList(el)){\r\n if(typeof el == 'string'){\r\n el = createElementFromHTML(el);\r\n }\r\n el = [el];\r\n }\r\n\r\n for(var i = 0; i $().plugin('option', {...})\n if ( !PluginClass.prototype.option ) {\n // option setter\n PluginClass.prototype.option = function( opts ) {\n // bail out if not an object\n if ( !$.isPlainObject( opts ) ){\n return;\n }\n this.options = $.extend( true, this.options, opts );\n };\n }\n\n // make jQuery plugin\n $.fn[ namespace ] = function( arg0 /*, arg1 */ ) {\n if ( typeof arg0 == 'string' ) {\n // method call $().plugin( 'methodName', { options } )\n // shift arguments by 1\n var args = arraySlice.call( arguments, 1 );\n return methodCall( this, arg0, args );\n }\n // just $().plugin({ options })\n plainCall( this, arg0 );\n return this;\n };\n\n // $().plugin('methodName')\n function methodCall( $elems, methodName, args ) {\n var returnValue;\n var pluginMethodStr = '$().' + namespace + '(\"' + methodName + '\")';\n\n $elems.each( function( i, elem ) {\n // get instance\n var instance = $.data( elem, namespace );\n if ( !instance ) {\n logError( namespace + ' not initialized. Cannot call methods, i.e. ' +\n pluginMethodStr );\n return;\n }\n\n var method = instance[ methodName ];\n if ( !method || methodName.charAt(0) == '_' ) {\n logError( pluginMethodStr + ' is not a valid method' );\n return;\n }\n\n // apply method, get return value\n var value = method.apply( instance, args );\n // set return value if value is returned, use only first value\n returnValue = returnValue === undefined ? value : returnValue;\n });\n\n return returnValue !== undefined ? returnValue : $elems;\n }\n\n function plainCall( $elems, options ) {\n $elems.each( function( i, elem ) {\n var instance = $.data( elem, namespace );\n if ( instance ) {\n // set options & init\n instance.option( options );\n instance._init();\n } else {\n // initialize new instance\n instance = new PluginClass( elem, options );\n $.data( elem, namespace, instance );\n }\n });\n }\n\n updateJQuery( $ );\n\n}\n\n// ----- updateJQuery ----- //\n\n// set $.bridget for v1 backwards compatibility\nfunction updateJQuery( $ ) {\n if ( !$ || ( $ && $.bridget ) ) {\n return;\n }\n $.bridget = jQueryBridget;\n}\n\nupdateJQuery( jQuery || window.jQuery );\n\n// ----- ----- //\n\nreturn jQueryBridget;\n\n}));\n\n/**\n * EvEmitter v1.1.0\n * Lil' event emitter\n * MIT License\n */\n\n/* jshint unused: true, undef: true, strict: true */\n\n( function( global, factory ) {\n // universal module definition\n /* jshint strict: false */ /* globals define, module, window */\n if ( typeof define == 'function' && define.amd ) {\n // AMD - RequireJS\n define( 'ev-emitter/ev-emitter',factory );\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS - Browserify, Webpack\n module.exports = factory();\n } else {\n // Browser globals\n global.EvEmitter = factory();\n }\n\n}( typeof window != 'undefined' ? window : this, function() {\n\n\n\nfunction EvEmitter() {}\n\nvar proto = EvEmitter.prototype;\n\nproto.on = function( eventName, listener ) {\n if ( !eventName || !listener ) {\n return;\n }\n // set events hash\n var events = this._events = this._events || {};\n // set listeners array\n var listeners = events[ eventName ] = events[ eventName ] || [];\n // only add once\n if ( listeners.indexOf( listener ) == -1 ) {\n listeners.push( listener );\n }\n\n return this;\n};\n\nproto.once = function( eventName, listener ) {\n if ( !eventName || !listener ) {\n return;\n }\n // add event\n this.on( eventName, listener );\n // set once flag\n // set onceEvents hash\n var onceEvents = this._onceEvents = this._onceEvents || {};\n // set onceListeners object\n var onceListeners = onceEvents[ eventName ] = onceEvents[ eventName ] || {};\n // set flag\n onceListeners[ listener ] = true;\n\n return this;\n};\n\nproto.off = function( eventName, listener ) {\n var listeners = this._events && this._events[ eventName ];\n if ( !listeners || !listeners.length ) {\n return;\n }\n var index = listeners.indexOf( listener );\n if ( index != -1 ) {\n listeners.splice( index, 1 );\n }\n\n return this;\n};\n\nproto.emitEvent = function( eventName, args ) {\n var listeners = this._events && this._events[ eventName ];\n if ( !listeners || !listeners.length ) {\n return;\n }\n // copy over to avoid interference if .off() in listener\n listeners = listeners.slice(0);\n args = args || [];\n // once stuff\n var onceListeners = this._onceEvents && this._onceEvents[ eventName ];\n\n for ( var i=0; i < listeners.length; i++ ) {\n var listener = listeners[i]\n var isOnce = onceListeners && onceListeners[ listener ];\n if ( isOnce ) {\n // remove listener\n // remove before trigger to prevent recursion\n this.off( eventName, listener );\n // unset once flag\n delete onceListeners[ listener ];\n }\n // trigger listener\n listener.apply( this, args );\n }\n\n return this;\n};\n\nproto.allOff = function() {\n delete this._events;\n delete this._onceEvents;\n};\n\nreturn EvEmitter;\n\n}));\n\n/*!\n * getSize v2.0.3\n * measure size of elements\n * MIT license\n */\n\n/* jshint browser: true, strict: true, undef: true, unused: true */\n/* globals console: false */\n\n( function( window, factory ) {\n /* jshint strict: false */ /* globals define, module */\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( 'get-size/get-size',factory );\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory();\n } else {\n // browser global\n window.getSize = factory();\n }\n\n})( window, function factory() {\n'use strict';\n\n// -------------------------- helpers -------------------------- //\n\n// get a number from a string, not a percentage\nfunction getStyleSize( value ) {\n var num = parseFloat( value );\n // not a percent like '100%', and a number\n var isValid = value.indexOf('%') == -1 && !isNaN( num );\n return isValid && num;\n}\n\nfunction noop() {}\n\nvar logError = typeof console == 'undefined' ? noop :\n function( message ) {\n console.error( message );\n };\n\n// -------------------------- measurements -------------------------- //\n\nvar measurements = [\n 'paddingLeft',\n 'paddingRight',\n 'paddingTop',\n 'paddingBottom',\n 'marginLeft',\n 'marginRight',\n 'marginTop',\n 'marginBottom',\n 'borderLeftWidth',\n 'borderRightWidth',\n 'borderTopWidth',\n 'borderBottomWidth'\n];\n\nvar measurementsLength = measurements.length;\n\nfunction getZeroSize() {\n var size = {\n width: 0,\n height: 0,\n innerWidth: 0,\n innerHeight: 0,\n outerWidth: 0,\n outerHeight: 0\n };\n for ( var i=0; i < measurementsLength; i++ ) {\n var measurement = measurements[i];\n size[ measurement ] = 0;\n }\n return size;\n}\n\n// -------------------------- getStyle -------------------------- //\n\n/**\n * getStyle, get style of element, check for Firefox bug\n * https://bugzilla.mozilla.org/show_bug.cgi?id=548397\n */\nfunction getStyle( elem ) {\n var style = getComputedStyle( elem );\n if ( !style ) {\n logError( 'Style returned ' + style +\n '. Are you running this code in a hidden iframe on Firefox? ' +\n 'See https://bit.ly/getsizebug1' );\n }\n return style;\n}\n\n// -------------------------- setup -------------------------- //\n\nvar isSetup = false;\n\nvar isBoxSizeOuter;\n\n/**\n * setup\n * check isBoxSizerOuter\n * do on first getSize() rather than on page load for Firefox bug\n */\nfunction setup() {\n // setup once\n if ( isSetup ) {\n return;\n }\n isSetup = true;\n\n // -------------------------- box sizing -------------------------- //\n\n /**\n * Chrome & Safari measure the outer-width on style.width on border-box elems\n * IE11 & Firefox<29 measures the inner-width\n */\n var div = document.createElement('div');\n div.style.width = '200px';\n div.style.padding = '1px 2px 3px 4px';\n div.style.borderStyle = 'solid';\n div.style.borderWidth = '1px 2px 3px 4px';\n div.style.boxSizing = 'border-box';\n\n var body = document.body || document.documentElement;\n body.appendChild( div );\n var style = getStyle( div );\n // round value for browser zoom. desandro/masonry#928\n isBoxSizeOuter = Math.round( getStyleSize( style.width ) ) == 200;\n getSize.isBoxSizeOuter = isBoxSizeOuter;\n\n body.removeChild( div );\n}\n\n// -------------------------- getSize -------------------------- //\n\nfunction getSize( elem ) {\n setup();\n\n // use querySeletor if elem is string\n if ( typeof elem == 'string' ) {\n elem = document.querySelector( elem );\n }\n\n // do not proceed on non-objects\n if ( !elem || typeof elem != 'object' || !elem.nodeType ) {\n return;\n }\n\n var style = getStyle( elem );\n\n // if hidden, everything is 0\n if ( style.display == 'none' ) {\n return getZeroSize();\n }\n\n var size = {};\n size.width = elem.offsetWidth;\n size.height = elem.offsetHeight;\n\n var isBorderBox = size.isBorderBox = style.boxSizing == 'border-box';\n\n // get all measurements\n for ( var i=0; i < measurementsLength; i++ ) {\n var measurement = measurements[i];\n var value = style[ measurement ];\n var num = parseFloat( value );\n // any 'auto', 'medium' value will be 0\n size[ measurement ] = !isNaN( num ) ? num : 0;\n }\n\n var paddingWidth = size.paddingLeft + size.paddingRight;\n var paddingHeight = size.paddingTop + size.paddingBottom;\n var marginWidth = size.marginLeft + size.marginRight;\n var marginHeight = size.marginTop + size.marginBottom;\n var borderWidth = size.borderLeftWidth + size.borderRightWidth;\n var borderHeight = size.borderTopWidth + size.borderBottomWidth;\n\n var isBorderBoxSizeOuter = isBorderBox && isBoxSizeOuter;\n\n // overwrite width and height if we can get it from style\n var styleWidth = getStyleSize( style.width );\n if ( styleWidth !== false ) {\n size.width = styleWidth +\n // add padding and border unless it's already including it\n ( isBorderBoxSizeOuter ? 0 : paddingWidth + borderWidth );\n }\n\n var styleHeight = getStyleSize( style.height );\n if ( styleHeight !== false ) {\n size.height = styleHeight +\n // add padding and border unless it's already including it\n ( isBorderBoxSizeOuter ? 0 : paddingHeight + borderHeight );\n }\n\n size.innerWidth = size.width - ( paddingWidth + borderWidth );\n size.innerHeight = size.height - ( paddingHeight + borderHeight );\n\n size.outerWidth = size.width + marginWidth;\n size.outerHeight = size.height + marginHeight;\n\n return size;\n}\n\nreturn getSize;\n\n});\n\n/**\n * matchesSelector v2.0.2\n * matchesSelector( element, '.selector' )\n * MIT license\n */\n\n/*jshint browser: true, strict: true, undef: true, unused: true */\n\n( function( window, factory ) {\n /*global define: false, module: false */\n 'use strict';\n // universal module definition\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( 'desandro-matches-selector/matches-selector',factory );\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory();\n } else {\n // browser global\n window.matchesSelector = factory();\n }\n\n}( window, function factory() {\n 'use strict';\n\n var matchesMethod = ( function() {\n var ElemProto = window.Element.prototype;\n // check for the standard method name first\n if ( ElemProto.matches ) {\n return 'matches';\n }\n // check un-prefixed\n if ( ElemProto.matchesSelector ) {\n return 'matchesSelector';\n }\n // check vendor prefixes\n var prefixes = [ 'webkit', 'moz', 'ms', 'o' ];\n\n for ( var i=0; i < prefixes.length; i++ ) {\n var prefix = prefixes[i];\n var method = prefix + 'MatchesSelector';\n if ( ElemProto[ method ] ) {\n return method;\n }\n }\n })();\n\n return function matchesSelector( elem, selector ) {\n return elem[ matchesMethod ]( selector );\n };\n\n}));\n\n/**\n * Fizzy UI utils v2.0.7\n * MIT license\n */\n\n/*jshint browser: true, undef: true, unused: true, strict: true */\n\n( function( window, factory ) {\n // universal module definition\n /*jshint strict: false */ /*globals define, module, require */\n\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( 'fizzy-ui-utils/utils',[\n 'desandro-matches-selector/matches-selector'\n ], function( matchesSelector ) {\n return factory( window, matchesSelector );\n });\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory(\n window,\n require('desandro-matches-selector')\n );\n } else {\n // browser global\n window.fizzyUIUtils = factory(\n window,\n window.matchesSelector\n );\n }\n\n}( window, function factory( window, matchesSelector ) {\n\n\n\nvar utils = {};\n\n// ----- extend ----- //\n\n// extends objects\nutils.extend = function( a, b ) {\n for ( var prop in b ) {\n a[ prop ] = b[ prop ];\n }\n return a;\n};\n\n// ----- modulo ----- //\n\nutils.modulo = function( num, div ) {\n return ( ( num % div ) + div ) % div;\n};\n\n// ----- makeArray ----- //\n\nvar arraySlice = Array.prototype.slice;\n\n// turn element or nodeList into an array\nutils.makeArray = function( obj ) {\n if ( Array.isArray( obj ) ) {\n // use object if already an array\n return obj;\n }\n // return empty array if undefined or null. #6\n if ( obj === null || obj === undefined ) {\n return [];\n }\n\n var isArrayLike = typeof obj == 'object' && typeof obj.length == 'number';\n if ( isArrayLike ) {\n // convert nodeList to array\n return arraySlice.call( obj );\n }\n\n // array of single index\n return [ obj ];\n};\n\n// ----- removeFrom ----- //\n\nutils.removeFrom = function( ary, obj ) {\n var index = ary.indexOf( obj );\n if ( index != -1 ) {\n ary.splice( index, 1 );\n }\n};\n\n// ----- getParent ----- //\n\nutils.getParent = function( elem, selector ) {\n while ( elem.parentNode && elem != document.body ) {\n elem = elem.parentNode;\n if ( matchesSelector( elem, selector ) ) {\n return elem;\n }\n }\n};\n\n// ----- getQueryElement ----- //\n\n// use element as selector string\nutils.getQueryElement = function( elem ) {\n if ( typeof elem == 'string' ) {\n return document.querySelector( elem );\n }\n return elem;\n};\n\n// ----- handleEvent ----- //\n\n// enable .ontype to trigger from .addEventListener( elem, 'type' )\nutils.handleEvent = function( event ) {\n var method = 'on' + event.type;\n if ( this[ method ] ) {\n this[ method ]( event );\n }\n};\n\n// ----- filterFindElements ----- //\n\nutils.filterFindElements = function( elems, selector ) {\n // make array of elems\n elems = utils.makeArray( elems );\n var ffElems = [];\n\n elems.forEach( function( elem ) {\n // check that elem is an actual element\n if ( !( elem instanceof HTMLElement ) ) {\n return;\n }\n // add elem if no selector\n if ( !selector ) {\n ffElems.push( elem );\n return;\n }\n // filter & find items if we have a selector\n // filter\n if ( matchesSelector( elem, selector ) ) {\n ffElems.push( elem );\n }\n // find children\n var childElems = elem.querySelectorAll( selector );\n // concat childElems to filterFound array\n for ( var i=0; i < childElems.length; i++ ) {\n ffElems.push( childElems[i] );\n }\n });\n\n return ffElems;\n};\n\n// ----- debounceMethod ----- //\n\nutils.debounceMethod = function( _class, methodName, threshold ) {\n threshold = threshold || 100;\n // original method\n var method = _class.prototype[ methodName ];\n var timeoutName = methodName + 'Timeout';\n\n _class.prototype[ methodName ] = function() {\n var timeout = this[ timeoutName ];\n clearTimeout( timeout );\n\n var args = arguments;\n var _this = this;\n this[ timeoutName ] = setTimeout( function() {\n method.apply( _this, args );\n delete _this[ timeoutName ];\n }, threshold );\n };\n};\n\n// ----- docReady ----- //\n\nutils.docReady = function( callback ) {\n var readyState = document.readyState;\n if ( readyState == 'complete' || readyState == 'interactive' ) {\n // do async to allow for other scripts to run. metafizzy/flickity#441\n setTimeout( callback );\n } else {\n document.addEventListener( 'DOMContentLoaded', callback );\n }\n};\n\n// ----- htmlInit ----- //\n\n// http://jamesroberts.name/blog/2010/02/22/string-functions-for-javascript-trim-to-camel-case-to-dashed-and-to-underscore/\nutils.toDashed = function( str ) {\n return str.replace( /(.)([A-Z])/g, function( match, $1, $2 ) {\n return $1 + '-' + $2;\n }).toLowerCase();\n};\n\nvar console = window.console;\n/**\n * allow user to initialize classes via [data-namespace] or .js-namespace class\n * htmlInit( Widget, 'widgetName' )\n * options are parsed from data-namespace-options\n */\nutils.htmlInit = function( WidgetClass, namespace ) {\n utils.docReady( function() {\n var dashedNamespace = utils.toDashed( namespace );\n var dataAttr = 'data-' + dashedNamespace;\n var dataAttrElems = document.querySelectorAll( '[' + dataAttr + ']' );\n var jsDashElems = document.querySelectorAll( '.js-' + dashedNamespace );\n var elems = utils.makeArray( dataAttrElems )\n .concat( utils.makeArray( jsDashElems ) );\n var dataOptionsAttr = dataAttr + '-options';\n var jQuery = window.jQuery;\n\n elems.forEach( function( elem ) {\n var attr = elem.getAttribute( dataAttr ) ||\n elem.getAttribute( dataOptionsAttr );\n var options;\n try {\n options = attr && JSON.parse( attr );\n } catch ( error ) {\n // log error, do not initialize\n if ( console ) {\n console.error( 'Error parsing ' + dataAttr + ' on ' + elem.className +\n ': ' + error );\n }\n return;\n }\n // initialize\n var instance = new WidgetClass( elem, options );\n // make available via $().data('namespace')\n if ( jQuery ) {\n jQuery.data( elem, namespace, instance );\n }\n });\n\n });\n};\n\n// ----- ----- //\n\nreturn utils;\n\n}));\n\n/**\n * Outlayer Item\n */\n\n( function( window, factory ) {\n // universal module definition\n /* jshint strict: false */ /* globals define, module, require */\n if ( typeof define == 'function' && define.amd ) {\n // AMD - RequireJS\n define( 'outlayer/item',[\n 'ev-emitter/ev-emitter',\n 'get-size/get-size'\n ],\n factory\n );\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS - Browserify, Webpack\n module.exports = factory(\n require('ev-emitter'),\n require('get-size')\n );\n } else {\n // browser global\n window.Outlayer = {};\n window.Outlayer.Item = factory(\n window.EvEmitter,\n window.getSize\n );\n }\n\n}( window, function factory( EvEmitter, getSize ) {\n'use strict';\n\n// ----- helpers ----- //\n\nfunction isEmptyObj( obj ) {\n for ( var prop in obj ) {\n return false;\n }\n prop = null;\n return true;\n}\n\n// -------------------------- CSS3 support -------------------------- //\n\n\nvar docElemStyle = document.documentElement.style;\n\nvar transitionProperty = typeof docElemStyle.transition == 'string' ?\n 'transition' : 'WebkitTransition';\nvar transformProperty = typeof docElemStyle.transform == 'string' ?\n 'transform' : 'WebkitTransform';\n\nvar transitionEndEvent = {\n WebkitTransition: 'webkitTransitionEnd',\n transition: 'transitionend'\n}[ transitionProperty ];\n\n// cache all vendor properties that could have vendor prefix\nvar vendorProperties = {\n transform: transformProperty,\n transition: transitionProperty,\n transitionDuration: transitionProperty + 'Duration',\n transitionProperty: transitionProperty + 'Property',\n transitionDelay: transitionProperty + 'Delay'\n};\n\n// -------------------------- Item -------------------------- //\n\nfunction Item( element, layout ) {\n if ( !element ) {\n return;\n }\n\n this.element = element;\n // parent layout class, i.e. Masonry, Isotope, or Packery\n this.layout = layout;\n this.position = {\n x: 0,\n y: 0\n };\n\n this._create();\n}\n\n// inherit EvEmitter\nvar proto = Item.prototype = Object.create( EvEmitter.prototype );\nproto.constructor = Item;\n\nproto._create = function() {\n // transition objects\n this._transn = {\n ingProperties: {},\n clean: {},\n onEnd: {}\n };\n\n this.css({\n position: 'absolute'\n });\n};\n\n// trigger specified handler for event type\nproto.handleEvent = function( event ) {\n var method = 'on' + event.type;\n if ( this[ method ] ) {\n this[ method ]( event );\n }\n};\n\nproto.getSize = function() {\n this.size = getSize( this.element );\n};\n\n/**\n * apply CSS styles to element\n * @param {Object} style\n */\nproto.css = function( style ) {\n var elemStyle = this.element.style;\n\n for ( var prop in style ) {\n // use vendor property if available\n var supportedProp = vendorProperties[ prop ] || prop;\n elemStyle[ supportedProp ] = style[ prop ];\n }\n};\n\n // measure position, and sets it\nproto.getPosition = function() {\n var style = getComputedStyle( this.element );\n var isOriginLeft = this.layout._getOption('originLeft');\n var isOriginTop = this.layout._getOption('originTop');\n var xValue = style[ isOriginLeft ? 'left' : 'right' ];\n var yValue = style[ isOriginTop ? 'top' : 'bottom' ];\n var x = parseFloat( xValue );\n var y = parseFloat( yValue );\n // convert percent to pixels\n var layoutSize = this.layout.size;\n if ( xValue.indexOf('%') != -1 ) {\n x = ( x / 100 ) * layoutSize.width;\n }\n if ( yValue.indexOf('%') != -1 ) {\n y = ( y / 100 ) * layoutSize.height;\n }\n // clean up 'auto' or other non-integer values\n x = isNaN( x ) ? 0 : x;\n y = isNaN( y ) ? 0 : y;\n // remove padding from measurement\n x -= isOriginLeft ? layoutSize.paddingLeft : layoutSize.paddingRight;\n y -= isOriginTop ? layoutSize.paddingTop : layoutSize.paddingBottom;\n\n this.position.x = x;\n this.position.y = y;\n};\n\n// set settled position, apply padding\nproto.layoutPosition = function() {\n var layoutSize = this.layout.size;\n var style = {};\n var isOriginLeft = this.layout._getOption('originLeft');\n var isOriginTop = this.layout._getOption('originTop');\n\n // x\n var xPadding = isOriginLeft ? 'paddingLeft' : 'paddingRight';\n var xProperty = isOriginLeft ? 'left' : 'right';\n var xResetProperty = isOriginLeft ? 'right' : 'left';\n\n var x = this.position.x + layoutSize[ xPadding ];\n // set in percentage or pixels\n style[ xProperty ] = this.getXValue( x );\n // reset other property\n style[ xResetProperty ] = '';\n\n // y\n var yPadding = isOriginTop ? 'paddingTop' : 'paddingBottom';\n var yProperty = isOriginTop ? 'top' : 'bottom';\n var yResetProperty = isOriginTop ? 'bottom' : 'top';\n\n var y = this.position.y + layoutSize[ yPadding ];\n // set in percentage or pixels\n style[ yProperty ] = this.getYValue( y );\n // reset other property\n style[ yResetProperty ] = '';\n\n this.css( style );\n this.emitEvent( 'layout', [ this ] );\n};\n\nproto.getXValue = function( x ) {\n var isHorizontal = this.layout._getOption('horizontal');\n return this.layout.options.percentPosition && !isHorizontal ?\n ( ( x / this.layout.size.width ) * 100 ) + '%' : x + 'px';\n};\n\nproto.getYValue = function( y ) {\n var isHorizontal = this.layout._getOption('horizontal');\n return this.layout.options.percentPosition && isHorizontal ?\n ( ( y / this.layout.size.height ) * 100 ) + '%' : y + 'px';\n};\n\nproto._transitionTo = function( x, y ) {\n this.getPosition();\n // get current x & y from top/left\n var curX = this.position.x;\n var curY = this.position.y;\n\n var didNotMove = x == this.position.x && y == this.position.y;\n\n // save end position\n this.setPosition( x, y );\n\n // if did not move and not transitioning, just go to layout\n if ( didNotMove && !this.isTransitioning ) {\n this.layoutPosition();\n return;\n }\n\n var transX = x - curX;\n var transY = y - curY;\n var transitionStyle = {};\n transitionStyle.transform = this.getTranslate( transX, transY );\n\n this.transition({\n to: transitionStyle,\n onTransitionEnd: {\n transform: this.layoutPosition\n },\n isCleaning: true\n });\n};\n\nproto.getTranslate = function( x, y ) {\n // flip cooridinates if origin on right or bottom\n var isOriginLeft = this.layout._getOption('originLeft');\n var isOriginTop = this.layout._getOption('originTop');\n x = isOriginLeft ? x : -x;\n y = isOriginTop ? y : -y;\n return 'translate3d(' + x + 'px, ' + y + 'px, 0)';\n};\n\n// non transition + transform support\nproto.goTo = function( x, y ) {\n this.setPosition( x, y );\n this.layoutPosition();\n};\n\nproto.moveTo = proto._transitionTo;\n\nproto.setPosition = function( x, y ) {\n this.position.x = parseFloat( x );\n this.position.y = parseFloat( y );\n};\n\n// ----- transition ----- //\n\n/**\n * @param {Object} style - CSS\n * @param {Function} onTransitionEnd\n */\n\n// non transition, just trigger callback\nproto._nonTransition = function( args ) {\n this.css( args.to );\n if ( args.isCleaning ) {\n this._removeStyles( args.to );\n }\n for ( var prop in args.onTransitionEnd ) {\n args.onTransitionEnd[ prop ].call( this );\n }\n};\n\n/**\n * proper transition\n * @param {Object} args - arguments\n * @param {Object} to - style to transition to\n * @param {Object} from - style to start transition from\n * @param {Boolean} isCleaning - removes transition styles after transition\n * @param {Function} onTransitionEnd - callback\n */\nproto.transition = function( args ) {\n // redirect to nonTransition if no transition duration\n if ( !parseFloat( this.layout.options.transitionDuration ) ) {\n this._nonTransition( args );\n return;\n }\n\n var _transition = this._transn;\n // keep track of onTransitionEnd callback by css property\n for ( var prop in args.onTransitionEnd ) {\n _transition.onEnd[ prop ] = args.onTransitionEnd[ prop ];\n }\n // keep track of properties that are transitioning\n for ( prop in args.to ) {\n _transition.ingProperties[ prop ] = true;\n // keep track of properties to clean up when transition is done\n if ( args.isCleaning ) {\n _transition.clean[ prop ] = true;\n }\n }\n\n // set from styles\n if ( args.from ) {\n this.css( args.from );\n // force redraw. http://blog.alexmaccaw.com/css-transitions\n var h = this.element.offsetHeight;\n // hack for JSHint to hush about unused var\n h = null;\n }\n // enable transition\n this.enableTransition( args.to );\n // set styles that are transitioning\n this.css( args.to );\n\n this.isTransitioning = true;\n\n};\n\n// dash before all cap letters, including first for\n// WebkitTransform => -webkit-transform\nfunction toDashedAll( str ) {\n return str.replace( /([A-Z])/g, function( $1 ) {\n return '-' + $1.toLowerCase();\n });\n}\n\nvar transitionProps = 'opacity,' + toDashedAll( transformProperty );\n\nproto.enableTransition = function(/* style */) {\n // HACK changing transitionProperty during a transition\n // will cause transition to jump\n if ( this.isTransitioning ) {\n return;\n }\n\n // make `transition: foo, bar, baz` from style object\n // HACK un-comment this when enableTransition can work\n // while a transition is happening\n // var transitionValues = [];\n // for ( var prop in style ) {\n // // dash-ify camelCased properties like WebkitTransition\n // prop = vendorProperties[ prop ] || prop;\n // transitionValues.push( toDashedAll( prop ) );\n // }\n // munge number to millisecond, to match stagger\n var duration = this.layout.options.transitionDuration;\n duration = typeof duration == 'number' ? duration + 'ms' : duration;\n // enable transition styles\n this.css({\n transitionProperty: transitionProps,\n transitionDuration: duration,\n transitionDelay: this.staggerDelay || 0\n });\n // listen for transition end event\n this.element.addEventListener( transitionEndEvent, this, false );\n};\n\n// ----- events ----- //\n\nproto.onwebkitTransitionEnd = function( event ) {\n this.ontransitionend( event );\n};\n\nproto.onotransitionend = function( event ) {\n this.ontransitionend( event );\n};\n\n// properties that I munge to make my life easier\nvar dashedVendorProperties = {\n '-webkit-transform': 'transform'\n};\n\nproto.ontransitionend = function( event ) {\n // disregard bubbled events from children\n if ( event.target !== this.element ) {\n return;\n }\n var _transition = this._transn;\n // get property name of transitioned property, convert to prefix-free\n var propertyName = dashedVendorProperties[ event.propertyName ] || event.propertyName;\n\n // remove property that has completed transitioning\n delete _transition.ingProperties[ propertyName ];\n // check if any properties are still transitioning\n if ( isEmptyObj( _transition.ingProperties ) ) {\n // all properties have completed transitioning\n this.disableTransition();\n }\n // clean style\n if ( propertyName in _transition.clean ) {\n // clean up style\n this.element.style[ event.propertyName ] = '';\n delete _transition.clean[ propertyName ];\n }\n // trigger onTransitionEnd callback\n if ( propertyName in _transition.onEnd ) {\n var onTransitionEnd = _transition.onEnd[ propertyName ];\n onTransitionEnd.call( this );\n delete _transition.onEnd[ propertyName ];\n }\n\n this.emitEvent( 'transitionEnd', [ this ] );\n};\n\nproto.disableTransition = function() {\n this.removeTransitionStyles();\n this.element.removeEventListener( transitionEndEvent, this, false );\n this.isTransitioning = false;\n};\n\n/**\n * removes style property from element\n * @param {Object} style\n**/\nproto._removeStyles = function( style ) {\n // clean up transition styles\n var cleanStyle = {};\n for ( var prop in style ) {\n cleanStyle[ prop ] = '';\n }\n this.css( cleanStyle );\n};\n\nvar cleanTransitionStyle = {\n transitionProperty: '',\n transitionDuration: '',\n transitionDelay: ''\n};\n\nproto.removeTransitionStyles = function() {\n // remove transition\n this.css( cleanTransitionStyle );\n};\n\n// ----- stagger ----- //\n\nproto.stagger = function( delay ) {\n delay = isNaN( delay ) ? 0 : delay;\n this.staggerDelay = delay + 'ms';\n};\n\n// ----- show/hide/remove ----- //\n\n// remove element from DOM\nproto.removeElem = function() {\n this.element.parentNode.removeChild( this.element );\n // remove display: none\n this.css({ display: '' });\n this.emitEvent( 'remove', [ this ] );\n};\n\nproto.remove = function() {\n // just remove element if no transition support or no transition\n if ( !transitionProperty || !parseFloat( this.layout.options.transitionDuration ) ) {\n this.removeElem();\n return;\n }\n\n // start transition\n this.once( 'transitionEnd', function() {\n this.removeElem();\n });\n this.hide();\n};\n\nproto.reveal = function() {\n delete this.isHidden;\n // remove display: none\n this.css({ display: '' });\n\n var options = this.layout.options;\n\n var onTransitionEnd = {};\n var transitionEndProperty = this.getHideRevealTransitionEndProperty('visibleStyle');\n onTransitionEnd[ transitionEndProperty ] = this.onRevealTransitionEnd;\n\n this.transition({\n from: options.hiddenStyle,\n to: options.visibleStyle,\n isCleaning: true,\n onTransitionEnd: onTransitionEnd\n });\n};\n\nproto.onRevealTransitionEnd = function() {\n // check if still visible\n // during transition, item may have been hidden\n if ( !this.isHidden ) {\n this.emitEvent('reveal');\n }\n};\n\n/**\n * get style property use for hide/reveal transition end\n * @param {String} styleProperty - hiddenStyle/visibleStyle\n * @returns {String}\n */\nproto.getHideRevealTransitionEndProperty = function( styleProperty ) {\n var optionStyle = this.layout.options[ styleProperty ];\n // use opacity\n if ( optionStyle.opacity ) {\n return 'opacity';\n }\n // get first property\n for ( var prop in optionStyle ) {\n return prop;\n }\n};\n\nproto.hide = function() {\n // set flag\n this.isHidden = true;\n // remove display: none\n this.css({ display: '' });\n\n var options = this.layout.options;\n\n var onTransitionEnd = {};\n var transitionEndProperty = this.getHideRevealTransitionEndProperty('hiddenStyle');\n onTransitionEnd[ transitionEndProperty ] = this.onHideTransitionEnd;\n\n this.transition({\n from: options.visibleStyle,\n to: options.hiddenStyle,\n // keep hidden stuff hidden\n isCleaning: true,\n onTransitionEnd: onTransitionEnd\n });\n};\n\nproto.onHideTransitionEnd = function() {\n // check if still hidden\n // during transition, item may have been un-hidden\n if ( this.isHidden ) {\n this.css({ display: 'none' });\n this.emitEvent('hide');\n }\n};\n\nproto.destroy = function() {\n this.css({\n position: '',\n left: '',\n right: '',\n top: '',\n bottom: '',\n transition: '',\n transform: ''\n });\n};\n\nreturn Item;\n\n}));\n\n/*!\n * Outlayer v2.1.1\n * the brains and guts of a layout library\n * MIT license\n */\n\n( function( window, factory ) {\n 'use strict';\n // universal module definition\n /* jshint strict: false */ /* globals define, module, require */\n if ( typeof define == 'function' && define.amd ) {\n // AMD - RequireJS\n define( 'outlayer/outlayer',[\n 'ev-emitter/ev-emitter',\n 'get-size/get-size',\n 'fizzy-ui-utils/utils',\n './item'\n ],\n function( EvEmitter, getSize, utils, Item ) {\n return factory( window, EvEmitter, getSize, utils, Item);\n }\n );\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS - Browserify, Webpack\n module.exports = factory(\n window,\n require('ev-emitter'),\n require('get-size'),\n require('fizzy-ui-utils'),\n require('./item')\n );\n } else {\n // browser global\n window.Outlayer = factory(\n window,\n window.EvEmitter,\n window.getSize,\n window.fizzyUIUtils,\n window.Outlayer.Item\n );\n }\n\n}( window, function factory( window, EvEmitter, getSize, utils, Item ) {\n'use strict';\n\n// ----- vars ----- //\n\nvar console = window.console;\nvar jQuery = window.jQuery;\nvar noop = function() {};\n\n// -------------------------- Outlayer -------------------------- //\n\n// globally unique identifiers\nvar GUID = 0;\n// internal store of all Outlayer intances\nvar instances = {};\n\n\n/**\n * @param {Element, String} element\n * @param {Object} options\n * @constructor\n */\nfunction Outlayer( element, options ) {\n var queryElement = utils.getQueryElement( element );\n if ( !queryElement ) {\n if ( console ) {\n console.error( 'Bad element for ' + this.constructor.namespace +\n ': ' + ( queryElement || element ) );\n }\n return;\n }\n this.element = queryElement;\n // add jQuery\n if ( jQuery ) {\n this.$element = jQuery( this.element );\n }\n\n // options\n this.options = utils.extend( {}, this.constructor.defaults );\n this.option( options );\n\n // add id for Outlayer.getFromElement\n var id = ++GUID;\n this.element.outlayerGUID = id; // expando\n instances[ id ] = this; // associate via id\n\n // kick it off\n this._create();\n\n var isInitLayout = this._getOption('initLayout');\n if ( isInitLayout ) {\n this.layout();\n }\n}\n\n// settings are for internal use only\nOutlayer.namespace = 'outlayer';\nOutlayer.Item = Item;\n\n// default options\nOutlayer.defaults = {\n containerStyle: {\n position: 'relative'\n },\n initLayout: true,\n originLeft: true,\n originTop: true,\n resize: true,\n resizeContainer: true,\n // item options\n transitionDuration: '0.4s',\n hiddenStyle: {\n opacity: 0,\n transform: 'scale(0.001)'\n },\n visibleStyle: {\n opacity: 1,\n transform: 'scale(1)'\n }\n};\n\nvar proto = Outlayer.prototype;\n// inherit EvEmitter\nutils.extend( proto, EvEmitter.prototype );\n\n/**\n * set options\n * @param {Object} opts\n */\nproto.option = function( opts ) {\n utils.extend( this.options, opts );\n};\n\n/**\n * get backwards compatible option value, check old name\n */\nproto._getOption = function( option ) {\n var oldOption = this.constructor.compatOptions[ option ];\n return oldOption && this.options[ oldOption ] !== undefined ?\n this.options[ oldOption ] : this.options[ option ];\n};\n\nOutlayer.compatOptions = {\n // currentName: oldName\n initLayout: 'isInitLayout',\n horizontal: 'isHorizontal',\n layoutInstant: 'isLayoutInstant',\n originLeft: 'isOriginLeft',\n originTop: 'isOriginTop',\n resize: 'isResizeBound',\n resizeContainer: 'isResizingContainer'\n};\n\nproto._create = function() {\n // get items from children\n this.reloadItems();\n // elements that affect layout, but are not laid out\n this.stamps = [];\n this.stamp( this.options.stamp );\n // set container style\n utils.extend( this.element.style, this.options.containerStyle );\n\n // bind resize method\n var canBindResize = this._getOption('resize');\n if ( canBindResize ) {\n this.bindResize();\n }\n};\n\n// goes through all children again and gets bricks in proper order\nproto.reloadItems = function() {\n // collection of item elements\n this.items = this._itemize( this.element.children );\n};\n\n\n/**\n * turn elements into Outlayer.Items to be used in layout\n * @param {Array or NodeList or HTMLElement} elems\n * @returns {Array} items - collection of new Outlayer Items\n */\nproto._itemize = function( elems ) {\n\n var itemElems = this._filterFindItemElements( elems );\n var Item = this.constructor.Item;\n\n // create new Outlayer Items for collection\n var items = [];\n for ( var i=0; i < itemElems.length; i++ ) {\n var elem = itemElems[i];\n var item = new Item( elem, this );\n items.push( item );\n }\n\n return items;\n};\n\n/**\n * get item elements to be used in layout\n * @param {Array or NodeList or HTMLElement} elems\n * @returns {Array} items - item elements\n */\nproto._filterFindItemElements = function( elems ) {\n return utils.filterFindElements( elems, this.options.itemSelector );\n};\n\n/**\n * getter method for getting item elements\n * @returns {Array} elems - collection of item elements\n */\nproto.getItemElements = function() {\n return this.items.map( function( item ) {\n return item.element;\n });\n};\n\n// ----- init & layout ----- //\n\n/**\n * lays out all items\n */\nproto.layout = function() {\n this._resetLayout();\n this._manageStamps();\n\n // don't animate first layout\n var layoutInstant = this._getOption('layoutInstant');\n var isInstant = layoutInstant !== undefined ?\n layoutInstant : !this._isLayoutInited;\n this.layoutItems( this.items, isInstant );\n\n // flag for initalized\n this._isLayoutInited = true;\n};\n\n// _init is alias for layout\nproto._init = proto.layout;\n\n/**\n * logic before any new layout\n */\nproto._resetLayout = function() {\n this.getSize();\n};\n\n\nproto.getSize = function() {\n this.size = getSize( this.element );\n};\n\n/**\n * get measurement from option, for columnWidth, rowHeight, gutter\n * if option is String -> get element from selector string, & get size of element\n * if option is Element -> get size of element\n * else use option as a number\n *\n * @param {String} measurement\n * @param {String} size - width or height\n * @private\n */\nproto._getMeasurement = function( measurement, size ) {\n var option = this.options[ measurement ];\n var elem;\n if ( !option ) {\n // default to 0\n this[ measurement ] = 0;\n } else {\n // use option as an element\n if ( typeof option == 'string' ) {\n elem = this.element.querySelector( option );\n } else if ( option instanceof HTMLElement ) {\n elem = option;\n }\n // use size of element, if element\n this[ measurement ] = elem ? getSize( elem )[ size ] : option;\n }\n};\n\n/**\n * layout a collection of item elements\n * @api public\n */\nproto.layoutItems = function( items, isInstant ) {\n items = this._getItemsForLayout( items );\n\n this._layoutItems( items, isInstant );\n\n this._postLayout();\n};\n\n/**\n * get the items to be laid out\n * you may want to skip over some items\n * @param {Array} items\n * @returns {Array} items\n */\nproto._getItemsForLayout = function( items ) {\n return items.filter( function( item ) {\n return !item.isIgnored;\n });\n};\n\n/**\n * layout items\n * @param {Array} items\n * @param {Boolean} isInstant\n */\nproto._layoutItems = function( items, isInstant ) {\n this._emitCompleteOnItems( 'layout', items );\n\n if ( !items || !items.length ) {\n // no items, emit event with empty array\n return;\n }\n\n var queue = [];\n\n items.forEach( function( item ) {\n // get x/y object from method\n var position = this._getItemLayoutPosition( item );\n // enqueue\n position.item = item;\n position.isInstant = isInstant || item.isLayoutInstant;\n queue.push( position );\n }, this );\n\n this._processLayoutQueue( queue );\n};\n\n/**\n * get item layout position\n * @param {Outlayer.Item} item\n * @returns {Object} x and y position\n */\nproto._getItemLayoutPosition = function( /* item */ ) {\n return {\n x: 0,\n y: 0\n };\n};\n\n/**\n * iterate over array and position each item\n * Reason being - separating this logic prevents 'layout invalidation'\n * thx @paul_irish\n * @param {Array} queue\n */\nproto._processLayoutQueue = function( queue ) {\n this.updateStagger();\n queue.forEach( function( obj, i ) {\n this._positionItem( obj.item, obj.x, obj.y, obj.isInstant, i );\n }, this );\n};\n\n// set stagger from option in milliseconds number\nproto.updateStagger = function() {\n var stagger = this.options.stagger;\n if ( stagger === null || stagger === undefined ) {\n this.stagger = 0;\n return;\n }\n this.stagger = getMilliseconds( stagger );\n return this.stagger;\n};\n\n/**\n * Sets position of item in DOM\n * @param {Outlayer.Item} item\n * @param {Number} x - horizontal position\n * @param {Number} y - vertical position\n * @param {Boolean} isInstant - disables transitions\n */\nproto._positionItem = function( item, x, y, isInstant, i ) {\n if ( isInstant ) {\n // if not transition, just set CSS\n item.goTo( x, y );\n } else {\n item.stagger( i * this.stagger );\n item.moveTo( x, y );\n }\n};\n\n/**\n * Any logic you want to do after each layout,\n * i.e. size the container\n */\nproto._postLayout = function() {\n this.resizeContainer();\n};\n\nproto.resizeContainer = function() {\n var isResizingContainer = this._getOption('resizeContainer');\n if ( !isResizingContainer ) {\n return;\n }\n var size = this._getContainerSize();\n if ( size ) {\n this._setContainerMeasure( size.width, true );\n this._setContainerMeasure( size.height, false );\n }\n};\n\n/**\n * Sets width or height of container if returned\n * @returns {Object} size\n * @param {Number} width\n * @param {Number} height\n */\nproto._getContainerSize = noop;\n\n/**\n * @param {Number} measure - size of width or height\n * @param {Boolean} isWidth\n */\nproto._setContainerMeasure = function( measure, isWidth ) {\n if ( measure === undefined ) {\n return;\n }\n\n var elemSize = this.size;\n // add padding and border width if border box\n if ( elemSize.isBorderBox ) {\n measure += isWidth ? elemSize.paddingLeft + elemSize.paddingRight +\n elemSize.borderLeftWidth + elemSize.borderRightWidth :\n elemSize.paddingBottom + elemSize.paddingTop +\n elemSize.borderTopWidth + elemSize.borderBottomWidth;\n }\n\n measure = Math.max( measure, 0 );\n this.element.style[ isWidth ? 'width' : 'height' ] = measure + 'px';\n};\n\n/**\n * emit eventComplete on a collection of items events\n * @param {String} eventName\n * @param {Array} items - Outlayer.Items\n */\nproto._emitCompleteOnItems = function( eventName, items ) {\n var _this = this;\n function onComplete() {\n _this.dispatchEvent( eventName + 'Complete', null, [ items ] );\n }\n\n var count = items.length;\n if ( !items || !count ) {\n onComplete();\n return;\n }\n\n var doneCount = 0;\n function tick() {\n doneCount++;\n if ( doneCount == count ) {\n onComplete();\n }\n }\n\n // bind callback\n items.forEach( function( item ) {\n item.once( eventName, tick );\n });\n};\n\n/**\n * emits events via EvEmitter and jQuery events\n * @param {String} type - name of event\n * @param {Event} event - original event\n * @param {Array} args - extra arguments\n */\nproto.dispatchEvent = function( type, event, args ) {\n // add original event to arguments\n var emitArgs = event ? [ event ].concat( args ) : args;\n this.emitEvent( type, emitArgs );\n\n if ( jQuery ) {\n // set this.$element\n this.$element = this.$element || jQuery( this.element );\n if ( event ) {\n // create jQuery event\n var $event = jQuery.Event( event );\n $event.type = type;\n this.$element.trigger( $event, args );\n } else {\n // just trigger with type if no event available\n this.$element.trigger( type, args );\n }\n }\n};\n\n// -------------------------- ignore & stamps -------------------------- //\n\n\n/**\n * keep item in collection, but do not lay it out\n * ignored items do not get skipped in layout\n * @param {Element} elem\n */\nproto.ignore = function( elem ) {\n var item = this.getItem( elem );\n if ( item ) {\n item.isIgnored = true;\n }\n};\n\n/**\n * return item to layout collection\n * @param {Element} elem\n */\nproto.unignore = function( elem ) {\n var item = this.getItem( elem );\n if ( item ) {\n delete item.isIgnored;\n }\n};\n\n/**\n * adds elements to stamps\n * @param {NodeList, Array, Element, or String} elems\n */\nproto.stamp = function( elems ) {\n elems = this._find( elems );\n if ( !elems ) {\n return;\n }\n\n this.stamps = this.stamps.concat( elems );\n // ignore\n elems.forEach( this.ignore, this );\n};\n\n/**\n * removes elements to stamps\n * @param {NodeList, Array, or Element} elems\n */\nproto.unstamp = function( elems ) {\n elems = this._find( elems );\n if ( !elems ){\n return;\n }\n\n elems.forEach( function( elem ) {\n // filter out removed stamp elements\n utils.removeFrom( this.stamps, elem );\n this.unignore( elem );\n }, this );\n};\n\n/**\n * finds child elements\n * @param {NodeList, Array, Element, or String} elems\n * @returns {Array} elems\n */\nproto._find = function( elems ) {\n if ( !elems ) {\n return;\n }\n // if string, use argument as selector string\n if ( typeof elems == 'string' ) {\n elems = this.element.querySelectorAll( elems );\n }\n elems = utils.makeArray( elems );\n return elems;\n};\n\nproto._manageStamps = function() {\n if ( !this.stamps || !this.stamps.length ) {\n return;\n }\n\n this._getBoundingRect();\n\n this.stamps.forEach( this._manageStamp, this );\n};\n\n// update boundingLeft / Top\nproto._getBoundingRect = function() {\n // get bounding rect for container element\n var boundingRect = this.element.getBoundingClientRect();\n var size = this.size;\n this._boundingRect = {\n left: boundingRect.left + size.paddingLeft + size.borderLeftWidth,\n top: boundingRect.top + size.paddingTop + size.borderTopWidth,\n right: boundingRect.right - ( size.paddingRight + size.borderRightWidth ),\n bottom: boundingRect.bottom - ( size.paddingBottom + size.borderBottomWidth )\n };\n};\n\n/**\n * @param {Element} stamp\n**/\nproto._manageStamp = noop;\n\n/**\n * get x/y position of element relative to container element\n * @param {Element} elem\n * @returns {Object} offset - has left, top, right, bottom\n */\nproto._getElementOffset = function( elem ) {\n var boundingRect = elem.getBoundingClientRect();\n var thisRect = this._boundingRect;\n var size = getSize( elem );\n var offset = {\n left: boundingRect.left - thisRect.left - size.marginLeft,\n top: boundingRect.top - thisRect.top - size.marginTop,\n right: thisRect.right - boundingRect.right - size.marginRight,\n bottom: thisRect.bottom - boundingRect.bottom - size.marginBottom\n };\n return offset;\n};\n\n// -------------------------- resize -------------------------- //\n\n// enable event handlers for listeners\n// i.e. resize -> onresize\nproto.handleEvent = utils.handleEvent;\n\n/**\n * Bind layout to window resizing\n */\nproto.bindResize = function() {\n window.addEventListener( 'resize', this );\n this.isResizeBound = true;\n};\n\n/**\n * Unbind layout to window resizing\n */\nproto.unbindResize = function() {\n window.removeEventListener( 'resize', this );\n this.isResizeBound = false;\n};\n\nproto.onresize = function() {\n this.resize();\n};\n\nutils.debounceMethod( Outlayer, 'onresize', 100 );\n\nproto.resize = function() {\n // don't trigger if size did not change\n // or if resize was unbound. See #9\n if ( !this.isResizeBound || !this.needsResizeLayout() ) {\n return;\n }\n\n this.layout();\n};\n\n/**\n * check if layout is needed post layout\n * @returns Boolean\n */\nproto.needsResizeLayout = function() {\n var size = getSize( this.element );\n // check that this.size and size are there\n // IE8 triggers resize on body size change, so they might not be\n var hasSizes = this.size && size;\n return hasSizes && size.innerWidth !== this.size.innerWidth;\n};\n\n// -------------------------- methods -------------------------- //\n\n/**\n * add items to Outlayer instance\n * @param {Array or NodeList or Element} elems\n * @returns {Array} items - Outlayer.Items\n**/\nproto.addItems = function( elems ) {\n var items = this._itemize( elems );\n // add items to collection\n if ( items.length ) {\n this.items = this.items.concat( items );\n }\n return items;\n};\n\n/**\n * Layout newly-appended item elements\n * @param {Array or NodeList or Element} elems\n */\nproto.appended = function( elems ) {\n var items = this.addItems( elems );\n if ( !items.length ) {\n return;\n }\n // layout and reveal just the new items\n this.layoutItems( items, true );\n this.reveal( items );\n};\n\n/**\n * Layout prepended elements\n * @param {Array or NodeList or Element} elems\n */\nproto.prepended = function( elems ) {\n var items = this._itemize( elems );\n if ( !items.length ) {\n return;\n }\n // add items to beginning of collection\n var previousItems = this.items.slice(0);\n this.items = items.concat( previousItems );\n // start new layout\n this._resetLayout();\n this._manageStamps();\n // layout new stuff without transition\n this.layoutItems( items, true );\n this.reveal( items );\n // layout previous items\n this.layoutItems( previousItems );\n};\n\n/**\n * reveal a collection of items\n * @param {Array of Outlayer.Items} items\n */\nproto.reveal = function( items ) {\n this._emitCompleteOnItems( 'reveal', items );\n if ( !items || !items.length ) {\n return;\n }\n var stagger = this.updateStagger();\n items.forEach( function( item, i ) {\n item.stagger( i * stagger );\n item.reveal();\n });\n};\n\n/**\n * hide a collection of items\n * @param {Array of Outlayer.Items} items\n */\nproto.hide = function( items ) {\n this._emitCompleteOnItems( 'hide', items );\n if ( !items || !items.length ) {\n return;\n }\n var stagger = this.updateStagger();\n items.forEach( function( item, i ) {\n item.stagger( i * stagger );\n item.hide();\n });\n};\n\n/**\n * reveal item elements\n * @param {Array}, {Element}, {NodeList} items\n */\nproto.revealItemElements = function( elems ) {\n var items = this.getItems( elems );\n this.reveal( items );\n};\n\n/**\n * hide item elements\n * @param {Array}, {Element}, {NodeList} items\n */\nproto.hideItemElements = function( elems ) {\n var items = this.getItems( elems );\n this.hide( items );\n};\n\n/**\n * get Outlayer.Item, given an Element\n * @param {Element} elem\n * @param {Function} callback\n * @returns {Outlayer.Item} item\n */\nproto.getItem = function( elem ) {\n // loop through items to get the one that matches\n for ( var i=0; i < this.items.length; i++ ) {\n var item = this.items[i];\n if ( item.element == elem ) {\n // return item\n return item;\n }\n }\n};\n\n/**\n * get collection of Outlayer.Items, given Elements\n * @param {Array} elems\n * @returns {Array} items - Outlayer.Items\n */\nproto.getItems = function( elems ) {\n elems = utils.makeArray( elems );\n var items = [];\n elems.forEach( function( elem ) {\n var item = this.getItem( elem );\n if ( item ) {\n items.push( item );\n }\n }, this );\n\n return items;\n};\n\n/**\n * remove element(s) from instance and DOM\n * @param {Array or NodeList or Element} elems\n */\nproto.remove = function( elems ) {\n var removeItems = this.getItems( elems );\n\n this._emitCompleteOnItems( 'remove', removeItems );\n\n // bail if no items to remove\n if ( !removeItems || !removeItems.length ) {\n return;\n }\n\n removeItems.forEach( function( item ) {\n item.remove();\n // remove item from collection\n utils.removeFrom( this.items, item );\n }, this );\n};\n\n// ----- destroy ----- //\n\n// remove and disable Outlayer instance\nproto.destroy = function() {\n // clean up dynamic styles\n var style = this.element.style;\n style.height = '';\n style.position = '';\n style.width = '';\n // destroy items\n this.items.forEach( function( item ) {\n item.destroy();\n });\n\n this.unbindResize();\n\n var id = this.element.outlayerGUID;\n delete instances[ id ]; // remove reference to instance by id\n delete this.element.outlayerGUID;\n // remove data for jQuery\n if ( jQuery ) {\n jQuery.removeData( this.element, this.constructor.namespace );\n }\n\n};\n\n// -------------------------- data -------------------------- //\n\n/**\n * get Outlayer instance from element\n * @param {Element} elem\n * @returns {Outlayer}\n */\nOutlayer.data = function( elem ) {\n elem = utils.getQueryElement( elem );\n var id = elem && elem.outlayerGUID;\n return id && instances[ id ];\n};\n\n\n// -------------------------- create Outlayer class -------------------------- //\n\n/**\n * create a layout class\n * @param {String} namespace\n */\nOutlayer.create = function( namespace, options ) {\n // sub-class Outlayer\n var Layout = subclass( Outlayer );\n // apply new options and compatOptions\n Layout.defaults = utils.extend( {}, Outlayer.defaults );\n utils.extend( Layout.defaults, options );\n Layout.compatOptions = utils.extend( {}, Outlayer.compatOptions );\n\n Layout.namespace = namespace;\n\n Layout.data = Outlayer.data;\n\n // sub-class Item\n Layout.Item = subclass( Item );\n\n // -------------------------- declarative -------------------------- //\n\n utils.htmlInit( Layout, namespace );\n\n // -------------------------- jQuery bridge -------------------------- //\n\n // make into jQuery plugin\n if ( jQuery && jQuery.bridget ) {\n jQuery.bridget( namespace, Layout );\n }\n\n return Layout;\n};\n\nfunction subclass( Parent ) {\n function SubClass() {\n Parent.apply( this, arguments );\n }\n\n SubClass.prototype = Object.create( Parent.prototype );\n SubClass.prototype.constructor = SubClass;\n\n return SubClass;\n}\n\n// ----- helpers ----- //\n\n// how many milliseconds are in each unit\nvar msUnits = {\n ms: 1,\n s: 1000\n};\n\n// munge time-like parameter into millisecond number\n// '0.4s' -> 40\nfunction getMilliseconds( time ) {\n if ( typeof time == 'number' ) {\n return time;\n }\n var matches = time.match( /(^\\d*\\.?\\d*)(\\w*)/ );\n var num = matches && matches[1];\n var unit = matches && matches[2];\n if ( !num.length ) {\n return 0;\n }\n num = parseFloat( num );\n var mult = msUnits[ unit ] || 1;\n return num * mult;\n}\n\n// ----- fin ----- //\n\n// back in global\nOutlayer.Item = Item;\n\nreturn Outlayer;\n\n}));\n\n/**\n * Isotope Item\n**/\n\n( function( window, factory ) {\n // universal module definition\n /* jshint strict: false */ /*globals define, module, require */\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( 'isotope-layout/js/item',[\n 'outlayer/outlayer'\n ],\n factory );\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory(\n require('outlayer')\n );\n } else {\n // browser global\n window.Isotope = window.Isotope || {};\n window.Isotope.Item = factory(\n window.Outlayer\n );\n }\n\n}( window, function factory( Outlayer ) {\n'use strict';\n\n// -------------------------- Item -------------------------- //\n\n// sub-class Outlayer Item\nfunction Item() {\n Outlayer.Item.apply( this, arguments );\n}\n\nvar proto = Item.prototype = Object.create( Outlayer.Item.prototype );\n\nvar _create = proto._create;\nproto._create = function() {\n // assign id, used for original-order sorting\n this.id = this.layout.itemGUID++;\n _create.call( this );\n this.sortData = {};\n};\n\nproto.updateSortData = function() {\n if ( this.isIgnored ) {\n return;\n }\n // default sorters\n this.sortData.id = this.id;\n // for backward compatibility\n this.sortData['original-order'] = this.id;\n this.sortData.random = Math.random();\n // go thru getSortData obj and apply the sorters\n var getSortData = this.layout.options.getSortData;\n var sorters = this.layout._sorters;\n for ( var key in getSortData ) {\n var sorter = sorters[ key ];\n this.sortData[ key ] = sorter( this.element, this );\n }\n};\n\nvar _destroy = proto.destroy;\nproto.destroy = function() {\n // call super\n _destroy.apply( this, arguments );\n // reset display, #741\n this.css({\n display: ''\n });\n};\n\nreturn Item;\n\n}));\n\n/**\n * Isotope LayoutMode\n */\n\n( function( window, factory ) {\n // universal module definition\n /* jshint strict: false */ /*globals define, module, require */\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( 'isotope-layout/js/layout-mode',[\n 'get-size/get-size',\n 'outlayer/outlayer'\n ],\n factory );\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory(\n require('get-size'),\n require('outlayer')\n );\n } else {\n // browser global\n window.Isotope = window.Isotope || {};\n window.Isotope.LayoutMode = factory(\n window.getSize,\n window.Outlayer\n );\n }\n\n}( window, function factory( getSize, Outlayer ) {\n 'use strict';\n\n // layout mode class\n function LayoutMode( isotope ) {\n this.isotope = isotope;\n // link properties\n if ( isotope ) {\n this.options = isotope.options[ this.namespace ];\n this.element = isotope.element;\n this.items = isotope.filteredItems;\n this.size = isotope.size;\n }\n }\n\n var proto = LayoutMode.prototype;\n\n /**\n * some methods should just defer to default Outlayer method\n * and reference the Isotope instance as `this`\n **/\n var facadeMethods = [\n '_resetLayout',\n '_getItemLayoutPosition',\n '_manageStamp',\n '_getContainerSize',\n '_getElementOffset',\n 'needsResizeLayout',\n '_getOption'\n ];\n\n facadeMethods.forEach( function( methodName ) {\n proto[ methodName ] = function() {\n return Outlayer.prototype[ methodName ].apply( this.isotope, arguments );\n };\n });\n\n // ----- ----- //\n\n // for horizontal layout modes, check vertical size\n proto.needsVerticalResizeLayout = function() {\n // don't trigger if size did not change\n var size = getSize( this.isotope.element );\n // check that this.size and size are there\n // IE8 triggers resize on body size change, so they might not be\n var hasSizes = this.isotope.size && size;\n return hasSizes && size.innerHeight != this.isotope.size.innerHeight;\n };\n\n // ----- measurements ----- //\n\n proto._getMeasurement = function() {\n this.isotope._getMeasurement.apply( this, arguments );\n };\n\n proto.getColumnWidth = function() {\n this.getSegmentSize( 'column', 'Width' );\n };\n\n proto.getRowHeight = function() {\n this.getSegmentSize( 'row', 'Height' );\n };\n\n /**\n * get columnWidth or rowHeight\n * segment: 'column' or 'row'\n * size 'Width' or 'Height'\n **/\n proto.getSegmentSize = function( segment, size ) {\n var segmentName = segment + size;\n var outerSize = 'outer' + size;\n // columnWidth / outerWidth // rowHeight / outerHeight\n this._getMeasurement( segmentName, outerSize );\n // got rowHeight or columnWidth, we can chill\n if ( this[ segmentName ] ) {\n return;\n }\n // fall back to item of first element\n var firstItemSize = this.getFirstItemSize();\n this[ segmentName ] = firstItemSize && firstItemSize[ outerSize ] ||\n // or size of container\n this.isotope.size[ 'inner' + size ];\n };\n\n proto.getFirstItemSize = function() {\n var firstItem = this.isotope.filteredItems[0];\n return firstItem && firstItem.element && getSize( firstItem.element );\n };\n\n // ----- methods that should reference isotope ----- //\n\n proto.layout = function() {\n this.isotope.layout.apply( this.isotope, arguments );\n };\n\n proto.getSize = function() {\n this.isotope.getSize();\n this.size = this.isotope.size;\n };\n\n // -------------------------- create -------------------------- //\n\n LayoutMode.modes = {};\n\n LayoutMode.create = function( namespace, options ) {\n\n function Mode() {\n LayoutMode.apply( this, arguments );\n }\n\n Mode.prototype = Object.create( proto );\n Mode.prototype.constructor = Mode;\n\n // default options\n if ( options ) {\n Mode.options = options;\n }\n\n Mode.prototype.namespace = namespace;\n // register in Isotope\n LayoutMode.modes[ namespace ] = Mode;\n\n return Mode;\n };\n\n return LayoutMode;\n\n}));\n\n/*!\n * Masonry v4.2.1\n * Cascading grid layout library\n * https://masonry.desandro.com\n * MIT License\n * by David DeSandro\n */\n\n( function( window, factory ) {\n // universal module definition\n /* jshint strict: false */ /*globals define, module, require */\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( 'masonry-layout/masonry',[\n 'outlayer/outlayer',\n 'get-size/get-size'\n ],\n factory );\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory(\n require('outlayer'),\n require('get-size')\n );\n } else {\n // browser global\n window.Masonry = factory(\n window.Outlayer,\n window.getSize\n );\n }\n\n}( window, function factory( Outlayer, getSize ) {\n\n\n\n// -------------------------- masonryDefinition -------------------------- //\n\n // create an Outlayer layout class\n var Masonry = Outlayer.create('masonry');\n // isFitWidth -> fitWidth\n Masonry.compatOptions.fitWidth = 'isFitWidth';\n\n var proto = Masonry.prototype;\n\n proto._resetLayout = function() {\n this.getSize();\n this._getMeasurement( 'columnWidth', 'outerWidth' );\n this._getMeasurement( 'gutter', 'outerWidth' );\n this.measureColumns();\n\n // reset column Y\n this.colYs = [];\n for ( var i=0; i < this.cols; i++ ) {\n this.colYs.push( 0 );\n }\n\n this.maxY = 0;\n this.horizontalColIndex = 0;\n };\n\n proto.measureColumns = function() {\n this.getContainerWidth();\n // if columnWidth is 0, default to outerWidth of first item\n if ( !this.columnWidth ) {\n var firstItem = this.items[0];\n var firstItemElem = firstItem && firstItem.element;\n // columnWidth fall back to item of first element\n this.columnWidth = firstItemElem && getSize( firstItemElem ).outerWidth ||\n // if first elem has no width, default to size of container\n this.containerWidth;\n }\n\n var columnWidth = this.columnWidth += this.gutter;\n\n // calculate columns\n var containerWidth = this.containerWidth + this.gutter;\n var cols = containerWidth / columnWidth;\n // fix rounding errors, typically with gutters\n var excess = columnWidth - containerWidth % columnWidth;\n // if overshoot is less than a pixel, round up, otherwise floor it\n var mathMethod = excess && excess < 1 ? 'round' : 'floor';\n cols = Math[ mathMethod ]( cols );\n this.cols = Math.max( cols, 1 );\n };\n\n proto.getContainerWidth = function() {\n // container is parent if fit width\n var isFitWidth = this._getOption('fitWidth');\n var container = isFitWidth ? this.element.parentNode : this.element;\n // check that this.size and size are there\n // IE8 triggers resize on body size change, so they might not be\n var size = getSize( container );\n this.containerWidth = size && size.innerWidth;\n };\n\n proto._getItemLayoutPosition = function( item ) {\n item.getSize();\n // how many columns does this brick span\n var remainder = item.size.outerWidth % this.columnWidth;\n var mathMethod = remainder && remainder < 1 ? 'round' : 'ceil';\n // round if off by 1 pixel, otherwise use ceil\n var colSpan = Math[ mathMethod ]( item.size.outerWidth / this.columnWidth );\n colSpan = Math.min( colSpan, this.cols );\n // use horizontal or top column position\n var colPosMethod = this.options.horizontalOrder ?\n '_getHorizontalColPosition' : '_getTopColPosition';\n var colPosition = this[ colPosMethod ]( colSpan, item );\n // position the brick\n var position = {\n x: this.columnWidth * colPosition.col,\n y: colPosition.y\n };\n // apply setHeight to necessary columns\n var setHeight = colPosition.y + item.size.outerHeight;\n var setMax = colSpan + colPosition.col;\n for ( var i = colPosition.col; i < setMax; i++ ) {\n this.colYs[i] = setHeight;\n }\n\n return position;\n };\n\n proto._getTopColPosition = function( colSpan ) {\n var colGroup = this._getTopColGroup( colSpan );\n // get the minimum Y value from the columns\n var minimumY = Math.min.apply( Math, colGroup );\n\n return {\n col: colGroup.indexOf( minimumY ),\n y: minimumY,\n };\n };\n\n /**\n * @param {Number} colSpan - number of columns the element spans\n * @returns {Array} colGroup\n */\n proto._getTopColGroup = function( colSpan ) {\n if ( colSpan < 2 ) {\n // if brick spans only one column, use all the column Ys\n return this.colYs;\n }\n\n var colGroup = [];\n // how many different places could this brick fit horizontally\n var groupCount = this.cols + 1 - colSpan;\n // for each group potential horizontal position\n for ( var i = 0; i < groupCount; i++ ) {\n colGroup[i] = this._getColGroupY( i, colSpan );\n }\n return colGroup;\n };\n\n proto._getColGroupY = function( col, colSpan ) {\n if ( colSpan < 2 ) {\n return this.colYs[ col ];\n }\n // make an array of colY values for that one group\n var groupColYs = this.colYs.slice( col, col + colSpan );\n // and get the max value of the array\n return Math.max.apply( Math, groupColYs );\n };\n\n // get column position based on horizontal index. #873\n proto._getHorizontalColPosition = function( colSpan, item ) {\n var col = this.horizontalColIndex % this.cols;\n var isOver = colSpan > 1 && col + colSpan > this.cols;\n // shift to next row if item can't fit on current row\n col = isOver ? 0 : col;\n // don't let zero-size items take up space\n var hasSize = item.size.outerWidth && item.size.outerHeight;\n this.horizontalColIndex = hasSize ? col + colSpan : this.horizontalColIndex;\n\n return {\n col: col,\n y: this._getColGroupY( col, colSpan ),\n };\n };\n\n proto._manageStamp = function( stamp ) {\n var stampSize = getSize( stamp );\n var offset = this._getElementOffset( stamp );\n // get the columns that this stamp affects\n var isOriginLeft = this._getOption('originLeft');\n var firstX = isOriginLeft ? offset.left : offset.right;\n var lastX = firstX + stampSize.outerWidth;\n var firstCol = Math.floor( firstX / this.columnWidth );\n firstCol = Math.max( 0, firstCol );\n var lastCol = Math.floor( lastX / this.columnWidth );\n // lastCol should not go over if multiple of columnWidth #425\n lastCol -= lastX % this.columnWidth ? 0 : 1;\n lastCol = Math.min( this.cols - 1, lastCol );\n // set colYs to bottom of the stamp\n\n var isOriginTop = this._getOption('originTop');\n var stampMaxY = ( isOriginTop ? offset.top : offset.bottom ) +\n stampSize.outerHeight;\n for ( var i = firstCol; i <= lastCol; i++ ) {\n this.colYs[i] = Math.max( stampMaxY, this.colYs[i] );\n }\n };\n\n proto._getContainerSize = function() {\n this.maxY = Math.max.apply( Math, this.colYs );\n var size = {\n height: this.maxY\n };\n\n if ( this._getOption('fitWidth') ) {\n size.width = this._getContainerFitWidth();\n }\n\n return size;\n };\n\n proto._getContainerFitWidth = function() {\n var unusedCols = 0;\n // count unused columns\n var i = this.cols;\n while ( --i ) {\n if ( this.colYs[i] !== 0 ) {\n break;\n }\n unusedCols++;\n }\n // fit container to columns that have been used\n return ( this.cols - unusedCols ) * this.columnWidth - this.gutter;\n };\n\n proto.needsResizeLayout = function() {\n var previousWidth = this.containerWidth;\n this.getContainerWidth();\n return previousWidth != this.containerWidth;\n };\n\n return Masonry;\n\n}));\n\n/*!\n * Masonry layout mode\n * sub-classes Masonry\n * https://masonry.desandro.com\n */\n\n( function( window, factory ) {\n // universal module definition\n /* jshint strict: false */ /*globals define, module, require */\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( 'isotope-layout/js/layout-modes/masonry',[\n '../layout-mode',\n 'masonry-layout/masonry'\n ],\n factory );\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory(\n require('../layout-mode'),\n require('masonry-layout')\n );\n } else {\n // browser global\n factory(\n window.Isotope.LayoutMode,\n window.Masonry\n );\n }\n\n}( window, function factory( LayoutMode, Masonry ) {\n'use strict';\n\n// -------------------------- masonryDefinition -------------------------- //\n\n // create an Outlayer layout class\n var MasonryMode = LayoutMode.create('masonry');\n\n var proto = MasonryMode.prototype;\n\n var keepModeMethods = {\n _getElementOffset: true,\n layout: true,\n _getMeasurement: true\n };\n\n // inherit Masonry prototype\n for ( var method in Masonry.prototype ) {\n // do not inherit mode methods\n if ( !keepModeMethods[ method ] ) {\n proto[ method ] = Masonry.prototype[ method ];\n }\n }\n\n var measureColumns = proto.measureColumns;\n proto.measureColumns = function() {\n // set items, used if measuring first item\n this.items = this.isotope.filteredItems;\n measureColumns.call( this );\n };\n\n // point to mode options for fitWidth\n var _getOption = proto._getOption;\n proto._getOption = function( option ) {\n if ( option == 'fitWidth' ) {\n return this.options.isFitWidth !== undefined ?\n this.options.isFitWidth : this.options.fitWidth;\n }\n return _getOption.apply( this.isotope, arguments );\n };\n\n return MasonryMode;\n\n}));\n\n/**\n * fitRows layout mode\n */\n\n( function( window, factory ) {\n // universal module definition\n /* jshint strict: false */ /*globals define, module, require */\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( 'isotope-layout/js/layout-modes/fit-rows',[\n '../layout-mode'\n ],\n factory );\n } else if ( typeof exports == 'object' ) {\n // CommonJS\n module.exports = factory(\n require('../layout-mode')\n );\n } else {\n // browser global\n factory(\n window.Isotope.LayoutMode\n );\n }\n\n}( window, function factory( LayoutMode ) {\n'use strict';\n\nvar FitRows = LayoutMode.create('fitRows');\n\nvar proto = FitRows.prototype;\n\nproto._resetLayout = function() {\n this.x = 0;\n this.y = 0;\n this.maxY = 0;\n this._getMeasurement( 'gutter', 'outerWidth' );\n};\n\nproto._getItemLayoutPosition = function( item ) {\n item.getSize();\n\n var itemWidth = item.size.outerWidth + this.gutter;\n // if this element cannot fit in the current row\n var containerWidth = this.isotope.size.innerWidth + this.gutter;\n if ( this.x !== 0 && itemWidth + this.x > containerWidth ) {\n this.x = 0;\n this.y = this.maxY;\n }\n\n var position = {\n x: this.x,\n y: this.y\n };\n\n this.maxY = Math.max( this.maxY, this.y + item.size.outerHeight );\n this.x += itemWidth;\n\n return position;\n};\n\nproto._getContainerSize = function() {\n return { height: this.maxY };\n};\n\nreturn FitRows;\n\n}));\n\n/**\n * vertical layout mode\n */\n\n( function( window, factory ) {\n // universal module definition\n /* jshint strict: false */ /*globals define, module, require */\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( 'isotope-layout/js/layout-modes/vertical',[\n '../layout-mode'\n ],\n factory );\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory(\n require('../layout-mode')\n );\n } else {\n // browser global\n factory(\n window.Isotope.LayoutMode\n );\n }\n\n}( window, function factory( LayoutMode ) {\n'use strict';\n\nvar Vertical = LayoutMode.create( 'vertical', {\n horizontalAlignment: 0\n});\n\nvar proto = Vertical.prototype;\n\nproto._resetLayout = function() {\n this.y = 0;\n};\n\nproto._getItemLayoutPosition = function( item ) {\n item.getSize();\n var x = ( this.isotope.size.innerWidth - item.size.outerWidth ) *\n this.options.horizontalAlignment;\n var y = this.y;\n this.y += item.size.outerHeight;\n return { x: x, y: y };\n};\n\nproto._getContainerSize = function() {\n return { height: this.y };\n};\n\nreturn Vertical;\n\n}));\n\n/*!\n * Isotope v3.0.6\n *\n * Licensed GPLv3 for open source use\n * or Isotope Commercial License for commercial use\n *\n * https://isotope.metafizzy.co\n * Copyright 2010-2018 Metafizzy\n */\n\n( function( window, factory ) {\n // universal module definition\n /* jshint strict: false */ /*globals define, module, require */\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( [\n 'outlayer/outlayer',\n 'get-size/get-size',\n 'desandro-matches-selector/matches-selector',\n 'fizzy-ui-utils/utils',\n 'isotope-layout/js/item',\n 'isotope-layout/js/layout-mode',\n // include default layout modes\n 'isotope-layout/js/layout-modes/masonry',\n 'isotope-layout/js/layout-modes/fit-rows',\n 'isotope-layout/js/layout-modes/vertical'\n ],\n function( Outlayer, getSize, matchesSelector, utils, Item, LayoutMode ) {\n return factory( window, Outlayer, getSize, matchesSelector, utils, Item, LayoutMode );\n });\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory(\n window,\n require('outlayer'),\n require('get-size'),\n require('desandro-matches-selector'),\n require('fizzy-ui-utils'),\n require('isotope-layout/js/item'),\n require('isotope-layout/js/layout-mode'),\n // include default layout modes\n require('isotope-layout/js/layout-modes/masonry'),\n require('isotope-layout/js/layout-modes/fit-rows'),\n require('isotope-layout/js/layout-modes/vertical')\n );\n } else {\n // browser global\n window.Isotope = factory(\n window,\n window.Outlayer,\n window.getSize,\n window.matchesSelector,\n window.fizzyUIUtils,\n window.Isotope.Item,\n window.Isotope.LayoutMode\n );\n }\n\n}( window, function factory( window, Outlayer, getSize, matchesSelector, utils,\n Item, LayoutMode ) {\n\n\n\n// -------------------------- vars -------------------------- //\n\nvar jQuery = window.jQuery;\n\n// -------------------------- helpers -------------------------- //\n\nvar trim = String.prototype.trim ?\n function( str ) {\n return str.trim();\n } :\n function( str ) {\n return str.replace( /^\\s+|\\s+$/g, '' );\n };\n\n// -------------------------- isotopeDefinition -------------------------- //\n\n // create an Outlayer layout class\n var Isotope = Outlayer.create( 'isotope', {\n layoutMode: 'masonry',\n isJQueryFiltering: true,\n sortAscending: true\n });\n\n Isotope.Item = Item;\n Isotope.LayoutMode = LayoutMode;\n\n var proto = Isotope.prototype;\n\n proto._create = function() {\n this.itemGUID = 0;\n // functions that sort items\n this._sorters = {};\n this._getSorters();\n // call super\n Outlayer.prototype._create.call( this );\n\n // create layout modes\n this.modes = {};\n // start filteredItems with all items\n this.filteredItems = this.items;\n // keep of track of sortBys\n this.sortHistory = [ 'original-order' ];\n // create from registered layout modes\n for ( var name in LayoutMode.modes ) {\n this._initLayoutMode( name );\n }\n };\n\n proto.reloadItems = function() {\n // reset item ID counter\n this.itemGUID = 0;\n // call super\n Outlayer.prototype.reloadItems.call( this );\n };\n\n proto._itemize = function() {\n var items = Outlayer.prototype._itemize.apply( this, arguments );\n // assign ID for original-order\n for ( var i=0; i < items.length; i++ ) {\n var item = items[i];\n item.id = this.itemGUID++;\n }\n this._updateItemsSortData( items );\n return items;\n };\n\n\n // -------------------------- layout -------------------------- //\n\n proto._initLayoutMode = function( name ) {\n var Mode = LayoutMode.modes[ name ];\n // set mode options\n // HACK extend initial options, back-fill in default options\n var initialOpts = this.options[ name ] || {};\n this.options[ name ] = Mode.options ?\n utils.extend( Mode.options, initialOpts ) : initialOpts;\n // init layout mode instance\n this.modes[ name ] = new Mode( this );\n };\n\n\n proto.layout = function() {\n // if first time doing layout, do all magic\n if ( !this._isLayoutInited && this._getOption('initLayout') ) {\n this.arrange();\n return;\n }\n this._layout();\n };\n\n // private method to be used in layout() & magic()\n proto._layout = function() {\n // don't animate first layout\n var isInstant = this._getIsInstant();\n // layout flow\n this._resetLayout();\n this._manageStamps();\n this.layoutItems( this.filteredItems, isInstant );\n\n // flag for initalized\n this._isLayoutInited = true;\n };\n\n // filter + sort + layout\n proto.arrange = function( opts ) {\n // set any options pass\n this.option( opts );\n this._getIsInstant();\n // filter, sort, and layout\n\n // filter\n var filtered = this._filter( this.items );\n this.filteredItems = filtered.matches;\n\n this._bindArrangeComplete();\n\n if ( this._isInstant ) {\n this._noTransition( this._hideReveal, [ filtered ] );\n } else {\n this._hideReveal( filtered );\n }\n\n this._sort();\n this._layout();\n };\n // alias to _init for main plugin method\n proto._init = proto.arrange;\n\n proto._hideReveal = function( filtered ) {\n this.reveal( filtered.needReveal );\n this.hide( filtered.needHide );\n };\n\n // HACK\n // Don't animate/transition first layout\n // Or don't animate/transition other layouts\n proto._getIsInstant = function() {\n var isLayoutInstant = this._getOption('layoutInstant');\n var isInstant = isLayoutInstant !== undefined ? isLayoutInstant :\n !this._isLayoutInited;\n this._isInstant = isInstant;\n return isInstant;\n };\n\n // listen for layoutComplete, hideComplete and revealComplete\n // to trigger arrangeComplete\n proto._bindArrangeComplete = function() {\n // listen for 3 events to trigger arrangeComplete\n var isLayoutComplete, isHideComplete, isRevealComplete;\n var _this = this;\n function arrangeParallelCallback() {\n if ( isLayoutComplete && isHideComplete && isRevealComplete ) {\n _this.dispatchEvent( 'arrangeComplete', null, [ _this.filteredItems ] );\n }\n }\n this.once( 'layoutComplete', function() {\n isLayoutComplete = true;\n arrangeParallelCallback();\n });\n this.once( 'hideComplete', function() {\n isHideComplete = true;\n arrangeParallelCallback();\n });\n this.once( 'revealComplete', function() {\n isRevealComplete = true;\n arrangeParallelCallback();\n });\n };\n\n // -------------------------- filter -------------------------- //\n\n proto._filter = function( items ) {\n var filter = this.options.filter;\n filter = filter || '*';\n var matches = [];\n var hiddenMatched = [];\n var visibleUnmatched = [];\n\n var test = this._getFilterTest( filter );\n\n // test each item\n for ( var i=0; i < items.length; i++ ) {\n var item = items[i];\n if ( item.isIgnored ) {\n continue;\n }\n // add item to either matched or unmatched group\n var isMatched = test( item );\n // item.isFilterMatched = isMatched;\n // add to matches if its a match\n if ( isMatched ) {\n matches.push( item );\n }\n // add to additional group if item needs to be hidden or revealed\n if ( isMatched && item.isHidden ) {\n hiddenMatched.push( item );\n } else if ( !isMatched && !item.isHidden ) {\n visibleUnmatched.push( item );\n }\n }\n\n // return collections of items to be manipulated\n return {\n matches: matches,\n needReveal: hiddenMatched,\n needHide: visibleUnmatched\n };\n };\n\n // get a jQuery, function, or a matchesSelector test given the filter\n proto._getFilterTest = function( filter ) {\n if ( jQuery && this.options.isJQueryFiltering ) {\n // use jQuery\n return function( item ) {\n return jQuery( item.element ).is( filter );\n };\n }\n if ( typeof filter == 'function' ) {\n // use filter as function\n return function( item ) {\n return filter( item.element );\n };\n }\n // default, use filter as selector string\n return function( item ) {\n return matchesSelector( item.element, filter );\n };\n };\n\n // -------------------------- sorting -------------------------- //\n\n /**\n * @params {Array} elems\n * @public\n */\n proto.updateSortData = function( elems ) {\n // get items\n var items;\n if ( elems ) {\n elems = utils.makeArray( elems );\n items = this.getItems( elems );\n } else {\n // update all items if no elems provided\n items = this.items;\n }\n\n this._getSorters();\n this._updateItemsSortData( items );\n };\n\n proto._getSorters = function() {\n var getSortData = this.options.getSortData;\n for ( var key in getSortData ) {\n var sorter = getSortData[ key ];\n this._sorters[ key ] = mungeSorter( sorter );\n }\n };\n\n /**\n * @params {Array} items - of Isotope.Items\n * @private\n */\n proto._updateItemsSortData = function( items ) {\n // do not update if no items\n var len = items && items.length;\n\n for ( var i=0; len && i < len; i++ ) {\n var item = items[i];\n item.updateSortData();\n }\n };\n\n // ----- munge sorter ----- //\n\n // encapsulate this, as we just need mungeSorter\n // other functions in here are just for munging\n var mungeSorter = ( function() {\n // add a magic layer to sorters for convienent shorthands\n // `.foo-bar` will use the text of .foo-bar querySelector\n // `[foo-bar]` will use attribute\n // you can also add parser\n // `.foo-bar parseInt` will parse that as a number\n function mungeSorter( sorter ) {\n // if not a string, return function or whatever it is\n if ( typeof sorter != 'string' ) {\n return sorter;\n }\n // parse the sorter string\n var args = trim( sorter ).split(' ');\n var query = args[0];\n // check if query looks like [an-attribute]\n var attrMatch = query.match( /^\\[(.+)\\]$/ );\n var attr = attrMatch && attrMatch[1];\n var getValue = getValueGetter( attr, query );\n // use second argument as a parser\n var parser = Isotope.sortDataParsers[ args[1] ];\n // parse the value, if there was a parser\n sorter = parser ? function( elem ) {\n return elem && parser( getValue( elem ) );\n } :\n // otherwise just return value\n function( elem ) {\n return elem && getValue( elem );\n };\n\n return sorter;\n }\n\n // get an attribute getter, or get text of the querySelector\n function getValueGetter( attr, query ) {\n // if query looks like [foo-bar], get attribute\n if ( attr ) {\n return function getAttribute( elem ) {\n return elem.getAttribute( attr );\n };\n }\n\n // otherwise, assume its a querySelector, and get its text\n return function getChildText( elem ) {\n var child = elem.querySelector( query );\n return child && child.textContent;\n };\n }\n\n return mungeSorter;\n })();\n\n // parsers used in getSortData shortcut strings\n Isotope.sortDataParsers = {\n 'parseInt': function( val ) {\n return parseInt( val, 10 );\n },\n 'parseFloat': function( val ) {\n return parseFloat( val );\n }\n };\n\n // ----- sort method ----- //\n\n // sort filteredItem order\n proto._sort = function() {\n if ( !this.options.sortBy ) {\n return;\n }\n // keep track of sortBy History\n var sortBys = utils.makeArray( this.options.sortBy );\n if ( !this._getIsSameSortBy( sortBys ) ) {\n // concat all sortBy and sortHistory, add to front, oldest goes in last\n this.sortHistory = sortBys.concat( this.sortHistory );\n }\n // sort magic\n var itemSorter = getItemSorter( this.sortHistory, this.options.sortAscending );\n this.filteredItems.sort( itemSorter );\n };\n\n // check if sortBys is same as start of sortHistory\n proto._getIsSameSortBy = function( sortBys ) {\n for ( var i=0; i < sortBys.length; i++ ) {\n if ( sortBys[i] != this.sortHistory[i] ) {\n return false;\n }\n }\n return true;\n };\n\n // returns a function used for sorting\n function getItemSorter( sortBys, sortAsc ) {\n return function sorter( itemA, itemB ) {\n // cycle through all sortKeys\n for ( var i = 0; i < sortBys.length; i++ ) {\n var sortBy = sortBys[i];\n var a = itemA.sortData[ sortBy ];\n var b = itemB.sortData[ sortBy ];\n if ( a > b || a < b ) {\n // if sortAsc is an object, use the value given the sortBy key\n var isAscending = sortAsc[ sortBy ] !== undefined ? sortAsc[ sortBy ] : sortAsc;\n var direction = isAscending ? 1 : -1;\n return ( a > b ? 1 : -1 ) * direction;\n }\n }\n return 0;\n };\n }\n\n // -------------------------- methods -------------------------- //\n\n // get layout mode\n proto._mode = function() {\n var layoutMode = this.options.layoutMode;\n var mode = this.modes[ layoutMode ];\n if ( !mode ) {\n // TODO console.error\n throw new Error( 'No layout mode: ' + layoutMode );\n }\n // HACK sync mode's options\n // any options set after init for layout mode need to be synced\n mode.options = this.options[ layoutMode ];\n return mode;\n };\n\n proto._resetLayout = function() {\n // trigger original reset layout\n Outlayer.prototype._resetLayout.call( this );\n this._mode()._resetLayout();\n };\n\n proto._getItemLayoutPosition = function( item ) {\n return this._mode()._getItemLayoutPosition( item );\n };\n\n proto._manageStamp = function( stamp ) {\n this._mode()._manageStamp( stamp );\n };\n\n proto._getContainerSize = function() {\n return this._mode()._getContainerSize();\n };\n\n proto.needsResizeLayout = function() {\n return this._mode().needsResizeLayout();\n };\n\n // -------------------------- adding & removing -------------------------- //\n\n // HEADS UP overwrites default Outlayer appended\n proto.appended = function( elems ) {\n var items = this.addItems( elems );\n if ( !items.length ) {\n return;\n }\n // filter, layout, reveal new items\n var filteredItems = this._filterRevealAdded( items );\n // add to filteredItems\n this.filteredItems = this.filteredItems.concat( filteredItems );\n };\n\n // HEADS UP overwrites default Outlayer prepended\n proto.prepended = function( elems ) {\n var items = this._itemize( elems );\n if ( !items.length ) {\n return;\n }\n // start new layout\n this._resetLayout();\n this._manageStamps();\n // filter, layout, reveal new items\n var filteredItems = this._filterRevealAdded( items );\n // layout previous items\n this.layoutItems( this.filteredItems );\n // add to items and filteredItems\n this.filteredItems = filteredItems.concat( this.filteredItems );\n this.items = items.concat( this.items );\n };\n\n proto._filterRevealAdded = function( items ) {\n var filtered = this._filter( items );\n this.hide( filtered.needHide );\n // reveal all new items\n this.reveal( filtered.matches );\n // layout new items, no transition\n this.layoutItems( filtered.matches, true );\n return filtered.matches;\n };\n\n /**\n * Filter, sort, and layout newly-appended item elements\n * @param {Array or NodeList or Element} elems\n */\n proto.insert = function( elems ) {\n var items = this.addItems( elems );\n if ( !items.length ) {\n return;\n }\n // append item elements\n var i, item;\n var len = items.length;\n for ( i=0; i < len; i++ ) {\n item = items[i];\n this.element.appendChild( item.element );\n }\n // filter new stuff\n var filteredInsertItems = this._filter( items ).matches;\n // set flag\n for ( i=0; i < len; i++ ) {\n items[i].isLayoutInstant = true;\n }\n this.arrange();\n // reset flag\n for ( i=0; i < len; i++ ) {\n delete items[i].isLayoutInstant;\n }\n this.reveal( filteredInsertItems );\n };\n\n var _remove = proto.remove;\n proto.remove = function( elems ) {\n elems = utils.makeArray( elems );\n var removeItems = this.getItems( elems );\n // do regular thing\n _remove.call( this, elems );\n // bail if no items to remove\n var len = removeItems && removeItems.length;\n // remove elems from filteredItems\n for ( var i=0; len && i < len; i++ ) {\n var item = removeItems[i];\n // remove item from collection\n utils.removeFrom( this.filteredItems, item );\n }\n };\n\n proto.shuffle = function() {\n // update random sortData\n for ( var i=0; i < this.items.length; i++ ) {\n var item = this.items[i];\n item.sortData.random = Math.random();\n }\n this.options.sortBy = 'random';\n this._sort();\n this._layout();\n };\n\n /**\n * trigger fn without transition\n * kind of hacky to have this in the first place\n * @param {Function} fn\n * @param {Array} args\n * @returns ret\n * @private\n */\n proto._noTransition = function( fn, args ) {\n // save transitionDuration before disabling\n var transitionDuration = this.options.transitionDuration;\n // disable transition\n this.options.transitionDuration = 0;\n // do it\n var returnValue = fn.apply( this, args );\n // re-enable transition for reveal\n this.options.transitionDuration = transitionDuration;\n return returnValue;\n };\n\n // ----- helper methods ----- //\n\n /**\n * getter method for getting filtered item elements\n * @returns {Array} elems - collection of item elements\n */\n proto.getFilteredItemElements = function() {\n return this.filteredItems.map( function( item ) {\n return item.element;\n });\n };\n\n // ----- ----- //\n\n return Isotope;\n\n}));\n\n","(function($) {\r\n $.fn.appear = function(fn, options) {\r\n\r\n var settings = $.extend({\r\n\r\n //arbitrary data to pass to fn\r\n data: undefined,\r\n\r\n //call fn only on the first appear?\r\n one: true,\r\n\r\n // X & Y accuracy\r\n accX: 0,\r\n accY: 0\r\n\r\n }, options);\r\n\r\n return this.each(function() {\r\n\r\n var t = $(this);\r\n\r\n //whether the element is currently visible\r\n t.appeared = false;\r\n\r\n if (!fn) {\r\n\r\n //trigger the custom event\r\n t.trigger('appear', settings.data);\r\n return;\r\n }\r\n\r\n var w = $(window);\r\n\r\n //fires the appear event when appropriate\r\n var check = function() {\r\n\r\n //is the element hidden?\r\n if (!t.is(':visible')) {\r\n\r\n //it became hidden\r\n t.appeared = false;\r\n return;\r\n }\r\n\r\n //is the element inside the visible window?\r\n var a = w.scrollLeft();\r\n var b = w.scrollTop();\r\n var o = t.offset();\r\n var x = o.left;\r\n var y = o.top;\r\n\r\n var ax = settings.accX;\r\n var ay = settings.accY;\r\n var th = t.height();\r\n var wh = w.height();\r\n var tw = t.width();\r\n var ww = w.width();\r\n\r\n if (y + th + ay >= b &&\r\n y <= b + wh + ay &&\r\n x + tw + ax >= a &&\r\n x <= a + ww + ax) {\r\n\r\n //trigger the custom event\r\n if (!t.appeared) t.trigger('appear', settings.data);\r\n\r\n } else {\r\n\r\n //it scrolled out of view\r\n t.appeared = false;\r\n }\r\n };\r\n\r\n //create a modified fn with some additional logic\r\n var modifiedFn = function() {\r\n\r\n //mark the element as visible\r\n t.appeared = true;\r\n\r\n //is this supposed to happen only once?\r\n if (settings.one) {\r\n\r\n //remove the check\r\n w.unbind('scroll', check);\r\n var i = $.inArray(check, $.fn.appear.checks);\r\n if (i >= 0) $.fn.appear.checks.splice(i, 1);\r\n }\r\n\r\n //trigger the original fn\r\n fn.apply(this, arguments);\r\n };\r\n\r\n //bind the modified fn to the element\r\n if (settings.one) t.one('appear', settings.data, modifiedFn);\r\n else t.bind('appear', settings.data, modifiedFn);\r\n\r\n //check whenever the window scrolls\r\n w.scroll(check);\r\n\r\n //check whenever the dom changes\r\n $.fn.appear.checks.push(check);\r\n\r\n //check now\r\n (check)();\r\n });\r\n };\r\n\r\n //keep a queue of appearance checks\r\n $.extend($.fn.appear, {\r\n\r\n checks: [],\r\n timeout: null,\r\n\r\n //process the queue\r\n checkAll: function() {\r\n var length = $.fn.appear.checks.length;\r\n if (length > 0) while (length--) ($.fn.appear.checks[length])();\r\n },\r\n\r\n //check the queue asynchronously\r\n run: function() {\r\n if ($.fn.appear.timeout) clearTimeout($.fn.appear.timeout);\r\n $.fn.appear.timeout = setTimeout($.fn.appear.checkAll, 20);\r\n }\r\n });\r\n\r\n //run checks when these methods are called\r\n $.each(['append', 'prepend', 'after', 'before', 'attr',\r\n 'removeAttr', 'addClass', 'removeClass', 'toggleClass',\r\n 'remove', 'css', 'show', 'hide'], function(i, n) {\r\n var old = $.fn[n];\r\n if (old) {\r\n $.fn[n] = function() {\r\n var r = old.apply(this, arguments);\r\n $.fn.appear.run();\r\n return r;\r\n }\r\n }\r\n });\r\n\r\n})(jQuery);\r\n"]}