{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./Scripts/Shared/lightbox/lightbox.heplers.js","webpack:///./Scripts/struers/carousel/carousel.helpers.js","webpack:///./Scripts/Shared/helpers/index.js","webpack:///./Scripts/struers/index.js","webpack:///./Scripts/Shared/legacy/features.js","webpack:///./Scripts/Shared/legacy/polyfills.js","webpack:///./Scripts/Shared/helpers/helper.accordion.js","webpack:///./Scripts/Shared/helpers/helper.print.js","webpack:///./Scripts/Shared/helpers/helper.windowOpen.js","webpack:///./Scripts/Shared/helpers/helper.dataFx.js","webpack:///./Scripts/Shared/helpers/helper.scrollToElm.js","webpack:///./Scripts/Shared/helpers/helper.tableOverflow.js","webpack:///./Scripts/Shared/helpers/helper.tableRowClick.js","webpack:///./Scripts/Shared/helpers/helper.isTouchDevice.js","webpack:///./Scripts/Shared/helpers/helper.toggler.js","webpack:///./Scripts/Shared/helpers/helper.addOrUpdateQueryString.js","webpack:///./Scripts/Shared/helpers/helper.getTopLevelCountryCode.js","webpack:///./Scripts/Shared/svg4everybody/index.js","webpack:///./Scripts/Shared/lightbox/index.js","webpack:///./Scripts/Shared/lightbox/lightbox.default.js","webpack:///./Scripts/Shared/lightbox/lightbox.elastic.js","webpack:///./Scripts/Shared/lightbox/lightbox.flash.js","webpack:///./Scripts/Shared/lightbox/lightbox.gallery.js","webpack:///./Scripts/Shared/lightbox/lightbox.iframe.js","webpack:///./Scripts/Shared/lightbox/lightbox.inline.js","webpack:///./Scripts/Shared/lightbox/lightbox.nooverlay.js","webpack:///./Scripts/Shared/lightbox/lightbox.video.js","webpack:///./Scripts/Shared/navtabs/index.js","webpack:///./Scripts/struers/search/index.js","webpack:///./Scripts/struers/carousel/index.js","webpack:///./Scripts/struers/carousel/carousel.customers.js","webpack:///./Scripts/struers/carousel/carousel.fullWidth.js","webpack:///./Scripts/struers/carousel/carousel.seminars.js","webpack:///./Scripts/struers/carousel/carousel.captions.js","webpack:///./Scripts/struers/carousel/carousel.fullWidthHero.js","webpack:///./Scripts/struers/carousel/carousel.overview.js","webpack:///./Scripts/struers/carousel/carousel.persons.js","webpack:///./Scripts/struers/carousel/carousel.references.js","webpack:///./Scripts/struers/hotspots/index.js","webpack:///./Scripts/struers/storeinitializer/index.js","webpack:///./Scripts/Shared/storelocator/index.js","webpack:///./Scripts/Shared/storelocator/storelocator.startup.js","webpack:///./Scripts/Shared/storelocator/storelocator.search.js","webpack:///./Scripts/Shared/storelocator/storelocator.list.js","webpack:///./Scripts/Shared/storelocator/storelocator.markers.js","webpack:///./Scripts/Shared/storelocator/storelocator.closest-store.js","webpack:///./Scripts/struers/storeinitializer/storeinitializer.style.js","webpack:///./Scripts/struers/menu/index.js","webpack:///./Scripts/struers/menu/menu.mobile.js","webpack:///./Scripts/struers/menu/menu.desktop.js","webpack:///./Scripts/struers/menu/menu.languageswitcher.js","webpack:///./Scripts/struers/select2/index.js","webpack:///./Scripts/struers/ajax-form/index.js","webpack:///./Scripts/struers/academy/index.js","webpack:///./Scripts/struers/academy/academy.filter.js","webpack:///./Scripts/struers/academy/academy.toggle.js","webpack:///./Scripts/struers/academy/academy.timeparser.js","webpack:///./node_modules/moment/locale sync ^\\.\\/.*$","webpack:///./Scripts/struers/academy/academy.tracking.js","webpack:///./Scripts/struers/office/index.js","webpack:///./Scripts/struers/contact/index.js","webpack:///./Scripts/struers/contact/contact.helpers.js","webpack:///./Scripts/struers/herovideo/index.js","webpack:///./Scripts/struers/eshop/index.js","webpack:///./Scripts/struers/faq/index.js","webpack:///./Scripts/struers/smooth-scroll/index.js","webpack:///./Scripts/struers/library/index.js","webpack:///./Scripts/Shared/anchor-menu/index.js","webpack:///./Scripts/struers/restricted-download/index.js","webpack:///./Scripts/struers/event-registration/index.js","webpack:///./Scripts/struers/lazyload/index.js","webpack:///./Scripts/struers/tooltip/index.js"],"names":["webpackJsonpCallback","data","moduleId","chunkId","chunkIds","moreModules","executeModules","i","resolves","length","installedChunks","push","Object","prototype","hasOwnProperty","call","modules","parentJsonpFunction","shift","deferredModules","apply","checkDeferredModules","result","deferredModule","fulfilled","j","depId","splice","__webpack_require__","s","installedModules","0","exports","module","l","m","c","d","name","getter","o","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","p","jsonpArray","window","oldJsonpFunction","slice","hideAlerts","scope","alertElm","$","find","addClass","element","undefined","this","id","el","title","html","cssErrorClass","formElm","prop","reset","show","removeClass","cssAlertClassSelector","successAlertElm","fancybox","close","defaults","options","dataOptions","isEmptyObject","includes","nameSpace","stripedKey","replace","newKey","toLowerCase","extend","_jquery","_helper","_interopRequireDefault","_helper2","_helper3","_helper4","_helper5","_helper6","_helper7","_helper8","_helper9","_helper10","_helper11","accordion","printPage","windowOpen","dataFx","scrollToElement","tableOverflow","tableRowClick","toggler","addOrUpdateQueryString","isTouchDevice","getTopLevelCountryCode","_index","_index2","_cookieconsent","_index3","_index4","_index5","_index6","_index7","_index8","_index9","_index10","_index11","_index12","_index13","_index14","_index15","_index16","_index17","_index18","_index19","_moment","_index20","_index21","_index22","_index23","_index24","App","lightbox","helpers","academy","moment","common","_defineProperty","_window$App$common","init","console","log","fn","jquery","search","menu","googlesearch","svg","cookieconsent","carousel","storeinitializer","navTabs","hotspots","select2","office","contact","contactValidation","heroVideo","eshop","faq","smoothScroll","library","anchorMenu","macsurvey","restrictedDownload","eventRegistration","lazyload","tooltip","searchContainer","searchToggle","searchBox","ajaxform","formCssSelector","fieldErrorCssClass","successFn","formWrapElm","default","hide","filter","toggle","table","row","description","timeParser","tracking","desktopMenu","mobileMenu","languageSwitcherMenu","searchForm","cx","gcse","document","createElement","type","async","src","location","protocol","getElementsByTagName","parentNode","insertBefore","svg4everybody","cookieConsent","normal","elastic","flash","gallery","iframe","nooverlay","video","inline","customers","fullWidth","seminars","captions","fullWidthHero","overview","persons","references","mapDivClass","item","cookieName","section","link","form","showsection","trigger","addEventListener","documentElement","className","String","indexOf","arguments","ACCORDION","TOGGLER","each","index","$accordion","$toggler","speed","indexInner","elInner","$el","$relatedSlider","parent","hasClass","on","e","preventDefault","toggleClass","stop","slideToggle","print","url","attr","specs","open","fadeOut","fadeIn","selector","scrollNudge","scrollToPos","offset","top","animate","scrollTop","wrap","width","first","navigator","MaxTouchPoints","msMaxTouchPoints","ANIMATIONS","fade","fadeToggle","slide","activeClass","obj","$obj","animation","animationFunc","uri","regEx","RegExp","separator","match","hostnameSplit","hostname","split","countryCode","_lightbox","_lightbox2","_lightbox3","_lightbox4","_lightbox5","_lightbox6","_lightbox7","_lightbox8","elm","opts","assign","padding","beforeShow","htmlCaption","openEffect","openSpeed","closeEffect","closeSpeed","closeClick","overlay","swf","wmode","allowfullscreen","allowscriptaccess","autoSize","groupAttr","autoplay","youtubeAutoplay","height","scrolling","preload","closest","closeBtnTitle","minHeight","tpl","closeBtn","beforeLoad","afterClose","formReset","media","not","tabsNav","tabsLinks","tabsActiveLabel","tabsTrigger","hash","goToTab","tabLink","changeHash","targetTabContent","text","history","pushState","actTab","target","_carouselCustomers","_carouselFullWidth","_carouselSeminars","_carouselCaptions","_carouselFullWidthHero","_carouselOverview","_carouselPersons","_carouselReferences","settings","_carousel","dataAttrOptions","items","loop","nav","navText","dots","responsive","1025","owlCarousel","elem","margin","children","dotsContainer","prev","event","relatedTarget","_items","dot","append","itemIndex","page","stagePadding","slider","click","768","1500","mouseDrag","touchDrag","wrapper","showMore","showLess","targetElements","targetElementsClass","hsData","hover","itemPosition","targetId","removeAttr","Promise","_googleMapsApiLoader","_storeinitializer","config","mapElms","next","mapLoaded","libraries","apiKey","markerEndpoint","markerSource","all","then","loadSuccess","loadFailed","markersLoaded","warn","results","googleMapsApi","mapElm","api","markers","optionsObj","markerIcon","markerIconActive","clusterOpt","countryIso","country","mapOptions","center","lat","lng","zoom","styles","mapStyles","mapTypeId","maps","MapTypeId","ROADMAP","mapTypeControl","scrollwheel","streetViewControl","disableDefaultUI","markersArr","mapType","usenearme","usebounds","JSON","parse","labels","infoWindowTpl","_getOptions","Markers","storeLocator","initialize","err","_storelocator","storeStartup","startMap","_storelocator2","_storelocator3","_storelocator4","map","Map","listDiv","addListener","storeList","getMarkersInViewport","closestStore","useGeoLocation","searchDiv","storeSearch","addSearchBox","storeMarkers","addMarkers","allowedBounds","LatLngBounds","LatLng","fitBounds","_moveMap","place","geometry","_geoSearcher","setCenter","viewport","searchStr","geoCoder","Geocoder","query","geocode","address","latLng","getCenter","countryRestrict","autocomplete","places","Autocomplete","types","componentRestrictions","getPlace","newurl","host","pathname","formatted_address","path","_addRowOfStores","stores","rowHtml","toplevelCountryCode","forEach","markerData","storeHtml","concat","Link","Name","Street","Postcode","City","phone","Phone","Website","getDirections","bounds","getBounds","markersInView","Lat","Lng","contains","rows","currentRow","rowsOfMarkers","processedMarkers","idx","off","remove","pagingOptions","btnMarkup","paging","insertAfter","maxRow","minRow","_initPaging","_dot","style","markersOnMap","infoWindow","InfoWindow","maxWidth","mapMarker","infoWindowContent","marker","Marker","position","icon","doT","template","infoWindowContentFn","iwOuter","setContent","css","left","setIcon","anchor","textColor","textSize","MarkerClusterer","maxZoom","_radian","x","Math","PI","geolocation","getCurrentPosition","latLntObj","distances","dLat","dLong","a","sin","cos","atan2","sqrt","closestLat","parseFloat","closestLng","setZoom","_findClosestMarker","coords","latitude","longitude","timeout","enableHighAccuracy","maximumAge","clearListeners","featureType","elementType","stylers","color","visibility","lightness","saturation","_menuMobile","_menuDesktop","_menuLanguageswitcher","parents","deps","depItems","depLinks","depDDLs","depDDLLinks","hideDepDDLs","hasDDL","siblings","areas","areaItems","areaLinks","areaDDLs","hideAreaDDL","$link","$ddl","$areaLink","is","$levels","$rootLevel","$levelLinks","$levelBacks","setDDLHeight","$elm","$listItems","$currentLevel","$targetLevel","$back","$this","$previews","level","$sub","eq","trackingLinks","formatState","state","dataset","select2Flag","templateResult","templateSelection","minimumResultsForSearch","Infinity","which","submit","lightboxElm","errorsContainerElm","loader","grecaptcha","empty","serializedData","serialize","post","done","success","dataLayer","showAlert","setTimeout","hideLightbox","errorType","fields","inputElm","errorText","fail","always","ContactCaptcha","ReloadImage","ready","execute","action","token","_academyFilter","_academyToggle","_academyTimeparser","_academyTracking","jQuery","sectionId","filterId","filterAction","filterDDLs","optionsList","optionsClear","coursesTable","listEmpty","btnShowMore","listCounter","filterOptions","setFilterOption","select","isSelected","getCurrentState","listHtml","updateFilter","before","getCourses","getOptions","count","fieldName","ajaxSettings","traditional","totalCount","shownCount","currentState","replaceState","origin","updateList","pushNewState","searchString","f","join","updateFilterOptions","searchArray","searchObj","itemData","itemKey","itemValue","option","val","selectName","selectValue","onpopstate","onbeforeunload","btns","btn","btnActiveClass","textActive","slideUp","slideDown","timeElements","currentSiteLanguage","locale","$timeElement","utcDateString","localDateString","utc","local","format","timeZoneString","tz","guess","zoneAbbr","dateWithTimezoneString","./af","./af.js","./ar","./ar-ma","./ar-ma.js","./ar-sa","./ar-sa.js","./ar-tn","./ar-tn.js","./ar.js","./az","./az.js","./be","./be.js","./bg","./bg.js","./bn","./bn.js","./bo","./bo.js","./br","./br.js","./bs","./bs.js","./ca","./ca.js","./cs","./cs.js","./cv","./cv.js","./cy","./cy.js","./da","./da.js","./de","./de-at","./de-at.js","./de.js","./dv","./dv.js","./el","./el.js","./en-au","./en-au.js","./en-ca","./en-ca.js","./en-gb","./en-gb.js","./en-ie","./en-ie.js","./en-nz","./en-nz.js","./eo","./eo.js","./es","./es.js","./et","./et.js","./eu","./eu.js","./fa","./fa.js","./fi","./fi.js","./fo","./fo.js","./fr","./fr-ca","./fr-ca.js","./fr-ch","./fr-ch.js","./fr.js","./fy","./fy.js","./gd","./gd.js","./gl","./gl.js","./he","./he.js","./hi","./hi.js","./hr","./hr.js","./hu","./hu.js","./hy-am","./hy-am.js","./id","./id.js","./is","./is.js","./it","./it.js","./ja","./ja.js","./jv","./jv.js","./ka","./ka.js","./kk","./kk.js","./km","./km.js","./ko","./ko.js","./lb","./lb.js","./lo","./lo.js","./lt","./lt.js","./lv","./lv.js","./me","./me.js","./mk","./mk.js","./ml","./ml.js","./mr","./mr.js","./ms","./ms-my","./ms-my.js","./ms.js","./my","./my.js","./nb","./nb.js","./ne","./ne.js","./nl","./nl.js","./nn","./nn.js","./pl","./pl.js","./pt","./pt-br","./pt-br.js","./pt.js","./ro","./ro.js","./ru","./ru.js","./se","./se.js","./si","./si.js","./sk","./sk.js","./sl","./sl.js","./sq","./sq.js","./sr","./sr-cyrl","./sr-cyrl.js","./sr.js","./sv","./sv.js","./sw","./sw.js","./ta","./ta.js","./te","./te.js","./th","./th.js","./tl-ph","./tl-ph.js","./tlh","./tlh.js","./tr","./tr.js","./tzl","./tzl.js","./tzm","./tzm-latn","./tzm-latn.js","./tzm.js","./uk","./uk.js","./uz","./uz.js","./vi","./vi.js","./zh-cn","./zh-cn.js","./zh-tw","./zh-tw.js","webpackContext","req","webpackContextResolve","Error","code","keys","resolve","academyType","eventCallback","_jsCookie","updateOfficeData","label","tmpl","selected","tableWrapper","cookieValue","Cookies","days","officeId","set","expires","updateOfficeCookie","_contact","linkType","showContactBox","closeContactBox","triggerContactBox","getUrlParam","fillContactForm","scopeLink","contactSection","urlParams","decodeURI","substring","param","toUpperCase","decodeURIComponent","tempName","_youtubePlayer","placeholder","playerId","videoId","parseVideoUrl","YoutubePlayer","playerVars","controls","disablekb","modestbranding","showinfo","rel","playlist","mute","contactButton","itm","ctaBtn","quoteBtn","itemName","targetTop","filterCheckbox","lists","filterOpts","optsItem","sub","getActiveItems","groupCollapsed","doc","docFilter","chb","checkboxName","toString","groupEnd","filterApply","updIndex","ddl","indexNext","ddlNext","optionSubs","subs","menuLinks","menuTargets","activeTargetId","anchorMenuScroll","winTop","lastScrolledTargetId","href","getAttribute","URL","querySelector","offsetTop","scrollBehavior","scrollTo","behavior","reveal","$element","supportScroll","supportIntersectionObserver","test","userAgent","IntersectionObserver","entries","observer","entry","isIntersecting","disconnect","observe","_core","querySelectorAll","popperInstance","createPopper","placement","modifiers","setAttribute","update","removeAttribute","showEvents","hideEvents"],"mappings":"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AA,IACAC,OAAA,IACAC,UAAA,IACAC,OAAA,IACAC,UAAA,IACAC,OAAA,IACAC,UAAA,IACAC,OAAA,IACAC,UAAA,IACAC,OAAA,IACAC,UAAA,IACAC,OAAA,IACAC,UAAA,IACAC,OAAA,IACAC,UAAA,IACAC,OAAA,IACAC,UAAA,IACAC,OAAA,GACAC,UAAA,IACAC,aAAA,IACAC,UAAA,GACAC,OAAA,IACAC,UAAA,IACAC,OAAA,IACAC,UAAA,IACAC,UAAA,IACAC,aAAA,IACAC,UAAA,IACAC,aAAA,IACAC,UAAA,GACAC,aAAA,GACAC,UAAA,IACAC,aAAA,IACAC,UAAA,IACAC,aAAA,IACAC,OAAA,IACAC,UAAA,IACAC,OAAA,GACAC,UAAA,GACAC,OAAA,IACAC,UAAA,IACAC,OAAA,IACAC,UAAA,IACAC,OAAA,IACAC,UAAA,IACAC,OAAA,IACAC,UAAA,IACAC,OAAA,IACAC,UAAA,IACAC,OAAA,GACAC,UAAA,IACAC,aAAA,IACAC,UAAA,IACAC,aAAA,IACAC,UAAA,GACAC,OAAA,IACAC,UAAA,IACAC,OAAA,IACAC,UAAA,IACAC,OAAA,IACAC,UAAA,IACAC,OAAA,IACAC,UAAA,IACAC,OAAA,IACAC,UAAA,IACAC,OAAA,IACAC,UAAA,IACAC,OAAA,IACAC,UAAA,IACAC,UAAA,IACAC,aAAA,IACAC,OAAA,IACAC,UAAA,IACAC,OAAA,IACAC,UAAA,IACAC,OAAA,IACAC,UAAA,IACAC,OAAA,GACAC,UAAA,GACAC,OAAA,IACAC,UAAA,IACAC,OAAA,IACAC,UAAA,IACAC,OAAA,IACAC,UAAA,IACAC,OAAA,IACAC,UAAA,IACAC,OAAA,IACAC,UAAA,IACAC,OAAA,IACAC,UAAA,IACAC,OAAA,IACAC,UAAA,IACAC,OAAA,IACAC,UAAA,IACAC,OAAA,IACAC,UAAA,IACAC,OAAA,IACAC,UAAA,IACAC,OAAA,IACAC,UAAA,IACAC,OAAA,IACAC,UAAA,IACAC,OAAA,IACAC,UAAA,IACAC,OAAA,IACAC,UAAA,IACAC,aAAA,IACAC,UAAA,IACAC,OAA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","file":"struers.bundle.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n \t\tvar executeModules = data[2];\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t\t// add entry modules from loaded chunk to deferred list\n \t\tdeferredModules.push.apply(deferredModules, executeModules || []);\n\n \t\t// run deferred modules when all chunks ready\n \t\treturn checkDeferredModules();\n \t};\n \tfunction checkDeferredModules() {\n \t\tvar result;\n \t\tfor(var i = 0; i < deferredModules.length; i++) {\n \t\t\tvar deferredModule = deferredModules[i];\n \t\t\tvar fulfilled = true;\n \t\t\tfor(var j = 1; j < deferredModule.length; j++) {\n \t\t\t\tvar depId = deferredModule[j];\n \t\t\t\tif(installedChunks[depId] !== 0) fulfilled = false;\n \t\t\t}\n \t\t\tif(fulfilled) {\n \t\t\t\tdeferredModules.splice(i--, 1);\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = deferredModule[0]);\n \t\t\t}\n \t\t}\n \t\treturn result;\n \t}\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t0: 0\n \t};\n\n \tvar deferredModules = [];\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/Content/Scripts/\";\n\n \tvar jsonpArray = window[\"webpackJsonp\"] = window[\"webpackJsonp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// add entry module to deferred list\n \tdeferredModules.push([198,1]);\n \t// run deferred modules when ready\n \treturn checkDeferredModules();\n","'use strict';\r\n\r\nexport function htmlCaption(scope) {\r\n let element;\r\n if (scope === undefined) {\r\n element = this.element;\r\n } else {\r\n element = scope.element;\r\n }\r\n const id = $(element).data('title-id');\r\n const el = id ? $('#' + id) : [];\r\n\r\n if (el.length) {\r\n this.title = el.html();\r\n }\r\n}\r\n\r\nexport function formReset(scope, cssErrorClass) {\r\n const formElm = $(scope).prop('tagName') === 'FORM' ? $(scope) : $(scope).find('form');\r\n if (formElm.length) {\r\n formElm[0].reset();\r\n formElm.find('ul.form__errors').html('');\r\n formElm.find(\".form__row\").show();\r\n formElm.find(\".btn-row\").show();\r\n $('.' + cssErrorClass).removeClass(cssErrorClass);\r\n }\r\n}\r\n\r\nexport function hideAlerts(scope) {\r\n const alertElm = $(scope).find('.alert');\r\n if (alertElm.length) {\r\n alertElm.addClass('hidden');\r\n }\r\n}\r\n\r\nexport function showAlert(scope, cssAlertClassSelector) {\r\n hideAlerts(scope);\r\n\r\n const successAlertElm = $(scope).find(cssAlertClassSelector);\r\n\r\n if (successAlertElm.length) {\r\n successAlertElm.removeClass('hidden');\r\n }\r\n}\r\n\r\n\r\nexport function hideLightbox() {\r\n $.fancybox.close();\r\n}","'use strict';\r\n\r\nimport $ from 'jquery';\r\n\r\nconst nameSpace = 'carousel';\r\n\r\n/**\r\n* [dataAttrOptions extends default options with options defined in namespaced data attr.]\r\n* @param {object} defaults [Default extend object]\r\n* @param {object} options [Extend to defaults]\r\n* @return {object} [extended object]\r\n*/\r\nexport function dataAttrOptions(defaults, options){\r\n const dataOptions = {};\r\n let settings = {};\r\n\r\n if ($.isEmptyObject(options)){\r\n return defaults;\r\n }\r\n\r\n for (const key in options){\r\n if (key.includes(nameSpace)){\r\n const stripedKey = key.replace(nameSpace, '');\r\n const newKey = stripedKey[0].toLowerCase() + stripedKey.slice(1);\r\n\r\n dataOptions[newKey] = options[key];\r\n }\r\n }\r\n\r\n // Recursively merge defaults and data attribute options.\r\n settings = $.extend(true, {}, defaults, dataOptions);\r\n\r\n return settings;\r\n}\r\n","'use strict';\r\n\r\nimport accordion from './helper.accordion';\r\nimport printPage from './helper.print';\r\nimport windowOpen from './helper.windowOpen';\r\nimport dataFx from './helper.dataFx';\r\nimport scrollToElement from './helper.scrollToElm';\r\nimport tableOverflow from './helper.tableOverflow';\r\nimport tableRowClick from './helper.tableRowClick';\r\nimport isTouchDevice from './helper.isTouchDevice';\r\nimport toggler from './helper.toggler';\r\nimport addOrUpdateQueryString from './helper.addOrUpdateQueryString';\r\nimport getTopLevelCountryCode from './helper.getTopLevelCountryCode';\r\n\r\nexport default {\r\n accordion,\r\n printPage,\r\n windowOpen,\r\n dataFx,\r\n scrollToElement,\r\n tableOverflow,\r\n tableRowClick,\r\n toggler,\r\n addOrUpdateQueryString,\r\n isTouchDevice,\r\n getTopLevelCountryCode\r\n};\r\n","'use strict';\r\n\r\nimport '../Shared/legacy/features';\r\nimport '../Shared/legacy/polyfills';\r\n\r\nimport $ from 'jquery';\r\nimport helpers from '../Shared/helpers/index';\r\nimport svg4everybody from '../Shared/svg4everybody/index';\r\nimport cookieConsent from '@kraftvaerk/cookieconsent';\r\nimport lightbox from '../Shared/lightbox/index';\r\nimport navTabs from '../Shared/navtabs/index';\r\nimport search from './search/index';\r\nimport carousel from './carousel/index';\r\nimport hotspots from './hotspots/index';\r\nimport storeinitializer from './storeinitializer/index';\r\nimport menu from './menu/index';\r\nimport select2 from './select2/index';\r\nimport ajaxform from './ajax-form/index';\r\nimport academy from './academy/index';\r\nimport office from './office/index';\r\nimport contact from './contact/index';\r\nimport heroVideo from './herovideo/index';\r\nimport eshop from './eshop/index';\r\nimport faq from './faq/index';\r\nimport smoothScroll from './smooth-scroll/index';\r\nimport library from './library/index';\r\nimport moment from 'moment';\r\nimport anchorMenu from '../Shared/anchor-menu/index';\r\nimport restrictedDownload from './restricted-download/index';\r\nimport eventRegistration from './event-registration/index';\r\nimport lazyload from './lazyload/index';\r\nimport tooltip from './tooltip/index';\r\n\r\n//Add an alias to the App, if we need to call App from the outside:\r\nwindow.App = window.App || {};\r\n\r\nwindow.App.lightbox = lightbox;\r\nwindow.App.helpers = helpers;\r\nwindow.App.academy = academy;\r\nwindow.App.moment = moment;\r\n\r\nwindow.App.common = {\r\n // App.common.init runs on all pages\r\n init() {\r\n console.log('jquery:', $.fn.jquery);\r\n\r\n this.search();\r\n this.menu();\r\n this.googlesearch();\r\n this.svg();\r\n this.cookieconsent();\r\n\r\n this.carousel();\r\n this.storeinitializer();\r\n this.navTabs();\r\n this.hotspots();\r\n this.select2();\r\n this.academy();\r\n this.office();\r\n this.contact();\r\n this.contactValidation();\r\n this.heroVideo();\r\n this.eshop();\r\n this.faq();\r\n this.smoothScroll();\r\n this.library();\r\n this.anchorMenu();\r\n this.macsurvey();\r\n this.restrictedDownload();\r\n this.eventRegistration();\r\n this.lazyload();\r\n this.tooltip();\r\n\r\n // NOTE: the following order of scripts does matter\r\n this.lightbox();\r\n\r\n helpers.toggler();\r\n helpers.printPage();\r\n },\r\n search() {\r\n search.init({\r\n searchContainer: '.js-search',\r\n searchToggle: '.js-search-toggle',\r\n searchBox: '.js-search-box'\r\n });\r\n },\r\n macsurvey() {\r\n ajaxform.init({\r\n formCssSelector: '.js-ajax-form-mac-survey',\r\n fieldErrorCssClass: 'form-validation--error',\r\n successFn: function () {\r\n const formWrapElm = $('.form-wrap-mac-survey');\r\n if (formWrapElm.length) {\r\n formWrapElm.hide();\r\n }\r\n }\r\n });\r\n },\r\n macsurvey() {\r\n ajaxform.init({\r\n formCssSelector: '.js-ajax-form-mac-survey',\r\n fieldErrorCssClass: 'form-validation--error',\r\n successFn: function () {\r\n const formWrapElm = $('.form-wrap-mac-survey');\r\n if (formWrapElm.length) {\r\n formWrapElm.hide();\r\n }\r\n }\r\n });\r\n },\r\n academy() {\r\n academy.filter.init('.js-academy-list');\r\n academy.toggle({\r\n table: '.js-courses-table',\r\n row: '.js-course-row',\r\n toggle: '.js-course-toggle',\r\n description: '.js-course-description'\r\n });\r\n academy.timeParser();\r\n ajaxform.init({\r\n formCssSelector: '.js-ajax-form-academy-toolbar',\r\n fieldErrorCssClass: 'form-validation--error'\r\n });\r\n academy.tracking();\r\n },\r\n select2() {\r\n select2.init('.js-select2');\r\n },\r\n menu() {\r\n menu.desktopMenu();\r\n menu.mobileMenu('.main-nav-mobile');\r\n menu.languageSwitcherMenu();\r\n },\r\n googlesearch() {\r\n const searchForm = $('#search__form');\r\n if (searchForm.length) {\r\n const cx = searchForm.data('cx');\r\n const gcse = document.createElement('script');\r\n gcse.type = 'text/javascript';\r\n gcse.async = true;\r\n gcse.src = (document.location.protocol === 'https:' ? 'https:' : 'http:') +\r\n '//cse.google.com/cse.js?cx=' + cx;\r\n const s = document.getElementsByTagName('script')[0];\r\n s.parentNode.insertBefore(gcse, s);\r\n }\r\n },\r\n svg() {\r\n svg4everybody.init();\r\n },\r\n cookieconsent() {\r\n if ($('#cookieConsent').length) {\r\n new cookieConsent().init('#cookieConsent');\r\n }\r\n },\r\n lightbox() {\r\n lightbox.normal('.lightbox');\r\n lightbox.elastic('.lightbox-elastic');\r\n lightbox.flash('.lightbox-flash');\r\n lightbox.gallery('.lightbox-gallery');\r\n lightbox.iframe('.lightbox-iframe:not([target=\"_blank\"]), .js-link-lightbox:not([target=\"_blank\"])');\r\n lightbox.nooverlay('.lightbox-nooverlay');\r\n lightbox.video('.lightbox-video');\r\n lightbox.inline('.lightbox-inline');\r\n },\r\n navTabs() {\r\n navTabs.init('.js-nav-tabs');\r\n },\r\n carousel() {\r\n carousel.customers('.js-carousel-customers');\r\n carousel.fullWidth('.js-carousel-full-width');\r\n carousel.seminars('.js-carousel-seminars');\r\n carousel.captions('.js-carousel-captions');\r\n carousel.fullWidthHero('.js-carousel-full-width-hero');\r\n carousel.overview('.js-carousel-overview');\r\n carousel.persons('.js-carousel-persons');\r\n carousel.references('.js-carousel-references');\r\n },\r\n storeinitializer() {\r\n storeinitializer.init({\r\n mapDivClass: '.js-map'\r\n });\r\n },\r\n hotspots() {\r\n hotspots.init({\r\n item: '.js-hotspot',\r\n data: '.js-hotspot-content'\r\n });\r\n },\r\n office() {\r\n office.init({\r\n item: '.js-office',\r\n cookieName: 'struers_officeId'\r\n });\r\n },\r\n contact() {\r\n contact.init({\r\n section: '.js-contact-section',\r\n link: '.js-contact-link',\r\n form: '#contact-form',\r\n showsection: '.js-contact-showsection'\r\n });\r\n },\r\n contactValidation() {\r\n ajaxform.init({\r\n formCssSelector: '.js-ajax-form',\r\n fieldErrorCssClass: 'form-validation--error'\r\n });\r\n },\r\n heroVideo() {\r\n heroVideo.init('.js-hero-video');\r\n },\r\n eshop() {\r\n eshop.init('.js-eshop');\r\n },\r\n faq() {\r\n faq.init({\r\n item: '.js-faq-item',\r\n trigger: '.js-faq-trigger'\r\n });\r\n },\r\n smoothScroll() {\r\n smoothScroll.init('.full-hero a');\r\n },\r\n anchorMenu() {\r\n anchorMenu.init('.js-nav-anchor');\r\n },\r\n library() {\r\n library.init('.js-library');\r\n },\r\n restrictedDownload() {\r\n restrictedDownload.init('.js-restricted-download');\r\n },\r\n eventRegistration() {\r\n eventRegistration.init();\r\n },\r\n lazyload() {\r\n lazyload.init('.js-lazyload');\r\n },\r\n tooltip() {\r\n tooltip.init({\r\n item: '.js-tooltip'\r\n });\r\n },\r\n};\r\n\r\n\r\n/**\r\n * Initial Application bootstrapping\r\n */\r\n\r\n// jQuery document ready\r\n// $(document).ready(() => {\r\n document.addEventListener(\"DOMContentLoaded\", () => {\r\n window.App.common.init($);\r\n });\r\n// });\r\n","'use strict';\r\n\r\n\r\n//change className of html from .noJS to .hasJS.\r\n(function(el){\r\n el.className = el.className.replace('no-js', 'has-js');\r\n})(document.documentElement);\r\n","'use strict';\r\n\r\n/*\r\n eslint no-extend-native:0\r\n */\r\n\r\n\r\n// ES6: String.prototype.includes()\r\nif (!String.prototype.includes) {\r\n String.prototype.includes = function() {\r\n return String.prototype.indexOf.apply(this, arguments) !== -1;\r\n };\r\n}\r\n","'use strict';\r\n\r\nimport $ from 'jquery';\r\n/**\r\n * Small plugin for accordion\r\n * @return {[undefined]} [nothing returned]\r\n */\r\n\r\nexport default function accordion(){\r\n //classes\r\n const ACCORDION = 'js-accordion';\r\n const TOGGLER = ACCORDION + '__toggler';\r\n const SLIDER = ACCORDION + '__slider';\r\n const $accordions = $('.' + ACCORDION);\r\n\r\n //saving accordion scope\r\n $accordions.each(function(index, el){\r\n const $accordion = $(el);\r\n const $toggler = $accordion.find('.' + TOGGLER);\r\n\r\n /* accordion data-parameters\r\n * @param {[number]} speed [speed in ms]\r\n */\r\n const speed = $accordion.data('accordionSpeed') || 500;\r\n\r\n $toggler.each(function(indexInner, elInner) {\r\n const $el = $(elInner);\r\n const $relatedSlider = $el.parent().find('.' + SLIDER);\r\n\r\n //if you want to initially open some of the sliders\r\n if (!$el.hasClass(TOGGLER + '--active')) {\r\n $relatedSlider.hide();\r\n }\r\n\r\n $el.on('click', function(e) {\r\n e.preventDefault();\r\n $el.toggleClass(TOGGLER + '--active');\r\n //no css3 animation because of css rules shadowing risk\r\n $relatedSlider.stop().slideToggle(speed);\r\n });\r\n });\r\n });\r\n}\r\n","'use strict';\r\n\r\nimport $ from 'jquery';\r\n\r\nexport default function printPage(){\r\n $('.js-helper-print').on('click', function(e){\r\n window.print();\r\n e.preventDefault();\r\n });\r\n}\r\n","'use strict';\r\n\r\nimport $ from 'jquery';\r\n\r\nexport default function windowOpen() {\r\n $('.js-helper-window-open').on('click', function(e){\r\n const url = $(this).attr('href');\r\n const name = $(this).attr('target');\r\n const specs = $(this).data('specs');\r\n\r\n window.open(url, name, specs || 'width=600, height=300, titlebar=0, menubar=0, status=0');\r\n e.preventDefault();\r\n });\r\n}\r\n","'use strict';\r\n\r\nimport $ from 'jquery';\r\n\r\nexport default function dataFx(){\r\n $('[data-fx-fade-out]').each(function(){\r\n $(this).fadeOut($(this).data('fadeOut'));\r\n });\r\n\r\n $('[data-fx-fade-in]').each(function(){\r\n $(this).fadeIn($(this).data('fadeIn'));\r\n });\r\n}\r\n","'use strict';\r\n\r\nimport $ from 'jquery';\r\n\r\n/**\r\n * [scrollToElm description]\r\n * @param {[string]} selector [css selector]\r\n * @param {[number]} speed [speed in ms]\r\n * @return {[undefined]} [nothing returned]\r\n */\r\nexport default function scrollToElm(selector, speed = 500, scrollNudge = 74) {\r\n if (!selector){\r\n return;\r\n }\r\n\r\n const scrollToPos = selector ? $(selector).offset().top - scrollNudge : 0;\r\n\r\n $('html, body').animate({\r\n scrollTop: scrollToPos\r\n }, speed);\r\n}\r\n","'use strict';\r\n\r\nimport $ from 'jquery';\r\n\r\nexport default function tableOverflow(){\r\n $('.js-helper-table-overflow').each(function(){\r\n $(this).wrap('
');\r\n\r\n if ($(this).width() > $(this).parent('.table-data-wrapper').width()) {\r\n $(this).parent('.table-data-wrapper').addClass('table-data--overflow');\r\n }\r\n });\r\n}\r\n","'use strict';\r\n\r\nimport $ from 'jquery';\r\n\r\nexport default function tableRowClick () {\r\n $('.table').on('click', '.js-helper-table-row-click', function(){\r\n window.location = $(this).find('a').first().attr('href');\r\n return false;\r\n });\r\n}\r\n","'use strict';\r\n\r\n/**\r\n * Determines whether the current device supports touch events\r\n * @return {Boolean} [description]\r\n */\r\nexport default function isTouchDevice() {\r\n return (('ontouchstart' in window) || (navigator.MaxTouchPoints > 0) || (navigator.msMaxTouchPoints > 0));\r\n}\r\n","'use strict';\r\n\r\nimport $ from 'jquery';\r\n/**\r\n * Simply toggles parameter show/hide\r\n * @return {[undefined]} [nothing returned]\r\n */\r\n\r\nexport default function toggler(){\r\n /* accordion data-parameters\r\n * @param {[number]} speed [speed in ms]\r\n * @param {[string]} object [selector of toggled element]\r\n * @param {[animation]} object [toggling animation]\r\n */\r\n const TOGGLER = '.js-toggler';\r\n const ANIMATIONS = {\r\n 'fade': $.fn.fadeToggle,\r\n 'slide': $.fn.slideToggle\r\n };\r\n const $toggler = $(TOGGLER);\r\n\r\n $toggler.on('click', function(e){\r\n e.preventDefault();\r\n\r\n const activeClass = $(this).data('togglerActiveClass') || 'toggler--active';\r\n const speed = $(this).data('togglerSpeed') || 500;\r\n const obj = $(this).data('togglerObj');\r\n const $obj = $(obj);\r\n const animation = $(this).data('togglerAnimation');\r\n const animationFunc = ANIMATIONS[animation] || $.fn.toggle;\r\n\r\n $(this).toggleClass(activeClass);\r\n animationFunc.call($obj, speed);\r\n });\r\n\r\n}\r\n","'use strict';\r\n\r\n/**\r\n * Adds or updates querystring\r\n * @param {string} uri string (could be document.location.search)\r\n * @param {string} key querystring name\r\n * @param {string} value new value for querystring\r\n * @return {string} updated querystring\r\n */\r\nexport default function updateQueryStringParameter(uri, key, value) {\r\n const regEx = new RegExp('([?&])' + key + '=.*?(&|$)', 'i');\r\n const separator = uri.indexOf('?') !== -1 ? '&' : '?';\r\n\r\n if (uri.match(regEx)) {\r\n return uri.replace(regEx, '$1' + key + '=' + value + '$2');\r\n }\r\n\r\n return uri + separator + key + '=' + value;\r\n}\r\n","'use strict';\r\n\r\nexport default function getTopLevelCountryCode () {\r\n const hostnameSplit = window.location.hostname.split('.');\r\n const countryCode = hostnameSplit[hostnameSplit.length - 1];\r\n\r\n /** If country code is more than 3 chars we assume we are on localhost. In that case we use 'se' */\r\n if (countryCode.length > 3) {\r\n return 'se';\r\n }\r\n\r\n return countryCode;\r\n}\r\n","'use strict';\r\n\r\nimport svg4everybody from 'svg4everybody';\r\n\r\nexport default {\r\n init: svg4everybody\r\n};\r\n","'use strict';\r\n\r\nimport normal from './lightbox.default';\r\nimport elastic from './lightbox.elastic';\r\nimport flash from './lightbox.flash';\r\nimport gallery from './lightbox.gallery';\r\nimport iframe from './lightbox.iframe';\r\nimport inline from './lightbox.inline';\r\nimport nooverlay from './lightbox.nooverlay';\r\nimport video from './lightbox.video';\r\n\r\n/**\r\n * [init initilizes all lightboxes]\r\n * @param {[object]} scopes [a object keys as function names and value as selectors]\r\n * @return {[undefined]} [nothing returned]\r\n */\r\nexport default {\r\n normal,\r\n elastic,\r\n flash,\r\n gallery,\r\n iframe,\r\n inline,\r\n nooverlay,\r\n video\r\n};\r\n","'use strict';\r\n\r\nimport $ from 'jquery';\r\nimport 'fancybox/dist/js/jquery.fancybox';\r\nimport { htmlCaption } from './lightbox.heplers';\r\n\r\n/**\r\n * [defaultLightbox]\r\n * @param {[string]} scope [css selector]\r\n * @return {[undefined]} [nothing returned]\r\n */\r\nexport default function defaultLightbox(scope){\r\n $(scope).each(function () {\r\n const elm = $(this);\r\n const opts = Object.assign(elm.data(), {\r\n padding: 50,\r\n helpers: {\r\n title: {\r\n type: 'inside'\r\n }\r\n },\r\n beforeShow: htmlCaption\r\n });\r\n\r\n elm.fancybox(opts);\r\n });\r\n}\r\n","'use strict';\r\n\r\nimport $ from 'jquery';\r\nimport 'fancybox/dist/js/jquery.fancybox';\r\nimport { htmlCaption } from './lightbox.heplers';\r\n\r\n/**\r\n * [elasticLightbox with elastic open and close effect]\r\n * @param {[string]} scope [css selector]\r\n * @return {[undefined]} [nothing returned]\r\n */\r\nexport default function elasticLightbox(scope){\r\n $(scope).each(function () {\r\n const elm = $(this);\r\n const opts = Object.assign(elm.data(), {\r\n padding: 50,\r\n openEffect: 'elastic',\r\n openSpeed: 150,\r\n closeEffect: 'elastic',\r\n closeSpeed: 150,\r\n closeClick: true,\r\n helpers: {\r\n overlay: null,\r\n title: {\r\n type: 'inside'\r\n }\r\n },\r\n beforeShow: htmlCaption\r\n });\r\n\r\n elm.fancybox(opts);\r\n });\r\n}\r\n","'use strict';\r\n\r\nimport $ from 'jquery';\r\nimport 'fancybox/dist/js/jquery.fancybox';\r\nimport { htmlCaption } from './lightbox.heplers';\r\n\r\n/**\r\n * [flashLightbox makes a lightbox with swf/flash file]\r\n * @param {[string]} scope [css selector]\r\n * @return {[undefined]} [nothing returned]\r\n */\r\nexport default function flashLightbox(scope){\r\n $(scope).each(function () {\r\n const elm = $(this);\r\n const opts = Object.assign(elm.data(), {\r\n padding: 50,\r\n type: 'swf',\r\n swf: {\r\n wmode: 'transparent',\r\n allowfullscreen: 'true',\r\n allowscriptaccess: 'always'\r\n },\r\n autoSize: false,\r\n helpers: {\r\n title: {\r\n type: 'inside'\r\n }\r\n },\r\n beforeShow: htmlCaption\r\n });\r\n\r\n elm.fancybox(opts);\r\n });\r\n}\r\n","'use strict';\r\n\r\nimport $ from 'jquery';\r\nimport 'fancybox/dist/js/jquery.fancybox';\r\nimport { htmlCaption } from './lightbox.heplers';\r\n\r\n/**\r\n * [galleryLightbox makes a group gallery]\r\n * @param {[string]} scope [css selector]\r\n * @return {[undefined]} [nothing returned]\r\n */\r\nexport default function galleryLightbox(scope){\r\n $(scope).fancybox({\r\n padding: 50,\r\n groupAttr: 'data-gallery-group',\r\n helpers: {\r\n title: {\r\n type: 'inside'\r\n }\r\n },\r\n // beforeLoad: function () {\r\n // this.title = (this.index + 1) + ' / ' + this.group.length + (this.title ? ' - ' + this.title : '');\r\n // },\r\n beforeShow: htmlCaption\r\n });\r\n}\r\n","'use strict';\r\n\r\nimport $ from 'jquery';\r\nimport 'fancybox/dist/js/jquery.fancybox';\r\nimport { htmlCaption } from './lightbox.heplers';\r\n\r\n/**\r\n * [iframeLightbox makes a lightbox with iframe]\r\n * @param {[string]} scope [css selector]\r\n * @return {[undefined]} [nothing returned]\r\n */\r\n\r\nfunction youtubeAutoplay(url) {\r\n if (url) {\r\n const regExp = /^.*((youtu.be\\/)|(v\\/)|(\\/u\\/\\w\\/)|(embed\\/)|(watch\\?))\\??v?=?([^#\\&\\?]*).*/;\r\n const match = url.match(regExp);\r\n if (match && match[7].length === 11 && url.indexOf('autoplay=') === -1) {\r\n const autoplay = (url.indexOf('?') > 0) ? '&autoplay=1' : '?&autoplay=1';\r\n return url + autoplay;\r\n }\r\n }\r\n return url;\r\n}\r\n\r\nexport default function iframeLightbox(scope){\r\n $(scope).each(function () {\r\n\r\n const elm = $(this);\r\n\r\n elm.attr('href', youtubeAutoplay(elm.attr('href')));\r\n\r\n const opts = Object.assign(elm.data(), {\r\n autoSize: false,\r\n width: '90%',\r\n height: '90%',\r\n padding: 50,\r\n type: 'iframe',\r\n iframe: {\r\n scrolling: 'auto',\r\n preload: true\r\n },\r\n helpers: {\r\n title: {\r\n type: 'inside'\r\n }\r\n },\r\n beforeShow: htmlCaption\r\n });\r\n\r\n elm.fancybox(opts);\r\n });\r\n}\r\n","'use strict';\r\n\r\nimport $ from 'jquery';\r\nimport 'fancybox/dist/js/jquery.fancybox';\r\nimport { htmlCaption, formReset, hideAlerts } from './lightbox.heplers';\r\n\r\n/**\r\n * [inlineLightbox makes a ligthbox of inline content]\r\n * @param {[string]} scope [css selector]\r\n * @return {[undefined]} [nothing returned]\r\n */\r\nexport default function inlineLightbox(scope){\r\n $(scope).each(function () {\r\n const elm = $(this);\r\n\r\n const personContactSliderModuleSelector = '.section';\r\n const module = elm.closest(personContactSliderModuleSelector);\r\n const moduleLightboxSelector = '.contact__form';\r\n const lightbox = module.find(moduleLightboxSelector);\r\n const closeBtnTitle = lightbox.data('closebuttontooltip') ? lightbox.data('closebuttontooltip') : 'Close';\r\n\r\n const opts = Object.assign(elm.data(), {\r\n padding: 50,\r\n type: 'inline',\r\n title: false,\r\n minHeight: 0,\r\n helpers: {\r\n title: {\r\n type: 'inside'\r\n }\r\n },\r\n tpl: {\r\n closeBtn: '' + closeBtnTitle + ''\r\n },\r\n // beforeLoad: function () {\r\n // let url = this.href;\r\n // if (!url) {\r\n // url = $(this).data('href');\r\n // }\r\n // const hash = url.substring(url.indexOf('#'));\r\n\r\n // this.href = hash;\r\n // },\r\n beforeLoad: function(){\r\n htmlCaption(this);\r\n },\r\n afterClose: function () {\r\n formReset(lightbox, 'form-validation--error');\r\n hideAlerts(lightbox);\r\n }\r\n });\r\n\r\n elm.fancybox(opts);\r\n });\r\n}\r\n","'use strict';\r\n\r\nimport $ from 'jquery';\r\nimport 'fancybox/dist/js/jquery.fancybox';\r\nimport { htmlCaption } from './lightbox.heplers';\r\n\r\n/**\r\n * [noOverlayLightbox without overlay]\r\n * @param {[string]} scope [css selector]\r\n * @return {[undefined]} [nothing returned]\r\n */\r\nexport default function noOverlayLightbox(scope){\r\n $(scope).each(function () {\r\n const elm = $(this);\r\n const opts = Object.assign(elm.data(), {\r\n padding: 50,\r\n helpers: {\r\n overlay: null,\r\n title: {\r\n type: 'inside'\r\n }\r\n },\r\n beforeShow: htmlCaption\r\n });\r\n\r\n elm.fancybox(opts);\r\n });\r\n}\r\n","'use strict';\r\n\r\nimport $ from 'jquery';\r\nimport 'fancybox/dist/js/jquery.fancybox';\r\nimport { htmlCaption } from './lightbox.heplers';\r\n\r\n/**\r\n * [videoLightbox description]\r\n * @param {[type]} scope [description]\r\n * @return {[type]} [description]\r\n */\r\nexport default function videoLightbox(scope){\r\n $(scope).each(function () {\r\n const elm = $(this);\r\n const opts = Object.assign(elm.data(), {\r\n padding: 50,\r\n openEffect: 'none',\r\n closeEffect: 'none',\r\n height: 455,\r\n helpers: {\r\n media: {},\r\n title: {\r\n type: 'inside'\r\n }\r\n },\r\n beforeShow: htmlCaption\r\n });\r\n\r\n elm.fancybox(opts);\r\n });\r\n}\r\n","'use strict';\r\n\r\nimport $ from 'jquery';\r\n\r\nfunction init(scope){\r\n\r\n // scope = '.js-nav-tabs'\r\n\r\n $(scope).not('.contact__language').each(function(){\r\n\r\n const tabsNav = $(this);\r\n const tabsLinks = tabsNav.find('a');\r\n const tabsActiveLabel = tabsNav.find('.nav-tabs__mobile-active');\r\n const tabsTrigger = tabsNav.find('.nav-tabs__mobile-trigger');\r\n let hash = window.location.hash;\r\n\r\n tabsTrigger.on('click', function(){\r\n $(this).toggleClass('nav-tabs__mobile-trigger--active');\r\n });\r\n\r\n function goToTab(tabLink, changeHash){\r\n hash = tabLink.attr('href');\r\n const targetTabContent = $(hash);\r\n if (targetTabContent.length > 0) {\r\n // update active tab link\r\n tabsLinks.removeClass('nav-tabs__item--active');\r\n tabLink.addClass('nav-tabs__item--active');\r\n // update active tab link label\r\n tabsActiveLabel.text(tabLink.text());\r\n // update active tab content\r\n const activeTabContent = $('.tab-content--active');\r\n activeTabContent.removeClass('tab-content--active');\r\n targetTabContent.addClass('tab-content--active');\r\n // add history state\r\n if (history.pushState && changeHash) {\r\n history.pushState(null, null, hash);\r\n }\r\n }\r\n }\r\n\r\n if (hash && hash !== '#') {\r\n const actTab = tabsNav.find('[href=\"' + hash + '\"]');\r\n if (actTab.length > 0) {\r\n goToTab($(actTab[0]), true);\r\n }\r\n }\r\n\r\n if ($('.nav-tabs__item--active').length === 0) {\r\n $(tabsLinks[0]).addClass('nav-tabs__item--active');\r\n goToTab($(tabsLinks[0]), false);\r\n }\r\n\r\n tabsLinks.on('click', function(e){\r\n e.preventDefault();\r\n tabsTrigger.removeClass('nav-tabs__mobile-trigger--active');\r\n goToTab($(this), true);\r\n });\r\n });\r\n}\r\n\r\nexport default {\r\n init\r\n};\r\n","'use strict';\r\n\r\nimport $ from 'jquery';\r\n\r\nexport function init(scope){\r\n const searchContainer = $(scope.searchContainer);\r\n const searchToggle = $(scope.searchToggle);\r\n // const searchBox = $(scope.searchBox);\r\n\r\n searchToggle.on('click', function(e){\r\n e.preventDefault();\r\n searchToggle.toggleClass('active');\r\n });\r\n\r\n $(document).on('click', function(e){\r\n if (!searchContainer.find(e.target).length) {\r\n searchToggle.removeClass('active');\r\n }\r\n });\r\n}\r\n\r\nexport default {\r\n init\r\n};\r\n","'use strict';\r\n\r\nimport customers from './carousel.customers.js';\r\nimport fullWidth from './carousel.fullWidth.js';\r\nimport seminars from './carousel.seminars.js';\r\nimport captions from './carousel.captions.js';\r\nimport fullWidthHero from './carousel.fullWidthHero.js';\r\nimport overview from './carousel.overview.js';\r\nimport persons from './carousel.persons.js';\r\nimport references from './carousel.references.js';\r\n\r\nexport default {\r\n customers,\r\n fullWidth,\r\n seminars,\r\n captions,\r\n fullWidthHero,\r\n overview,\r\n persons,\r\n references\r\n};\r\n","'use strict';\r\n\r\nimport $ from 'jquery';\r\nimport 'owl.carousel2';\r\n\r\nimport { dataAttrOptions } from './carousel.helpers';\r\n\r\n\r\n/**\r\n* [CustomersCarousel makes a slider with single item inview. now can make user dots from provided class]\r\n* @param {string} scope [css selector]\r\n* @return {undefined} [nothing returned]\r\n*/\r\nexport default function customersCarousel(scope){\r\n const defaults = {\r\n items: 5,\r\n loop: true,\r\n nav: true,\r\n navText: [' ', ' '],\r\n dots: false,\r\n responsive: {\r\n 0: {\r\n items: 2\r\n },\r\n 1025: {\r\n items: 5\r\n }\r\n }\r\n };\r\n\r\n const elm = $(scope);\r\n const settings = dataAttrOptions(defaults, elm.data());\r\n\r\n elm.owlCarousel(settings);\r\n}\r\n","'use strict';\r\n\r\nimport $ from 'jquery';\r\nimport 'owl.carousel2';\r\n\r\nimport { dataAttrOptions } from './carousel.helpers';\r\n// import isTouchDevice from '../../Shared/helpers/helper.isTouchDevice';\r\n\r\n/**\r\n* [CustomersCarousel makes a slider with single item inview. now can make user dots from provided class]\r\n* @param {string} scope [css selector]\r\n* @return {undefined} [nothing returned]\r\n*/\r\nexport default function fullWidthCarousel(scope){\r\n\r\n $(scope).each(function(){\r\n const elem = $(this);\r\n\r\n const defaults = {\r\n items: 1,\r\n loop: true,\r\n nav: true,\r\n navText: [' ', ' '],\r\n dots: true,\r\n responsive: {\r\n 0: {\r\n items: 1,\r\n margin: 6\r\n },\r\n 1025: {\r\n items: 1,\r\n margin: 30\r\n }\r\n }\r\n };\r\n\r\n if (elem.children().length <= 1) {\r\n defaults.loop = false;\r\n defaults.dots = false;\r\n }\r\n\r\n const settings = dataAttrOptions(defaults, elem.data());\r\n\r\n if (elem.parent().hasClass('tiles-slider--desktop') && elem.children().length > 1) {\r\n const dotsContainer = elem.parent().prev().find('.owl-dots');\r\n elem.on('initialized.owl.carousel', function(event){\r\n $.each(event.relatedTarget._items, (index) => {\r\n const dot = $('
');\r\n if (index === 0) {\r\n dot.addClass('active');\r\n }\r\n dotsContainer.append(dot);\r\n dot.on('click', () => {\r\n elem.trigger('to.owl.carousel', index);\r\n });\r\n });\r\n });\r\n }\r\n\r\n elem.owlCarousel(settings);\r\n\r\n const dots = elem.parent().prev().find('.owl-dot');\r\n elem.on('changed.owl.carousel', function(event){\r\n const itemIndex = event.page.index;\r\n dots.removeClass('active');\r\n $(dots[itemIndex]).addClass('active');\r\n });\r\n\r\n // Hover state for mobile\r\n // first click to add 'hover' state\r\n // second click to folow the link\r\n\r\n // if (isTouchDevice()) {\r\n // const hoverTiles = elem.find('.tile--hero .tile__content, .tile--animated .tile__content');\r\n // hoverTiles.on('click', function(e) {\r\n // const tile = $(this);\r\n // if (!tile.hasClass('hover')) {\r\n // e.preventDefault();\r\n // hoverTiles.removeClass('hover');\r\n // tile.addClass('hover');\r\n // }\r\n // });\r\n // }\r\n\r\n });\r\n}\r\n","'use strict';\r\n\r\nimport $ from 'jquery';\r\nimport 'owl.carousel2';\r\n\r\nimport { dataAttrOptions } from './carousel.helpers';\r\n\r\n\r\n/**\r\n* [CustomersCarousel makes a slider with single item inview. now can make user dots from provided class]\r\n* @param {string} scope [css selector]\r\n* @return {undefined} [nothing returned]\r\n*/\r\nexport default function seminarsCarousel(scope){\r\n const defaults = {\r\n items: 4,\r\n margin: 30,\r\n loop: true,\r\n nav: true,\r\n navText: [' ', ' '],\r\n dots: false,\r\n responsive: {\r\n 0: {\r\n items: 2,\r\n nav: true,\r\n margin: 6,\r\n stagePadding: 4\r\n },\r\n 1025: {\r\n items: 4,\r\n nav: true,\r\n loop: true,\r\n margin: 30,\r\n stagePadding: 60\r\n }\r\n }\r\n };\r\n\r\n $(scope).each(function(){\r\n const elm = $(this);\r\n const items = elm.children();\r\n\r\n if (items.length <= defaults.responsive[1025].items) {\r\n defaults.responsive[1025].nav = false;\r\n defaults.responsive[1025].loop = false;\r\n }\r\n if (items.length <= defaults.responsive[0].items) {\r\n defaults.responsive[0].nav = false;\r\n defaults.responsive[0].loop = false;\r\n }\r\n\r\n const settings = dataAttrOptions(defaults, elm.data());\r\n elm.owlCarousel(settings);\r\n });\r\n}\r\n","'use strict';\r\n\r\nimport $ from 'jquery';\r\nimport 'owl.carousel2';\r\n\r\nimport { dataAttrOptions } from './carousel.helpers';\r\n\r\n/**\r\n* [CustomersCarousel makes a slider with single item inview. now can make user dots from provided class]\r\n* @param {string} scope [css selector]\r\n* @return {undefined} [nothing returned]\r\n*/\r\nexport default function captionsCarousel(scope){\r\n const defaults = {\r\n items: 1,\r\n loop: true,\r\n nav: true,\r\n navText: [' ', ' '],\r\n dots: false,\r\n margin: 5\r\n };\r\n\r\n $(scope).each(function(){\r\n const slider = $(this);\r\n const settings = dataAttrOptions(defaults, slider.data());\r\n\r\n if (slider.children().length > 1) {\r\n slider.owlCarousel(settings);\r\n }\r\n });\r\n}\r\n","'use strict';\r\n\r\nimport $ from 'jquery';\r\nimport 'owl.carousel2';\r\n\r\nimport { dataAttrOptions } from './carousel.helpers';\r\n\r\n\r\n/**\r\n* [CustomersCarousel makes a slider with single item inview. now can make user dots from provided class]\r\n* @param {string} scope [css selector]\r\n* @return {undefined} [nothing returned]\r\n*/\r\nexport default function fullWidthHero(scope){\r\n const defaults = {\r\n items: 1,\r\n margin: 0,\r\n loop: true,\r\n nav: true,\r\n navText: [' ', ' '],\r\n dots: true,\r\n dotsContainer: '.full-width-carousel__dots .owl-dots'\r\n };\r\n\r\n const elm = $(scope);\r\n const settings = dataAttrOptions(defaults, elm.data());\r\n\r\n elm.owlCarousel(settings);\r\n}\r\n","'use strict';\r\n\r\nimport $ from 'jquery';\r\nimport 'owl.carousel2';\r\n// import 'owlCarouselThumbs';\r\n\r\nimport { dataAttrOptions } from './carousel.helpers';\r\n\r\n\r\n/**\r\n* [CustomersCarousel makes a slider with single item inview. now can make user dots from provided class]\r\n* @param {string} scope [css selector]\r\n* @return {undefined} [nothing returned]\r\n*/\r\nexport default function init(scope){\r\n const defaults = {\r\n // thumbs: true,\r\n // thumbsPrerendered: true,\r\n items: 1,\r\n loop: true,\r\n nav: true,\r\n navText: [' ', ' '],\r\n dots: true,\r\n margin: 30\r\n };\r\n\r\n $(scope).each(function(){\r\n const elm = $(this);\r\n const settings = dataAttrOptions(defaults, elm.data());\r\n elm.owlCarousel(settings);\r\n\r\n $(settings.dotsContainer).find('li').click(function () {\r\n elm.trigger('to.owl.carousel', [$(this).index(), 300]);\r\n });\r\n });\r\n}\r\n","'use strict';\r\n\r\nimport $ from 'jquery';\r\nimport 'owl.carousel2';\r\n\r\nimport { dataAttrOptions } from './carousel.helpers';\r\n\r\n\r\n/**\r\n* [CustomersCarousel makes a slider with single item inview. now can make user dots from provided class]\r\n* @param {string} scope [css selector]\r\n* @return {undefined} [nothing returned]\r\n*/\r\nexport default function personsCarousel(scope){\r\n const defaults = {\r\n items: 4,\r\n margin: 30,\r\n nav: true,\r\n navText: [' ', ' '],\r\n dots: false,\r\n responsive: {\r\n 0: {\r\n items: 2,\r\n loop: true,\r\n stagePadding: 4\r\n },\r\n 768: {\r\n items: 3,\r\n loop: true\r\n },\r\n 1025: {\r\n items: 4,\r\n loop: true,\r\n stagePadding: 60\r\n },\r\n 1500: {\r\n stagePadding: 0\r\n }\r\n }\r\n };\r\n\r\n $(scope).each(function(){\r\n const elm = $(this);\r\n const items = elm.children();\r\n\r\n if (items.length <= defaults.responsive[1025].items) {\r\n defaults.responsive[1025].loop = false;\r\n }\r\n if (items.length <= defaults.responsive[768].items) {\r\n defaults.responsive[768].loop = false;\r\n }\r\n if (items.length <= defaults.responsive[0].items) {\r\n defaults.responsive[0].loop = false;\r\n }\r\n\r\n const settings = dataAttrOptions(defaults, elm.data());\r\n elm.owlCarousel(settings);\r\n });\r\n}\r\n","'use strict';\r\n\r\nimport $ from 'jquery';\r\nimport 'owl.carousel2';\r\n\r\nimport { dataAttrOptions } from './carousel.helpers';\r\n\r\n\r\n/**\r\n* [CustomersCarousel makes a slider with single item inview. now can make user dots from provided class]\r\n* @param {string} scope [css selector]\r\n* @return {undefined} [nothing returned]\r\n*/\r\nexport default function referencesCarousel(scope){\r\n const defaults = {\r\n items: 3,\r\n loop: true,\r\n nav: false,\r\n navText: [' ', ' '],\r\n dots: false,\r\n mouseDrag: false,\r\n responsive: {\r\n 0: {\r\n items: 1,\r\n nav: true,\r\n touchDrag: true,\r\n mouseDrag: true\r\n },\r\n 1025: {\r\n items: 3,\r\n nav: false,\r\n touchDrag: false,\r\n mouseDrag: false\r\n }\r\n }\r\n };\r\n\r\n const elm = $(scope);\r\n const settings = dataAttrOptions(defaults, elm.data());\r\n\r\n elm.owlCarousel(settings);\r\n}\r\n","'use strict';\r\n\r\nimport $ from 'jquery';\r\n\r\nexport function init(scope) {\r\n\r\n const hotspots = $(scope.item);\r\n\r\n const hsData = $(scope.data);\r\n\r\n let target;\r\n\r\n function hotspotShow(elem) {\r\n const item = $(elem);\r\n const itemPosition = item.attr('style');\r\n const targetId = item.data('id');\r\n target = hsData.filter('[data-id=\"' + targetId + '\"]');\r\n target.attr('style', itemPosition);\r\n target.stop(true, true);\r\n target.fadeIn(100);\r\n }\r\n\r\n function hotspotHide() {\r\n target.stop(true, true);\r\n target.fadeOut(100);\r\n }\r\n\r\n hotspots.hover(function () {\r\n hotspotShow(this);\r\n }, function () {\r\n hotspotHide();\r\n });\r\n\r\n function showMore() {\r\n const wrapper = $('.eshop__wrapper');\r\n const items = $('.eshop__items');\r\n const showMore = $('.eshop__items--showmore');\r\n const showLess = $('.eshop__items--showless');\r\n const targetElements = $('.eshop__items:gt(4):not(.eshop__items--showmore, .eshop__items--showless)');\r\n const targetElementsClass = \"read-more-target\";\r\n if (items.length > 7) {\r\n targetElements.addClass(targetElementsClass).attr(\"tabindex\", \"-1\");\r\n showLess.hide().attr(\"tabindex\", \"-1\");\r\n showMore.show().removeAttr(\"tabindex\");\r\n } else {\r\n showMore.hide().attr(\"tabindex\", \"-1\");\r\n }\r\n showMore.on('click', function (e) {\r\n e.preventDefault();\r\n targetElements.removeClass(targetElementsClass).removeAttr(\"tabindex\");\r\n showMore.hide().attr(\"tabindex\", \"-1\");\r\n showLess.show().removeAttr(\"tabindex\");\r\n wrapper.addClass('is-expanded');\r\n });\r\n showLess.on('click', function (e) {\r\n e.preventDefault();\r\n targetElements.addClass(targetElementsClass).attr(\"tabindex\", \"-1\");\r\n showLess.hide().attr(\"tabindex\", \"-1\");\r\n showMore.show().removeAttr(\"tabindex\");\r\n wrapper.removeClass('is-expanded');\r\n });\r\n }\r\n showMore();\r\n\r\n}\r\n\r\nexport default {\r\n init\r\n};\r\n","'use strict';\r\n\r\nimport $ from 'jquery';\r\nimport googleMapsApiLoader from 'google-maps-api-loader';\r\nimport storeLocator from '../../Shared/storelocator/index';\r\n// import helpers from '../../Shared/helpers/index';\r\nimport mapStyles from './storeinitializer.style';\r\nimport 'js-marker-clusterer';\r\n\r\nfunction _getOptions(mapElm, api, markers) {\r\n const optionsObj = {\r\n api: api,\r\n markerIcon: mapElm.data('mapIcon'),\r\n markerIconActive: mapElm.data('mapIconActive'),\r\n clusterOpt: mapElm.data('mapCluster'),\r\n countryIso: mapElm.data('mapIso') || null,\r\n country: mapElm.data('mapCountry') || null,\r\n mapElm: mapElm,\r\n mapOptions: {\r\n center: {\r\n lat: null,\r\n lng: null\r\n },\r\n zoom: mapElm.data('mapZoomlevel') ? mapElm.data('mapZoomlevel') : 1,\r\n styles: mapStyles,\r\n mapTypeId: api.maps.MapTypeId.ROADMAP,\r\n mapTypeControl: false,\r\n scrollwheel: false,\r\n streetViewControl: false,\r\n // disableDefaultUI: helpers.isTouchDevice()\r\n disableDefaultUI: false\r\n },\r\n markersArr: markers,\r\n mapType: 'Google',\r\n usenearme: mapElm.data('mapUsenearme') ? mapElm.data('mapUsenearme') : false,\r\n usebounds: mapElm.data('mapUsebounds') ? mapElm.data('mapUsebounds') : false\r\n };\r\n\r\n if (mapElm.data('mapCenter')){\r\n const center = JSON.parse(mapElm.data('mapCenter').replace(/'/g, '\\\"'));\r\n optionsObj.mapOptions.center = center;\r\n }\r\n\r\n if (mapElm.data('mapLabels')){\r\n optionsObj.labels = JSON.parse(mapElm.data('mapLabels').replace(/'/g, '\\\"'));\r\n }\r\n\r\n if (mapElm.data('mapInfowindowTpl')) {\r\n optionsObj.infoWindowTpl = $(mapElm.data('mapInfowindowTpl'));\r\n } else {\r\n optionsObj.infoWindowTpl = mapElm.next('[class*=\"infowindow-tpl\"]');\r\n }\r\n\r\n return optionsObj;\r\n}\r\n\r\n/**\r\n * Kicks off initialization of the map\r\n * @param {object} config id's and jquery\r\n * @return {void}\r\n */\r\nfunction init(config) {\r\n if (!config.mapDivClass) {\r\n console.warn('No map div class provided. Map will not be initialized');\r\n\r\n return;\r\n }\r\n\r\n const mapElms = $(config.mapDivClass);\r\n\r\n if (!mapElms.length){\r\n return;\r\n }\r\n\r\n mapElms.on('click', '.js-office-phone-trigger', function(e){\r\n e.preventDefault();\r\n $(this).hide(0);\r\n $(this).next('.js-office-phone').show(0);\r\n });\r\n\r\n function loadSuccess(results) {\r\n const googleMapsApi = results[0];\r\n const mapElm = results[2];\r\n\r\n /** @type {object} get map options */\r\n const options = _getOptions(mapElm, googleMapsApi, { Markers: results[1] }, config);\r\n\r\n storeLocator.initialize(options);\r\n }\r\n\r\n function loadFailed(err) {\r\n console.warn('Error loading google maps API or error loading markers', err);\r\n }\r\n\r\n /** Request markers */\r\n const mapLoaded = googleMapsApiLoader({\r\n libraries: ['places'],\r\n apiKey: mapElms.data('mapApiKey')\r\n });\r\n\r\n mapElms.each(function(){\r\n const markerEndpoint = $(this).data('mapEndpoint');\r\n const markerSource = $(this).data('mapSource');\r\n\r\n if (markerSource) {\r\n /** Make sure both promises has resolved before initiating map */\r\n Promise.all([mapLoaded, markerSource, $(this)]).then(loadSuccess, loadFailed);\r\n } else if (markerEndpoint) {\r\n const markersLoaded = $.get(markerEndpoint);\r\n /** Make sure both promises has resolved before initiating map */\r\n Promise.all([mapLoaded, markersLoaded, $(this)]).then(loadSuccess, loadFailed);\r\n\r\n } else {\r\n console.warn('No endpoint defined. Map will not be initialized');\r\n }\r\n });\r\n\r\n}\r\n\r\nexport default {\r\n init\r\n};\r\n\r\n\r\n","'use strict';\r\n\r\nimport storeStartup from './storelocator.startup';\r\n\r\n/**\r\n * Store initialzier, determines which map API to use\r\n * @param {object} options\r\n * @return {void}\r\n */\r\nfunction initialize(options) {\r\n if (options.mapType === 'Google') {\r\n\r\n storeStartup.startMap(options);\r\n\r\n return;\r\n }\r\n\r\n if (options.mapType === 'Yandex') {\r\n // storeStartup.startMap(options);\r\n\r\n return;\r\n }\r\n\r\n console.warn('No map mapType matches. Map not initializing');\r\n}\r\n\r\nexport default {\r\n initialize\r\n};\r\n","'use strict';\r\n\r\nimport storeSearch from './storelocator.search';\r\nimport storeList from './storelocator.list';\r\nimport storeMarkers from './storelocator.markers';\r\nimport closestStore from './storelocator.closest-store';\r\nimport helpers from '../../Shared/helpers/index';\r\n\r\n/**\r\n * Adds eventlisteners to the map\r\n * @param {object} options\r\n * @param {object} map an instantiated map object\r\n * @return {void}\r\n */\r\nfunction _mapChangeListener (options, map) {\r\n\r\n /** Only add the idle event listener if the is a storelist to update */\r\n if (options.listDiv && options.listDiv[0]) {\r\n map.addListener('idle', storeList.getMarkersInViewport.bind(undefined, options, map));\r\n }\r\n\r\n\r\n /** Ask for user lat/lng and move map to that location */\r\n if (options.usenearme) {\r\n /** If current device supports touch, ask for geo right away */\r\n if (helpers.isTouchDevice()) {\r\n closestStore.useGeoLocation(map, options);\r\n } else {\r\n /** Otherwise, ask for it when the user does \"mouseover\" on the map */\r\n map.addListener('mouseover', closestStore.useGeoLocation.bind(undefined, map, options));\r\n }\r\n }\r\n}\r\n\r\n/**\r\n * Instantiates map\r\n * @param {object} options\r\n * @return {void}\r\n */\r\nfunction startMap(options) {\r\n const map = new options.api.maps.Map(options.mapElm[0], options.mapOptions);\r\n\r\n /** Attach event listeners */\r\n _mapChangeListener(options, map);\r\n\r\n /** Add search functionality */\r\n if (options.searchDiv && options.searchDiv[0]) {\r\n storeSearch.addSearchBox(options, map);\r\n }\r\n\r\n /** Check if markers are provided */\r\n if (options.markersArr.Markers) {\r\n storeMarkers.addMarkers(options, map);\r\n }\r\n\r\n /** Check if the whole map should me shown */\r\n if (options.usebounds) {\r\n const allowedBounds = new options.api.maps.LatLngBounds(\r\n new options.api.maps.LatLng(57.38942944437183, -78.7379201682812226),\r\n new options.api.maps.LatLng(1.69726685890506, 117.2456105979687226)\r\n );\r\n map.fitBounds(allowedBounds);\r\n }\r\n\r\n}\r\n\r\nexport default {\r\n startMap\r\n};\r\n","'use strict';\r\n\r\nimport helpers from '../helpers/index';\r\n\r\n/**\r\n * Moves the map to a new location based on a google \"place\" object\r\n * @param {object} options\r\n * @param {object} map\r\n * @param {object} place\r\n * @return {void}\r\n */\r\nfunction _moveMap (options, map, place) {\r\n\r\n if (!place.geometry || !place.geometry.location) {\r\n console.log('Place has no location:', place);\r\n console.log('Trying to fetch place via geocoder instead');\r\n\r\n _geoSearcher(options, map, place.name); //eslint-disable-line\r\n\r\n return;\r\n }\r\n\r\n /** @type {object} lat/lng object from the place */\r\n const location = place.geometry.location;\r\n\r\n /** @type {object} get lat/lng for current center of the map*/\r\n const center = new options.api.maps.LatLng(location.lat(), location.lng());\r\n\r\n /** Set map center */\r\n map.setCenter(center);\r\n\r\n /** fitBounds based on the viewport of the place */\r\n map.fitBounds(place.geometry.viewport);\r\n}\r\n\r\n/**\r\n * Search map locations via Geocoder api\r\n * @param {object} options\r\n * @param {object} map instantiated map\r\n * @param {string} searchStr string to search for\r\n * @return {void}\r\n */\r\nfunction _geoSearcher (options, map, searchStr) {\r\n /** Initialize new geocoder */\r\n const geoCoder = new options.api.maps.Geocoder();\r\n let query = searchStr;\r\n\r\n /** No inpuit provided, do not do anything */\r\n if (query === '') {\r\n return;\r\n }\r\n\r\n if (options.country) {\r\n query += ', ' + options.country;\r\n }\r\n\r\n /** Request search og bind callback */\r\n geoCoder.geocode({\r\n 'address': searchStr,\r\n 'latLng': map.getCenter()\r\n }, function (results) {\r\n /** If no results were returned do not anything else */\r\n if (results.length === 0) {\r\n return;\r\n }\r\n\r\n /** Grab the first result */\r\n _moveMap(options, map, results[0]);\r\n });\r\n}\r\n\r\n/**\r\n * Adds places search functionaliy to the map\r\n * @param {object} options\r\n * @param {object} map an instantiated google map object\r\n */\r\nfunction addSearchBox (options, map) {\r\n /** If no searchDiv is provided, do not add the search functionality */\r\n if (!options.searchDiv || !options.searchDiv[0]) {\r\n console.warn('No search element provided. Search not added to map');\r\n return;\r\n }\r\n\r\n const countryRestrict = {'country': options.countryIso};\r\n\r\n /** Create the search box and link it to the UI element. */\r\n const autocomplete = new options.api.maps.places.Autocomplete((options.searchDiv[0]), {\r\n types: ['(cities)'],\r\n componentRestrictions: countryRestrict\r\n });\r\n\r\n /**\r\n * When the user selects a city, get the place details for the city and moved the map to that place\r\n * @return {void}\r\n */\r\n function onPlaceChanged() {\r\n const place = autocomplete.getPlace();\r\n\r\n _moveMap(options, map, place);\r\n\r\n /** Update querystring when searching */\r\n if (window.history.pushState) {\r\n const newurl = window.location.protocol + '//' + window.location.host + window.location.pathname + helpers.addOrUpdateQueryString(document.location.search, 'q', place.formatted_address);\r\n window.history.pushState({path: newurl}, '', newurl);\r\n }\r\n }\r\n\r\n autocomplete.addListener('place_changed', onPlaceChanged);\r\n\r\n if (options.searchDiv[0].value && options.searchDiv[0].value !== '') {\r\n _geoSearcher(options, map, options.searchDiv[0].value);\r\n }\r\n}\r\n\r\nexport default {\r\n addSearchBox\r\n};\r\n","'use strict';\r\n\r\nimport $ from 'jquery';\r\nimport helpers from '../../Shared/helpers/index';\r\n\r\n/**\r\n * Because of the way the markup is created we need to process the markers in order til wrap every 4th of them in a div tag.\r\n * @param {array} markers array of markers\r\n * @return {array} New array containing rows with 4 stores in each.\r\n */\r\nfunction _processMarkersForList (markers) {\r\n const rows = [];\r\n let currentRow = [];\r\n\r\n rows.push(currentRow);\r\n\r\n /** Loop through markers and split them up into rows */\r\n markers.forEach(function (data, idx) {\r\n currentRow.push(data);\r\n\r\n /** Determine if we need to start a new row */\r\n if (((idx + 1) % 4) === 0) {\r\n currentRow = [];\r\n rows.push(currentRow);\r\n }\r\n });\r\n\r\n return rows;\r\n}\r\n\r\n/**\r\n * Adds a list of stores to the store list\r\n * @param {array} stores array of stores\r\n * @param {object} options\r\n */\r\nfunction _addRowOfStores (stores, options) {\r\n const rowHtml = $('
');\r\n const toplevelCountryCode = helpers.getTopLevelCountryCode();\r\n\r\n stores.forEach(function (markerData) {\r\n const storeHtml = `
\r\n

${markerData.Name}

\r\n

${markerData.Street}
${markerData.Postcode} ${markerData.City}

\r\n

${options.labels.phone} ${markerData.Phone}\r\n
\r\n ${markerData.Website}\r\n
\r\n ${options.labels.getDirections}\r\n

\r\n
`;\r\n\r\n rowHtml.append(storeHtml);\r\n });\r\n\r\n options.listDiv.append(rowHtml);\r\n}\r\n\r\nfunction _initPaging (rowsOfMarkers, options) {\r\n const pagingOptions = {\r\n page: 1,\r\n rowsOfMarkers: rowsOfMarkers\r\n };\r\n\r\n function showMoreStores () {\r\n /** Determine boundaries */\r\n pagingOptions.page++;\r\n const maxRow = pagingOptions.page * 4;\r\n const minRow = maxRow - 4;\r\n\r\n /** Loop through the rows and add them to the markup */\r\n pagingOptions.rowsOfMarkers.forEach(function (data, idx) {\r\n if (idx < minRow || idx >= maxRow) {\r\n return;\r\n }\r\n\r\n /** Add row of stores */\r\n _addRowOfStores(data, options);\r\n });\r\n\r\n /** Remove paging button if there is now more stores to show */\r\n if (maxRow >= pagingOptions.rowsOfMarkers.length) {\r\n $('#js-store-paging').off('click').remove();\r\n }\r\n }\r\n\r\n /** If there is more than 4 rows of stores to show, add the paging button */\r\n if (rowsOfMarkers.length && rowsOfMarkers.length > 4) {\r\n const btnMarkup = `
\r\n \r\n
`;\r\n\r\n $(btnMarkup).insertAfter(options.listDiv);\r\n\r\n $('#js-store-paging').on('click', showMoreStores);\r\n }\r\n}\r\n\r\n/**\r\n * Updates the list of stores (usually placed beneeth the map div)\r\n * @param {array} markers array of markers\r\n * @return {void}\r\n */\r\nfunction _updateStoreList (rowsOfMarkers, options) {\r\n /** Clear content in stores container and remove any previous eventlisteners */\r\n $('#js-store-paging').off('click').remove();\r\n options.listDiv.html('');\r\n\r\n /** Loop through the rows and generate the final markup */\r\n rowsOfMarkers.forEach(function (data, idx) {\r\n if (idx > 3) {\r\n return;\r\n }\r\n\r\n /** Add row of stores */\r\n _addRowOfStores(data, options);\r\n });\r\n}\r\n\r\n/**\r\n * Gets all markers that are currently visible in the map viewport\r\n * @param {object} options\r\n * @param {object} map an instantiated google map object\r\n * @return {void}\r\n */\r\nfunction getMarkersInViewport (options, map) {\r\n const bounds = map.getBounds();\r\n const markersInView = [];\r\n\r\n /** looping through Markers Collection */\r\n options.markersArr.Markers.forEach(function(value) {\r\n const markerData = value;\r\n const latLng = new options.api.maps.LatLng(markerData.Lat, markerData.Lng);\r\n\r\n if (bounds && bounds.contains && bounds.contains(latLng)){\r\n markersInView.push(value);\r\n }\r\n });\r\n\r\n const processedMarkers = _processMarkersForList(markersInView);\r\n\r\n /** Update the list of stores to show the ones that are in the viewport */\r\n _updateStoreList(processedMarkers, options);\r\n\r\n _initPaging(processedMarkers, options);\r\n}\r\n\r\nexport default {\r\n getMarkersInViewport\r\n};\r\n","'use strict';\r\n\r\nimport doT from 'dot';\r\n\r\n//import helpers from '../../Shared/helpers/index'; (Use for toplevelCountryCode)\r\n\r\n/**\r\n * Add cluster functionality to the map\r\n * @param {object} options\r\n * @param {object} map instantiated map\r\n * @param {array} markers array of markers\r\n */\r\nfunction _addMarkerClusterer(options, map, markers){\r\n /** @type {Object} cluster icon style */\r\n const style = Object.assign({\r\n anchor: [0, 0],\r\n // anchorIcon: [0, 0],\r\n // anchorText: [0, 0],\r\n height: 58,\r\n textColor: '#000',\r\n textSize: 14,\r\n width: 40\r\n }, JSON.parse(options.clusterOpt.replace(/'/g, '\\\"')));\r\n\r\n /**\r\n * Because we use the same styles for all cluster icons, we add the same style three times\r\n * @type {Array}\r\n */\r\n const styles = [style, style, style];\r\n\r\n /** @type {object} Create new markerClusterer */\r\n const markerClusterer = new MarkerClusterer(map, markers, { maxZoom: 8, styles: styles});\r\n\r\n return markerClusterer;\r\n}\r\n\r\nfunction customizeInfoWindow() {\r\n // Reference to the DIV which receives the contents of the infowindow\r\n const iwOuter = $('.gm-style-iw');\r\n iwOuter.prev().addClass('map-helper-class');\r\n iwOuter.parent().parent().css({left: '35px'});\r\n iwOuter.next().addClass('map-close-icon');\r\n}\r\n\r\n/**\r\n * Adds markers to the map\r\n * @param {object} options\r\n * @param {[type]} map an instantiated google map object\r\n */\r\nfunction addMarkers (options, map) {\r\n const markersOnMap = [];\r\n //const toplevelCountryCode = helpers.getTopLevelCountryCode();\r\n let markerClusterer = null; //eslint-disable-line\r\n\r\n /** Instantiate info window */\r\n const infoWindow = new options.api.maps.InfoWindow({maxWidth: 300});\r\n\r\n /** Loop thorugh all provided markers and add them to the map */\r\n options.markersArr.Markers.forEach(function(value) {\r\n const markerData = value;\r\n const latLng = new options.api.maps.LatLng(markerData.Lat, markerData.Lng);\r\n const marker = new options.api.maps.Marker({\r\n position: latLng,\r\n title: markerData.Name,\r\n icon: options.markerIcon,\r\n map: map\r\n });\r\n const infoWindowTpl = options.infoWindowTpl.html();\r\n\r\n (function (mapMarker, data, tpl) {\r\n const infoWindowContentFn = doT.template(tpl);\r\n const infoWindowContent = infoWindowContentFn(data);\r\n\r\n options.api.maps.event.addListener(mapMarker, 'click', () => {\r\n infoWindow.setContent(infoWindowContent);\r\n infoWindow.open(map, mapMarker);\r\n customizeInfoWindow();\r\n markersOnMap.forEach((item) => {\r\n item.setIcon(options.markerIcon);\r\n });\r\n mapMarker.setIcon(options.markerIconActive);\r\n });\r\n\r\n options.api.maps.event.addListener(infoWindow, 'closeclick', () => {\r\n mapMarker.setIcon(options.markerIcon);\r\n });\r\n })(marker, markerData, infoWindowTpl);\r\n\r\n markersOnMap.push(marker);\r\n });\r\n\r\n /** Add clustering to the map if there is more than one marker on the map */\r\n if (markersOnMap.length > 1) {\r\n _addMarkerClusterer(options, map, markersOnMap);\r\n }\r\n}\r\n\r\n\r\nexport default {\r\n addMarkers\r\n};\r\n","'use strict';\r\n\r\n/** Calculate radian */\r\nfunction _radian(x) {\r\n return x * Math.PI / 180;\r\n}\r\n\r\n/**\r\n * Find the nearest store using the Haversine formula: https://en.wikipedia.org/wiki/Haversine_formula\r\n * @param {object} latLntObj object containing the users lat/lng info\r\n * @param {object} map map object\r\n * @param {object} options\r\n * @return {void}\r\n */\r\nfunction _findClosestMarker(latLntObj, map, options) {\r\n const lat = latLntObj.lat;\r\n const lng = latLntObj.lng;\r\n const R = 6371; /** radius of earth in km */\r\n const distances = [];\r\n\r\n let closest = -1;\r\n\r\n options.markersArr.Markers.forEach(function(marker, idx) {\r\n const dLat = _radian(marker.Lat - lat);\r\n const dLong = _radian(marker.Lng - lng);\r\n const a = Math.sin(dLat / 2) * Math.sin(dLat / 2) + Math.cos(_radian(lat)) * Math.cos(_radian(lat)) * Math.sin(dLong / 2) * Math.sin(dLong / 2);\r\n const c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));\r\n const d = R * c;\r\n distances[idx] = d;\r\n\r\n if ( closest === -1 || d < distances[closest] ) {\r\n closest = idx;\r\n }\r\n });\r\n\r\n /** Make sure there is a shore to show */\r\n if (options.markersArr.Markers[closest]) {\r\n /** Parse lat/lng strings to numbers */\r\n const closestLat = parseFloat(options.markersArr.Markers[closest].Lat);\r\n const closestLng = parseFloat(options.markersArr.Markers[closest].Lng);\r\n\r\n /** Set new map center and zoom in */\r\n map.setCenter({lat: closestLat, lng: closestLng});\r\n map.setZoom(13);\r\n }\r\n}\r\n\r\n/**\r\n * Asks user for geo location and sets new center location based on that\r\n * @param {object} map the map object\r\n * @param {object} options\r\n * @return {void}\r\n */\r\nfunction useGeoLocation (map, options) {\r\n navigator.geolocation.getCurrentPosition(function(position) {\r\n /** Grab user location */\r\n const latitude = position.coords.latitude;\r\n const longitude = position.coords.longitude;\r\n\r\n _findClosestMarker({lat: latitude, lng: longitude}, map, options);\r\n }, function (err) { console.warn(err); }, {\r\n timeout: 5000,\r\n enableHighAccuracy: true,\r\n maximumAge: 90000\r\n });\r\n\r\n /** Remove mouseover eventlistener */\r\n options.api.maps.event.clearListeners(map, 'mouseover');\r\n}\r\n\r\nexport default {\r\n useGeoLocation\r\n};\r\n","'use strict';\r\n\r\nexport default [\r\n {\r\n 'featureType': 'administrative',\r\n 'elementType': 'labels.text.fill',\r\n 'stylers': [\r\n {\r\n 'color': '#444444'\r\n }\r\n ]\r\n },\r\n {\r\n 'featureType': 'administrative.country',\r\n 'elementType': 'geometry.stroke',\r\n 'stylers': [\r\n {\r\n 'visibility': 'on'\r\n },\r\n {\r\n 'lightness': '30'\r\n }\r\n ]\r\n },\r\n {\r\n 'featureType': 'administrative.country',\r\n 'elementType': 'labels.text',\r\n 'stylers': [\r\n {\r\n 'lightness': '30'\r\n }\r\n ]\r\n },\r\n {\r\n 'featureType': 'administrative.province',\r\n 'elementType': 'labels.text',\r\n 'stylers': [\r\n {\r\n 'lightness': '30'\r\n },\r\n {\r\n 'visibility': 'simplified'\r\n }\r\n ]\r\n },\r\n {\r\n 'featureType': 'administrative.locality',\r\n 'elementType': 'labels.text',\r\n 'stylers': [\r\n {\r\n 'visibility': 'on'\r\n },\r\n {\r\n 'lightness': '30'\r\n },\r\n {\r\n 'saturation': '-100'\r\n }\r\n ]\r\n },\r\n {\r\n 'featureType': 'administrative.neighborhood',\r\n 'elementType': 'labels',\r\n 'stylers': [\r\n {\r\n 'visibility': 'off'\r\n }\r\n ]\r\n },\r\n {\r\n 'featureType': 'administrative.neighborhood',\r\n 'elementType': 'labels.text',\r\n 'stylers': [\r\n {\r\n 'visibility': 'off'\r\n }\r\n ]\r\n },\r\n {\r\n 'featureType': 'landscape',\r\n 'elementType': 'all',\r\n 'stylers': [\r\n {\r\n 'color': '#f2f2f2'\r\n }\r\n ]\r\n },\r\n {\r\n 'featureType': 'poi',\r\n 'elementType': 'all',\r\n 'stylers': [\r\n {\r\n 'visibility': 'off'\r\n }\r\n ]\r\n },\r\n {\r\n 'featureType': 'road',\r\n 'elementType': 'all',\r\n 'stylers': [\r\n {\r\n 'saturation': -100\r\n },\r\n {\r\n 'lightness': 45\r\n }\r\n ]\r\n },\r\n {\r\n 'featureType': 'road.highway',\r\n 'elementType': 'all',\r\n 'stylers': [\r\n {\r\n 'visibility': 'simplified'\r\n }\r\n ]\r\n },\r\n {\r\n 'featureType': 'road.highway',\r\n 'elementType': 'labels',\r\n 'stylers': [\r\n {\r\n 'visibility': 'off'\r\n }\r\n ]\r\n },\r\n {\r\n 'featureType': 'road.arterial',\r\n 'elementType': 'labels.icon',\r\n 'stylers': [\r\n {\r\n 'visibility': 'off'\r\n }\r\n ]\r\n },\r\n {\r\n 'featureType': 'transit',\r\n 'elementType': 'all',\r\n 'stylers': [\r\n {\r\n 'visibility': 'off'\r\n }\r\n ]\r\n },\r\n {\r\n 'featureType': 'transit.line',\r\n 'elementType': 'labels',\r\n 'stylers': [\r\n {\r\n 'visibility': 'off'\r\n }\r\n ]\r\n },\r\n {\r\n 'featureType': 'water',\r\n 'elementType': 'all',\r\n 'stylers': [\r\n {\r\n 'color': '#a8dce8'\r\n },\r\n {\r\n 'visibility': 'on'\r\n }\r\n ]\r\n },\r\n {\r\n 'featureType': 'water',\r\n 'elementType': 'labels',\r\n 'stylers': [\r\n {\r\n 'visibility': 'off'\r\n }\r\n ]\r\n },\r\n {\r\n 'featureType': 'water',\r\n 'elementType': 'labels.text',\r\n 'stylers': [\r\n {\r\n 'visibility': 'off'\r\n }\r\n ]\r\n }\r\n];\r\n","'use strict';\r\n\r\nimport mobileMenu from './menu.mobile.js';\r\nimport desktopMenu from './menu.desktop.js';\r\nimport languageSwitcherMenu from './menu.languageswitcher.js';\r\n\r\nexport default {\r\n mobileMenu,\r\n desktopMenu,\r\n languageSwitcherMenu\r\n};\r\n","'use strict';\r\n\r\nimport $ from 'jquery';\r\n\r\n\r\n/**\r\n* mobile nagvigation\r\n* @param {string} scope [css selector]\r\n* @return {undefined} [nothing returned]\r\n*/\r\nexport default function menuMobile(scope){\r\n\r\n const elm = $(scope);\r\n\r\n function toggleMenu(){\r\n elm.toggleClass('active').slideToggle(100, () => {\r\n $('body').toggleClass('menu-open');\r\n });\r\n }\r\n\r\n // Toggle open/hide mega menu on table and down.\r\n // This line add position fixed to body for could only inside menu.\r\n $('.main-nav-mobile__top-close-menu, .site-header__burger-menu').on('click', function() {\r\n toggleMenu();\r\n });\r\n\r\n elm.on('click', 'a', function(e){\r\n const link = $(e.target);\r\n if (link.attr('href') && link.attr('href').indexOf('#') === 0) {\r\n $('body').toggleClass('menu-open');\r\n elm.toggleClass('active').slideToggle(100);\r\n }\r\n });\r\n\r\n // Toggle for under levels on menu\r\n elm.find('a:not(.main-nav-mobile__top-close-menu)').on('click', 'svg', function() {\r\n $(this).parents('li').first().toggleClass('active').find('ul').first().slideToggle();\r\n\r\n return false;\r\n });\r\n}\r\n","'use strict';\r\n\r\nimport $ from 'jquery';\r\n\r\nexport default function menuDesktop(){\r\n\r\n // DEPARTMENTS NAVIGATION\r\n\r\n const deps = $('.main-nav-departments');\r\n const depItems = $('.main-nav-departments__item', deps);\r\n const depLinks = $('.main-nav-departments__link', deps);\r\n const depDDLs = $('.main-nav-departments__dropdown', deps);\r\n const depDDLLinks = $('a', depDDLs);\r\n\r\n function hideDepDDLs() {\r\n depLinks.removeClass('active');\r\n }\r\n\r\n depLinks.on('click', function(e){\r\n\r\n const target = e.target;\r\n const hasDDL = $(target).siblings().filter('.main-nav-departments__dropdown').length !== 0;\r\n\r\n depLinks.each(function(){\r\n if (this !== target) {\r\n $(this).removeClass('active');\r\n } else if ($(this).hasClass('active')) {\r\n $(this).removeClass('active');\r\n } else if (hasDDL) {\r\n e.preventDefault();\r\n $(this).addClass('active');\r\n }\r\n });\r\n });\r\n\r\n depDDLLinks.on('click', function(){\r\n hideDepDDLs();\r\n });\r\n\r\n $('body').on('click', function(e){\r\n if (depItems.find(e.target).length === 0) {\r\n hideDepDDLs();\r\n }\r\n });\r\n\r\n // AREAS NAVIGATION\r\n\r\n const areas = $('.main-nav-areas');\r\n const areaItems = $('.main-nav-areas__item', areas);\r\n const areaLinks = $('.main-nav-areas__link', areas);\r\n const areaDDLs = $('.areas__dd', areas);\r\n\r\n function hideAreaDDL($link){\r\n $link.removeClass('active');\r\n const $ddl = $link.siblings().filter('.areas__dd');\r\n $ddl.trigger('ddl.disappear');\r\n }\r\n\r\n function hideAreaDDLs() {\r\n areaLinks.each(function(){\r\n hideAreaDDL($(this));\r\n });\r\n }\r\n\r\n areaLinks.on('click', function(e){\r\n const $link = $(this);\r\n const $ddl = $link.siblings().filter('.areas__dd');\r\n const hasDDL = $ddl.length !== 0;\r\n\r\n areaLinks.each(function(){\r\n const $areaLink = $(this);\r\n if (!$areaLink.is($link)) {\r\n hideAreaDDL($areaLink);\r\n } else if (hasDDL) {\r\n e.preventDefault();\r\n if ($link.hasClass('active')) {\r\n hideAreaDDL($areaLink);\r\n } else {\r\n $areaLink.addClass('active');\r\n // levels init\r\n $ddl.trigger('ddl.appear');\r\n }\r\n }\r\n });\r\n });\r\n\r\n areaDDLs.each(function(){\r\n const $ddl = $(this);\r\n const $levels = $('.areas__level', $ddl);\r\n const $rootLevel = $levels.filter('[data-level=\"1\"]');\r\n const $levelLinks = $('.areas__level-list-link[data-level]', $ddl);\r\n const $levelBacks = $('.areas__level-info-back[data-level]', $ddl);\r\n\r\n function setDDLHeight($elm){\r\n let height = 0;\r\n const $listItems = $elm.find('> .areas__level-list > li');\r\n $listItems.each(function(){\r\n height += $(this).height();\r\n });\r\n $ddl.height(height);\r\n }\r\n\r\n $ddl.on('ddl.appear', function(){\r\n $(this).attr('data-move', 1);\r\n setDDLHeight($rootLevel);\r\n $rootLevel.addClass('active');\r\n });\r\n\r\n $ddl.on('ddl.disappear', function(){\r\n $levels.removeClass('active').removeClass('boom');\r\n $(this).attr('data-move', 1);\r\n });\r\n\r\n $levelLinks.on('click', function(e){\r\n e.preventDefault();\r\n const $link = $(this);\r\n const $currentLevel = $link.closest('.areas__level');\r\n $currentLevel.addClass('boom');\r\n const $targetLevel = $link.siblings('.areas__level');\r\n $targetLevel.addClass('active');\r\n setDDLHeight($targetLevel);\r\n $ddl.attr('data-move', $link.data('level'));\r\n });\r\n\r\n $levelBacks.on('click', function(e){\r\n e.preventDefault();\r\n const $back = $(this);\r\n const $currentLevel = $back.closest('.areas__level');\r\n $currentLevel.removeClass('active');\r\n const $targetLevel = $back.closest('.areas__level[data-level=\"' + $back.data('level') + '\"]');\r\n $targetLevel.removeClass('boom');\r\n setDDLHeight($targetLevel);\r\n $ddl.attr('data-move', $back.data('level'));\r\n });\r\n });\r\n\r\n $('body').on('click', function(e){\r\n if (areaItems.find(e.target).length === 0) {\r\n hideAreaDDLs();\r\n }\r\n });\r\n\r\n // subitem preview on hover\r\n const $previewLinks = areaItems.find('.preview-level');\r\n\r\n // hover on extended links toggles data attribute\r\n $previewLinks.hover(\r\n function(e) {\r\n const $this = $(this);\r\n const $previews = $this.parent('ul').find('> .preview-level');\r\n let level = 0;\r\n\r\n // locate the index of the preview withion relevant siblings\r\n $previews.each(function(index, item) {\r\n if ($(item).is($this)) {\r\n level = index;\r\n return;\r\n }\r\n });\r\n\r\n const $sub = $this.closest('.areas__level').find('.submenu-level-preview').eq(level);\r\n $sub.addClass('active');\r\n \r\n },\r\n function(e) {\r\n const $this = $(this);\r\n $this.parents('.areas__level').find('.submenu-level-preview').removeClass('active');\r\n }\r\n );\r\n}\r\n","'use strict';\r\n\r\nimport $ from 'jquery';\r\n\r\nexport default function menuTracking(){\r\n\r\n const trackingLinks = $('.js-track-language');\r\n if (trackingLinks.length < 1) return;\r\n\r\n trackingLinks.on('click', function(e) {\r\n e.preventDefault();\r\n const $this = $(this);\r\n\r\n document.location = $this.attr('href');\r\n });\r\n}\r\n","'use strict';\r\n\r\nimport $ from 'jquery';\r\nimport 'select2';\r\n\r\nexport function init(scope) {\r\n function formatState(state) {\r\n if (!state.id) {\r\n return state.text;\r\n } else if (state.element.dataset.select2Flag) {\r\n // return $('' + state.text + '');\r\n return $('' + state.text + '');\r\n }\r\n return state.text;\r\n }\r\n\r\n $(scope).select2({\r\n templateResult: formatState,\r\n templateSelection: formatState,\r\n minimumResultsForSearch: Infinity\r\n });\r\n}\r\n\r\nexport default {\r\n init\r\n};\r\n","'use strict';\r\n\r\nimport $ from 'jquery';\r\nimport { formReset, showAlert, hideAlerts, hideLightbox } from '../../Shared/lightbox/lightbox.heplers';\r\n\r\n\r\nfunction init(config) {\r\n if (!config.formCssSelector || $(config.formCssSelector).length === 0) {\r\n // console.warn('No form id provided. Form will not be initialized', config.formCssSelector);\r\n\r\n return;\r\n }\r\n\r\n const form = $(config.formCssSelector);\r\n\r\n // Disable scroll when focused on a number input.\r\n form.on('focus', 'input[type=number]', function() {\r\n $(this).on('wheel', function(e) {\r\n e.preventDefault();\r\n });\r\n });\r\n\r\n // Restore scroll on number inputs.\r\n form.on('blur', 'input[type=number]', function() {\r\n $(this).off('wheel');\r\n });\r\n\r\n // Disable up and down keys.\r\n form.on('keydown', 'input[type=number]', function(e) {\r\n if (e.which === 38 || e.which === 40) {\r\n e.preventDefault();\r\n }\r\n });\r\n\r\n // Form submit\r\n form.submit(function(e) {\r\n e.preventDefault();\r\n\r\n const formElm = $(this);\r\n const lightboxElm = formElm.closest('.contact__form');\r\n const errorsContainerElm = formElm.find('.form__errors');\r\n const loader = formElm.find('.js-loader');\r\n const recaptchaDisabled = formElm.find('.js-recaptcha').attr(\"data-disabled\");\r\n\r\n if (recaptchaDisabled === \"True\" || typeof grecaptcha === 'undefined') {\r\n formElm.find('.' + config.fieldErrorCssClass).removeClass(config.fieldErrorCssClass);\r\n errorsContainerElm.empty();\r\n hideAlerts(formElm);\r\n\r\n if (!formElm.hasClass('js-disabled')) {\r\n formElm.addClass('js-disabled');\r\n\r\n if (loader != null && !loader.hasClass('lds-ripple')) {\r\n loader.addClass('lds-ripple');\r\n }\r\n const url = formElm.attr('action');\r\n const serializedData = formElm.serialize();\r\n\r\n // post via ajax\r\n $.post(url, serializedData).done(function(data) { \r\n if (!data.success) {\r\n \r\n if (data.errorType == 'missingFieldsError'){\r\n showAlert(formElm, '.alert--danger');\r\n data.fields.forEach(function(item) {\r\n const inputElm = formElm.find('[name=\"' + item + '\"]');\r\n const errorText = inputElm.data('errorText');\r\n inputElm.parent().addClass(config.fieldErrorCssClass);\r\n if (errorText !== null && errorText !== '') {\r\n errorsContainerElm.append('
  • ' + inputElm.data('errorText') + '
  • ');\r\n }\r\n });\r\n }\r\n if (data.errorType == 'captchaError')\r\n {\r\n showAlert(formElm, '.alert--dangerCaptcha');\r\n }\r\n } else {\r\n if (formElm.hasClass('js-ajax-form-academy-toolbar')) {\r\n if (window.dataLayer !== undefined) {\r\n window.dataLayer.push({\r\n 'event': 'newsletterSignup'\r\n });\r\n } \r\n\r\n }\r\n if (formElm.hasClass('js-ajax-form-contact')) {\r\n if (window.dataLayer !== undefined) {\r\n window.dataLayer.push({\r\n 'event': 'contactFormSubmit' + formElm.data('trigger')\r\n });\r\n }\r\n\r\n }\r\n formReset(formElm, 'form-validation--error');\r\n showAlert(formElm, '.alert--success');\r\n formElm.find(\".form__row\").hide();\r\n formElm.find(\".btn-row\").hide();\r\n formElm.addClass(\"form-status--success\");\r\n \r\n\r\n if (lightboxElm.length) {\r\n setTimeout(function() {\r\n lightboxElm.addClass('hidden');\r\n hideLightbox();\r\n }, 10000);\r\n }\r\n if (config.successFn) {\r\n config.successFn();\r\n }\r\n }\r\n }).fail(function() {\r\n showAlert(formElm, '.alert--dangerServerError');\r\n }).always(function() {\r\n formElm.removeClass('js-disabled');\r\n loader.removeClass('lds-ripple');\r\n\r\n /* TODO: Hacked by a backender */\r\n if (ContactCaptcha != null) {\r\n ContactCaptcha.ReloadImage();\r\n }\r\n });\r\n }\r\n } else {\r\n // recaptcha v3\r\n grecaptcha.ready(function() {\r\n grecaptcha.execute('6LdnLqgUAAAAAOC1Gp8qi-cEl-inU-ZKO_XwFRbZ', { action: 'contact' }).then(function(token) {\r\n //console.log(\"grecaptcha.execute\" + token)\r\n formElm.find('.' + config.fieldErrorCssClass).removeClass(config.fieldErrorCssClass);\r\n errorsContainerElm.empty();\r\n hideAlerts(formElm);\r\n\r\n if (!formElm.hasClass('js-disabled')) {\r\n formElm.addClass('js-disabled');\r\n\r\n if (loader != null && !loader.hasClass('lds-ripple')) {\r\n loader.addClass('lds-ripple');\r\n }\r\n\r\n const url = formElm.attr('action');\r\n const serializedData = formElm.serialize() + '&token=' + token; // extend the serialized data with the recaptcha token\r\n\r\n // post via ajax\r\n $.post(url, serializedData).done(function(data) {\r\n if (!data.success) {\r\n if (data.errorType == 'missingFieldsError'){\r\n showAlert(formElm, '.alert--danger');\r\n data.fields.forEach(function(item) {\r\n const inputElm = formElm.find('[name=\"' + item + '\"]');\r\n const errorText = inputElm.data('errorText');\r\n inputElm.parent().addClass(config.fieldErrorCssClass);\r\n if (errorText !== null && errorText !== '') {\r\n errorsContainerElm.append('
  • ' + inputElm.data('errorText') + '
  • ');\r\n }\r\n });\r\n }\r\n if (data.errorType == 'captchaError'){\r\n showAlert(formElm, '.alert--dangerCaptcha');\r\n }\r\n } \r\n else {\r\n if (formElm.hasClass('js-ajax-form-academy-toolbar')) {\r\n if (window.dataLayer !== undefined) {\r\n window.dataLayer.push({\r\n 'event': 'newsletterSignup'\r\n });\r\n }\r\n\r\n }\r\n if (formElm.hasClass('js-ajax-form-contact')) {\r\n if (window.dataLayer !== undefined) {\r\n window.dataLayer.push({\r\n 'event': 'contactFormSubmit' + formElm.data('trigger')\r\n });\r\n }\r\n }\r\n formReset(formElm, 'form-validation--error');\r\n showAlert(formElm, '.alert--success');\r\n formElm.find(\".form__row\").hide();\r\n formElm.find(\".btn-row\").hide();\r\n formElm.find(\".alert-text\").hide();\r\n \r\n if (lightboxElm.length) {\r\n setTimeout(function() {\r\n lightboxElm.addClass('hidden');\r\n hideLightbox();\r\n }, 10000);\r\n }\r\n if (config.successFn) {\r\n config.successFn();\r\n }\r\n }\r\n }).fail(function() {\r\n showAlert(formElm, '.alert--dangerServerError');\r\n }).always(function() {\r\n formElm.removeClass('js-disabled');\r\n loader.removeClass('lds-ripple');\r\n });\r\n }\r\n\r\n });\r\n });\r\n }\r\n });\r\n}\r\n\r\nexport default {\r\n init\r\n};","'use strict';\r\n\r\nimport filter from './academy.filter.js';\r\n// import showMore from './academy.showmore.js';\r\nimport toggle from './academy.toggle.js';\r\nimport timeParser from './academy.timeparser.js';\r\nimport tracking from './academy.tracking.js';\r\n\r\nexport default {\r\n toggle,\r\n // showMore,\r\n filter,\r\n timeParser,\r\n tracking\r\n};\r\n","'use strict';\r\n\r\nimport $ from 'jquery';\r\n\r\nexport function init(scope) {\r\n\r\n $(scope).each(function(){\r\n\r\n // ELEMENTS\r\n\r\n const section = $(this);\r\n const sectionId = section.attr('id');\r\n const filter = section.find(scope + '-filter');\r\n const filterId = filter.data('id');\r\n const filterAction = filter.data('url');\r\n const filterDDLs = filter.find('select');\r\n const optionsList = section.find(scope + '-options').hide();\r\n const optionsClear = section.find(scope + '-options-clear');\r\n const coursesTable = section.find(scope + '-container');\r\n const listEmpty = $(scope + '-empty');\r\n const btnShowMore = section.find(scope + '-show-more');\r\n const listCounter = $(scope + '-counter');\r\n\r\n // DATA\r\n\r\n let filterOptions = [];\r\n\r\n // FUNCTIONS\r\n\r\n function getFilterOptions() {\r\n // console.log('getFilterOptions');\r\n const options = $.map(filterDDLs.find('option'), function(item){\r\n const option = $(item);\r\n const optionData = {\r\n select: option.parent().attr('name'),\r\n text: option.text(),\r\n value: option.val(),\r\n isSelected: false\r\n };\r\n return optionData;\r\n });\r\n filterOptions = options;\r\n }\r\n\r\n function setFilterOption(select, value, isSelected){\r\n $.each(filterOptions, function(idx, item){\r\n if (item.select === select && item.value === value) {\r\n item.isSelected = isSelected;\r\n }\r\n });\r\n }\r\n\r\n function getCurrentState() {\r\n return {\r\n filterOptions: filterOptions,\r\n listHtml: coursesTable.html(),\r\n listCounter: listCounter.text(),\r\n scrollTop: $(window).scrollTop()\r\n };\r\n }\r\n\r\n function updateFilter(){\r\n // console.log('updateFilter');\r\n // clear filter\r\n filterDDLs.empty();\r\n optionsList.find('.js-academy-list-options-item').remove();\r\n // fill options and filter\r\n $.each(filterOptions, function(idx, item){\r\n if (!item.isSelected) {\r\n filterDDLs\r\n .filter('[name=\"' + item.select + '\"]')\r\n .append('');\r\n } else {\r\n const el = '
  • ' + item.text + '
  • ';\r\n optionsClear\r\n .parent()\r\n .before(el);\r\n }\r\n });\r\n if ($('.js-academy-list-options-item').length) {\r\n optionsList.show();\r\n } else {\r\n optionsList.hide();\r\n }\r\n }\r\n\r\n function getCourses(){\r\n const getOptions = {\r\n moduleId: filterId,\r\n count: coursesTable.find('.courses__item').length\r\n };\r\n $.each(filterOptions, function(idx, item){\r\n const fieldName = item.select;\r\n if (!getOptions[fieldName]) {\r\n getOptions[fieldName] = [];\r\n }\r\n if (item.isSelected) {\r\n getOptions[fieldName].push(item.value);\r\n }\r\n });\r\n\r\n // console.log('getCourses', getOptions);\r\n jQuery.ajaxSettings.traditional = true;\r\n $.get(filterAction, getOptions, function(data){\r\n if (data.totalCount === 0) {\r\n coursesTable.hide();\r\n listEmpty.show();\r\n btnShowMore.hide();\r\n } else {\r\n coursesTable.show();\r\n coursesTable.append(data.html);\r\n window.App.academy.timeParser();\r\n listEmpty.hide();\r\n if (data.shownCount < data.totalCount) {\r\n btnShowMore.show();\r\n listCounter.text(data.shownCount + '/' + data.totalCount);\r\n } else {\r\n btnShowMore.hide();\r\n }\r\n }\r\n const currentState = getCurrentState();\r\n history.replaceState(currentState, null, window.location.origin + window.location.pathname + window.location.search + window.location.hash);\r\n });\r\n }\r\n\r\n function updateList(){\r\n // console.log('updateList');\r\n coursesTable.empty();\r\n getCourses();\r\n }\r\n\r\n function pushNewState(){\r\n let searchString = window.location.origin + window.location.pathname + '?';\r\n searchString += $.map(filterOptions, function(item){\r\n let f = null;\r\n if (item.isSelected) {\r\n f = item.select + '=' + item.value;\r\n }\r\n return f;\r\n }).join('&');\r\n if (sectionId) {\r\n searchString += '#' + sectionId;\r\n }\r\n // console.log('event: filter changed', searchString);\r\n const currentState = getCurrentState();\r\n history.replaceState(currentState, null, searchString);\r\n updateFilter();\r\n updateList();\r\n }\r\n\r\n function updateFilterOptions(){\r\n const state = history.state;\r\n if (state !== null && state.filterOptions.length !== 0) {\r\n // console.log('update options from state', history.state);\r\n filterOptions = state.filterOptions;\r\n updateFilter();\r\n if (state.listHtml.length) {\r\n coursesTable.html(state.listHtml);\r\n window.App.academy.timeParser();\r\n if (state.listCounter) {\r\n listCounter.text(state.listCounter);\r\n }\r\n if (state.scrollTop) {\r\n $(window).scrollTop(state.scrollTop);\r\n }\r\n } else {\r\n updateList();\r\n }\r\n } else {\r\n // console.log('update options from URL search');\r\n const searchString = window.location.search.replace('?', '');\r\n if (searchString.length) {\r\n const searchArray = searchString.split('&');\r\n const searchObj = {};\r\n $.each(searchArray, function(idx, item) {\r\n const itemData = item.split('=');\r\n const itemKey = itemData[0];\r\n const itemValue = itemData[1];\r\n if (!searchObj[itemKey]) {\r\n searchObj[itemKey] = [];\r\n }\r\n searchObj[itemKey].push(itemValue);\r\n });\r\n // console.log('searchObj', searchObj);\r\n $.each(filterOptions, function(idx, item){\r\n if (searchObj[item.select]) {\r\n if (searchObj[item.select].indexOf(item.value) >= 0) {\r\n item.isSelected = true;\r\n }\r\n } else {\r\n item.isSelected = false;\r\n }\r\n });\r\n updateFilter();\r\n updateList();\r\n }\r\n }\r\n }\r\n\r\n // EVENTS\r\n\r\n // initial filter\r\n $(document).ready(function(){\r\n // console.log('PAGELOAD');\r\n getFilterOptions();\r\n updateFilterOptions();\r\n });\r\n\r\n // change filter dropdown\r\n filterDDLs.on('change', function(){\r\n // console.log('FILTERCHANGED');\r\n const select = $(this);\r\n const selectName = select.attr('name');\r\n const selectValue = select.val();\r\n if (selectValue !== '') {\r\n setFilterOption(selectName, selectValue, true);\r\n pushNewState();\r\n }\r\n });\r\n\r\n // remove filter item\r\n optionsList.on('click', '.js-academy-list-options-remove', function(e){\r\n // console.log('REMOVEOPTION');\r\n e.preventDefault();\r\n const elem = $(this);\r\n const elemSelect = elem.data('select');\r\n const elemValue = elem.data('value');\r\n\r\n setFilterOption(elemSelect, elemValue, false);\r\n pushNewState();\r\n });\r\n\r\n // clear filter\r\n optionsClear.on('click', function(e){\r\n // console.log('CLEARFILTER');\r\n e.preventDefault();\r\n $.each(filterOptions, function(idx, item){\r\n item.isSelected = false;\r\n });\r\n pushNewState();\r\n });\r\n\r\n // history back / forward event\r\n window.onpopstate = function(){\r\n // console.log('POPSTATE');\r\n updateFilterOptions();\r\n };\r\n\r\n // save position before leave the page\r\n window.onbeforeunload = function(){\r\n const currentState = getCurrentState();\r\n history.replaceState(currentState, null, window.location.search + window.location.hash);\r\n // console.log('BEFOREUNLOAD', history.state);\r\n };\r\n\r\n // show more courses\r\n btnShowMore.on('click', function(){\r\n // console.log('LOADMORE');\r\n getCourses();\r\n });\r\n\r\n });\r\n\r\n}\r\n\r\nexport default {\r\n init\r\n};\r\n","'use strict';\r\n\r\nimport $ from 'jquery';\r\n\r\nexport default function toggle(scope) {\r\n\r\n $(scope.table).each(function(){\r\n\r\n const table = $(this);\r\n\r\n table.on('click', scope.toggle, function(e){\r\n const row = $(e.target).parent().parent();\r\n const btns = row.find(scope.toggle);\r\n const description = row.find(scope.description);\r\n\r\n btns.each(function(){\r\n const btn = $(this);\r\n const btnActiveClass = scope.toggle + '--active';\r\n const text = btn.data('text') ? btn.data('text') : 'More';\r\n const textActive = btn.data('textActive') ? btn.data('textActive') : 'Less';\r\n\r\n if (!btn.hasClass(btnActiveClass)) {\r\n btn.addClass(btnActiveClass);\r\n btn.text(textActive);\r\n description.slideDown();\r\n } else {\r\n btn.removeClass(btnActiveClass);\r\n btn.text(text);\r\n description.slideUp();\r\n }\r\n });\r\n });\r\n });\r\n}\r\n","'use strict';\r\n\r\nimport moment from 'moment';\r\nimport 'moment-timezone';\r\n// en is default locale\r\nimport 'moment/locale/en-gb'; // en-GB\r\nimport 'moment/locale/de'; // de\r\nimport 'moment/locale/ja'; // js\r\nimport 'moment/locale/zh-cn'; // zh\r\nimport 'moment/locale/fr'; // fr\r\nimport 'moment/locale/es'; // es\r\n\r\nexport default function timeparser(){\r\n\r\n const timeElements = $('time');\r\n let currentSiteLanguage = 'en';\r\n currentSiteLanguage = $('html').attr('lang').toLowerCase();\r\n currentSiteLanguage = currentSiteLanguage === 'zh' ? 'zh-cn' : currentSiteLanguage;\r\n currentSiteLanguage = currentSiteLanguage === 'ja' ? 'ja-jp' : currentSiteLanguage;\r\n moment.locale(currentSiteLanguage);\r\n\r\n timeElements.each(function(){\r\n const $timeElement = $(this);\r\n const utcDateString = $timeElement.data('utc-date');\r\n var localDateString = moment.utc(utcDateString).local().format('DD MMMM, HH:mm z');\r\n const timeZoneString = moment.tz(moment.tz.guess()).zoneAbbr();\r\n var dateWithTimezoneString = `${localDateString} (${timeZoneString})`;\r\n \r\n if(currentSiteLanguage === \"ja-jp\"){\r\n localDateString = moment.utc(utcDateString).tz('Asia/Tokyo').format('LLL');\r\n dateWithTimezoneString = `${localDateString} (JST)`;\r\n }\r\n\r\n if (localDateString !== null){\r\n $timeElement.text(dateWithTimezoneString);\r\n }\r\n });\r\n}\r\n","var map = {\n\t\"./af\": 103,\n\t\"./af.js\": 103,\n\t\"./ar\": 104,\n\t\"./ar-ma\": 105,\n\t\"./ar-ma.js\": 105,\n\t\"./ar-sa\": 106,\n\t\"./ar-sa.js\": 106,\n\t\"./ar-tn\": 107,\n\t\"./ar-tn.js\": 107,\n\t\"./ar.js\": 104,\n\t\"./az\": 108,\n\t\"./az.js\": 108,\n\t\"./be\": 109,\n\t\"./be.js\": 109,\n\t\"./bg\": 110,\n\t\"./bg.js\": 110,\n\t\"./bn\": 111,\n\t\"./bn.js\": 111,\n\t\"./bo\": 112,\n\t\"./bo.js\": 112,\n\t\"./br\": 113,\n\t\"./br.js\": 113,\n\t\"./bs\": 114,\n\t\"./bs.js\": 114,\n\t\"./ca\": 115,\n\t\"./ca.js\": 115,\n\t\"./cs\": 116,\n\t\"./cs.js\": 116,\n\t\"./cv\": 117,\n\t\"./cv.js\": 117,\n\t\"./cy\": 118,\n\t\"./cy.js\": 118,\n\t\"./da\": 119,\n\t\"./da.js\": 119,\n\t\"./de\": 83,\n\t\"./de-at\": 120,\n\t\"./de-at.js\": 120,\n\t\"./de.js\": 83,\n\t\"./dv\": 121,\n\t\"./dv.js\": 121,\n\t\"./el\": 122,\n\t\"./el.js\": 122,\n\t\"./en-au\": 123,\n\t\"./en-au.js\": 123,\n\t\"./en-ca\": 124,\n\t\"./en-ca.js\": 124,\n\t\"./en-gb\": 84,\n\t\"./en-gb.js\": 84,\n\t\"./en-ie\": 125,\n\t\"./en-ie.js\": 125,\n\t\"./en-nz\": 126,\n\t\"./en-nz.js\": 126,\n\t\"./eo\": 127,\n\t\"./eo.js\": 127,\n\t\"./es\": 85,\n\t\"./es.js\": 85,\n\t\"./et\": 128,\n\t\"./et.js\": 128,\n\t\"./eu\": 129,\n\t\"./eu.js\": 129,\n\t\"./fa\": 130,\n\t\"./fa.js\": 130,\n\t\"./fi\": 131,\n\t\"./fi.js\": 131,\n\t\"./fo\": 132,\n\t\"./fo.js\": 132,\n\t\"./fr\": 86,\n\t\"./fr-ca\": 133,\n\t\"./fr-ca.js\": 133,\n\t\"./fr-ch\": 134,\n\t\"./fr-ch.js\": 134,\n\t\"./fr.js\": 86,\n\t\"./fy\": 135,\n\t\"./fy.js\": 135,\n\t\"./gd\": 136,\n\t\"./gd.js\": 136,\n\t\"./gl\": 137,\n\t\"./gl.js\": 137,\n\t\"./he\": 138,\n\t\"./he.js\": 138,\n\t\"./hi\": 139,\n\t\"./hi.js\": 139,\n\t\"./hr\": 140,\n\t\"./hr.js\": 140,\n\t\"./hu\": 141,\n\t\"./hu.js\": 141,\n\t\"./hy-am\": 142,\n\t\"./hy-am.js\": 142,\n\t\"./id\": 143,\n\t\"./id.js\": 143,\n\t\"./is\": 144,\n\t\"./is.js\": 144,\n\t\"./it\": 145,\n\t\"./it.js\": 145,\n\t\"./ja\": 87,\n\t\"./ja.js\": 87,\n\t\"./jv\": 146,\n\t\"./jv.js\": 146,\n\t\"./ka\": 147,\n\t\"./ka.js\": 147,\n\t\"./kk\": 148,\n\t\"./kk.js\": 148,\n\t\"./km\": 149,\n\t\"./km.js\": 149,\n\t\"./ko\": 150,\n\t\"./ko.js\": 150,\n\t\"./lb\": 151,\n\t\"./lb.js\": 151,\n\t\"./lo\": 152,\n\t\"./lo.js\": 152,\n\t\"./lt\": 153,\n\t\"./lt.js\": 153,\n\t\"./lv\": 154,\n\t\"./lv.js\": 154,\n\t\"./me\": 155,\n\t\"./me.js\": 155,\n\t\"./mk\": 156,\n\t\"./mk.js\": 156,\n\t\"./ml\": 157,\n\t\"./ml.js\": 157,\n\t\"./mr\": 158,\n\t\"./mr.js\": 158,\n\t\"./ms\": 159,\n\t\"./ms-my\": 160,\n\t\"./ms-my.js\": 160,\n\t\"./ms.js\": 159,\n\t\"./my\": 161,\n\t\"./my.js\": 161,\n\t\"./nb\": 162,\n\t\"./nb.js\": 162,\n\t\"./ne\": 163,\n\t\"./ne.js\": 163,\n\t\"./nl\": 164,\n\t\"./nl.js\": 164,\n\t\"./nn\": 165,\n\t\"./nn.js\": 165,\n\t\"./pl\": 166,\n\t\"./pl.js\": 166,\n\t\"./pt\": 167,\n\t\"./pt-br\": 168,\n\t\"./pt-br.js\": 168,\n\t\"./pt.js\": 167,\n\t\"./ro\": 169,\n\t\"./ro.js\": 169,\n\t\"./ru\": 170,\n\t\"./ru.js\": 170,\n\t\"./se\": 171,\n\t\"./se.js\": 171,\n\t\"./si\": 172,\n\t\"./si.js\": 172,\n\t\"./sk\": 173,\n\t\"./sk.js\": 173,\n\t\"./sl\": 174,\n\t\"./sl.js\": 174,\n\t\"./sq\": 175,\n\t\"./sq.js\": 175,\n\t\"./sr\": 176,\n\t\"./sr-cyrl\": 177,\n\t\"./sr-cyrl.js\": 177,\n\t\"./sr.js\": 176,\n\t\"./sv\": 178,\n\t\"./sv.js\": 178,\n\t\"./sw\": 179,\n\t\"./sw.js\": 179,\n\t\"./ta\": 180,\n\t\"./ta.js\": 180,\n\t\"./te\": 181,\n\t\"./te.js\": 181,\n\t\"./th\": 182,\n\t\"./th.js\": 182,\n\t\"./tl-ph\": 183,\n\t\"./tl-ph.js\": 183,\n\t\"./tlh\": 184,\n\t\"./tlh.js\": 184,\n\t\"./tr\": 185,\n\t\"./tr.js\": 185,\n\t\"./tzl\": 186,\n\t\"./tzl.js\": 186,\n\t\"./tzm\": 187,\n\t\"./tzm-latn\": 188,\n\t\"./tzm-latn.js\": 188,\n\t\"./tzm.js\": 187,\n\t\"./uk\": 189,\n\t\"./uk.js\": 189,\n\t\"./uz\": 190,\n\t\"./uz.js\": 190,\n\t\"./vi\": 191,\n\t\"./vi.js\": 191,\n\t\"./zh-cn\": 88,\n\t\"./zh-cn.js\": 88,\n\t\"./zh-tw\": 192,\n\t\"./zh-tw.js\": 192\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 303;","'use strict';\r\n\r\nimport $ from 'jquery';\r\n\r\nexport default function academyEntryTracking(){\r\n const trackingLinks = $('.js-track-academytype');\r\n if (trackingLinks.length < 1) return;\r\n\r\n trackingLinks.on('click', function(e) {\r\n e.preventDefault();\r\n const $this = $(this);\r\n if (window.dataLayer === undefined) {\r\n document.location = $this.attr('href');\r\n } else {\r\n window.dataLayer.push({\r\n 'event': 'academySignup',\r\n 'academyType': $this.data('tracking-name'),\r\n 'eventCallback': function() {\r\n document.location = $this.attr('href');\r\n }\r\n });\r\n }\r\n });\r\n}\r\n","'use strict';\r\n\r\nimport $ from 'jquery';\r\nimport Cookies from 'js-cookie';\r\nimport doT from 'dot';\r\n\r\n\r\n\r\nfunction updateOfficeData(select, label, tmpl, target) {\r\n const selected = select.children().filter(':selected');\r\n const name = selected.text();\r\n label.text(name);\r\n const data = selected.data(); //eslint-disable-line\r\n const template = doT.template(tmpl);\r\n const html = template(data);\r\n target.html(html);\r\n}\r\n\r\nfunction updateOfficeCookie(select, cookieName, days = 365) {\r\n const selected = select.children().filter(':selected');\r\n const officeId = $(selected).data('value');\r\n Cookies.set(cookieName, officeId, { path: '/', expires: days });\r\n}\r\n\r\nvar tableWrapper = $('.primary-table, .secondary-table');\r\n// wrap the element in RTE in order to contain on mobile\r\nif (tableWrapper) {\r\n tableWrapper.wrap('
    ');\r\n}\r\n\r\nexport function init(scope) {\r\n\r\n $(scope).each(function () {\r\n\r\n const elm = $(this.item);\r\n const label = elm.find('.js-office-name');\r\n const select = elm.find('.js-office-select');\r\n const tmpl = elm.find('.js-office-tmpl').html();\r\n const target = elm.find('.js-office-info');\r\n const cookieValue = Cookies.get(scope.cookieName);\r\n\r\n if (select.children().length && cookieValue !== undefined) {\r\n $(select).val(cookieValue);\r\n }\r\n\r\n if (select.children().length) {\r\n updateOfficeData(select, label, tmpl, target);\r\n }\r\n\r\n select.on('change', function () {\r\n updateOfficeData(select, label, tmpl, target);\r\n updateOfficeCookie(select, scope.cookieName);\r\n });\r\n\r\n/* elm.on('click', '.js-office-phone-trigger', function (e) {\r\n e.preventDefault();\r\n $(this).hide(0);\r\n elm.find('.js-office-phone').show(0);\r\n }); */\r\n\r\n });\r\n}\r\n\r\nexport default {\r\n init\r\n};\r\n","'use strict';\r\n\r\nimport $ from 'jquery';\r\nimport 'fancybox/dist/js/jquery.fancybox';\r\nimport { showContactBox, closeContactBox, fillContactForm, getUrlParam } from './contact.helpers';\r\n\r\n\r\nfunction init(scope) {\r\n $(scope.section).each(function () {\r\n const section = $(this);\r\n const close = section.find('.js-contact-close');\r\n\r\n section.on('click', scope.link, function (event) {\r\n event.preventDefault();\r\n const linkType = $(this).data('type');\r\n if (linkType && linkType.length && window.dataLayer) {\r\n window.dataLayer.push({\r\n 'event': 'contactButton' + linkType\r\n });\r\n }\r\n showContactBox(this);\r\n });\r\n close.on('click', function (event) {\r\n event.preventDefault();\r\n closeContactBox();\r\n });\r\n });\r\n\r\n const triggerContactBox = getUrlParam('contact');\r\n if (triggerContactBox !== null && triggerContactBox === 'show') {\r\n showContactBox(scope.showsection + ' ' + scope.link);\r\n fillContactForm(scope.form);\r\n }\r\n}\r\n\r\nexport default {\r\n init\r\n};\r\n","'use strict';\r\n\r\nimport $ from 'jquery';\r\nimport { formReset, hideAlerts } from '../../Shared/lightbox/lightbox.heplers';\r\n\r\n/**\r\n* Shows the contact lightbox element.\r\n* @param {string} scopeLink [css selector]\r\n* @return {undefined} [nothing returned]\r\n*/\r\nfunction showContactBox(scopeLink){\r\n const link = $(scopeLink);\r\n const contactSection = $('js-contact-section');\r\n\r\n let lightbox = link.closest('section').find('.js-contact-form');\r\n\r\n if (lightbox.length === 0) {\r\n lightbox = contactSection.find('.js-contact-form');\r\n }\r\n\r\n const form = lightbox.find('form');\r\n form.data('trigger', link.data('type'));\r\n\r\n const target = lightbox.find(link.data('target'));\r\n const value = link.data('value');\r\n target.val(value);\r\n\r\n const closeBtnTitle = lightbox.data('closebuttontooltip') ? lightbox.data('closebuttontooltip') : 'Close';\r\n\r\n $.fancybox(lightbox, {\r\n tpl: {\r\n closeBtn: '' + closeBtnTitle + ''\r\n },\r\n afterClose: function() {\r\n lightbox.find(target).val(null);\r\n formReset(lightbox, 'form-validation--error');\r\n hideAlerts(lightbox);\r\n }\r\n });\r\n}\r\n\r\nfunction closeContactBox(){\r\n $.fancybox.close();\r\n}\r\n\r\nfunction getUrlParams() {\r\n return decodeURI(window.location.search).substring(1).split('&');\r\n}\r\n\r\nfunction fillContactForm(formElm){\r\n const urlParams = getUrlParams();\r\n if (urlParams[0]) {\r\n for (let i = 0; i < urlParams.length; i++) {\r\n const param = urlParams[i].split('=');\r\n const name = param[0].toLowerCase();\r\n let value = '';\r\n if (name === 'topicid'){\r\n value = param[1]\r\n .replace(/{|}/ig, '')\r\n .toLowerCase();\r\n } else if (name === 'country'){\r\n value = param[1].toUpperCase();\r\n } else {\r\n value = param[1];\r\n }\r\n // const formField = $(formElm + ' .' + name);\r\n let formField;\r\n\r\n if (name === 'topicid') {\r\n formField = $(formElm).find('[id=\"TopicId_' + value + '\"]');\r\n formField.prop('checked', true);\r\n }\r\n else {\r\n formField = $(formElm + ' .' + name);\r\n formField.val(decodeURIComponent(value));\r\n }\r\n }\r\n }\r\n}\r\n\r\nfunction getUrlParam(name) {\r\n const urlParams = window.location.search.substring(1).split('&');\r\n if (urlParams[0]) {\r\n for (let i = 0; i < urlParams.length; i++) {\r\n const param = urlParams[i].split('=');\r\n const tempName = param[0].toLowerCase();\r\n const value = param[1].replace(/[{]|[}]/g, '');\r\n if (tempName === name) {\r\n return value;\r\n }\r\n }\r\n }\r\n return null;\r\n}\r\n\r\nexport {\r\n showContactBox,\r\n closeContactBox,\r\n fillContactForm,\r\n getUrlParam\r\n};\r\n","'use strict';\r\n\r\nimport $ from 'jquery';\r\nimport YoutubePlayer from 'youtube-player';\r\n\r\n\r\nfunction parseVideoUrl(url) {\r\n if (url) {\r\n const regExp = /^.*((youtu.be\\/)|(v\\/)|(\\/u\\/\\w\\/)|(embed\\/)|(watch\\?))\\??v?=?([^#\\&\\?]*).*/;\r\n const match = url.match(regExp);\r\n return (match && match[7].length === 11) ? match[7] : false;\r\n }\r\n\r\n return false;\r\n}\r\n\r\nfunction init(scope) {\r\n $(scope).each(function() {\r\n const placeholder = $(this).find(scope + '-placeholder');\r\n const playerId = placeholder.attr('id');\r\n const videoId = parseVideoUrl(placeholder.data('video'));\r\n\r\n const player = new YoutubePlayer(playerId, {\r\n height: '500',\r\n width: '500',\r\n playerVars: {\r\n autoplay: 1,\r\n controls: 0,\r\n disablekb: 1,\r\n modestbranding: 1,\r\n showinfo: 0,\r\n rel: 0,\r\n loop: 1,\r\n playlist: videoId\r\n },\r\n videoId: videoId\r\n });\r\n player.mute();\r\n });\r\n}\r\n\r\nexport default {\r\n init\r\n};\r\n","'use strict';\r\n\r\nimport $ from 'jquery';\r\n\r\nexport function init(scope) {\r\n\r\n $(scope).each(function(){\r\n const items = $(this).find('.eshop__items');\r\n const contactButton = $(document).find('.js-contact-link.btn');\r\n\r\n items.each(function() {\r\n const itm = $(this);\r\n const title = itm.find('.eshop__item-title');\r\n const ctaBtn = itm.find('.eshop__cta--primary');\r\n const quoteBtn = itm.find('.eshop__cta--secondary');\r\n\r\n ctaBtn.on('click', function(e){\r\n if (window.dataLayer !== undefined) {\r\n e.preventDefault();\r\n\r\n const $this = $(this);\r\n window.dataLayer.push({\r\n 'event': 'ctaClick',\r\n 'itemName': title.text(),\r\n 'eventCallback': function() {\r\n window.location = $this.attr('href');\r\n }\r\n });\r\n }\r\n });\r\n\r\n quoteBtn.on('click', function(e){\r\n if (window.dataLayer !== undefined) {\r\n e.preventDefault();\r\n contactButton.trigger('click');\r\n\r\n const $this = $(this);\r\n window.dataLayer.push({\r\n 'event': 'quoteClick',\r\n 'itemName': title.text()\r\n });\r\n }\r\n });\r\n });\r\n });\r\n\r\n}\r\n\r\nexport default {\r\n init\r\n};\r\n","'use strict';\r\n\r\nimport $ from 'jquery';\r\n\r\nexport function init(scope) {\r\n\r\n $(scope.item).each(function(){\r\n const item = $(this);\r\n item.on('click', scope.trigger, function(){\r\n item.toggleClass('active');\r\n item.find('.faq__answers').slideToggle(300);\r\n $(this).toggleClass('btn--inverted');\r\n if (item.hasClass('active')) {\r\n $(this).find('span').text($(this).data('textActive'));\r\n } else {\r\n $(this).find('span').text($(this).data('text'));\r\n }\r\n });\r\n });\r\n\r\n}\r\n\r\nexport default {\r\n init\r\n};\r\n","'use strict';\r\n\r\nimport $ from 'jquery';\r\n\r\nexport function init(scope){\r\n\r\n const links = $(scope).not('.lightbox-iframe, .js-link-lightbox');\r\n links.on('click', function(e){\r\n const link = $(this);\r\n const target = $(link.attr('href'));\r\n if (target.length > 0) {\r\n e.preventDefault();\r\n const targetTop = target.offset().top;\r\n $('html, body').stop(true, true).animate({scrollTop: targetTop}, '500', 'swing');\r\n }\r\n });\r\n}\r\n\r\nexport default {\r\n init\r\n};\r\n","'use strict';\r\n\r\nimport $ from 'jquery';\r\n\r\nexport function init(scope) {\r\n\r\n $(scope).each(function(){\r\n\r\n const library = $(this);\r\n const filterDDLs = library.find(scope + '-filter select');\r\n const filterCheckbox = library.find(scope + '-filter [type=\"checkbox\"]');\r\n const lists = $(this).find(scope + '-list');\r\n const separator = '|';\r\n\r\n // get filter data\r\n\r\n const filterOpts = $.map(filterDDLs, function(item){\r\n const ddl = $(item);\r\n const opts = ddl.children();\r\n const ddlData = $.map(opts, function(optsItem){\r\n const optData = {\r\n text: $(optsItem).text(),\r\n value: $(optsItem).val(),\r\n sub: $(optsItem).data('sub') !== undefined ? $(optsItem).data('sub') : ''\r\n };\r\n return optData;\r\n });\r\n return [ddlData];\r\n });\r\n\r\n // functions\r\n\r\n function getFilterLevel(select){\r\n return filterDDLs.index(select);\r\n }\r\n\r\n function updateFilter(updIndex){\r\n console.groupCollapsed('update filter from index', updIndex);\r\n filterDDLs.each(function(index){\r\n const ddl = $(this);\r\n const indexNext = index + 1;\r\n const ddlNext = $(filterDDLs[indexNext]);\r\n const optionSubs = ddl.find('option:selected').data('sub');\r\n const subs = optionSubs !== undefined ? optionSubs.split(separator) : [];\r\n if (index >= updIndex && ddlNext.length) {\r\n ddlNext.empty();\r\n $.each(filterOpts[indexNext], function(){\r\n if (subs.indexOf(this.value) >= 0 || this.value === '') {\r\n ddlNext.append(``);\r\n }\r\n });\r\n if (ddlNext.children().length > 1) {\r\n ddlNext.prop('disabled', false);\r\n } else {\r\n ddlNext.prop('disabled', true);\r\n }\r\n }\r\n });\r\n console.groupEnd();\r\n }\r\n\r\n function getActiveList() {\r\n return lists.filter('.active');\r\n }\r\n\r\n function getActiveItems() {\r\n return getActiveList().find('.sheets__char-list li.active');\r\n }\r\n\r\n function updateList(){\r\n\r\n console.groupCollapsed('update list');\r\n\r\n if (filterDDLs.length === 0) {\r\n lists.find('.sheets__char-list li').addClass('active');\r\n lists.show(0);\r\n return;\r\n }\r\n\r\n lists.removeClass('active');\r\n\r\n filterDDLs.each(function(index){\r\n const ddl = $(this);\r\n const value = ddl.find('option:selected').val();\r\n if (index === 0) {\r\n lists.filter('[data-filter=\"' + value + '\"]')\r\n .addClass('active');\r\n lists.filter('.active')\r\n .find('.sheets__char-list li')\r\n .addClass('active');\r\n console.groupCollapsed('set active'); \r\n } else if (value !== '') {\r\n const activeListItems = lists.filter('.active').find('.sheets__char-list li.active');\r\n activeListItems.each(function(){\r\n const doc = $(this);\r\n const docFilter = doc.attr('data-filter-' + index);\r\n if (!docFilter || docFilter.split(separator).indexOf(value) < 0) {\r\n doc.removeClass('active');\r\n }\r\n });\r\n }\r\n });\r\n\r\n filterCheckbox.each(function(){\r\n const chb = $(this);\r\n const checkboxName = chb.attr('name');\r\n const activeItems = getActiveItems();\r\n const l = activeItems.filter('[data-filter-' + checkboxName + '=\"true\"]').length;\r\n if (!l) {\r\n chb.prop('checked', false).parent().hide(0);\r\n } else {\r\n chb.parent().show(0);\r\n }\r\n });\r\n\r\n filterCheckbox.each(function(){\r\n const chb = $(this);\r\n const checkboxName = chb.attr('name');\r\n getActiveItems().each(function(){\r\n const doc = $(this);\r\n if (doc.attr('data-filter-' + checkboxName) !== chb.is(':checked').toString()) {\r\n doc.removeClass('active');\r\n }\r\n });\r\n });\r\n\r\n lists.filter('.active').children().each(function(){\r\n if ($(this).find('.sheets__char-list li.active').length === 0) {\r\n $(this).hide(0);\r\n } else {\r\n $(this).show(0);\r\n }\r\n });\r\n\r\n console.groupEnd();\r\n }\r\n\r\n function filterApply(updIndex = 0){\r\n updateFilter(updIndex);\r\n updateList();\r\n }\r\n\r\n filterApply();\r\n\r\n // Events\r\n\r\n filterDDLs.on('change', function(e){\r\n const ddlIndex = getFilterLevel($(e.target));\r\n filterApply(ddlIndex);\r\n });\r\n\r\n filterCheckbox.on('change', function(){\r\n updateList();\r\n });\r\n\r\n });\r\n\r\n}\r\n\r\nexport default {\r\n init\r\n};\r\n","'use strict';\r\n\r\nimport $ from 'jquery';\r\n\r\nexport function init(scope){\r\n\r\n // const targetIndent = 0;\r\n\r\n const menu = $(scope);\r\n const menuLinks = menu.find('a');\r\n const menuTargets = $($.map(menuLinks, function(elem){\r\n return $(elem).attr('href');\r\n }).join(', '));\r\n let activeTargetId = '#';\r\n\r\n // function getTargetIndent() {\r\n // return $(window).height() / 100 * targetIndent;\r\n // }\r\n\r\n function anchorMenuScroll() {\r\n\r\n // fix menu on top\r\n const winTop = $(window).scrollTop();\r\n const menuTop = menu.offset().top;\r\n if (winTop > menuTop) {\r\n menu.addClass('nav-anchor--fixed');\r\n } else {\r\n menu.removeClass('nav-anchor--fixed');\r\n }\r\n\r\n // active menu taregt\r\n let lastScrolledTargetId = '#';\r\n menuTargets.each(function(){\r\n const targetTop = $(this).offset().top;\r\n if (winTop > targetTop - 50) { // 50px to optimaze calculation of initial browser scroll to anchor\r\n lastScrolledTargetId = '#' + $(this).attr('id');\r\n }\r\n });\r\n\r\n if (lastScrolledTargetId !== activeTargetId) {\r\n if (lastScrolledTargetId) {\r\n menuLinks.removeClass('nav-anchor__item--active');\r\n menuLinks.filter('[href=\"' + lastScrolledTargetId + '\"]').addClass('nav-anchor__item--active');\r\n if (history.pushState) {\r\n const state = history.state;\r\n history.pushState(state, null, lastScrolledTargetId);\r\n }\r\n } else {\r\n if (history.pushState) {\r\n const state = history.state;\r\n history.pushState(state, null, '#');\r\n }\r\n }\r\n activeTargetId = lastScrolledTargetId;\r\n }\r\n }\r\n\r\n if (menu.length > 0) {\r\n\r\n anchorMenuScroll();\r\n\r\n $(window).on('scroll', function(){\r\n anchorMenuScroll();\r\n });\r\n\r\n // scroll to anchor\r\n menuLinks.on('click', function(e){\r\n e.preventDefault();\r\n const href = this.getAttribute('href');\r\n const targetId = href.includes('http') ? new URL(href).hash : href;\r\n const target = document.querySelector(targetId);\r\n \r\n if (target) {\r\n const targetTop = target.offsetTop;\r\n \r\n // Stop any ongoing animations on the html and body elements\r\n const htmlBody = document.querySelector('body');\r\n htmlBody.style.scrollBehavior = 'auto'; // Ensure smooth native scrolling\r\n window.scrollTo({\r\n top: targetTop - 45,\r\n behavior: 'smooth' // Use smooth scrolling for a similar animation effect\r\n });\r\n }\r\n });\r\n }\r\n}\r\n\r\nexport default {\r\n init\r\n};\r\n","'use strict';\r\n\r\nimport $ from 'jquery';\r\n\r\n\r\nfunction init(scope) {\r\n\r\n $(scope).each(function(){\r\n const form = $(this);\r\n\r\n form.on('submit', function(e){\r\n\r\n if (!form.hasClass('js-disabled')) {\r\n form.addClass('js-disabled');\r\n } else {\r\n e.preventDefault();\r\n }\r\n\r\n });\r\n });\r\n}\r\n\r\nexport default {\r\n init\r\n};\r\n","'use strict';\r\n\r\nimport $ from 'jquery';\r\nimport 'fancybox/dist/js/jquery.fancybox';\r\n\r\nfunction init() {\r\n const registrationLink = $('.js-event-registration-link');\r\n registrationLink.fancybox();\r\n}\r\n\r\nexport default {\r\n init\r\n};\r\n","'use strict';\r\n\r\nimport $ from 'jquery';\r\n\r\nexport function init(selector) {\r\n \r\n const elements = $(selector);\r\n\r\n elements.each(function() {\r\n lazyload(this);\r\n })\r\n\r\n\tfunction lazyload(element) {\r\n\t\t// If useragent doens't support scroll, then it is properly a Google Bot\r\n\t\t// Therefor all images should be rendered for SEO purposes\r\n\t\tconst supportScroll = ('onscroll' in window) && !(/glebot/.test(navigator.userAgent));\r\n\r\n\t\t// If the useragent doesn't support IntersectionObserver, we need to render all images\r\n\t\tconst supportIntersectionObserver = 'IntersectionObserver' in window;\r\n\r\n\t\tif (supportScroll && supportIntersectionObserver) {\r\n\t\t\tobserve(element);\r\n\t\t} else {\r\n\t\t\treveal(element);\r\n\t\t}\r\n\t}\r\n\r\n\tfunction observe(element) {\r\n\t\tvar observer = new IntersectionObserver(handleIntersect.bind(element));\r\n\t\tobserver.observe(element);\r\n\t}\r\n\r\n\tfunction handleIntersect(entries, observer) {\r\n\t\tentries.forEach((entry) => {\r\n\t\t\tif (entry.isIntersecting) {\r\n\t\t\t\treveal(entry.target);\r\n\t\t\t\tobserver.disconnect();\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tfunction reveal(element) {\r\n var $element = $(element);\r\n\r\n\t\t$element.attr('srcset', $element.attr('data-srcset'));\r\n\t\t$element.attr('src', $element.attr('data-src'));\r\n\r\n\t\tif ($element.attr('src') === '') return;\r\n\r\n\t\t$element.attr('srcset', $element.attr('data-srcset'));\r\n\t}\r\n\r\n}\r\n\r\nexport default {\r\n init\r\n};","'use strict';\r\n\r\nimport { createPopper } from '@popperjs/core';\r\n\r\nexport function init(scope) {\r\n\r\n const tooltips = document.querySelectorAll(scope.item);\r\n\r\n tooltips.forEach((tooltip) => {\r\n\r\n tooltip.trigger = tooltip.querySelector('.tooltip__trigger');\r\n tooltip.label = tooltip.querySelector('.tooltip__label');\r\n\r\n tooltip.popperInstance = createPopper(tooltip.trigger, tooltip.label, { \r\n placement: 'top',\r\n modifiers: [\r\n {\r\n name: 'offset',\r\n options: {\r\n offset: [0, 5],\r\n },\r\n },\r\n ],\r\n });\r\n\r\n tooltip.show = () => {\r\n tooltip.label.setAttribute('data-show', '');\r\n \r\n // We need to tell Popper to update the tooltip position\r\n // after we show the tooltip, otherwise it will be incorrect\r\n tooltip.popperInstance.update();\r\n }\r\n\r\n tooltip.hide = () => {\r\n tooltip.label.removeAttribute('data-show');\r\n }\r\n\r\n tooltip.showEvents = ['mouseenter', 'focus'];\r\n tooltip.hideEvents = ['mouseleave', 'blur'];\r\n\r\n tooltip.showEvents.forEach((event) => {\r\n tooltip.trigger.addEventListener(event, tooltip.show);\r\n });\r\n\r\n tooltip.hideEvents.forEach((event) => {\r\n tooltip.trigger.addEventListener(event, tooltip.hide);\r\n });\r\n });\r\n}\r\n\r\nexport default {\r\n init\r\n};"],"sourceRoot":""}