{"version":3,"sources":["eventDecorator.extensions.js","services.js","redirectHelper.js","CookieModalFocus.js","CookieManager.js","CookiePolicyWidget.js","nav-detection.js","navigation.js","navigation-mobile.js","btt.js","cards.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","cms.js","cssConstants.js"],"names":["CSSCONSTANTS","CONFUSEDCMS","eventDecorator","extensions","$","oldShow","fn","show","ret","apply","this","arguments","trigger","jQuery","oldHide","hide","services","ns","ServiceProxy","endpoint","me","invoke","options","method","Error","success","url","console","log","data","JSON","stringify","xhr","ajax","type","contentType","converters","result","msg","window","parse","parseJSON","hasOwnProperty","d","error","jqXhr","textStatus","errorThrown","MiService","proxy","pageEvent","event","settings","extend","noop","CONFUSEDCORE","HELPERS","RedirectHelper","redirect","location","href","w","Confused","CookieModalFocus","init","cookieModalLink","cookieModalBtn1","cookieModalBtn2","cookieWallDetails","cookieWall","querySelector","setFocus","element","focus","classList","contains","addEventListener","activeElem","target","key","shiftKey","preventDefault","hasAttribute","onTabPress","document","CookieManager","prototype","getItem","sKey","decodeURIComponent","cookie","replace","RegExp","encodeURIComponent","setItem","sValue","vEnd","sPath","sDomain","bSecure","test","sExpires","constructor","Number","Infinity","String","Date","toUTCString","removeItem","hasItem","keys","aKeys","split","nIdx","length","CookiePolicyWidget","cookieManager","gtmContainerID","dataLayer","GTMContainer","cookieName","ConsentCookieName","parent","hostname","miListener","MI","MiListener","cookiePopupShown","parts","shift","join","hidePopup","cookieValue","eventName","remove","updateCookieChoiceRadios","setTimeout","insertGTMScript","postEvent","checked","add","updateCookieValue","s","createElement","async","src","x","getElementsByTagName","parentNode","insertBefore","run","push","getTime","buttons","querySelectorAll","inputs","Array","forEach","call","button","btn","parents","questionBlock","addClass","selectedRadio","val","hasClass","validateCookieSelection","input","e","radio","toggleClass","wasCookiePopupShown","navDetection","header","nav","_navDesktop","mainNavEl","currentMainHoveredBtn","timer","navDesktop_isMobile","matchMedia","matches","mainNavBtns","mainNavCloseBtns","allButtons","insuranceTabHovered","navOpen","dimmerElement","setAttribute","body","appendChild","closeNav","code","activeElement","closest","id","getElementById","i","onEnterPress","onMainNavHover","clearTimeout","removeOrAddClass","className","el","parentElement","dataset","product","navClassName","insuranceClassname","subProduct","addNavClasses","handleButtonActiveStates","isMainInsuranceBtn","insuranceMidLevelMenu","isOpenMenus","menuToClose","menuToOpen","nextElementSibling","handleInsuranceTabHovered","secondaryMenuToOpen","alreadyOpenSecondaryMenu","toggleSecondaryMenu","allOpenMenus","allActiveButtons","navMobile","navMobile_mainNav","navMobile_currentMainClickedBtn","htmlEl","documentElement","navMobile_navIsOpen","navMobile_isMobile","navMobile_mainNavBtns","navMobile_secondLevelBtns","navMobile_backBtns","navMobile_closeBtns","navMobile_mainNavClassName","navMobile_subClassName","navMobile_backToTopLevelBtns","navMobile_insuranceMenu","navMobile_insuranceSecondMenu","navMobile_utilsMenu","navMobile_utilsSecondMenu","navMobile_financeMenu","navMobile_financeSecondMenu","navMobile_carCareMenu","navMobile_carCareSecondMenu","noHeightElArr","prevScrollpos","pageYOffset","tabbableEls","buttonText","productEl","subProductEl","textContent","trim","toLowerCase","buttontext","setAllTabIndexes","elemClassList","activeEl","currentScrollPos","tabbable","focusableEl","carCareBtn","closeMobileNav","resetNoHeightClasses","onMainNavClick_mobile","setActiveTabIndexes","onSecondaryLevelClick","backOneMenuLayer","handleTabbingAfterBackPressed","activeMenu","tabIndex","observer","IntersectionObserver","entries","entry","elId","isIntersecting","navUl","addOrRemoveFader","threshold","btnEl","observe","isFromTopMenu","closeButton","activeTabbableEls","elToFocus","innerText","navMobile_openSecondaryMenu","noHeightEl","includes","removeNoHeightClasses","activeDiv","midMenu","bottomMenus","toolsMenus","scrollTop","scrollTopAllMenus","pop","menu","backToTop","bttLink","scroll","top","left","behavior","owlCarousel","loop","responsiveClass","dots","responsive","items","autoWidth","singleItem","click","jumpUrl","attr","width","animate","offset","toggleLink","activeClass","toggleControl","toggledDiv","aTag","slideToggle","question","openClass","answer","on","removeClass","find","slideDown","accShowMore","each","accWrapper","accItems","btnShowMore","loadedItems","loadedItemsValue","parseInt","linkURL","linkCopy","destinationLink","html","tableScroll","mobileTableScroll","scrollTable","firstElementChild","style","minWidth","multiCta","multiCtaLists","multiCtaList","errorMsg","urlVal","getAttribute","display","pointerEvents","updateButtonUrl","disableButton","interactiveRadioButtons","interactiveSections","interactiveArea","answers","radioInputs","showResults","showError","removeError","modInteractiveRadioContainer","fieldset","validationError","topRadio","radioContainer","fieldGroup","errorContainer","errorMessage","innerHTML","formInputValidationMessages","otherInputClicked","name","message","inputInvalid","value","inputSkipped","re","substring","priority","isNaN","month","year","lastDayOfMonth","getDate","inputInvalidDay","inputInvalidMonth","day","currentDay","currentYear","getFullYear","enteredDay","inputInvalidYear_past","inputInvalidYear_format","inputInvalidYear_age","inputWithoutSpaces","noInput","yesInput","keyInputs","keyCode","which","fromCharCode","formValidator","form","totalErrors","validateInput","handleKeyInputs","formInputs","initialise","validateOnFieldEntry","field","textInputs","clickableInputs","removeErrorOnFormInput","validateOnFormSubmit","validateFieldSet","rect","getBoundingClientRect","scrollTo","additionalField","inputErrorArray","returnedError","undefined","removeAttribute","prioritiseErrorMessage","inputArr","isArray","item","topPriority","showValidationErrors","fieldInput","currentFieldErrorContainer","currentFieldError","errorMessageNode","setErrorBorderColour","errorMessageContainer","label","legend","errorId","inputNode","splitInput","removeChild","removeInputFromFormArray","addInputToFormArray","contactUsForm","subjectSelect","issuesSelect","errorSummaryBox","loginLink","chosenSubjectOption","chosenIssuesOption","questionAnswerContainer","contactDetailsForm","contactSucessCard","showContactDetails","hideContactDetails","validateForm","jsonData","valid","updateDataLayer","submitForm","populateSubjectSelectOptions","onchange","populateIssuesSelectOptions","onclick","checkSelectChecked","populateQuestionAnswerBox","toggleQuestionAnswerContainer","toggleContactDetails","checkIfPhoneDesired","stopPropagation","createLoginLink","hasQueryString","indexOf","selectedIndex","removeIssuesSelectOptions","parseQueryString","substringIndex","selectQueryStrings","parsedValue","setSelectAsQuerystringValue","callback","option","formSuccess","erroredInputs","eventErrors","errorArray","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","MoreInformation","Title","FirstName","Surname","EmailAddress","Postcode","DateOfBirth","ContactPhoneQuestion","ContactPhoneNumber","HasPurchased","QuerySubject","QueryDescription","HttpAttributeReturnUrl","HttpAttributePriority","HttpAttributeOrigin","HttpAttributeExternal","XMLHttpRequest","open","setRequestHeader","onload","readyState","DONE","status","response","Success","returnUrl","send","faqPage","selects","select","handleSelectOnChange","accordionGroups","selectedAccordionGroup","group","accordionRow","stickyCta","stickyCtaEl","handleStickyCtaScroll","scrollY","textboxlookup","tbl","tblContainer","handleInput","handleButton","validate","postToLocation","isValid","keyed","regInput","reg","footerNav","content","resetAccordion","section","toggle","activateAccordion","cnfsdTabbableContent","setupTabs","tabButtons","tabContents","navContainer","leftArrow","rightArrow","index","handleTabClicks","watchNavScroll","handleNavScrollButtons","removeClasses","elementGroup","classname","elem","root","rootMargin","scrollHandler","scrollNav","scrollBy","scrollWidth","tabs","pageUrl","cookiePolicyWidget","postPageView","page","referer","referrer","providerListClass","providerListMoreLinkClass","providersClass","hiddenProvidersClass","visibleProvidersClass","providerFilterClass","providerFilterShowAllClass","transactionalLandingPageHeroClass","transactionalLandingPageHeroHeadingClass","transactionalLandingPageHeroImageClass","transactionalLandingPageHeroActionClass","transactionalLandingPageHeroSpeechClass","reminderBoxClass","heroHelpContactClass","helpContactClass","productDriverClass","productDriverImageClass","productDriverNotesClass","productDriverLinkClass","responsiveTabsWrapperClass","responsiveTabsClass","responsiveTabsEnabledClass","responsiveTabsHeadingClass","responsiveTabsHeadingActiveClass","responsiveTabsPanelClass","responsiveTabsPanelActiveClass","responsiveTabsPanelClosedAccordionOnlyClass","responsiveTabsListClass","responsiveTabsListItemClass","responsiveTabsListItemActiveClass","responsiveTabsStepsClass"],"mappings":"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","file":"cms2.min.js","sourcesContent":["var CONFUSEDCMS = CONFUSEDCMS || {},\r\n\tCSSCONSTANTS = CSSCONSTANTS || {};\r\nCONFUSEDCMS.eventDecorator = CONFUSEDCMS.eventDecorator || {};\r\nCONFUSEDCMS.eventDecorator.extensions = CONFUSEDCMS.eventDecorator.extensions || {};\r\n\r\n// Extend jQuery to add custom events\r\n(function ($) {\r\n\t'use strict';\r\n\tvar oldShow = $.fn.show;\r\n\r\n\t$.fn.show = function () {\r\n\t\tvar ret = oldShow.apply(this, arguments);\r\n\r\n\t\tthis.trigger('show');\r\n\r\n\t\treturn ret;\r\n\t};\r\n})(jQuery);\r\n\r\n(function ($) {\r\n\t'use strict';\r\n\tvar oldHide = $.fn.hide;\r\n\r\n\t$.fn.hide = function () {\r\n\t\tvar ret = oldHide.apply(this, arguments);\r\n\r\n\t\tthis.trigger('hide');\r\n\r\n\t\treturn ret;\r\n\t};\r\n})(jQuery);\r\n","var CONFUSEDCMS = CONFUSEDCMS || {},\r\n\tCSSCONSTANTS = CSSCONSTANTS || {};\r\n\r\nCONFUSEDCMS.services = CONFUSEDCMS.services || {};\r\n\r\n(function (ns, $) {\r\n\t'use strict';\r\n\r\n\tns.ServiceProxy = function (endpoint) {\r\n\t\tif (!(this instanceof ns.ServiceProxy)) {\r\n\t\t\treturn new ns.ServiceProxy(endpoint);\r\n\t\t}\r\n\r\n\t\tvar me = this;\r\n\r\n\t\tme.endpoint = endpoint;\r\n\r\n\t\t/**\r\n\t\t * invoke the service proxy using the given options\r\n\t\t *\r\n\t\t * @param {object} options the options\r\n\t\t * @param {string} options.method the method to invoke\r\n\t\t * @param {object | string} options.data data to act as parameter for the remote method\r\n\t\t * @param {function} options.success callback for successful invocation\r\n\t\t * @param {function} [options.error] callback for error on invocation\r\n\t\t * @function\r\n\t\t */\r\n\t\tme.invoke = function (options) {\r\n\t\t\tif (!options.method) {\r\n\t\t\t\tthrow new Error('method not specified for service: ' + me.endpoint);\r\n\t\t\t}\r\n\t\t\tif (!options.success) {\r\n\t\t\t\tthrow new Error('success handler not supplied for service: ' + me.endpoint);\r\n\t\t\t}\r\n\r\n\t\t\tvar url = '/' + me.endpoint + '/' + options.method; // + '?t=' + Date.now();\r\n\t\t\tconsole.log(options.data);\r\n\t\t\tvar data = typeof options.data === 'object' ? JSON.stringify(options.data) : options.data;\r\n\r\n\t\t\tme.xhr = $.ajax({\r\n\t\t\t\ttype: 'POST',\r\n\t\t\t\turl: url,\r\n\t\t\t\tdata: data,\r\n\t\t\t\tcontentType: 'json',\r\n\t\t\t\t//handles stupid MS JSON format!!\r\n\t\t\t\tconverters: {\r\n\t\t\t\t\t'text json': function (result) {\r\n\t\t\t\t\t\tvar msg =\r\n\t\t\t\t\t\t\twindow.JSON && window.JSON.parse ? JSON.parse(result) : $.parseJSON('(' + result + ')');\r\n\r\n\t\t\t\t\t\t// eslint-disable-next-line no-prototype-builtins\r\n\t\t\t\t\t\treturn msg.hasOwnProperty('d') ? msg.d : msg;\r\n\t\t\t\t\t},\r\n\t\t\t\t},\r\n\t\t\t\terror: function (jqXhr, textStatus, errorThrown) {\r\n\t\t\t\t\tif (options.error) {\r\n\t\t\t\t\t\toptions.error(jqXhr, textStatus, errorThrown);\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\tsuccess: function (result, textStatus, jqXhr) {\r\n\t\t\t\t\toptions.success(result, textStatus, jqXhr);\r\n\t\t\t\t},\r\n\t\t\t});\r\n\t\t};\r\n\t};\r\n\r\n\t/**\r\n\t * Helper for recording client-side MI events\r\n\t *\r\n\t * @constructor\r\n\t */\r\n\tns.MiService = function () {\r\n\t\tif (!(this instanceof ns.MiService)) {\r\n\t\t\treturn new ns.MiService();\r\n\t\t}\r\n\r\n\t\tvar proxy = new ns.ServiceProxy('miv2');\r\n\r\n\t\t/**\r\n\t\t * Records the given event information against the given event\r\n\t\t *\r\n\t\t * @param {object} event the event object\r\n\t\t * @param {string} event.EventType eventTye\r\n\t\t * @param {string} event.EventInfo eventInfo\r\n\t\t * @param {object} event.Context any additional data\r\n\t\t * @param {object} options any additional options\r\n\t\t * @param {function} options.success success callback\r\n\t\t * @function\r\n\t\t */\r\n\t\tthis.pageEvent = function (event, options) {\r\n\t\t\tvar settings = $.extend({}, options, {\r\n\t\t\t\tmethod: 'Event',\r\n\t\t\t\tdata: event,\r\n\t\t\t\tsuccess: $.noop, //don't care about success with MI\r\n\t\t\t});\r\n\t\t\tproxy.invoke(settings);\r\n\t\t};\r\n\t};\r\n})(CONFUSEDCMS.services, jQuery);\r\n","var CONFUSEDCORE = CONFUSEDCORE || {};\r\nCONFUSEDCORE.HELPERS = CONFUSEDCORE.HELPERS || {};\r\n\r\n/*\r\n@desc: Redirect Helper\r\n */ \r\nCONFUSEDCORE.HELPERS.RedirectHelper = (function(){\r\n\r\n\treturn {\r\n\t\tredirect: function(url){\r\n\t\t\twindow.location.href = url;\r\n\t\t}\r\n\t};\r\n\r\n})();","(function(w, d) {\r\n w.Confused = w.Confused || {};\r\n w.Confused.CookieModalFocus = function () {};\r\n \r\n w.Confused.CookieModalFocus.init = function () {\r\n\r\n var cookieWall = d.querySelector(\".cookie-wall\");\r\n var cookieModalLink;\r\n var cookieModalBtn1;\r\n var cookieModalBtn2;\r\n var cookieWallDetails;\r\n\r\n if (cookieWall) {\r\n cookieModalLink = cookieWall.querySelector(\".cookie-policy-link\");\r\n cookieModalBtn1 = cookieWall.querySelector(\"#button-save-all\");\r\n cookieModalBtn2 = cookieWall.querySelector(\".save-cookie-prefs\");\r\n cookieWallDetails = cookieWall.querySelector(\"details\");\r\n }\r\n\r\n function setFocus(element) {\r\n if (element) {\r\n element.focus();\r\n }\r\n }\r\n\r\n function onTabPress(event) {\r\n if (!cookieWall.classList.contains(\"open\")) {\r\n return;\r\n }\r\n \r\n var activeElem = event.target;\r\n \r\n if (event.key === \"Tab\") {\r\n if (!event.shiftKey) {\r\n if (activeElem === cookieModalBtn1 || activeElem === cookieModalBtn2) {\r\n event.preventDefault();\r\n setFocus(cookieModalLink);\r\n }\r\n } else if (activeElem === cookieModalLink) {\r\n event.preventDefault();\r\n setFocus(cookieWallDetails.hasAttribute(\"open\") ? cookieModalBtn2 : cookieModalBtn1);\r\n }\r\n }\r\n }\r\n\r\n if (!cookieModalLink || !cookieWall.classList.contains(\"open\")) {\r\n return;\r\n }\r\n setFocus(cookieModalLink);\r\n\r\n d.addEventListener(\"keydown\", event => onTabPress(event));\r\n }\r\n\r\n})(window, document);","/**\r\n * Adds a Confused.CookieManager class to the Confused namespace.\r\n * Implemented as IIFE so we can pass in references to the global jQuery and document objects.\r\n **/\r\n(function (w, d) {\r\n\t'use strict';\r\n\r\n\tw.Confused = w.Confused || {};\r\n\r\n\t/**\r\n\t * Helper for working with cookies. 95% of this code was written by Mozilla.\r\n\t * https://developer.mozilla.org/en-US/docs/Web/API/d.cookie\r\n\t *\r\n\t * @Constructor\r\n\t */\r\n\tw.Confused.CookieManager = function () {};\r\n\r\n\t/**\r\n\t * Gets a cookie item. e.g.\r\n\t * cookieManager.getItem(name)\r\n\t *\r\n\t * @param {string} sKey. The name of the cookie.\r\n\t */\r\n\tw.Confused.CookieManager.prototype.getItem = function (sKey) {\r\n\t\treturn (\r\n\t\t\tdecodeURIComponent(\r\n\t\t\t\td.cookie.replace(\r\n\t\t\t\t\tnew RegExp(\r\n\t\t\t\t\t\t'(?:(?:^|.*;)\\\\s*' +\r\n\t\t\t\t\t\t\t// eslint-disable-next-line \r\n\t\t\t\t\t\t\tencodeURIComponent(sKey).replace(/[\\-\\.\\+\\*]/g, '\\\\$&') +\r\n\t\t\t\t\t\t\t'\\\\s*\\\\=\\\\s*([^;]*).*$)|^.*$'\r\n\t\t\t\t\t),\r\n\t\t\t\t\t'$1'\r\n\t\t\t\t)\r\n\t\t\t) || null\r\n\t\t);\r\n\t};\r\n\r\n\t/**\r\n\t * Sets a cookie item. e.g.\r\n\t * cookieManager.setItem(\"test0\", \"Hello world!\");\r\n\t * cookieManager.setItem(\"test1\", \"Unicode test: \\u00E0\\u00E8\\u00EC\\u00F2\\u00F9\", Infinity);\r\n\t * cookieManager.setItem(\"test2\", \"Hello world!\", new Date(2020, 5, 12));\r\n\t * cookieManager.setItem(\"test3\", \"Hello world!\", new Date(2027, 2, 3), \"/blog\");\r\n\t * cookieManager.setItem(\"test4\", \"Hello world!\", \"Sun, 06 Nov 2022 21:43:15 GMT\");\r\n\t * cookieManager.setItem(\"test5\", \"Hello world!\", \"Tue, 06 Dec 2022 13:11:07 GMT\", \"/home\");\r\n\t * cookieManager.setItem(\"test6\", \"Hello world!\", 150);\r\n\t * cookieManager.setItem(\"test7\", \"Hello world!\", 245, \"/content\");\r\n\t * cookieManager.setItem(\"test8\", \"Hello world!\", null, null, \"example.com\");\r\n\t * cookieManager.setItem(\"test9\", \"Hello world!\", null, null, null, true);\r\n\t * cookieManager.setItem(\"test1;=\", \"Safe character test;=\", Infinity);\r\n\t *\r\n\t * @param {string} sKey. The name of the cookie.\r\n\t * @param {string} sValue. The value of the cookie.\r\n\t * @param {variant} vEnd. The expiry date of the cookie.\r\n\t * @param {string} sPath. The path of the cookie.\r\n\t * @param {string} sDomain. The domain of the cookie.\r\n\t * @param {bool} bSecure. Specifies if the cookie is secure or not.\r\n\t */\r\n\tw.Confused.CookieManager.prototype.setItem = function (sKey, sValue, vEnd, sPath, sDomain, bSecure) {\r\n // eslint-disable-next-line\r\n\t\tif (!sKey || /^(?:expires|max\\-age|path|domain|secure)$/i.test(sKey)) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tvar sExpires = '';\r\n\r\n\t\tif (vEnd) {\r\n\t\t\tswitch (vEnd.constructor) {\r\n\t\t\t\tcase Number:\r\n\t\t\t\t\tsExpires = vEnd === Infinity ? '; expires=Fri, 31 Dec 9999 23:59:59 GMT' : '; max-age=' + vEnd;\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase String:\r\n\t\t\t\t\tsExpires = '; expires=' + vEnd;\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase Date:\r\n\t\t\t\t\tsExpires = '; expires=' + vEnd.toUTCString();\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\td.cookie =\r\n\t\t\tencodeURIComponent(sKey) +\r\n\t\t\t'=' +\r\n\t\t\tencodeURIComponent(sValue) +\r\n\t\t\tsExpires +\r\n\t\t\t(sDomain ? '; domain=' + sDomain : '') +\r\n\t\t\t(sPath ? '; path=' + sPath : '') +\r\n\t\t\t(bSecure ? '; secure' : '');\r\n\r\n\t\treturn true;\r\n\t};\r\n\r\n\t/**\r\n\t * Removes a cookie item. e.g.\r\n\t * cookieManager.removeItem(name, path, domain)\r\n\t *\r\n\t * @param {string} sKey. The name of the cookie.\r\n\t * @param {string} sPath. The path of the cookie: eg, \"/\" : defaults to path of current d.\r\n\t * @param {string} sDomain. The domain of the cookie - eg, confused.com, .confused.com (all subdomains), www.confused.com\r\n\t */\r\n\tw.Confused.CookieManager.prototype.removeItem = function (sKey, sPath, sDomain) {\r\n\t\tif (!sKey || !this.hasItem(sKey)) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\td.cookie =\r\n\t\t\tencodeURIComponent(sKey) +\r\n\t\t\t'=; expires=Thu, 01 Jan 1970 00:00:00 GMT' +\r\n\t\t\t(sDomain ? '; domain=' + sDomain : '') +\r\n\t\t\t(sPath ? '; path=' + sPath : '');\r\n\r\n\t\treturn true;\r\n\t};\r\n\r\n\t/**\r\n\t * Tests if a cookie item exists. e.g.\r\n\t * cookieManager.hasItem(name)\r\n\t *\r\n\t * @param {string} sKey. The name of the cookie.\r\n\t */\r\n\tw.Confused.CookieManager.prototype.hasItem = function (sKey) {\r\n\t\t// eslint-disable-next-line\r\n\t\treturn new RegExp('(?:^|;\\\\s*)' + encodeURIComponent(sKey).replace(/[\\-\\.\\+\\*]/g, '\\\\$&') + '\\\\s*\\\\=').test(\r\n\t\t\td.cookie\r\n\t\t);\r\n\t};\r\n\r\n\t/**\r\n\t * Returns the keys for all cookie items. e.g.\r\n\t * cookieManager.keys(name)\r\n\t */\r\n\tw.Confused.CookieManager.prototype.keys = function () {\r\n\t\tvar aKeys = d.cookie\r\n\t\t\t// eslint-disable-next-line\r\n\t\t\t.replace(/((?:^|\\s*;)[^\\=]+)(?=;|$)|^\\s*|\\s*(?:\\=[^;]*)?(?:\\1|$)/g, '')\r\n\t\t\t// eslint-disable-next-line\r\n\t\t\t.split(/\\s*(?:\\=[^;]*)?;\\s*/);\r\n\r\n\t\tfor (var nIdx = 0; nIdx < aKeys.length; nIdx++) {\r\n\t\t\taKeys[nIdx] = decodeURIComponent(aKeys[nIdx]);\r\n\t\t}\r\n\r\n\t\treturn aKeys;\r\n\t};\r\n})(window, document);\r\n","/*\r\n * Adds a CookiePolicyWidget class to the Confused namespace.\r\n * Implemented as IIFE so we can pass in references to the global jQuery, window and document objects.\r\n * Note: Depends on _partials/Common/v1.0/CookieManager.js being setup at Confused.CookieManager and _core/mi/v1.1/miListener.js (or above) being supported server-side.\r\n * Adds/ removes '.open' to '.cookie-wall depending on the presence of a CookieConsent cookie, logging the interaction as an MI event and in a cookie\r\n * Triggers the function triggerGTM() which wraps around the GTM script on page to stop it firing and dropping cookies if CookieConsent cookie is not present\r\n * Cookie consent cookie name is retrieved from dataLAyer on page and defaults to CookieConsent is dataLayer doesn't have the entry\r\n */\r\n\r\n(function ($, w) {\r\n\t'use strict';\r\n\r\n\tw.Confused = w.Confused || {};\r\n\tw.Confused.CookieManager = w.Confused.CookieManager || {};\r\n w.Confused.CookieModalFocus = w.Confused.CookieModalFocus || {};\r\n\r\n\tw.Confused.CookiePolicyWidget = (function (cookieManager) {\r\n\t\t// GET COOKIE & GTM ID NAME FROM DATALAYER\r\n\t\tvar gtmContainerID = window.dataLayer[0].GTMContainer;\r\n\t\tvar cookieName = window.dataLayer[0].ConsentCookieName;\r\n\t\tvar parent = location.hostname;\r\n\t\tvar domainRegex =\r\n\t\t\t// eslint-disable-next-line\r\n\t\t\t/^([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\\-]{0,61}[a-zA-Z0-9])(\\.([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\\-]{0,61}[a-zA-Z0-9]))*$/i;\r\n\t\tvar miListener = CONFUSEDCORE.MI.MiListener;\r\n\t\tvar cookiePopupShown = false;\r\n\r\n\t\tif (domainRegex.test(parent)) {\r\n\t\t\tvar parts = parent.split('.');\r\n\t\t\tparts.shift();\r\n\t\t\tparent = parts.join('.');\r\n\t\t}\r\n\r\n\t\t/* Show widget */\r\n\t\tfunction showPopup() {\r\n\t\t\tif (document.querySelector('.cookie-wall')) {\r\n\t\t\t\tdocument.querySelector('.cookie-wall').classList.add('open');\r\n\t\t\t\tcookiePopupShown = true;\r\n\t\t\t\t//miListener.postEvent('CookiePopupShown');\r\n window.Confused.CookieModalFocus.init();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// VALIDATE ON BUTTON CLICK THAT THE A CHOICE HAS BEEN MADE\r\n\t\tfunction validateCookieSelection(btn, event) {\r\n\t\t\tif ($(btn).parents('.field-group').length > 0) {\r\n\t\t\t\tvar questionBlock = $(btn).parents('.field-group');\r\n\r\n\t\t\t\tif ($('.field-group .radio-input:checked').length === 0) {\r\n\t\t\t\t\tevent.preventDefault();\r\n\t\t\t\t\tquestionBlock.addClass('error');\r\n\t\t\t\t} else {\r\n\t\t\t\t\tvar selectedRadio = $('.field-group .radio-input:checked').val();\r\n\t\t\t\t\t// IF WE ARE VALIDATING THE COOKIE WALL POPUP\r\n\t\t\t\t\tif ($(btn).hasClass('cookie-wall__button')) {\r\n\t\t\t\t\t\tif (selectedRadio === 'yes') {\r\n\t\t\t\t\t\t\thidePopup('true', 'CookiePopupDismissed:ConsentGranted');\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif (selectedRadio === 'no') {\r\n\t\t\t\t\t\t\thidePopup('false', 'CookiePopupDismissed:ConsentDeclined');\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t// IF WE ARE VALIDATING THE COOKIE POLICY PAGE\r\n\t\t\t\t\tif ($(btn).hasClass('cookie-choice__button')) {\r\n\t\t\t\t\t\t// SHOW SUCCESS MESSAGE\r\n\t\t\t\t\t\tdocument.querySelector('.save-changess-success').classList.remove('display-none');\r\n\t\t\t\t\t\t// DISABLE BUTTON AS ACTION COMPLETE\r\n\t\t\t\t\t\t$(btn).addClass('disabled');\r\n\r\n\t\t\t\t\t\tsetTimeout(function(){\r\n\t\t\t\t\t\t\tif (selectedRadio === 'yes') {\r\n\t\t\t\t\t\t\t\tupdateCookieValue('true');\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\tif (selectedRadio === 'no') {\r\n\t\t\t\t\t\t\t\tupdateCookieValue('false');\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\tinsertGTMScript();\r\n\t\t\t\t\t\t}, 0);\r\n\r\n\t\t\t\t\t\t// HIDE SUCCESS MESSAGE AFTER 5 SECONDS\r\n\t\t\t\t\t\tsetTimeout(function () {\r\n\t\t\t\t\t\t\tdocument.querySelector('.save-changess-success').classList.add('display-none');\r\n\t\t\t\t\t\t}, 5000);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\t// IF COOKIE WALL POPUP ACCEPT ALL BUTTON IS PRESSED\r\n\t\t\t} else {\r\n\t\t\t\tif (document.querySelector('.cookie-wall')) {\r\n\t\t\t\t\thidePopup('true', 'CookiePopupDismissed:ConsentGranted');\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// REMOVES ERROR CLASS ON FIELDSET HIDING ERROR MESSAGE\r\n\t\tfunction removeErrorClass() {\r\n\t\t\tdocument.querySelector('.field-group').classList.remove('error');\r\n\t\t}\r\n\r\n\t\t// CLOSES MODAL\r\n\t\tfunction closeCookieModal() {\r\n\t\t\tdocument.querySelector('.cookie-wall').classList.remove('open');\r\n\t\t}\r\n\r\n\t\t/* Hide widget */\r\n\t\tfunction hidePopup(cookieValue, eventName) {\r\n\t\t\tcloseCookieModal();\r\n\t\t\tupdateCookieChoiceRadios();\r\n\r\n\t\t\tsetTimeout(function(){\r\n\t\t\t\tcookieManager.setItem(cookieName, cookieValue, 2147483647, '/', parent);\r\n\t\t\t\t$(document).trigger('CookieConsentSet', [cookieValue]);\r\n\t\t\t\t// INSERT THE GOOGLE TAG MANAGER SCRIPTS TO THE PAGE\r\n\t\t\t\tinsertGTMScript();\r\n\t\t\t\tmiListener.postEvent(eventName);\r\n\t\t\t}, 0);\r\n\t\t\t\r\n\t\t}\r\n\r\n\t\t// SET THE VALUE OF THE EDIT COOKIE PREFERENCES RADIOS ON COOKIE POLICY PAGE\r\n\t\t// BASED ON COOKIE VALUE SELECTED IN POPUP\r\n\t\tfunction updateCookieChoiceRadios() {\r\n\t\t\tif (cookieManager.hasItem(cookieName)) {\r\n\t\t\t\tif (document.querySelector('.cookie-choice__options')) {\r\n\t\t\t\t\tif (cookieManager.getItem(cookieName) === 'true') {\r\n\t\t\t\t\t\tdocument.querySelector('#cookie-choice__input--yes').checked = true;\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tdocument.querySelector('#cookie-choice__input--no').checked = true;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tdocument.querySelector('.cookie-choice__button').classList.add('disabled');\r\n\t\t\t\t} else {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// UPDATE THE VALUE OF THE COOKIE FROM THE CHOICE MADE ON COOKIE POLICY PAGE\r\n\t\tfunction updateCookieValue(cookieValue) {\r\n\t\t\tcookieManager.setItem(cookieName, cookieValue, 2147483647, '/', parent);\r\n\t\t}\r\n\r\n\t\t//\r\n\t\tfunction insertGTMScript() {\r\n\t\t\tvar s = document.createElement('script');\r\n\t\t\ts.type = 'text/javascript';\r\n\t\t\ts.async = 'true';\r\n\t\t\t// CHANGEING THE URL FROM GOOGLE TO OUR SERVERSIDE TAG\r\n\t\t\t/*s.src = 'https://www.googletagmanager.com/gtm.js?id=' + gtmContainerID;*/\r\n\t\t\ts.src = 'https://sst.confused.com/push?node=' + gtmContainerID;\r\n\t\t\tvar x = document.getElementsByTagName('script')[0];\r\n\t\t\tx.parentNode.insertBefore(s, x);\r\n\t\t}\r\n\r\n\t\tfunction run() {\r\n\t\t\t// REGISTER GTM WITH DATALAYER ON LOAD\r\n\t\t\t// IDEA FOR PROCESS WAS FROM HERE:\r\n\t\t\t// https://stackoverflow.com/questions/60173853/how-to-set-the-google-analytics-cookie-only-after-another-consent-cookie-is-set/60223798#60223798\r\n\r\n\t\t\twindow.dataLayer = window.dataLayer || [];\r\n\t\t\twindow.dataLayer.push({ 'gtm.start': new Date().getTime(), event: 'gtm.js' });\r\n\r\n\t\t\tif (cookieManager.hasItem(cookieName)) {\r\n\t\t\t\t// INSERT THE GOOGLE TAG MANAGER SCRIPTS TO THE PAGE\r\n\t\t\t\tinsertGTMScript();\r\n\r\n\t\t\t\t// IF WE ARE ON COOKIE POLICY PAGE AND COOKIE EXISTS WE NEED TO SET THE RADIOS\r\n\t\t\t\t// TO THE VALUE OF THE COOKIE\r\n\t\t\t\tupdateCookieChoiceRadios();\r\n\t\t\t} else {\r\n\t\t\t\tshowPopup();\r\n\t\t\t}\r\n\r\n\t\t\t// SETUP EVENT HANDLERS ON RADIOS & BUTTONS IN COOKIE WALL MODAL\r\n\t\t\tvar buttons = document.querySelectorAll('.save-cookie-prefs');\r\n\t\t\tvar inputs = document.querySelectorAll('.cookie-option-holder .radio-input');\r\n\r\n\t\t\tArray.prototype.forEach.call(buttons, function (button) {\r\n\t\t\t\t//buttons.forEach(function (button) {\r\n\t\t\t\tbutton.addEventListener('click', function (event) {\r\n\t\t\t\t\tvar btn = event.target;\r\n\t\t\t\t\tvalidateCookieSelection(btn, event);\r\n\t\t\t\t});\r\n\t\t\t});\r\n\r\n\t\t\tArray.prototype.forEach.call(inputs, function (input) {\r\n\t\t\t\t//inputs.forEach(function(input) {\r\n\t\t\t\tinput.addEventListener('change', function (e) {\r\n\t\t\t\t\tremoveErrorClass();\r\n\t\t\t\t\tvar radio = e.target;\r\n\t\t\t\t\tif ($(radio).parents('.cookie-choice__input-wrapper') && cookieManager.hasItem(cookieName)) {\r\n\t\t\t\t\t\t$('.cookie-choice__button').toggleClass('disabled');\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t});\r\n\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tfunction wasCookiePopupShown() {\r\n\t\t\treturn cookiePopupShown;\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\trun: run,\r\n\t\t\twasCookiePopupShown: wasCookiePopupShown,\r\n\t\t};\r\n\t})(new w.Confused.CookieManager());\r\n})(window.jQuery, window, document, window.Confused.CookieManager);\r\n","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","window._navDesktop = function () {\r\n\r\n var mainNavEl = document.querySelector('.main-nav');\r\n if (!mainNavEl || mainNavEl === null || mainNavEl === undefined) {\r\n return;\r\n }\r\n\r\n var navDesktop_isMobile = !window.matchMedia('(min-width: 980px)').matches;\r\n var mainNavBtns = document.querySelectorAll('.main-nav .main-nav__list-item--top-level button:not(.main-nav__close-button)');\r\n var mainNavCloseBtns = document.querySelectorAll('.main-nav .main-nav__close-button');\r\n var allButtons = document.querySelectorAll('.main-nav button');\r\n var currentMainHoveredBtn;\r\n var insuranceTabHovered = false;\r\n var timer;\r\n var navOpen = false;\r\n\r\n document.addEventListener('DOMContentLoaded', function () {\r\n createDimmer();\r\n });\r\n\r\n mainNavEl.addEventListener('mouseleave', function () {\r\n if (!navOpen) { return; }\r\n setTimeout(function () {\r\n closeNav();\r\n }, 250);\r\n });\r\n\r\n // Set isMobile on browser resize\r\n window.addEventListener('resize', function () {\r\n if (window.matchMedia('(min-width: 980px)').matches) {\r\n navDesktop_isMobile = false;\r\n } else {\r\n navDesktop_isMobile = true;\r\n closeNav();\r\n }\r\n });\r\n\r\n document.body.addEventListener('keydown', function (event) {\r\n if (event.code === 'Tab' && !event.shiftKey) {\r\n setTimeout(function () {\r\n if (document.activeElement.closest('.main-nav') === null && navOpen) {\r\n closeNav();\r\n }\r\n }, 0);\r\n }\r\n });\r\n\r\n document.querySelector('header').addEventListener('keydown', function (event) {\r\n if (navDesktop_isMobile) { return; }\r\n if (event.code === 'Tab' && !event.shiftKey) {\r\n if (document.activeElement.id === document.querySelector('[data-product=\"car-care-_-selling\"] > button') && !mainNavEl.classList.contains('nav-product--carcare')) { // jshint ignore:line\r\n closeNav();\r\n } else if (document.activeElement === document.querySelector('[data-product=\"car-care-_-selling\"] .main-nav__container--bottom-level .main-nav__close-button')) { // jshint ignore:line\r\n closeNav();\r\n }\r\n } else if (event.code === 'Tab' && event.shiftKey) {\r\n if (document.activeElement.classList.contains('logo')) {\r\n closeNav();\r\n }\r\n }\r\n });\r\n\r\n document.getElementById('skip-nav-link').addEventListener('click', function () {\r\n closeNav();\r\n });\r\n\r\n // Handles enter press to activate button clicks\r\n for (let i = 0; i < allButtons.length; i++) {\r\n allButtons[i].addEventListener('keypress', function (event) { // jshint ignore:line\r\n onEnterPress(event);\r\n });\r\n }\r\n\r\n // Handles close nav button\r\n for (let i = 0; i < mainNavCloseBtns.length; i++) {\r\n mainNavCloseBtns[i].addEventListener('click', function () { // jshint ignore:line\r\n closeNav();\r\n });\r\n }\r\n\r\n // Handles nav hover\r\n for (let i = 0; i < mainNavBtns.length; i++) {\r\n mainNavBtns[i].addEventListener('mouseenter', function (event) { // jshint ignore:line\r\n if (navDesktop_isMobile) { return; }\r\n timer = setTimeout(function () {\r\n onMainNavHover(event);\r\n }, 250);\r\n });\r\n }\r\n\r\n // This will clear the hover delay timer when the mouse leaves the inurance sub menu. Stops unwanted animations.\r\n for (let i = 0; i < mainNavBtns.length; i++) {\r\n mainNavBtns[i].addEventListener('mouseleave', function (event) { // jshint ignore:line\r\n if (event.target.classList.contains('delay-hover')) {\r\n clearTimeout(timer);\r\n }\r\n });\r\n }\r\n\r\n // Utility classes\r\n function removeOrAddClass(element, className, add) {\r\n if (navDesktop_isMobile) { return; }\r\n if (add) {\r\n element.forEach(function (el) {\r\n el.classList.add(className);\r\n });\r\n } else {\r\n element.forEach(function (el) {\r\n el.classList.remove(className);\r\n });\r\n }\r\n }\r\n\r\n // Get the button id and pass open the right secondary menu\r\n function onMainNavHover(event) {\r\n if (navDesktop_isMobile) { return; }\r\n currentMainHoveredBtn = event.target;\r\n document.querySelector('.nav-dimmer').classList.add('is-shown');\r\n toggleSecondaryMenu();\r\n }\r\n\r\n // Handles opening all sub menus, unless it is the insurance tab then this function will pass to handleInsuranceTabHovered();\r\n function toggleSecondaryMenu() {\r\n if (navDesktop_isMobile) { return; }\r\n if (navOpen && currentMainHoveredBtn.parentElement.dataset.product === 'insurance' && mainNavEl.classList.contains('nav-insurance')) {\r\n return;\r\n }\r\n navOpen = true;\r\n addNavClasses(currentMainHoveredBtn);\r\n if ((currentMainHoveredBtn.classList.contains('second-level-links--mobile') && currentMainHoveredBtn.classList.contains('main-nav__options--mid-level')) || currentMainHoveredBtn.parentElement.dataset.product === 'insurance') {\r\n // Insurance tab hovered, handle this separately.\r\n insuranceTabHovered = true;\r\n handleButtonActiveStates(currentMainHoveredBtn);\r\n handleInsuranceTabHovered();\r\n return;\r\n } else {\r\n insuranceTabHovered = false;\r\n }\r\n // Is not insurance tab that has been hovered.\r\n handleButtonActiveStates(currentMainHoveredBtn);\r\n var secondaryMenuToOpen = currentMainHoveredBtn.nextElementSibling.nextElementSibling;\r\n if (!secondaryMenuToOpen) { return; }\r\n var alreadyOpenSecondaryMenu = document.querySelectorAll('.main-nav .nav--is-open');\r\n if (alreadyOpenSecondaryMenu.length) {\r\n removeOrAddClass(alreadyOpenSecondaryMenu, 'nav--is-open', false);\r\n }\r\n secondaryMenuToOpen.classList.add('nav--is-open');\r\n }\r\n\r\n function addNavClasses(currentMainHoveredBtn) {\r\n if (navDesktop_isMobile) { return; }\r\n var navClassName = '';\r\n var insuranceClassname = 'nav-insurance';\r\n mainNavEl.className = 'main-nav';\r\n switch (true) {\r\n case (currentMainHoveredBtn.parentElement.dataset.product === 'insurance'):\r\n navClassName = 'nav-product--motor';\r\n break;\r\n case (currentMainHoveredBtn.parentElement.dataset.product === 'utilities'):\r\n navClassName = 'nav-product--utilities';\r\n break;\r\n case (currentMainHoveredBtn.parentElement.dataset.product === 'finance'):\r\n navClassName = 'nav-product--finance';\r\n break;\r\n case (currentMainHoveredBtn.parentElement.dataset.product === 'car-care-_-selling'):\r\n navClassName = 'nav-product--carcare';\r\n break;\r\n case (currentMainHoveredBtn.parentElement.dataset.subProduct === 'motor-primary'):\r\n navClassName = 'nav-product--motor';\r\n mainNavEl.classList.add(insuranceClassname);\r\n break;\r\n case (currentMainHoveredBtn.parentElement.dataset.subProduct === 'home'):\r\n navClassName = 'nav-product--home';\r\n mainNavEl.classList.add(insuranceClassname);\r\n break;\r\n case (currentMainHoveredBtn.parentElement.dataset.subProduct === 'life'):\r\n navClassName = 'nav-product--life';\r\n mainNavEl.classList.add(insuranceClassname);\r\n break;\r\n case (currentMainHoveredBtn.parentElement.dataset.subProduct === 'travel'):\r\n navClassName = 'nav-product--travel';\r\n mainNavEl.classList.add(insuranceClassname);\r\n break;\r\n case (currentMainHoveredBtn.parentElement.dataset.subProduct === 'pet'):\r\n navClassName = 'nav-product--pet';\r\n mainNavEl.classList.add(insuranceClassname);\r\n break;\r\n case (currentMainHoveredBtn.parentElement.dataset.subProduct === 'business-primary'):\r\n navClassName = 'nav-product--business';\r\n mainNavEl.classList.add(insuranceClassname);\r\n break;\r\n }\r\n mainNavEl.classList.add(navClassName);\r\n }\r\n\r\n // Handles adding classes to show that a button is active\r\n function handleButtonActiveStates(button) {\r\n if (navDesktop_isMobile) { return; }\r\n var isMainInsuranceBtn = button.parentElement.dataset.product === 'insurance';\r\n if (isMainInsuranceBtn && mainNavEl.classList.contains('nav-insurance')) {\r\n return;\r\n }\r\n if (document.querySelector('.main-nav .main-nav__container--mid-level--ul .nav--btn-is-active') && isMainInsuranceBtn) {\r\n // This stops active menu button changing when user is in insurance tab and hovers back over the main insurance button\r\n return;\r\n }\r\n var activeButtons = document.querySelectorAll('.main-nav .nav--btn-is-active');\r\n removeOrAddClass(activeButtons, 'nav--btn-is-active', false);\r\n if (insuranceTabHovered && isMainInsuranceBtn) {\r\n // Main insurance button hovered\r\n removeOrAddClass([document.querySelector('[data-sub-product=\"motor-primary\"] > button'), button], 'nav--btn-is-active', true); // jshint ignore:line\r\n return;\r\n } else if (insuranceTabHovered && !isMainInsuranceBtn) {\r\n // Insurance mid-level option hovered\r\n document.querySelector('[data-product=\"insurance\"] button').classList.add('nav--btn-is-active'); // jshint ignore:line\r\n }\r\n button.classList.add('nav--btn-is-active');\r\n }\r\n\r\n // Opens the correct menus when the insurance tab is hovered. Insurance has an extra menu so needs to be treated slightly different.\r\n function handleInsuranceTabHovered() {\r\n if (navDesktop_isMobile) { return; }\r\n var isMainInsuranceBtn = currentMainHoveredBtn.parentElement.dataset.product === 'insurance';\r\n var insuranceMidLevelMenu = document.querySelector('[data-product=\"insurance\"] .main-nav__container--mid-level'); // jshint ignore:line\r\n if (isMainInsuranceBtn) {\r\n var isOpenMenus = document.querySelectorAll('.main-nav .nav--is-open');\r\n if (isOpenMenus.length) {\r\n removeOrAddClass(isOpenMenus, 'nav--is-open', false);\r\n }\r\n var motorBottomMenu = document.querySelector('[data-sub-product=\"motor-primary\"] .main-nav__container--bottom-level'); // jshint ignore:line\r\n removeOrAddClass([insuranceMidLevelMenu, motorBottomMenu], 'nav--is-open', true);\r\n } else {\r\n var menuToClose = insuranceMidLevelMenu.querySelector('.nav--is-open');\r\n var menuToOpen = insuranceMidLevelMenu.querySelector('.nav--btn-is-active').nextElementSibling;\r\n menuToClose.classList.remove('nav--is-open');\r\n menuToOpen.classList.add('nav--is-open');\r\n }\r\n }\r\n\r\n function createDimmer() {\r\n var dimmerElement = document.createElement('div');\r\n dimmerElement.setAttribute('class', 'nav-dimmer is-injected');\r\n document.body.appendChild(dimmerElement);\r\n }\r\n\r\n // Activates hover functions if user is using keyboard and has pressed enter on a menu option.\r\n function onEnterPress(event) {\r\n if (navDesktop_isMobile) { return; }\r\n if (event.key === 'Enter') {\r\n onMainNavHover(event);\r\n }\r\n }\r\n\r\n // Closes nav on close nav button click\r\n function closeNav() {\r\n if (navDesktop_isMobile) { return; }\r\n var allOpenMenus = document.querySelectorAll('.main-nav .nav--is-open');\r\n var allActiveButtons = document.querySelectorAll('.main-nav .nav--btn-is-active');\r\n removeOrAddClass(allOpenMenus, 'nav--is-open', false);\r\n removeOrAddClass(allActiveButtons, 'nav--btn-is-active', false);\r\n document.querySelector('.nav-dimmer').classList.remove('is-shown');\r\n navOpen = false;\r\n }\r\n\r\n return {\r\n closeNav: closeNav\r\n };\r\n}();","// eslint-disable-next-line no-unused-vars\r\nvar navMobile = function () {\r\n\r\n var navMobile_mainNav = document.querySelector('.main-nav');\r\n if (!navMobile_mainNav || navMobile_mainNav === null || navMobile_mainNav === undefined) {\r\n return;\r\n }\r\n\r\n var htmlEl = document.documentElement;\r\n var navMobile_navIsOpen = false;\r\n var navMobile_isMobile = !window.matchMedia('(min-width: 980px)').matches;\r\n var navMobile_mainNavBtns = document.querySelectorAll('.main-nav .main-nav__list-item--top-level > button:not(.main-nav__close-button)');\r\n var navMobile_currentMainClickedBtn;\r\n var navMobile_secondLevelBtns = document.querySelectorAll('.main-nav .second-level-links--mobile');\r\n var navMobile_backBtns = document.querySelectorAll('.main-nav .back');\r\n var navMobile_closeBtns = document.querySelectorAll('.main-nav .main-nav__close-button--mobile');\r\n var navMobile_mainNavClassName = '';\r\n var navMobile_subClassName = '';\r\n var navMobile_backToTopLevelBtns = document.querySelectorAll('.main-nav .back-to-top-level--mobile');\r\n\r\n var navMobile_insuranceMenu = document.querySelector('[data-product=\"insurance\"] .mobile--nav__mid-menu'); // jshint ignore:line\r\n var navMobile_insuranceSecondMenu = document.querySelector('[data-product=\"insurance\"] .main-nav__container--mid-level'); // jshint ignore:line\r\n var navMobile_utilsMenu = document.querySelector('[data-product=\"utilities\"] .mobile--nav__mid-menu'); // jshint ignore:line\r\n var navMobile_utilsSecondMenu = document.querySelector('[data-product=\"utilities\"] > .main-nav__container--bottom-level'); // jshint ignore:line\r\n var navMobile_financeMenu = document.querySelector('[data-product=\"finance\"] .mobile--nav__mid-menu'); // jshint ignore:line\r\n var navMobile_financeSecondMenu = document.querySelector('[data-product=\"finance\"] > .main-nav__container--bottom-level'); // jshint ignore:line\r\n var navMobile_carCareMenu = document.querySelector('[data-product=\"car-care-_-selling\"] .mobile--nav__mid-menu'); // jshint ignore:line\r\n var navMobile_carCareSecondMenu = document.querySelector('[data-product=\"car-care-_-selling\"] > .main-nav__container--bottom-level'); // jshint ignore:line\r\n var noHeightElArr = [];\r\n var prevScrollpos = window.pageYOffset;\r\n\r\n var tabbableEls = document.querySelectorAll('[data-no-tab-mobile]');\r\n var buttonText = '';\r\n\r\n // Set all data-buttontext\r\n document.querySelectorAll('[data-buttontext]').forEach(function (button) {\r\n var buttonText = button.textContent.trim().replace(/\\s+/g, '-').toLowerCase();\r\n var productEl;\r\n var subProductEl;\r\n var subProductText = '';\r\n var productText = '';\r\n if (buttonText === 'tools-&-tips') {\r\n subProductEl = button.closest('[data-sub-product]');\r\n if (subProductEl) {\r\n subProductText = subProductEl.dataset.subProduct;\r\n buttonText = 'tools--' + subProductText;\r\n } else {\r\n productEl = button.closest('[data-product]');\r\n if (productEl) {\r\n productText = productEl.dataset.product;\r\n buttonText = 'tools--' + productText;\r\n }\r\n }\r\n }\r\n button.dataset.buttontext = buttonText;\r\n });\r\n\r\n document.addEventListener('DOMContentLoaded', function () {\r\n setAllTabIndexes();\r\n });\r\n\r\n // Set isMobile on browser resize\r\n window.addEventListener('resize', function () {\r\n if (window.matchMedia('(min-width: 980px)').matches) {\r\n var elemClassList;\r\n // TEST IF IT ALREADY HAS NAV-PRODUCT--BLAH THEN USE THE CLASSLIST TO REPOPULATE AFTER RESIZE OTHERWIZE BLITZ ALL BUT MAIN-NAV CLASS\r\n if (/nav-product--/.test(navMobile_mainNav.classList)) {\r\n elemClassList = navMobile_mainNav.classList;\r\n } else {\r\n elemClassList = 'main-nav';\r\n window._navDesktop.closeNav();\r\n }\r\n\r\n navMobile_isMobile = false;\r\n navMobile_mainNav.className = elemClassList;\r\n htmlEl.classList.remove('nav-is-open');\r\n document.querySelectorAll('.main-nav .active').forEach(function (activeEl) {\r\n activeEl.classList.remove('active');\r\n });\r\n navMobile_navIsOpen = false;\r\n } else {\r\n navMobile_isMobile = true;\r\n }\r\n setAllTabIndexes();\r\n });\r\n\r\n window.addEventListener('scroll', function () {\r\n if (!navMobile_isMobile) { return; }\r\n if (navMobile_navIsOpen) { return; }\r\n var currentScrollPos = window.pageYOffset;\r\n if (prevScrollpos > currentScrollPos || window.pageYOffset < 50) {\r\n navMobile_mainNav.classList.remove('unpinned');\r\n } else {\r\n navMobile_mainNav.classList.add('unpinned');\r\n }\r\n prevScrollpos = currentScrollPos;\r\n });\r\n\r\n document.querySelector('header').addEventListener('keydown', function (event) {\r\n if (!navMobile_isMobile) { return; }\r\n if (event.code === 'Tab' && !event.shiftKey) {\r\n var focusableEl = navMobile_mainNav.querySelectorAll('[data-product=\"car-care-_-selling\"] .main-nav__container--bottom-level [tabindex=\"0\"]'); // jshint ignore:line\r\n var carCareBtn = document.querySelector('[data-product=\"car-care-_-selling\"] > button'); // jshint ignore:line\r\n if (document.activeElement === carCareBtn && document.querySelector('[data-product=\"car-care-_-selling\"].active') === null && navMobile_navIsOpen) { // jshint ignore:line\r\n // focus is on car care main button and car care menu is not open\r\n event.preventDefault();\r\n document.querySelector('.active .main-nav__close-button--mobile').focus();\r\n } else if (document.activeElement === focusableEl[focusableEl.length - 1]) {\r\n // focus is on last link of any option within care care menu\r\n event.preventDefault();\r\n document.querySelector('[data-product=\"insurance\"] > button').focus(); // jshint ignore:line\r\n }\r\n } else if (event.code === 'Tab' && event.shiftKey) {\r\n if (document.activeElement.classList.contains('logo') && navMobile_navIsOpen) {\r\n // Logo has focus\r\n event.preventDefault();\r\n var tabbable = document.querySelectorAll('.main-nav [tabindex=\\'0\\']:not(.main-nav__close-button)');\r\n tabbable[tabbable.length - 1].focus();\r\n }\r\n }\r\n });\r\n\r\n document.getElementById('skip-nav-link').addEventListener('click', function () {\r\n closeMobileNav();\r\n });\r\n\r\n for (let i = 0; i < navMobile_mainNavBtns.length; i++) {\r\n navMobile_mainNavBtns[i].addEventListener('click', function (event) { // jshint ignore:line\r\n if (!navMobile_isMobile) { return; }\r\n navMobile_navIsOpen = true;\r\n resetNoHeightClasses();\r\n onMainNavClick_mobile(event);\r\n setActiveTabIndexes(event, true);\r\n });\r\n }\r\n\r\n for (let i = 0; i < navMobile_secondLevelBtns.length; i++) {\r\n navMobile_secondLevelBtns[i].addEventListener('click', function (event) { // jshint ignore:line\r\n if (!navMobile_isMobile) { return; }\r\n onSecondaryLevelClick(event);\r\n setActiveTabIndexes(event, false);\r\n });\r\n }\r\n\r\n for (let i = 0; i < navMobile_closeBtns.length; i++) {\r\n navMobile_closeBtns[i].addEventListener('click', function () { // jshint ignore:line\r\n closeMobileNav();\r\n });\r\n }\r\n\r\n for (let i = 0; i < navMobile_backBtns.length; i++) {\r\n navMobile_backBtns[i].addEventListener('click', function (event) { // jshint ignore:line\r\n if (!navMobile_isMobile) { return; }\r\n backOneMenuLayer();\r\n setAllTabIndexes();\r\n // set tabIndex = 0 on the menu that is left open\r\n handleTabbingAfterBackPressed(event);\r\n });\r\n }\r\n\r\n for (let i = 0; i < navMobile_backToTopLevelBtns.length; i++) {\r\n navMobile_backToTopLevelBtns[i].addEventListener('click', function () { // jshint ignore:line\r\n if (!navMobile_isMobile) { return; }\r\n document.querySelectorAll('.main-nav .active').forEach(function (activeMenu) {\r\n if (!activeMenu.classList.contains('main-nav__list-item--top-level')) {\r\n activeMenu.classList.remove('active');\r\n }\r\n });\r\n setAllTabIndexes();\r\n document.querySelectorAll('.main-nav__container--mid-level--ul > li > button').forEach(function (button) {\r\n button.tabIndex = 0;\r\n });\r\n document.querySelector('[data-product=\"insurance\"] .main-nav__close-button--mobile').tabIndex = 0; // jshint ignore:line\r\n document.querySelector('[data-sub-product=\"motor-primary\"] > button').focus(); // jshint ignore:line\r\n // add no-height classes back\r\n setTimeout(function () {\r\n noHeightElArr.forEach(function (el) {\r\n el.classList.add('no-height');\r\n });\r\n noHeightElArr = [];\r\n }, 251);\r\n });\r\n }\r\n\r\n function setAllTabIndexes() {\r\n if (navMobile_isMobile) {\r\n tabbableEls.forEach(function (element) {\r\n element.tabIndex = -1;\r\n });\r\n } else {\r\n tabbableEls.forEach(function (element) {\r\n element.tabIndex = 0;\r\n });\r\n }\r\n }\r\n\r\n function setActiveTabIndexes(event, isFromTopMenu) {\r\n var closeButton;\r\n var activeTabbableEls;\r\n tabbableEls.forEach(function (element) {\r\n element.tabIndex = -1;\r\n });\r\n if (isFromTopMenu) {\r\n switch (true) {\r\n case navMobile_currentMainClickedBtn.parentElement.dataset.product === 'insurance':\r\n activeTabbableEls = document.querySelectorAll('[data-product=\"insurance\"] .main-nav__container--mid-level [data-no-tab-mobile]:not(.main-nav__container--bottom-level [data-no-tab-mobile]:not(.main-nav__container--mid-level--li-close [data-no-tab-mobile])'); // jshint ignore:line\r\n closeButton = document.querySelector('[data-product=\"insurance\"] .mobile--nav__mid-menu button'); // jshint ignore:line\r\n break;\r\n case navMobile_currentMainClickedBtn.parentElement.dataset.product === 'utilities':\r\n activeTabbableEls = document.querySelectorAll('[data-product=\"utilities\"] .main-nav__container--bottom-level .second-level-links--mobile'); // jshint ignore:line\r\n closeButton = document.querySelector('[data-product=\"utilities\"] .mobile--nav__mid-menu button'); // jshint ignore:line\r\n break;\r\n case navMobile_currentMainClickedBtn.parentElement.dataset.product === 'finance':\r\n activeTabbableEls = document.querySelectorAll('[data-product=\"finance\"] .main-nav__container--bottom-level .second-level-links--mobile'); // jshint ignore:line\r\n closeButton = document.querySelector('[data-product=\"finance\"] .mobile--nav__mid-menu button'); // jshint ignore:line\r\n break;\r\n case navMobile_currentMainClickedBtn.parentElement.dataset.product === 'car-care-_-selling':\r\n activeTabbableEls = document.querySelectorAll('[data-product=\"car-care-_-selling\"] .main-nav__container--bottom-level .second-level-links--mobile'); // jshint ignore:line\r\n closeButton = document.querySelector('[data-product=\"car-care-_-selling\"] .mobile--nav__mid-menu button'); // jshint ignore:line\r\n break;\r\n }\r\n } else {\r\n if ((event.target.classList.contains('second-level-links--mobile') && event.target.classList.contains('main-nav__options--mid-level')) || event.target.parentElement.dataset.product === 'insurance') {\r\n activeTabbableEls = event.target.nextElementSibling.querySelectorAll('[data-no-tab-mobile]:not(.main-nav__options--bottom-level > div [data-no-tab-mobile]):not(.main-nav__articles-container [data-no-tab-mobile]');\r\n } else {\r\n activeTabbableEls = event.target.nextElementSibling.querySelectorAll('[data-no-tab-mobile]');\r\n }\r\n var parentLi = event.target.closest('.main-nav__list-item--top-level');\r\n closeButton = parentLi.querySelector('.main-nav__close-button--mobile');\r\n }\r\n activeTabbableEls.forEach(function (element) {\r\n element.tabIndex = 0;\r\n });\r\n closeButton.tabIndex = 0;\r\n // Focus the right button\r\n setTimeout(function () {\r\n activeTabbableEls[0].focus();\r\n }, 251);\r\n }\r\n\r\n function handleTabbingAfterBackPressed(event) {\r\n var closeButton;\r\n var activeTabbableEls;\r\n var elToFocus;\r\n switch (true) {\r\n case navMobile_currentMainClickedBtn.parentElement.dataset.product === 'insurance':\r\n if (event.target.classList.contains('back-to-insurance')) {\r\n activeTabbableEls = document.querySelectorAll('[data-product=\"insurance\"] .main-nav__container--mid-level [data-no-tab-mobile]:not(.main-nav__container--bottom-level [data-no-tab-mobile]:not(.main-nav__container--mid-level--li-close [data-no-tab-mobile])'); // jshint ignore:line\r\n var product = event.target.innerText.toLowerCase();\r\n if (product === 'motor' || product === 'business') {\r\n product = product + '-primary';\r\n }\r\n elToFocus = document.querySelector('[data-sub-product=\"' + product + '\"] > button'); // jshint ignore:line\r\n } else {\r\n elToFocus = document.querySelector('[data-product=\"insurance\"] .main-nav__container--mid-level [data-buttontext=\"' + buttonText + '\"]'); // jshint ignore:line\r\n activeTabbableEls = elToFocus.closest('.main-nav__container--bottom-level--ul').querySelectorAll('[data-no-tab-mobile]:not(.main-nav__options--bottom-level > div [data-no-tab-mobile]):not(.main-nav__articles-container [data-no-tab-mobile]');\r\n }\r\n closeButton = document.querySelectorAll('[data-product=\"insurance\"] .main-nav__container--bottom-level .second-level-links--mobile'); // jshint ignore:line\r\n break;\r\n case navMobile_currentMainClickedBtn.parentElement.dataset.product === 'utilities':\r\n activeTabbableEls = document.querySelectorAll('[data-product=\"utilities\"] .main-nav__container--bottom-level .second-level-links--mobile'); // jshint ignore:line\r\n closeButton = document.querySelector('.active .main-nav__close-button--mobile');\r\n elToFocus = document.querySelector('[data-product=\"utilities\"] [data-buttontext=\"' + buttonText + '\"]'); // jshint ignore:line\r\n break;\r\n case navMobile_currentMainClickedBtn.parentElement.dataset.product === 'finance':\r\n activeTabbableEls = document.querySelectorAll('[data-product=\"finance\"] .main-nav__container--bottom-level .second-level-links--mobile'); // jshint ignore:line\r\n closeButton = document.querySelector('.active .main-nav__close-button--mobile');\r\n elToFocus = document.querySelector('[data-product=\"finance\"] [data-buttontext=\"' + buttonText + '\"]'); // jshint ignore:line\r\n break;\r\n case navMobile_currentMainClickedBtn.parentElement.dataset.product === 'car-care-_-selling':\r\n activeTabbableEls = document.querySelectorAll('[data-product=\"car-care-_-selling\"] .main-nav__container--bottom-level .second-level-links--mobile'); // jshint ignore:line\r\n closeButton = document.querySelector('.active .main-nav__close-button--mobile');\r\n elToFocus = elToFocus = document.querySelector('[data-product=\"car-care-_-selling\"] [data-buttontext=\"' + buttonText + '\"]'); // jshint ignore:line\r\n break;\r\n }\r\n closeButton.tabIndex = 0;\r\n activeTabbableEls.forEach(function (element) {\r\n element.tabIndex = 0;\r\n });\r\n elToFocus.focus();\r\n }\r\n\r\n function onMainNavClick_mobile(event) {\r\n if (!navMobile_isMobile) { return; }\r\n navMobile_currentMainClickedBtn = event.target;\r\n htmlEl.classList.add('nav-is-open');\r\n navMobile_openSecondaryMenu();\r\n }\r\n\r\n function onSecondaryLevelClick(event) {\r\n if (!navMobile_isMobile) { return; }\r\n var button = event.target;\r\n buttonText = button.dataset.buttontext;\r\n if (navMobile_subClassName !== '') {\r\n navMobile_mainNav.classList.remove(navMobile_subClassName);\r\n }\r\n navMobile_subClassName = navMobile_mainNavClassName + '--' + buttonText;\r\n removeNoHeightClasses(event);\r\n navMobile_mainNav.classList.add(navMobile_subClassName);\r\n\r\n var activeDiv = button.nextElementSibling;\r\n if (activeDiv) {\r\n activeDiv.classList.add('active');\r\n }\r\n\r\n scrollTopAllMenus();\r\n }\r\n\r\n function scrollTopAllMenus() {\r\n if (!navMobile_isMobile) { return; }\r\n var midMenu = document.querySelector('.main-nav__container--mid-level--ul');\r\n var bottomMenus = document.querySelectorAll('.main-nav__container--bottom-level--ul');\r\n var toolsMenus = document.querySelectorAll('.main-nav__articles-container');\r\n midMenu.scrollTop = 0;\r\n bottomMenus.forEach(function (el) {\r\n el.scrollTop = 0;\r\n });\r\n toolsMenus.forEach(function (el) {\r\n el.scrollTop = 0;\r\n });\r\n }\r\n\r\n function navMobile_openSecondaryMenu() {\r\n if (!navMobile_isMobile) { return; }\r\n document.querySelectorAll('.main-nav .active').forEach(function (activeEl) {\r\n activeEl.classList.remove('active');\r\n });\r\n switch (true) {\r\n case navMobile_currentMainClickedBtn.parentElement.dataset.product === 'insurance':\r\n navMobile_mainNavClassName = 'nav--is-open-mobile--insurance';\r\n navMobile_insuranceMenu.classList.remove('no-height');\r\n navMobile_insuranceSecondMenu.classList.remove('no-height');\r\n document.querySelector('[data-product=\"insurance\"]').classList.add('active'); // jshint ignore:line\r\n break;\r\n case navMobile_currentMainClickedBtn.parentElement.dataset.product === 'utilities':\r\n navMobile_mainNavClassName = 'nav--is-open-mobile--utilities';\r\n navMobile_utilsMenu.classList.remove('no-height');\r\n navMobile_utilsSecondMenu.classList.remove('no-height');\r\n document.querySelector('[data-product=\"utilities\"]').classList.add('active'); // jshint ignore:line\r\n break;\r\n case navMobile_currentMainClickedBtn.parentElement.dataset.product === 'finance':\r\n navMobile_mainNavClassName = 'nav--is-open-mobile--finance';\r\n navMobile_financeMenu.classList.remove('no-height');\r\n navMobile_financeSecondMenu.classList.remove('no-height');\r\n document.querySelector('[data-product=\"finance\"]').classList.add('active'); // jshint ignore:line\r\n break;\r\n case navMobile_currentMainClickedBtn.parentElement.dataset.product === 'car-care-_-selling':\r\n navMobile_mainNavClassName = 'nav--is-open-mobile--car-care';\r\n navMobile_carCareMenu.classList.remove('no-height');\r\n navMobile_carCareSecondMenu.classList.remove('no-height');\r\n document.querySelector('[data-product=\"car-care-_-selling\"]').classList.add('active'); // jshint ignore:line\r\n break;\r\n default:\r\n return;\r\n }\r\n navMobile_mainNav.className = 'main-nav nav--is-open-mobile ' + navMobile_mainNavClassName;\r\n }\r\n\r\n function backOneMenuLayer() {\r\n if (!navMobile_isMobile) { return; }\r\n if (noHeightElArr.length > 0) {\r\n var menuToClose = noHeightElArr[noHeightElArr.length - 1];\r\n menuToClose.classList.remove('active');\r\n setTimeout(function () {\r\n menuToClose.classList.add('no-height');\r\n }, 251);\r\n noHeightElArr.pop();\r\n }\r\n }\r\n\r\n // Observer to add faders to mobile menu\r\n var observer = new IntersectionObserver(function (entries) {\r\n entries.forEach(function (entry) {\r\n addOrRemoveFader(entry);\r\n });\r\n }, { threshold: 1 });\r\n\r\n [document.querySelector('[data-product=\"insurance\"] > button'), document.querySelector('[data-product=\"car-care-_-selling\"] > button')].forEach(function (btnEl) { // jshint ignore:line\r\n observer.observe(btnEl);\r\n });\r\n\r\n function addOrRemoveFader(element) {\r\n if (!navMobile_isMobile) { return; }\r\n var elId = element.target;\r\n elId.closest('[data-product]').dataset.product === 'insurance'; // jshint ignore:line\r\n var isIntersecting = element.isIntersecting;\r\n var navUl = document.querySelector('.main-nav__container');\r\n if (elId.closest('[data-product]').dataset.product === 'insurance') { // jshint ignore:line\r\n if (isIntersecting) {\r\n navUl.classList.remove('first-option-off-screen');\r\n } else {\r\n navUl.classList.add('first-option-off-screen');\r\n }\r\n } else {\r\n if (isIntersecting) {\r\n navUl.classList.remove('last-option-off-screen');\r\n } else {\r\n navUl.classList.add('last-option-off-screen');\r\n }\r\n }\r\n }\r\n\r\n function removeNoHeightClasses(event) {\r\n if (!navMobile_isMobile) { return; }\r\n var button = event.target;\r\n var noHeightEl = button.nextElementSibling;\r\n noHeightEl.classList.remove('no-height');\r\n if (!noHeightElArr.includes(noHeightEl)) {\r\n noHeightElArr.push(noHeightEl);\r\n }\r\n }\r\n\r\n function closeMobileNav() {\r\n if (!navMobile_isMobile) { return; }\r\n navMobile_navIsOpen = false;\r\n document.querySelectorAll('.main-nav .active').forEach(function (activeEl) {\r\n activeEl.classList.remove('active');\r\n });\r\n setTimeout(function () {\r\n htmlEl.classList.remove('nav-is-open');\r\n resetNoHeightClasses();\r\n setAllTabIndexes();\r\n }, 251);\r\n }\r\n\r\n function resetNoHeightClasses() {\r\n if (!navMobile_isMobile) { return; }\r\n var menus = [\r\n navMobile_insuranceMenu,\r\n navMobile_insuranceSecondMenu,\r\n navMobile_utilsMenu,\r\n navMobile_utilsSecondMenu,\r\n navMobile_financeMenu,\r\n navMobile_financeSecondMenu,\r\n navMobile_carCareMenu,\r\n navMobile_carCareSecondMenu\r\n ];\r\n menus.forEach(function (menu) {\r\n menu.classList.add('no-height');\r\n });\r\n noHeightElArr.forEach(function (el) {\r\n el.classList.add('no-height');\r\n });\r\n noHeightElArr = [];\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","(function ($) {\r\n\tif ($('.owl-carousel').length > 0) {\r\n\t\t// Run owl carousel\r\n\t\t$('.owl-carousel--multiple').owlCarousel({\r\n\t\t\tloop: false,\r\n\t\t\tresponsiveClass: true,\r\n\t\t\tdots: false,\r\n\t\t\tnav: true,\r\n\t\t\tresponsive: {\r\n\t\t\t\t0: {\r\n\t\t\t\t\titems: 1,\r\n\t\t\t\t},\r\n\t\t\t\t381: {\r\n\t\t\t\t\titems: 2,\r\n\t\t\t\t\tautoWidth: true,\r\n\t\t\t\t},\r\n\t\t\t\t1281: {\r\n\t\t\t\t\titems: 4,\r\n\t\t\t\t\tautoWidth: true,\r\n\t\t\t\t},\r\n\t\t\t},\r\n\t\t});\r\n\r\n\t\t$('.owl-carousel--single').owlCarousel({\r\n\t\t\tloop: false,\r\n\t\t\tresponsiveClass: true,\r\n\t\t\tdots: false,\r\n\t\t\tnav: true,\r\n\t\t\tsingleItem: true,\r\n\t\t\tresponsive: {\r\n\t\t\t\t0: {\r\n\t\t\t\t\titems: 1,\r\n\t\t\t\t},\r\n\t\t\t\t381: {\r\n\t\t\t\t\titems: 1,\r\n\t\t\t\t\tautoWidth: true,\r\n\t\t\t\t},\r\n\t\t\t\t1281: {\r\n\t\t\t\t\titems: 1,\r\n\t\t\t\t\tautoWidth: true,\r\n\t\t\t\t},\r\n\t\t\t},\r\n\t\t});\r\n\t}\r\n})(window.jQuery);\r\n","(function ($) {\r\n\tvar jumpLink = $('.jump-links a');\r\n\r\n\tjumpLink.click(function () {\r\n\t\tvar jumpUrl = $(this).attr('href');\r\n\r\n\t\tif ($(window).width() < 980) {\r\n\t\t\t$('html, body').animate({ scrollTop: $(jumpUrl).offset().top - 75 }, 500);\r\n\t\t} else {\r\n\t\t\t$('html, body').animate({ scrollTop: $(jumpUrl).offset().top - 80 }, 500);\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t});\r\n})(window.jQuery);\r\n","(function ($) {\r\n\t// Show subs toggle\r\n\tvar toggleLink = $('.toggle-link'),\r\n\t\tactiveClass = 'active',\r\n\t\ttoggleCopy = $('.toggled-copy');\r\n\r\n\ttoggleCopy.hide();\r\n\r\n\ttoggleLink.click(function () {\r\n\t\tvar toggleControl = $(this).attr('aria-controls'),\r\n\t\t\ttoggledDiv = $('div#' + toggleControl);\r\n\r\n\t\t$(this).toggleClass('open');\r\n\r\n\t\tif ($(window).width() < 840) {\r\n\t\t\tvar aTag = $(this);\r\n\t\t\t$(this).toggleClass(activeClass);\r\n\t\t\tif ($(this).hasClass(activeClass)) {\r\n\t\t\t\t$('html,body').animate({ scrollTop: aTag.offset().top - 150 }, 400);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\ttoggledDiv.slideToggle();\r\n\r\n\t\treturn false;\r\n\t});\r\n})(window.jQuery);\r\n","(function ($) {\r\n\t// Accordion\r\n\tvar question = $('.mod-accordion__question'),\r\n\t\tquestionContent = $('.mod-accordion__content'),\r\n\t\tactiveClass = 'active',\r\n\t\topenClass = 'open',\r\n\t\tanswer = '.mod-row';\r\n\r\n\t$('.mod-accordion__question + .mod-row').hide();\r\n\r\n\tquestion.on('click', function () {\r\n\t\t// Get position of clicked link\r\n\t\tvar aTag = $(this);\r\n\r\n\t\t// Scroll to position of clicked link\r\n\t\tsetTimeout(function () {\r\n\t\t\t$('html,body').animate(\r\n\t\t\t\t{\r\n\t\t\t\t\tscrollTop: aTag.offset().top - 81,\r\n\t\t\t\t},\r\n\t\t\t\t300\r\n\t\t\t);\r\n\t\t}, 20);\r\n\r\n\t\tif ($(this).hasClass(activeClass)) {\r\n\t\t\t$(this).removeClass(activeClass);\r\n\t\t\t$(this).parent().find(answer).hide();\r\n\t\t\t$(this).parent().removeClass(openClass);\r\n\t\t} else {\r\n\t\t\t$(this).parent().addClass(openClass);\r\n\t\t\t$(this).addClass(activeClass);\r\n\t\t\t$(this).parent().find(answer).slideDown(400);\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t});\r\n\r\n\t/* Accordion - Show more */\r\n\tvar accShowMore = $('.mod-accordion--show-more');\r\n\r\n\taccShowMore.find($('.mod-accordion__item')).hide();\r\n\r\n\t/* Look through each accordion with --show-more class */\r\n\taccShowMore.each(function () {\r\n\t\tvar accWrapper = $(this),\r\n\t\t\taccItems = accWrapper.find('> div').length,\r\n\t\t\tbtnShowMore = $(this).find('.mod-accordion__show-more'),\r\n\t\t\tloadedItems = $(this).attr('data-items-loaded'),\r\n\t\t\tloadedItemsValue = parseInt(loadedItems),\r\n\t\t\tlinkURL = $(this).attr('data-link-destination'),\r\n\t\t\tlinkCopy = $(this).attr('data-link-copy'),\r\n\t\t\tdestinationLink = $(this).find('.destination-link');\r\n\r\n\t\t/* show the \"show more\" button if more than 4 items */\r\n\t\tif (accItems > loadedItems) {\r\n\t\t\taccWrapper.find(btnShowMore).show();\r\n\t\t\tdestinationLink.hide();\r\n\t\t}\r\n\r\n\t\t/* show first 4 items of the accordion */\r\n\t\taccWrapper.find('> div:lt(' + loadedItems + ')').show();\r\n\r\n\t\tbtnShowMore.click(function () {\r\n\t\t\tloadedItemsValue = loadedItemsValue + 2;\r\n\r\n\t\t\t/* load the next 2 items */\r\n\t\t\t$(this)\r\n\t\t\t\t.parent()\r\n\t\t\t\t.find(' > div:lt(' + loadedItemsValue + ')')\r\n\t\t\t\t.show();\r\n\r\n\t\t\t/* \tif all items are loaded add 'loaded' text and add\r\n\t\t\t\t'loaded' class */\r\n\t\t\tif (loadedItemsValue >= accItems) {\r\n\t\t\t\t$(this).hide();\r\n\t\t\t\tdestinationLink.show().attr('href', linkURL).html(linkCopy);\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t\treturn false;\r\n\t\t});\r\n\t});\r\n})(window.jQuery);\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","var textboxlookup = {\r\n init: function () {\r\n var 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 var input = tblContainer.querySelector('.textboxlookup__input');\r\n var 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 var isValid = false;\r\n var keyed = event.keyCode || event.which || event.key;\r\n\r\n // Regex testing for aplha numeric inputs\r\n var regex = /^[\\w\\s]+$/;\r\n var 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 var url = '';\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__urlWithoutReg\"]').getAttribute('content');\r\n window.location = url;\r\n } else {\r\n var regInput = input.value.replace(/\\s/g, '');\r\n var reg = encodeURIComponent(regInput);\r\n url = tblContainer.querySelector('meta[name=\"textboxlookup__urlWithReg\"]').getAttribute('content');\r\n window.location = url + '?RegNumber=' + reg;\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});","var CONFUSEDCORE = CONFUSEDCORE || {};\r\n\r\n// This function runs when the page is loaded\r\ndocument.addEventListener('DOMContentLoaded', function() {\r\n const cookieWall = document.querySelector(\".cookie-wall\");\r\n if (!cookieWall) return;\r\n\r\n var pageUrl = window.location.href;\r\n\r\n\t// RUN COOKIE POPUP WIDGET\r\n\tvar cookiePolicyWidget = window.Confused.CookiePolicyWidget;\r\n\tcookiePolicyWidget.run();\r\n\r\n\t//CONFUSEDCORE.MI.MiListener.postLogSession('LogNewSession');\r\n\t// TRIGGER NEW SESSION CALL IN MI - WAIT FOR CALLBACK FROM SESSION CALL THEN TRIGGER COOKIE POPUP SHOWN EVENT\r\n\tvar miListener = CONFUSEDCORE.MI.MiListener;\r\n\tmiListener.postPageView('LogPageView', { page: pageUrl, referer: document.referrer }, function () {\r\n\t\tif (cookiePolicyWidget.wasCookiePopupShown()) {\r\n\t\t\tmiListener.postEvent('CookiePopupShown');\r\n\t\t}\r\n\t});\r\n});\r\n","var CSSCONSTANTS = CSSCONSTANTS || {};\r\n\r\n(function () {\r\n\t/* only used by providerList.js */\r\n\tCSSCONSTANTS.providerListClass = 'provider-list';\r\n\tCSSCONSTANTS.providerListMoreLinkClass = 'provider-list-more-link';\r\n\tCSSCONSTANTS.providersClass = 'provider-list__provider';\r\n\tCSSCONSTANTS.hiddenProvidersClass = 'provider-list__provider--hidden';\r\n\tCSSCONSTANTS.visibleProvidersClass = 'provider-list__provider--visible';\r\n\tCSSCONSTANTS.providerFilterClass = 'js-provider-list-filter';\r\n\tCSSCONSTANTS.providerFilterShowAllClass = 'js-provider-list-show-all';\r\n\r\n\t/* only used by transactionalLandingPageHero.js */\r\n\tCSSCONSTANTS.transactionalLandingPageHeroClass = 'hero--transactional-landing';\r\n\tCSSCONSTANTS.transactionalLandingPageHeroHeadingClass = 'hero--transactional-landing__heading';\r\n\tCSSCONSTANTS.transactionalLandingPageHeroImageClass = 'hero--transactional-landing__image';\r\n\tCSSCONSTANTS.transactionalLandingPageHeroActionClass = 'hero--transactional-landing__action';\r\n\tCSSCONSTANTS.transactionalLandingPageHeroSpeechClass = 'hero--transactional-landing__speech';\r\n\r\n\tCSSCONSTANTS.reminderBoxClass = 'box--reminder';\r\n\r\n\t/* only used by searchResultsHero.js */\r\n\tCSSCONSTANTS.heroHelpContactClass = 'hero--help__contact';\r\n\tCSSCONSTANTS.helpContactClass = 'help-contact';\r\n\r\n\t/* only used by productDrivers.js */\r\n\tCSSCONSTANTS.productDriverClass = 'product-driver';\r\n\tCSSCONSTANTS.productDriverImageClass = 'product-driver__image';\r\n\tCSSCONSTANTS.productDriverNotesClass = 'product-driver__notes';\r\n\tCSSCONSTANTS.productDriverLinkClass = 'product-driver__link';\r\n\r\n\t/* used by responsiveTabs.js */\r\n\tCSSCONSTANTS.responsiveTabsWrapperClass = 'responsive-tabs-wrapper';\r\n\tCSSCONSTANTS.responsiveTabsClass = 'responsive-tabs';\r\n\tCSSCONSTANTS.responsiveTabsEnabledClass = 'responsive-tabs--enabled';\r\n\tCSSCONSTANTS.responsiveTabsHeadingClass = 'responsive-tabs__heading';\r\n\tCSSCONSTANTS.responsiveTabsHeadingActiveClass = 'responsive-tabs__heading--active';\r\n\tCSSCONSTANTS.responsiveTabsPanelClass = 'responsive-tabs__panel';\r\n\tCSSCONSTANTS.responsiveTabsPanelActiveClass = 'responsive-tabs__panel--active';\r\n\tCSSCONSTANTS.responsiveTabsPanelClosedAccordionOnlyClass = 'responsive-tabs__panel--closed-accordion-only';\r\n\tCSSCONSTANTS.responsiveTabsListClass = 'responsive-tabs__list';\r\n\tCSSCONSTANTS.responsiveTabsListItemClass = 'responsive-tabs__list__item';\r\n\tCSSCONSTANTS.responsiveTabsListItemActiveClass = 'responsive-tabs__list__item--active';\r\n\tCSSCONSTANTS.responsiveTabsStepsClass = 'responsive-tabs--steps';\r\n})();\r\n"]}