{"version":3,"sources":["accordion.js","backtotop.js","disappear.js","form-validation.js","helpers.js","main.js","mobile-menu.js","modal.js","news-filtering.js","richtext-collapse.js","scrollspy.js","select.js","service-worker.js","slider-calender.js","slider-cards.js","slider-inspire.js","slider-media.js","slider-timeline.js","slider-usp.js","social-share.js","sticky-bar.js","sticky-header.js","submenu.js","tabs.js","video.js","website-cta-popup.js","zoomer.js"],"names":["_typeof","Symbol","iterator","obj","constructor","prototype","fAccordion","aAccordions","document","querySelectorAll","fInitAccordion","oAccordion","aTriggers","bOpenOne","getAttribute","_loop","b","oParent","parentNode","oCollapse","querySelector","oFormButton","style","height","position","opacity","visibility","addEventListener","overflow","removeAttribute","oCollapseHeight","offsetHeight","oCurrent","oCurrentCollapse","setAttribute","setTimeout","v","length","_ret","a","fBacktotop","oTrigger","window","scrollTo","behavior","left","top","fDisappear","fRemoveElement","oElement","transition","remove","aElements","i","iTime","fFormValidation","GetRecaptchaID","sContainerID","nResult","aRecaptchas","id","aForms","submitFunctions","validate","init","selector","fieldClass","errorClass","disableSubmit","onSubmit","oForm","oRecaptchaContainer","nRecaptchaID","grecaptcha","reset","execute","submit","onLoad","sRecaptchaKey","oSubmitButton","getResponse","render","sitekey","size","callback","offset","el","rect","getBoundingClientRect","scrollLeft","pageXOffset","documentElement","scrollTop","pageYOffset","scrollIt","destination","scroll","now","performance","Date","getTime","time","Math","min","startTime","duration","timeFunction","easings","easing","ceil","destinationOffsetToScroll","start","stopResult","toFixed","requestAnimationFrame","arguments","undefined","linear","t","easeInQuad","easeOutQuad","easeInOutQuad","documentHeight","max","body","scrollHeight","clientHeight","windowHeight","innerHeight","getElementsByTagName","destinationOffset","round","getPosition","xPos","yPos","tagName","xScroll","yScroll","offsetLeft","clientLeft","offsetTop","clientTop","offsetParent","x","y","Element","matches","msMatchesSelector","webkitMatchesSelector","closest","s","this","contains","parentElement","nodeType","elements","Stickyfill","add","arr","forEach","item","hasOwnProperty","Object","defineProperty","configurable","enumerable","writable","value","removeChild","CharacterData","DocumentType","fInitNews","fStickyHeader","fRichtextCollapse","fInitScrollSpy","fMenuToggle","fVideo","fInitTabs","fSelect","fInitSiteCta","fSubmenu","onreadystatechange","readyState","objectFitImages","fInitModals","fSliderTimeline","fSliderCalendar","fSliderInspire","fSliderUsp","fSliderCards","fSliderMedia","fZoomer","fSocialShare","StickyBar","openSubmenu","trigger","submenu","nextElementSibling","parentLi","zIndex","classList","activeSubmenu","activeSubmenuParentLi","closeSubmenu","oMenu","aMenuItems","slice","call","oMenuPhone","aMenuTitles","aMenuLangSwitches","aStaggerItems","concat","aMenuItemsSubmenu","aSubmenuCloseBtns","oTimeline","TimelineMax","paused","to","pointerEvents","autoAlpha","staggerTo","TweenMax","defaultEase","Quart","easeIntOut","event","target","preventDefault","timeScale","play","reverse","e","_loop2","_classCallCheck","instance","Constructor","TypeError","aModals","sHash","location","hash","modal","Modal","modalHash","open","_slicedToArray","sliceIterator","_arr","_n","_d","_e","_s","_i","next","done","push","err","Array","isArray","_createClass","defineProperties","props","descriptor","key","protoProps","staticProps","header","modalBody","openers","closers","modalBg","form","populate","watch","_this","close","root","content","_this2","data","JSON","parse","entries","_ref","_ref2","fields","template","appendChild","cloneNode","_ref3","_ref4","subkey","subvalue","subfield","innerHTML","display","_this3","tl","TimelineLite","TweenLite","easeOut","createElement","set","onComplete","showContent","_this4","destroyModalBg","enableModalScroll","overflowY","handleLoadClick","params","URLSearchParams","p","get","fFilterNewsArticles","bindHandlers","page","pageid","oRequest","XMLHttpRequest","DONE","status","newsResultsContainer","history","pushState","insertAdjacentHTML","responseText","send","preview","text","initScrollspy","fToggleStickyNav","iScrollPosition","iNavOffset","oScrollspyNav","fCheckiScrollPosition","aScrollspySections","scrollY","aScrollspyNavItems","oItem","oScrollspyNavVertical","fScrollToSection","oButton","oScrollDestEl","getElementById","onscroll","oScrollspyObjects","removeActiveState","select","parent","oSelectedValue","oHiddenInput","error","hasError","showError","removeError","navigator","serviceWorker","register","then","console","log","fSwitchGlobals","iTempNext","iNextIndex","iCurrentIndex","aSlides","oCurrentSlide","oNextSlide","oSlider","aTimerItems","iSliderHeight","setInterval","easeInOut","fSetGroupcells","isEvents","innerWidth","fInitSlider","fPosToNeg","number","abs","fAnimateTextblock","oTextblock","transitionDuration","iCalculatedOpacity","oFlickity","dragX","transform","oList","oNav","oButtonPrev","oButtonNext","hasAttribute","Flickity","cellAlign","draggable","contain","groupCells","freeScroll","prevNextButtons","watchCSS","on","ready","previous","options","cells","change","index","selectedIndex","slides","aSliders","dragStart","dragEnd","oListItems","wrapAround","aListItems","width","offsetWidth","pageDots","fMoveIndicator","navIndicator","slider","backgrounds","buttons","textblocks","currentTextblock","sliderWrapper","flickity","percentPosition","textblock","indexOf","socialShareButton","toggle","_ref$checkUpScroll","checkUpScroll","initialOffset","currentScrollPosition","stickyHeader","scrollSection","errorMargin","isMouseDown","startX","getOffset","checkPosition","bind","setOffset","onMouseDown","onMouseLeave","onMouseUp","onMouseMove","observer","IntersectionObserver","intersectionRatio","rootMargin","threshold","observe","isDown","pageX","walk","fSwitchState","oHeaderOffset","oHeader","positionSubmenu","bounds","right","windowWidth","getSubmenus","aSubmenus","fOpenTab","aTargets","fGetTargets","sId","oTarget","oCurrentTrigger","oCurrentContent","fHashHandler","substr","fClickHandler","fAnimateModalIn","oModal","oBackdrop","oSourceDimensions","sYoutubeId","fFixModal","iVideoHeight","iVideoWidth","ease","margin","fCreatePlayer","onCompleteParams","fAnimateModalOut","fDestroyModal","oIframe","scaleX","YT","Player","videoId","playerVars","rel","controls","modestbranding","autoplay","showinfo","fCreateModal","oSource","oModalClose","oVideoFrame","oScriptTag","src","oFirstScriptTag","insertBefore","siteCtaPopup","cookie","Cookies","cookiesAccepted","siteCtaPopupClose","siteCtaButton","expires","fDestroyZoomed","oZoomed","fGetSourceDimensions","fAnimateZoomed","nZoomedDimensions","oCloser","bottom","oZoomedImage","nTopOffset","maxWidth","maxHeight","fCreateBackdrop","fCreateZoomed","sUrl","fConstructUrl","sUrlOrigin","bLandscape","fCalculateZoomedDimensions","nRatio","nWindowWidth","nWindowHeight","nZoomedWidth","nZoomedHeight","isElementLandscape","getAspectRatio","nWidth","nHeight","nDivisor","gcd","keyCode"],"mappings":"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","file":"../main.min.js","sourcesContent":["'use strict';\r\n\r\nconst fAccordion = () => {\r\n const aAccordions = document.querySelectorAll(\".js-accordion\");\r\n\r\n const fInitAccordion = (oAccordion) => {\r\n const aTriggers = oAccordion.querySelectorAll(\".js-accordion-open\");\r\n const bOpenOne = (oAccordion.getAttribute(\"data-accordion-openOne\") === 'true');\r\n\r\n for (let b = 0; b < aTriggers.length; b += 1) {\r\n const oParent = aTriggers[b].parentNode;\r\n const oCollapse = oParent.querySelector(\".js-accordion-collapse\");\r\n const oFormButton = oParent.querySelector('.form .button');\r\n\r\n if (!oCollapse) return;\r\n\r\n oCollapse.style.height = \"0px\";\r\n oCollapse.style.position = \"relative\";\r\n oCollapse.style.opacity = 1;\r\n oCollapse.style.visibility = \"visible\";\r\n\r\n aTriggers[b].addEventListener(\"click\", () => {\r\n if (oParent.getAttribute(\"data-accordion-active\")) {\r\n oCollapse.style.height = \"0px\";\r\n oCollapse.style.overflow = \"hidden\";\r\n oParent.removeAttribute(\"data-accordion-active\");\r\n } else {\r\n let oCollapseHeight = (oCollapse) ? oCollapse.querySelector(\".js-accordion-collapse-body\").offsetHeight : null;\r\n if (bOpenOne) {\r\n let oCurrent = oAccordion.querySelector('[data-accordion-active=\"true\"]');\r\n if (oCurrent) {\r\n let oCurrentCollapse = oCurrent.querySelector(\".js-accordion-collapse\");\r\n\r\n oCurrentCollapse.style.height = \"0px\";\r\n oCurrent.style.overflow = \"hidden\";\r\n oCurrent.removeAttribute(\"data-accordion-active\");\r\n }\r\n }\r\n oCollapse.style.height = `${oCollapseHeight}px`;\r\n oParent.setAttribute(\"data-accordion-active\", true);\r\n\r\n setTimeout(() => {\r\n oCollapse.style.overflow = \"visible\";\r\n }, 250)\r\n }\r\n });\r\n\r\n // Reset height if form is validated\r\n if (oFormButton) {\r\n oFormButton.addEventListener('click', () => {\r\n if (oParent.getAttribute('data-accordion-active')) {\r\n setTimeout(function () {\r\n oCollapse.style.height = 'auto';\r\n oCollapseHeight = (oCollapse) ? oCollapse.offsetHeight : null;\r\n oCollapse.style.height = `${oCollapseHeight}px`;\r\n }, 100);\r\n }\r\n });\r\n }\r\n }\r\n };\r\n\r\n for (let a = 0; a < aAccordions.length; a += 1) {\r\n fInitAccordion(aAccordions[a]);\r\n }\r\n}","'use strict';\r\n\r\nfunction fBacktotop () {\r\n const oTrigger = document.querySelector('.js-backtotop');\r\n \r\n oTrigger.addEventListener('click', function () {\r\n window.scrollTo({\r\n 'behavior': 'smooth',\r\n 'left': 0,\r\n 'top': 0\r\n });\r\n });\r\n}","'use strict';\r\n\r\nconst fDisappear = () => {\r\n const aElements = document.querySelectorAll('.js-disappear');\r\n\r\n function fRemoveElement(oElement) {\r\n oElement.style.transition = '.4s';\r\n oElement.style.opacity = 0;\r\n\r\n setTimeout(function () {\r\n oElement.remove();\r\n }, 300);\r\n }\r\n\r\n for (let i = 0; i < aElements.length; i += 1) {\r\n let iTime = aElements[i].getAttribute('data-disappear');\r\n\r\n if (iTime) {\r\n \r\n\r\n setTimeout(function() {\r\n fRemoveElement(aElements[i]);\r\n }, (iTime * 1000));\r\n }\r\n }\r\n}","'use strict';\r\n\r\nfunction fFormValidation() {\r\n const aForms = document.querySelectorAll('.js-form-validate');\r\n let submitFunctions = {};\r\n\r\n // Helper function to get recaptcha widget id\r\n function GetRecaptchaID(sContainerID) {\r\n let nResult = -1;\r\n let aRecaptchas = document.querySelectorAll('.js-recaptcha');\r\n \r\n for (let i = 0; i < aRecaptchas.length; i += 1) {\r\n if (aRecaptchas[i].id === sContainerID) {\r\n nResult = i;\r\n }\r\n }\r\n \r\n return nResult;\r\n }\r\n\r\n // Initialize form validation\r\n validate.init({\r\n selector: '.js-form-validate',\r\n fieldClass: 'has-error',\r\n errorClass: 'form__error',\r\n disableSubmit: true,\r\n onSubmit: function(oForm) {\r\n let oRecaptchaContainer = oForm.querySelector('.js-recaptcha');\r\n \r\n if (oRecaptchaContainer) {\r\n let nRecaptchaID = GetRecaptchaID(oRecaptchaContainer.id);\r\n \r\n grecaptcha.reset(nRecaptchaID);\r\n grecaptcha.execute(nRecaptchaID);\r\n } else {\r\n oForm.submit();\r\n }\r\n },\r\n onLoad: function() {\r\n for (let i = 0; i < aForms.length; i += 1) {\r\n let oRecaptchaContainer = aForms[i].querySelector('.js-recaptcha');\r\n let sRecaptchaKey = (oRecaptchaContainer) ? oRecaptchaContainer.getAttribute('data-recaptcha-key') : \"\";\r\n let oSubmitButton = aForms[i].querySelector('button');\r\n\r\n submitFunctions[i] = function() {\r\n let nRecaptchaID = GetRecaptchaID(oRecaptchaContainer.id);\r\n\r\n if (grecaptcha.getResponse(nRecaptchaID)) {\r\n aForms[i].submit();\r\n }\r\n }\r\n\r\n if (oRecaptchaContainer && grecaptcha) {\r\n grecaptcha.render(oRecaptchaContainer, {\r\n 'sitekey': sRecaptchaKey,\r\n 'size': 'invisible',\r\n 'callback': submitFunctions[i],\r\n });\r\n }\r\n\r\n if (oSubmitButton) {\r\n oSubmitButton.removeAttribute('disabled');\r\n }\r\n }\r\n }\r\n });\r\n}\r\n","if (!Element.prototype.matches) {\r\n Element.prototype.matches = Element.prototype.msMatchesSelector || Element.prototype.webkitMatchesSelector;\r\n}\r\n\r\nif (!Element.prototype.closest) {\r\n Element.prototype.closest = function (s) {\r\n var el = this;\r\n if (!document.documentElement.contains(el)) return null;\r\n do {\r\n if (el.matches(s)) return el;\r\n el = el.parentElement || el.parentNode;\r\n } while (el !== null && el.nodeType === 1);\r\n return null;\r\n };\r\n}\r\n\r\n// Position sticky polyfill\r\nvar elements = document.querySelectorAll('[data-position-sticky]');\r\nStickyfill.add(elements);\r\n\r\n// from:https://github.com/jserz/js_piece/blob/master/DOM/ChildNode/remove()/remove().md\r\n(function (arr) {\r\n arr.forEach(function (item) {\r\n if (item.hasOwnProperty('remove')) {\r\n return;\r\n }\r\n\r\n Object.defineProperty(item, 'remove', {\r\n configurable: true,\r\n enumerable: true,\r\n writable: true,\r\n value: function remove() {\r\n if (this.parentNode !== null) {\r\n this.parentNode.removeChild(this);\r\n }\r\n }\r\n });\r\n });\r\n})([Element.prototype, CharacterData.prototype, DocumentType.prototype]);\r\n\r\nfunction offset(el) {\r\n var rect = el.getBoundingClientRect();\r\n var scrollLeft = window.pageXOffset || document.documentElement.scrollLeft;\r\n var scrollTop = window.pageYOffset || document.documentElement.scrollTop;\r\n\r\n return {\r\n top: rect.top + scrollTop,\r\n left: rect.left + scrollLeft\r\n }\r\n}\r\n\r\nfunction scrollIt (destination, duration = 200, easing = 'linear', callback) {\r\n const easings = {\r\n linear(t) {\r\n return t;\r\n },\r\n easeInQuad(t) {\r\n return t * t;\r\n },\r\n easeOutQuad(t) {\r\n return t * (2 - t);\r\n },\r\n easeInOutQuad(t) {\r\n return (t < 0.5) ? (2 * t) * t : (-1 + ((4 - 2) * t)) * t;\r\n }\r\n };\r\n\r\n const start = window.pageYOffset || document.documentElement.scrollTop;\r\n const startTime = 'now' in window.performance ? performance.now() : new Date().getTime();\r\n\r\n const documentHeight = Math.max(document.body.scrollHeight,\r\n document.body.offsetHeight,\r\n document.documentElement.clientHeight,\r\n document.documentElement.scrollHeight,\r\n document.documentElement.offsetHeight);\r\n\r\n const windowHeight = window.innerHeight ||\r\n document.documentElement.clientHeight ||\r\n document.getElementsByTagName('body')[0].clientHeight;\r\n\r\n const destinationOffset = typeof destination === 'number' ? destination : destination.getBoundingClientRect().top + start;\r\n const destinationOffsetToScroll = Math.round(documentHeight - destinationOffset < windowHeight ?\r\n documentHeight - windowHeight : destinationOffset);\r\n\r\n if ('requestAnimationFrame' in window === false) {\r\n window.scroll(0, destinationOffsetToScroll);\r\n if (callback) {\r\n callback();\r\n }\r\n return;\r\n }\r\n\r\n function scroll () {\r\n const now = 'now' in window.performance ? performance.now() : new Date().getTime();\r\n const time = Math.min(1, ((now - startTime) / duration));\r\n const timeFunction = easings[easing](time);\r\n window.scroll(0, Math.ceil((timeFunction * (destinationOffsetToScroll - start)) + start));\r\n const stopResult = ((window.pageYOffset || document.documentElement.scrollTop) / destinationOffsetToScroll).toFixed(2);\r\n\r\n if (stopResult === '1.00' || stopResult === '0.99') {\r\n if (callback) {\r\n callback();\r\n }\r\n return;\r\n }\r\n\r\n requestAnimationFrame(scroll);\r\n }\r\n\r\n scroll();\r\n}\r\n\r\n// Helper function to get an element's exact position\r\nfunction getPosition(el) {\r\n let xPos = 0;\r\n let yPos = 0;\r\n\r\n while (el) {\r\n if (el.tagName === \"BODY\") {\r\n // deal with browser quirks with body/window/document and page scroll\r\n let xScroll = el.scrollLeft || document.documentElement.scrollLeft;\r\n let yScroll = el.scrollTop || document.documentElement.scrollTop;\r\n\r\n xPos += ((el.offsetLeft - xScroll) + el.clientLeft);\r\n yPos += ((el.offsetTop - yScroll) + el.clientTop);\r\n } else {\r\n // for all other non-BODY elements\r\n xPos += ((el.offsetLeft - el.scrollLeft) + el.clientLeft);\r\n yPos += ((el.offsetTop - el.scrollTop) + el.clientTop);\r\n }\r\n\r\n el = el.offsetParent;\r\n }\r\n\r\n return {\r\n x: xPos,\r\n y: yPos\r\n };\r\n}","'use strict';\r\n\r\n(function fPageLoad() {\r\n if (document.querySelectorAll('.js-news-results').length) { fInitNews(); }\r\n if (document.querySelectorAll('.js-sticky-header').length) { fStickyHeader(); }\r\n if (document.querySelectorAll('.js-richtext-collapse-show').length) { fRichtextCollapse(); }\r\n if (document.querySelectorAll('.js-scrollspy').length) { fInitScrollSpy(); }\r\n if (document.querySelectorAll('.js-accordion').length) { fAccordion(); }\r\n if (document.querySelectorAll('.js-menu').length) { fMenuToggle(); }\r\n if (document.querySelectorAll('.js-video-open').length) { fVideo(); }\r\n if (document.querySelectorAll('.js-tabs').length) { fInitTabs(); }\r\n if (document.querySelectorAll('.js-select').length) { fSelect(); }\r\n if (document.querySelectorAll('.js-cta-popup').length) { fInitSiteCta(); }\r\n if (document.querySelectorAll('.js-submenu').length) { fSubmenu(); }\r\n\r\n document.onreadystatechange = function () {\r\n if (document.readyState === \"complete\") {\r\n objectFitImages();\r\n\r\n if (document.querySelectorAll('.js-modal-open').length) { fInitModals(); }\r\n if (document.querySelectorAll('.js-form-validate').length) { fFormValidation(); }\r\n if (document.querySelectorAll('.js-timeline').length) { fSliderTimeline(); }\r\n if (document.querySelectorAll('.js-slider-calendar').length) { fSliderCalendar(); }\r\n if (document.querySelectorAll('.js-slider-inspire').length) { fSliderInspire(); }\r\n if (document.querySelectorAll('.js-usp').length) { fSliderUsp(); }\r\n if (document.querySelectorAll('.js-slider-cards').length) { fSliderCards(); }\r\n if (document.querySelectorAll('.js-slider-media').length) { fSliderMedia(); }\r\n if (document.querySelectorAll('.js-backtotop').length) { fBacktotop(); }\r\n if (document.querySelectorAll('.js-disappear').length) { fDisappear(); }\r\n if (document.querySelectorAll('.js-zoomer').length) { fZoomer(); }\r\n if (document.querySelectorAll('.js-social-share').length) { fSocialShare(); }\r\n if (document.querySelector('.js-sticky-bar')) {\r\n var stickybar = new StickyBar({ el: document.querySelector('.js-sticky-bar') })\r\n }\r\n }\r\n }\r\n})();\r\n","'use strict';\r\n\r\nfunction fMenuToggle() {\r\n const oMenu = document.querySelector('.js-menu');\r\n const aMenuItems = [].slice.call(oMenu.querySelectorAll('.header__mobile__nav__link'));\r\n const oMenuPhone = [].slice.call(oMenu.querySelectorAll('.header__mobile__phone'));\r\n const aMenuTitles = [].slice.call(oMenu.querySelectorAll('.header__mobile__actions__item'));\r\n const aMenuLangSwitches = [].slice.call(oMenu.querySelectorAll('.lang-switch__item'));\r\n const aStaggerItems = aMenuItems.concat(oMenuPhone, aMenuTitles, aMenuLangSwitches);\r\n\r\n const aMenuItemsSubmenu = [].slice.call(oMenu.querySelectorAll('.js-mobile-submenu'));\r\n const aSubmenuCloseBtns = [].slice.call(oMenu.querySelectorAll('.js-mobile-submenu-close'));\r\n\r\n let activeSubmenuParentLi = null;\r\n let activeSubmenu = null;\r\n\r\n const oTimeline = new TimelineMax({\r\n paused: true\r\n }).to(oMenu, 0.8, {\r\n pointerEvents: 'all',\r\n autoAlpha: 1\r\n }).staggerTo(aStaggerItems, 1, {\r\n autoAlpha: 1,\r\n y: 0\r\n }, 0.08);\r\n\r\n TweenMax.defaultEase = Quart.easeIntOut;\r\n\r\n window.addEventListener('click', function (event) {\r\n if (event.target.closest('.js-menu-open')) {\r\n event.preventDefault();\r\n\r\n oTimeline.timeScale(4).play();\r\n document.body.classList.add('no-scroll');\r\n } else if (event.target.closest('.js-menu-close')) {\r\n event.preventDefault();\r\n\r\n oTimeline.timeScale(5.5).reverse();\r\n document.body.classList.remove('no-scroll');\r\n }\r\n });\r\n\r\n function openSubmenu(trigger) {\r\n const submenu = trigger.nextElementSibling;\r\n const parentLi = trigger.parentElement;\r\n\r\n parentLi.style.zIndex = 1;\r\n\r\n submenu.classList.add('is-open');\r\n\r\n activeSubmenu = submenu;\r\n activeSubmenuParentLi = parentLi;\r\n }\r\n\r\n function closeSubmenu(trigger) {\r\n activeSubmenu.classList.remove('is-open');\r\n\r\n setTimeout(() => {\r\n activeSubmenuParentLi.style.zIndex = 0;\r\n activeSubmenu = null;\r\n activeSubmenuParentLi = null;\r\n }, 250);\r\n }\r\n\r\n for (let i = 0; i < aMenuItemsSubmenu.length; i += 1) {\r\n aMenuItemsSubmenu[i].addEventListener('click', (e) => {\r\n e.preventDefault();\r\n openSubmenu(aMenuItemsSubmenu[i]);\r\n });\r\n }\r\n\r\n for (let i = 0; i < aSubmenuCloseBtns.length; i += 1) {\r\n aSubmenuCloseBtns[i].addEventListener('click', (e) => {\r\n closeSubmenu(aSubmenuCloseBtns[i]);\r\n });\r\n }\r\n}","'use strict';\r\n\r\nclass Modal {\r\n constructor(modal) {\r\n this.modal = modal;\r\n this.id = this.modal.id;\r\n this.header = document.querySelector('.header');\r\n this.modalBody = this.modal.querySelector('.modal__body');\r\n this.openers = document.querySelectorAll('.js-modal-open[data-modal-id=\"' + this.id + '\"]');\r\n this.closers = this.modal.querySelectorAll('.js-modal-close');\r\n this.modalBg = (document.querySelector('.modal-bg')) ? document.querySelector('.modal-bg') : '';\r\n this.form = this.modal.querySelector('.form');\r\n\r\n this.populate();\r\n this.watch();\r\n }\r\n\r\n watch() {\r\n if (this.modalBg) {\r\n this.modalBg.addEventListener('click', event => {\r\n this.close(event);\r\n });\r\n }\r\n\r\n if (this.openers) {\r\n var root = this;\r\n\r\n for (let a = 0; a < this.openers.length; a += 1) {\r\n this.openers[a].addEventListener('click', event => {\r\n event.preventDefault();\r\n\r\n let content = this.openers[a].getAttribute('data-modal-content');\r\n if (content) {\r\n this.populate(content);\r\n }\r\n\r\n if (this.openers[a].classList.contains('js-modal-close')) {\r\n // Wait for close animation, otherwise we won't have a background\r\n setTimeout(function() {\r\n root.open();\r\n }, 400);\r\n } else {\r\n root.open();\r\n }\r\n })\r\n }\r\n }\r\n\r\n if (this.closers) {\r\n for (let b = 0; b < this.closers.length; b += 1) {\r\n this.closers[b].addEventListener('click', event => {\r\n this.close(event);\r\n });\r\n }\r\n }\r\n }\r\n\r\n populate(content) {\r\n // Loop over each key/value pair in json data\r\n if (content) {\r\n this.data = JSON.parse(content);\r\n \r\n Object.entries(this.data).forEach(([key, value]) => {\r\n // Get corresponding field in modal\r\n let fields = this.modal.querySelectorAll(`.js-modal-${key}`);\r\n\r\n // Fill field with data value\r\n for (let a = 0; a < fields.length; a += 1) {\r\n if (typeof value === \"object\") {\r\n for (let b = 0; b < value.length; b += 1) {\r\n let template = fields[a].parentNode.appendChild(fields[a].cloneNode(true));\r\n\r\n Object.entries(value[b]).forEach(([subkey, subvalue]) => {\r\n let subfield = template.querySelector(`.js-modal-${subkey}`);\r\n\r\n if (subfield.tagName === 'INPUT') {\r\n subfield.value = subvalue;\r\n } else {\r\n subfield.innerHTML = subvalue;\r\n }\r\n });\r\n }\r\n\r\n fields[a].style.display = \"none\";\r\n } else if (fields[a].tagName === 'INPUT') {\r\n fields[a].value = value;\r\n } else {\r\n fields[a].innerHTML = value;\r\n }\r\n }\r\n });\r\n }\r\n }\r\n\r\n open() {\r\n let tl = new TimelineLite();\r\n \r\n // Defaults\r\n tl.timeScale(3);\r\n TweenLite.defaultEase = Quart.easeOut;\r\n\r\n // Set top of modal to current scroll position\r\n if (document.documentElement.scrollTop > this.header.offsetHeight) {\r\n this.modal.style.top = (document.documentElement.scrollTop - document.querySelector('header').offsetHeight) + 'px';\r\n } else {\r\n this.modal.style.top = '0px';\r\n }\r\n\r\n // Create modal background\r\n if (document.querySelector('.modal-bg')) {\r\n this.modalBg = document.querySelector('.modal-bg');\r\n } else {\r\n this.modalBg = document.body.appendChild(document.createElement('div'));\r\n this.modalBg.classList.add('modal-bg');\r\n }\r\n\r\n this.modalBg.addEventListener('click', event => {\r\n this.close(event);\r\n });\r\n\r\n // Animate\r\n tl.set(this.modal, {display: 'block', x: '-50%', y: '100px'})\r\n .set(this.modalBg, {display: 'block'})\r\n .to(this.modal, 1, {autoAlpha: 1, y: '0px'})\r\n .to(this.modalBg, 1, {autoAlpha: 1, onComplete: this.showContent()}, '-=.8');\r\n }\r\n\r\n close(event) {\r\n event.preventDefault();\r\n\r\n let tl = new TimelineLite();\r\n\r\n const destroyModalBg = () => {\r\n this.modalBg.remove();\r\n }\r\n\r\n tl.timeScale(3);\r\n TweenLite.defaultEase = Quart.easeOut;\r\n \r\n tl.to(this.modalBody, 1, {autoAlpha: 0})\r\n .to(this.modalBg, 1, {autoAlpha: 0}, '-=1')\r\n .to(this.modal, 1, {autoAlpha: 0, y: '50px'}, '-=1')\r\n .set(this.modalBg, {display: 'none'})\r\n .set(this.modal, {display: 'none', onComplete: destroyModalBg});\r\n }\r\n\r\n showContent() {\r\n if (!this.modalBody) return;\r\n\r\n let tl = new TimelineLite();\r\n\r\n tl.to(this.modalBody, .3, {autoAlpha: 1});\r\n }\r\n\r\n static switchOverflow(modal, enableModalScroll) {\r\n if (enableModalScroll) {\r\n modal.style.overflowY = 'scroll';\r\n document.body.style.overflowY = 'hidden';\r\n } else {\r\n modal.style.overflowY = 'hidden';\r\n document.body.style.overflowY = 'auto';\r\n }\r\n }\r\n}\r\n\r\nfunction fInitModals() {\r\n const aModals = document.querySelectorAll('.modal');\r\n const sHash = location.hash;\r\n\r\n for (let i = 0; i < aModals.length; i += 1) {\r\n let modal = new Modal(aModals[i]);\r\n let modalHash = aModals[i].getAttribute('data-modal-hash');\r\n\r\n if (modalHash && sHash === '#' + modalHash) {\r\n modal.open();\r\n\r\n location.hash = '';\r\n }\r\n }\r\n}","function fInitNews() { \r\n function handleLoadClick(event) {\r\n event.preventDefault();\r\n\r\n const params = new URLSearchParams(event.target.getAttribute('href'));\r\n const p = params.get('p');\r\n const id = event.target.getAttribute('data-page');\r\n fFilterNewsArticles(p, id);\r\n }\r\n\r\n function bindHandlers (el) {\r\n el.addEventListener(('click'), handleLoadClick, true);\r\n }\r\n\r\n function fFilterNewsArticles (page, pageid) {\r\n let oRequest = new XMLHttpRequest();\r\n\r\n oRequest.open('GET', `/Umbraco/Surface/NewsOverview/GetAvailableNewsArticles?p=${page}&id=${pageid}`, true);\r\n oRequest.onreadystatechange = () => {\r\n if (oRequest.readyState === XMLHttpRequest.DONE) {\r\n if (oRequest.status === 200) {\r\n let newsResultsContainer = document.querySelector('.js-news-results');\r\n history.pushState({}, `Pagina ${page}`, `?p=${page}`);\r\n\r\n // Remove old Load More button\r\n newsResultsContainer.querySelector('.js-news-load').parentElement.remove();\r\n\r\n // Insert Response HTML\r\n newsResultsContainer.insertAdjacentHTML('beforeend', oRequest.responseText);\r\n\r\n // Bind click handler to new load more button\r\n if(newsResultsContainer.querySelector('.js-news-load')) {\r\n bindHandlers(newsResultsContainer.querySelector('.js-news-load'));\r\n }\r\n } else {\r\n // Error\r\n }\r\n }\r\n };\r\n oRequest.send();\r\n }\r\n\r\n if (document.querySelector('.js-news-load')) {\r\n bindHandlers(document.querySelector('.js-news-load'));\r\n }\r\n}\r\n","'use strict';\r\n\r\nfunction fRichtextCollapse () {\r\n window.addEventListener('click', function (event) {\r\n if (event.target.closest('.js-richtext-collapse-show')) {\r\n var preview = event.target.closest('.richtext__collapse').querySelector('.richtext__collapse__text-preview');\r\n var text = event.target.closest('.richtext__collapse').querySelector('.richtext__collapse__text');\r\n\r\n preview.style.display = 'none';\r\n text.style.display = 'block';\r\n }\r\n });\r\n}","'use strict';\r\n\r\nfunction fInitScrollSpy() {\r\n const oScrollspyObjects = document.querySelectorAll('.js-scrollspy');\r\n\r\n function initScrollspy(el) {\r\n const oScrollspyNav = el.querySelector('.js-scrollspy-nav');\r\n const oScrollspyNavVertical = el.querySelector('.js-scrollspy-nav-inline');\r\n const aScrollspyNavItems = el.querySelectorAll('.js-scrollspy-button');\r\n const aScrollspySections = document.querySelectorAll('.js-scrollspy-section, section[id]');\r\n const iNavOffset = oScrollspyNav && offset(oScrollspyNav);\r\n\r\n function fToggleStickyNav (iScrollPosition) {\r\n if (iScrollPosition > iNavOffset.top - 100) {\r\n oScrollspyNav.classList.add('is-sticky');\r\n } else {\r\n oScrollspyNav.classList.remove('is-sticky');\r\n }\r\n }\r\n\r\n function fCheckiScrollPosition () {\r\n let iScrollPosition = document.documentElement.scrollTop || document.body.scrollTop;\r\n\r\n if (oScrollspyNav) {\r\n fToggleStickyNav(iScrollPosition);\r\n }\r\n\r\n for(let i = 0; i < aScrollspySections.length; i+=1) {\r\n if((aScrollspySections[i].getBoundingClientRect().top - 150) + (window.scrollY || window.pageYOffset) <= iScrollPosition) {\r\n for(let p = 0; p < aScrollspyNavItems.length; p += 1) {\r\n let oItem = aScrollspyNavItems[p];\r\n\r\n if(oItem.classList.contains('is-active')){\r\n oItem.classList.remove('is-active');\r\n }\r\n\r\n if(oItem.getAttribute('href') === `#${aScrollspySections[i].id}` && !oItem.classList.contains('is-active')) {\r\n oItem.classList.add('is-active');\r\n\r\n if (oScrollspyNavVertical) {\r\n if (p === 0) {\r\n oScrollspyNavVertical.scrollLeft = 0;\r\n } else {\r\n oScrollspyNavVertical.scrollLeft += oItem.getBoundingClientRect().left - 15;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n function fScrollToSection (event) {\r\n const oButton = event.target.closest('.js-scrollspy-button');\r\n const oScrollDestEl = document.getElementById(oButton.getAttribute('href').slice(1));\r\n\r\n scrollIt(offset(oScrollDestEl).top - 130, 400, 'easeInQuad', 0);\r\n event.preventDefault();\r\n }\r\n\r\n for (let p = 0; p < aScrollspyNavItems.length; p += 1) {\r\n aScrollspyNavItems[p].addEventListener('click', function (event) {\r\n fScrollToSection(event);\r\n });\r\n }\r\n\r\n window.onscroll = () => fCheckiScrollPosition();\r\n fCheckiScrollPosition();\r\n }\r\n\r\n oScrollspyObjects.forEach(el => {\r\n initScrollspy(el);\r\n });\r\n}\r\n","function fSelect() {\r\n function removeActiveState() {\r\n let select = document.querySelector(\".js-select.is-active\");\r\n\r\n if(select != null){\r\n select.classList.remove(\"is-active\");\r\n }\r\n }\r\n\r\n document.addEventListener('click', function(event) {\r\n let select;\r\n\r\n if(event.target.matches('.js-select') || event.target.closest('.js-select')) {\r\n select = event.target.matches('.js-select') || event.target.closest('.js-select');\r\n\r\n if(select.matches('.is-active')) {\r\n removeActiveState();\r\n } else {\r\n removeActiveState();\r\n\r\n select.classList.add(\"is-active\");\r\n }\r\n } else {\r\n if(!event.target.matches('.js-select.is-active') || event.target.closest('.js-select.is-active')) {\r\n removeActiveState();\r\n }\r\n }\r\n\r\n if(event.target.matches('.js-select-option')) {\r\n let parent = event.target.closest('.js-select');\r\n let oSelectedValue = parent.querySelector('.js-select-value');\r\n let oHiddenInput = parent.querySelector('input[type=\"hidden\"]');\r\n\r\n if (oSelectedValue) oSelectedValue.innerHTML = event.target.innerHTML;\r\n if (oHiddenInput) {\r\n oHiddenInput.value = event.target.innerHTML;\r\n\r\n // Validate the field\r\n let error = validate.hasError(oHiddenInput);\r\n\r\n // If there's an error, show it\r\n if (error) {\r\n validate.showError(oHiddenInput, error);\r\n return;\r\n }\r\n\r\n // Otherwise, remove any errors that exist\r\n validate.removeError(oHiddenInput);\r\n\r\n // And add success class to field\r\n oHiddenInput.classList.add('is-successful');\r\n }\r\n }\r\n });\r\n}\r\n","if ('serviceWorker' in navigator) {\r\n navigator.serviceWorker.register('/sw.js').then(function() {\r\n console.log(\"Service Worker Registered\");\r\n });\r\n}","'use strict';\r\n\r\nfunction fSliderCalendar () {\r\n var oSlider = document.querySelector('.js-slider-calendar');\r\n var oSliderList = oSlider.querySelector('.linkblock__calendar__list');\r\n var aSlides = oSlider.querySelectorAll('.linkblock__calendar__item');\r\n var aTimerItems = oSlider.querySelectorAll('.linkblock__calendar__timer__item');\r\n var iCurrentIndex = 0;\r\n var iNextIndex = 1;\r\n var oCurrentSlide;\r\n var oNextSlide;\r\n var iSliderHeight = aSlides[0].offsetHeight;\r\n\r\n // Calculate height after page is done loading\r\n for (var a = 0; a < aSlides.length; a += 1) {\r\n if (aSlides[a].offsetHeight > iSliderHeight) {\r\n iSliderHeight = aSlides[a].offsetHeight;\r\n }\r\n\r\n aSlides[a].style.height = '100%';\r\n }\r\n\r\n oSlider.style.height = iSliderHeight + 'px';\r\n \r\n function fSwitchGlobals () {\r\n var iTempNext = iNextIndex;\r\n iCurrentIndex = iTempNext;\r\n iNextIndex = (iCurrentIndex === (aSlides.length - 1)) ? 0 : iTempNext + 1;\r\n }\r\n\r\n aTimerItems[iCurrentIndex].classList.add('is-active');\r\n\r\n setInterval(function fAnimate() {\r\n var oTimeline = new TimelineLite();\r\n\r\n // Set slides\r\n oCurrentSlide = aSlides[iCurrentIndex];\r\n oNextSlide = aSlides[iNextIndex];\r\n\r\n // Set active on timer item\r\n aTimerItems[iCurrentIndex].classList.remove('is-active');\r\n aTimerItems[iNextIndex].classList.add('is-active');\r\n \r\n // Set timeline defaults\r\n TweenLite.defaultEase = Quart.easeInOut;\r\n oTimeline.timeScale(0.75);\r\n \r\n // Play animation\r\n oTimeline.set(oNextSlide, {\r\n y: '100%'\r\n })\r\n .to(oCurrentSlide, 1, {\r\n y: '-100%'\r\n })\r\n .to(oNextSlide, 1, {\r\n y: '0%',\r\n onComplete: fSwitchGlobals\r\n }, 0);\r\n }, 5000);\r\n}","'use strict';\r\n\r\nfunction fSliderCards () {\r\n const aSliders = document.querySelectorAll('.js-slider-cards');\r\n\r\n function fSetGroupcells (isEvents) {\r\n if (window.innerWidth < 800) {\r\n return 1;\r\n } else if (window.innerWidth < 1200) {\r\n return 2;\r\n } else if (window.innerWidth < 1700) {\r\n return isEvents ? 2 : 3;\r\n } else {\r\n return isEvents ? 3 : 4;\r\n }\r\n }\r\n\r\n function fInitSlider (oSlider) {\r\n const oList = oSlider.querySelector('.js-slider-list');\r\n const oNav = oSlider.querySelector('.js-slider-nav');\r\n const oTextblock = oSlider.querySelector('.js-slider-cards-textblock');\r\n const oButtonPrev = oSlider.querySelector('.js-slider-prev');\r\n const oButtonNext = oSlider.querySelector('.js-slider-next');\r\n const isEvents = oList.hasAttribute('data-events');\r\n\r\n let oFlickity = new Flickity(oList, {\r\n cellAlign: 'left',\r\n draggable: true,\r\n contain: true,\r\n groupCells: fSetGroupcells(isEvents),\r\n freeScroll: false,\r\n prevNextButtons: false,\r\n watchCSS: true,\r\n on: {\r\n ready: function () {\r\n if (oNav) oNav.style.display = 'block';\r\n if (oButtonPrev) oButtonPrev.addEventListener('click', function () { oFlickity.previous(); });\r\n if (oButtonNext) oButtonNext.addEventListener('click', function () { oFlickity.next(); });\r\n\r\n if (this.options.groupCells >= this.cells.length && oButtonNext) {\r\n oButtonNext.style.display = 'none';\r\n }\r\n\r\n },\r\n change: function (index) {\r\n if (oButtonNext) {\r\n if (oFlickity.selectedIndex + 1 === oFlickity.slides.length) {\r\n oButtonNext.style.opacity = 0;\r\n } else {\r\n oButtonNext.style.opacity = 1;\r\n }\r\n }\r\n\r\n if (oButtonPrev) {\r\n if (index > 0) {\r\n oButtonPrev.style.opacity = 1;\r\n } else {\r\n oButtonPrev.style.opacity = 0;\r\n }\r\n }\r\n }\r\n }\r\n });\r\n\r\n window.addEventListener('resize', function () {\r\n oFlickity.options.groupCells = fSetGroupcells(isEvents);\r\n\r\n if (oButtonNext) {\r\n if (oFlickity.options.groupCells < oFlickity.cells.length) {\r\n oButtonNext.style.display = 'block';\r\n } else {\r\n oButtonNext.style.display = 'none';\r\n }\r\n }\r\n });\r\n\r\n let iCalculatedOpacity;\r\n\r\n function fPosToNeg (number) {\r\n return Math.abs(number);\r\n }\r\n\r\n function fAnimateTextblock () {\r\n if (window.innerWidth < 992) return;\r\n\r\n oTextblock.style.transitionDuration = '0s';\r\n iCalculatedOpacity = (2 / (fPosToNeg(oFlickity.dragX) / 100)) - 1;\r\n\r\n oTextblock.style.opacity = iCalculatedOpacity;\r\n\r\n if ((oFlickity.dragX / 2) > -100 && (oFlickity.dragX / 2) < 0) {\r\n oTextblock.style.transform = 'translateX(' + (oFlickity.dragX / 2) + 'px)';\r\n }\r\n }\r\n\r\n if (oTextblock) {\r\n oFlickity.on('change', function (index) {\r\n if (window.innerWidth < 992) return;\r\n\r\n if (index > 0) {\r\n oTextblock.setAttribute('style', '');\r\n oTextblock.style.transitionDuration = '.4s';\r\n oTextblock.style.opacity = 0;\r\n oButtonPrev.style.opacity = 1;\r\n } else {\r\n oTextblock.style.transitionDuration = '1s';\r\n oTextblock.style.opacity = 1;\r\n oButtonPrev.style.opacity = 0;\r\n }\r\n });\r\n\r\n oFlickity.on('dragMove', fAnimateTextblock);\r\n }\r\n }\r\n\r\n for (let a = 0; a < aSliders.length; a += 1) {\r\n fInitSlider(aSliders[a]);\r\n }\r\n}","'use strict';\r\n\r\nfunction fSliderInspire () {\r\n let oSlider = document.querySelector('.js-slider-inspire');\r\n let oTextblock = document.querySelector('.js-slider-inspire-textblock');\r\n let oNav = document.querySelector('.js-slider-inspire-nav');\r\n let oButtonPrev = document.querySelector('.js-slider-inspire-prev');\r\n let oButtonNext = document.querySelector('.js-slider-inspire-next');\r\n let oFlickity = new Flickity(oSlider, {\r\n cellAlign: 'left',\r\n draggable: true,\r\n contain: true,\r\n groupCells: 2,\r\n freeScroll: false,\r\n prevNextButtons: false,\r\n on: {\r\n ready: function () {\r\n oNav.style.display = 'block';\r\n\r\n oButtonPrev.addEventListener('click', function() {\r\n oFlickity.previous();\r\n });\r\n\r\n oButtonNext.addEventListener('click', function() {\r\n oFlickity.next();\r\n });\r\n },\r\n dragStart: function () {\r\n oSlider.style.pointerEvents = 'none';\r\n },\r\n dragEnd: function () {\r\n oSlider.style.pointerEvents = 'all';\r\n }\r\n }\r\n });\r\n let iCalculatedOpacity;\r\n\r\n function fPosToNeg (number) {\r\n return Math.abs(number);\r\n }\r\n\r\n function fAnimateTextblock () {\r\n if (window.innerWidth < 992) return;\r\n\r\n oTextblock.style.transitionDuration = '0s';\r\n iCalculatedOpacity = (2 / (fPosToNeg(oFlickity.dragX) / 100)) - 1;\r\n \r\n oTextblock.style.opacity = iCalculatedOpacity;\r\n\r\n if ((oFlickity.dragX / 2) > -100 && (oFlickity.dragX / 2) < 0) {\r\n oTextblock.style.transform = 'translateX(' + (oFlickity.dragX / 2) + 'px)';\r\n }\r\n }\r\n\r\n oFlickity.on('change', function (index) {\r\n if (window.innerWidth < 992) return;\r\n\r\n if (index > 0) {\r\n oTextblock.setAttribute('style', '');\r\n oTextblock.style.transitionDuration = '.4s';\r\n oTextblock.style.opacity = 0;\r\n oButtonPrev.style.opacity = 1;\r\n } else {\r\n oTextblock.style.transitionDuration = '1s';\r\n oTextblock.style.opacity = 1;\r\n oButtonPrev.style.opacity = 0;\r\n }\r\n });\r\n\r\n oFlickity.on('dragMove', fAnimateTextblock);\r\n}","'use strict';\r\n\r\nfunction fSliderMedia () {\r\n const aSliders = document.querySelectorAll('.js-slider-media');\r\n\r\n function fInitSlider (oSlider) {\r\n const oList = oSlider.querySelector('.js-slider-media-list');\r\n const oListItems = oSlider.querySelectorAll('.js-slider-media-item');\r\n const oNav = document.querySelector('.js-slider-media-nav');\r\n const oButtonPrev = oSlider.querySelector('.js-slider-media-prev');\r\n const oButtonNext = oSlider.querySelector('.js-slider-media-next');\r\n\r\n let oFlickity = new Flickity(oList, {\r\n wrapAround: true,\r\n prevNextButtons: false,\r\n on: {\r\n ready: function() {\r\n oNav.style.display = 'block';\r\n\r\n if (oButtonPrev) oButtonPrev.addEventListener('click', function () { oFlickity.previous(); });\r\n if (oButtonNext) oButtonNext.addEventListener('click', function () { oFlickity.next(); });\r\n\r\n for (let a = 0; a < oListItems.length; a += 1) {\r\n oListItems[a].style.height = '100%';\r\n }\r\n }\r\n }\r\n });\r\n }\r\n\r\n for (let a = 0; a < aSliders.length; a += 1) {\r\n fInitSlider(aSliders[a]);\r\n }\r\n}","'use strict';\r\n\r\nfunction fSliderTimeline () {\r\n const aSliders = document.querySelectorAll('.js-timeline');\r\n \r\n function fInitSlider (oSlider) {\r\n const oList = oSlider.querySelector('.js-timeline-list');\r\n const aListItems = oList.querySelectorAll('.timeline__item');\r\n const oNav = oSlider.querySelector('.js-timeline-nav');\r\n const oButtonPrev = oSlider.querySelector('.js-timeline-prev');\r\n const oButtonNext = oSlider.querySelector('.js-timeline-next');\r\n\r\n for (var a = 0; a < aListItems.length; a += 1) {\r\n aListItems[a].style.width = aListItems[a].offsetWidth + 'px';\r\n }\r\n oList.style.display = 'block';\r\n\r\n let oFlickity = new Flickity(oList, {\r\n cellAlign: 'left',\r\n contain: true,\r\n freeScroll: true,\r\n pageDots: false,\r\n on: {\r\n ready: function () {\r\n if (oNav) oNav.style.display = 'block';\r\n if (oButtonPrev) oButtonPrev.addEventListener('click', function () { oFlickity.previous(); });\r\n if (oButtonNext) oButtonNext.addEventListener('click', function () { oFlickity.next(); });\r\n },\r\n change: function (index) {\r\n if (oFlickity.selectedIndex + 1 === oFlickity.slides.length) {\r\n oButtonNext.style.opacity = 0;\r\n } else {\r\n oButtonNext.style.opacity = 1;\r\n }\r\n\r\n if (index > 0) {\r\n oButtonPrev.style.opacity = 1;\r\n } else {\r\n oButtonPrev.style.opacity = 0;\r\n }\r\n }\r\n }\r\n });\r\n }\r\n\r\n for (let a = 0; a < aSliders.length; a += 1) {\r\n fInitSlider(aSliders[a]);\r\n }\r\n}","'use strict';\r\n\r\nfunction fSliderUsp () {\r\n var slider = document.querySelector('.js-usp');\r\n var backgrounds = slider.querySelector('.js-usp-background');\r\n var buttons = Array.prototype.slice.call(slider.querySelectorAll('.js-usp-button'));\r\n var navIndicator = slider.querySelector('.js-usp-indicator');\r\n var textblocks = Array.prototype.slice.call(slider.querySelectorAll('.js-usp-text'));\r\n var currentTextblock = slider.querySelector('.usp__content__item.is-active');\r\n\r\n // Calculate height of slider\r\n if (window.innerWidth < 992) {\r\n let sliderWrapper = slider.querySelector('.usp__slider');\r\n\r\n if (sliderWrapper) sliderWrapper.style.height = (textblocks[0].offsetHeight + 40) + 'px';\r\n }\r\n\r\n var flickity = new Flickity(backgrounds, {\r\n cellAlign: 'left',\r\n draggable: true,\r\n contain: true,\r\n percentPosition: false,\r\n prevNextButtons: false\r\n });\r\n\r\n function fMoveIndicator (index) {\r\n navIndicator.style.left = (((index) * 10) * 2) + '%';\r\n }\r\n\r\n flickity.on('dragStart', function () {\r\n currentTextblock.classList.remove('is-active');\r\n });\r\n\r\n flickity.on('dragEnd', function () {\r\n var textblock = textblocks[flickity.selectedIndex];\r\n\r\n textblock.classList.add('is-active');\r\n currentTextblock = textblock;\r\n\r\n fMoveIndicator(flickity.selectedIndex);\r\n });\r\n\r\n flickity.on('change', function (index) {\r\n var textblock = textblocks[flickity.selectedIndex];\r\n\r\n currentTextblock.classList.remove('is-active');\r\n textblock.classList.add('is-active');\r\n currentTextblock = textblock;\r\n\r\n fMoveIndicator(index);\r\n });\r\n\r\n slider.addEventListener('click', function (event) {\r\n if (event.target.closest('.js-usp-button')) {\r\n var index = buttons.indexOf(event.target);\r\n var textblock = textblocks[index];\r\n \r\n currentTextblock.classList.remove('is-active');\r\n textblock.classList.add('is-active');\r\n \r\n currentTextblock = textblock;\r\n \r\n flickity.select(index);\r\n }\r\n });\r\n}","'use strict';\r\n\r\nfunction fSocialShare () {\r\n const socialShareButton = document.querySelector('.social-share');\r\n\r\n document.addEventListener('click', function(event) {\r\n if (event.target.closest('.social-share')) {\r\n socialShareButton.classList.toggle('is-active');\r\n } else {\r\n socialShareButton.classList.remove('is-active');\r\n }\r\n })\r\n}","class StickyBar {\r\n constructor({ el, offset, checkUpScroll = true }) {\r\n this.el = el;\r\n this.initialOffset = offset;\r\n this.checkUpScroll = checkUpScroll\r\n this.currentScrollPosition = window.pageYOffset || document.documentElement.scrollTop;\r\n this.stickyHeader = document.querySelector('.js-sticky-header');\r\n this.scrollSection = this.el.querySelector('.sticky-bar__nav');\r\n\r\n this.errorMargin = 4;\r\n\r\n this.isMouseDown = false;\r\n this.startX = null;\r\n this.scrollLeft = null;\r\n\r\n this.offset = this.getOffset(this.initialOffset);\r\n\r\n document.addEventListener('scroll', this.checkPosition.bind(this));\r\n document.addEventListener('resize', this.setOffset.bind(this));\r\n\r\n this.scrollSection.addEventListener('mousedown', this.onMouseDown.bind(this));\r\n this.scrollSection.addEventListener('mouseleave', this.onMouseLeave.bind(this));\r\n this.scrollSection.addEventListener('mouseup', this.onMouseUp.bind(this));\r\n this.scrollSection.addEventListener('mousemove', this.onMouseMove.bind(this));\r\n\r\n this.observer = new IntersectionObserver((entries) => {\r\n if (entries[0].intersectionRatio < 1 ) {\r\n this.el.classList.add('is-sticky');\r\n } else if (!this.el.classList.contains('scroll-up')) {\r\n this.el.classList.remove('is-sticky');\r\n }\r\n }, {\r\n rootMargin: '-1px 0px 0px 0px',\r\n threshold: [1]\r\n });\r\n\r\n this.observer.observe(this.el);\r\n\r\n this.checkPosition();\r\n }\r\n\r\n checkPosition() {\r\n const iScrollPosition = window.pageYOffset || document.documentElement.scrollTop;\r\n\r\n // Scrolling up\r\n if (this.checkUpScroll) {\r\n if (iScrollPosition < this.currentScrollPosition) {\r\n this.el.classList.add('scroll-up');\r\n } else {\r\n this.el.classList.remove('scroll-up');\r\n }\r\n }\r\n\r\n if (this.el.getBoundingClientRect().top > this.el.getBoundingClientRect().height) {\r\n this.el.classList.remove('is-sticky');\r\n }\r\n\r\n this.currentScrollPosition = iScrollPosition;\r\n }\r\n\r\n setOffset() {\r\n this.offset = this.getOffset(this.initialOffset);\r\n }\r\n\r\n getOffset(offset) {\r\n if (typeof offset === 'number') {\r\n return offset + this.el.getBoundingClientRect().top;\r\n }\r\n\r\n return (this.el.getBoundingClientRect().top + window.pageYOffset);\r\n }\r\n\r\n onMouseDown(e) {\r\n this.isDown = true;\r\n this.scrollSection.classList.add('is-active');\r\n this.startX = e.pageX - this.scrollSection.offsetLeft;\r\n this.scrollLeft = this.scrollSection.scrollLeft;\r\n }\r\n\r\n onMouseLeave(e) {\r\n this.isDown = false;\r\n this.scrollSection.classList.remove('is-active');\r\n }\r\n\r\n onMouseUp(e) {\r\n this.isDown = false;\r\n this.scrollSection.classList.remove('is-active');\r\n }\r\n\r\n onMouseMove(e) {\r\n if(!this.isDown) return;\r\n\r\n e.preventDefault();\r\n\r\n const x = e.pageX - this.scrollSection.offsetLeft;\r\n const walk = (x - this.startX) * 1.2;\r\n this.scrollSection.scrollLeft = this.scrollLeft - walk;\r\n }\r\n}","'use strict';\r\n\r\nfunction fStickyHeader () {\r\n const oHeader = document.querySelector('.js-sticky-header');\r\n const oHeaderOffset = oHeader.offsetTop;\r\n\r\n function fSwitchState () {\r\n let iScrollPosition = window.pageYOffset || document.documentElement.scrollTop;\r\n\r\n if (iScrollPosition > oHeaderOffset) {\r\n oHeader.classList.add('is-sticky');\r\n } else {\r\n oHeader.classList.remove('is-sticky');\r\n }\r\n }\r\n \r\n fSwitchState();\r\n document.addEventListener('scroll', fSwitchState);\r\n}","function fSubmenu() {\r\n const aSubmenus = document.querySelectorAll('.js-submenu');\r\n let windowWidth = window.innerWidth;\r\n\r\n function positionSubmenu(submenu, bounds) {\r\n if (bounds.right > windowWidth) {\r\n submenu.classList.add('submenu--right');\r\n } else {\r\n submenu.classList.remove('submenu--right');\r\n }\r\n\r\n if (bounds.left < 0) {\r\n submenu.classList.add('submenu--left');\r\n } else {\r\n submenu.classList.remove('submenu--left');\r\n }\r\n }\r\n\r\n function getSubmenus() {\r\n for (let i = 0; i < aSubmenus.length; i += 1) {\r\n const bounds = aSubmenus[i].getBoundingClientRect();\r\n positionSubmenu(aSubmenus[i], bounds);\r\n }\r\n }\r\n\r\n getSubmenus();\r\n\r\n window.addEventListener('resize', () => {\r\n windowWidth = window.innerWidth;\r\n getSubmenus();\r\n });\r\n}","'use strict';\r\n\r\nfunction fInitTabs () {\r\n function fOpenTab (aTargets, oTrigger) {\r\n aTargets[0].classList.remove('is-active');\r\n aTargets[1].classList.remove('is-active');\r\n aTargets[2].classList.add('is-active');\r\n oTrigger.classList.add('is-active');\r\n }\r\n\r\n function fGetTargets (sId) {\r\n const oTarget = document.getElementById(sId);\r\n const oParent = oTarget.closest('.js-tabs');\r\n const oCurrentTrigger = oParent.querySelector('.js-tabs-open.is-active');\r\n const oCurrentContent = oParent.querySelector('.js-tabs-target.is-active');\r\n\r\n return [oCurrentTrigger, oCurrentContent, oTarget];\r\n }\r\n\r\n function fHashHandler () {\r\n const sHash = window.location.hash.substr(1); \r\n\r\n if (!sHash) return;\r\n\r\n const oTrigger = document.querySelector(`[data-tabs-id=\"${sHash}\"]`);\r\n\r\n fOpenTab(fGetTargets(sHash), oTrigger);\r\n }\r\n\r\n function fClickHandler (oTrigger) {\r\n const sId = oTrigger.getAttribute('data-tabs-id');\r\n const aTargets = fGetTargets(sId);\r\n \r\n fOpenTab(aTargets, oTrigger);\r\n\r\n\t\taTargets[2].id = '';\r\n window.location.hash = `#${sId}`;\r\n aTargets[2].id = sId;\r\n }\r\n\r\n window.addEventListener('click', function (event) {\r\n if (event.target.matches('.js-tabs-open') || event.target.closest('.js-tabs-open')) {\r\n fClickHandler(event.target);\r\n }\r\n });\r\n \r\n fHashHandler();\r\n}","'use strict';\r\n\r\nfunction fVideo () {\r\n let oScriptTag = document.createElement('script');\r\n oScriptTag.src = \"https://www.youtube.com/iframe_api\";\r\n\r\n let oFirstScriptTag = document.getElementsByTagName('script')[0];\r\n oFirstScriptTag.parentNode.insertBefore(oScriptTag, oFirstScriptTag);\r\n\r\n function offset(el) {\r\n let rect = el.getBoundingClientRect();\r\n let scrollLeft = window.pageXOffset || document.documentElement.scrollLeft;\r\n let scrollTop = window.pageYOffset || document.documentElement.scrollTop;\r\n \r\n return { top: rect.top + scrollTop, left: rect.left + scrollLeft }\r\n }\r\n\r\n function fAnimateModalIn (oModal, oBackdrop, oSourceDimensions, sYoutubeId) {\r\n let oTimeline = new TimelineMax();\r\n let iVideoWidth = (window.innerWidth * 80) / 100;\r\n let iVideoHeight = (iVideoWidth * 9) / 16;\r\n\r\n if (iVideoHeight > window.innerHeight) {\r\n iVideoHeight = (window.innerHeight * 80) / 100;\r\n iVideoWidth = (iVideoHeight * 16) / 9;\r\n }\r\n\r\n TweenLite.defaultEase = Quart.easeInOut;\r\n oTimeline.timeScale(2);\r\n\r\n function fFixModal () {\r\n oModal.style.position = 'fixed';\r\n oModal.style.top = `${(window.innerHeight - (iVideoHeight)) / 2}px`;\r\n }\r\n\r\n oTimeline\r\n .set(oModal, {\r\n display: 'block',\r\n top: oSourceDimensions.y,\r\n left: oSourceDimensions.x,\r\n width: oSourceDimensions.width,\r\n height: oSourceDimensions.height,\r\n })\r\n .to(oModal, 1, {\r\n autoAlpha: 1,\r\n ease: Quart.linear\r\n })\r\n .to(oModal, 1.2, {\r\n top: `${((window.innerHeight - (iVideoHeight)) / 2) + window.pageYOffset}px`,\r\n height: `${iVideoHeight}px`,\r\n left: '0',\r\n right: '0',\r\n margin: 'auto',\r\n width: `${iVideoWidth}px`,\r\n onComplete: fFixModal\r\n }, '-=0.5')\r\n .to(oBackdrop, 1, {\r\n autoAlpha: 1,\r\n onComplete: fCreatePlayer,\r\n onCompleteParams: [sYoutubeId]\r\n }, '-=1');\r\n }\r\n\r\n function fAnimateModalOut (oModal, oBackdrop) {\r\n let oTimeline = new TimelineMax();\r\n let oIframe = oModal.querySelector('iframe');\r\n\r\n TweenLite.defaultEase = Quart.easeInOut;\r\n oTimeline.timeScale(2);\r\n \r\n function fDestroyModal () {\r\n oModal.remove();\r\n oBackdrop.remove();\r\n }\r\n \r\n oTimeline\r\n .to(oIframe, 0.8, {\r\n autoAlpha: 0\r\n })\r\n .to(oBackdrop, 1, {\r\n autoAlpha: 0\r\n })\r\n .to(oModal, .7, {\r\n scaleX: .8\r\n }, '-=0.8')\r\n .to(oModal, .7, {\r\n y: '150%',\r\n onComplete: fDestroyModal\r\n }, '-=0.4');\r\n }\r\n\r\n function fCreatePlayer (sYoutubeId) {\r\n let oPlayer = new YT.Player(sYoutubeId, {\r\n videoId: sYoutubeId,\r\n playerVars: {\r\n rel: 0,\r\n controls: 0,\r\n modestbranding: 1,\r\n autoplay: 1,\r\n showinfo: 0,\r\n start: 0\r\n }\r\n });\r\n }\r\n\r\n function fCreateModal (oButton) {\r\n // Get source and its dimensions and offset\r\n let oSource = oButton.parentNode.querySelector('.js-video-source');\r\n let sYoutubeId = oButton.getAttribute('data-video-id');\r\n\r\n if (!oSource || !sYoutubeId) return;\r\n\r\n let oSourceDimensions = {\r\n width: oSource.offsetWidth,\r\n height: oSource.offsetHeight,\r\n x: offset(oSource).left,\r\n y: offset(oSource).top\r\n }\r\n\r\n // Create a modal and backdrop\r\n let oModal = document.createElement('div');\r\n let oModalClose = document.createElement('button');\r\n let oVideoFrame = document.createElement('div');\r\n let oBackdrop = document.createElement('div');\r\n\r\n // Add modal to body\r\n oModal.setAttribute('class', 'modal modal--video');\r\n document.body.appendChild(oModal);\r\n\r\n // Add closer button to modal\r\n oModalClose.classList.add('modal__close');\r\n oModalClose.innerHTML = '';\r\n oModal.appendChild(oModalClose);\r\n\r\n // Add video frame to modal\r\n oVideoFrame.id = sYoutubeId;\r\n oModal.appendChild(oVideoFrame);\r\n\r\n // Add backdrop to body\r\n oBackdrop.classList.add('backdrop');\r\n document.body.appendChild(oBackdrop);\r\n\r\n // Animate them\r\n fAnimateModalIn(oModal, oBackdrop, oSourceDimensions, sYoutubeId);\r\n\r\n // Add event listeners to backdrop & closer to close modal\r\n window.addEventListener('click', function(event) {\r\n if (event.target.closest('.backdrop') || event.target.closest('.modal__close')) {\r\n fAnimateModalOut(oModal, oBackdrop);\r\n }\r\n });\r\n }\r\n\r\n window.addEventListener('click', function (event) {\r\n if (event.target.closest('.js-video-open')) {\r\n fCreateModal(event.target.closest('.js-video-open'));\r\n }\r\n });\r\n}","function fInitSiteCta() {\r\n const siteCtaPopup = document.querySelector('.js-cta-popup');\r\n let cookie = Cookies.get('closedCta');\r\n let cookiesAccepted = Cookies.get('Cookieconsent');\r\n\r\n if (!siteCtaPopup) return;\r\n\r\n const siteCtaPopupClose = siteCtaPopup.querySelector('.js-popup-close');\r\n const siteCtaButton = siteCtaPopup.querySelector('.website-cta-popup a');\r\n\r\n if (!cookiesAccepted) {\r\n siteCtaPopup.classList.add('cookiebar-active');\r\n }\r\n\r\n if (cookie === undefined) {\r\n setTimeout(function () { \r\n siteCtaPopup.classList.add('active');\r\n }, 1500);\r\n }\r\n \r\n siteCtaPopupClose.addEventListener('click', event => {\r\n event.preventDefault();\r\n\r\n siteCtaPopup.classList.remove('active');\r\n\r\n Cookies.set('closedCta', 'yes', { expires: 1 }); \r\n });\r\n\r\n siteCtaButton.addEventListener('click', event => {\r\n Cookies.set('closedCta', 'yes', { expires: 1 });\r\n });\r\n} \r\n","'use strict';\r\n\r\nfunction fZoomer () {\r\n function fDestroyZoomed (oZoomed = null, oBackdrop = null) {\r\n if (!oZoomed) oZoomed = document.querySelector('.zoomer');\r\n if (!oBackdrop) oBackdrop = document.querySelector('.backdrop--zoomer');\r\n\r\n if (oZoomed) oZoomed.parentNode.removeChild(oZoomed);\r\n if (oBackdrop) oBackdrop.parentNode.removeChild(oBackdrop);\r\n }\r\n\r\n function fGetSourceDimensions (oSource) {\r\n let oSourceDimensions = {\r\n width: oSource.offsetWidth,\r\n height: oSource.offsetHeight,\r\n x: offset(oSource).left,\r\n y: offset(oSource).top\r\n }\r\n\r\n return oSourceDimensions;\r\n }\r\n \r\n function fAnimateZoomed (oSource, oZoomed, nZoomedDimensions, oBackdrop, oCloser) {\r\n const oTimeline = new TimelineMax();\r\n const oZoomedImage = oZoomed.querySelector('.zoomer__image');\r\n const oSourceDimensions = fGetSourceDimensions(oSource);\r\n let nTopOffset = (window.innerHeight - nZoomedDimensions[1]) / 2;\r\n\r\n if (window.innerHeight < nZoomedDimensions[1]) {\r\n nTopOffset = (window.innerHeight - ((90 / 100) * window.innerHeight)) / 2;\r\n }\r\n \r\n function fFixModal () {\r\n oZoomed.style.position = 'fixed';\r\n oZoomed.style.top = '5%';\r\n oZoomed.style.bottom = '5%';\r\n oZoomed.style.left = '50%';\r\n oZoomed.style.right = 'auto';\r\n oZoomed.style.transform = 'translateX(-50%)';\r\n }\r\n\r\n oTimeline.timeScale(2.7);\r\n oTimeline\r\n .set(oZoomed, {\r\n display: 'block',\r\n top: oSourceDimensions.y,\r\n left: oSourceDimensions.x,\r\n width: oSourceDimensions.width,\r\n height: oSourceDimensions.height,\r\n })\r\n .set(oZoomed, {\r\n maxWidth: nZoomedDimensions[0] < nZoomedDimensions[1] ? '90vw' : 'none',\r\n maxHeight: nZoomedDimensions[0] > nZoomedDimensions[1] ? '90vh' : 'none'\r\n })\r\n .to(oZoomed, 1, {\r\n autoAlpha: 1,\r\n ease: Quart.linear\r\n })\r\n .to(oZoomed, 1.2, {\r\n top: `${nTopOffset + window.pageYOffset}px`,\r\n height: (nZoomedDimensions[1] === 'auto') ? nZoomedDimensions[1] : `${nZoomedDimensions[1]}px`,\r\n left: 0,\r\n right: 0,\r\n margin: 'auto',\r\n width: (nZoomedDimensions[0] === 'auto') ? nZoomedDimensions[0] : `${nZoomedDimensions[0]}px`,\r\n onComplete: fFixModal\r\n }, '-=0.5')\r\n .to(oBackdrop, 2, {\r\n autoAlpha: 1\r\n }, '-=1')\r\n .to(oZoomedImage, 1.5, {\r\n autoAlpha: 1\r\n }, '-=1.7')\r\n .to(oCloser, 1, {\r\n autoAlpha: 1\r\n }, '-=1.5');\r\n }\r\n\r\n function fCreateBackdrop () {\r\n const oBackdrop = document.createElement('div');\r\n\r\n oBackdrop.setAttribute('class', 'backdrop backdrop--zoomer');\r\n\r\n return oBackdrop;\r\n }\r\n\r\n function fCreateZoomed (sUrl) {\r\n let oZoomed = document.createElement('div');\r\n\r\n oZoomed.setAttribute('class', 'zoomer');\r\n oZoomed.innerHTML = `\r\n \r\n \r\n `;\r\n\r\n return oZoomed;\r\n }\r\n\r\n function fConstructUrl (sUrlOrigin, bLandscape) {\r\n let sUrl;\r\n\r\n if (bLandscape) {\r\n sUrl = sUrlOrigin + `&width=${((90 / 100) * window.innerWidth)}`;\r\n } else {\r\n sUrl = sUrlOrigin + `&height=${((90 / 100) * window.innerHeight)}`;\r\n }\r\n\r\n return sUrl;\r\n }\r\n\r\n function fCalculateZoomedDimensions (bLandscape, nRatio) {\r\n const nWindowWidth = window.innerWidth;\r\n const nWindowHeight = window.innerHeight;\r\n let nZoomedWidth;\r\n let nZoomedHeight;\r\n\r\n if (bLandscape) {\r\n nZoomedWidth = ((90 / 100) * nWindowWidth);\r\n nZoomedHeight = (nZoomedWidth * nRatio[1]) / nRatio[0];\r\n } else {\r\n nZoomedHeight = ((90 / 100) * nWindowHeight);\r\n nZoomedWidth = (nZoomedHeight * nRatio[0]) / nRatio[1];\r\n }\r\n\r\n return [nZoomedWidth, nZoomedHeight];\r\n }\r\n\r\n function isElementLandscape (oElement) {\r\n return oElement.offsetWidth > oElement.offsetHeight;\r\n }\r\n\r\n function getAspectRatio (nWidth, nHeight) {\r\n const nDivisor = gcd(nWidth, nHeight);\r\n \r\n return [(nWidth / nDivisor), (nHeight / nDivisor)];\r\n }\r\n\r\n function gcd (a, b) {\r\n // https://github.com/ryanhefner/calculate-aspect-ratio/blob/master/src/index.js\r\n return b\r\n ? gcd(b, a % b)\r\n : a;\r\n };\r\n\r\n document.addEventListener('click', function (event) {\r\n const oSource = event.target.closest('.js-zoomer');\r\n \r\n if (oSource) {\r\n const sUrlOrigin = oSource.getAttribute('data-zoomer-url');\r\n const bLandscape = isElementLandscape(oSource);\r\n const nRatio = getAspectRatio(oSource.offsetWidth, oSource.offsetHeight);\r\n const sUrl = fConstructUrl(sUrlOrigin, bLandscape);\r\n const oZoomed = fCreateZoomed(sUrl);\r\n \r\n const nZoomedDimensions = fCalculateZoomedDimensions(bLandscape, nRatio);\r\n const oBackdrop = fCreateBackdrop();\r\n const oCloser = oZoomed.querySelector('.js-zoomer-close');\r\n \r\n // Add zoomed & backdrop to the DOM\r\n document.body.appendChild(oZoomed);\r\n document.body.appendChild(oBackdrop);\r\n\r\n // Animate it from the source\r\n fAnimateZoomed(oSource, oZoomed, nZoomedDimensions, oBackdrop, oCloser);\r\n\r\n // Close active zoomer when backdrop or closer is clicked\r\n oBackdrop.addEventListener('click', function () {\r\n fDestroyZoomed(oZoomed, oBackdrop);\r\n });\r\n\r\n oCloser.addEventListener('click', function () {\r\n fDestroyZoomed(oZoomed, oBackdrop);\r\n });\r\n }\r\n });\r\n\r\n // Close active zoomer when esc key is pressed \r\n document.addEventListener('keydown', function (event) {\r\n if (event.keyCode === 27) {\r\n fDestroyZoomed();\r\n }\r\n });\r\n}"]}