{"version":3,"sources":["nav-detection.js","btt.js","jump-to-links.js","subs-toggle.js","faqs.js","table-scroll.js","multi-cta--radio.js","interactive-radios.js","contact-form.js","browse-faq-page.js","sticky-cta.js","textbox-lookup.js","footer-nav.js","tabbable-content.js","show-more-cards.js"],"names":["navDetection","init","header","document","querySelector","nav","classList","add","addEventListener","backToTop","bttLink","e","preventDefault","window","scroll","top","left","behavior","jumpLinks","handleJumpLinkClicked","globalHeader","globalHeaderHeight","offsetHeight","targetId","target","getAttribute","substring","targetElement","getElementById","targetScrollTop","getBoundingClientRect","scrollY","scrollTo","jumpLinkNodes","querySelectorAll","forEach","link","subToggle","toggleLink","toggleContent","contains","remove","style","maxHeight","marginBottom","scrollHeight","controllId","display","overflow","transition","accordionToggle","accordion","question","handleAccordionQuestionClicked","closeAccordion","answer","item","setAttribute","setAccordionHeight","setTimeout","openAccordion","removeAttribute","height","handleScrollIntoView","accordionItem","accordionItemScrollTop","showMoreFunctionality","accordionGroup","accordions","dataItemsLoaded","toggleButton","totalAccordions","length","currentAccordionsDisplayed","parseInt","toggleAccordionVisibility","hideToggleButton","dataItemsShowing","index","windowResizeHandler","resizing","closedAccordions","debounce","func","delay","timeoutId","args","clearTimeout","debounceResizeHandler","calculateAccordionContentHeight","accordionGroups","accordionObjectArray","accordionObject","push","tableScroll","mobileTableScroll","scrollTable","parentElement","closest","firstElementChild","minWidth","multiCta","multiCtaLists","Array","prototype","call","multiCtaList","inputs","button","errorMsg","input","urlVal","pointerEvents","updateButtonUrl","disableButton","interactiveRadioButtons","interactiveSections","interactiveArea","answers","radioInputs","showResults","showError","removeError","modInteractiveRadioContainer","fieldset","validationError","topRadio","radioContainer","fieldGroup","errorContainer","createElement","errorMessage","innerHTML","appendChild","insertBefore","formInputValidationMessages","otherInputClicked","name","message","dataset","inputInvalid","id","value","trim","inputSkipped","re","test","priority","isNaN","month","year","lastDayOfMonth","Date","getDate","inputInvalidDay","inputInvalidMonth","day","currentDay","currentYear","getFullYear","enteredDay","parse","inputInvalidYear_past","inputInvalidYear_format","inputInvalidYear_age","inputWithoutSpaces","replace","noInput","checked","yesInput","keyInputs","code","keyCode","which","String","fromCharCode","formValidator","form","totalErrors","validateInput","handleKeyInputs","formInputs","initialise","validateOnFieldEntry","field","textInputs","clickableInputs","hasAttribute","removeErrorOnFormInput","validateOnFormSubmit","validateFieldSet","rect","pageYOffset","additionalField","inputErrorArray","returnedError","undefined","prioritiseErrorMessage","inputArr","isArray","includes","topPriority","showValidationErrors","pop","fieldInput","currentFieldErrorContainer","currentFieldError","errorMessageNode","setErrorBorderColour","errorMessageContainer","label","nextElementSibling","legend","errorId","inputNode","splitInput","split","removeChild","removeInputFromFormArray","addInputToFormArray","contactUsForm","subjectSelect","issuesSelect","errorSummaryBox","loginLink","chosenSubjectOption","chosenIssuesOption","questionAnswerContainer","contactDetailsForm","contactSucessCard","showContactDetails","hideContactDetails","validateForm","jsonData","textContent","JSON","valid","updateDataLayer","submitForm","populateSubjectSelectOptions","onchange","populateIssuesSelectOptions","onclick","checkSelectChecked","populateQuestionAnswerBox","toggleQuestionAnswerContainer","toggleContactDetails","checkIfPhoneDesired","stopPropagation","createLoginLink","hasQueryString","location","href","indexOf","selectedIndex","removeIssuesSelectOptions","parseQueryString","substringIndex","selectQueryStrings","parsedValue","join","setSelectAsQuerystringValue","callback","options","option","i","toLowerCase","formSuccess","erroredInputs","eventErrors","errorArray","dataLayer","event","eventSuccess","subject","subjectValue","checkIfInsuranceOption","isInsuranceProduct","childElementCount","createIssuesSelectedOptions","phoneField","phoneConsentYes","phoneConsentNo","isAnInsuranceProduct","insuranceRadio","currentlyCheckedInput","childNodes","lastChild","selected","disabled","hidden","issues","questionValue","questionAnswerBox","span","p","selectFieldGroup","issuesFieldGroup","formValid","dobDay","dobMon","dobYear","formInformation","product","MoreInformation","Title","FirstName","Surname","EmailAddress","Postcode","DateOfBirth","ContactPhoneQuestion","ContactPhoneNumber","HasPurchased","QuerySubject","QueryDescription","HttpAttributeReturnUrl","HttpAttributePriority","HttpAttributeOrigin","HttpAttributeExternal","xhr","XMLHttpRequest","open","setRequestHeader","onload","readyState","DONE","status","response","Success","returnUrl","send","stringify","faqPage","selects","select","handleSelectOnChange","selectedAccordionGroup","group","accordionRow","stickyCta","stickyCtaEl","handleStickyCtaScroll","addClass","textboxlookup","tbl","tblContainer","btn","handleInput","handleButton","validate","postToLocation","isValid","keyed","key","url","param","textInput","val","encodeURIComponent","queryStringSeparator","footerNav","content","resetAccordion","section","toggle","activateAccordion","cnfsdTabbableContent","setupTabs","tabButtons","tabContents","navContainer","leftArrow","rightArrow","handleTabClicks","watchNavScroll","handleNavScrollButtons","removeClasses","elementGroup","classname","elem","observer","IntersectionObserver","entries","entry","isIntersecting","root","rootMargin","threshold","observe","scrollHandler","scrollNav","scrollBy","scrollWidth","tabs","showMoreCards","cards","colType","displayAdditionalCards","hideShowMoreButton","card","showMorebutton"],"mappings":"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","file":"cms2.min.js","sourcesContent":["var navDetection = (function () {\r\n\r\n\tfunction init() {\r\n\t\tvar header = document.querySelector('header');\r\n\t\tvar nav = header.querySelector('nav');\r\n\r\n\t\tif(typeof(nav) !== 'undefined' && nav !== null){\r\n\t\t\treturn;\r\n\t\t} else {\r\n\t\t\tif (header) {\r\n\t\t\t\theader.classList.add('global-header--without-nav');\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\treturn {\r\n\t\tinit: init\t\r\n\t };\r\n})();\r\n\r\ndocument.addEventListener('DOMContentLoaded', function () {\r\n\tnavDetection.init();\r\n});\r\n","var backToTop = (function () {\r\n\tfunction init() {\r\n\t\tvar bttLink = document.querySelector('.btt-arrow');\r\n\t\tif (typeof bttLink !== 'undefined' && bttLink !== null) {\r\n\t\t\tbttLink.addEventListener('click', function (e) {\r\n\t\t\t\te.preventDefault();\r\n\t\t\t\twindow.scroll({\r\n\t\t\t\t\ttop: 0,\r\n\t\t\t\t\tleft: 0,\r\n\t\t\t\t\tbehavior: 'smooth',\r\n\t\t\t\t});\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\treturn {\r\n\t\tinit: init,\r\n\t};\r\n})();\r\n\r\ndocument.addEventListener('DOMContentLoaded', function () {\r\n\tbackToTop.init();\r\n});\r\n","const jumpLinks = {\r\n handleJumpLinkClicked: (e) => {\r\n e.preventDefault();\r\n\r\n const globalHeader= document.querySelector('.cnf-header'),\r\n globalHeaderHeight = globalHeader ? globalHeader.offsetHeight : 0; //DEFAULT IN CASE HEADER NOT ON PAGE FOR SOME REASON\r\n \r\n //IF DATA-LOCATION EXISTS, USE THAT FOR POSITIONING (COVERS FLOATING-TABLE.JS)\r\n const targetId = e.target.getAttribute('data-location') ? e.target.getAttribute('data-location') : e.target.getAttribute('href').substring(1),\r\n targetElement = document.getElementById(targetId),\r\n scrollMargin = 20; // ADD MARGIN TO SCROLL FOR SOME PADDING\r\n\r\n\r\n if (targetElement) {\r\n const targetScrollTop = targetElement.getBoundingClientRect().top + window.scrollY - (globalHeaderHeight + scrollMargin);\r\n window.scrollTo({ top: targetScrollTop, behavior: 'smooth' });\r\n }\r\n }\r\n}\r\n\r\ndocument.addEventListener('DOMContentLoaded', function () {\r\n const jumpLinkNodes = document.querySelectorAll('.mod-jump-links a');\r\n if (!jumpLinkNodes) return;\r\n\r\n jumpLinkNodes.forEach(link => {\r\n link.addEventListener('click', jumpLinks.handleJumpLinkClicked); \r\n });\r\n});","const subToggle = {\r\n init: (e, toggleLink, toggleContent) => {\r\n e.preventDefault();\r\n\r\n const toggleOpen = toggleLink.classList.contains('open') ? true : false;\r\n\r\n if (toggleOpen) { //CLOSE TOGGLE\r\n toggleLink.classList.remove('open');\r\n toggleContent.style.maxHeight = '0px';\r\n toggleContent.style.marginBottom = '0px';\r\n } else { //OPEN TOGGLE\r\n toggleLink.classList.add('open');\r\n toggleContent.style.marginBottom = '1rem';\r\n toggleContent.style.maxHeight = `${toggleContent.scrollHeight}px`;\r\n }\r\n }\r\n}\r\n\r\n\r\n\r\ndocument.addEventListener('DOMContentLoaded', function () {\r\n const toggleLinks = document.querySelectorAll('.toggle-link');\r\n\r\n toggleLinks.forEach(toggleLink => {\r\n const controllId = toggleLink.getAttribute('aria-controls');\r\n const toggleContent = document.getElementById(`${controllId}`);\r\n const animationTime = 0.3;\r\n\r\n //TECH-DEBT -> MOVE STYLING TO CSS CLASSES\r\n toggleContent.style.display = 'block';\r\n toggleContent.style.overflow = 'hidden';\r\n toggleContent.style.maxHeight = '0px';\r\n toggleContent.style.transition = `all ${animationTime}s ease`; //TRANSITION\r\n toggleContent.style.marginBottom = '0px';\r\n\r\n toggleLink.addEventListener('click', (e) => subToggle.init(e, toggleLink, toggleContent));\r\n });\r\n});","const accordionToggle = {\r\n init: (accordion) => {\r\n accordion.question.addEventListener('click', () => accordionToggle.handleAccordionQuestionClicked(accordion));\r\n },\r\n\r\n closeAccordion: (accordion) => {\r\n const {answer, question, item} = accordion;\r\n question.classList.remove('active');\r\n answer.setAttribute('inert', true);\r\n accordionToggle.setAccordionHeight(answer, 0);\r\n \r\n //TIMEOUT FOR ANIMATION ON CLOSE (STICKY PLASTER DUE TO MOD-ROW)\r\n setTimeout(() => {\r\n item.classList.remove('open');\r\n }, 300)\r\n },\r\n\r\n openAccordion: (accordion) => {\r\n const {answer, question, item} = accordion;\r\n\r\n question.classList.add('active');\r\n item.classList.add('open');\r\n accordionToggle.setAccordionHeight(answer, answer.scrollHeight);\r\n answer.removeAttribute('inert');\r\n },\r\n\r\n setAccordionHeight: (answer, height) => {\r\n //INLINE STYLE NEEDED AS USES DYNAMIC HEIGHT\r\n answer.style.maxHeight = `${height}px`;\r\n },\r\n\r\n handleAccordionQuestionClicked: (accordion) => {\r\n const accordionExpanded = accordion.question.classList.contains('active');\r\n accordionExpanded ? accordionToggle.closeAccordion(accordion) : accordionToggle.openAccordion(accordion);\r\n\r\n // SCROLL ACCORDION INTO VIEW\r\n accordionToggle.handleScrollIntoView(accordion.item);\r\n },\r\n\r\n handleScrollIntoView: (accordionItem) => {\r\n const offset = 81;\r\n const accordionItemScrollTop = accordionItem.getBoundingClientRect().top + window.scrollY - offset;\r\n window.scrollTo({ top: accordionItemScrollTop, behavior: 'smooth' });\r\n }\r\n}\r\n\r\n\r\nconst showMoreFunctionality = {\r\n\r\n init: (accordionGroup) => {\r\n const accordions = accordionGroup.querySelectorAll('.mod-accordion__item'),\r\n dataItemsLoaded = accordionGroup.getAttribute('data-items-loaded'),\r\n toggleButton = accordionGroup.querySelector('.mod-accordion__show-more'),\r\n totalAccordions = accordions.length;\r\n\r\n let currentAccordionsDisplayed = parseInt(dataItemsLoaded);\r\n if (totalAccordions > currentAccordionsDisplayed) {\r\n toggleButton.classList.remove('display-none');\r\n showMoreFunctionality.toggleAccordionVisibility(dataItemsLoaded, accordions)\r\n } else {\r\n showMoreFunctionality.hideToggleButton();\r\n }\r\n\r\n toggleButton.addEventListener('click', (e) => {\r\n e.preventDefault();\r\n currentAccordionsDisplayed += 2;\r\n //IF ALL ACCORDIONS ARE SHOWING, HIDE THE TOGGLE BUTTON\r\n if (currentAccordionsDisplayed >= totalAccordions) showMoreFunctionality.hideToggleButton(toggleButton);\r\n showMoreFunctionality.toggleAccordionVisibility(currentAccordionsDisplayed, accordions);\r\n })\r\n },\r\n\r\n\r\n hideToggleButton: (toggleButton) => {\r\n if (toggleButton) toggleButton.classList.add('display-none');\r\n }, \r\n\r\n\r\n toggleAccordionVisibility: (dataItemsShowing, accordions) => {\r\n accordions.forEach((accordion, index) => {\r\n index >= dataItemsShowing ? accordion.classList.add('display-none') : accordion.classList.remove('display-none');\r\n })\r\n },\r\n}\r\n\r\nconst windowResizeHandler = {\r\n\r\n resizing: false,\r\n closedAccordions: [],\r\n\r\n debounce: (func, delay) => {\r\n //DEBOUNCE FUNCTION FOR RESIZE\r\n let timeoutId;\r\n return function (...args) {\r\n clearTimeout(timeoutId);\r\n timeoutId = setTimeout(() => {\r\n func(...args);\r\n }, delay);\r\n };\r\n },\r\n\r\n //PLACEHOLDER\r\n debounceResizeHandler: null,\r\n}\r\n\r\nwindowResizeHandler.debounceResizeHandler = windowResizeHandler.debounce((accordions) => {\r\n\r\n accordions.forEach((accordion) => {\r\n const accordionExpanded = accordion.question.classList.contains('active');\r\n\r\n if (accordionExpanded) {\r\n accordionToggle.calculateAccordionContentHeight(accordion.answer);\r\n }\r\n });\r\n\r\n}, 200);\r\n\r\n\r\n\r\ndocument.addEventListener('DOMContentLoaded', function () {\r\n const accordionGroups = document.querySelectorAll('.mod-accordion--show-more');\r\n const accordions = document.querySelectorAll('.mod-accordion__item');\r\n\r\n if (!accordions) return; \r\n\r\n let accordionObjectArray = [];\r\n accordions.forEach(accordionItem => {\r\n const accordionObject = {\r\n item: accordionItem,\r\n question: accordionItem.querySelector('.mod-accordion__question'),\r\n answer: accordionItem.querySelector('.mod-row')\r\n };\r\n\r\n accordionObjectArray.push(accordionObject);\r\n accordionToggle.init(accordionObject);\r\n });\r\n\r\n //WINDOW RESIZE HANDLER\r\n window.addEventListener('resize', () => {\r\n windowResizeHandler.debounceResizeHandler(accordionObjectArray);\r\n });\r\n\r\n if (!accordionGroups) return;\r\n accordionGroups.forEach(accordionGroup => {\r\n showMoreFunctionality.init(accordionGroup);\r\n });\r\n\r\n});","var tableScroll = (function () {\r\n\r\n function mobileTableScroll() {\r\n var scrollTable = document.querySelector(\".mod-table--scroll\");\r\n if (!scrollTable) {\r\n return;\r\n }\r\n var scrollTableParent = scrollTable.parentElement;\r\n scrollTableParent.closest(\".mod-flex\").firstElementChild.style.minWidth = \"0\";\r\n }\r\n\r\n return {\r\n mobileTableScroll: mobileTableScroll\r\n };\r\n\r\n})();\r\n\r\nwindow.addEventListener(\"load\", tableScroll.mobileTableScroll);","var multiCta = (function () {\r\n\tfunction init() {\r\n\t\tsetupClickHandlers();\r\n\t}\r\n\r\n\tfunction setupClickHandlers() {\r\n\t\tvar multiCtaLists = document.querySelectorAll('.field-group--multi-cta');\r\n\r\n\t\tif (multiCtaLists) {\r\n\t\t\tArray.prototype.forEach.call(multiCtaLists, function (multiCtaList) {\r\n\t\t\t\tvar inputs = multiCtaList.querySelectorAll('input[type=\"radio\"]');\r\n\t\t\t\tvar button = multiCtaList.querySelector('.btn.cta-action');\r\n\t\t\t\tvar errorMsg = multiCtaList.querySelector('.field-validation-error');\r\n\r\n\t\t\t\tArray.prototype.forEach.call(inputs, function (input) {\r\n\t\t\t\t\tinput.addEventListener('change', function (e) {\r\n\t\t\t\t\t\tvar urlVal = e.target.getAttribute('data-ctaUrl');\r\n\t\t\t\t\t\tremoveErrorClass(errorMsg);\r\n\t\t\t\t\t\tupdateButtonUrl(button, urlVal);\r\n\t\t\t\t\t});\r\n\t\t\t\t});\r\n\r\n\t\t\t\tbutton.addEventListener('click', function (e) {\r\n\t\t\t\t\tif (!multiCtaList.querySelector('input[type=\"radio\"]:checked')) {\r\n\t\t\t\t\t\te.preventDefault();\r\n\t\t\t\t\t\taddErrorClass(errorMsg);\r\n\t\t\t\t\t\tdisableButton(button);\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tfunction removeErrorClass(el) {\r\n\t\tel.style.display = 'none';\r\n\t}\r\n\r\n\tfunction addErrorClass(el) {\r\n\t\tel.style.display = 'block';\r\n\t}\r\n\r\n\tfunction disableButton(button) {\r\n\t\tbutton.style.pointerEvents = 'none';\r\n\t}\r\n\r\n\tfunction updateButtonUrl(button, urlVal) {\r\n\t\tbutton.setAttribute('href', urlVal);\r\n\t\tbutton.style.pointerEvents = 'all';\r\n\t}\r\n\r\n\treturn {\r\n\t\tinit: init,\r\n\t};\r\n})();\r\n\r\ndocument.addEventListener('DOMContentLoaded', function () {\r\n\tmultiCta.init();\r\n});\r\n","var interactiveRadioButtons = {\r\n\tinteractiveSections: document.querySelectorAll('.mod-interactive-radio-buttons'),\r\n\r\n\tinit: function () {\r\n\t\tArray.prototype.forEach.call(interactiveRadioButtons.interactiveSections, function (interactiveArea) {\r\n\t\t\tvar answers = interactiveArea.querySelector('.mod-interactive-radio-buttons__answer'),\r\n\t\t\t\tquestions = interactiveArea.querySelector('.mod-interactive-radio-buttons__question'),\r\n\t\t\t\tradioInputs = interactiveArea.querySelectorAll('input[type=\"radio\"]'),\r\n\t\t\t\tbutton = interactiveArea.querySelector('a.btn');\r\n\r\n\t\t\t//HIDE THE ANSWERS ON LOAD\r\n\t\t\tanswers.style.display = 'none';\r\n\r\n\t\t\t//ADD EVENT LISTENER TO BUTTON TO SHOW ANSWER\r\n\t\t\tbutton.addEventListener('click', function (e) {\r\n\t\t\t\te.preventDefault();\r\n\t\t\t\tif (!interactiveArea.querySelector('input[type=\"radio\"]:checked')) {\r\n\t\t\t\t\treturn interactiveRadioButtons.showError(radioInputs[0]);\r\n\t\t\t\t}\r\n\t\t\t\treturn interactiveRadioButtons.showResults(interactiveArea);\r\n\t\t\t});\r\n\r\n\t\t\t//ADD EVENT LISTENER TO REMOVE ERROR (IF EXISTS), WHEN INPUT CLICKED\r\n\t\t\tArray.prototype.forEach.call(radioInputs, function (input) {\r\n\t\t\t\tinput.addEventListener('click', function (e) {\r\n\t\t\t\t\tinteractiveRadioButtons.removeError(interactiveArea);\r\n\t\t\t\t});\r\n\t\t\t});\r\n\t\t});\r\n\t},\r\n\r\n\tremoveError: function (modInteractiveRadioContainer) {\r\n\t\tvar fieldset = modInteractiveRadioContainer.querySelector('fieldset.field-group');\r\n\t\tvar validationError = modInteractiveRadioContainer.querySelector('.field-validation-error');\r\n\r\n\t\tif (fieldset) {\r\n\t\t\tfieldset.classList.remove('field-group--error');\r\n\t\t\tvalidationError.remove();\r\n\t\t}\r\n\t\treturn;\r\n\t},\r\n\r\n\tshowError: function (topRadio) {\r\n\t\t//RECEIVES FIRST RADIO BUTTON FOR ERROR POSITION\r\n\t\tvar radioContainer = topRadio.parentElement;\r\n\t\tvar fieldGroup = radioContainer.closest('fieldset');\r\n\r\n\t\tif (fieldGroup.classList.contains('field-group--error')) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tfieldGroup.classList.add('field-group--error');\r\n\t\tvar errorContainer = document.createElement('div');\r\n\t\terrorContainer.classList.add('field-validation-error');\r\n\t\tvar errorMessage = document.createElement('div');\r\n\t\terrorMessage.innerHTML = 'Choose an answer';\r\n\t\terrorContainer.appendChild(errorMessage);\r\n\r\n\t\tradioContainer.parentElement.insertBefore(errorContainer, radioContainer);\r\n\t},\r\n\r\n\tshowResults: function (modInteractiveRadioContainer) {\r\n\t\tvar question = modInteractiveRadioContainer.querySelector('.mod-interactive-radio-buttons__question');\r\n\t\tvar answer = modInteractiveRadioContainer.querySelector('.mod-interactive-radio-buttons__answer');\r\n\r\n\t\tquestion.style.display = 'none';\r\n\t\tanswer.style.display = 'block';\r\n\t},\r\n};\r\n\r\ndocument.addEventListener('DOMContentLoaded', function () {\r\n\t//IF THE INTERACTIVE RADIO BUTTONS EXIST ON THE PAGE\r\n\tif (interactiveRadioButtons.interactiveSections.length) {\r\n\t\tinteractiveRadioButtons.init();\r\n\t}\r\n});\r\n","var formInputValidationMessages = function (input, otherInputClicked) {\r\n\t//CHECKS WHAT TYPE OF FIELD AND PASSES BACK THE ERROR MESSAGE & FIELD ID\r\n\r\n\tif (input.name === 'subject_select') {\r\n\t\tif (otherInputClicked) {\r\n\t\t\treturn { message: input.dataset.inputInvalid, input: input.id };\r\n\t\t}\r\n\t\tif (input.value.trim() === '') {\r\n\t\t\treturn { message: input.dataset.inputSkipped, input: input.id };\r\n\t\t}\r\n\t}\r\n\r\n\tif (input.name === 'issues_select') {\r\n\t\tif (input.value.trim() === '' || input.value === 'Select an issue') {\r\n\t\t\treturn { message: input.dataset.inputSkipped, input: input.id };\r\n\t\t}\r\n\t}\r\n\r\n\tif (input.name === 'email address') {\r\n\t\t//SANITY CHECK EMAIL FORMAT\r\n\t\tvar re = /.+\\@.+\\..+/;\r\n\t\tif (!re.test(input.value || input.value.trim() === '')) {\r\n\t\t\treturn { message: input.dataset.inputInvalid, input: input.id };\r\n\t\t}\r\n\t}\r\n\r\n\tif (input.name === 'first name') {\r\n\t\tif (input.value.trim() === '') {\r\n\t\t\treturn { message: input.dataset.inputSkipped, input: input.id };\r\n\t\t}\r\n\t\tif (input.value.length > 20 || input.value.length < 2) {\r\n\t\t\treturn { message: input.dataset.inputInvalid, input: input.id };\r\n\t\t}\r\n\t}\r\n\r\n\tif (input.name === 'last name') {\r\n\t\tif (input.value.trim() === '') {\r\n\t\t\treturn { message: input.dataset.inputSkipped, input: input.id };\r\n\t\t}\r\n\t\tif (input.value.length > 30 || input.value.length < 2) {\r\n\t\t\treturn { message: input.dataset.inputInvalid, input: input.id };\r\n\t\t}\r\n\t}\r\n\r\n\tif (input.id.substring(0, 3) === 'dob') {\r\n\t\tif (input.value.trim() === '') {\r\n\t\t\treturn { message: input.dataset.inputSkipped, input: input.id, priority: 0 };\r\n\t\t}\r\n\r\n\t\tif (isNaN(input.value)) {\r\n\t\t\treturn { message: input.dataset.inputInvalid, input: input.id, priority: 2 };\r\n\t\t}\r\n\r\n\t\tif (input.name === 'day') {\r\n\t\t\tvar month = document.querySelector('#dob_month').value;\r\n\t\t\tvar year = document.querySelector('#dob_year').value;\r\n\t\t\tvar lastDayOfMonth = new Date(year, month, 0).getDate();\r\n\r\n\t\t\tif (month || year !== null) {\r\n\t\t\t\tif (parseInt(input.value, 10) > lastDayOfMonth) {\r\n\t\t\t\t\t//IF DAY ENTERED NOT IN MONTH\r\n\t\t\t\t\treturn { message: input.dataset.inputInvalidDay, input: input.id, priority: 4 };\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (input.name === 'month') {\r\n\t\t\tif (input.value > 12 || input.value === 0) {\r\n\t\t\t\treturn { message: input.dataset.inputInvalidMonth, input: input.id, priority: 5 };\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (input.name === 'year') {\r\n\t\t\tvar day = document.querySelector('#dob_day');\r\n\t\t\tvar month = document.querySelector('#dob_month');\r\n\t\t\tvar currentDay = new Date();\r\n\t\t\tvar currentYear = currentDay.getFullYear();\r\n\t\t\tvar enteredDay = new Date(month.value + '/' + day.value + '/' + input.value);\r\n\r\n\t\t\tif (Date.parse(currentDay) < Date.parse(enteredDay)) {\r\n\t\t\t\treturn {\r\n\t\t\t\t\tmessage: input.dataset.inputInvalidYear_past,\r\n\t\t\t\t\tinput: [day.id, month.id, input.id],\r\n\t\t\t\t\tpriority: 1,\r\n\t\t\t\t};\r\n\t\t\t}\r\n\r\n\t\t\tif (input.value.length < 4 || input.value.length > 4) {\r\n\t\t\t\treturn { message: input.dataset.inputInvalidYear_format, input: input.id, priority: 3 };\r\n\t\t\t}\r\n\r\n\t\t\tif (currentYear - 130 > input.value) {\r\n\t\t\t\treturn { message: input.dataset.inputInvalidYear_age, input: input.id, priority: 6 };\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tif (input.name === 'postcode') {\r\n\t\tvar inputWithoutSpaces = input.value.replace(/\\s/g, '');\r\n\t\t//POSTCODE REGEX FROM UK GOV\r\n\t\tvar re =\r\n\t\t\t/([Gg][Ii][Rr] 0[Aa]{2})|((([A-Za-z][0-9]{1,2})|(([A-Za-z][A-Ha-hJ-Yj-y][0-9]{1,2})|(([AZa-z][0-9][A-Za-z])|([A-Za-z][A-Ha-hJ-Yj-y][0-9]?[A-Za-z]))))[0-9][A-Za-z]{2})/;\r\n\t\tif (input.value.trim() === '') {\r\n\t\t\treturn { message: input.dataset.inputSkipped, input: input.id };\r\n\t\t}\r\n\t\tif (!re.test(inputWithoutSpaces)) {\r\n\t\t\treturn { message: input.dataset.inputInvalid, input: input.id };\r\n\t\t}\r\n\t}\r\n\r\n\tif (input.id === 'phone_consent-yes') {\r\n\t\tvar noInput = document.querySelector('#phone_consent-no');\r\n\t\tif (!input.checked && !noInput.checked) {\r\n\t\t\treturn { message: input.dataset.inputSkipped, input: input.id, priority: 0 };\r\n\t\t}\r\n\t}\r\n\r\n\tif (input.id === 'phone_consent-no') {\r\n\t\tvar yesInput = document.querySelector('#phone_consent-yes');\r\n\t\tif (!input.checked && !yesInput.checked) {\r\n\t\t\treturn { message: input.dataset.inputSkipped, input: input.id, priority: 99 };\r\n\t\t}\r\n\t}\r\n\r\n\tif (input.name === 'phone number') {\r\n\t\tif (input.value.trim() === '') {\r\n\t\t\treturn { message: input.dataset.inputSkipped, input: input.id };\r\n\t\t}\r\n\r\n\t\tif (input.value.trim().length < 10 || input.value.trim().length > 14) {\r\n\t\t\treturn { message: input.dataset.inputInvalid, input: input.id };\r\n\t\t}\r\n\t}\r\n\r\n\tif (input.id === 'insurance_bought-yes') {\r\n\t\tvar noInput = document.querySelector('#insurance_bought-no');\r\n\t\tif (!input.checked && !noInput.checked) {\r\n\t\t\treturn { message: input.dataset.inputSkipped, input: input.id, priority: 0 };\r\n\t\t}\r\n\t}\r\n\r\n\tif (input.id === 'insurance_bought-no') {\r\n\t\tvar yesInput = document.querySelector('#insurance_bought-yes');\r\n\t\tif (!input.checked && !yesInput.checked) {\r\n\t\t\treturn { message: input.dataset.inputSkipped, input: input.id, priority: 99 };\r\n\t\t}\r\n\t}\r\n\r\n\tif (input.id === 'message_subject') {\r\n\t\tif (input.value.trim() === '') {\r\n\t\t\treturn { message: input.dataset.inputSkipped, input: input.id };\r\n\t\t}\r\n\r\n\t\tif (input.value.length > 255) {\r\n\t\t\treturn { message: input.dataset.inputInvalid, input: input.id };\r\n\t\t}\r\n\t}\r\n\r\n\tif (input.id === 'message_content') {\r\n\t\tif (input.value.trim() === '') {\r\n\t\t\treturn { message: input.dataset.inputSkipped, input: input.id };\r\n\t\t}\r\n\r\n\t\tif (input.value.length > 32000) {\r\n\t\t\treturn { message: input.dataset.inputInvalid, input: input.id };\r\n\t\t}\r\n\t}\r\n};\r\n\r\nvar keyInputs = function (e, input) {\r\n\tvar code = e.keyCode || e.which;\r\n\r\n\tif (input.id.substring(0, 3) === 'dob') {\r\n\t\tif (code === 8 || code === 13 || code === 9 || code === 27 || code === 110) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (isNaN(parseInt(String.fromCharCode(code), 10))) {\r\n\t\t\te.preventDefault();\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\tif (input.id === 'phone_number') {\r\n\t\tif (\r\n\t\t\tcode === 8 ||\r\n\t\t\tcode === 13 ||\r\n\t\t\tcode === 9 ||\r\n\t\t\tcode === 27 ||\r\n\t\t\tcode === 32 ||\r\n\t\t\tcode === 188 ||\r\n\t\t\tcode === 43 ||\r\n\t\t\tcode === 187\r\n\t\t) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (isNaN(parseInt(String.fromCharCode(code), 10))) {\r\n\t\t\te.preventDefault();\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n};\r\n\r\nvar formValidator = {\r\n\tform: document.getElementById('cnfsd-contact-form'),\r\n\ttotalErrors: 0,\r\n\tvalidateInput: formInputValidationMessages,\r\n\thandleKeyInputs: keyInputs,\r\n\tformInputs: [],\r\n\r\n\tinitialise: function () {\r\n\t\tformValidator.formInputs = formValidator.form.querySelectorAll('.field-group');\r\n\t\tformValidator.validateOnFieldEntry();\r\n\t},\r\n\r\n\tvalidateOnFieldEntry: function () {\r\n\t\t//ADDS EVENT LISTENER TO EACH INPUT TO REMOVE ERRORS WHEN INTERACTED WITH\r\n\t\tArray.prototype.forEach.call(formValidator.formInputs, function (field) {\r\n\t\t\tvar textInputs = field.querySelectorAll(\r\n\t\t\t\t\"input[type='text'], input[type='email'], input[type='password'], input[type='number'], textarea\"\r\n\t\t\t);\r\n\t\t\tvar clickableInputs = field.querySelectorAll(\"input[type='radio'], input[type='checkbox'], select\");\r\n\r\n\t\t\tArray.prototype.forEach.call(textInputs, function (input) {\r\n\t\t\t\tif (!input.hasAttribute('removeErrorOnInputChange')) {\r\n\t\t\t\t\tinput.addEventListener('keypress', function (e) {\r\n\t\t\t\t\t\tformValidator.handleKeyInputs(e, input);\r\n\t\t\t\t\t\tformValidator.removeErrorOnFormInput(input);\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\tinput.addEventListener('change', function (e) {\r\n\t\t\t\t\t\tformValidator.removeErrorOnFormInput(input);\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\tinput.setAttribute('error-remove-on-change', true);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\t//FOR CLICK INTO INPUTS (SELECTS, RADIOS)\r\n\t\t\tArray.prototype.forEach.call(clickableInputs, function (input) {\r\n\t\t\t\tinput.addEventListener('click', function (e) {\r\n\t\t\t\t\tformValidator.removeErrorOnFormInput(input);\r\n\t\t\t\t});\r\n\t\t\t});\r\n\t\t});\r\n\t},\r\n\r\n\tvalidateOnFormSubmit: function () {\r\n\t\t//LOOP THROUGH FORM & CHECK ERRORS\r\n\t\tformValidator.totalErrors = 0;\r\n\r\n\t\tArray.prototype.forEach.call(formValidator.formInputs, function (fieldGroup) {\r\n\t\t\tformValidator.validateFieldSet(fieldGroup);\r\n\t\t});\r\n\r\n\t\t//IF NO ERRORS EXIST, RETURN FORM\r\n\t\tif (formValidator.totalErrors === 0) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\tvar error = document.querySelector('.field-group--error');\r\n\t\tvar rect = error.getBoundingClientRect().top + window.pageYOffset + -140;\r\n\t\twindow.scrollTo({ behavior: 'smooth', top: rect });\r\n\t\treturn false;\r\n\t},\r\n\r\n\tvalidateFieldSet: function (field, additionalField) {\r\n\t\tvar inputs = field.querySelectorAll('input, textarea, select');\r\n\r\n\t\tvar inputErrorArray = [];\r\n\t\tArray.prototype.forEach.call(inputs, function (input) {\r\n\t\t\tvar returnedError = formValidator.validateInput(input, additionalField);\r\n\r\n\t\t\tif (returnedError !== undefined) {\r\n\t\t\t\t//if error exists in input\r\n\t\t\t\treturnedError['field'] = field;\r\n\t\t\t\tinputErrorArray.push(returnedError);\r\n\t\t\t} else {\r\n\t\t\t\tinput.removeAttribute('aria-invalid'); //sanity removal of red border if no error exists;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tif (inputErrorArray.length > 0) {\r\n\t\t\tformValidator.prioritiseErrorMessage(inputErrorArray);\r\n\t\t\treturn (formValidator.totalErrors += 1);\r\n\t\t}\r\n\t},\r\n\r\n\tprioritiseErrorMessage: function (inputErrorArray) {\r\n\t\t//checks if field has multiple inputs and if so, prioritises error message\r\n\t\tif (inputErrorArray[0].priority !== undefined) {\r\n\t\t\t//check if priority scoring exists\r\n\t\t\tvar inputArr = [];\r\n\t\t\t//ADD EACH UNIQUE INPUT TO AN ARRAY FROM FIELDGROUP\r\n\t\t\tArray.prototype.forEach.call(inputErrorArray, function (input) {\r\n\t\t\t\tif (Array.isArray(input.input)) {\r\n\t\t\t\t\tArray.prototype.forEach.call(input.input, function (item) {\r\n\t\t\t\t\t\tinputArr.push(item);\r\n\t\t\t\t\t});\r\n\t\t\t\t} else {\r\n\t\t\t\t\tif (!inputArr.includes(input.input)) {\r\n\t\t\t\t\t\tinputArr.push(input.input);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\tvar topPriority = [];\r\n\t\t\tArray.prototype.forEach.call(inputErrorArray, function (item) {\r\n\t\t\t\tif (!topPriority.length || item.priority < topPriority[0].priority) {\r\n\t\t\t\t\ttopPriority = [];\r\n\t\t\t\t\ttopPriority.push(item);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\t//send highest priority message with the input array\r\n\t\t\tformValidator.showValidationErrors({\r\n\t\t\t\tinput: inputArr,\r\n\t\t\t\tmessage: topPriority[0].message,\r\n\t\t\t\tfield: inputErrorArray[0].field,\r\n\t\t\t});\r\n\t\t} else {\r\n\t\t\tformValidator.showValidationErrors(inputErrorArray.pop());\r\n\t\t}\r\n\t},\r\n\r\n\tshowValidationErrors: function (field) {\r\n\t\tvar fieldInput = field.field;\r\n\t\tvar currentFieldErrorContainer = fieldInput.querySelectorAll('div.field-validation-error');\r\n\t\tvar currentFieldError = fieldInput.querySelectorAll('div.error-message');\r\n\r\n\t\tif (currentFieldError.length > 0 && currentFieldError[0].innerHTML === field.message) {\r\n\t\t\t//if message is same as one that exists\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (currentFieldError.length > 0 && currentFieldError[0].innerHTML !== field.message) {\r\n\t\t\t//if message is different, remove current error so that highest priority can be set\r\n\t\t\tcurrentFieldErrorContainer[0].remove();\r\n\t\t}\r\n\r\n\t\tvar errorMessageNode = document.createElement('div');\r\n\t\terrorMessageNode.classList.add('error-message');\r\n\t\terrorMessageNode.innerHTML = field.message;\r\n\t\terrorMessageNode.id = formValidator.setErrorBorderColour(field.input);\r\n\r\n\t\t//error message container html\r\n\t\tvar errorMessageContainer = document.createElement('div');\r\n\t\terrorMessageContainer.classList.add('field-validation-error');\r\n\t\terrorMessageContainer.appendChild(errorMessageNode);\r\n\r\n\t\tif (fieldInput.querySelectorAll('label.label--standard').length > 0) {\r\n\t\t\t//label is main form label\r\n\t\t\tvar label = fieldInput.querySelectorAll('label.label--standard');\r\n\t\t\tfieldInput.insertBefore(errorMessageContainer, label[0].nextElementSibling);\r\n\t\t\tfieldInput.classList.add('field-group--error');\r\n\t\t} else {\r\n\t\t\tvar legend = fieldInput.querySelectorAll('legend'); //legend is main form label\r\n\t\t\tfieldInput.insertBefore(errorMessageContainer, legend[0]);\r\n\t\t\tfieldInput.classList.add('field-group--error');\r\n\t\t}\r\n\t},\r\n\r\n\tsetErrorBorderColour: function (field) {\r\n\t\tvar errorId = '';\r\n\t\tif (Array.isArray(field)) {\r\n\t\t\tArray.prototype.forEach.call(field, function (input) {\r\n\t\t\t\tvar inputNode = document.querySelector('#' + input);\r\n\t\t\t\tvar splitInput = input.split('_');\r\n\t\t\t\terrorId = splitInput[0] + '-invalid';\r\n\t\t\t\tinputNode.setAttribute('aria-invalid', true);\r\n\t\t\t\tinputNode.setAttribute('aria-errormessage', errorId);\r\n\t\t\t});\r\n\t\t} else {\r\n\t\t\tvar inputNode = document.querySelector('#' + field);\r\n\t\t\tinputNode.setAttribute('aria-invalid', true);\r\n\t\t\terrorId = field + '-invalid';\r\n\t\t\tinputNode.setAttribute('aria-errormessage', errorId);\r\n\t\t}\r\n\t\treturn errorId;\r\n\t},\r\n\r\n\tremoveErrorOnFormInput: function (input) {\r\n\t\tif (!input.hasAttribute('aria-invalid')) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tinput.removeAttribute('aria-invalid');\r\n\t\tvar fieldGroup = input.closest('.field-group');\r\n\t\tvar message = fieldGroup.querySelectorAll('div.field-validation-error')[0];\r\n\r\n\t\tfieldGroup.classList.remove('field-group--error');\r\n\t\tif (message) {\r\n\t\t\tfieldGroup.removeChild(message);\r\n\t\t}\r\n\t},\r\n\r\n\tremoveInputFromFormArray: function (input) {\r\n\t\tvar field = input.closest('.field-group');\r\n\r\n\t\tif (field && field.classList.contains('field-group')) {\r\n\t\t\tfield.classList.add('field-group-hidden');\r\n\t\t\tfield.classList.remove('field-group');\r\n\t\t\tfield.style.display = 'none';\r\n\t\t}\r\n\t\tformValidator.formInputs = formValidator.form.querySelectorAll('.field-group');\r\n\t\treturn;\r\n\t},\r\n\r\n\taddInputToFormArray: function (input) {\r\n\t\tvar field = input.closest('.field-group-hidden');\r\n\r\n\t\tif (field && field.classList.contains('field-group-hidden')) {\r\n\t\t\tfield.classList.add('field-group');\r\n\t\t\tfield.classList.remove('field-group-hidden');\r\n\t\t\tfield.style.display = '';\r\n\t\t}\r\n\r\n\t\tformValidator.formInputs = formValidator.form.querySelectorAll('.field-group');\r\n\t\treturn;\r\n\t},\r\n};\r\n\r\nvar contactUsForm = {\r\n\tform: document.getElementById('cnfsd-contact-form'),\r\n\tsubjectSelect: document.getElementById('subject_select'),\r\n\tissuesSelect: document.getElementById('issues_select'),\r\n\terrorSummaryBox: document.querySelector('.mod-error-summary'),\r\n\tloginLink: document.getElementById('Login_Link'),\r\n\tchosenSubjectOption: null,\r\n\tchosenIssuesOption: null,\r\n\tquestionAnswerContainer: document.getElementById('cfq-question-toggle'),\r\n\tcontactDetailsForm: document.getElementById('cfq-contact-details-form'),\r\n\tcontactSucessCard: document.getElementById('cfq-contact-success'),\r\n\tbutton: document.getElementById('cfq0-continue'),\r\n\tshowContactDetails: document.getElementById('q0-yes'),\r\n\thideContactDetails: document.getElementById('q0-no'),\r\n\tvalidateForm: null,\r\n\tjsonData: null,\r\n\r\n\tinitialise: function () {\r\n\t\tvar jsonData = document.getElementById('cnfsd-contact-jsonData').textContent;\r\n\t\tcontactUsForm.jsonData = JSON.parse(jsonData);\r\n\r\n\t\tcontactUsForm.form.addEventListener('submit', function (e) {\r\n\t\t\te.preventDefault();\r\n\t\t\tvar valid = formValidator.validateOnFormSubmit();\r\n\t\t\tcontactUsForm.updateDataLayer(valid);\r\n\r\n\t\t\tif (valid) {\r\n\t\t\t\treturn contactUsForm.submitForm(valid);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tformValidator.initialise();\r\n\r\n\t\tcontactUsForm.populateSubjectSelectOptions();\r\n\r\n\t\tcontactUsForm.subjectSelect.onchange = function (e) {\r\n\t\t\tcontactUsForm.populateIssuesSelectOptions(e.target);\r\n\t\t};\r\n\r\n\t\tcontactUsForm.issuesSelect.onclick = function (e) {\r\n\t\t\tcontactUsForm.checkSelectChecked(e.target);\r\n\t\t};\r\n\r\n\t\tcontactUsForm.issuesSelect.onchange = function (e) {\r\n\t\t\tcontactUsForm.populateQuestionAnswerBox(e.target);\r\n\t\t};\r\n\r\n\t\tcontactUsForm.button.onclick = function (e) {\r\n\t\t\te.preventDefault();\r\n\t\t\tcontactUsForm.toggleQuestionAnswerContainer();\r\n\t\t};\r\n\r\n\t\tcontactUsForm.hideContactDetails.onchange = function (e) {\r\n\t\t\tcontactUsForm.toggleContactDetails(e.target.value);\r\n\t\t};\r\n\r\n\t\tcontactUsForm.showContactDetails.onchange = function (e) {\r\n\t\t\tcontactUsForm.toggleContactDetails(e.target.value);\r\n\t\t};\r\n\r\n\t\tcontactUsForm.checkIfPhoneDesired();\r\n\r\n\t\tif (contactUsForm.loginLink) {\r\n\t\t\tcontactUsForm.loginLink.addEventListener('click', function (e) {\r\n\t\t\t\te.stopPropagation();\r\n\t\t\t\te.preventDefault();\r\n\t\t\t\tcontactUsForm.createLoginLink();\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tvar hasQueryString = window.location.href.indexOf('?product');\r\n\r\n\t\twindow.addEventListener('load', function (e) {\r\n\t\t\t//PREVENT DEFAULT BROWSER FUNCTIONALITY SETTING SELECTS TO PREVIOUS VALUES;\r\n\t\t\tif (hasQueryString !== -1) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tif (contactUsForm.subjectSelect.selectedIndex === 0) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tcontactUsForm.populateIssuesSelectOptions(contactUsForm.subjectSelect);\r\n\t\t\tcontactUsForm.removeIssuesSelectOptions();\r\n\t\t\tcontactUsForm.showContactDetails.checked = false;\r\n\t\t\tcontactUsForm.hideContactDetails.checked = false;\r\n\t\t});\r\n\r\n\t\tif (hasQueryString) {\r\n\t\t\tcontactUsForm.parseQueryString(hasQueryString);\r\n\t\t}\r\n\t},\r\n\r\n\tparseQueryString: function (substringIndex) {\r\n\t\tvar queryString = window.location.href.substring(substringIndex + 1),\r\n\t\t\tselectQueryStrings = queryString.split('&');\r\n\r\n\t\t//CONVERT CODED QUERY STRING TO NORMAL TEXT\r\n\t\tArray.prototype.forEach.call(selectQueryStrings, function (item) {\r\n\t\t\tvar selectValue = item.substring(item.indexOf('=') + 1),\r\n\t\t\t\tparsedValue = selectValue.split('%27').join(\"'\").split('%20').join(' ');\r\n\r\n\t\t\tif (item.includes('product')) {\r\n\t\t\t\tcontactUsForm.setSelectAsQuerystringValue(\r\n\t\t\t\t\tcontactUsForm.subjectSelect,\r\n\t\t\t\t\tparsedValue,\r\n\t\t\t\t\tcontactUsForm.populateIssuesSelectOptions\r\n\t\t\t\t);\r\n\t\t\t}\r\n\r\n\t\t\tif (item.includes('moreInformation') && contactUsForm.chosenSubjectOption) {\r\n\t\t\t\tcontactUsForm.setSelectAsQuerystringValue(\r\n\t\t\t\t\tcontactUsForm.issuesSelect,\r\n\t\t\t\t\tparsedValue,\r\n\t\t\t\t\tcontactUsForm.populateQuestionAnswerBox\r\n\t\t\t\t);\r\n\t\t\t}\r\n\t\t});\r\n\t},\r\n\r\n\tsetSelectAsQuerystringValue: function (input, value, callback) {\r\n\t\t//SETS VALUE OF SELECT TO QUERY STRING\r\n\t\tvar options = input.querySelectorAll('option');\r\n\r\n\t\tArray.prototype.forEach.call(options, function (option, i) {\r\n\t\t\tif (option.value.toLowerCase() === value.toLowerCase()) {\r\n\t\t\t\tinput.selectedIndex = i;\r\n\t\t\t\tcallback(input);\r\n\t\t\t}\r\n\t\t});\r\n\t},\r\n\r\n\tcreateLoginLink: function () {\r\n\t\t//GETS CURRENT LOGIN LINK AND APPENDS SUBJECT/ISSUE SELECT VALUES\r\n\t\tvar loginLink = contactUsForm.loginLink.href;\r\n\t\tloginLink += '%3Fproduct%3D' + contactUsForm.subjectSelect.value;\r\n\r\n\t\tif (contactUsForm.issuesSelect.value) {\r\n\t\t\tloginLink += '%26moreInformation%3D' + contactUsForm.issuesSelect.value;\r\n\t\t}\r\n\r\n\t\twindow.location.href = loginLink;\r\n\t},\r\n\r\n\tupdateDataLayer: function (formSuccess) {\r\n\t\t//GET ALL ERRORS IN FORM\r\n\t\tvar erroredInputs = contactUsForm.form.querySelectorAll(\r\n\t\t\t\"input[aria-invalid='true'], textarea[aria-invalid='true']\"\r\n\t\t);\r\n\r\n\t\t//CREATE ARRAY OF ERROR NAMES\r\n\t\tvar eventErrors = [];\r\n\t\tArray.prototype.forEach.call(erroredInputs, function (input) {\r\n\t\t\teventErrors.push(input.name);\r\n\t\t});\r\n\r\n\t\t//REMOVE REPEATED ERRORS (BASICALLY A SET/ SPREAD)\r\n\t\tvar errorArray = [];\r\n\t\tArray.prototype.forEach.call(eventErrors, function (item) {\r\n\t\t\tif (!errorArray.includes(item)) {\r\n\t\t\t\terrorArray.push(item);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\t//PUSH TO DATA LAYER\r\n\t\tdataLayer.push({\r\n\t\t\tevent: 'Contact Us',\r\n\t\t\teventSuccess: formSuccess,\r\n\t\t\teventErrors: errorArray,\r\n\t\t});\r\n\t},\r\n\r\n\tpopulateSubjectSelectOptions: function () {\r\n\t\t//CREATE SELECT OPTIONS FROM THE JASON FOUND IN SCRIPT TAG\r\n\t\tArray.prototype.forEach.call(contactUsForm.jsonData, function (item) {\r\n\t\t\tvar option = document.createElement('option');\r\n\t\t\toption.innerHTML = item.subject;\r\n\t\t\toption.value = item.subjectValue;\r\n\t\t\tcontactUsForm.subjectSelect.appendChild(option);\r\n\t\t});\r\n\t},\r\n\r\n\tpopulateIssuesSelectOptions: function (option) {\r\n\t\t//CREATES ISSUE SELECT OPTIONS FROM THE USER'S CHOSEN SELECT\r\n\t\tArray.prototype.forEach.call(contactUsForm.jsonData, function (item) {\r\n\t\t\tif (item.subjectValue === option.value) {\r\n\t\t\t\tcontactUsForm.chosenSubjectOption = item;\r\n\r\n\t\t\t\t//CHECKS IF THE SUBJECT IS AN INSURANCE TYPE\r\n\t\t\t\tcontactUsForm.checkIfInsuranceOption(item.isInsuranceProduct);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\t//CALLS FUNCTION TO REMOVE PREVIOUSLY ADDED OPTIONS\r\n\t\tif (contactUsForm.issuesSelect.childElementCount > 1) {\r\n\t\t\treturn contactUsForm.removeIssuesSelectOptions();\r\n\t\t}\r\n\t\tcontactUsForm.createIssuesSelectedOptions();\r\n\t},\r\n\r\n\tcheckIfPhoneDesired: function () {\r\n\t\tvar phoneInput = document.getElementById('phone_number'),\r\n\t\t\tphoneField = phoneInput.closest('fieldset.field-group'),\r\n\t\t\tphoneConsentYes = document.getElementById('phone_consent-yes'),\r\n\t\t\tphoneConsentNo = document.getElementById('phone_consent-no');\r\n\r\n\t\t//REMOVE PHONE INPUT BY DEFAULT\r\n\t\tformValidator.removeInputFromFormArray(phoneField);\r\n\r\n\t\t//ADD EVENT LISTENERS ON PHONE CONSENT RADIO BUTTONS TO ADD/REMOVE PHONE INPUT\r\n\t\tphoneConsentYes.addEventListener('change', function (e) {\r\n\t\t\tformValidator.addInputToFormArray(phoneField);\r\n\t\t});\r\n\r\n\t\tphoneConsentNo.addEventListener('change', function (e) {\r\n\t\t\tformValidator.removeInputFromFormArray(phoneField);\r\n\t\t});\r\n\t},\r\n\r\n\tcheckIfInsuranceOption: function (isAnInsuranceProduct) {\r\n\t\t//CHECKS IF THE OPTION SPECIFIED IS AN INSURANCE OPTION\r\n\t\tvar insuranceRadioSection = document.getElementById('insurance_bought-group');\r\n\t\tvar insuranceRadio = insuranceRadioSection.querySelector('input');\r\n\r\n\t\t//IF IT ISN'T AN INSURANCE PRODUCT, CALLS FUNCTION TO REMOVE/ ADD QUESTION FROM/ TO FORM\r\n\t\tif (isAnInsuranceProduct) {\r\n\t\t\tformValidator.addInputToFormArray(insuranceRadio);\r\n\t\t} else {\r\n\t\t\tvar currentlyCheckedInput = document.querySelector(\"input[name='insurance_bought']:checked\");\r\n\t\t\tif (currentlyCheckedInput !== null) {\r\n\t\t\t\tcurrentlyCheckedInput.checked = false;\r\n\t\t\t}\r\n\t\t\tformValidator.removeInputFromFormArray(insuranceRadio);\r\n\t\t}\r\n\t},\r\n\r\n\tremoveIssuesSelectOptions: function () {\r\n\t\t//REMOVES PREVIOUSLY ADDED OPTIONS\r\n\t\twhile (contactUsForm.issuesSelect.childNodes.length > 1) {\r\n\t\t\tcontactUsForm.issuesSelect.removeChild(contactUsForm.issuesSelect.lastChild);\r\n\t\t}\r\n\r\n\t\t//RECREATES THE DEFAULT SELECT AN ISSUE OPTION\r\n\t\tvar option = document.createElement('option');\r\n\t\toption.innerHTML = 'Select an issue';\r\n\t\toption.selected = option.disabled = option.hidden = true;\r\n\t\tcontactUsForm.issuesSelect.appendChild(option);\r\n\r\n\t\t//CALLS FUNCTION TO REPOPULATE THE CHOSEN\r\n\t\tcontactUsForm.createIssuesSelectedOptions();\r\n\t},\r\n\r\n\tcreateIssuesSelectedOptions: function () {\r\n\t\t//IF THERE IS ONLY ONE DEFAULT QUESTION FOR THE CHOSEN SUBJECT\r\n\t\tif (contactUsForm.chosenSubjectOption.issues.length === 1) {\r\n\t\t\tformValidator.removeInputFromFormArray(contactUsForm.issuesSelect);\r\n\r\n\t\t\t//CREATES OPTION\r\n\t\t\tvar option = document.createElement('option');\r\n\t\t\toption.innerHTML = contactUsForm.chosenSubjectOption.issues[0].question;\r\n\t\t\toption.value = contactUsForm.chosenSubjectOption.issues[0].questionValue;\r\n\r\n\t\t\t//SETS VALUE OF ISSUES SELECT AS OPTION\r\n\t\t\tcontactUsForm.issuesSelect.appendChild(option);\r\n\t\t\tcontactUsForm.issuesSelect.value = contactUsForm.chosenSubjectOption.issues[0].questionValue;\r\n\r\n\t\t\t//CALLS FUNCTION TO USE ANSWER FOR ANSWER BOX\r\n\t\t\tcontactUsForm.populateQuestionAnswerBox(option);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t//IF THERE IS MORE THAN ONE OPTION AVAILABLE:\r\n\r\n\t\tformValidator.addInputToFormArray(contactUsForm.issuesSelect);\r\n\r\n\t\t//CREATE THE OPTIONS FOR ISSUES SELECT BASED ON THE CHOSEN SUBJECT\r\n\t\tArray.prototype.forEach.call(contactUsForm.chosenSubjectOption.issues, function (item) {\r\n\t\t\tvar option = document.createElement('option');\r\n\t\t\toption.innerHTML = item.question;\r\n\t\t\toption.value = item.questionValue;\r\n\t\t\tcontactUsForm.issuesSelect.appendChild(option);\r\n\t\t});\r\n\t},\r\n\r\n\tpopulateQuestionAnswerBox: function (option) {\r\n\t\tvar questionAnswerBox = document.querySelector('.mod-info-box');\r\n\t\tvar span = questionAnswerBox.querySelector('span');\r\n\t\tvar p = questionAnswerBox.querySelector('p');\r\n\r\n\t\tArray.prototype.forEach.call(contactUsForm.chosenSubjectOption.issues, function (item) {\r\n\t\t\tif (item.questionValue === option.value) {\r\n\t\t\t\tcontactUsForm.chosenIssuesOption = item;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\t//POPULATE THE QUESTION/ ANSWER BOX\r\n\t\tif (contactUsForm.chosenIssuesOption) {\r\n\t\t\tspan.innerHTML = contactUsForm.chosenIssuesOption.question;\r\n\t\t\tp.innerHTML = contactUsForm.chosenIssuesOption.answer;\r\n\t\t}\r\n\r\n\t\t//HANDLES CHANGES IN SELECT OPTIONS\r\n\t\tif (contactUsForm.button.style.display === 'none') {\r\n\t\t\tif (option.value === 'other') {\r\n\t\t\t\tcontactUsForm.questionAnswerContainer.style.display = 'none';\r\n\t\t\t\tcontactUsForm.contactDetailsForm.style.display = 'block';\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tcontactUsForm.questionAnswerContainer.style.display = 'block';\r\n\r\n\t\t\tif (!contactUsForm.showContactDetails.checked) {\r\n\t\t\t\tcontactUsForm.contactDetailsForm.style.display = 'none';\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\ttoggleQuestionAnswerContainer: function () {\r\n\t\t//CONTINUE BUTTON PRESSED\r\n\t\tvar selectFieldGroup = contactUsForm.subjectSelect.closest('.field-group');\r\n\t\tvar issuesFieldGroup = contactUsForm.issuesSelect.closest('.field-group');\r\n\r\n\t\t//IF NO SUBJECT SELECTED, CALL FUNCTION TO THROW ERROR\r\n\t\tif (!contactUsForm.chosenSubjectOption) {\r\n\t\t\treturn [formValidator.validateFieldSet(selectFieldGroup), formValidator.validateFieldSet(issuesFieldGroup)];\r\n\t\t}\r\n\r\n\t\t//IF NO ISSUE SELECTED, CALL FUNCTION TO THROW ERROR\r\n\t\tif (!contactUsForm.chosenIssuesOption) {\r\n\t\t\treturn formValidator.validateFieldSet(issuesFieldGroup);\r\n\t\t}\r\n\r\n\t\t//IF USER CHOOSES OTHER FROM ISSUES SELECT INPUT FOR THAT SUBJECT\r\n\t\tif (issuesFieldGroup && contactUsForm.issuesSelect.value === 'other') {\r\n\t\t\tcontactUsForm.questionAnswerContainer.style.display = 'none';\r\n\t\t\tcontactUsForm.button.style.display = 'none';\r\n\t\t\tcontactUsForm.contactDetailsForm.style.display = 'block';\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t//ELSE SHOW THE ANSWER BOX\r\n\t\tcontactUsForm.questionAnswerContainer.style.display = 'block';\r\n\t\tcontactUsForm.button.style.display = 'none';\r\n\t},\r\n\r\n\tcheckSelectChecked: function () {\r\n\t\t//ERROR IF SELECT INPUT HAS NO VALUE\r\n\t\tif (!contactUsForm.chosenSubjectOption) {\r\n\t\t\tvar fieldGroup = contactUsForm.subjectSelect.closest('.field-group');\r\n\t\t\treturn formValidator.validateFieldSet(fieldGroup, true);\r\n\t\t}\r\n\t\treturn;\r\n\t},\r\n\r\n\ttoggleContactDetails: function (input) {\r\n\t\t//SHOW/HIDE CONTACT DETAILS FORM\r\n\t\tif (input === 'Yes') {\r\n\t\t\tcontactUsForm.contactDetailsForm.style.display = 'block';\r\n\t\t\tcontactUsForm.contactSucessCard.style.display = 'none';\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (input === 'No') {\r\n\t\t\tcontactUsForm.contactDetailsForm.style.display = 'none';\r\n\t\t\tcontactUsForm.contactSucessCard.style.display = 'flex';\r\n\t\t\treturn;\r\n\t\t}\r\n\t},\r\n\r\n\tsubmitForm: function (formValid) {\r\n\t\t//IF FORM IS VALID, SUBMIT THE INPUTS VALUES\r\n\t\tvar dobDay = document.getElementById('dob_day').value;\r\n\t\tvar dobMon = document.getElementById('dob_month').value;\r\n\t\tvar dobYear = document.getElementById('dob_year').value;\r\n\r\n\t\tvar formInformation = {\r\n\t\t\tproduct: document.getElementById('subject_select').value,\r\n\t\t\tMoreInformation: document.getElementById('issues_select').value,\r\n\t\t\tTitle: null,\r\n\t\t\tFirstName: document.getElementById('first_name').value,\r\n\t\t\tSurname: document.getElementById('last_name').value,\r\n\t\t\tEmailAddress: document.getElementById('email_address').value,\r\n\t\t\tPostcode: document.getElementById('postcode').value,\r\n\t\t\tDateOfBirth: dobDay + '/' + dobMon + '/' + dobYear,\r\n\t\t\tContactPhoneQuestion: document.querySelector(\"input[name='phone_consent']:checked\").value,\r\n\t\t\tContactPhoneNumber: document.getElementById('phone_number').value,\r\n\t\t\tHasPurchased: document.querySelector(\"input[name='insurance_bought']:checked\")\r\n\t\t\t\t? document.querySelector(\"input[name='insurance_bought']:checked\").value\r\n\t\t\t\t: '1',\r\n\t\t\tQuerySubject: document.getElementById('message_subject').value,\r\n\t\t\tQueryDescription: document.getElementById('message_content').value,\r\n\t\t\tHttpAttributeReturnUrl: document.getElementById('returnUrl')\r\n\t\t\t\t? document.getElementById('returnUrl').value\r\n\t\t\t\t: '',\r\n\t\t\tHttpAttributePriority: document.getElementById('HttpAttributePriority')\r\n\t\t\t\t? document.getElementById('HttpAttributePriority').value\r\n\t\t\t\t: '',\r\n\t\t\tHttpAttributeOrigin: document.getElementById('HttpAttributeOrigin')\r\n\t\t\t\t? document.getElementById('HttpAttributeOrigin').value\r\n\t\t\t\t: '',\r\n\t\t\tHttpAttributeExternal: document.getElementById('HttpAttributeExternal')\r\n\t\t\t\t? document.getElementById('HttpAttributeExternal').value\r\n\t\t\t\t: '',\r\n\t\t};\r\n\r\n\t\tvar xhr = new XMLHttpRequest();\r\n\t\txhr.open('POST', '/api/contact-us/self-serve-submit');\r\n\r\n\t\txhr.setRequestHeader('Content-type', 'application/json');\r\n\r\n\t\txhr.onload = function () {\r\n\t\t\tif (xhr.readyState === xhr.DONE) {\r\n\t\t\t\tif (xhr.status === 200) {\r\n\t\t\t\t\tvar response = JSON.parse(xhr.response);\r\n\t\t\t\t\tif (response.Success) {\r\n\t\t\t\t\t\tvar returnUrl = document.getElementById('returnUrl').value;\r\n\t\t\t\t\t\twindow.location.href = returnUrl;\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tcontactUsForm.errorSummaryBox.style.display = 'block';\r\n\t\t\t\t\t\tvar rect =\r\n\t\t\t\t\t\t\tcontactUsForm.errorSummaryBox.getBoundingClientRect().top + window.pageYOffset + -140;\r\n\t\t\t\t\t\twindow.scrollTo({ behavior: 'smooth', top: rect });\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\tcontactUsForm.errorSummaryBox.style.display = 'block';\r\n\t\t\t\t\tvar rect = contactUsForm.errorSummaryBox.getBoundingClientRect().top + window.pageYOffset + -140;\r\n\t\t\t\t\twindow.scrollTo({ behavior: 'smooth', top: rect });\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t};\r\n\t\txhr.send(JSON.stringify(formInformation));\r\n\t},\r\n};\r\n\r\ndocument.addEventListener('DOMContentLoaded', function () {\r\n\tif (formValidator.form) {\r\n\t\t//HIDE UI\r\n\t\tcontactUsForm.questionAnswerContainer.style.display = 'none';\r\n\t\tcontactUsForm.contactDetailsForm.style.display = 'none';\r\n\t\tcontactUsForm.contactSucessCard.style.display = 'none';\r\n\t\tcontactUsForm.initialise();\r\n\t}\r\n});\r\n","var faqPage = {\r\n\tselects: document.querySelectorAll('[data-id=\"help-center--select\"]'),\r\n\r\n\tinit: function () {\r\n\t\tArray.prototype.forEach.call(faqPage.selects, function (select) {\r\n\t\t\tfaqPage.handleSelectOnChange(select);\r\n\r\n\t\t\tselect.addEventListener('change', function (e) {\r\n\t\t\t\tfaqPage.handleSelectOnChange(e.target);\r\n\t\t\t});\r\n\t\t});\r\n\t},\r\n\r\n\thandleSelectOnChange: function (select) {\r\n\t\t//SET THE SELECTED GROUP OF ACCORDIONS DEPENDING ON THE SELECT INPUT VALUE\r\n\t\tvar helpcenter = select.closest('[data-id=\"help-center\"]');\r\n\t\tvar accordionGroups = helpcenter.querySelectorAll('.mod-accordion');\r\n\t\tvar selectedAccordionGroup = accordionGroups[select.selectedIndex];\r\n\r\n\t\tArray.prototype.forEach.call(accordionGroups, function (group) {\r\n\t\t\tvar accordionRow = group.closest('.row.row--gutters-m');\r\n\t\t\tif (group !== selectedAccordionGroup) {\r\n\t\t\t\taccordionRow.style.display = 'none';\r\n\t\t\t} else {\r\n\t\t\t\taccordionRow.style.display = 'block';\r\n\t\t\t}\r\n\t\t});\r\n\t},\r\n};\r\n\r\ndocument.addEventListener('DOMContentLoaded', function () {\r\n\tvar faqSelectExists = document.querySelector('[data-id=\"help-center\"]');\r\n\tif (faqSelectExists) {\r\n\t\tfaqPage.init();\r\n\t}\r\n});\r\n","var stickyCta = (function () {\r\n\tvar stickyCtaEl = document.querySelector('.mod-sticky-cta');\r\n\r\n\tfunction handleStickyCtaScroll(addClass) {\r\n\t\tif (addClass) {\r\n\t\t\tstickyCtaEl.classList.add('is-shown');\r\n\t\t} else {\r\n\t\t\tstickyCtaEl.classList.remove('is-shown');\r\n\t\t}\r\n\t}\r\n\r\n\twindow.addEventListener('scroll', function () {\r\n\t\tif (stickyCtaEl === null) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tif (window.scrollY >= 200) {\r\n\t\t\thandleStickyCtaScroll(true);\r\n\t\t} else {\r\n\t\t\thandleStickyCtaScroll(false);\r\n\t\t}\r\n\t});\r\n})();\r\n","const textboxlookup = {\r\n init: function () {\r\n const tbl = document.querySelectorAll('.textboxlookup');\r\n\r\n if (tbl.length === 0) {\r\n // Check for existance of .textboxlookup and return if none on the page\r\n return;\r\n } else {\r\n Array.prototype.forEach.call(tbl, function (tblContainer) {\r\n let input = tblContainer.querySelector('.textboxlookup__input');\r\n let btn = tblContainer.querySelector('.textboxlookup__button');\r\n if (input) {\r\n textboxlookup.handleInput(input, tblContainer);\r\n }\r\n if (btn) {\r\n textboxlookup.handleButton(btn, tblContainer, input);\r\n }\r\n });\r\n }\r\n },\r\n\r\n handleInput: function (input, tblContainer) {\r\n input.addEventListener('keypress', function (event) {\r\n textboxlookup.validate(event, input, tblContainer);\r\n });\r\n },\r\n\r\n handleButton: function (btn, tblContainer, input) {\r\n btn.addEventListener('click', function (event) {\r\n event.preventDefault();\r\n textboxlookup.postToLocation(event, input, tblContainer);\r\n });\r\n },\r\n\r\n\r\n validate: function (event, input, tblContainer) {\r\n let isValid = false;\r\n let keyed = event.keyCode || event.which || event.key;\r\n\r\n // Regex testing for aplha numeric inputs\r\n let regex = /^[\\w\\s]+$/;\r\n isValid = regex.test(String.fromCharCode(keyed));\r\n\r\n if (!isValid) {\r\n event.preventDefault();\r\n return false;\r\n }\r\n\r\n if (input.classList.contains('insurance-group-registration-input')) return;\r\n\r\n if (event.keyCode === 13 || event.key === 'Enter') {\r\n event.preventDefault();\r\n if (isValid) {\r\n textboxlookup.postToLocation(event, input, tblContainer);\r\n }\r\n }\r\n return isValid;\r\n },\r\n\r\n postToLocation: function (event, input, tblContainer) {\r\n event.preventDefault();\r\n let url = '', \r\n param ='';\r\n\r\n //Using Window.location to redirect to url as the form post element is overriding the URL params\r\n if (input.value === '') {\r\n url = tblContainer.querySelector('meta[name=\"textboxlookup__urlWithoutValue\"]').getAttribute('content');\r\n window.location = url;\r\n } else {\r\n let textInput = input.value.replace(/\\s/g, '');\r\n let val = encodeURIComponent(textInput);\r\n url = tblContainer.querySelector('meta[name=\"textboxlookup__urlWithValue\"]').getAttribute('content');\r\n param = tblContainer.querySelector('meta[name=\"textboxlookup__urlParamValue\"]').getAttribute('content');\r\n\r\n let queryStringSeparator = url.indexOf('?') > -1 ? '&' : '?';\r\n window.location = `${url}${queryStringSeparator}${param}=${val}`;\r\n }\r\n }\r\n};\r\n\r\ndocument.addEventListener('DOMContentLoaded', function () {\r\n textboxlookup.init();\r\n});","var footerNav = (function () {\r\n\tvar content;\r\n\tfunction init() {\r\n\t\tif (document.querySelectorAll('.accordion-nav-container')) {\r\n\t\t\tcontent = document.querySelectorAll('.accordion-nav-container');\r\n\t\t\tcontent.forEach(function (section) {\r\n\t\t\t\tvar title = section.querySelector('.accordion-nav__titles--primary');\r\n\t\t\t\ttitle.addEventListener('click', function (event) {\r\n\t\t\t\t\tif (!section.classList.contains('accordion-open')) {\r\n\t\t\t\t\t\tevent.preventDefault();\r\n\t\t\t\t\t\tresetAccordion();\r\n\t\t\t\t\t\tactivateAccordion(section);\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tresetAccordion();\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tfunction activateAccordion(section) {\r\n\t\tsection.classList.toggle('accordion-open');\r\n\t}\r\n\tfunction resetAccordion() {\r\n\t\tcontent.forEach(function (section) {\r\n\t\t\tsection.classList.remove('accordion-open');\r\n\t\t});\r\n\t}\r\n\treturn {\r\n\t\tinit: init,\r\n\t};\r\n})();\r\ndocument.addEventListener('DOMContentLoaded', function () {\r\n\tfooterNav.init();\r\n});\r\n","const cnfsdTabbableContent = {\r\n\tinit: () => {\r\n\t\tcnfsdTabbableContent.setupTabs();\r\n\t},\r\n\r\n\tsetupTabs: () => {\r\n\t \r\n\t\t// Get all tabbed sections on the page\r\n\t\tconst tabSections = document.querySelectorAll(\".mod-tabbable-content\");\r\n\t\t\r\n\t\tlet tabButtons,\r\n\t\t\ttabContents,\r\n\t\t\tnav,\r\n\t\t\tnavContainer,\r\n\t\t\tleftArrow,\r\n\t\t\trightArrow;\r\n\t\t\r\n\t\t// Iterate through each tabbed section\r\n\t\ttabSections.forEach((section) => {\r\n\t\t\t\r\n\t\t\t// Get tab buttons and tab contents within the current section\r\n\t\t\tnav = section.querySelector('.mod-tabbable-content__nav');\r\n\t\t\tnavContainer = nav.querySelector('.mod-tabbable-content__nav-list');\r\n\t\t\ttabButtons = section.querySelectorAll(\".mod-tabbable-content__nav-button\");\r\n\t\t\ttabContents = section.querySelectorAll(\"[data-tabbableContent]\"),\r\n\t\t\tleftArrow = nav.querySelector('.mobile-nav__arrow--left'),\r\n\t\t\trightArrow = nav.querySelector('.mobile-nav__arrow--right');\r\n\t\t \r\n\t\t\t// Set the first tab as active on page load\r\n\t\t\ttabButtons[0].classList.add('active');\r\n \r\n\t\t\t// Show the first tab on page load\r\n\t\t\ttabContents.forEach((content, index) => {\r\n\t\t\t\tindex === 0 ? content.classList.add(\"initialised\") : content.classList.add(\"display-none\", \"initialised\");\r\n\t\t\t});\r\n\r\n\t\t\t// Handle tab clicks and show hide content \r\n\t\t\tcnfsdTabbableContent.handleTabClicks(tabButtons, tabContents);\r\n\t\t\tcnfsdTabbableContent.watchNavScroll(tabButtons, leftArrow, rightArrow);\r\n\t\t\tcnfsdTabbableContent.handleNavScrollButtons(navContainer, leftArrow, rightArrow);\r\n\t\t\t\r\n\t\t});\r\n\t},\r\n\r\n\tremoveClasses: (elementGroup, classname) => {\r\n\t\telementGroup.forEach(elem => elem.classList.remove(classname));\r\n\t}, \r\n\r\n\thandleTabClicks: (tabButtons, tabContents) => {\r\n\t\t// Add click event listener to each tab button within the current section\r\n\t\ttabButtons.forEach((button, index) => {\r\n\t\t\tbutton.addEventListener(\"click\", (event) => {\r\n\t\t\t\tevent.preventDefault();\r\n\t\t\t\tcnfsdTabbableContent.removeClasses(tabButtons, 'active');\r\n\t\t\t\tbutton.classList.add('active');\r\n\t\t\t\t// Hide all tab contents within the current section\r\n\t\t\t\ttabContents.forEach((content) => {\r\n\t\t\t\t\tcontent.classList.add(\"display-none\");\r\n\t\t\t\t});\r\n\t\t\t\t// Show the clicked tab content within the current section\r\n\t\t\t\ttabContents[index].classList.remove(\"display-none\");\r\n\t\t\t});\r\n\t\t});\r\n\t},\r\n\r\n\twatchNavScroll: (tabButtons, leftArrow, rightArrow) => {\r\n\r\n\t\t// Options for the Intersection Observer\r\n\t\tconst options = {\r\n\t\t\troot: null, // Use the viewport as the root\r\n\t\t\trootMargin: \"0px\",\r\n\t\t\tthreshold: 1.0, // 100% of the target element must be visible\r\n\t\t};\r\n\r\n\t\tconst handleIntersection = (entries, observer) => {\r\n\t\t\tentries.forEach((entry) => {\r\n\t\t\t \tif (entry.target === tabButtons[0]) {\r\n\t\t\t\t\t// First button\r\n\t\t\t\t\tif (entry.isIntersecting) {\r\n\t\t\t\t\t\tleftArrow.classList.add('display-none');\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tleftArrow.classList.remove('display-none');\r\n\t\t\t\t\t}\r\n\t\t\t\t} \r\n\t\t\t\t\r\n\t\t\t\tif (entry.target === tabButtons[tabButtons.length - 1]) {\r\n\t\t\t\t\t// Last button\r\n\t\t\t\t\tif (entry.isIntersecting) {\r\n\t\t\t\t\t\trightArrow.classList.add('display-none');\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\trightArrow.classList.remove('display-none');\r\n\t\t\t\t\t}\r\n\t\t\t \t}\r\n\t\t\t});\r\n\t\t};\r\n\r\n\t\t// Create an Intersection Observer instance\r\n\t\tconst observer = new IntersectionObserver(handleIntersection, options);\r\n\t\t\r\n\t\t// Observe each button\r\n\t\ttabButtons.forEach((button) => {\r\n\t\t\tobserver.observe(button);\r\n\t\t});\r\n\t},\r\n\r\n\thandleNavScrollButtons: (navContainer, leftArrow, rightArrow) => {\r\n\r\n\t\tconst scrollHandler = (event) => {\r\n\t\t\tevent.preventDefault();\r\n\t\t\tcnfsdTabbableContent.scrollNav(navContainer, event);\r\n\t\t};\r\n\r\n\t\tleftArrow.addEventListener('click', scrollHandler);\r\n\t\trightArrow.addEventListener('click', scrollHandler);\r\n\t}, \r\n\r\n\r\n\tscrollNav: (navContainer, event) => {\r\n\t\t\r\n\t\t if (event.target.classList.contains('mobile-nav__arrow--left')) {\r\n\t\t\tnavContainer.scrollBy({\r\n\t\t\t\tleft: (navContainer.scrollWidth * -1),\r\n\t\t\t\t behavior: 'smooth'\r\n\t\t\t})\r\n\t\t } else {\r\n\t\t\tnavContainer.scrollBy({\r\n\t\t\t\tleft: navContainer.scrollWidth,\r\n\t\t\t\t behavior: 'smooth'\r\n\t\t\t})\r\n\t\t }\r\n\t}\r\n};\r\n\r\ndocument.addEventListener('DOMContentLoaded', () => {\r\n\tconst tabs = document.querySelectorAll(\".mod-tabbable-content\");\r\n\tif (tabs && tabs.length > 0) {\r\n\t cnfsdTabbableContent.init();\r\n\t}\r\n});","const showMoreCards = {\r\n init: (cards, button, colType) => {\r\n\r\n if (!button || !colType) return;\r\n\r\n if (cards.length > colType) {\r\n button.addEventListener('click', (e) => showMoreCards.displayAdditionalCards(e, button, cards));\r\n } else {\r\n showMoreCards.hideShowMoreButton(button);\r\n }\r\n },\r\n\r\n displayAdditionalCards: (e, button, cards) => {\r\n e.preventDefault();\r\n cards.forEach(card => {\r\n if (card.classList.contains('display-none')) card.classList.remove('display-none');\r\n });\r\n showMoreCards.hideShowMoreButton(button);\r\n },\r\n\r\n hideShowMoreButton: (button) => {\r\n button.classList.add('display-none');\r\n }\r\n}\r\n\r\n\r\ndocument.addEventListener('DOMContentLoaded', function () {\r\n const showMoreCardSection = document.querySelectorAll('.mod-show-more-cards');\r\n\r\n showMoreCardSection.forEach((section) => {\r\n const cards = section.querySelectorAll('.mod-flex-cards__card');\r\n const showMorebutton = section.querySelector('.plus-link');\r\n\r\n const stepClassNameAttr = section.getAttribute('data-step-class-name');\r\n const colType = stepClassNameAttr === 'mod-flex-cards--3-col' ? 3 : 4;\r\n \r\n showMoreCards.init(cards, showMorebutton, colType);\r\n });\r\n});"]}