{"version":3,"sources":["critical.js"],"names":["oi","document","undefined","opts","oiId","ariaInvalid","msgPrefix","allFieldsSelector","validateInput","currentInput","copyInput","input","inputValue","errorMessage","validateHidden","offsetParent","shouldMatch","hasAttribute","sourceInput","getElementById","getAttribute","value","setCustomValidity","setMessage","search","checkValidity","setAttribute","querySelector","id","textContent","onValid","classList","add","interactedClass","getMessages","context","each","querySelectorAll","item","invalidInputs","length","isInputTextareaOrSelect","el","tagName","toLowerCase","activeElement","setFocusAndScroll","inputValidity","validity","message","validationMessage","insertAdjacentHTML","errorPosition","templateString","data","property","replace","RegExp","errorHTML","onInvalid","focus","scrollToElement","scrollTargetPosition","getBoundingClientRect","top","errorScrollOffset","window","pageYOffset","documentElement","scrollTop","scrollTo","cb","i","len","init","args","formSelector","getElementsByTagName","watchInputs","createElement","form","noValidate","addEventListener","e","this","preventDefault","target","validateForm","Helpers","debounce","fn","delay","timer","arguments","clearTimeout","setTimeout","apply","scopedLoop","list","call","createCustomEventForDispatch","eventName","event","CustomEvent","detail","createEvent","initCustomEvent","isLegacyIE","ua","navigator","userAgent","msie","indexOf","trident","edge","guid","c","r","Math","random","toString","serialize","makeArray","serialized","elements","field","name","disabled","type","j","options","selected","push","encodeURIComponent","checked","join","getParameter","locationSearch","location","results","exec","decodeURIComponent","getCulture","getUTCDateFromString","componentsArray","split","dateComponents","year","parseInt","month","day","hours","minutes","seconds","milliseconds","Date","UTC","getPercentage","numberOne","numberTwo","isDecimal","percentTwoString","percentTwo","percentOneString","percentOne","round","parseFloat","total","element","offset","header","position","styles","getComputedStyle","abs","offsetHeight","scroll","left","behavior","Header","_this","lastScrollTop","headerElement","navListMobileContainerElement","scrollingDownCSSClass","scrollingUpCSSClass","subNavigation","mobileNavLock","scrolling","offClick","remove","prototype","closest","closeOpenSubNavs","subNavTriggers","subNavTrigger","isSubSubTrigger","contains","targetSubNav","shouldBeExpanded","isDesktop","removeAttribute","style","maxHeight","scrollHeight","setMobileOpenHeight","removeMobileOpenHeight","excludedElement","closeOnlySubSubNavs","isEqualNode","isMobileNavOpen","mobileNavOpenCSSClass","scrollPosition","checkIfChangedToDesktopNav","removeEventListener","debouncedScrollCheck","requestAnimationFrame","scrollCheck","elementToCheck","headerHeight","height","innerHeight","matchMedia","matches","FormValidation","errorClass","Detection","modernBrowser","HTMLScriptElement","canHover"],"mappings":"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","file":"critical-aa961865f8.min.js","sourcesContent":["\r\n/**\r\n* @fileOverview oi - A tiny form validation library for custom error messages\r\n* @version 0.3.0\r\n*/\r\n\r\nvar oi = (function (document, undefined) {\r\n\r\n 'use strict';\r\n\r\n var opts = {};\r\n\r\n var oiId = 'data-oi-id';\r\n\r\n var ariaInvalid = 'aria-invalid';\r\n\r\n var msgPrefix = 'data-msg';\r\n\r\n var allFieldsSelector = 'input, select, textarea';\r\n\r\n /**\r\n * Init oi\r\n * @memberOf oi\r\n * @param {args} options for oi\r\n */\r\n function init(args) {\r\n\r\n args = args || {};\r\n\r\n opts = {\r\n formSelector: args.formSelector || document.getElementsByTagName('form'),\r\n errorHTML: args.errorHTML || '{{message}}',\r\n errorPosition: args.errorPosition || 'afterend',\r\n errorScrollOffset: args.errorScrollOffset || 75,\r\n interactedClass: args.interactedClass || 'oi-has-interacted',\r\n onInvalid: args.onInvalid,\r\n onValid: args.onValid,\r\n watchInputs: ((args.watchInputs === undefined) ? true : args.watchInputs),\r\n validateHidden: ((args.validateHidden === undefined) ? false : args.validateHidden)\r\n };\r\n\r\n if ('required' in document.createElement('input')) {\r\n\r\n // setup forms\r\n each(opts.formSelector, function (item) {\r\n setupForm(item);\r\n if (opts.watchInputs) {\r\n setupInputWatches(item);\r\n }\r\n });\r\n\r\n }\r\n\r\n }\r\n\r\n /**\r\n * Sets up a form for validation\r\n * @memberOf oi\r\n * @param {form} form to set up\r\n */\r\n function setupForm(form) {\r\n\r\n form.noValidate = true;\r\n form.addEventListener('submit', function (e) {\r\n var self = this;\r\n if (!self.checkValidity()) {\r\n e.preventDefault();\r\n getMessages(self);\r\n }\r\n }, true);\r\n\r\n }\r\n\r\n /**\r\n * Validates an individual input\r\n * @memberOf oi\r\n * @param {currentInput} input to validate\r\n */\r\n function validateInput(currentInput) {\r\n\r\n if (opts.validateHidden) {\r\n if (isHidden(currentInput)) { // don't validate hidden inputs\r\n return;\r\n }\r\n }\r\n\r\n matchValidate(currentInput); // if values need to be compared\r\n if (currentInput.getAttribute('type') === 'url') { // check urls because of protocol\r\n checkUrl(currentInput);\r\n }\r\n if (!currentInput.checkValidity()) {\r\n setMessage(currentInput);\r\n } else {\r\n currentInput.setAttribute(ariaInvalid, 'false');\r\n var errorMessage = document.querySelector('[' + oiId + '=\"' + currentInput.id + '\"]');\r\n if (errorMessage) {\r\n errorMessage.textContent = '';\r\n errorMessage.setAttribute('aria-hidden', 'true');\r\n }\r\n if (opts.onValid) {\r\n opts.onValid(currentInput);\r\n }\r\n }\r\n\r\n currentInput.classList.add(opts.interactedClass);\r\n\r\n }\r\n\r\n /**\r\n * Compares two fields\r\n * @memberOf oi\r\n * @param {currentInput} input to check against\r\n */\r\n function matchValidate(currentInput) {\r\n\r\n var sourceInput;\r\n var copyInput;\r\n var shouldMatch = false;\r\n\r\n if (currentInput.hasAttribute('data-has-match')) { // source of match\r\n sourceInput = currentInput;\r\n copyInput = document.getElementById(currentInput.getAttribute('data-has-match'));\r\n shouldMatch = true;\r\n }\r\n\r\n if (currentInput.hasAttribute('data-match')) { // copy of match\r\n sourceInput = document.getElementById(currentInput.getAttribute('data-match'));\r\n copyInput = currentInput;\r\n shouldMatch = true;\r\n }\r\n\r\n if (shouldMatch && sourceInput && copyInput) {\r\n if (sourceInput.value !== copyInput.value) {\r\n copyInput.setCustomValidity(copyInput.getAttribute(msgPrefix + '-match'));\r\n setMessage(copyInput);\r\n } else {\r\n copyInput.setCustomValidity('');\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Sets up input watches\r\n * @memberOf oi\r\n * @param {context} context of input watches\r\n */\r\n function setupInputWatches(context) {\r\n\r\n var fields = (context || document).querySelectorAll(allFieldsSelector);\r\n each(fields, function (item) {\r\n item.addEventListener('change', function (e) {\r\n var currentField = e.target;\r\n validateInput(currentField);\r\n }, true);\r\n\r\n });\r\n\r\n }\r\n\r\n /**\r\n * Get all messages for the current context\r\n * @memberOf oi\r\n * @param {context} the context to get messages for\r\n */\r\n function getMessages(context) {\r\n\r\n // validate all inputs\r\n each(context.querySelectorAll(allFieldsSelector), function (item) {\r\n validateInput(item);\r\n });\r\n\r\n var invalidInputs = context.querySelectorAll('input:invalid, select:invalid, textarea:invalid');\r\n\r\n if (invalidInputs.length > 0) {\r\n if (!isInputTextareaOrSelect(document.activeElement)) {\r\n setFocusAndScroll(invalidInputs[0]);\r\n } else {\r\n if (document.activeElement.getAttribute(\"aria-invalid\") === \"false\") {\r\n setFocusAndScroll(invalidInputs[0]);\r\n }\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Set the message for a given input\r\n * @memberOf oi\r\n * @param {input} input to set message for\r\n */\r\n function setMessage(input) {\r\n\r\n input.setAttribute(ariaInvalid, 'true');\r\n var inputValidity = input.validity;\r\n var message = ((inputValidity.valueMissing) ? input.getAttribute(msgPrefix + '-required') : false) ||\r\n ((inputValidity.typeMismatch) ? input.getAttribute(msgPrefix + '-type') : false) ||\r\n ((inputValidity.patternMismatch) ? input.getAttribute(msgPrefix + '-pattern') : false) ||\r\n ((inputValidity.patternMismatch) ? input.getAttribute(msgPrefix + '-regex') : false) || \r\n ((inputValidity.tooShort) ? input.getAttribute(msgPrefix + '-short') : false) ||\r\n ((inputValidity.tooLong) ? input.getAttribute(msgPrefix + '-long') : false) ||\r\n ((inputValidity.customError) ? input.getAttribute(msgPrefix + '-custom') : false) ||\r\n input.getAttribute(msgPrefix) ||\r\n input.validationMessage; // fallback to the browser default message\r\n\r\n var errorMessage = document.querySelector('[' + oiId + '=\"' + input.id + '\"]');\r\n if (!errorMessage) {\r\n input.insertAdjacentHTML(opts.errorPosition, template(opts.errorHTML, { id: input.id, message: message }));\r\n } else {\r\n errorMessage.textContent = message;\r\n errorMessage.setAttribute('aria-hidden', 'false'); \r\n }\r\n\r\n if (opts.onInvalid) {\r\n opts.onInvalid(input);\r\n }\r\n\r\n }\r\n\r\n /**\r\n * Sets the focus on an input and scrolls to the position\r\n * @memberOf oi\r\n * @param {input} input to check\r\n */\r\n function setFocusAndScroll(el) {\r\n\r\n el.focus(); // focus on the first element if the current active element is valid otherwise stay where the user is\r\n scrollToElement(el); // scroll to the position of that element\r\n\r\n }\r\n\r\n /**\r\n * Checks that url contains a protocol because Chrome etc expects one\r\n * @memberOf oi\r\n * @param {input} input to check\r\n */\r\n function checkUrl(input) {\r\n\r\n var inputValue = input.value;\r\n if (inputValue && inputValue.search(/^http[s]?\\:\\/\\//) === -1) {\r\n inputValue = \"http://\" + inputValue;\r\n }\r\n input.value = inputValue;\r\n\r\n }\r\n\r\n /**\r\n * Checks if an element is hidden\r\n * @memberOf oi\r\n * @param {el} input to check\r\n */\r\n function isHidden(el) {\r\n return (el.offsetParent === null);\r\n }\r\n\r\n /**\r\n * Scroll to element position\r\n * @memberOf oi\r\n * @param {el} input to scroll to\r\n */\r\n function scrollToElement(el) {\r\n var scrollTargetPosition = el.getBoundingClientRect().top - opts.errorScrollOffset + (window.pageYOffset || document.documentElement.scrollTop);\r\n window.scrollTo(0, scrollTargetPosition);\r\n }\r\n\r\n /**\r\n * Checks if an element is a tag type of input, textarean or select\r\n * @memberOf oi\r\n * @param {el} input to check\r\n */\r\n function isInputTextareaOrSelect(el) {\r\n\r\n var tagName = el.tagName;\r\n if (tagName) {\r\n return tagName.toLowerCase() === 'input' || tagName.toLowerCase() === 'textarea' || tagName.toLowerCase() === 'select';\r\n } else {\r\n return false;\r\n }\r\n\r\n }\r\n\r\n /**\r\n * Simple each utility\r\n * @memberOf oi\r\n * @param {value} value to loop through\r\n * @param {cb} callback on each item\r\n */\r\n function each(value, cb) {\r\n\r\n for (var i = 0, len = value.length; i < len; i++) {\r\n cb(value[i]);\r\n }\r\n\r\n }\r\n\r\n /**\r\n * Simple template\r\n * @memberOf oi\r\n * @param {templateString} the string to template\r\n * @param {data} data to replace\r\n */\r\n function template(templateString, data) {\r\n\r\n for (var property in data) {\r\n templateString = templateString.replace(new RegExp('{{' + property + '}}', 'g'), data[property]);\r\n }\r\n return templateString;\r\n\r\n }\r\n\r\n // public api\r\n return {\r\n init: init,\r\n validateInput: validateInput,\r\n validateForm: getMessages\r\n };\r\n\r\n})(document);\r\n\r\n\r\n//site.html = document.getElementsByTagName('html')[0];\r\n\r\n//site.body = document.getElementsByTagName('body')[0];\r\n\r\nvar Helpers = (function () {\n\r\n function Helpers() {\n\r\n }\n\r\n Helpers.debounce = function (fn, delay) {\n\r\n var timer = null;\n\r\n delay = delay || 300;\n\r\n return function () {\n\r\n var context = this;\n\r\n var args = arguments;\n\r\n clearTimeout(timer);\n\r\n timer = setTimeout(function () {\n\r\n fn.apply(context, args);\n\r\n }, delay);\n\r\n };\n\r\n };\n\r\n Helpers.scopedLoop = function (list, fn, context) {\n\r\n for (var i = 0, len = list.length; i < len; i++) {\n\r\n (function (i) {\n\r\n fn(list[i], i, context);\n\r\n }).call(this, i);\n\r\n }\n\r\n };\n\r\n Helpers.createCustomEventForDispatch = function (eventName, data) {\n\r\n if (data === void 0) { data = {}; }\n\r\n var event;\n\r\n if (window.CustomEvent && typeof window.CustomEvent === 'function') {\n\r\n event = new CustomEvent(eventName, { detail: data });\n\r\n }\n\r\n else {\n\r\n event = document.createEvent('CustomEvent');\n\r\n event.initCustomEvent(eventName, true, true, data);\n\r\n }\n\r\n return event;\n\r\n };\n\r\n Helpers.isLegacyIE = function () {\n\r\n var ua = window.navigator.userAgent;\n\r\n var msie = ua.indexOf('MSIE ');\n\r\n var trident = ua.indexOf('Trident/');\n\r\n var edge = ua.indexOf('Edge');\n\r\n return (msie > 0 || trident > 0 || edge > 0);\n\r\n };\n\r\n Helpers.guid = function () {\n\r\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {\n\r\n var r = Math.random() * 16 | 0, v = c == 'x' ? r : (r & 0x3 | 0x8);\n\r\n return v.toString(16);\n\r\n });\n\r\n };\n\r\n Helpers.serialize = function (form, makeArray) {\n\r\n if (makeArray === void 0) { makeArray = false; }\n\r\n var serialized = [];\n\r\n var elements = form.querySelectorAll('input,select,textarea');\n\r\n for (var i = 0; i < elements.length; i++) {\n\r\n var field = elements[i];\n\r\n if (!field.name || field.disabled || field.type === 'file' || field.type === 'reset' || field.type === 'submit' || field.type === 'button') {\n\r\n continue;\n\r\n }\n\r\n if (field.type === 'select-multiple') {\n\r\n for (var j = 0; j < field.options.length; j++) {\n\r\n if (!field.options[j].selected)\n\r\n continue;\n\r\n if (makeArray) {\n\r\n serialized.push({\n\r\n name: encodeURIComponent(field.name),\n\r\n value: encodeURIComponent(field.options[j].value)\n\r\n });\n\r\n }\n\r\n else {\n\r\n serialized.push(encodeURIComponent(field.name) + \"=\" + encodeURIComponent(field.options[j].value));\n\r\n }\n\r\n }\n\r\n }\n\r\n else if ((field.type !== 'checkbox' && field.type !== 'radio') || field.checked) {\n\r\n if (makeArray) {\n\r\n serialized.push({\n\r\n name: encodeURIComponent(field.name),\n\r\n value: encodeURIComponent(field.value)\n\r\n });\n\r\n }\n\r\n else {\n\r\n serialized.push(encodeURIComponent(field.name) + \"=\" + encodeURIComponent(field.value));\n\r\n }\n\r\n }\n\r\n }\n\r\n if (makeArray) {\n\r\n return serialized;\n\r\n }\n\r\n return serialized.join('&');\n\r\n };\n\r\n Helpers.getParameter = function (name, locationSearch) {\n\r\n name = name.replace(/[\\[]/, \"\\\\[\").replace(/[\\]]/, \"\\\\]\");\n\r\n if (!locationSearch) {\n\r\n locationSearch = location.search;\n\r\n }\n\r\n var regex = new RegExp(\"[\\\\?&]\" + name + \"=([^]*)\");\n\r\n var results = regex.exec(locationSearch);\n\r\n return results === null ? \"\" : decodeURIComponent(results[1].replace(/\\+/g, \" \"));\n\r\n };\n\r\n Helpers.getCulture = function () {\n\r\n return document.documentElement.getAttribute('lang');\n\r\n };\n\r\n Helpers.getUTCDateFromString = function (input) {\n\r\n var componentsArray = input.split(',');\n\r\n var dateComponents = {\n\r\n year: parseInt(componentsArray[0]),\n\r\n month: parseInt(componentsArray[1]) - 1,\n\r\n day: parseInt(componentsArray[2]),\n\r\n hours: parseInt(componentsArray[3]),\n\r\n minutes: parseInt(componentsArray[4]),\n\r\n seconds: parseInt(componentsArray[5]),\n\r\n milliseconds: 0\n\r\n };\n\r\n return new Date(Date.UTC(dateComponents.year, dateComponents.month, dateComponents.day, dateComponents.hours, dateComponents.minutes, dateComponents.seconds, dateComponents.milliseconds));\n\r\n };\n\r\n Helpers.getPercentage = function (numberOne, numberTwo, isDecimal) {\n\r\n var percentOne = numberOne;\n\r\n var percentTwo = numberTwo;\n\r\n if (isDecimal) {\n\r\n percentOne = percentOne * 100;\n\r\n percentTwo = percentTwo * 100;\n\r\n var percentOneString = percentOne.toString();\n\r\n var percentTwoString = percentTwo.toString();\n\r\n percentOne = Math.round(parseFloat(percentOneString));\n\r\n percentTwo = Math.round(parseFloat(percentTwoString));\n\r\n }\n\r\n else {\n\r\n var total = percentOne + percentTwo;\n\r\n if (total > 0) {\n\r\n percentOne = (percentOne / total) * 100;\n\r\n percentTwo = (percentTwo / total) * 100;\n\r\n }\n\r\n else {\n\r\n percentOne = 50;\n\r\n percentTwo = 50;\n\r\n }\n\r\n }\n\r\n return {\n\r\n percentOne: percentOne,\n\r\n percentTwo: percentTwo\n\r\n };\n\r\n };\n\r\n Helpers.scrollToElement = function (element) {\n\r\n var offset = 0;\n\r\n var header = document.querySelector('[data-header]');\n\r\n if (header) {\n\r\n var styles = getComputedStyle(header);\n\r\n if (styles.position && styles.position.toLowerCase() === 'fixed')\n\r\n offset = -Math.abs(header.offsetHeight);\n\r\n }\n\r\n var position = element.getBoundingClientRect().top + window.pageYOffset + offset;\n\r\n window.scroll({ top: position, left: 0, behavior: 'smooth' });\n\r\n };\n\r\n return Helpers;\n\r\n}());\n\r\nnew Helpers();\n\r\nwindow.Helpers = Helpers;\n\r\n\r\nvar Header = (function () {\n function Header() {\n var _this = this;\n this.lastScrollTop = window.pageYOffset || document.documentElement.scrollTop;\n this.headerElement = document.querySelector('.js-header');\n this.navListMobileContainerElement = document.querySelector('.js-nav-list-mobile-container');\n this.scrollingDownCSSClass = 'scrolling-down';\n this.scrollingUpCSSClass = 'scrolling-up';\n if (!this.headerElement) {\n return;\n }\n this.subNavigation();\n this.mobileNavLock();\n this.scrolling();\n this.offClick();\n setTimeout(function () {\n _this.headerElement.classList.remove('c-header--loading');\n }, 300);\n }\n Header.prototype.offClick = function () {\n var _this = this;\n document.addEventListener('click', function (e) {\n var targetElement = e.target;\n if (!targetElement.closest('.js-header')) {\n _this.closeOpenSubNavs();\n }\n });\n };\n Header.prototype.subNavigation = function () {\n var _this = this;\n var subNavTriggers = document.querySelectorAll('.js-nav-sub-link-trigger');\n Helpers.scopedLoop(subNavTriggers, function (subNavTrigger, i, context) {\n var isSubSubTrigger = subNavTrigger.classList.contains('js-nav-sub-sub-link-trigger');\n subNavTrigger.addEventListener('click', function (e) {\n e.preventDefault();\n context.closeOpenSubNavs(subNavTrigger, isSubSubTrigger);\n var targetSubNav = document.querySelector('#' + subNavTrigger.getAttribute('aria-controls'));\n var shouldBeExpanded = subNavTrigger.getAttribute('aria-expanded').toLowerCase() === 'false';\n if (shouldBeExpanded && !_this.isDesktop() && !subNavTrigger.classList.contains('js-nav-mobile-trigger')) {\n targetSubNav.style.maxHeight = targetSubNav.scrollHeight + 'px';\n if (isSubSubTrigger && targetSubNav.closest('.c-nav__sub-nav-container')) {\n targetSubNav.closest('.c-nav__sub-nav-container').removeAttribute('style');\n }\n }\n else {\n targetSubNav.removeAttribute('style');\n }\n subNavTrigger.setAttribute('aria-expanded', shouldBeExpanded + '');\n targetSubNav.setAttribute('aria-expanded', shouldBeExpanded + '');\n if (subNavTrigger.classList.contains('js-nav-mobile-trigger')) {\n if (shouldBeExpanded) {\n _this.setMobileOpenHeight();\n }\n else {\n _this.removeMobileOpenHeight();\n }\n }\n });\n }, this);\n };\n Header.prototype.closeOpenSubNavs = function (excludedElement, closeOnlySubSubNavs) {\n var subNavTriggers = document.querySelectorAll('.js-nav-sub-link-trigger[aria-expanded=\"true\"]:not(.js-nav-mobile-trigger)');\n Helpers.scopedLoop(subNavTriggers, function (subNavTrigger, i, context) {\n if (excludedElement && subNavTrigger.isEqualNode(excludedElement)) {\n return;\n }\n if (closeOnlySubSubNavs && !subNavTrigger.classList.contains('js-nav-sub-sub-link-trigger')) {\n return;\n }\n var targetSubNav = document.querySelector('#' + subNavTrigger.getAttribute('aria-controls'));\n targetSubNav.removeAttribute('style');\n subNavTrigger.setAttribute('aria-expanded', 'false');\n targetSubNav.setAttribute('aria-expanded', 'false');\n }, this);\n this.navListMobileContainerElement.setAttribute('style', '');\n };\n Header.prototype.mobileNavLock = function () {\n var _this = this;\n var isMobileNavOpen = false;\n var mobileNavOpenCSSClass = 'mobile-nav-open';\n var scrollPosition = document.documentElement.scrollTop;\n document.querySelector('.js-nav-mobile-trigger').addEventListener('click', function () {\n isMobileNavOpen = !isMobileNavOpen;\n if (isMobileNavOpen) {\n scrollPosition = document.documentElement.scrollTop;\n document.documentElement.classList.add(mobileNavOpenCSSClass);\n window.addEventListener('resize', checkIfChangedToDesktopNav);\n _this.navListMobileContainerElement.scrollTop = 0;\n }\n else {\n document.documentElement.classList.remove(mobileNavOpenCSSClass);\n window.scrollTo(0, scrollPosition);\n window.removeEventListener('resize', checkIfChangedToDesktopNav);\n }\n });\n var checkIfChangedToDesktopNav = Helpers.debounce(function () {\n if (_this.isDesktop()) {\n document.documentElement.classList.remove('mobile-nav-open');\n _this.navListMobileContainerElement.setAttribute('aria-expanded', 'false');\n _this.closeOpenSubNavs();\n _this.removeMobileOpenHeight();\n }\n else {\n if (document.documentElement.classList.contains('mobile-nav-open')) {\n _this.setMobileOpenHeight();\n }\n }\n }, 200);\n };\n Header.prototype.scrolling = function () {\n var _this = this;\n if (this.lastScrollTop > 0) {\n this.headerElement.classList.add(this.scrollingDownCSSClass);\n this.headerElement.classList.remove(this.scrollingUpCSSClass);\n }\n var debouncedScrollCheck = Helpers.debounce(function () {\n window.requestAnimationFrame(function () {\n _this.scrollCheck();\n });\n }, 50);\n window.addEventListener(\"touchmove\", debouncedScrollCheck);\n window.addEventListener(\"scroll\", debouncedScrollCheck);\n };\n Header.prototype.scrollCheck = function (elementToCheck) {\n var scrollTop = elementToCheck ? elementToCheck.scrollTop : (window.pageYOffset || document.documentElement.scrollTop);\n if (scrollTop === this.lastScrollTop) {\n return;\n }\n var headerHeight = this.headerElement.offsetHeight;\n if (scrollTop > this.lastScrollTop && scrollTop > headerHeight) {\n this.headerElement.classList.add(this.scrollingDownCSSClass);\n this.headerElement.classList.remove(this.scrollingUpCSSClass);\n document.documentElement.classList.add(this.scrollingDownCSSClass);\n document.documentElement.classList.remove(this.scrollingUpCSSClass);\n }\n else {\n this.headerElement.classList.add(this.scrollingUpCSSClass);\n this.headerElement.classList.remove(this.scrollingDownCSSClass);\n document.documentElement.classList.add(this.scrollingUpCSSClass);\n document.documentElement.classList.remove(this.scrollingDownCSSClass);\n }\n this.lastScrollTop = scrollTop <= 0 ? 0 : scrollTop;\n };\n Header.prototype.setMobileOpenHeight = function () {\n var mobileNavWrapper = document.querySelector('.js-mobile-header-wrapper');\n mobileNavWrapper.style.height = window.innerHeight + \"px\";\n };\n Header.prototype.removeMobileOpenHeight = function () {\n var mobileNavWrapper = document.querySelector('.js-mobile-header-wrapper');\n mobileNavWrapper.removeAttribute('style');\n };\n Header.prototype.isDesktop = function () {\n return window.matchMedia('(min-width: 1100px)').matches;\n };\n return Header;\n}());\nnew Header();\n\r\nvar FormValidation = (function () {\n function FormValidation() {\n oi.init({\n formSelector: document.querySelectorAll('.js-validate-form'),\n errorHTML: '{{message}}',\n errorClass: 'c-error-message',\n errorPosition: 'afterend',\n errorScrollOffset: 75,\n interactedClass: 'has-interacted',\n watchInputs: true,\n validateHidden: false\n });\n }\n return FormValidation;\n}());\nnew FormValidation();\nwindow.Helpers = FormValidation;\n\r\nvar Detection = (function () {\n function Detection() {\n this.modernBrowser = 'noModule' in HTMLScriptElement.prototype;\n this.canHover();\n }\n Detection.prototype.canHover = function () {\n var canHover = window.matchMedia('(hover: hover)').matches && window.matchMedia('(min-width: 768px)').matches;\n if (!canHover && this.modernBrowser) {\n document.documentElement.classList.remove('html--can-hover');\n }\n };\n return Detection;\n}());\nnew Detection();\nwindow.Helpers = Detection;\n\r\n"]}