{"version":3,"sources":["../assets/scripts/main.js","../assets/scripts/competition.js","../bower_components/bxslider-4/dist/jquery.bxslider.js","../bower_components/ev-emitter/ev-emitter.js","../bower_components/desandro-matches-selector/matches-selector.js","../bower_components/imagesloaded/imagesloaded.pkgd.js","../bower_components/bootstrap-sass/assets/javascripts/bootstrap/transition.js","../bower_components/bootstrap-sass/assets/javascripts/bootstrap/alert.js","../bower_components/bootstrap-sass/assets/javascripts/bootstrap/button.js","../bower_components/bootstrap-sass/assets/javascripts/bootstrap/carousel.js","../bower_components/bootstrap-sass/assets/javascripts/bootstrap/collapse.js","../bower_components/bootstrap-sass/assets/javascripts/bootstrap/dropdown.js","../bower_components/bootstrap-sass/assets/javascripts/bootstrap/modal.js","../bower_components/bootstrap-sass/assets/javascripts/bootstrap/tooltip.js","../bower_components/bootstrap-sass/assets/javascripts/bootstrap/popover.js","../bower_components/bootstrap-sass/assets/javascripts/bootstrap/scrollspy.js","../bower_components/bootstrap-sass/assets/javascripts/bootstrap/tab.js","../bower_components/bootstrap-sass/assets/javascripts/bootstrap/affix.js","../bower_components/masonry/dist/masonry.pkgd.js","../assets/scripts/components/sliders.js","../assets/scripts/components/masonry.js","../assets/scripts/components/eventtracking.js","../assets/scripts/video.js"],"names":["Sharer","type","url","title","descr","image","winWidth","winHeight","sharer","winTop","screen","height","winLeft","width","window","open","Newsletter","j","jQuery","noConflict","is","fadeOut","fadeIn","on","hide","show","modal","afterCompetionsubmit","container","find","featuredImage","hasClass","remove","removeClass","animate","scrollTop","masonry","init","frmThemeOverride_frmAfterSubmit","fin","p","errObj","obj","length","$","defaults","mode","slideSelector","infiniteLoop","hideControlOnEnd","speed","easing","slideMargin","startSlide","randomStart","captions","ticker","tickerHover","adaptiveHeight","adaptiveHeightSpeed","video","useCSS","preloadImages","responsive","slideZIndex","wrapperClass","touchEnabled","swipeThreshold","oneToOneTouch","preventDefaultSwipeX","preventDefaultSwipeY","ariaLive","ariaHidden","keyboardEnabled","pager","pagerType","pagerShortSeparator","pagerSelector","buildPager","pagerCustom","controls","nextText","prevText","nextSelector","prevSelector","autoControls","startText","stopText","autoControlsCombine","autoControlsSelector","auto","pause","autoStart","autoDirection","stopAutoOnClick","autoHover","autoDelay","autoSlideForOnePage","minSlides","maxSlides","moveSlides","slideWidth","shrinkItems","onSliderLoad","onSlideBefore","onSlideAfter","onSlideNext","onSlidePrev","onSliderResize","onAutoChange","fn","bxSlider","options","this","each","slider","el","windowWidth","windowHeight","data","settings","extend","parseInt","children","Math","floor","random","active","index","carousel","minThreshold","maxThreshold","working","interval","animProp","usingCSS","div","document","createElement","props","i","undefined","style","cssPrefix","replace","toLowerCase","attr","setup","preloadSelector","eq","wrap","viewport","parent","loader","prepend","css","position","overflow","maxWidth","getViewportMaxWidth","float","listStyle","getSlideWidth","zIndex","display","appendCaptions","last","getPagerQty","fitVids","appendControls","appendControlsAuto","appendPager","after","start","loadElements","selector","callback","total","count","one","complete","src","trigger","slice","sliceAppend","clone","addClass","slicePrepend","append","setSlidePosition","getViewportHeight","redrawSlider","call","initialized","resizeWindow","initAuto","initTicker","updatePagerActive","updateDirectionControls","initTouch","keydown","keyPress","currentIndex","getMoveBy","add","outerHeight","max","apply","map","get","parseFloat","newElWidth","wrapWidth","ceil","getNumberSlidesShowing","slidesShowing","childWidth","first","pagerQty","breakPoint","counter","lastChild","lastShowingIndex","setPositionProperty","left","outerWidth","top","value","duration","params","animateObj","propValue","e","target","off","updateAfterSlideTransition","resetValue","tickerLoop","populatePager","pagerHtml","linkContent","isFunction","pagerEl","html","clickPagerBind","next","prev","clickNextBind","clickPrevBind","directionEl","stop","autoEl","clickStartBind","clickStopBind","updateAutoControls","preventDefault","stopAuto","goToNextSlide","goToPrevSlide","startAuto","pagerLink","pagerIndex","currentTarget","goToSlide","slideIndex","len","oldIndex","state","windowFocusHandler","windowBlurHandler","setTimeout","focus","blur","hover","autoPaused","transform","idx","ratio","property","newSpeed","totalDimens","startPosition","split","abs","resumeSpeed","animateProperty","reset","isOnScreen","win","scrollLeft","bounds","offset","right","bottom","activeElementTag","activeElement","tagName","tagFilters","RegExp","result","exec","keyCode","touch","x","y","end","onTouchStart","button","originalPos","orig","originalEvent","touchPoints","changedTouches","chromePointerEvents","PointerEvent","pointerId","pageX","pageY","setPointerCapture","originalClickTarget","originalTarget","originalClickButton","originalClickButtons","buttons","originalEventType","hasMove","onTouchMove","onTouchEnd","onPointerCancel","releasePointerCapture","xMovement","yMovement","change","distance","windowWidthNew","windowHeightNew","applyAriaHiddenAttributes","startVisibleIndex","numberOfSlidesShowing","setSlideIndex","direction","requestEl","performTransition","moveBy","filter","preventControlUpdate","setInterval","clearInterval","getCurrentSlide","getCurrentSlideElement","getSlideElement","getSlideCount","isWorking","destroySlider","removeAttr","unwrap","removeData","reloadSlider","global","factory","define","amd","module","exports","EvEmitter","proto","prototype","eventName","listener","events","_events","listeners","indexOf","push","once","onceEvents","_onceEvents","onceListeners","splice","emitEvent","args","isOnce","allOff","matchesSelector","matchesMethod","ElemProto","Element","matches","prefixes","prefix","method","elem","require","imagesLoaded","a","b","prop","makeArray","Array","isArray","isArrayLike","arraySlice","ImagesLoaded","onAlways","queryElem","querySelectorAll","elements","getImages","jqDeferred","Deferred","check","bind","console","error","LoadingImage","img","Background","element","Image","Object","create","images","forEach","addElementImages","nodeName","addImage","background","addElementBackgroundImages","nodeType","elementNodeTypes","childImgs","child","1","9","11","getComputedStyle","reURL","backgroundImage","addBackground","loadingImage","onProgress","message","_this","progress","progressedCount","hasAnyBroken","isLoaded","notify","debug","log","isComplete","jqMethod","getIsImageComplete","confirm","naturalWidth","proxyImage","addEventListener","handleEvent","event","onload","unbindEvents","onerror","removeEventListener","makeJQueryPlugin","instance","promise","transitionEnd","transEndEventNames","WebkitTransition","MozTransition","OTransition","transition","name","emulateTransitionEnd","called","$el","support","special","bsTransitionEnd","bindType","delegateType","handle","handleObj","handler","arguments","Plugin","option","$this","Alert","dismiss","close","VERSION","TRANSITION_DURATION","removeElement","$parent","detach","closest","Event","isDefaultPrevented","old","alert","Constructor","Button","toggle","setState","$element","DEFAULTS","isLoading","loadingText","d","val","resetText","proxy","changed","$input","toggleClass","$btn","test","Carousel","action","slide","to","cycle","$indicators","paused","sliding","$active","$items","keyboard","documentElement","which","getItemIndex","item","getItemForDirection","activeIndex","willWrap","delta","itemIndex","pos","that","$next","isCycling","relatedTarget","slideEvent","$nextIndicator","slidEvent","offsetWidth","join","clickHandler","href","$target","$carousel","getTargetFromTrigger","$trigger","Collapse","id","transitioning","getParent","addAriaAndCollapsedClass","dimension","hasWidth","activesData","actives","startEvent","scrollSize","camelCase","offsetHeight","isOpen","collapse","clearMenus","backdrop","contains","Dropdown","isActive","insertAfter","stopPropagation","desc","dropdown","_relatedTarget","Modal","$body","body","$dialog","$backdrop","isShown","originalBodyPad","scrollbarWidth","ignoreBackdropClick","remote","load","BACKDROP_TRANSITION_DURATION","checkScrollbar","setScrollbar","escape","resize","appendTo","adjustDialog","enforceFocus","hideModal","has","handleUpdate","resetAdjustments","resetScrollbar","removeBackdrop","doAnimate","callbackRemove","modalIsOverflowing","scrollHeight","clientHeight","paddingLeft","bodyIsOverflowing","paddingRight","fullWindowWidth","innerWidth","documentElementRect","getBoundingClientRect","clientWidth","measureScrollbar","bodyPad","scrollDiv","className","removeChild","showEvent","Tooltip","enabled","timeout","hoverState","inState","animation","placement","template","delay","padding","getOptions","$viewport","click","constructor","Error","triggers","eventIn","eventOut","enter","leave","_options","fixTitle","getDefaults","getDelegateOptions","key","self","tip","clearTimeout","isInStateTrue","hasContent","inDom","ownerDocument","$tip","tipId","getUID","setContent","autoToken","autoPlace","getPosition","actualWidth","actualHeight","orgPlacement","viewportDim","calculatedOffset","getCalculatedOffset","applyPlacement","prevHoverState","marginTop","marginLeft","isNaN","setOffset","using","round","getViewportAdjustedDelta","isVertical","arrowDelta","arrowOffsetPosition","replaceArrow","arrow","getTitle","$e","isBody","elRect","elOffset","scroll","outerDims","viewportPadding","viewportDimensions","topEdgeOffset","bottomEdgeOffset","leftEdgeOffset","rightEdgeOffset","o","getElementById","$arrow","enable","disable","toggleEnabled","destroy","tooltip","Popover","content","getContent","popover","ScrollSpy","$scrollElement","offsets","targets","activeTarget","process","refresh","getScrollHeight","offsetMethod","offsetBase","isWindow","$href","sort","maxScroll","activate","clear","parents","parentsUntil","scrollspy","$spy","Tab","$ul","$previous","hideEvent","tab","Affix","checkPosition","checkPositionWithEventLoop","affixed","unpin","pinnedOffset","RESET","getState","offsetTop","offsetBottom","targetHeight","initializing","colliderTop","colliderHeight","getPinnedOffset","affix","affixType","jQueryBridget","namespace","PluginClass","methodCall","$elems","methodName","returnValue","pluginMethodStr","logError","charAt","plainCall","_init","opts","isPlainObject","arg0","updateJQuery","bridget","getSize","getStyleSize","num","isValid","noop","getZeroSize","size","innerHeight","measurementsLength","measurement","measurements","getStyle","isSetup","borderStyle","borderWidth","boxSizing","appendChild","isBoxSizeOuter","querySelector","isBorderBox","paddingWidth","paddingHeight","paddingTop","paddingBottom","marginWidth","marginRight","marginHeight","marginBottom","borderLeftWidth","borderRightWidth","borderHeight","borderTopWidth","borderBottomWidth","isBorderBoxSizeOuter","styleWidth","styleHeight","fizzyUIUtils","utils","modulo","removeFrom","ary","parentNode","getQueryElement","filterFindElements","elems","ffElems","HTMLElement","childElems","debounceMethod","_class","threshold","timeoutName","docReady","readyState","toDashed","str","match","$1","$2","htmlInit","WidgetClass","dashedNamespace","dataAttr","dataAttrElems","jsDashElems","concat","dataOptionsAttr","getAttribute","JSON","parse","Outlayer","Item","isEmptyObj","layout","_create","toDashedAll","docElemStyle","transitionProperty","transformProperty","transitionEndEvent","vendorProperties","transitionDuration","transitionDelay","_transn","ingProperties","clean","onEnd","elemStyle","supportedProp","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","moveTo","_nonTransition","_removeStyles","_transition","from","h","enableTransition","transitionProps","staggerDelay","onwebkitTransitionEnd","ontransitionend","onotransitionend","dashedVendorProperties","-webkit-transform","propertyName","disableTransition","removeTransitionStyles","cleanStyle","cleanTransitionStyle","stagger","removeElem","reveal","isHidden","transitionEndProperty","getHideRevealTransitionEndProperty","onRevealTransitionEnd","hiddenStyle","visibleStyle","styleProperty","optionStyle","opacity","onHideTransitionEnd","queryElement","GUID","outlayerGUID","instances","isInitLayout","subclass","Parent","SubClass","getMilliseconds","time","unit","mult","msUnits","containerStyle","initLayout","originLeft","originTop","resizeContainer","oldOption","compatOptions","horizontal","layoutInstant","reloadItems","stamps","stamp","canBindResize","bindResize","items","_itemize","itemElems","_filterFindItemElements","itemSelector","getItemElements","_resetLayout","_manageStamps","isInstant","_isLayoutInited","layoutItems","_getMeasurement","_getItemsForLayout","_layoutItems","_postLayout","isIgnored","_emitCompleteOnItems","queue","_getItemLayoutPosition","isLayoutInstant","_processLayoutQueue","updateStagger","_positionItem","isResizingContainer","_getContainerSize","_setContainerMeasure","measure","isWidth","elemSize","onComplete","dispatchEvent","tick","doneCount","emitArgs","$event","ignore","getItem","unignore","_find","unstamp","_getBoundingRect","_manageStamp","boundingRect","_boundingRect","_getElementOffset","thisRect","isResizeBound","unbindResize","onresize","needsResizeLayout","hasSizes","addItems","appended","prepended","previousItems","revealItemElements","getItems","hideItemElements","removeItems","Layout","ms","s","Masonry","fitWidth","measureColumns","colYs","cols","maxY","horizontalColIndex","getContainerWidth","columnWidth","firstItem","firstItemElem","containerWidth","gutter","excess","mathMethod","isFitWidth","remainder","colSpan","min","colPosMethod","horizontalOrder","colPosition","col","setHeight","setMax","_getTopColPosition","colGroup","_getTopColGroup","minimumY","groupCount","_getColGroupY","groupColYs","_getHorizontalColPosition","isOver","hasSize","stampSize","firstX","lastX","firstCol","lastCol","stampMaxY","_getContainerFitWidth","unusedCols","previousWidth","globalSlider","ready","ScrollReveal","bottomObject","bottomWindow","globalmasonry","param","breakpoint","$grid","margin-top","done","msnryInstance","laidOutItems","contentHeight","label","__gaTracker","hitType","eventCategory","eventAction","eventLabel","Viewport","documentWidth","Nav","checkHeight","$navbar","navHeight","mobileStick","scrollPos","dequeue","Footer","switcher","text","Product","Filter","not","slideUp","slideDown","Sage","common","post","finalize","home","about_us","single","search","submit","page_template_template_product","tax_product_categories","page_template_template_history","page_template_template_faq","location","hash","UTIL","fire","func","funcname","headerSearchButton","mouseleave","loadEvents","classnm","form","checkboxes","checkboxLabels","siblings","formTextArea","checkBoxesMainParent","checkboxContainers","checkbox","Video","blogPostContainer","youtubeVideo","z-index"],"mappings":"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","file":"main.js","sourcesContent":["/* ========================================================================\n * DOM-based Routing\n * Based on http://goo.gl/EUTi53 by Paul Irish\n *\n * Only fires on body classes that match. If a body class contains a dash,\n * replace the dash with an underscore when adding it to the object below.\n *\n * .noConflict()\n * The routing is enclosed within an anonymous function so that you can\n * always reference jQuery with $, even when in .noConflict() mode.\n * ======================================================================== */\n\n(function($) {\n\n\tvar Viewport = {};\n\n\tViewport.documentWidth = function(){\n\t\tvar e = window, a = 'inner';\n\t\tif (!('innerWidth' in window )) {\n\t\t\ta = 'client';\n\t\t\te = document.documentElement || document.body;\n\t\t}\n\t\treturn { width : e[ a+'Width' ] , height : e[ a+'Height' ] };\n\t};\n\n var Nav = {};\n\n Nav.checkHeight = function() {\n var $navbar = $( '.navbar' );\n var navHeight = $navbar.height();\n //var navNewHeight = $( '.navbar-header' ).height() + $( '.navbar-collapse' ).height();\n var windowHeight = $( window ).height();\n\n if( Viewport.documentWidth().height < navHeight + 20 ) {\n \t$navbar.removeClass('affix');\n } else {\n\t\t$navbar.addClass('affix');\n\t}\n };\n\n Nav.mobileStick = function() {\n var scrollPos = 0;\n\n $('.navbar-collapse').on('show.bs.collapse', function() {\n $('.navbar-toggle').addClass('open').delay(200).queue(function() {\n $('.icon-bar').addClass('closing').dequeue();\n });\n scrollPos = $( window ).scrollTop();\n\n }).on('hide.bs.collapse', function() {\n $('.icon-bar').removeClass('closing').delay(200).queue(function() {\n $('.navbar-toggle').removeClass('open').dequeue();\n });\n $( 'html, body' ).removeClass( 'lock-position' );\n $( window ).scrollTop( scrollPos );\n\n }).on( 'shown.bs.collapse', function() {\n $( 'html, body' ).addClass( 'lock-position' );\n } );\n };\n\n\tvar Footer = {};\n\n\tFooter.switcher = function() {\n\t\tif( Viewport.documentWidth().width <= 767 ) {\n\n\t\t\tvar title = $( '.footer-social-icons .hidden-xs .title' );\n\t\t\t$( '.fsi-group .title span' ).text( title.html() + ' ' );\n\n\t\t}\n\t\telse {\n\t\t\t$( '.fsi-group .title span' ).text( '' );\n\t\t}\n\t};\n\n\tFooter.scrollTop = function() {\n\t\t$( \".scrolltop\" ).click(function() {\n\t\t\t$('html, body').animate({\n\t\t\t\tscrollTop: 0\n\t\t\t}, 800);\n\t\t});\n\t};\n\n\tvar Product = {};\n\n\tProduct.Filter = function () {\n\t\t$('[data-toggle=\"toggle\"]').click(function(e) {\n\n\t\t\tif ( $(window).width() < 768 ) {\n\n\t\t\t\tif ( $(e.target).parent().hasClass('active') ) {\n\t\t\t\t\te.preventDefault();\n\t\t\t\t}\n\t\t\t\tif ( !$('.category-filter').hasClass('open') ) {\n\t\t\t\t\t$('.category-filter').children().slice(1).slideDown('slow');\n\n\t\t\t\t} else {\n\t\t\t\t\t$('.category-filter').children().not('.active').slideUp('slow');\n\n\t\t\t\t}\n\n\t\t\t\t$('.category-filter').toggleClass('open');\n\t\t\t}\n\t\t});\n\n\t\t$(window).resize(function() {\n\t\t\tif ($(this).width() > 767 ) {\n\t\t\t\t$('.category-filter').children().css({display: 'inline-block'});\n\t\t\t} else {\n\t\t\t\t$('.category-filter').children().not('.active').hide();\n\t\t\t}\n\t\t});\n\t};\n\n\n // Use this variable to set up the common and page specific functions. If you\n // rename this variable, you will also need to rename the namespace below.\n var Sage = {\n // All pages\n 'common': {\n init: function() {\n\t\t$('i.dropdown-toggle').on('click', function() {\n\t\t\t$(this).parents('li').toggleClass('open');\n\t\t});\n\n \t\t $( \".tooltip-active\" ).tooltip({'trigger':'focus', 'title': 'Password tooltip'});\n\n \t\t$(\".qa .question\").click(function() {\n \t\t\tif ( $( this ).parents( '.qa' ).hasClass( \"in\" ) ) {\n \t\t\t\t$( this ).parents( '.qa' ).removeClass( 'in' );\n \t\t\t\t$( this ).parents( '.qa' ).children( '.answer' ).slideDown();\n \t\t\t\t$( this ).parents( '.qa' ).addClass( 'out' );\n\n \t\t\t} else {\n \t\t\t\t// $( this ).parents( '.qa' ).children( '.answer' ).slideUp();\n \t\t\t\t$( this ).parents( '.qa' ).children( '.answer' ).slideUp(400, function() {\n \t\t\t\t\t$( this ).parents( '.qa' ).addClass( 'in' );\n \t\t\t\t\t$( this ).parents( '.qa' ).removeClass( 'out' );\n \t\t\t\t});\n \t\t\t}\n \t\t});\n\n /* Functions */\n Nav.checkHeight();\n Nav.mobileStick();\n \tFooter.switcher();\n \tFooter.scrollTop();\n\t\t//Loader.init();\n\n\t\t$( document ).ready( function() {\n\t\t\tif ( $('#signup-newsletter').data('firstvisit') === true ) {\n\t\t\t\t$( '#signup-newsletter' ).modal( 'show' );\n\t\t\t}\n\t\t} );\n\n\t\t$( window ).on( 'resize', function() {\n\t\t\tNav.checkHeight();\n\t\t\tFooter.switcher();\n\t\t} );\n\n\t\t$('#signup-newsletter').on('hide.bs.modal', function (e) {\n\t\t\t$.post($('.newsletter-close').data('ajaxurl'), {action: 'mollers_newsletter'});\n\t\t});\n\n\t\t$('#read-more').on('click', function() {\n\t\t\t$('.post, .article-wrap').removeClass('less-content');\n\t\t\t$(this).parent().hide();\n\t\t});\n\n },\n finalize: function() {\n // JavaScript to be fired on all pages, after page specific JS is fired\n }\n },\n // Home page\n 'home': {\n init: function() {\n // JavaScript to be fired on the home page\n },\n finalize: function() {\n // JavaScript to be fired on the home page, after the init JS\n }\n },\n // About us page, note the change from about-us to about_us.\n 'about_us': {\n init: function() {\n // JavaScript to be fired on the about us page\n }\n },\n 'single': {\n init: function() {\n\n }\n },\n\t// 'category': {\n\t// \tinit: function() {\n\t// \t\t$('head').append('');\n\t// \t}\n\n\t// },\n\t'search' : {\n\t\tinit: function () {\n\t\t\t$('.input-container .search-icon').on('click', function () {\n\t\t\t\t$(this).parents('form').submit();\n\t\t\t});\n\t\t}\n\t},\n\t'page_template_template_product': {\n\t\tinit: function() {\n\t\t\tProduct.Filter();\n\t\t}\n\t},\n\t'tax_product_categories' : {\n\t\tinit: function() {\n\t\t\tProduct.Filter();\n\t\t}\n\t},\n\t'page_template_template_history' : {\n\t\tinit: function() {\n\t\t\tif ( $('.more-timeline').length ) {\n\t\t\t\t$('.more-timeline').on('click', function(e) {\n\t\t\t\t\te.preventDefault();\n\t\t\t\t\t$(this).prev().find('.les').toggle('slow');\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t},\n\t'page_template_template_faq' : {\n\t\tinit: function() {\n\t\t\t//$(\".qa .question\").click();\n\t\t\tif ( window.location.hash ) {\n\t\t\t\t$(window.location.hash + ' .question').click();\n\t\t\t}\n\t\t}\n\t}\n };\n\n // The routing fires all common scripts, followed by the page specific scripts.\n // Add additional events for more control over timing e.g. a finalize event\n var UTIL = {\n fire: function(func, funcname, args) {\n var fire;\n var namespace = Sage;\n funcname = (funcname === undefined) ? 'init' : funcname;\n fire = func !== '';\n fire = fire && namespace[func];\n fire = fire && typeof namespace[func][funcname] === 'function';\n\n if (fire) {\n namespace[func][funcname](args);\n }\n },\n headerSearchButton : function() {\n $('.header-search > .search-form .search-field').on('focus', function () {\n $(this).parent().addClass('open');\n });\n\n $('.header-search').mouseleave(function () {\n $('.header-search > .search-form .search-field').parent().removeClass('open');\n });\n\n },\n loadEvents: function() {\n // Fire common init JS\n UTIL.fire('common');\n\n // Fire page-specific init JS, and then finalize JS\n $.each(document.body.className.replace(/-/g, '_').split(/\\s+/), function(i, classnm) {\n UTIL.fire(classnm);\n UTIL.fire(classnm, 'finalize');\n UTIL.headerSearchButton();\n });\n\n // Fire common finalize JS\n UTIL.fire('common', 'finalize');\n }\n };\n\n // Load Events\n $(document).ready(UTIL.loadEvents);\n\n\n})(jQuery); // Fully reference jQuery after this point.\n\n// Sharer function\nfunction Sharer(type, url, title, descr, image, winWidth, winHeight) {\n\tif ( type === 'fb' ) {\n\t\tsharer = 'http://www.facebook.com/sharer.php?u=' + url;\n\t} else {\n\t\t//sharer = 'https://twitter.com/intent/tweet?text=' + url;\n\t\tsharer = 'https://twitter.com/intent/tweet?text=' + title + '&url=' + url;\n\t}\n\tvar winTop = (screen.height / 2) - (winHeight / 2);\n\tvar winLeft = (screen.width / 2) - (winWidth / 2);\n\twindow.open(sharer, 'Sharer', 'top=' + winTop + ',left=' + winLeft + ',toolbar=0,status=0,width=' + winWidth + ',height=' + winHeight);\n}\n\n// Newletter function to pass to Contactform7\nfunction Newsletter() {\n\tvar j = jQuery.noConflict();\n\n\tif ( j( '#signup-newsletter' ).is(':visible') ) {\n\t\tj( '.modal-dialog-newsletter' ).fadeOut();\n\t\tj( '.modal-dialog-notif' ).fadeIn();\n\t} else {\n\t\tj( '#signup-newsletter' ).on('show.bs.modal', function() {\n\t\t\tj( '.modal-dialog-newsletter' ).hide();\n\t\t\tj( '.modal-dialog-notif' ).show();\n\t\t});\n\t\tj( '#signup-newsletter' ).modal( 'show' );\n\t}\n}\n","/*\n * To change this license header, choose License Headers in Project Properties.\n * To change this template file, choose Tools | Templates\n * and open the template in the editor.\n */\n\nfunction afterCompetionsubmit() {\n\tvar container = jQuery( '.page-template-template-competition' );\n\n\tcontainer.find( '.form-header' ).hide();\n\tcontainer.find( '.form-content' ).hide();\n\tcontainer.find( '.success-header' ).show();\n\tcontainer.find( '.success-content' ).show();\n\t\n\tvar featuredImage = container.find( '.page-thumbnail' );\n\t\n\tif( featuredImage.hasClass( 'featured-hidden' ) ) {\n\t\tfeaturedImage.remove();\n\t\t\n\t\tcontainer.find( '.success-header' ).removeClass( 'has-thumbnail' );\n\t}\n\t\n\tjQuery( 'html, body' ).animate( { scrollTop: 0 }, 'slow' );\n\n\tmasonry.init();\n}\n\nfunction frmThemeOverride_frmAfterSubmit( fin, p, errObj, obj ) {\n\tif( !jQuery( '.page-template-template-competition' ).length ) {\n\t\treturn;\n\t}\n\n\tafterCompetionsubmit();\n}\n\n( function( $ ) {\n\t\n\t$( document ).ready( function() {\n\t\tvar form = $( '.competition-page form' );\n\t\tvar checkboxes = form.find( 'input[type=checkbox]' );\n\t\tvar checkboxLabels = form.find( 'input[type=checkbox]' ).parents( 'div.frm_opt_container' ).siblings( 'label.frm_primary_label' );\n\t\tvar formTextArea = form.find( 'textarea' ).parents( 'div.competition-page .with_frm_style .frm_form_field' );\n\t\tvar checkBoxesMainParent = form.find( 'input[type=checkbox]' ).parents( 'div.frm_form_field.form-field.frm_required_field.frm_top_container' );\n\n\t\tcheckboxLabels.each( function() {\n\t\t\t$( this ).addClass( 'label-position' );\n\t\t} );\n\n\t\tformTextArea.each( function() {\n\t\t\t$( this ).addClass( 'form-textarea' );\n\t\t} );\n\t\t\n\t\tcheckBoxesMainParent.css(\"vertical-align\", \"top\");\n\n\t\tcheckboxes.click( function() {\n\t\t\t\n\t\t\tif( $( this ).is( ':checked' ) ) {\n\t\t\t\t$( this ).parent( 'label' ).addClass( \"add-img-label\" );\n\t\t\t} else {\n\t\t\t\t$( this ).parent( 'label' ).removeClass( \"add-img-label\" );\n\t\t\t}\n\t\t} );\n\t\t\n\t\tcheckboxLabels.click( function() {\n\t\t\tvar checkboxContainers = $( this ).siblings( 'div.frm_opt_container' );\n\t\t\tvar checkbox = checkboxContainers.find( 'input[type=checkbox]' );\n\t\t\t\n\t\t\tcheckbox.click();\n\t\t} );\n\t} );\n\n} )( jQuery );\n","/**\n * bxSlider v4.2.1d\n * Copyright 2013-2017 Steven Wanderski\n * Written while drinking Belgian ales and listening to jazz\n * Licensed under MIT (http://opensource.org/licenses/MIT)\n */\n\n;(function($) {\n\n var defaults = {\n\n // GENERAL\n mode: 'horizontal',\n slideSelector: '',\n infiniteLoop: true,\n hideControlOnEnd: false,\n speed: 500,\n easing: null,\n slideMargin: 0,\n startSlide: 0,\n randomStart: false,\n captions: false,\n ticker: false,\n tickerHover: false,\n adaptiveHeight: false,\n adaptiveHeightSpeed: 500,\n video: false,\n useCSS: true,\n preloadImages: 'visible',\n responsive: true,\n slideZIndex: 50,\n wrapperClass: 'bx-wrapper',\n\n // TOUCH\n touchEnabled: true,\n swipeThreshold: 50,\n oneToOneTouch: true,\n preventDefaultSwipeX: true,\n preventDefaultSwipeY: false,\n\n // ACCESSIBILITY\n ariaLive: true,\n ariaHidden: true,\n\n // KEYBOARD\n keyboardEnabled: false,\n\n // PAGER\n pager: true,\n pagerType: 'full',\n pagerShortSeparator: ' / ',\n pagerSelector: null,\n buildPager: null,\n pagerCustom: null,\n\n // CONTROLS\n controls: true,\n nextText: 'Next',\n prevText: 'Prev',\n nextSelector: null,\n prevSelector: null,\n autoControls: false,\n startText: 'Start',\n stopText: 'Stop',\n autoControlsCombine: false,\n autoControlsSelector: null,\n\n // AUTO\n auto: false,\n pause: 4000,\n autoStart: true,\n autoDirection: 'next',\n stopAutoOnClick: false,\n autoHover: false,\n autoDelay: 0,\n autoSlideForOnePage: false,\n\n // CAROUSEL\n minSlides: 1,\n maxSlides: 1,\n moveSlides: 0,\n slideWidth: 0,\n shrinkItems: false,\n\n // CALLBACKS\n onSliderLoad: function() { return true; },\n onSlideBefore: function() { return true; },\n onSlideAfter: function() { return true; },\n onSlideNext: function() { return true; },\n onSlidePrev: function() { return true; },\n onSliderResize: function() { return true; },\n\tonAutoChange: function() { return true; } //calls when auto slides starts and stops\n };\n\n $.fn.bxSlider = function(options) {\n\n if (this.length === 0) {\n return this;\n }\n\n // support multiple elements\n if (this.length > 1) {\n this.each(function() {\n $(this).bxSlider(options);\n });\n return this;\n }\n\n // create a namespace to be used throughout the plugin\n var slider = {},\n // set a reference to our slider element\n el = this,\n // get the original window dimens (thanks a lot IE)\n windowWidth = $(window).width(),\n windowHeight = $(window).height();\n\n // Return if slider is already initialized\n if ($(el).data('bxSlider')) { return; }\n\n /**\n * ===================================================================================\n * = PRIVATE FUNCTIONS\n * ===================================================================================\n */\n\n /**\n * Initializes namespace settings to be used throughout plugin\n */\n var init = function() {\n // Return if slider is already initialized\n if ($(el).data('bxSlider')) { return; }\n // merge user-supplied options with the defaults\n slider.settings = $.extend({}, defaults, options);\n // parse slideWidth setting\n slider.settings.slideWidth = parseInt(slider.settings.slideWidth);\n // store the original children\n slider.children = el.children(slider.settings.slideSelector);\n // check if actual number of slides is less than minSlides / maxSlides\n if (slider.children.length < slider.settings.minSlides) { slider.settings.minSlides = slider.children.length; }\n if (slider.children.length < slider.settings.maxSlides) { slider.settings.maxSlides = slider.children.length; }\n // if random start, set the startSlide setting to random number\n if (slider.settings.randomStart) { slider.settings.startSlide = Math.floor(Math.random() * slider.children.length); }\n // store active slide information\n slider.active = { index: slider.settings.startSlide };\n // store if the slider is in carousel mode (displaying / moving multiple slides)\n slider.carousel = slider.settings.minSlides > 1 || slider.settings.maxSlides > 1;\n // if carousel, force preloadImages = 'all'\n if (slider.carousel) { slider.settings.preloadImages = 'all'; }\n // calculate the min / max width thresholds based on min / max number of slides\n // used to setup and update carousel slides dimensions\n slider.minThreshold = (slider.settings.minSlides * slider.settings.slideWidth) + ((slider.settings.minSlides - 1) * slider.settings.slideMargin);\n slider.maxThreshold = (slider.settings.maxSlides * slider.settings.slideWidth) + ((slider.settings.maxSlides - 1) * slider.settings.slideMargin);\n // store the current state of the slider (if currently animating, working is true)\n slider.working = false;\n // initialize the controls object\n slider.controls = {};\n // initialize an auto interval\n slider.interval = null;\n // determine which property to use for transitions\n slider.animProp = slider.settings.mode === 'vertical' ? 'top' : 'left';\n // determine if hardware acceleration can be used\n slider.usingCSS = slider.settings.useCSS && slider.settings.mode !== 'fade' && (function() {\n // create our test div element\n var div = document.createElement('div'),\n // css transition properties\n props = ['WebkitPerspective', 'MozPerspective', 'OPerspective', 'msPerspective'];\n // test for each property\n for (var i = 0; i < props.length; i++) {\n if (div.style[props[i]] !== undefined) {\n slider.cssPrefix = props[i].replace('Perspective', '').toLowerCase();\n slider.animProp = '-' + slider.cssPrefix + '-transform';\n return true;\n }\n }\n return false;\n }());\n // if vertical mode always make maxSlides and minSlides equal\n if (slider.settings.mode === 'vertical') { slider.settings.maxSlides = slider.settings.minSlides; }\n // save original style data\n el.data('origStyle', el.attr('style'));\n el.children(slider.settings.slideSelector).each(function() {\n $(this).data('origStyle', $(this).attr('style'));\n });\n\n // perform all DOM / CSS modifications\n setup();\n };\n\n /**\n * Performs all DOM and CSS modifications\n */\n var setup = function() {\n var preloadSelector = slider.children.eq(slider.settings.startSlide); // set the default preload selector (visible)\n\n // wrap el in a wrapper\n el.wrap('
');\n // store a namespace reference to .bx-viewport\n slider.viewport = el.parent();\n\n // add aria-live if the setting is enabled and ticker mode is disabled\n if (slider.settings.ariaLive && !slider.settings.ticker) {\n slider.viewport.attr('aria-live', 'polite');\n }\n // add a loading div to display while images are loading\n slider.loader = $('
');\n slider.viewport.prepend(slider.loader);\n // set el to a massive width, to hold any needed slides\n // also strip any margin and padding from el\n el.css({\n width: slider.settings.mode === 'horizontal' ? (slider.children.length * 1000 + 215) + '%' : 'auto',\n position: 'relative'\n });\n // if using CSS, add the easing property\n if (slider.usingCSS && slider.settings.easing) {\n el.css('-' + slider.cssPrefix + '-transition-timing-function', slider.settings.easing);\n // if not using CSS and no easing value was supplied, use the default JS animation easing (swing)\n } else if (!slider.settings.easing) {\n slider.settings.easing = 'swing';\n }\n // make modifications to the viewport (.bx-viewport)\n slider.viewport.css({\n width: '100%',\n overflow: 'hidden',\n position: 'relative'\n });\n slider.viewport.parent().css({\n maxWidth: getViewportMaxWidth()\n });\n // apply css to all slider children\n slider.children.css({\n // the float attribute is a reserved word in compressors like YUI compressor and need to be quoted #48\n 'float': slider.settings.mode === 'horizontal' ? 'left' : 'none',\n listStyle: 'none',\n position: 'relative'\n });\n // apply the calculated width after the float is applied to prevent scrollbar interference\n slider.children.css('width', getSlideWidth());\n // if slideMargin is supplied, add the css\n if (slider.settings.mode === 'horizontal' && slider.settings.slideMargin > 0) { slider.children.css('marginRight', slider.settings.slideMargin); }\n if (slider.settings.mode === 'vertical' && slider.settings.slideMargin > 0) { slider.children.css('marginBottom', slider.settings.slideMargin); }\n // if \"fade\" mode, add positioning and z-index CSS\n if (slider.settings.mode === 'fade') {\n slider.children.css({\n position: 'absolute',\n zIndex: 0,\n display: 'none'\n });\n // prepare the z-index on the showing element\n slider.children.eq(slider.settings.startSlide).css({zIndex: slider.settings.slideZIndex, display: 'block'});\n }\n // create an element to contain all slider controls (pager, start / stop, etc)\n slider.controls.el = $('
');\n // if captions are requested, add them\n if (slider.settings.captions) { appendCaptions(); }\n // check if startSlide is last slide\n slider.active.last = slider.settings.startSlide === getPagerQty() - 1;\n // if video is true, set up the fitVids plugin\n if (slider.settings.video) { el.fitVids(); }\n\t //preloadImages\n\t if (slider.settings.preloadImages === 'none') { \n\t\t preloadSelector = null; \n\t }\n else if (slider.settings.preloadImages === 'all' || slider.settings.ticker) { \n\t\t preloadSelector = slider.children; \n\t }\n // only check for control addition if not in \"ticker\" mode\n if (!slider.settings.ticker) {\n // if controls are requested, add them\n if (slider.settings.controls) { appendControls(); }\n // if auto is true, and auto controls are requested, add them\n if (slider.settings.auto && slider.settings.autoControls) { appendControlsAuto(); }\n // if pager is requested, add it\n if (slider.settings.pager) { appendPager(); }\n // if any control option is requested, add the controls wrapper\n if (slider.settings.controls || slider.settings.autoControls || slider.settings.pager) { slider.viewport.after(slider.controls.el); }\n // if ticker mode, do not allow a pager\n } else {\n slider.settings.pager = false;\n }\n\t if (preloadSelector === null) {\n start();\n } else {\n loadElements(preloadSelector, start);\n }\n };\n\n var loadElements = function(selector, callback) {\n var total = selector.find('img:not([src=\"\"]), iframe').length,\n count = 0;\n if (total === 0) {\n callback();\n return;\n }\n selector.find('img:not([src=\"\"]), iframe').each(function() {\n $(this).one('load error', function() {\n if (++count === total) { callback(); }\n }).each(function() {\n if (this.complete || this.src == '') { $(this).trigger('load'); }\n });\n });\n };\n\n /**\n * Start the slider\n */\n var start = function() {\n // if infinite loop, prepare additional slides\n if (slider.settings.infiniteLoop && slider.settings.mode !== 'fade' && !slider.settings.ticker) {\n var slice = slider.settings.mode === 'vertical' ? slider.settings.minSlides : slider.settings.maxSlides,\n sliceAppend = slider.children.slice(0, slice).clone(true).addClass('bx-clone'),\n slicePrepend = slider.children.slice(-slice).clone(true).addClass('bx-clone');\n if (slider.settings.ariaHidden) {\n sliceAppend.attr('aria-hidden', true);\n slicePrepend.attr('aria-hidden', true);\n }\n el.append(sliceAppend).prepend(slicePrepend);\n }\n // remove the loading DOM element\n slider.loader.remove();\n // set the left / top position of \"el\"\n setSlidePosition();\n // if \"vertical\" mode, always use adaptiveHeight to prevent odd behavior\n if (slider.settings.mode === 'vertical') { slider.settings.adaptiveHeight = true; }\n // set the viewport height\n slider.viewport.height(getViewportHeight());\n // make sure everything is positioned just right (same as a window resize)\n el.redrawSlider();\n // onSliderLoad callback\n slider.settings.onSliderLoad.call(el, slider.active.index);\n // slider has been fully initialized\n slider.initialized = true;\n // add the resize call to the window\n if (slider.settings.responsive) { $(window).on('resize', resizeWindow); }\n // if auto is true and has more than 1 page, start the show\n if (slider.settings.auto && slider.settings.autoStart && (getPagerQty() > 1 || slider.settings.autoSlideForOnePage)) { initAuto(); }\n // if ticker is true, start the ticker\n if (slider.settings.ticker) { initTicker(); }\n // if pager is requested, make the appropriate pager link active\n if (slider.settings.pager) { updatePagerActive(slider.settings.startSlide); }\n // check for any updates to the controls (like hideControlOnEnd updates)\n if (slider.settings.controls) { updateDirectionControls(); }\n // if touchEnabled is true, setup the touch events\n if (slider.settings.touchEnabled && !slider.settings.ticker) { initTouch(); }\n // if keyboardEnabled is true, setup the keyboard events\n if (slider.settings.keyboardEnabled && !slider.settings.ticker) {\n $(document).keydown(keyPress);\n }\n };\n\n /**\n * Returns the calculated height of the viewport, used to determine either adaptiveHeight or the maxHeight value\n */\n var getViewportHeight = function() {\n var height = 0;\n // first determine which children (slides) should be used in our height calculation\n var children = $();\n // if mode is not \"vertical\" and adaptiveHeight is false, include all children\n if (slider.settings.mode !== 'vertical' && !slider.settings.adaptiveHeight) {\n children = slider.children;\n } else {\n // if not carousel, return the single active child\n if (!slider.carousel) {\n children = slider.children.eq(slider.active.index);\n // if carousel, return a slice of children\n } else {\n // get the individual slide index\n var currentIndex = slider.settings.moveSlides === 1 ? slider.active.index : slider.active.index * getMoveBy();\n // add the current slide to the children\n children = slider.children.eq(currentIndex);\n // cycle through the remaining \"showing\" slides\n for (i = 1; i <= slider.settings.maxSlides - 1; i++) {\n // if looped back to the start\n if (currentIndex + i >= slider.children.length) {\n children = children.add(slider.children.eq(i - 1));\n } else {\n children = children.add(slider.children.eq(currentIndex + i));\n }\n }\n }\n }\n // if \"vertical\" mode, calculate the sum of the heights of the children\n if (slider.settings.mode === 'vertical') {\n children.each(function(index) {\n height += $(this).outerHeight();\n });\n // add user-supplied margins\n if (slider.settings.slideMargin > 0) {\n height += slider.settings.slideMargin * (slider.settings.minSlides - 1);\n }\n // if not \"vertical\" mode, calculate the max height of the children\n } else {\n height = Math.max.apply(Math, children.map(function() {\n return $(this).outerHeight(false);\n }).get());\n }\n\n if (slider.viewport.css('box-sizing') === 'border-box') {\n height += parseFloat(slider.viewport.css('padding-top')) + parseFloat(slider.viewport.css('padding-bottom')) +\n parseFloat(slider.viewport.css('border-top-width')) + parseFloat(slider.viewport.css('border-bottom-width'));\n } else if (slider.viewport.css('box-sizing') === 'padding-box') {\n height += parseFloat(slider.viewport.css('padding-top')) + parseFloat(slider.viewport.css('padding-bottom'));\n }\n\n return height;\n };\n\n /**\n * Returns the calculated width to be used for the outer wrapper / viewport\n */\n var getViewportMaxWidth = function() {\n var width = '100%';\n if (slider.settings.slideWidth > 0) {\n if (slider.settings.mode === 'horizontal') {\n width = (slider.settings.maxSlides * slider.settings.slideWidth) + ((slider.settings.maxSlides - 1) * slider.settings.slideMargin);\n } else {\n width = slider.settings.slideWidth;\n }\n }\n return width;\n };\n\n /**\n * Returns the calculated width to be applied to each slide\n */\n var getSlideWidth = function() {\n var newElWidth = slider.settings.slideWidth, // start with any user-supplied slide width\n wrapWidth = slider.viewport.width(); // get the current viewport width\n // if slide width was not supplied, or is larger than the viewport use the viewport width\n if (slider.settings.slideWidth === 0 ||\n (slider.settings.slideWidth > wrapWidth && !slider.carousel) ||\n slider.settings.mode === 'vertical') {\n newElWidth = wrapWidth;\n // if carousel, use the thresholds to determine the width\n } else if (slider.settings.maxSlides > 1 && slider.settings.mode === 'horizontal') {\n if (wrapWidth > slider.maxThreshold) {\n return newElWidth;\n } else if (wrapWidth < slider.minThreshold) {\n newElWidth = (wrapWidth - (slider.settings.slideMargin * (slider.settings.minSlides - 1))) / slider.settings.minSlides;\n } else if (slider.settings.shrinkItems) {\n newElWidth = Math.floor((wrapWidth + slider.settings.slideMargin) / (Math.ceil((wrapWidth + slider.settings.slideMargin) / (newElWidth + slider.settings.slideMargin))) - slider.settings.slideMargin);\n }\n }\n return newElWidth;\n };\n\n /**\n * Returns the number of slides currently visible in the viewport (includes partially visible slides)\n */\n var getNumberSlidesShowing = function() {\n var slidesShowing = 1,\n childWidth = null;\n if (slider.settings.mode === 'horizontal' && slider.settings.slideWidth > 0) {\n // if viewport is smaller than minThreshold, return minSlides\n if (slider.viewport.width() < slider.minThreshold) {\n slidesShowing = slider.settings.minSlides;\n // if viewport is larger than maxThreshold, return maxSlides\n } else if (slider.viewport.width() > slider.maxThreshold) {\n slidesShowing = slider.settings.maxSlides;\n // if viewport is between min / max thresholds, divide viewport width by first child width\n } else {\n childWidth = slider.children.first().width() + slider.settings.slideMargin;\n slidesShowing = Math.floor((slider.viewport.width() +\n slider.settings.slideMargin) / childWidth) || 1;\n }\n // if \"vertical\" mode, slides showing will always be minSlides\n } else if (slider.settings.mode === 'vertical') {\n slidesShowing = slider.settings.minSlides;\n }\n return slidesShowing;\n };\n\n /**\n * Returns the number of pages (one full viewport of slides is one \"page\")\n */\n var getPagerQty = function() {\n var pagerQty = 0,\n breakPoint = 0,\n counter = 0;\n // if moveSlides is specified by the user\n if (slider.settings.moveSlides > 0) {\n if (slider.settings.infiniteLoop) {\n pagerQty = Math.ceil(slider.children.length / getMoveBy());\n } else {\n // when breakpoint goes above children length, counter is the number of pages\n while (breakPoint < slider.children.length) {\n ++pagerQty;\n breakPoint = counter + getNumberSlidesShowing();\n counter += slider.settings.moveSlides <= getNumberSlidesShowing() ? slider.settings.moveSlides : getNumberSlidesShowing();\n }\n\t\t return counter;\n }\n // if moveSlides is 0 (auto) divide children length by sides showing, then round up\n } else {\n pagerQty = Math.ceil(slider.children.length / getNumberSlidesShowing());\n }\n return pagerQty;\n };\n\n /**\n * Returns the number of individual slides by which to shift the slider\n */\n var getMoveBy = function() {\n // if moveSlides was set by the user and moveSlides is less than number of slides showing\n if (slider.settings.moveSlides > 0 && slider.settings.moveSlides <= getNumberSlidesShowing()) {\n return slider.settings.moveSlides;\n }\n // if moveSlides is 0 (auto)\n return getNumberSlidesShowing();\n };\n\n /**\n * Sets the slider's (el) left or top position\n */\n var setSlidePosition = function() {\n var position, lastChild, lastShowingIndex;\n // if last slide, not infinite loop, and number of children is larger than specified maxSlides\n if (slider.children.length > slider.settings.maxSlides && slider.active.last && !slider.settings.infiniteLoop) {\n if (slider.settings.mode === 'horizontal') {\n // get the last child's position\n lastChild = slider.children.last();\n position = lastChild.position();\n // set the left position\n setPositionProperty(-(position.left - (slider.viewport.width() - lastChild.outerWidth())), 'reset', 0);\n } else if (slider.settings.mode === 'vertical') {\n // get the last showing index's position\n lastShowingIndex = slider.children.length - slider.settings.minSlides;\n position = slider.children.eq(lastShowingIndex).position();\n // set the top position\n setPositionProperty(-position.top, 'reset', 0);\n }\n // if not last slide\n } else {\n // get the position of the first showing slide\n position = slider.children.eq(slider.active.index * getMoveBy()).position();\n // check for last slide\n if (slider.active.index === getPagerQty() - 1) { slider.active.last = true; }\n // set the respective position\n if (position !== undefined) {\n if (slider.settings.mode === 'horizontal') { setPositionProperty(-position.left, 'reset', 0); }\n else if (slider.settings.mode === 'vertical') { setPositionProperty(-position.top, 'reset', 0); }\n }\n }\n };\n\n /**\n * Sets the el's animating property position (which in turn will sometimes animate el).\n * If using CSS, sets the transform property. If not using CSS, sets the top / left property.\n *\n * @param value (int)\n * - the animating property's value\n *\n * @param type (string) 'slide', 'reset', 'ticker'\n * - the type of instance for which the function is being\n *\n * @param duration (int)\n * - the amount of time (in ms) the transition should occupy\n *\n * @param params (array) optional\n * - an optional parameter containing any variables that need to be passed in\n */\n var setPositionProperty = function(value, type, duration, params) {\n var animateObj, propValue;\n // use CSS transform\n if (slider.usingCSS) {\n // determine the translate3d value\n propValue = slider.settings.mode === 'vertical' ? 'translate3d(0, ' + value + 'px, 0)' : 'translate3d(' + value + 'px, 0, 0)';\n // add the CSS transition-duration\n el.css('-' + slider.cssPrefix + '-transition-duration', duration / 1000 + 's');\n if (type === 'slide') {\n // set the property value\n el.css(slider.animProp, propValue);\n if (duration !== 0) {\n // add a callback method - executes when CSS transition completes\n el.on('transitionend webkitTransitionEnd oTransitionEnd MSTransitionEnd', function(e) {\n //make sure it's the correct one\n if (!$(e.target).is(el)) { return; }\n // remove the callback\n el.off('transitionend webkitTransitionEnd oTransitionEnd MSTransitionEnd');\n updateAfterSlideTransition();\n });\n } else { //duration = 0\n updateAfterSlideTransition();\n }\n } else if (type === 'reset') {\n el.css(slider.animProp, propValue);\n } else if (type === 'ticker') {\n // make the transition use 'linear'\n el.css('-' + slider.cssPrefix + '-transition-timing-function', 'linear');\n el.css(slider.animProp, propValue);\n if (duration !== 0) {\n el.on('transitionend webkitTransitionEnd oTransitionEnd MSTransitionEnd', function(e) {\n //make sure it's the correct one\n if (!$(e.target).is(el)) { return; }\n // remove the callback\n el.off('transitionend webkitTransitionEnd oTransitionEnd MSTransitionEnd');\n // reset the position\n setPositionProperty(params.resetValue, 'reset', 0);\n // start the loop again\n tickerLoop();\n });\n } else { //duration = 0\n setPositionProperty(params.resetValue, 'reset', 0);\n tickerLoop();\n }\n }\n // use JS animate\n } else {\n animateObj = {};\n animateObj[slider.animProp] = value;\n if (type === 'slide') {\n el.animate(animateObj, duration, slider.settings.easing, function() {\n updateAfterSlideTransition();\n });\n } else if (type === 'reset') {\n el.css(slider.animProp, value);\n } else if (type === 'ticker') {\n el.animate(animateObj, duration, 'linear', function() {\n setPositionProperty(params.resetValue, 'reset', 0);\n // run the recursive loop after animation\n tickerLoop();\n });\n }\n }\n };\n\n /**\n * Populates the pager with proper amount of pages\n */\n var populatePager = function() {\n var pagerHtml = '',\n linkContent = '',\n pagerQty = getPagerQty();\n // loop through each pager item\n for (var i = 0; i < pagerQty; i++) {\n linkContent = '';\n // if a buildPager function is supplied, use it to get pager link value, else use index + 1\n if (slider.settings.buildPager && $.isFunction(slider.settings.buildPager) || slider.settings.pagerCustom) {\n linkContent = slider.settings.buildPager(i);\n slider.pagerEl.addClass('bx-custom-pager');\n } else {\n linkContent = i + 1;\n slider.pagerEl.addClass('bx-default-pager');\n }\n // var linkContent = slider.settings.buildPager && $.isFunction(slider.settings.buildPager) ? slider.settings.buildPager(i) : i + 1;\n // add the markup to the string\n pagerHtml += '';\n }\n // populate the pager element with pager links\n slider.pagerEl.html(pagerHtml);\n };\n\n /**\n * Appends the pager to the controls element\n */\n var appendPager = function() {\n if (!slider.settings.pagerCustom) {\n // create the pager DOM element\n slider.pagerEl = $('
');\n // if a pager selector was supplied, populate it with the pager\n if (slider.settings.pagerSelector) {\n $(slider.settings.pagerSelector).html(slider.pagerEl);\n // if no pager selector was supplied, add it after the wrapper\n } else {\n slider.controls.el.addClass('bx-has-pager').append(slider.pagerEl);\n }\n // populate the pager\n populatePager();\n } else {\n slider.pagerEl = $(slider.settings.pagerCustom);\n }\n // assign the pager click binding\n slider.pagerEl.on('click touchend', 'a', clickPagerBind);\n };\n\n /**\n * Appends prev / next controls to the controls element\n */\n var appendControls = function() {\n slider.controls.next = $('' + slider.settings.nextText + '');\n slider.controls.prev = $('' + slider.settings.prevText + '');\n // add click actions to the controls\n slider.controls.next.on('click touchend', clickNextBind);\n slider.controls.prev.on('click touchend', clickPrevBind);\n // if nextSelector was supplied, populate it\n if (slider.settings.nextSelector) {\n $(slider.settings.nextSelector).append(slider.controls.next);\n }\n // if prevSelector was supplied, populate it\n if (slider.settings.prevSelector) {\n $(slider.settings.prevSelector).append(slider.controls.prev);\n }\n // if no custom selectors were supplied\n if (!slider.settings.nextSelector && !slider.settings.prevSelector) {\n // add the controls to the DOM\n slider.controls.directionEl = $('
');\n // add the control elements to the directionEl\n slider.controls.directionEl.append(slider.controls.prev).append(slider.controls.next);\n // slider.viewport.append(slider.controls.directionEl);\n slider.controls.el.addClass('bx-has-controls-direction').append(slider.controls.directionEl);\n }\n };\n\n /**\n * Appends start / stop auto controls to the controls element\n */\n var appendControlsAuto = function() {\n slider.controls.start = $('');\n slider.controls.stop = $('');\n // add the controls to the DOM\n slider.controls.autoEl = $('
');\n // on click actions to the controls\n slider.controls.autoEl.on('click', '.bx-start', clickStartBind);\n slider.controls.autoEl.on('click', '.bx-stop', clickStopBind);\n // if autoControlsCombine, insert only the \"start\" control\n if (slider.settings.autoControlsCombine) {\n slider.controls.autoEl.append(slider.controls.start);\n // if autoControlsCombine is false, insert both controls\n } else {\n slider.controls.autoEl.append(slider.controls.start).append(slider.controls.stop);\n }\n // if auto controls selector was supplied, populate it with the controls\n if (slider.settings.autoControlsSelector) {\n $(slider.settings.autoControlsSelector).html(slider.controls.autoEl);\n // if auto controls selector was not supplied, add it after the wrapper\n } else {\n slider.controls.el.addClass('bx-has-controls-auto').append(slider.controls.autoEl);\n }\n // update the auto controls\n updateAutoControls(slider.settings.autoStart ? 'stop' : 'start');\n };\n\n /**\n * Appends image captions to the DOM\n */\n var appendCaptions = function() {\n // cycle through each child\n slider.children.each(function(index) {\n // get the image title attribute\n var title = $(this).find('img:first').attr('title');\n // append the caption\n if (title !== undefined && ('' + title).length) {\n $(this).append('
' + title + '
');\n }\n });\n };\n\n /**\n * Click next binding\n *\n * @param e (event)\n * - DOM event object\n */\n var clickNextBind = function(e) {\n e.preventDefault();\n if (slider.controls.el.hasClass('disabled')) { return; }\n // if auto show is running, stop it\n if (slider.settings.auto && slider.settings.stopAutoOnClick) { el.stopAuto(); }\n el.goToNextSlide();\n };\n\n /**\n * Click prev binding\n *\n * @param e (event)\n * - DOM event object\n */\n var clickPrevBind = function(e) {\n e.preventDefault();\n if (slider.controls.el.hasClass('disabled')) { return; }\n // if auto show is running, stop it\n if (slider.settings.auto && slider.settings.stopAutoOnClick) { el.stopAuto(); }\n el.goToPrevSlide();\n };\n\n /**\n * Click start binding\n *\n * @param e (event)\n * - DOM event object\n */\n var clickStartBind = function(e) {\n el.startAuto();\n e.preventDefault();\n };\n\n /**\n * Click stop binding\n *\n * @param e (event)\n * - DOM event object\n */\n var clickStopBind = function(e) {\n el.stopAuto();\n e.preventDefault();\n };\n\n /**\n * Click pager binding\n *\n * @param e (event)\n * - DOM event object\n */\n var clickPagerBind = function(e) {\n var pagerLink, pagerIndex;\n e.preventDefault();\n if (slider.controls.el.hasClass('disabled')) {\n return;\n }\n // if auto show is running, stop it\n if (slider.settings.auto && slider.settings.stopAutoOnClick) { el.stopAuto(); }\n pagerLink = $(e.currentTarget);\n if (pagerLink.attr('data-slide-index') !== undefined) {\n pagerIndex = parseInt(pagerLink.attr('data-slide-index'));\n // if clicked pager link is not active, continue with the goToSlide call\n if (pagerIndex !== slider.active.index) { el.goToSlide(pagerIndex); }\n }\n };\n\n /**\n * Updates the pager links with an active class\n *\n * @param slideIndex (int)\n * - index of slide to make active\n */\n var updatePagerActive = function(slideIndex) {\n // if \"short\" pager type\n var len = slider.children.length; // nb of children\n if (slider.settings.pagerType === 'short') {\n if (slider.settings.maxSlides > 1) {\n len = Math.ceil(slider.children.length / slider.settings.maxSlides);\n }\n slider.pagerEl.html((slideIndex + 1) + slider.settings.pagerShortSeparator + len);\n return;\n }\n // remove all pager active classes\n slider.pagerEl.find('a').removeClass('active');\n // apply the active class for all pagers\n slider.pagerEl.each(function(i, el) { $(el).find('a').eq(slideIndex).addClass('active'); });\n };\n\n /**\n * Performs needed actions after a slide transition\n */\n var updateAfterSlideTransition = function() {\n // if infinite loop is true\n if (slider.settings.infiniteLoop) {\n var position = '';\n // first slide\n if (slider.active.index === 0) {\n // set the new position\n position = slider.children.eq(0).position();\n // carousel, last slide\n } else if (slider.active.index === getPagerQty() - 1 && slider.carousel) {\n position = slider.children.eq((getPagerQty() - 1) * getMoveBy()).position();\n // last slide\n } else if (slider.active.index === slider.children.length - 1) {\n position = slider.children.eq(slider.children.length - 1).position();\n }\n if (position) {\n if (slider.settings.mode === 'horizontal') { setPositionProperty(-position.left, 'reset', 0); }\n else if (slider.settings.mode === 'vertical') { setPositionProperty(-position.top, 'reset', 0); }\n }\n }\n // declare that the transition is complete\n slider.working = false;\n // onSlideAfter callback\n slider.settings.onSlideAfter.call(el, slider.children.eq(slider.active.index), slider.oldIndex, slider.active.index);\n };\n\n /**\n * Updates the auto controls state (either active, or combined switch)\n *\n * @param state (string) \"start\", \"stop\"\n * - the new state of the auto show\n */\n var updateAutoControls = function(state) {\n // if autoControlsCombine is true, replace the current control with the new state\n if (slider.settings.autoControlsCombine) {\n slider.controls.autoEl.html(slider.controls[state]);\n // if autoControlsCombine is false, apply the \"active\" class to the appropriate control\n } else {\n slider.controls.autoEl.find('a').removeClass('active');\n slider.controls.autoEl.find('a:not(.bx-' + state + ')').addClass('active');\n }\n };\n\n /**\n * Updates the direction controls (checks if either should be hidden)\n */\n var updateDirectionControls = function() {\n if (getPagerQty() === 1) {\n slider.controls.prev.addClass('disabled');\n slider.controls.next.addClass('disabled');\n } else if (!slider.settings.infiniteLoop && slider.settings.hideControlOnEnd) {\n // if first slide\n if (slider.active.index === 0) {\n slider.controls.prev.addClass('disabled');\n slider.controls.next.removeClass('disabled');\n // if last slide\n } else if (slider.active.index === getPagerQty() - 1) {\n slider.controls.next.addClass('disabled');\n slider.controls.prev.removeClass('disabled');\n // if any slide in the middle\n } else {\n slider.controls.prev.removeClass('disabled');\n slider.controls.next.removeClass('disabled');\n }\n }\n };\n\t/* auto start and stop functions */\n\tvar windowFocusHandler = function() { el.startAuto(); };\n\tvar windowBlurHandler = function() { el.stopAuto(); };\n /**\n * Initializes the auto process\n */\n var initAuto = function() {\n // if autoDelay was supplied, launch the auto show using a setTimeout() call\n if (slider.settings.autoDelay > 0) {\n setTimeout(el.startAuto, slider.settings.autoDelay);\n // if autoDelay was not supplied, start the auto show normally\n } else {\n el.startAuto();\n\n //add focus and blur events to ensure its running if timeout gets paused\n $(window).focus(windowFocusHandler).blur(windowBlurHandler);\n }\n // if autoHover is requested\n if (slider.settings.autoHover) {\n // on el hover\n el.hover(function() {\n // if the auto show is currently playing (has an active interval)\n if (slider.interval) {\n // stop the auto show and pass true argument which will prevent control update\n el.stopAuto(true);\n // create a new autoPaused value which will be used by the relative \"mouseout\" event\n slider.autoPaused = true;\n }\n }, function() {\n // if the autoPaused value was created be the prior \"mouseover\" event\n if (slider.autoPaused) {\n // start the auto show and pass true argument which will prevent control update\n el.startAuto(true);\n // reset the autoPaused value\n slider.autoPaused = null;\n }\n });\n }\n };\n\n /**\n * Initializes the ticker process\n */\n var initTicker = function() {\n var startPosition = 0,\n position, transform, value, idx, ratio, property, newSpeed, totalDimens;\n // if autoDirection is \"next\", append a clone of the entire slider\n if (slider.settings.autoDirection === 'next') {\n el.append(slider.children.clone().addClass('bx-clone'));\n // if autoDirection is \"prev\", prepend a clone of the entire slider, and set the left position\n } else {\n el.prepend(slider.children.clone().addClass('bx-clone'));\n position = slider.children.first().position();\n startPosition = slider.settings.mode === 'horizontal' ? -position.left : -position.top;\n }\n setPositionProperty(startPosition, 'reset', 0);\n // do not allow controls in ticker mode\n slider.settings.pager = false;\n slider.settings.controls = false;\n slider.settings.autoControls = false;\n // if autoHover is requested\n if (slider.settings.tickerHover) {\n if (slider.usingCSS) {\n idx = slider.settings.mode === 'horizontal' ? 4 : 5;\n slider.viewport.hover(function() {\n transform = el.css('-' + slider.cssPrefix + '-transform');\n value = parseFloat(transform.split(',')[idx]);\n setPositionProperty(value, 'reset', 0);\n }, function() {\n totalDimens = 0;\n slider.children.each(function(index) {\n totalDimens += slider.settings.mode === 'horizontal' ? $(this).outerWidth(true) : $(this).outerHeight(true);\n });\n // calculate the speed ratio (used to determine the new speed to finish the paused animation)\n ratio = slider.settings.speed / totalDimens;\n // determine which property to use\n property = slider.settings.mode === 'horizontal' ? 'left' : 'top';\n // calculate the new speed\n newSpeed = ratio * (totalDimens - (Math.abs(parseInt(value))));\n tickerLoop(newSpeed);\n });\n } else {\n // on el hover\n slider.viewport.hover(function() {\n el.stop();\n }, function() {\n // calculate the total width of children (used to calculate the speed ratio)\n totalDimens = 0;\n slider.children.each(function(index) {\n totalDimens += slider.settings.mode === 'horizontal' ? $(this).outerWidth(true) : $(this).outerHeight(true);\n });\n // calculate the speed ratio (used to determine the new speed to finish the paused animation)\n ratio = slider.settings.speed / totalDimens;\n // determine which property to use\n property = slider.settings.mode === 'horizontal' ? 'left' : 'top';\n // calculate the new speed\n newSpeed = ratio * (totalDimens - (Math.abs(parseInt(el.css(property)))));\n tickerLoop(newSpeed);\n });\n }\n }\n // start the ticker loop\n tickerLoop();\n };\n\n /**\n * Runs a continuous loop, news ticker-style\n */\n var tickerLoop = function(resumeSpeed) {\n var speed = resumeSpeed ? resumeSpeed : slider.settings.speed,\n position = {left: 0, top: 0},\n reset = {left: 0, top: 0},\n animateProperty, resetValue, params;\n\n // if \"next\" animate left position to last child, then reset left to 0\n if (slider.settings.autoDirection === 'next') {\n position = el.find('.bx-clone').first().position();\n // if \"prev\" animate left position to 0, then reset left to first non-clone child\n } else {\n reset = slider.children.first().position();\n }\n animateProperty = slider.settings.mode === 'horizontal' ? -position.left : -position.top;\n resetValue = slider.settings.mode === 'horizontal' ? -reset.left : -reset.top;\n params = {resetValue: resetValue};\n setPositionProperty(animateProperty, 'ticker', speed, params);\n };\n\n /**\n * Check if el is on screen\n */\n var isOnScreen = function(el) {\n var win = $(window),\n viewport = {\n top: win.scrollTop(),\n left: win.scrollLeft()\n },\n bounds = el.offset();\n\n viewport.right = viewport.left + win.width();\n viewport.bottom = viewport.top + win.height();\n bounds.right = bounds.left + el.outerWidth();\n bounds.bottom = bounds.top + el.outerHeight();\n\n return (!(viewport.right < bounds.left || viewport.left > bounds.right || viewport.bottom < bounds.top || viewport.top > bounds.bottom));\n };\n\n /**\n * Initializes keyboard events\n */\n var keyPress = function(e) {\n var activeElementTag = document.activeElement.tagName.toLowerCase(),\n tagFilters = 'input|textarea',\n p = new RegExp(activeElementTag,['i']),\n result = p.exec(tagFilters);\n\n if (result == null && isOnScreen(el)) {\n if (e.keyCode === 39) {\n clickNextBind(e);\n return false;\n } else if (e.keyCode === 37) {\n clickPrevBind(e);\n return false;\n }\n }\n };\n\n /**\n * Initializes touch events\n */\n var initTouch = function() {\n // initialize object to contain all touch values\n slider.touch = {\n start: {x: 0, y: 0},\n end: {x: 0, y: 0}\n };\n slider.viewport.on('touchstart MSPointerDown pointerdown', onTouchStart);\n\n //for browsers that have implemented pointer events and fire a click after\n //every pointerup regardless of whether pointerup is on same screen location as pointerdown or not\n slider.viewport.on('click', '.bxslider a', function(e) {\n if (slider.viewport.hasClass('click-disabled')) {\n e.preventDefault();\n slider.viewport.removeClass('click-disabled');\n }\n });\n };\n\n /**\n * Event handler for \"touchstart\"\n *\n * @param e (event)\n * - DOM event object\n */\n var onTouchStart = function(e) {\n // watch only for left mouse, touch contact and pen contact\n // touchstart event object doesn`t have button property\n if (e.type !== 'touchstart' && e.button !== 0) {\n return;\n }\n e.preventDefault();\n //disable slider controls while user is interacting with slides to avoid slider freeze that happens on touch devices when a slide swipe happens immediately after interacting with slider controls\n slider.controls.el.addClass('disabled');\n\n if (slider.working) {\n slider.controls.el.removeClass('disabled');\n } else {\n // record the original position when touch starts\n slider.touch.originalPos = el.position();\n var orig = e.originalEvent,\n touchPoints = (typeof orig.changedTouches !== 'undefined') ? orig.changedTouches : [orig];\n\t\tvar chromePointerEvents = typeof PointerEvent === 'function'; \n\t\tif (chromePointerEvents) { \n\t\t\tif (orig.pointerId === undefined) { \n\t\t\t\treturn;\n\t\t\t} \n\t\t}\n // record the starting touch x, y coordinates\n slider.touch.start.x = touchPoints[0].pageX;\n slider.touch.start.y = touchPoints[0].pageY;\n\n if (slider.viewport.get(0).setPointerCapture) {\n slider.pointerId = orig.pointerId;\n slider.viewport.get(0).setPointerCapture(slider.pointerId);\n }\n // store original event data for click fixation\n slider.originalClickTarget = orig.originalTarget || orig.target;\n slider.originalClickButton = orig.button;\n slider.originalClickButtons = orig.buttons;\n slider.originalEventType = orig.type;\n // at this moment we don`t know what it is click or swipe\n slider.hasMove = false;\n // on a \"touchmove\" event to the viewport\n slider.viewport.on('touchmove MSPointerMove pointermove', onTouchMove);\n // on a \"touchend\" event to the viewport\n slider.viewport.on('touchend MSPointerUp pointerup', onTouchEnd);\n slider.viewport.on('MSPointerCancel pointercancel', onPointerCancel);\n }\n };\n\n /**\n * Cancel Pointer for Windows Phone\n *\n * @param e (event)\n * - DOM event object\n */\n var onPointerCancel = function(e) {\n e.preventDefault();\n /* onPointerCancel handler is needed to deal with situations when a touchend\n doesn't fire after a touchstart (this happens on windows phones only) */\n setPositionProperty(slider.touch.originalPos.left, 'reset', 0);\n\n //remove handlers\n slider.controls.el.removeClass('disabled');\n slider.viewport.off('MSPointerCancel pointercancel', onPointerCancel);\n slider.viewport.off('touchmove MSPointerMove pointermove', onTouchMove);\n slider.viewport.off('touchend MSPointerUp pointerup', onTouchEnd);\n if (slider.viewport.get(0).releasePointerCapture) {\n slider.viewport.get(0).releasePointerCapture(slider.pointerId);\n }\n };\n\n /**\n * Event handler for \"touchmove\"\n *\n * @param e (event)\n * - DOM event object\n */\n var onTouchMove = function(e) {\n var orig = e.originalEvent,\n touchPoints = (typeof orig.changedTouches !== 'undefined') ? orig.changedTouches : [orig],\n // if scrolling on y axis, do not prevent default\n xMovement = Math.abs(touchPoints[0].pageX - slider.touch.start.x),\n yMovement = Math.abs(touchPoints[0].pageY - slider.touch.start.y),\n value = 0,\n change = 0;\n // this is swipe\n slider.hasMove = true;\n\n // x axis swipe\n if ((xMovement * 3) > yMovement && slider.settings.preventDefaultSwipeX) {\n e.preventDefault();\n // y axis swipe\n } else if ((yMovement * 3) > xMovement && slider.settings.preventDefaultSwipeY) {\n e.preventDefault();\n }\n if (e.type !== 'touchmove') {\n e.preventDefault();\n }\n\n if (slider.settings.mode !== 'fade' && slider.settings.oneToOneTouch) {\n // if horizontal, drag along x axis\n if (slider.settings.mode === 'horizontal') {\n change = touchPoints[0].pageX - slider.touch.start.x;\n value = slider.touch.originalPos.left + change;\n // if vertical, drag along y axis\n } else {\n change = touchPoints[0].pageY - slider.touch.start.y;\n value = slider.touch.originalPos.top + change;\n }\n setPositionProperty(value, 'reset', 0);\n }\n };\n\n /**\n * Event handler for \"touchend\"\n *\n * @param e (event)\n * - DOM event object\n */\n var onTouchEnd = function(e) {\n e.preventDefault();\n slider.viewport.off('touchmove MSPointerMove pointermove', onTouchMove);\n //enable slider controls as soon as user stops interacing with slides\n slider.controls.el.removeClass('disabled');\n var orig = e.originalEvent,\n touchPoints = (typeof orig.changedTouches !== 'undefined') ? orig.changedTouches : [orig],\n value = 0,\n distance = 0;\n // record end x, y positions\n slider.touch.end.x = touchPoints[0].pageX;\n slider.touch.end.y = touchPoints[0].pageY;\n // if fade mode, check if absolute x distance clears the threshold\n if (slider.settings.mode === 'fade') {\n distance = Math.abs(slider.touch.start.x - slider.touch.end.x);\n if (distance >= slider.settings.swipeThreshold) {\n if (slider.touch.start.x > slider.touch.end.x) {\n el.goToNextSlide();\n } else {\n el.goToPrevSlide();\n }\n el.stopAuto();\n }\n // not fade mode\n } else {\n // calculate distance and el's animate property\n if (slider.settings.mode === 'horizontal') {\n distance = slider.touch.end.x - slider.touch.start.x;\n value = slider.touch.originalPos.left;\n } else {\n distance = slider.touch.end.y - slider.touch.start.y;\n value = slider.touch.originalPos.top;\n }\n // if not infinite loop and first / last slide, do not attempt a slide transition\n if (!slider.settings.infiniteLoop && ((slider.active.index === 0 && distance > 0) || (slider.active.last && distance < 0))) {\n setPositionProperty(value, 'reset', 200);\n } else {\n // check if distance clears threshold\n if (Math.abs(distance) >= slider.settings.swipeThreshold) {\n if (distance < 0) {\n el.goToNextSlide();\n } else {\n el.goToPrevSlide();\n }\n el.stopAuto();\n } else {\n // el.animate(property, 200);\n setPositionProperty(value, 'reset', 200);\n }\n }\n }\n slider.viewport.off('touchend MSPointerUp pointerup', onTouchEnd);\n\n if (slider.viewport.get(0).releasePointerCapture) {\n slider.viewport.get(0).releasePointerCapture(slider.pointerId);\n }\n // if slider had swipe with left mouse, touch contact and pen contact\n if (slider.hasMove === false && (slider.originalClickButton === 0 || slider.originalEventType === 'touchstart')) {\n // trigger click event (fix for Firefox59 and PointerEvent standard compatibility)\n $(slider.originalClickTarget).trigger({\n type: 'click',\n button: slider.originalClickButton,\n buttons: slider.originalClickButtons\n });\n }\n };\n\n /**\n * Window resize event callback\n */\n var resizeWindow = function(e) {\n // don't do anything if slider isn't initialized.\n if (!slider.initialized) { return; }\n // Delay if slider working.\n if (slider.working) {\n window.setTimeout(resizeWindow, 10);\n } else {\n // get the new window dimens (again, thank you IE)\n var windowWidthNew = $(window).width(),\n windowHeightNew = $(window).height();\n // make sure that it is a true window resize\n // *we must check this because our dinosaur friend IE fires a window resize event when certain DOM elements\n // are resized. Can you just die already?*\n if (windowWidth !== windowWidthNew || windowHeight !== windowHeightNew) {\n // set the new window dimens\n windowWidth = windowWidthNew;\n windowHeight = windowHeightNew;\n // update all dynamic elements\n el.redrawSlider();\n // Call user resize handler\n slider.settings.onSliderResize.call(el, slider.active.index);\n }\n }\n };\n\n /**\n * Adds an aria-hidden=true attribute to each element\n *\n * @param startVisibleIndex (int)\n * - the first visible element's index\n */\n var applyAriaHiddenAttributes = function(startVisibleIndex) {\n var numberOfSlidesShowing = getNumberSlidesShowing();\n // only apply attributes if the setting is enabled and not in ticker mode\n if (slider.settings.ariaHidden && !slider.settings.ticker) {\n // add aria-hidden=true to all elements\n slider.children.attr('aria-hidden', 'true');\n // get the visible elements and change to aria-hidden=false\n slider.children.slice(startVisibleIndex, startVisibleIndex + numberOfSlidesShowing).attr('aria-hidden', 'false');\n }\n };\n\n /**\n * Returns index according to present page range\n *\n * @param slideOndex (int)\n * - the desired slide index\n */\n var setSlideIndex = function(slideIndex) {\n if (slideIndex < 0) {\n if (slider.settings.infiniteLoop) {\n return getPagerQty() - 1;\n }else {\n //we don't go to undefined slides\n return slider.active.index;\n }\n // if slideIndex is greater than children length, set active index to 0 (this happens during infinite loop)\n } else if (slideIndex >= getPagerQty()) {\n if (slider.settings.infiniteLoop) {\n return 0;\n } else {\n //we don't move to undefined pages\n return slider.active.index;\n }\n // set active index to requested slide\n } else {\n return slideIndex;\n }\n };\n\n /**\n * ===================================================================================\n * = PUBLIC FUNCTIONS\n * ===================================================================================\n */\n\n /**\n * Performs slide transition to the specified slide\n *\n * @param slideIndex (int)\n * - the destination slide's index (zero-based)\n *\n * @param direction (string)\n * - INTERNAL USE ONLY - the direction of travel (\"prev\" / \"next\")\n */\n el.goToSlide = function(slideIndex, direction) {\n // onSlideBefore, onSlideNext, onSlidePrev callbacks\n // Allow transition canceling based on returned value\n var performTransition = true,\n moveBy = 0,\n position = {left: 0, top: 0},\n lastChild = null,\n lastShowingIndex, eq, value, requestEl;\n // store the old index\n slider.oldIndex = slider.active.index;\n //set new index\n slider.active.index = setSlideIndex(slideIndex);\n\n // if plugin is currently in motion, ignore request\n if (slider.working || slider.active.index === slider.oldIndex) { return; }\n // declare that plugin is in motion\n slider.working = true;\n\n performTransition = slider.settings.onSlideBefore.call(el, slider.children.eq(slider.active.index), slider.oldIndex, slider.active.index);\n\n // If transitions canceled, reset and return\n if (typeof (performTransition) !== 'undefined' && !performTransition) {\n slider.active.index = slider.oldIndex; // restore old index\n slider.working = false; // is not in motion\n return;\n }\n\n if (direction === 'next') {\n // Prevent canceling in future functions or lack there-of from negating previous commands to cancel\n if (!slider.settings.onSlideNext.call(el, slider.children.eq(slider.active.index), slider.oldIndex, slider.active.index)) {\n performTransition = false;\n }\n } else if (direction === 'prev') {\n // Prevent canceling in future functions or lack there-of from negating previous commands to cancel\n if (!slider.settings.onSlidePrev.call(el, slider.children.eq(slider.active.index), slider.oldIndex, slider.active.index)) {\n performTransition = false;\n }\n }\n\n // check if last slide\n slider.active.last = slider.active.index >= getPagerQty() - 1;\n // update the pager with active class\n if (slider.settings.pager || slider.settings.pagerCustom) { updatePagerActive(slider.active.index); }\n // // check for direction control update\n if (slider.settings.controls) { updateDirectionControls(); }\n // if slider is set to mode: \"fade\"\n if (slider.settings.mode === 'fade') {\n // if adaptiveHeight is true and next height is different from current height, animate to the new height\n if (slider.settings.adaptiveHeight && slider.viewport.height() !== getViewportHeight()) {\n slider.viewport.animate({height: getViewportHeight()}, slider.settings.adaptiveHeightSpeed);\n }\n // fade out the visible child and reset its z-index value\n slider.children.filter(':visible').fadeOut(slider.settings.speed).css({zIndex: 0});\n // fade in the newly requested slide\n slider.children.eq(slider.active.index).css('zIndex', slider.settings.slideZIndex + 1).fadeIn(slider.settings.speed, function() {\n $(this).css('zIndex', slider.settings.slideZIndex);\n updateAfterSlideTransition();\n });\n // slider mode is not \"fade\"\n } else {\n // if adaptiveHeight is true and next height is different from current height, animate to the new height\n if (slider.settings.adaptiveHeight && slider.viewport.height() !== getViewportHeight()) {\n slider.viewport.animate({height: getViewportHeight()}, slider.settings.adaptiveHeightSpeed);\n }\n // if carousel and not infinite loop\n if (!slider.settings.infiniteLoop && slider.carousel && slider.active.last) {\n if (slider.settings.mode === 'horizontal') {\n // get the last child position\n lastChild = slider.children.eq(slider.children.length - 1);\n position = lastChild.position();\n // calculate the position of the last slide\n moveBy = slider.viewport.width() - lastChild.outerWidth();\n } else {\n // get last showing index position\n lastShowingIndex = slider.children.length - slider.settings.minSlides;\n position = slider.children.eq(lastShowingIndex).position();\n }\n // horizontal carousel, going previous while on first slide (infiniteLoop mode)\n } else if (slider.carousel && slider.active.last && direction === 'prev') {\n // get the last child position\n eq = slider.settings.moveSlides === 1 ? slider.settings.maxSlides - getMoveBy() : ((getPagerQty() - 1) * getMoveBy()) - (slider.children.length - slider.settings.maxSlides);\n lastChild = el.children('.bx-clone').eq(eq);\n position = lastChild.position();\n // if infinite loop and \"Next\" is clicked on the last slide\n } else if (direction === 'next' && slider.active.index === 0) {\n // get the last clone position\n position = el.find('> .bx-clone').eq(slider.settings.maxSlides).position();\n slider.active.last = false;\n // normal non-zero requests\n } else if (slideIndex >= 0) {\n //parseInt is applied to allow floats for slides/page\n requestEl = slideIndex * parseInt(getMoveBy());\n position = slider.children.eq(requestEl).position();\n }\n\n /* If the position doesn't exist\n * (e.g. if you destroy the slider on a next click),\n * it doesn't throw an error.\n */\n if (typeof (position) !== 'undefined') {\n value = slider.settings.mode === 'horizontal' ? -(position.left - moveBy) : -position.top;\n // plugin values to be animated\n setPositionProperty(value, 'slide', slider.settings.speed);\n }\n slider.working = false;\n }\n if (slider.settings.ariaHidden) { applyAriaHiddenAttributes(slider.active.index * getMoveBy()); }\n };\n\n /**\n * Transitions to the next slide in the show\n */\n el.goToNextSlide = function() {\n // if infiniteLoop is false and last page is showing, disregard call\n if (!slider.settings.infiniteLoop && slider.active.last) { return; }\n\t if (slider.working === true){ return ;}\n var pagerIndex = parseInt(slider.active.index) + 1;\n el.goToSlide(pagerIndex, 'next');\n };\n\n /**\n * Transitions to the prev slide in the show\n */\n el.goToPrevSlide = function() {\n // if infiniteLoop is false and last page is showing, disregard call\n if (!slider.settings.infiniteLoop && slider.active.index === 0) { return; }\n\t if (slider.working === true){ return ;}\n var pagerIndex = parseInt(slider.active.index) - 1;\n el.goToSlide(pagerIndex, 'prev');\n };\n\n /**\n * Starts the auto show\n *\n * @param preventControlUpdate (boolean)\n * - if true, auto controls state will not be updated\n */\n el.startAuto = function(preventControlUpdate) {\n // if an interval already exists, disregard call\n if (slider.interval) { return; }\n // create an interval\n slider.interval = setInterval(function() {\n if (slider.settings.autoDirection === 'next') {\n el.goToNextSlide();\n } else {\n el.goToPrevSlide();\n }\n }, slider.settings.pause);\n\t //allback for when the auto rotate status changes\n\t slider.settings.onAutoChange.call(el, true);\n // if auto controls are displayed and preventControlUpdate is not true\n if (slider.settings.autoControls && preventControlUpdate !== true) { updateAutoControls('stop'); }\n };\n\n /**\n * Stops the auto show\n *\n * @param preventControlUpdate (boolean)\n * - if true, auto controls state will not be updated\n */\n el.stopAuto = function(preventControlUpdate) {\n // if slider is auto paused, just clear that state\n if (slider.autoPaused) slider.autoPaused = false;\n // if no interval exists, disregard call\n if (!slider.interval) { return; }\n // clear the interval\n clearInterval(slider.interval);\n slider.interval = null;\n\t //allback for when the auto rotate status changes\n\t slider.settings.onAutoChange.call(el, false);\n // if auto controls are displayed and preventControlUpdate is not true\n if (slider.settings.autoControls && preventControlUpdate !== true) { updateAutoControls('start'); }\n };\n\n /**\n * Returns current slide index (zero-based)\n */\n el.getCurrentSlide = function() {\n return slider.active.index;\n };\n\n /**\n * Returns current slide element\n */\n el.getCurrentSlideElement = function() {\n return slider.children.eq(slider.active.index);\n };\n\n /**\n * Returns a slide element\n * @param index (int)\n * - The index (zero-based) of the element you want returned.\n */\n el.getSlideElement = function(index) {\n return slider.children.eq(index);\n };\n\n /**\n * Returns number of slides in show\n */\n el.getSlideCount = function() {\n return slider.children.length;\n };\n\n /**\n * Return slider.working variable\n */\n el.isWorking = function() {\n return slider.working;\n };\n\n /**\n * Update all dynamic slider elements\n */\n el.redrawSlider = function() {\n // resize all children in ratio to new screen size\n slider.children.add(el.find('.bx-clone')).outerWidth(getSlideWidth());\n // adjust the height\n slider.viewport.css('height', getViewportHeight());\n // update the slide position\n if (!slider.settings.ticker) { setSlidePosition(); }\n // if active.last was true before the screen resize, we want\n // to keep it last no matter what screen size we end on\n if (slider.active.last) { slider.active.index = getPagerQty() - 1; }\n // if the active index (page) no longer exists due to the resize, simply set the index as last\n if (slider.active.index >= getPagerQty()) { slider.active.last = true; }\n // if a pager is being displayed and a custom pager is not being used, update it\n if (slider.settings.pager && !slider.settings.pagerCustom) {\n populatePager();\n updatePagerActive(slider.active.index);\n }\n if (slider.settings.ariaHidden) { applyAriaHiddenAttributes(slider.active.index * getMoveBy()); }\n };\n\n /**\n * Destroy the current instance of the slider (revert everything back to original state)\n */\n el.destroySlider = function() {\n // don't do anything if slider has already been destroyed\n if (!slider.initialized) { return; }\n slider.initialized = false;\n $('.bx-clone', this).remove();\n slider.children.each(function() {\n if ($(this).data('origStyle') !== undefined) {\n $(this).attr('style', $(this).data('origStyle'));\n } else {\n $(this).removeAttr('style');\n }\n });\n if ($(this).data('origStyle') !== undefined) {\n this.attr('style', $(this).data('origStyle'));\n } else {\n $(this).removeAttr('style');\n }\n $(this).unwrap().unwrap();\n if (slider.controls.el) { slider.controls.el.remove(); }\n if (slider.controls.next) { slider.controls.next.remove(); }\n if (slider.controls.prev) { slider.controls.prev.remove(); }\n if (slider.pagerEl && slider.settings.controls && !slider.settings.pagerCustom) { slider.pagerEl.remove(); }\n $('.bx-caption', this).remove();\n if (slider.controls.autoEl) { slider.controls.autoEl.remove(); }\n clearInterval(slider.interval);\n if (slider.settings.responsive) { $(window).off('resize', resizeWindow); }\n if (slider.settings.keyboardEnabled) { $(document).off('keydown', keyPress); }\n //remove self reference in data\n $(this).removeData('bxSlider');\n\t // remove global window handlers\n\t $(window).off('blur', windowBlurHandler).off('focus', windowFocusHandler);\n };\n\n /**\n * Reload the slider (revert all DOM changes, and re-initialize)\n */\n el.reloadSlider = function(settings) {\n if (settings !== undefined) { options = settings; }\n el.destroySlider();\n init();\n //store reference to self in order to access public functions later\n $(el).data('bxSlider', this);\n };\n\n init();\n\n $(el).data('bxSlider', this);\n\n // returns the current jQuery object\n return this;\n };\n\n})(jQuery);\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( 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\"use strict\";\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 * 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( 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 * imagesLoaded PACKAGED v4.1.4\n * JavaScript is all like \"You images are done yet or what?\"\n * MIT License\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 * imagesLoaded v4.1.4\n * JavaScript is all like \"You images are done yet or what?\"\n * MIT License\n */\n\n( function( window, factory ) { 'use strict';\n // universal module definition\n\n /*global define: false, module: false, require: false */\n\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( [\n 'ev-emitter/ev-emitter'\n ], function( EvEmitter ) {\n return factory( window, EvEmitter );\n });\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory(\n window,\n require('ev-emitter')\n );\n } else {\n // browser global\n window.imagesLoaded = factory(\n window,\n window.EvEmitter\n );\n }\n\n})( typeof window !== 'undefined' ? window : this,\n\n// -------------------------- factory -------------------------- //\n\nfunction factory( window, EvEmitter ) {\n\n\n\nvar $ = window.jQuery;\nvar console = window.console;\n\n// -------------------------- helpers -------------------------- //\n\n// extend objects\nfunction extend( a, b ) {\n for ( var prop in b ) {\n a[ prop ] = b[ prop ];\n }\n return a;\n}\n\nvar arraySlice = Array.prototype.slice;\n\n// turn element or nodeList into an array\nfunction makeArray( obj ) {\n if ( Array.isArray( obj ) ) {\n // use object if already an array\n return obj;\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// -------------------------- imagesLoaded -------------------------- //\n\n/**\n * @param {Array, Element, NodeList, String} elem\n * @param {Object or Function} options - if function, use as callback\n * @param {Function} onAlways - callback function\n */\nfunction ImagesLoaded( elem, options, onAlways ) {\n // coerce ImagesLoaded() without new, to be new ImagesLoaded()\n if ( !( this instanceof ImagesLoaded ) ) {\n return new ImagesLoaded( elem, options, onAlways );\n }\n // use elem as selector string\n var queryElem = elem;\n if ( typeof elem == 'string' ) {\n queryElem = document.querySelectorAll( elem );\n }\n // bail if bad element\n if ( !queryElem ) {\n console.error( 'Bad element for imagesLoaded ' + ( queryElem || elem ) );\n return;\n }\n\n this.elements = makeArray( queryElem );\n this.options = extend( {}, this.options );\n // shift arguments if no options set\n if ( typeof options == 'function' ) {\n onAlways = options;\n } else {\n extend( this.options, options );\n }\n\n if ( onAlways ) {\n this.on( 'always', onAlways );\n }\n\n this.getImages();\n\n if ( $ ) {\n // add jQuery Deferred object\n this.jqDeferred = new $.Deferred();\n }\n\n // HACK check async to allow time to bind listeners\n setTimeout( this.check.bind( this ) );\n}\n\nImagesLoaded.prototype = Object.create( EvEmitter.prototype );\n\nImagesLoaded.prototype.options = {};\n\nImagesLoaded.prototype.getImages = function() {\n this.images = [];\n\n // filter & find items if we have an item selector\n this.elements.forEach( this.addElementImages, this );\n};\n\n/**\n * @param {Node} element\n */\nImagesLoaded.prototype.addElementImages = function( elem ) {\n // filter siblings\n if ( elem.nodeName == 'IMG' ) {\n this.addImage( elem );\n }\n // get background image on element\n if ( this.options.background === true ) {\n this.addElementBackgroundImages( elem );\n }\n\n // find children\n // no non-element nodes, #143\n var nodeType = elem.nodeType;\n if ( !nodeType || !elementNodeTypes[ nodeType ] ) {\n return;\n }\n var childImgs = elem.querySelectorAll('img');\n // concat childElems to filterFound array\n for ( var i=0; i < childImgs.length; i++ ) {\n var img = childImgs[i];\n this.addImage( img );\n }\n\n // get child background images\n if ( typeof this.options.background == 'string' ) {\n var children = elem.querySelectorAll( this.options.background );\n for ( i=0; i < children.length; i++ ) {\n var child = children[i];\n this.addElementBackgroundImages( child );\n }\n }\n};\n\nvar elementNodeTypes = {\n 1: true,\n 9: true,\n 11: true\n};\n\nImagesLoaded.prototype.addElementBackgroundImages = function( elem ) {\n var style = getComputedStyle( elem );\n if ( !style ) {\n // Firefox returns null if in a hidden iframe https://bugzil.la/548397\n return;\n }\n // get url inside url(\"...\")\n var reURL = /url\\((['\"])?(.*?)\\1\\)/gi;\n var matches = reURL.exec( style.backgroundImage );\n while ( matches !== null ) {\n var url = matches && matches[2];\n if ( url ) {\n this.addBackground( url, elem );\n }\n matches = reURL.exec( style.backgroundImage );\n }\n};\n\n/**\n * @param {Image} img\n */\nImagesLoaded.prototype.addImage = function( img ) {\n var loadingImage = new LoadingImage( img );\n this.images.push( loadingImage );\n};\n\nImagesLoaded.prototype.addBackground = function( url, elem ) {\n var background = new Background( url, elem );\n this.images.push( background );\n};\n\nImagesLoaded.prototype.check = function() {\n var _this = this;\n this.progressedCount = 0;\n this.hasAnyBroken = false;\n // complete if no images\n if ( !this.images.length ) {\n this.complete();\n return;\n }\n\n function onProgress( image, elem, message ) {\n // HACK - Chrome triggers event before object properties have changed. #83\n setTimeout( function() {\n _this.progress( image, elem, message );\n });\n }\n\n this.images.forEach( function( loadingImage ) {\n loadingImage.once( 'progress', onProgress );\n loadingImage.check();\n });\n};\n\nImagesLoaded.prototype.progress = function( image, elem, message ) {\n this.progressedCount++;\n this.hasAnyBroken = this.hasAnyBroken || !image.isLoaded;\n // progress event\n this.emitEvent( 'progress', [ this, image, elem ] );\n if ( this.jqDeferred && this.jqDeferred.notify ) {\n this.jqDeferred.notify( this, image );\n }\n // check if completed\n if ( this.progressedCount == this.images.length ) {\n this.complete();\n }\n\n if ( this.options.debug && console ) {\n console.log( 'progress: ' + message, image, elem );\n }\n};\n\nImagesLoaded.prototype.complete = function() {\n var eventName = this.hasAnyBroken ? 'fail' : 'done';\n this.isComplete = true;\n this.emitEvent( eventName, [ this ] );\n this.emitEvent( 'always', [ this ] );\n if ( this.jqDeferred ) {\n var jqMethod = this.hasAnyBroken ? 'reject' : 'resolve';\n this.jqDeferred[ jqMethod ]( this );\n }\n};\n\n// -------------------------- -------------------------- //\n\nfunction LoadingImage( img ) {\n this.img = img;\n}\n\nLoadingImage.prototype = Object.create( EvEmitter.prototype );\n\nLoadingImage.prototype.check = function() {\n // If complete is true and browser supports natural sizes,\n // try to check for image status manually.\n var isComplete = this.getIsImageComplete();\n if ( isComplete ) {\n // report based on naturalWidth\n this.confirm( this.img.naturalWidth !== 0, 'naturalWidth' );\n return;\n }\n\n // If none of the checks above matched, simulate loading on detached element.\n this.proxyImage = new Image();\n this.proxyImage.addEventListener( 'load', this );\n this.proxyImage.addEventListener( 'error', this );\n // bind to image as well for Firefox. #191\n this.img.addEventListener( 'load', this );\n this.img.addEventListener( 'error', this );\n this.proxyImage.src = this.img.src;\n};\n\nLoadingImage.prototype.getIsImageComplete = function() {\n // check for non-zero, non-undefined naturalWidth\n // fixes Safari+InfiniteScroll+Masonry bug infinite-scroll#671\n return this.img.complete && this.img.naturalWidth;\n};\n\nLoadingImage.prototype.confirm = function( isLoaded, message ) {\n this.isLoaded = isLoaded;\n this.emitEvent( 'progress', [ this, this.img, message ] );\n};\n\n// ----- events ----- //\n\n// trigger specified handler for event type\nLoadingImage.prototype.handleEvent = function( event ) {\n var method = 'on' + event.type;\n if ( this[ method ] ) {\n this[ method ]( event );\n }\n};\n\nLoadingImage.prototype.onload = function() {\n this.confirm( true, 'onload' );\n this.unbindEvents();\n};\n\nLoadingImage.prototype.onerror = function() {\n this.confirm( false, 'onerror' );\n this.unbindEvents();\n};\n\nLoadingImage.prototype.unbindEvents = function() {\n this.proxyImage.removeEventListener( 'load', this );\n this.proxyImage.removeEventListener( 'error', this );\n this.img.removeEventListener( 'load', this );\n this.img.removeEventListener( 'error', this );\n};\n\n// -------------------------- Background -------------------------- //\n\nfunction Background( url, element ) {\n this.url = url;\n this.element = element;\n this.img = new Image();\n}\n\n// inherit LoadingImage prototype\nBackground.prototype = Object.create( LoadingImage.prototype );\n\nBackground.prototype.check = function() {\n this.img.addEventListener( 'load', this );\n this.img.addEventListener( 'error', this );\n this.img.src = this.url;\n // check if image is already complete\n var isComplete = this.getIsImageComplete();\n if ( isComplete ) {\n this.confirm( this.img.naturalWidth !== 0, 'naturalWidth' );\n this.unbindEvents();\n }\n};\n\nBackground.prototype.unbindEvents = function() {\n this.img.removeEventListener( 'load', this );\n this.img.removeEventListener( 'error', this );\n};\n\nBackground.prototype.confirm = function( isLoaded, message ) {\n this.isLoaded = isLoaded;\n this.emitEvent( 'progress', [ this, this.element, message ] );\n};\n\n// -------------------------- jQuery -------------------------- //\n\nImagesLoaded.makeJQueryPlugin = function( jQuery ) {\n jQuery = jQuery || window.jQuery;\n if ( !jQuery ) {\n return;\n }\n // set local variable\n $ = jQuery;\n // $().imagesLoaded()\n $.fn.imagesLoaded = function( options, callback ) {\n var instance = new ImagesLoaded( this, options, callback );\n return instance.jqDeferred.promise( $(this) );\n };\n};\n// try making plugin\nImagesLoaded.makeJQueryPlugin();\n\n// -------------------------- -------------------------- //\n\nreturn ImagesLoaded;\n\n});\n\n","/* ========================================================================\n * Bootstrap: transition.js v3.3.6\n * http://getbootstrap.com/javascript/#transitions\n * ========================================================================\n * Copyright 2011-2015 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // CSS TRANSITION SUPPORT (Shoutout: http://www.modernizr.com/)\n // ============================================================\n\n function transitionEnd() {\n var el = document.createElement('bootstrap')\n\n var transEndEventNames = {\n WebkitTransition : 'webkitTransitionEnd',\n MozTransition : 'transitionend',\n OTransition : 'oTransitionEnd otransitionend',\n transition : 'transitionend'\n }\n\n for (var name in transEndEventNames) {\n if (el.style[name] !== undefined) {\n return { end: transEndEventNames[name] }\n }\n }\n\n return false // explicit for ie8 ( ._.)\n }\n\n // http://blog.alexmaccaw.com/css-transitions\n $.fn.emulateTransitionEnd = function (duration) {\n var called = false\n var $el = this\n $(this).one('bsTransitionEnd', function () { called = true })\n var callback = function () { if (!called) $($el).trigger($.support.transition.end) }\n setTimeout(callback, duration)\n return this\n }\n\n $(function () {\n $.support.transition = transitionEnd()\n\n if (!$.support.transition) return\n\n $.event.special.bsTransitionEnd = {\n bindType: $.support.transition.end,\n delegateType: $.support.transition.end,\n handle: function (e) {\n if ($(e.target).is(this)) return e.handleObj.handler.apply(this, arguments)\n }\n }\n })\n\n}(jQuery);\n","/* ========================================================================\n * Bootstrap: alert.js v3.3.6\n * http://getbootstrap.com/javascript/#alerts\n * ========================================================================\n * Copyright 2011-2015 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // ALERT CLASS DEFINITION\n // ======================\n\n var dismiss = '[data-dismiss=\"alert\"]'\n var Alert = function (el) {\n $(el).on('click', dismiss, this.close)\n }\n\n Alert.VERSION = '3.3.6'\n\n Alert.TRANSITION_DURATION = 150\n\n Alert.prototype.close = function (e) {\n var $this = $(this)\n var selector = $this.attr('data-target')\n\n if (!selector) {\n selector = $this.attr('href')\n selector = selector && selector.replace(/.*(?=#[^\\s]*$)/, '') // strip for ie7\n }\n\n var $parent = $(selector)\n\n if (e) e.preventDefault()\n\n if (!$parent.length) {\n $parent = $this.closest('.alert')\n }\n\n $parent.trigger(e = $.Event('close.bs.alert'))\n\n if (e.isDefaultPrevented()) return\n\n $parent.removeClass('in')\n\n function removeElement() {\n // detach from parent, fire event then clean up data\n $parent.detach().trigger('closed.bs.alert').remove()\n }\n\n $.support.transition && $parent.hasClass('fade') ?\n $parent\n .one('bsTransitionEnd', removeElement)\n .emulateTransitionEnd(Alert.TRANSITION_DURATION) :\n removeElement()\n }\n\n\n // ALERT PLUGIN DEFINITION\n // =======================\n\n function Plugin(option) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.alert')\n\n if (!data) $this.data('bs.alert', (data = new Alert(this)))\n if (typeof option == 'string') data[option].call($this)\n })\n }\n\n var old = $.fn.alert\n\n $.fn.alert = Plugin\n $.fn.alert.Constructor = Alert\n\n\n // ALERT NO CONFLICT\n // =================\n\n $.fn.alert.noConflict = function () {\n $.fn.alert = old\n return this\n }\n\n\n // ALERT DATA-API\n // ==============\n\n $(document).on('click.bs.alert.data-api', dismiss, Alert.prototype.close)\n\n}(jQuery);\n","/* ========================================================================\n * Bootstrap: button.js v3.3.6\n * http://getbootstrap.com/javascript/#buttons\n * ========================================================================\n * Copyright 2011-2015 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // BUTTON PUBLIC CLASS DEFINITION\n // ==============================\n\n var Button = function (element, options) {\n this.$element = $(element)\n this.options = $.extend({}, Button.DEFAULTS, options)\n this.isLoading = false\n }\n\n Button.VERSION = '3.3.6'\n\n Button.DEFAULTS = {\n loadingText: 'loading...'\n }\n\n Button.prototype.setState = function (state) {\n var d = 'disabled'\n var $el = this.$element\n var val = $el.is('input') ? 'val' : 'html'\n var data = $el.data()\n\n state += 'Text'\n\n if (data.resetText == null) $el.data('resetText', $el[val]())\n\n // push to event loop to allow forms to submit\n setTimeout($.proxy(function () {\n $el[val](data[state] == null ? this.options[state] : data[state])\n\n if (state == 'loadingText') {\n this.isLoading = true\n $el.addClass(d).attr(d, d)\n } else if (this.isLoading) {\n this.isLoading = false\n $el.removeClass(d).removeAttr(d)\n }\n }, this), 0)\n }\n\n Button.prototype.toggle = function () {\n var changed = true\n var $parent = this.$element.closest('[data-toggle=\"buttons\"]')\n\n if ($parent.length) {\n var $input = this.$element.find('input')\n if ($input.prop('type') == 'radio') {\n if ($input.prop('checked')) changed = false\n $parent.find('.active').removeClass('active')\n this.$element.addClass('active')\n } else if ($input.prop('type') == 'checkbox') {\n if (($input.prop('checked')) !== this.$element.hasClass('active')) changed = false\n this.$element.toggleClass('active')\n }\n $input.prop('checked', this.$element.hasClass('active'))\n if (changed) $input.trigger('change')\n } else {\n this.$element.attr('aria-pressed', !this.$element.hasClass('active'))\n this.$element.toggleClass('active')\n }\n }\n\n\n // BUTTON PLUGIN DEFINITION\n // ========================\n\n function Plugin(option) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.button')\n var options = typeof option == 'object' && option\n\n if (!data) $this.data('bs.button', (data = new Button(this, options)))\n\n if (option == 'toggle') data.toggle()\n else if (option) data.setState(option)\n })\n }\n\n var old = $.fn.button\n\n $.fn.button = Plugin\n $.fn.button.Constructor = Button\n\n\n // BUTTON NO CONFLICT\n // ==================\n\n $.fn.button.noConflict = function () {\n $.fn.button = old\n return this\n }\n\n\n // BUTTON DATA-API\n // ===============\n\n $(document)\n .on('click.bs.button.data-api', '[data-toggle^=\"button\"]', function (e) {\n var $btn = $(e.target)\n if (!$btn.hasClass('btn')) $btn = $btn.closest('.btn')\n Plugin.call($btn, 'toggle')\n if (!($(e.target).is('input[type=\"radio\"]') || $(e.target).is('input[type=\"checkbox\"]'))) e.preventDefault()\n })\n .on('focus.bs.button.data-api blur.bs.button.data-api', '[data-toggle^=\"button\"]', function (e) {\n $(e.target).closest('.btn').toggleClass('focus', /^focus(in)?$/.test(e.type))\n })\n\n}(jQuery);\n","/* ========================================================================\n * Bootstrap: carousel.js v3.3.6\n * http://getbootstrap.com/javascript/#carousel\n * ========================================================================\n * Copyright 2011-2015 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // CAROUSEL CLASS DEFINITION\n // =========================\n\n var Carousel = function (element, options) {\n this.$element = $(element)\n this.$indicators = this.$element.find('.carousel-indicators')\n this.options = options\n this.paused = null\n this.sliding = null\n this.interval = null\n this.$active = null\n this.$items = null\n\n this.options.keyboard && this.$element.on('keydown.bs.carousel', $.proxy(this.keydown, this))\n\n this.options.pause == 'hover' && !('ontouchstart' in document.documentElement) && this.$element\n .on('mouseenter.bs.carousel', $.proxy(this.pause, this))\n .on('mouseleave.bs.carousel', $.proxy(this.cycle, this))\n }\n\n Carousel.VERSION = '3.3.6'\n\n Carousel.TRANSITION_DURATION = 600\n\n Carousel.DEFAULTS = {\n interval: 5000,\n pause: 'hover',\n wrap: true,\n keyboard: true\n }\n\n Carousel.prototype.keydown = function (e) {\n if (/input|textarea/i.test(e.target.tagName)) return\n switch (e.which) {\n case 37: this.prev(); break\n case 39: this.next(); break\n default: return\n }\n\n e.preventDefault()\n }\n\n Carousel.prototype.cycle = function (e) {\n e || (this.paused = false)\n\n this.interval && clearInterval(this.interval)\n\n this.options.interval\n && !this.paused\n && (this.interval = setInterval($.proxy(this.next, this), this.options.interval))\n\n return this\n }\n\n Carousel.prototype.getItemIndex = function (item) {\n this.$items = item.parent().children('.item')\n return this.$items.index(item || this.$active)\n }\n\n Carousel.prototype.getItemForDirection = function (direction, active) {\n var activeIndex = this.getItemIndex(active)\n var willWrap = (direction == 'prev' && activeIndex === 0)\n || (direction == 'next' && activeIndex == (this.$items.length - 1))\n if (willWrap && !this.options.wrap) return active\n var delta = direction == 'prev' ? -1 : 1\n var itemIndex = (activeIndex + delta) % this.$items.length\n return this.$items.eq(itemIndex)\n }\n\n Carousel.prototype.to = function (pos) {\n var that = this\n var activeIndex = this.getItemIndex(this.$active = this.$element.find('.item.active'))\n\n if (pos > (this.$items.length - 1) || pos < 0) return\n\n if (this.sliding) return this.$element.one('slid.bs.carousel', function () { that.to(pos) }) // yes, \"slid\"\n if (activeIndex == pos) return this.pause().cycle()\n\n return this.slide(pos > activeIndex ? 'next' : 'prev', this.$items.eq(pos))\n }\n\n Carousel.prototype.pause = function (e) {\n e || (this.paused = true)\n\n if (this.$element.find('.next, .prev').length && $.support.transition) {\n this.$element.trigger($.support.transition.end)\n this.cycle(true)\n }\n\n this.interval = clearInterval(this.interval)\n\n return this\n }\n\n Carousel.prototype.next = function () {\n if (this.sliding) return\n return this.slide('next')\n }\n\n Carousel.prototype.prev = function () {\n if (this.sliding) return\n return this.slide('prev')\n }\n\n Carousel.prototype.slide = function (type, next) {\n var $active = this.$element.find('.item.active')\n var $next = next || this.getItemForDirection(type, $active)\n var isCycling = this.interval\n var direction = type == 'next' ? 'left' : 'right'\n var that = this\n\n if ($next.hasClass('active')) return (this.sliding = false)\n\n var relatedTarget = $next[0]\n var slideEvent = $.Event('slide.bs.carousel', {\n relatedTarget: relatedTarget,\n direction: direction\n })\n this.$element.trigger(slideEvent)\n if (slideEvent.isDefaultPrevented()) return\n\n this.sliding = true\n\n isCycling && this.pause()\n\n if (this.$indicators.length) {\n this.$indicators.find('.active').removeClass('active')\n var $nextIndicator = $(this.$indicators.children()[this.getItemIndex($next)])\n $nextIndicator && $nextIndicator.addClass('active')\n }\n\n var slidEvent = $.Event('slid.bs.carousel', { relatedTarget: relatedTarget, direction: direction }) // yes, \"slid\"\n if ($.support.transition && this.$element.hasClass('slide')) {\n $next.addClass(type)\n $next[0].offsetWidth // force reflow\n $active.addClass(direction)\n $next.addClass(direction)\n $active\n .one('bsTransitionEnd', function () {\n $next.removeClass([type, direction].join(' ')).addClass('active')\n $active.removeClass(['active', direction].join(' '))\n that.sliding = false\n setTimeout(function () {\n that.$element.trigger(slidEvent)\n }, 0)\n })\n .emulateTransitionEnd(Carousel.TRANSITION_DURATION)\n } else {\n $active.removeClass('active')\n $next.addClass('active')\n this.sliding = false\n this.$element.trigger(slidEvent)\n }\n\n isCycling && this.cycle()\n\n return this\n }\n\n\n // CAROUSEL PLUGIN DEFINITION\n // ==========================\n\n function Plugin(option) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.carousel')\n var options = $.extend({}, Carousel.DEFAULTS, $this.data(), typeof option == 'object' && option)\n var action = typeof option == 'string' ? option : options.slide\n\n if (!data) $this.data('bs.carousel', (data = new Carousel(this, options)))\n if (typeof option == 'number') data.to(option)\n else if (action) data[action]()\n else if (options.interval) data.pause().cycle()\n })\n }\n\n var old = $.fn.carousel\n\n $.fn.carousel = Plugin\n $.fn.carousel.Constructor = Carousel\n\n\n // CAROUSEL NO CONFLICT\n // ====================\n\n $.fn.carousel.noConflict = function () {\n $.fn.carousel = old\n return this\n }\n\n\n // CAROUSEL DATA-API\n // =================\n\n var clickHandler = function (e) {\n var href\n var $this = $(this)\n var $target = $($this.attr('data-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\\s]+$)/, '')) // strip for ie7\n if (!$target.hasClass('carousel')) return\n var options = $.extend({}, $target.data(), $this.data())\n var slideIndex = $this.attr('data-slide-to')\n if (slideIndex) options.interval = false\n\n Plugin.call($target, options)\n\n if (slideIndex) {\n $target.data('bs.carousel').to(slideIndex)\n }\n\n e.preventDefault()\n }\n\n $(document)\n .on('click.bs.carousel.data-api', '[data-slide]', clickHandler)\n .on('click.bs.carousel.data-api', '[data-slide-to]', clickHandler)\n\n $(window).on('load', function () {\n $('[data-ride=\"carousel\"]').each(function () {\n var $carousel = $(this)\n Plugin.call($carousel, $carousel.data())\n })\n })\n\n}(jQuery);\n","/* ========================================================================\n * Bootstrap: collapse.js v3.3.6\n * http://getbootstrap.com/javascript/#collapse\n * ========================================================================\n * Copyright 2011-2015 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // COLLAPSE PUBLIC CLASS DEFINITION\n // ================================\n\n var Collapse = function (element, options) {\n this.$element = $(element)\n this.options = $.extend({}, Collapse.DEFAULTS, options)\n this.$trigger = $('[data-toggle=\"collapse\"][href=\"#' + element.id + '\"],' +\n '[data-toggle=\"collapse\"][data-target=\"#' + element.id + '\"]')\n this.transitioning = null\n\n if (this.options.parent) {\n this.$parent = this.getParent()\n } else {\n this.addAriaAndCollapsedClass(this.$element, this.$trigger)\n }\n\n if (this.options.toggle) this.toggle()\n }\n\n Collapse.VERSION = '3.3.6'\n\n Collapse.TRANSITION_DURATION = 350\n\n Collapse.DEFAULTS = {\n toggle: true\n }\n\n Collapse.prototype.dimension = function () {\n var hasWidth = this.$element.hasClass('width')\n return hasWidth ? 'width' : 'height'\n }\n\n Collapse.prototype.show = function () {\n if (this.transitioning || this.$element.hasClass('in')) return\n\n var activesData\n var actives = this.$parent && this.$parent.children('.panel').children('.in, .collapsing')\n\n if (actives && actives.length) {\n activesData = actives.data('bs.collapse')\n if (activesData && activesData.transitioning) return\n }\n\n var startEvent = $.Event('show.bs.collapse')\n this.$element.trigger(startEvent)\n if (startEvent.isDefaultPrevented()) return\n\n if (actives && actives.length) {\n Plugin.call(actives, 'hide')\n activesData || actives.data('bs.collapse', null)\n }\n\n var dimension = this.dimension()\n\n this.$element\n .removeClass('collapse')\n .addClass('collapsing')[dimension](0)\n .attr('aria-expanded', true)\n\n this.$trigger\n .removeClass('collapsed')\n .attr('aria-expanded', true)\n\n this.transitioning = 1\n\n var complete = function () {\n this.$element\n .removeClass('collapsing')\n .addClass('collapse in')[dimension]('')\n this.transitioning = 0\n this.$element\n .trigger('shown.bs.collapse')\n }\n\n if (!$.support.transition) return complete.call(this)\n\n var scrollSize = $.camelCase(['scroll', dimension].join('-'))\n\n this.$element\n .one('bsTransitionEnd', $.proxy(complete, this))\n .emulateTransitionEnd(Collapse.TRANSITION_DURATION)[dimension](this.$element[0][scrollSize])\n }\n\n Collapse.prototype.hide = function () {\n if (this.transitioning || !this.$element.hasClass('in')) return\n\n var startEvent = $.Event('hide.bs.collapse')\n this.$element.trigger(startEvent)\n if (startEvent.isDefaultPrevented()) return\n\n var dimension = this.dimension()\n\n this.$element[dimension](this.$element[dimension]())[0].offsetHeight\n\n this.$element\n .addClass('collapsing')\n .removeClass('collapse in')\n .attr('aria-expanded', false)\n\n this.$trigger\n .addClass('collapsed')\n .attr('aria-expanded', false)\n\n this.transitioning = 1\n\n var complete = function () {\n this.transitioning = 0\n this.$element\n .removeClass('collapsing')\n .addClass('collapse')\n .trigger('hidden.bs.collapse')\n }\n\n if (!$.support.transition) return complete.call(this)\n\n this.$element\n [dimension](0)\n .one('bsTransitionEnd', $.proxy(complete, this))\n .emulateTransitionEnd(Collapse.TRANSITION_DURATION)\n }\n\n Collapse.prototype.toggle = function () {\n this[this.$element.hasClass('in') ? 'hide' : 'show']()\n }\n\n Collapse.prototype.getParent = function () {\n return $(this.options.parent)\n .find('[data-toggle=\"collapse\"][data-parent=\"' + this.options.parent + '\"]')\n .each($.proxy(function (i, element) {\n var $element = $(element)\n this.addAriaAndCollapsedClass(getTargetFromTrigger($element), $element)\n }, this))\n .end()\n }\n\n Collapse.prototype.addAriaAndCollapsedClass = function ($element, $trigger) {\n var isOpen = $element.hasClass('in')\n\n $element.attr('aria-expanded', isOpen)\n $trigger\n .toggleClass('collapsed', !isOpen)\n .attr('aria-expanded', isOpen)\n }\n\n function getTargetFromTrigger($trigger) {\n var href\n var target = $trigger.attr('data-target')\n || (href = $trigger.attr('href')) && href.replace(/.*(?=#[^\\s]+$)/, '') // strip for ie7\n\n return $(target)\n }\n\n\n // COLLAPSE PLUGIN DEFINITION\n // ==========================\n\n function Plugin(option) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.collapse')\n var options = $.extend({}, Collapse.DEFAULTS, $this.data(), typeof option == 'object' && option)\n\n if (!data && options.toggle && /show|hide/.test(option)) options.toggle = false\n if (!data) $this.data('bs.collapse', (data = new Collapse(this, options)))\n if (typeof option == 'string') data[option]()\n })\n }\n\n var old = $.fn.collapse\n\n $.fn.collapse = Plugin\n $.fn.collapse.Constructor = Collapse\n\n\n // COLLAPSE NO CONFLICT\n // ====================\n\n $.fn.collapse.noConflict = function () {\n $.fn.collapse = old\n return this\n }\n\n\n // COLLAPSE DATA-API\n // =================\n\n $(document).on('click.bs.collapse.data-api', '[data-toggle=\"collapse\"]', function (e) {\n var $this = $(this)\n\n if (!$this.attr('data-target')) e.preventDefault()\n\n var $target = getTargetFromTrigger($this)\n var data = $target.data('bs.collapse')\n var option = data ? 'toggle' : $this.data()\n\n Plugin.call($target, option)\n })\n\n}(jQuery);\n","/* ========================================================================\n * Bootstrap: dropdown.js v3.3.6\n * http://getbootstrap.com/javascript/#dropdowns\n * ========================================================================\n * Copyright 2011-2015 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // DROPDOWN CLASS DEFINITION\n // =========================\n\n var backdrop = '.dropdown-backdrop'\n var toggle = '[data-toggle=\"dropdown\"]'\n var Dropdown = function (element) {\n $(element).on('click.bs.dropdown', this.toggle)\n }\n\n Dropdown.VERSION = '3.3.6'\n\n function getParent($this) {\n var selector = $this.attr('data-target')\n\n if (!selector) {\n selector = $this.attr('href')\n selector = selector && /#[A-Za-z]/.test(selector) && selector.replace(/.*(?=#[^\\s]*$)/, '') // strip for ie7\n }\n\n var $parent = selector && $(selector)\n\n return $parent && $parent.length ? $parent : $this.parent()\n }\n\n function clearMenus(e) {\n if (e && e.which === 3) return\n $(backdrop).remove()\n $(toggle).each(function () {\n var $this = $(this)\n var $parent = getParent($this)\n var relatedTarget = { relatedTarget: this }\n\n if (!$parent.hasClass('open')) return\n\n if (e && e.type == 'click' && /input|textarea/i.test(e.target.tagName) && $.contains($parent[0], e.target)) return\n\n $parent.trigger(e = $.Event('hide.bs.dropdown', relatedTarget))\n\n if (e.isDefaultPrevented()) return\n\n $this.attr('aria-expanded', 'false')\n $parent.removeClass('open').trigger($.Event('hidden.bs.dropdown', relatedTarget))\n })\n }\n\n Dropdown.prototype.toggle = function (e) {\n var $this = $(this)\n\n if ($this.is('.disabled, :disabled')) return\n\n var $parent = getParent($this)\n var isActive = $parent.hasClass('open')\n\n clearMenus()\n\n if (!isActive) {\n if ('ontouchstart' in document.documentElement && !$parent.closest('.navbar-nav').length) {\n // if mobile we use a backdrop because click events don't delegate\n $(document.createElement('div'))\n .addClass('dropdown-backdrop')\n .insertAfter($(this))\n .on('click', clearMenus)\n }\n\n var relatedTarget = { relatedTarget: this }\n $parent.trigger(e = $.Event('show.bs.dropdown', relatedTarget))\n\n if (e.isDefaultPrevented()) return\n\n $this\n .trigger('focus')\n .attr('aria-expanded', 'true')\n\n $parent\n .toggleClass('open')\n .trigger($.Event('shown.bs.dropdown', relatedTarget))\n }\n\n return false\n }\n\n Dropdown.prototype.keydown = function (e) {\n if (!/(38|40|27|32)/.test(e.which) || /input|textarea/i.test(e.target.tagName)) return\n\n var $this = $(this)\n\n e.preventDefault()\n e.stopPropagation()\n\n if ($this.is('.disabled, :disabled')) return\n\n var $parent = getParent($this)\n var isActive = $parent.hasClass('open')\n\n if (!isActive && e.which != 27 || isActive && e.which == 27) {\n if (e.which == 27) $parent.find(toggle).trigger('focus')\n return $this.trigger('click')\n }\n\n var desc = ' li:not(.disabled):visible a'\n var $items = $parent.find('.dropdown-menu' + desc)\n\n if (!$items.length) return\n\n var index = $items.index(e.target)\n\n if (e.which == 38 && index > 0) index-- // up\n if (e.which == 40 && index < $items.length - 1) index++ // down\n if (!~index) index = 0\n\n $items.eq(index).trigger('focus')\n }\n\n\n // DROPDOWN PLUGIN DEFINITION\n // ==========================\n\n function Plugin(option) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.dropdown')\n\n if (!data) $this.data('bs.dropdown', (data = new Dropdown(this)))\n if (typeof option == 'string') data[option].call($this)\n })\n }\n\n var old = $.fn.dropdown\n\n $.fn.dropdown = Plugin\n $.fn.dropdown.Constructor = Dropdown\n\n\n // DROPDOWN NO CONFLICT\n // ====================\n\n $.fn.dropdown.noConflict = function () {\n $.fn.dropdown = old\n return this\n }\n\n\n // APPLY TO STANDARD DROPDOWN ELEMENTS\n // ===================================\n\n $(document)\n .on('click.bs.dropdown.data-api', clearMenus)\n .on('click.bs.dropdown.data-api', '.dropdown form', function (e) { e.stopPropagation() })\n .on('click.bs.dropdown.data-api', toggle, Dropdown.prototype.toggle)\n .on('keydown.bs.dropdown.data-api', toggle, Dropdown.prototype.keydown)\n .on('keydown.bs.dropdown.data-api', '.dropdown-menu', Dropdown.prototype.keydown)\n\n}(jQuery);\n","/* ========================================================================\n * Bootstrap: modal.js v3.3.6\n * http://getbootstrap.com/javascript/#modals\n * ========================================================================\n * Copyright 2011-2015 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // MODAL CLASS DEFINITION\n // ======================\n\n var Modal = function (element, options) {\n this.options = options\n this.$body = $(document.body)\n this.$element = $(element)\n this.$dialog = this.$element.find('.modal-dialog')\n this.$backdrop = null\n this.isShown = null\n this.originalBodyPad = null\n this.scrollbarWidth = 0\n this.ignoreBackdropClick = false\n\n if (this.options.remote) {\n this.$element\n .find('.modal-content')\n .load(this.options.remote, $.proxy(function () {\n this.$element.trigger('loaded.bs.modal')\n }, this))\n }\n }\n\n Modal.VERSION = '3.3.6'\n\n Modal.TRANSITION_DURATION = 300\n Modal.BACKDROP_TRANSITION_DURATION = 150\n\n Modal.DEFAULTS = {\n backdrop: true,\n keyboard: true,\n show: true\n }\n\n Modal.prototype.toggle = function (_relatedTarget) {\n return this.isShown ? this.hide() : this.show(_relatedTarget)\n }\n\n Modal.prototype.show = function (_relatedTarget) {\n var that = this\n var e = $.Event('show.bs.modal', { relatedTarget: _relatedTarget })\n\n this.$element.trigger(e)\n\n if (this.isShown || e.isDefaultPrevented()) return\n\n this.isShown = true\n\n this.checkScrollbar()\n this.setScrollbar()\n this.$body.addClass('modal-open')\n\n this.escape()\n this.resize()\n\n this.$element.on('click.dismiss.bs.modal', '[data-dismiss=\"modal\"]', $.proxy(this.hide, this))\n\n this.$dialog.on('mousedown.dismiss.bs.modal', function () {\n that.$element.one('mouseup.dismiss.bs.modal', function (e) {\n if ($(e.target).is(that.$element)) that.ignoreBackdropClick = true\n })\n })\n\n this.backdrop(function () {\n var transition = $.support.transition && that.$element.hasClass('fade')\n\n if (!that.$element.parent().length) {\n that.$element.appendTo(that.$body) // don't move modals dom position\n }\n\n that.$element\n .show()\n .scrollTop(0)\n\n that.adjustDialog()\n\n if (transition) {\n that.$element[0].offsetWidth // force reflow\n }\n\n that.$element.addClass('in')\n\n that.enforceFocus()\n\n var e = $.Event('shown.bs.modal', { relatedTarget: _relatedTarget })\n\n transition ?\n that.$dialog // wait for modal to slide in\n .one('bsTransitionEnd', function () {\n that.$element.trigger('focus').trigger(e)\n })\n .emulateTransitionEnd(Modal.TRANSITION_DURATION) :\n that.$element.trigger('focus').trigger(e)\n })\n }\n\n Modal.prototype.hide = function (e) {\n if (e) e.preventDefault()\n\n e = $.Event('hide.bs.modal')\n\n this.$element.trigger(e)\n\n if (!this.isShown || e.isDefaultPrevented()) return\n\n this.isShown = false\n\n this.escape()\n this.resize()\n\n $(document).off('focusin.bs.modal')\n\n this.$element\n .removeClass('in')\n .off('click.dismiss.bs.modal')\n .off('mouseup.dismiss.bs.modal')\n\n this.$dialog.off('mousedown.dismiss.bs.modal')\n\n $.support.transition && this.$element.hasClass('fade') ?\n this.$element\n .one('bsTransitionEnd', $.proxy(this.hideModal, this))\n .emulateTransitionEnd(Modal.TRANSITION_DURATION) :\n this.hideModal()\n }\n\n Modal.prototype.enforceFocus = function () {\n $(document)\n .off('focusin.bs.modal') // guard against infinite focus loop\n .on('focusin.bs.modal', $.proxy(function (e) {\n if (this.$element[0] !== e.target && !this.$element.has(e.target).length) {\n this.$element.trigger('focus')\n }\n }, this))\n }\n\n Modal.prototype.escape = function () {\n if (this.isShown && this.options.keyboard) {\n this.$element.on('keydown.dismiss.bs.modal', $.proxy(function (e) {\n e.which == 27 && this.hide()\n }, this))\n } else if (!this.isShown) {\n this.$element.off('keydown.dismiss.bs.modal')\n }\n }\n\n Modal.prototype.resize = function () {\n if (this.isShown) {\n $(window).on('resize.bs.modal', $.proxy(this.handleUpdate, this))\n } else {\n $(window).off('resize.bs.modal')\n }\n }\n\n Modal.prototype.hideModal = function () {\n var that = this\n this.$element.hide()\n this.backdrop(function () {\n that.$body.removeClass('modal-open')\n that.resetAdjustments()\n that.resetScrollbar()\n that.$element.trigger('hidden.bs.modal')\n })\n }\n\n Modal.prototype.removeBackdrop = function () {\n this.$backdrop && this.$backdrop.remove()\n this.$backdrop = null\n }\n\n Modal.prototype.backdrop = function (callback) {\n var that = this\n var animate = this.$element.hasClass('fade') ? 'fade' : ''\n\n if (this.isShown && this.options.backdrop) {\n var doAnimate = $.support.transition && animate\n\n this.$backdrop = $(document.createElement('div'))\n .addClass('modal-backdrop ' + animate)\n .appendTo(this.$body)\n\n this.$element.on('click.dismiss.bs.modal', $.proxy(function (e) {\n if (this.ignoreBackdropClick) {\n this.ignoreBackdropClick = false\n return\n }\n if (e.target !== e.currentTarget) return\n this.options.backdrop == 'static'\n ? this.$element[0].focus()\n : this.hide()\n }, this))\n\n if (doAnimate) this.$backdrop[0].offsetWidth // force reflow\n\n this.$backdrop.addClass('in')\n\n if (!callback) return\n\n doAnimate ?\n this.$backdrop\n .one('bsTransitionEnd', callback)\n .emulateTransitionEnd(Modal.BACKDROP_TRANSITION_DURATION) :\n callback()\n\n } else if (!this.isShown && this.$backdrop) {\n this.$backdrop.removeClass('in')\n\n var callbackRemove = function () {\n that.removeBackdrop()\n callback && callback()\n }\n $.support.transition && this.$element.hasClass('fade') ?\n this.$backdrop\n .one('bsTransitionEnd', callbackRemove)\n .emulateTransitionEnd(Modal.BACKDROP_TRANSITION_DURATION) :\n callbackRemove()\n\n } else if (callback) {\n callback()\n }\n }\n\n // these following methods are used to handle overflowing modals\n\n Modal.prototype.handleUpdate = function () {\n this.adjustDialog()\n }\n\n Modal.prototype.adjustDialog = function () {\n var modalIsOverflowing = this.$element[0].scrollHeight > document.documentElement.clientHeight\n\n this.$element.css({\n paddingLeft: !this.bodyIsOverflowing && modalIsOverflowing ? this.scrollbarWidth : '',\n paddingRight: this.bodyIsOverflowing && !modalIsOverflowing ? this.scrollbarWidth : ''\n })\n }\n\n Modal.prototype.resetAdjustments = function () {\n this.$element.css({\n paddingLeft: '',\n paddingRight: ''\n })\n }\n\n Modal.prototype.checkScrollbar = function () {\n var fullWindowWidth = window.innerWidth\n if (!fullWindowWidth) { // workaround for missing window.innerWidth in IE8\n var documentElementRect = document.documentElement.getBoundingClientRect()\n fullWindowWidth = documentElementRect.right - Math.abs(documentElementRect.left)\n }\n this.bodyIsOverflowing = document.body.clientWidth < fullWindowWidth\n this.scrollbarWidth = this.measureScrollbar()\n }\n\n Modal.prototype.setScrollbar = function () {\n var bodyPad = parseInt((this.$body.css('padding-right') || 0), 10)\n this.originalBodyPad = document.body.style.paddingRight || ''\n if (this.bodyIsOverflowing) this.$body.css('padding-right', bodyPad + this.scrollbarWidth)\n }\n\n Modal.prototype.resetScrollbar = function () {\n this.$body.css('padding-right', this.originalBodyPad)\n }\n\n Modal.prototype.measureScrollbar = function () { // thx walsh\n var scrollDiv = document.createElement('div')\n scrollDiv.className = 'modal-scrollbar-measure'\n this.$body.append(scrollDiv)\n var scrollbarWidth = scrollDiv.offsetWidth - scrollDiv.clientWidth\n this.$body[0].removeChild(scrollDiv)\n return scrollbarWidth\n }\n\n\n // MODAL PLUGIN DEFINITION\n // =======================\n\n function Plugin(option, _relatedTarget) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.modal')\n var options = $.extend({}, Modal.DEFAULTS, $this.data(), typeof option == 'object' && option)\n\n if (!data) $this.data('bs.modal', (data = new Modal(this, options)))\n if (typeof option == 'string') data[option](_relatedTarget)\n else if (options.show) data.show(_relatedTarget)\n })\n }\n\n var old = $.fn.modal\n\n $.fn.modal = Plugin\n $.fn.modal.Constructor = Modal\n\n\n // MODAL NO CONFLICT\n // =================\n\n $.fn.modal.noConflict = function () {\n $.fn.modal = old\n return this\n }\n\n\n // MODAL DATA-API\n // ==============\n\n $(document).on('click.bs.modal.data-api', '[data-toggle=\"modal\"]', function (e) {\n var $this = $(this)\n var href = $this.attr('href')\n var $target = $($this.attr('data-target') || (href && href.replace(/.*(?=#[^\\s]+$)/, ''))) // strip for ie7\n var option = $target.data('bs.modal') ? 'toggle' : $.extend({ remote: !/#/.test(href) && href }, $target.data(), $this.data())\n\n if ($this.is('a')) e.preventDefault()\n\n $target.one('show.bs.modal', function (showEvent) {\n if (showEvent.isDefaultPrevented()) return // only register focus restorer if modal will actually get shown\n $target.one('hidden.bs.modal', function () {\n $this.is(':visible') && $this.trigger('focus')\n })\n })\n Plugin.call($target, option, this)\n })\n\n}(jQuery);\n","/* ========================================================================\n * Bootstrap: tooltip.js v3.3.6\n * http://getbootstrap.com/javascript/#tooltip\n * Inspired by the original jQuery.tipsy by Jason Frame\n * ========================================================================\n * Copyright 2011-2015 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // TOOLTIP PUBLIC CLASS DEFINITION\n // ===============================\n\n var Tooltip = function (element, options) {\n this.type = null\n this.options = null\n this.enabled = null\n this.timeout = null\n this.hoverState = null\n this.$element = null\n this.inState = null\n\n this.init('tooltip', element, options)\n }\n\n Tooltip.VERSION = '3.3.6'\n\n Tooltip.TRANSITION_DURATION = 150\n\n Tooltip.DEFAULTS = {\n animation: true,\n placement: 'top',\n selector: false,\n template: '
',\n trigger: 'hover focus',\n title: '',\n delay: 0,\n html: false,\n container: false,\n viewport: {\n selector: 'body',\n padding: 0\n }\n }\n\n Tooltip.prototype.init = function (type, element, options) {\n this.enabled = true\n this.type = type\n this.$element = $(element)\n this.options = this.getOptions(options)\n this.$viewport = this.options.viewport && $($.isFunction(this.options.viewport) ? this.options.viewport.call(this, this.$element) : (this.options.viewport.selector || this.options.viewport))\n this.inState = { click: false, hover: false, focus: false }\n\n if (this.$element[0] instanceof document.constructor && !this.options.selector) {\n throw new Error('`selector` option must be specified when initializing ' + this.type + ' on the window.document object!')\n }\n\n var triggers = this.options.trigger.split(' ')\n\n for (var i = triggers.length; i--;) {\n var trigger = triggers[i]\n\n if (trigger == 'click') {\n this.$element.on('click.' + this.type, this.options.selector, $.proxy(this.toggle, this))\n } else if (trigger != 'manual') {\n var eventIn = trigger == 'hover' ? 'mouseenter' : 'focusin'\n var eventOut = trigger == 'hover' ? 'mouseleave' : 'focusout'\n\n this.$element.on(eventIn + '.' + this.type, this.options.selector, $.proxy(this.enter, this))\n this.$element.on(eventOut + '.' + this.type, this.options.selector, $.proxy(this.leave, this))\n }\n }\n\n this.options.selector ?\n (this._options = $.extend({}, this.options, { trigger: 'manual', selector: '' })) :\n this.fixTitle()\n }\n\n Tooltip.prototype.getDefaults = function () {\n return Tooltip.DEFAULTS\n }\n\n Tooltip.prototype.getOptions = function (options) {\n options = $.extend({}, this.getDefaults(), this.$element.data(), options)\n\n if (options.delay && typeof options.delay == 'number') {\n options.delay = {\n show: options.delay,\n hide: options.delay\n }\n }\n\n return options\n }\n\n Tooltip.prototype.getDelegateOptions = function () {\n var options = {}\n var defaults = this.getDefaults()\n\n this._options && $.each(this._options, function (key, value) {\n if (defaults[key] != value) options[key] = value\n })\n\n return options\n }\n\n Tooltip.prototype.enter = function (obj) {\n var self = obj instanceof this.constructor ?\n obj : $(obj.currentTarget).data('bs.' + this.type)\n\n if (!self) {\n self = new this.constructor(obj.currentTarget, this.getDelegateOptions())\n $(obj.currentTarget).data('bs.' + this.type, self)\n }\n\n if (obj instanceof $.Event) {\n self.inState[obj.type == 'focusin' ? 'focus' : 'hover'] = true\n }\n\n if (self.tip().hasClass('in') || self.hoverState == 'in') {\n self.hoverState = 'in'\n return\n }\n\n clearTimeout(self.timeout)\n\n self.hoverState = 'in'\n\n if (!self.options.delay || !self.options.delay.show) return self.show()\n\n self.timeout = setTimeout(function () {\n if (self.hoverState == 'in') self.show()\n }, self.options.delay.show)\n }\n\n Tooltip.prototype.isInStateTrue = function () {\n for (var key in this.inState) {\n if (this.inState[key]) return true\n }\n\n return false\n }\n\n Tooltip.prototype.leave = function (obj) {\n var self = obj instanceof this.constructor ?\n obj : $(obj.currentTarget).data('bs.' + this.type)\n\n if (!self) {\n self = new this.constructor(obj.currentTarget, this.getDelegateOptions())\n $(obj.currentTarget).data('bs.' + this.type, self)\n }\n\n if (obj instanceof $.Event) {\n self.inState[obj.type == 'focusout' ? 'focus' : 'hover'] = false\n }\n\n if (self.isInStateTrue()) return\n\n clearTimeout(self.timeout)\n\n self.hoverState = 'out'\n\n if (!self.options.delay || !self.options.delay.hide) return self.hide()\n\n self.timeout = setTimeout(function () {\n if (self.hoverState == 'out') self.hide()\n }, self.options.delay.hide)\n }\n\n Tooltip.prototype.show = function () {\n var e = $.Event('show.bs.' + this.type)\n\n if (this.hasContent() && this.enabled) {\n this.$element.trigger(e)\n\n var inDom = $.contains(this.$element[0].ownerDocument.documentElement, this.$element[0])\n if (e.isDefaultPrevented() || !inDom) return\n var that = this\n\n var $tip = this.tip()\n\n var tipId = this.getUID(this.type)\n\n this.setContent()\n $tip.attr('id', tipId)\n this.$element.attr('aria-describedby', tipId)\n\n if (this.options.animation) $tip.addClass('fade')\n\n var placement = typeof this.options.placement == 'function' ?\n this.options.placement.call(this, $tip[0], this.$element[0]) :\n this.options.placement\n\n var autoToken = /\\s?auto?\\s?/i\n var autoPlace = autoToken.test(placement)\n if (autoPlace) placement = placement.replace(autoToken, '') || 'top'\n\n $tip\n .detach()\n .css({ top: 0, left: 0, display: 'block' })\n .addClass(placement)\n .data('bs.' + this.type, this)\n\n this.options.container ? $tip.appendTo(this.options.container) : $tip.insertAfter(this.$element)\n this.$element.trigger('inserted.bs.' + this.type)\n\n var pos = this.getPosition()\n var actualWidth = $tip[0].offsetWidth\n var actualHeight = $tip[0].offsetHeight\n\n if (autoPlace) {\n var orgPlacement = placement\n var viewportDim = this.getPosition(this.$viewport)\n\n placement = placement == 'bottom' && pos.bottom + actualHeight > viewportDim.bottom ? 'top' :\n placement == 'top' && pos.top - actualHeight < viewportDim.top ? 'bottom' :\n placement == 'right' && pos.right + actualWidth > viewportDim.width ? 'left' :\n placement == 'left' && pos.left - actualWidth < viewportDim.left ? 'right' :\n placement\n\n $tip\n .removeClass(orgPlacement)\n .addClass(placement)\n }\n\n var calculatedOffset = this.getCalculatedOffset(placement, pos, actualWidth, actualHeight)\n\n this.applyPlacement(calculatedOffset, placement)\n\n var complete = function () {\n var prevHoverState = that.hoverState\n that.$element.trigger('shown.bs.' + that.type)\n that.hoverState = null\n\n if (prevHoverState == 'out') that.leave(that)\n }\n\n $.support.transition && this.$tip.hasClass('fade') ?\n $tip\n .one('bsTransitionEnd', complete)\n .emulateTransitionEnd(Tooltip.TRANSITION_DURATION) :\n complete()\n }\n }\n\n Tooltip.prototype.applyPlacement = function (offset, placement) {\n var $tip = this.tip()\n var width = $tip[0].offsetWidth\n var height = $tip[0].offsetHeight\n\n // manually read margins because getBoundingClientRect includes difference\n var marginTop = parseInt($tip.css('margin-top'), 10)\n var marginLeft = parseInt($tip.css('margin-left'), 10)\n\n // we must check for NaN for ie 8/9\n if (isNaN(marginTop)) marginTop = 0\n if (isNaN(marginLeft)) marginLeft = 0\n\n offset.top += marginTop\n offset.left += marginLeft\n\n // $.fn.offset doesn't round pixel values\n // so we use setOffset directly with our own function B-0\n $.offset.setOffset($tip[0], $.extend({\n using: function (props) {\n $tip.css({\n top: Math.round(props.top),\n left: Math.round(props.left)\n })\n }\n }, offset), 0)\n\n $tip.addClass('in')\n\n // check to see if placing tip in new offset caused the tip to resize itself\n var actualWidth = $tip[0].offsetWidth\n var actualHeight = $tip[0].offsetHeight\n\n if (placement == 'top' && actualHeight != height) {\n offset.top = offset.top + height - actualHeight\n }\n\n var delta = this.getViewportAdjustedDelta(placement, offset, actualWidth, actualHeight)\n\n if (delta.left) offset.left += delta.left\n else offset.top += delta.top\n\n var isVertical = /top|bottom/.test(placement)\n var arrowDelta = isVertical ? delta.left * 2 - width + actualWidth : delta.top * 2 - height + actualHeight\n var arrowOffsetPosition = isVertical ? 'offsetWidth' : 'offsetHeight'\n\n $tip.offset(offset)\n this.replaceArrow(arrowDelta, $tip[0][arrowOffsetPosition], isVertical)\n }\n\n Tooltip.prototype.replaceArrow = function (delta, dimension, isVertical) {\n this.arrow()\n .css(isVertical ? 'left' : 'top', 50 * (1 - delta / dimension) + '%')\n .css(isVertical ? 'top' : 'left', '')\n }\n\n Tooltip.prototype.setContent = function () {\n var $tip = this.tip()\n var title = this.getTitle()\n\n $tip.find('.tooltip-inner')[this.options.html ? 'html' : 'text'](title)\n $tip.removeClass('fade in top bottom left right')\n }\n\n Tooltip.prototype.hide = function (callback) {\n var that = this\n var $tip = $(this.$tip)\n var e = $.Event('hide.bs.' + this.type)\n\n function complete() {\n if (that.hoverState != 'in') $tip.detach()\n that.$element\n .removeAttr('aria-describedby')\n .trigger('hidden.bs.' + that.type)\n callback && callback()\n }\n\n this.$element.trigger(e)\n\n if (e.isDefaultPrevented()) return\n\n $tip.removeClass('in')\n\n $.support.transition && $tip.hasClass('fade') ?\n $tip\n .one('bsTransitionEnd', complete)\n .emulateTransitionEnd(Tooltip.TRANSITION_DURATION) :\n complete()\n\n this.hoverState = null\n\n return this\n }\n\n Tooltip.prototype.fixTitle = function () {\n var $e = this.$element\n if ($e.attr('title') || typeof $e.attr('data-original-title') != 'string') {\n $e.attr('data-original-title', $e.attr('title') || '').attr('title', '')\n }\n }\n\n Tooltip.prototype.hasContent = function () {\n return this.getTitle()\n }\n\n Tooltip.prototype.getPosition = function ($element) {\n $element = $element || this.$element\n\n var el = $element[0]\n var isBody = el.tagName == 'BODY'\n\n var elRect = el.getBoundingClientRect()\n if (elRect.width == null) {\n // width and height are missing in IE8, so compute them manually; see https://github.com/twbs/bootstrap/issues/14093\n elRect = $.extend({}, elRect, { width: elRect.right - elRect.left, height: elRect.bottom - elRect.top })\n }\n var elOffset = isBody ? { top: 0, left: 0 } : $element.offset()\n var scroll = { scroll: isBody ? document.documentElement.scrollTop || document.body.scrollTop : $element.scrollTop() }\n var outerDims = isBody ? { width: $(window).width(), height: $(window).height() } : null\n\n return $.extend({}, elRect, scroll, outerDims, elOffset)\n }\n\n Tooltip.prototype.getCalculatedOffset = function (placement, pos, actualWidth, actualHeight) {\n return placement == 'bottom' ? { top: pos.top + pos.height, left: pos.left + pos.width / 2 - actualWidth / 2 } :\n placement == 'top' ? { top: pos.top - actualHeight, left: pos.left + pos.width / 2 - actualWidth / 2 } :\n placement == 'left' ? { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left - actualWidth } :\n /* placement == 'right' */ { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left + pos.width }\n\n }\n\n Tooltip.prototype.getViewportAdjustedDelta = function (placement, pos, actualWidth, actualHeight) {\n var delta = { top: 0, left: 0 }\n if (!this.$viewport) return delta\n\n var viewportPadding = this.options.viewport && this.options.viewport.padding || 0\n var viewportDimensions = this.getPosition(this.$viewport)\n\n if (/right|left/.test(placement)) {\n var topEdgeOffset = pos.top - viewportPadding - viewportDimensions.scroll\n var bottomEdgeOffset = pos.top + viewportPadding - viewportDimensions.scroll + actualHeight\n if (topEdgeOffset < viewportDimensions.top) { // top overflow\n delta.top = viewportDimensions.top - topEdgeOffset\n } else if (bottomEdgeOffset > viewportDimensions.top + viewportDimensions.height) { // bottom overflow\n delta.top = viewportDimensions.top + viewportDimensions.height - bottomEdgeOffset\n }\n } else {\n var leftEdgeOffset = pos.left - viewportPadding\n var rightEdgeOffset = pos.left + viewportPadding + actualWidth\n if (leftEdgeOffset < viewportDimensions.left) { // left overflow\n delta.left = viewportDimensions.left - leftEdgeOffset\n } else if (rightEdgeOffset > viewportDimensions.right) { // right overflow\n delta.left = viewportDimensions.left + viewportDimensions.width - rightEdgeOffset\n }\n }\n\n return delta\n }\n\n Tooltip.prototype.getTitle = function () {\n var title\n var $e = this.$element\n var o = this.options\n\n title = $e.attr('data-original-title')\n || (typeof o.title == 'function' ? o.title.call($e[0]) : o.title)\n\n return title\n }\n\n Tooltip.prototype.getUID = function (prefix) {\n do prefix += ~~(Math.random() * 1000000)\n while (document.getElementById(prefix))\n return prefix\n }\n\n Tooltip.prototype.tip = function () {\n if (!this.$tip) {\n this.$tip = $(this.options.template)\n if (this.$tip.length != 1) {\n throw new Error(this.type + ' `template` option must consist of exactly 1 top-level element!')\n }\n }\n return this.$tip\n }\n\n Tooltip.prototype.arrow = function () {\n return (this.$arrow = this.$arrow || this.tip().find('.tooltip-arrow'))\n }\n\n Tooltip.prototype.enable = function () {\n this.enabled = true\n }\n\n Tooltip.prototype.disable = function () {\n this.enabled = false\n }\n\n Tooltip.prototype.toggleEnabled = function () {\n this.enabled = !this.enabled\n }\n\n Tooltip.prototype.toggle = function (e) {\n var self = this\n if (e) {\n self = $(e.currentTarget).data('bs.' + this.type)\n if (!self) {\n self = new this.constructor(e.currentTarget, this.getDelegateOptions())\n $(e.currentTarget).data('bs.' + this.type, self)\n }\n }\n\n if (e) {\n self.inState.click = !self.inState.click\n if (self.isInStateTrue()) self.enter(self)\n else self.leave(self)\n } else {\n self.tip().hasClass('in') ? self.leave(self) : self.enter(self)\n }\n }\n\n Tooltip.prototype.destroy = function () {\n var that = this\n clearTimeout(this.timeout)\n this.hide(function () {\n that.$element.off('.' + that.type).removeData('bs.' + that.type)\n if (that.$tip) {\n that.$tip.detach()\n }\n that.$tip = null\n that.$arrow = null\n that.$viewport = null\n })\n }\n\n\n // TOOLTIP PLUGIN DEFINITION\n // =========================\n\n function Plugin(option) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.tooltip')\n var options = typeof option == 'object' && option\n\n if (!data && /destroy|hide/.test(option)) return\n if (!data) $this.data('bs.tooltip', (data = new Tooltip(this, options)))\n if (typeof option == 'string') data[option]()\n })\n }\n\n var old = $.fn.tooltip\n\n $.fn.tooltip = Plugin\n $.fn.tooltip.Constructor = Tooltip\n\n\n // TOOLTIP NO CONFLICT\n // ===================\n\n $.fn.tooltip.noConflict = function () {\n $.fn.tooltip = old\n return this\n }\n\n}(jQuery);\n","/* ========================================================================\n * Bootstrap: popover.js v3.3.6\n * http://getbootstrap.com/javascript/#popovers\n * ========================================================================\n * Copyright 2011-2015 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // POPOVER PUBLIC CLASS DEFINITION\n // ===============================\n\n var Popover = function (element, options) {\n this.init('popover', element, options)\n }\n\n if (!$.fn.tooltip) throw new Error('Popover requires tooltip.js')\n\n Popover.VERSION = '3.3.6'\n\n Popover.DEFAULTS = $.extend({}, $.fn.tooltip.Constructor.DEFAULTS, {\n placement: 'right',\n trigger: 'click',\n content: '',\n template: '

'\n })\n\n\n // NOTE: POPOVER EXTENDS tooltip.js\n // ================================\n\n Popover.prototype = $.extend({}, $.fn.tooltip.Constructor.prototype)\n\n Popover.prototype.constructor = Popover\n\n Popover.prototype.getDefaults = function () {\n return Popover.DEFAULTS\n }\n\n Popover.prototype.setContent = function () {\n var $tip = this.tip()\n var title = this.getTitle()\n var content = this.getContent()\n\n $tip.find('.popover-title')[this.options.html ? 'html' : 'text'](title)\n $tip.find('.popover-content').children().detach().end()[ // we use append for html objects to maintain js events\n this.options.html ? (typeof content == 'string' ? 'html' : 'append') : 'text'\n ](content)\n\n $tip.removeClass('fade top bottom left right in')\n\n // IE8 doesn't accept hiding via the `:empty` pseudo selector, we have to do\n // this manually by checking the contents.\n if (!$tip.find('.popover-title').html()) $tip.find('.popover-title').hide()\n }\n\n Popover.prototype.hasContent = function () {\n return this.getTitle() || this.getContent()\n }\n\n Popover.prototype.getContent = function () {\n var $e = this.$element\n var o = this.options\n\n return $e.attr('data-content')\n || (typeof o.content == 'function' ?\n o.content.call($e[0]) :\n o.content)\n }\n\n Popover.prototype.arrow = function () {\n return (this.$arrow = this.$arrow || this.tip().find('.arrow'))\n }\n\n\n // POPOVER PLUGIN DEFINITION\n // =========================\n\n function Plugin(option) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.popover')\n var options = typeof option == 'object' && option\n\n if (!data && /destroy|hide/.test(option)) return\n if (!data) $this.data('bs.popover', (data = new Popover(this, options)))\n if (typeof option == 'string') data[option]()\n })\n }\n\n var old = $.fn.popover\n\n $.fn.popover = Plugin\n $.fn.popover.Constructor = Popover\n\n\n // POPOVER NO CONFLICT\n // ===================\n\n $.fn.popover.noConflict = function () {\n $.fn.popover = old\n return this\n }\n\n}(jQuery);\n","/* ========================================================================\n * Bootstrap: scrollspy.js v3.3.6\n * http://getbootstrap.com/javascript/#scrollspy\n * ========================================================================\n * Copyright 2011-2015 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // SCROLLSPY CLASS DEFINITION\n // ==========================\n\n function ScrollSpy(element, options) {\n this.$body = $(document.body)\n this.$scrollElement = $(element).is(document.body) ? $(window) : $(element)\n this.options = $.extend({}, ScrollSpy.DEFAULTS, options)\n this.selector = (this.options.target || '') + ' .nav li > a'\n this.offsets = []\n this.targets = []\n this.activeTarget = null\n this.scrollHeight = 0\n\n this.$scrollElement.on('scroll.bs.scrollspy', $.proxy(this.process, this))\n this.refresh()\n this.process()\n }\n\n ScrollSpy.VERSION = '3.3.6'\n\n ScrollSpy.DEFAULTS = {\n offset: 10\n }\n\n ScrollSpy.prototype.getScrollHeight = function () {\n return this.$scrollElement[0].scrollHeight || Math.max(this.$body[0].scrollHeight, document.documentElement.scrollHeight)\n }\n\n ScrollSpy.prototype.refresh = function () {\n var that = this\n var offsetMethod = 'offset'\n var offsetBase = 0\n\n this.offsets = []\n this.targets = []\n this.scrollHeight = this.getScrollHeight()\n\n if (!$.isWindow(this.$scrollElement[0])) {\n offsetMethod = 'position'\n offsetBase = this.$scrollElement.scrollTop()\n }\n\n this.$body\n .find(this.selector)\n .map(function () {\n var $el = $(this)\n var href = $el.data('target') || $el.attr('href')\n var $href = /^#./.test(href) && $(href)\n\n return ($href\n && $href.length\n && $href.is(':visible')\n && [[$href[offsetMethod]().top + offsetBase, href]]) || null\n })\n .sort(function (a, b) { return a[0] - b[0] })\n .each(function () {\n that.offsets.push(this[0])\n that.targets.push(this[1])\n })\n }\n\n ScrollSpy.prototype.process = function () {\n var scrollTop = this.$scrollElement.scrollTop() + this.options.offset\n var scrollHeight = this.getScrollHeight()\n var maxScroll = this.options.offset + scrollHeight - this.$scrollElement.height()\n var offsets = this.offsets\n var targets = this.targets\n var activeTarget = this.activeTarget\n var i\n\n if (this.scrollHeight != scrollHeight) {\n this.refresh()\n }\n\n if (scrollTop >= maxScroll) {\n return activeTarget != (i = targets[targets.length - 1]) && this.activate(i)\n }\n\n if (activeTarget && scrollTop < offsets[0]) {\n this.activeTarget = null\n return this.clear()\n }\n\n for (i = offsets.length; i--;) {\n activeTarget != targets[i]\n && scrollTop >= offsets[i]\n && (offsets[i + 1] === undefined || scrollTop < offsets[i + 1])\n && this.activate(targets[i])\n }\n }\n\n ScrollSpy.prototype.activate = function (target) {\n this.activeTarget = target\n\n this.clear()\n\n var selector = this.selector +\n '[data-target=\"' + target + '\"],' +\n this.selector + '[href=\"' + target + '\"]'\n\n var active = $(selector)\n .parents('li')\n .addClass('active')\n\n if (active.parent('.dropdown-menu').length) {\n active = active\n .closest('li.dropdown')\n .addClass('active')\n }\n\n active.trigger('activate.bs.scrollspy')\n }\n\n ScrollSpy.prototype.clear = function () {\n $(this.selector)\n .parentsUntil(this.options.target, '.active')\n .removeClass('active')\n }\n\n\n // SCROLLSPY PLUGIN DEFINITION\n // ===========================\n\n function Plugin(option) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.scrollspy')\n var options = typeof option == 'object' && option\n\n if (!data) $this.data('bs.scrollspy', (data = new ScrollSpy(this, options)))\n if (typeof option == 'string') data[option]()\n })\n }\n\n var old = $.fn.scrollspy\n\n $.fn.scrollspy = Plugin\n $.fn.scrollspy.Constructor = ScrollSpy\n\n\n // SCROLLSPY NO CONFLICT\n // =====================\n\n $.fn.scrollspy.noConflict = function () {\n $.fn.scrollspy = old\n return this\n }\n\n\n // SCROLLSPY DATA-API\n // ==================\n\n $(window).on('load.bs.scrollspy.data-api', function () {\n $('[data-spy=\"scroll\"]').each(function () {\n var $spy = $(this)\n Plugin.call($spy, $spy.data())\n })\n })\n\n}(jQuery);\n","/* ========================================================================\n * Bootstrap: tab.js v3.3.6\n * http://getbootstrap.com/javascript/#tabs\n * ========================================================================\n * Copyright 2011-2015 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // TAB CLASS DEFINITION\n // ====================\n\n var Tab = function (element) {\n // jscs:disable requireDollarBeforejQueryAssignment\n this.element = $(element)\n // jscs:enable requireDollarBeforejQueryAssignment\n }\n\n Tab.VERSION = '3.3.6'\n\n Tab.TRANSITION_DURATION = 150\n\n Tab.prototype.show = function () {\n var $this = this.element\n var $ul = $this.closest('ul:not(.dropdown-menu)')\n var selector = $this.data('target')\n\n if (!selector) {\n selector = $this.attr('href')\n selector = selector && selector.replace(/.*(?=#[^\\s]*$)/, '') // strip for ie7\n }\n\n if ($this.parent('li').hasClass('active')) return\n\n var $previous = $ul.find('.active:last a')\n var hideEvent = $.Event('hide.bs.tab', {\n relatedTarget: $this[0]\n })\n var showEvent = $.Event('show.bs.tab', {\n relatedTarget: $previous[0]\n })\n\n $previous.trigger(hideEvent)\n $this.trigger(showEvent)\n\n if (showEvent.isDefaultPrevented() || hideEvent.isDefaultPrevented()) return\n\n var $target = $(selector)\n\n this.activate($this.closest('li'), $ul)\n this.activate($target, $target.parent(), function () {\n $previous.trigger({\n type: 'hidden.bs.tab',\n relatedTarget: $this[0]\n })\n $this.trigger({\n type: 'shown.bs.tab',\n relatedTarget: $previous[0]\n })\n })\n }\n\n Tab.prototype.activate = function (element, container, callback) {\n var $active = container.find('> .active')\n var transition = callback\n && $.support.transition\n && ($active.length && $active.hasClass('fade') || !!container.find('> .fade').length)\n\n function next() {\n $active\n .removeClass('active')\n .find('> .dropdown-menu > .active')\n .removeClass('active')\n .end()\n .find('[data-toggle=\"tab\"]')\n .attr('aria-expanded', false)\n\n element\n .addClass('active')\n .find('[data-toggle=\"tab\"]')\n .attr('aria-expanded', true)\n\n if (transition) {\n element[0].offsetWidth // reflow for transition\n element.addClass('in')\n } else {\n element.removeClass('fade')\n }\n\n if (element.parent('.dropdown-menu').length) {\n element\n .closest('li.dropdown')\n .addClass('active')\n .end()\n .find('[data-toggle=\"tab\"]')\n .attr('aria-expanded', true)\n }\n\n callback && callback()\n }\n\n $active.length && transition ?\n $active\n .one('bsTransitionEnd', next)\n .emulateTransitionEnd(Tab.TRANSITION_DURATION) :\n next()\n\n $active.removeClass('in')\n }\n\n\n // TAB PLUGIN DEFINITION\n // =====================\n\n function Plugin(option) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.tab')\n\n if (!data) $this.data('bs.tab', (data = new Tab(this)))\n if (typeof option == 'string') data[option]()\n })\n }\n\n var old = $.fn.tab\n\n $.fn.tab = Plugin\n $.fn.tab.Constructor = Tab\n\n\n // TAB NO CONFLICT\n // ===============\n\n $.fn.tab.noConflict = function () {\n $.fn.tab = old\n return this\n }\n\n\n // TAB DATA-API\n // ============\n\n var clickHandler = function (e) {\n e.preventDefault()\n Plugin.call($(this), 'show')\n }\n\n $(document)\n .on('click.bs.tab.data-api', '[data-toggle=\"tab\"]', clickHandler)\n .on('click.bs.tab.data-api', '[data-toggle=\"pill\"]', clickHandler)\n\n}(jQuery);\n","/* ========================================================================\n * Bootstrap: affix.js v3.3.6\n * http://getbootstrap.com/javascript/#affix\n * ========================================================================\n * Copyright 2011-2015 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // AFFIX CLASS DEFINITION\n // ======================\n\n var Affix = function (element, options) {\n this.options = $.extend({}, Affix.DEFAULTS, options)\n\n this.$target = $(this.options.target)\n .on('scroll.bs.affix.data-api', $.proxy(this.checkPosition, this))\n .on('click.bs.affix.data-api', $.proxy(this.checkPositionWithEventLoop, this))\n\n this.$element = $(element)\n this.affixed = null\n this.unpin = null\n this.pinnedOffset = null\n\n this.checkPosition()\n }\n\n Affix.VERSION = '3.3.6'\n\n Affix.RESET = 'affix affix-top affix-bottom'\n\n Affix.DEFAULTS = {\n offset: 0,\n target: window\n }\n\n Affix.prototype.getState = function (scrollHeight, height, offsetTop, offsetBottom) {\n var scrollTop = this.$target.scrollTop()\n var position = this.$element.offset()\n var targetHeight = this.$target.height()\n\n if (offsetTop != null && this.affixed == 'top') return scrollTop < offsetTop ? 'top' : false\n\n if (this.affixed == 'bottom') {\n if (offsetTop != null) return (scrollTop + this.unpin <= position.top) ? false : 'bottom'\n return (scrollTop + targetHeight <= scrollHeight - offsetBottom) ? false : 'bottom'\n }\n\n var initializing = this.affixed == null\n var colliderTop = initializing ? scrollTop : position.top\n var colliderHeight = initializing ? targetHeight : height\n\n if (offsetTop != null && scrollTop <= offsetTop) return 'top'\n if (offsetBottom != null && (colliderTop + colliderHeight >= scrollHeight - offsetBottom)) return 'bottom'\n\n return false\n }\n\n Affix.prototype.getPinnedOffset = function () {\n if (this.pinnedOffset) return this.pinnedOffset\n this.$element.removeClass(Affix.RESET).addClass('affix')\n var scrollTop = this.$target.scrollTop()\n var position = this.$element.offset()\n return (this.pinnedOffset = position.top - scrollTop)\n }\n\n Affix.prototype.checkPositionWithEventLoop = function () {\n setTimeout($.proxy(this.checkPosition, this), 1)\n }\n\n Affix.prototype.checkPosition = function () {\n if (!this.$element.is(':visible')) return\n\n var height = this.$element.height()\n var offset = this.options.offset\n var offsetTop = offset.top\n var offsetBottom = offset.bottom\n var scrollHeight = Math.max($(document).height(), $(document.body).height())\n\n if (typeof offset != 'object') offsetBottom = offsetTop = offset\n if (typeof offsetTop == 'function') offsetTop = offset.top(this.$element)\n if (typeof offsetBottom == 'function') offsetBottom = offset.bottom(this.$element)\n\n var affix = this.getState(scrollHeight, height, offsetTop, offsetBottom)\n\n if (this.affixed != affix) {\n if (this.unpin != null) this.$element.css('top', '')\n\n var affixType = 'affix' + (affix ? '-' + affix : '')\n var e = $.Event(affixType + '.bs.affix')\n\n this.$element.trigger(e)\n\n if (e.isDefaultPrevented()) return\n\n this.affixed = affix\n this.unpin = affix == 'bottom' ? this.getPinnedOffset() : null\n\n this.$element\n .removeClass(Affix.RESET)\n .addClass(affixType)\n .trigger(affixType.replace('affix', 'affixed') + '.bs.affix')\n }\n\n if (affix == 'bottom') {\n this.$element.offset({\n top: scrollHeight - height - offsetBottom\n })\n }\n }\n\n\n // AFFIX PLUGIN DEFINITION\n // =======================\n\n function Plugin(option) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.affix')\n var options = typeof option == 'object' && option\n\n if (!data) $this.data('bs.affix', (data = new Affix(this, options)))\n if (typeof option == 'string') data[option]()\n })\n }\n\n var old = $.fn.affix\n\n $.fn.affix = Plugin\n $.fn.affix.Constructor = Affix\n\n\n // AFFIX NO CONFLICT\n // =================\n\n $.fn.affix.noConflict = function () {\n $.fn.affix = old\n return this\n }\n\n\n // AFFIX DATA-API\n // ==============\n\n $(window).on('load', function () {\n $('[data-spy=\"affix\"]').each(function () {\n var $spy = $(this)\n var data = $spy.data()\n\n data.offset = data.offset || {}\n\n if (data.offsetBottom != null) data.offset.bottom = data.offsetBottom\n if (data.offsetTop != null) data.offset.top = data.offsetTop\n\n Plugin.call($spy, data)\n })\n })\n\n}(jQuery);\n","/*!\n * Masonry PACKAGED v4.2.2\n * Cascading grid layout library\n * https://masonry.desandro.com\n * MIT License\n * by David DeSandro\n */\n\n/**\n * Bridget makes jQuery widgets\n * v2.0.1\n * MIT license\n */\n\n/* jshint browser: true, strict: true, undef: true, unused: true */\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( 'jquery-bridget/jquery-bridget',[ 'jquery' ], function( jQuery ) {\n return factory( window, jQuery );\n });\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory(\n window,\n require('jquery')\n );\n } else {\n // browser global\n window.jQueryBridget = factory(\n window,\n window.jQuery\n );\n }\n\n}( window, function factory( window, jQuery ) {\n'use strict';\n\n// ----- utils ----- //\n\nvar arraySlice = Array.prototype.slice;\n\n// helper function for logging errors\n// $.error breaks jQuery chaining\nvar console = window.console;\nvar logError = typeof console == 'undefined' ? function() {} :\n function( message ) {\n console.error( message );\n };\n\n// ----- jQueryBridget ----- //\n\nfunction jQueryBridget( namespace, PluginClass, $ ) {\n $ = $ || jQuery || window.jQuery;\n if ( !$ ) {\n return;\n }\n\n // add option method -> $().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 * Masonry v4.2.2\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( [\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","( function( $ ) {\r\n\r\n\tvar slider = {\r\n\t\tinit : function() {\r\n\t\t\tthis.globalSlider();\r\n\t\t},\r\n\t\tglobalSlider : function() {\r\n\t\t\t$( '.bxslider' ).bxSlider( {\r\n\t\t\t\ttouchEnabled: false,\r\n\t\t\t\tauto: true,\r\n\t\t\t\tpager: ($('.bxslider>li').length > 1) ? true : false,\r\n\t\t\t\tcontrols : true,\r\n\t\t\t\tcaptions: true,\r\n\t\t\t\tonSliderLoad: function() {\r\n\t\t\t\t\t$( '.bx-wrapper .bx-caption' ).height( $( '.bx-wrapper' ).height() );\r\n\t\t\t\t}\r\n\t\t\t} );\r\n\t\t}\r\n\t};\r\n\r\n $( document ).ready( function() {\r\n\t\tslider.init();\r\n\t} );\r\n\r\n} )( jQuery );\r\n","/* \r\n * To change this license header, choose License Headers in Project Properties.\r\n * To change this template file, choose Tools | Templates\r\n * and open the template in the editor.\r\n */\r\n\r\nvar ScrollReveal = { };\r\nvar masonry = { };\r\n\r\n( function( $ ) {\r\n\r\n\tScrollReveal.init = function() {\r\n\t\t$( '.masonry .col' ).each( function( i ) {\r\n\t\t\tvar bottomObject = $( this ).offset().top + 20;\r\n\t\t\tvar bottomWindow = $( window ).scrollTop() + $( window ).height();\r\n\r\n\t\t\tif( bottomWindow > bottomObject ) {\r\n\t\t\t\t$( this ).animate( {\r\n\t\t\t\t\t'opacity': '1',\r\n\t\t\t\t\t'marginTop': '0'\r\n\t\t\t\t}, 500 );\r\n\t\t\t}\r\n\t\t} );\r\n\t};\r\n\r\n\tScrollReveal.animation = function() {\r\n\t\t$( window ).scroll( function() {\r\n\t\t\tScrollReveal.init();\r\n\t\t} );\r\n\t};\r\n\r\n\tmasonry = {\r\n\t\tinit: function() {\r\n\t\t\tthis.globalmasonry( '.masonry', 991 );\r\n\t\t\tthis.globalmasonry( '.masonry-about', 480 );\r\n\t\t\t\r\n\t\t\t$( '.context-block .outline-btn' ).on( 'click', function( event ) {\r\n\t\t\t\tevent.preventDefault();\r\n\t\t\t\t$( this ).prev().toggleClass( 'in' );\r\n\r\n\t\t\t\tvar open = $( this ).data( 'text-open' );\r\n\t\t\t\tvar close = $( this ).data( 'text-close' );\r\n\r\n\t\t\t\tif( $( this ).prev().hasClass( 'in' ) ) {\r\n\t\t\t\t\t$( this ).html( open );\r\n\t\t\t\t} else {\r\n\t\t\t\t\t$( this ).html( close );\r\n\t\t\t\t}\r\n\r\n\t\t\t\t$( '.masonry' ).masonry();\r\n\t\t\t} );\r\n\t\t},\r\n\t\tglobalmasonry: function( param, breakpoint ) {\r\n\t\t\tvar container = $( param );\r\n\r\n\t\t\tif( $( window ).width() > breakpoint ) {\r\n\t\t\t\tvar $grid = container.masonry( {\r\n\t\t\t\t\tinitLayout: false,\r\n\t\t\t\t\tcolumnWidth: '.col',\r\n\t\t\t\t\titemSelector: '.col'\r\n\t\t\t\t} );\r\n\r\n\t\t\t\tcontainer.imagesLoaded( function() {\r\n\t\t\t\t\t$grid.masonry();\r\n\t\t\t\t} );\r\n\r\n\t\t\t\t$grid.one( 'layoutComplete', function() {\r\n\t\t\t\t\t$( '.masonry .col' ).each( function() {\r\n\t\t\t\t\t\t$( this ).css( {\r\n\t\t\t\t\t\t\t'margin-top': 60,\r\n\t\t\t\t\t\t\t'opacity': 0\r\n\t\t\t\t\t\t} );\r\n\t\t\t\t\t} ).promise().done( function() {\r\n\t\t\t\t\t\tScrollReveal.init();\r\n\t\t\t\t\t\tScrollReveal.animation();\r\n\t\t\t\t\t} );\r\n\t\t\t\t} );\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\r\n\t$( window ).load( function() {\r\n\t\t$( '.masonry .col' ).css( 'display', 'none' );\r\n\r\n\t\t$( '.loader' ).fadeOut( 'slow' ).promise().done( function() {\r\n\t\t\tmasonry.init();\r\n\t\t\t\r\n\t\t\t$( '.masonry' ).show();\r\n\t\t\t$( '.masonry .col' ).css( 'display', 'block' );\r\n\t\t} );\r\n\t} );\r\n\t\r\n\t$( '.masonry' ).on( 'layoutComplete', function( msnryInstance, laidOutItems ) {\r\n\t\t$( '.context-block' ).each( function() {\r\n\t\t\tvar contentHeight = 0;\r\n\t\t\t\r\n\t\t\t$( this ).find( '.context-body p' ).each( function() {\r\n\t\t\t\tcontentHeight += $( this ).height();\r\n\t\t\t} );\r\n\r\n\t\t\tif( contentHeight <= 336 ) {\r\n\t\t\t\t$( this ).find( '.outline-btn' ).hide();\r\n\t\t\t\t$( this ).find( '.context-body' ).removeClass( 'white-overlay' );\r\n\t\t\t}\r\n\t\t} );\r\n\t} );\r\n\r\n} )( jQuery );\r\n","/**\n * Created by eskilkeskikangas on 27/06/16.\n */\n( function( $ ) {\n\n\t console.log('track');\n\n\t$( document ).ready( function() {\n\n\t\t$('body').on('click', '.social-media', function(){\n\n\t\t\tvar label = '';\n\n\t\t\tif( $(this).find('.instagram').length > 0 ) {\n\t\t\t\tlabel = 'instagram';\n\t\t\t}\n\t\t\tif( $(this).find('.facebook').length > 0 ) {\n\t\t\t\tlabel = 'facebook';\n\t\t\t}\n\n\t\t\tif( label !== '' ) {\n\n\t\t\t\t__gaTracker('send', {\n\t\t\t\t\thitType: 'event',\n\t\t\t\t\teventCategory: 'Social Follow',\n\t\t\t\t\teventAction: 'Click on ' + label + '-follow-link',\n\t\t\t\t\teventLabel: label + '-banner'\n\t\t\t\t});\n\n\t\t\t}\n\n\t\t});\n\n\t\t$('body').on('submit', '.newsletter-signup-form form', function(){\n\n\t\t\t__gaTracker('send', {\n\t\t\t\thitType: 'event',\n\t\t\t\teventCategory: 'Newsletter',\n\t\t\t\teventAction: 'Subscribe to newsletter',\n\t\t\t\teventLabel: 'pop up - newsletter signup'\n\t\t\t});\n\n\t\t});\n\n\t\t$('body').on('submit', '.newsletter form', function(){\n\n\t\t\t__gaTracker('send', {\n\t\t\t\thitType: 'event',\n\t\t\t\teventCategory: 'Newsletter',\n\t\t\t\teventAction: 'Subscribe to newsletter',\n\t\t\t\teventLabel: 'footer - newsletter signup'\n\t\t\t});\n\n\t\t});\n\n\t\t$('body').on('click', '.fsi-group', function(){\n\n\t\t\tvar label = '';\n\n\t\t\tif( $(this).hasClass('instagram') ) {\n\t\t\t\tlabel = 'instagram';\n\t\t\t}\n\t\t\tif( $(this).hasClass('facebook') ) {\n\t\t\t\tlabel = 'facebook';\n\t\t\t}\n\n\t\t\tif( label !== '' ) {\n\n\t\t\t\t__gaTracker('send', {\n\t\t\t\t\thitType: 'event',\n\t\t\t\t\teventCategory: 'Social Follow',\n\t\t\t\t\teventAction: 'Click on ' + label + '-follow-link',\n\t\t\t\t\teventLabel: label + '-icon-footer'\n\t\t\t\t});\n\n\t\t\t}\n\n\t\t});\n\n\t});\n\n})( jQuery );\n","/* \n * To change this license header, choose License Headers in Project Properties.\n * To change this template file, choose Tools | Templates\n * and open the template in the editor.\n */\n\nvar Video = {};\n\n( function( $ ) {\n\t\n//\tvar masonry = $( '.masonry .play-wrap' );\n//\tvar less = $( '.less-content .play-wrap' );\n//\tvar related = $( '.related-articles .play-wrap' );\n//\n//\tmasonry.on( 'click', function( ev ) {\n//\t\t$( this ).parents( '.entry-thumbnail' ).find( \"#pvideo\" )[ 0 ].src += \"&autoplay=1\";\n//\t\t\n//\t\tev.preventDefault();\n//\t\t\n//\t\t$( this ).parents( '.entry-thumbnail' ).find( 'img.visible' ).hide();\n//\t\t$( this ).parents( '.entry-thumbnail' ).find( 'iframe.visible' ).css( { \"opacity\":\"1\", \"position\":\"static\" } );\n//\t\t$( this ).parents( '.entry-thumbnail' ).find( '.play-video' ).css( { \"position\":\"static\" } );\n//\t\t$( this ).fadeOut();\n//\t});\n//\n//\tless.on( 'click', function( ev ) {\n//\t\t$( this ).parents( '.entry-thumbnail' ).find( \"#pvideo\" )[ 0 ].src += \"&autoplay=1\";\n//\t\tev.preventDefault();\n//\t\t$( '.thumbnail-img-wrap').find( 'img' ).hide();\n//\t\t$( '.custom-video').find( 'iframe.visible' ).css( { \"opacity\":\"1\" } );\n//\t\t$( this ).fadeOut();\n//\t});\n//\n//\tless.on( 'click', function( ev ) {\n//\t\t$( this ).parents( '.entry-thumbnail' ).find( \"#pvideo\" )[ 0 ].src += \"&autoplay=1\";\n//\t\tev.preventDefault();\n//\t\t$( this ).parents( '.related-item-wrap' ).find( 'img' ).hide();\n//\t\t$( this ).fadeOut();\n//\t});\n\t\n\t$( document ).ready( function() {\n\t\t// Blog post\n\t\tvar blogPostContainer = $( '#BlogPostContainer' );\n\t\t\n\t\tblogPostContainer.find( '.play-wrap' ).click( function( e ) {\n\t\t\te.preventDefault();\n\t\t\t\n\t\t\tblogPostContainer.find( '.thumbnail-img-wrap img' ).hide();\n\t\t\t\n\t\t\tvar youtubeVideo = blogPostContainer.find( 'iframe.youtube-video' );\n\t\t\t\n\t\t\tyoutubeVideo[0].src += '&autoplay=1';\n\t\t\tyoutubeVideo.css( { 'opacity' : '1' } );\n\t\t\t\n\t\t\t$( this ).hide();\n\t\t} );\n\t\t\n\t\t// Related articles\n\t\t$( '.related-articles .related-item-wrap .play-wrap' ).click( function( e ) {\n\t\t\te.preventDefault();\n\t\t\t\n\t\t\tvar youtubeVideo = $( this ).parents( '.related-item-wrap' ).find( 'iframe.youtube-video' );\n\t\t\t\n\t\t\tyoutubeVideo[0].src += '&autoplay=1';\n\t\t\tyoutubeVideo.css( { 'opacity' : '1', 'z-index' : '5'} );\n\t\t\t\n\t\t\t$( this ).hide();\n\t\t} );\n\t\t\n\t\t// Front and category page\n\t\t$( '.masonry article .play-wrap' ).click( function( e ) {\n\t\t\te.preventDefault();\n\t\t\t\n\t\t\t$( this ).parents( 'article' ).find( 'img' ).hide();\n\t\t\t\n\t\t\t\n\t\t\tvar youtubeVideo = $( this ).parents( 'article' ).find( 'iframe.youtube-video' );\n\t\t\t\n\t\t\tyoutubeVideo[0].src += '&autoplay=1';\n\t\t\tyoutubeVideo.css( { 'opacity' : '1', 'position' : 'static' } );\n\t\t\t\n\t\t\t$( this ).parents( 'article' ).find( '.play-video' ).css( { 'position' : 'static' } );\n\t\t\t\n\t\t\t$( this ).hide();\n\t\t} );\n\t} );\n\t\n} )( jQuery );"],"sourceRoot":"assets/scripts/"}