' +\r\n htmlEncodedTitle +\r\n '
' +\r\n '' +\r\n htmlEncodedBody +\r\n '
' +\r\n '' +\r\n '{"version":3,"file":"bgl.bundle.min.js","sources":["bgl.bundle.js"],"sourcesContent":["// eslint-disable-next-line no-var\r\nvar bgl = window.bgl || {};\r\nbgl.uil = bgl.uil || {};\r\n\r\nbgl.uil.tabs = (function() {\r\n let buttons = [];\r\n let content = [];\r\n\r\n function init(element) {\r\n const tabs = document.getElementById(element);\r\n\r\n buttons = [...tabs.querySelectorAll('[data-tab-button]')];\r\n content = [...tabs.querySelectorAll('[data-tab-content]')];\r\n\r\n buttons.forEach((button) => {\r\n button.addEventListener('click', (event) => {\r\n clickTab(event);\r\n });\r\n });\r\n }\r\n\r\n function clickTab(event) {\r\n buttons.forEach((button) => {\r\n button.setAttribute('aria-selected', 'false');\r\n });\r\n\r\n event.currentTarget.setAttribute('aria-selected', 'true');\r\n\r\n content.forEach((contentItem) => {\r\n if (contentItem.hasAttribute('aria-hidden')) {\r\n contentItem.setAttribute('aria-hidden', 'true');\r\n } else {\r\n contentItem.classList.add('hide--desktop-only');\r\n }\r\n });\r\n\r\n const currentTargetId = `${event.currentTarget.getAttribute('aria-controls')}`;\r\n const selectedContent = document.getElementById(currentTargetId);\r\n\r\n if (selectedContent.hasAttribute('aria-hidden')) {\r\n selectedContent.setAttribute('aria-hidden', 'false');\r\n } else {\r\n selectedContent.classList.remove('hide--desktop-only');\r\n }\r\n }\r\n\r\n return {\r\n init: init,\r\n clickTab: clickTab,\r\n };\r\n})();\r\n// eslint-disable-next-line no-var\r\nvar bgl = window.bgl || {};\r\nbgl.uil = bgl.uil || {};\r\n\r\nbgl.uil.table = (() => {\r\n let table;\r\n let buttons;\r\n let checkboxes;\r\n let isAnnual = false;\r\n let isAnyCheckboxChecked = false;\r\n let buildYourOwnAnnual = 0.00;\r\n let buildYourOwnDeposit = 0.00;\r\n let buildYourOwnInstalment = 0.00;\r\n let buildYourOwnTotalPayable = 0.00;\r\n\r\n function init() {\r\n table = document.querySelector('[data-uil-table]');\r\n buttons = table.querySelectorAll('[data-tier-select-btn]');\r\n checkboxes = [...table.querySelectorAll('[data-checkbox]')];\r\n isAnnual = document.getElementById('IsAnnual').value == 'True';\r\n const includedAsStandardTier = table.querySelector('[data-included]');\r\n\r\n if (sessionStorage.getItem('IsBuildYourOwn') === null) {\r\n sessionStorage.setItem('IsBuildYourOwn', 'false');\r\n }\r\n\r\n checkboxes.forEach((checkbox) => {\r\n const checkboxId = checkbox.id;\r\n const checkLabel = document.querySelector(`[data-label=\"${checkboxId}\"]`);\r\n\r\n if (checkbox.checked) {\r\n sessionStorage.setItem('IsBuildYourOwn', 'true');\r\n isAnyCheckboxChecked = true;\r\n }\r\n\r\n checkbox.addEventListener('change', () => {\r\n if (!document.querySelector('[data-build-table-add-product]').classList.contains('hide')) {\r\n document.querySelector('[data-build-table-add-product]').classList.add('hide');\r\n document.querySelector('[data-build-table-pricing]').classList.remove('hide');\r\n };\r\n\r\n if (checkbox.checked) {\r\n sessionStorage.setItem('IsBuildYourOwn', 'true');\r\n setSessionStorageList(checkbox);\r\n checkLabel.innerText = 'Remove';\r\n\r\n if (!document.querySelector('[data-tier=\"Build\"]').hasAttribute('data-active-col')) {\r\n deselectAll();\r\n }\r\n selectTier(checkbox.getAttribute('data-tier'));\r\n\r\n document.querySelector('[data-build-table-add-product]').classList.add('hide');\r\n document.querySelector('[data-build-table-pricing]').classList.remove('hide');\r\n\r\n if (isAnnual) {\r\n buildYourOwnAnnual += parseFloat(checkbox.getAttribute('data-annual-amount'));\r\n\r\n document.querySelector('[data-build-table-annual-price]')\r\n .innerText = `${buildYourOwnAnnual.toFixed(2)} /year`;\r\n } else {\r\n buildYourOwnDeposit += parseFloat(\r\n checkbox.getAttribute('data-monthly-deposit-amount'));\r\n buildYourOwnInstalment += parseFloat(\r\n checkbox.getAttribute('data-monthly-instalment-amount'));\r\n buildYourOwnTotalPayable += parseFloat(\r\n checkbox.getAttribute('data-monthly-total-payable-amount'));\r\n\r\n updateBuildYourOwnTotalsContent(checkbox);\r\n }\r\n } else {\r\n checkLabel.innerText = 'Add';\r\n removeFromSessionStorage(checkbox);\r\n if (!isCheckboxChecked()) {\r\n deselectAll();\r\n checkLabel.innerText = 'Add';\r\n\r\n if (includedAsStandardTier.getAttribute('data-included').toLowerCase() === 'true') {\r\n selectTier(includedAsStandardTier.getAttribute('data-tier'));\r\n }\r\n\r\n sessionStorage.setItem('IsBuildYourOwn', 'false');\r\n }\r\n\r\n if (isAnnual) {\r\n const annualAmount = parseFloat(checkbox.getAttribute('data-annual-amount'));\r\n buildYourOwnAnnual -= annualAmount;\r\n\r\n document.querySelector('[data-build-table-annual-price]')\r\n .innerText = `${buildYourOwnAnnual.toFixed(2)} /year`;\r\n } else {\r\n buildYourOwnDeposit -= parseFloat(\r\n checkbox.getAttribute('data-monthly-deposit-amount'));\r\n buildYourOwnInstalment -= parseFloat(\r\n checkbox.getAttribute('data-monthly-instalment-amount'));\r\n buildYourOwnTotalPayable -= parseFloat(\r\n checkbox.getAttribute('data-monthly-total-payable-amount'));\r\n\r\n updateBuildYourOwnTotalsContent(checkbox);\r\n }\r\n }\r\n });\r\n });\r\n\r\n buttons.forEach((button) => {\r\n button.addEventListener('click', () => {\r\n if (button.hasAttribute('data-active-button')) {\r\n const includedAsStandardTier = document.querySelector('[data-included]');\r\n\r\n deselectAll();\r\n\r\n if (includedAsStandardTier.getAttribute('data-included').toLowerCase() === 'true') {\r\n selectTier(includedAsStandardTier.getAttribute('data-tier'));\r\n }\r\n } else {\r\n deselectAll();\r\n\r\n selectTier(button.getAttribute('data-tier'));\r\n buildYourOwnAnnual = buildYourOwnDeposit = buildYourOwnInstalment = buildYourOwnTotalPayable = 0.00;\r\n }\r\n });\r\n });\r\n\r\n if (isAnyCheckboxChecked) {\r\n const checkedCheckboxes = checkboxes.filter((checkbox) => checkbox.checked);\r\n\r\n checkedCheckboxes.forEach((checkbox) => {\r\n if (isAnnual) {\r\n buildYourOwnAnnual += parseFloat(checkbox.getAttribute('data-annual-amount'));\r\n\r\n document.querySelector('[data-build-table-annual-price]')\r\n .innerText = `${buildYourOwnAnnual.toFixed(2)} /year`;\r\n } else {\r\n buildYourOwnDeposit = parseFloat(\r\n checkbox.getAttribute('data-monthly-deposit-amount'));\r\n buildYourOwnInstalment = parseFloat(\r\n checkbox.getAttribute('data-monthly-instalment-amount'));\r\n buildYourOwnTotalPayable = parseFloat(\r\n checkbox.getAttribute('data-monthly-total-payable-amount'));\r\n\r\n updateBuildYourOwnTotalsContent(checkbox);\r\n }\r\n });\r\n } else {\r\n sessionStorage.setItem('IsBuildYourOwn', 'false');\r\n const activeCol = table.querySelectorAll('[data-active-col][data-tier=\"Build\"]');\r\n removeActiveCol(activeCol);\r\n setDefaultBuildYourOwnPricingHeaderContent();\r\n\r\n const activeElements = table.querySelectorAll('[data-active-col]');\r\n if (activeElements.length == 0 &&\r\n includedAsStandardTier.getAttribute('data-included').toLowerCase() === 'true') {\r\n deselectAll();\r\n selectTier(includedAsStandardTier.getAttribute('data-tier'));\r\n }\r\n }\r\n }\r\n\r\n function isCheckboxChecked() {\r\n for (let i = 0; i < checkboxes.length; i++) {\r\n const checkbox = checkboxes[i];\r\n if (checkbox.checked) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n function deselectAll() {\r\n const activeCol = table.querySelectorAll('[data-active-col]');\r\n const activeButton = table.querySelector('[data-active-button]');\r\n const activeBuildYourOwn = document.querySelector('[data-tier=\"Build\"]').hasAttribute('data-active-col');\r\n\r\n checkboxes.forEach((checkbox) => {\r\n if (checkbox.checked && activeBuildYourOwn) {\r\n const checkboxId = checkbox.id;\r\n const checkLabel = document.querySelector(`[data-label=\"${checkboxId}\"]`);\r\n checkbox.checked = false;\r\n if (sessionStorage.getItem('buildYourOwnList') != null) {\r\n removeFromSessionStorage(checkbox);\r\n }\r\n sessionStorage.setItem('IsBuildYourOwn', 'false');\r\n checkLabel.innerText = 'Add';\r\n }\r\n });\r\n if (activeButton != null) {\r\n removeActiveButton(activeButton);\r\n }\r\n\r\n if (activeCol != null) {\r\n removeActiveCol(activeCol);\r\n }\r\n\r\n setDefaultBuildYourOwnPricingHeaderContent();\r\n }\r\n\r\n function setDefaultBuildYourOwnPricingHeaderContent() {\r\n document.querySelector('[data-build-table-add-product]').classList.remove('hide');\r\n document.querySelector('[data-build-table-pricing]').classList.add('hide');\r\n }\r\n\r\n function removeActiveCol(activeCol) {\r\n activeCol.forEach((column) => {\r\n column.removeAttribute('data-active-col');\r\n column.classList.remove('uil-table__head--active');\r\n column.classList.remove('uil-table__data--active');\r\n column.classList.remove('uil-table__foot--active');\r\n column.classList.remove('uil-table__heading--active');\r\n });\r\n }\r\n\r\n function removeActiveButton(activeButton) {\r\n const activeButtonIcon = activeButton.querySelector('[data-button-icon]');\r\n const activeButtonText = activeButton.querySelector('[data-button-text]');\r\n\r\n activeButton.removeAttribute('data-active-button');\r\n activeButtonIcon.classList.add('hide');\r\n activeButtonText.innerText = 'Select';\r\n }\r\n\r\n function selectTier(dataTier) {\r\n const correctTiers = table.querySelectorAll(`[data-tier=\"${dataTier}\"]`);\r\n correctTiers.forEach((element) => {\r\n switch (element.tagName.toLowerCase()) {\r\n case 'th':\r\n element.classList.add('uil-table__head--active');\r\n element.setAttribute('data-active-col', '');\r\n break;\r\n case 'td':\r\n if (element.getAttribute('data-id') === 'tableFooter') {\r\n element.classList.add('uil-table__foot--active');\r\n element.setAttribute('data-active-col', '');\r\n } else {\r\n element.classList.add('uil-table__data--active');\r\n element.setAttribute('data-active-col', '');\r\n }\r\n break;\r\n case 'button':\r\n element.querySelector('.uil-btn__icon').classList.remove('hide');\r\n element.querySelector('[data-button-text]').innerText = 'Remove';\r\n element.setAttribute('data-active-button', '');\r\n break;\r\n case 'h3':\r\n element.classList.add('uil-table__heading--active');\r\n element.setAttribute('data-active-col', '');\r\n break;\r\n default:\r\n break;\r\n }\r\n });\r\n }\r\n\r\n function setSessionStorageList(checkbox) {\r\n if (sessionStorage.getItem('buildYourOwnList') === null) {\r\n sessionStorage.setItem('buildYourOwnList', JSON.stringify([checkbox.id]));\r\n } else {\r\n const listOfAddons = JSON.parse(sessionStorage.getItem('buildYourOwnList'));\r\n if (!isThisInBuildYourOwn(checkbox.id)) {\r\n listOfAddons.push(checkbox.id);\r\n sessionStorage.setItem('buildYourOwnList', JSON.stringify(listOfAddons));\r\n }\r\n }\r\n }\r\n\r\n function removeFromSessionStorage(checkbox) {\r\n const listOfAddons = JSON.parse(sessionStorage.getItem('buildYourOwnList'));\r\n const index = listOfAddons.indexOf(checkbox.id);\r\n listOfAddons.splice(index, 1);\r\n sessionStorage.setItem('buildYourOwnList', JSON.stringify(listOfAddons));\r\n }\r\n\r\n function isThisInBuildYourOwn(checkboxId) {\r\n const listOfAddons = JSON.parse(sessionStorage.getItem('buildYourOwnList'));\r\n\r\n return listOfAddons.includes(checkboxId);\r\n }\r\n\r\n function updateBuildYourOwnTotalsContent(checkbox) {\r\n const numberOfInstalments = checkbox.getAttribute('data-monthly-number-of-instalments');\r\n document.querySelector('[data-build-deposit]')\r\n .innerText = `${buildYourOwnDeposit.toFixed(2)}`;\r\n document.querySelector('[data-build-instalment-amount]')\r\n .innerText = `${buildYourOwnInstalment.toFixed(2)}`;\r\n document.querySelector('[data-build-number-of-instalments]')\r\n .innerText = `x ${numberOfInstalments} months`;\r\n document.querySelector('[data-build-total-payable]')\r\n .innerText = `${buildYourOwnTotalPayable.toFixed(2)}`;\r\n }\r\n\r\n return {\r\n init: init,\r\n };\r\n})();\r\n// eslint-disable-next-line no-var\r\nvar bgl = window.bgl || {};\r\nbgl.uil = bgl.uil || {};\r\n\r\nbgl.uil.datepicker = (() => {\r\n function init() {\r\n const datepicker = document.querySelector('[data-datepicker]');\r\n\r\n datepicker.addEventListener('blur', () => {\r\n if (!datepicker.checkValidity()) {\r\n datepicker.classList.add('error');\r\n } else {\r\n datepicker.classList.remove('error');\r\n }\r\n });\r\n };\r\n\r\n return {\r\n init: init,\r\n };\r\n})();\r\n// eslint-disable-next-line no-var\r\nvar bgl = window.bgl || {};\r\nbgl.uil = bgl.uil || {};\r\n\r\nbgl.uil.carousel = (() => {\r\n let carousel;\r\n let buttons;\r\n let navIsClicked = false;\r\n\r\n function init() {\r\n carousel = document.querySelector('[data-uil-carousel]');\r\n const carouselNavItems = document.querySelector('[data-uil-carousel-nav-items]');\r\n buttons = carousel.querySelectorAll('[data-tier-select-btn]');\r\n\r\n buttons.forEach((button) => {\r\n button.addEventListener('click', (event) => {\r\n deselectAll(carousel);\r\n\r\n if (!button.hasAttribute('data-active-button')) {\r\n selectTier(carousel, button.getAttribute('data-tier'));\r\n }\r\n });\r\n });\r\n\r\n const activeElements = carousel.querySelectorAll('[data-active]');\r\n if (activeElements.length == 0) {\r\n deselectAll(carousel);\r\n }\r\n\r\n setCarouselNavScrolling();\r\n checkSwipe(carousel, carouselNavItems);\r\n displayActiveTierInViewport(carousel);\r\n }\r\n\r\n function displayActiveTierInViewport(carousel) {\r\n const activeTierCard = carousel.querySelector('[data-active]');\r\n\r\n if (activeTierCard != null) {\r\n carousel.scrollTo(activeTierCard.offsetLeft, 0);\r\n }\r\n }\r\n\r\n function deselectAll(carousel) {\r\n const activeElement = carousel.querySelectorAll('[data-active]');\r\n const activeButton = carousel.querySelector('[data-active-button]');\r\n\r\n if (activeButton != null) {\r\n removeActiveButton(activeButton);\r\n }\r\n\r\n if (activeElement != null) {\r\n removeActive(activeElement);\r\n }\r\n }\r\n\r\n function removeActive(activeElement) {\r\n activeElement.forEach((element) => {\r\n element.removeAttribute('data-active');\r\n element.classList.remove('uil-carousel__card--active');\r\n element.classList.remove('uil-carousel__heading--active');\r\n element.classList.remove('active');\r\n });\r\n }\r\n\r\n function removeActiveButton(activeButton) {\r\n activeButton.removeAttribute('data-active-button');\r\n activeButton.querySelector('[data-button-text-active]').classList.add('hide');\r\n activeButton.querySelector('[data-button-text-inactive]').classList.remove('hide');\r\n activeButton.querySelector('[data-button-icon]').classList.add('hide');\r\n activeButton.querySelector('[data-tier-select-input]').removeAttribute('checked');\r\n }\r\n\r\n function selectTier(carousel, dataTier) {\r\n const correctTiers = carousel.querySelectorAll(`[data-tier=\"${dataTier}\"]`);\r\n\r\n correctTiers.forEach((element) => {\r\n switch (true) {\r\n case element.hasAttribute('data-uil-carousel-card'):\r\n element.classList.add('uil-carousel__card--active');\r\n element.setAttribute('data-active', '');\r\n break;\r\n case element.hasAttribute('data-uil-carousel-heading'):\r\n element.classList.add('uil-carousel__heading--active');\r\n element.setAttribute('data-active', '');\r\n break;\r\n case element.hasAttribute('data-tier-select-btn'):\r\n element.querySelector('[data-button-text-active]').classList.remove('hide');\r\n element.querySelector('[data-button-text-inactive]').classList.add('hide');\r\n element.querySelector('[data-button-icon]').classList.remove('hide');\r\n element.querySelector('[data-tier-select-input]').setAttribute('checked', 'checked');\r\n element.setAttribute('data-active-button', '');\r\n default:\r\n break;\r\n }\r\n });\r\n }\r\n\r\n function setCarouselNavScrolling() {\r\n const navItems = document.querySelectorAll('[data-uil-carousel-nav-item]');\r\n\r\n navItems.forEach((item) => {\r\n item.addEventListener('click', (event) => {\r\n event.preventDefault();\r\n\r\n navIsClicked = true;\r\n const controlId = item.getAttribute('aria-controls');\r\n const tierCard = carousel.querySelector('#' + controlId);\r\n\r\n navItems.forEach((navItem) => {\r\n navItem.classList\r\n .remove('uil-carousel-wrapper__btn');\r\n });\r\n item.classList.add('uil-carousel-wrapper__btn');\r\n carousel.scrollTo(tierCard.offsetLeft, 0);\r\n\r\n setTimeout(() => {\r\n navIsClicked = false;\r\n }, 500);\r\n });\r\n });\r\n }\r\n\r\n function checkSwipe(carousel, carouselNav) {\r\n carousel.addEventListener('scroll', () => {\r\n if (!navIsClicked) {\r\n const scrollLeft = carousel.scrollLeft;\r\n\r\n const carouselNavItems = carouselNav.querySelectorAll('[data-uil-carousel-nav-item]');\r\n carouselNavItems.forEach((navItem, index) => {\r\n const controlId = navItem.getAttribute('aria-controls');\r\n const tierCard = carousel.querySelector('#' + controlId);\r\n\r\n const offsetLeft = tierCard.offsetLeft;\r\n const itemWidth = tierCard.offsetWidth;\r\n\r\n if (scrollLeft + itemWidth >= offsetLeft && scrollLeft <= offsetLeft + itemWidth) {\r\n carouselNavItems\r\n .forEach((item) => item.classList\r\n .remove('uil-carousel-wrapper__btn'));\r\n navItem.classList\r\n .add('uil-carousel-wrapper__btn');\r\n }\r\n });\r\n }\r\n });\r\n }\r\n\r\n return {\r\n init,\r\n deselectAll,\r\n selectTier,\r\n };\r\n})();\r\n// eslint-disable-next-line no-var\r\nvar bgl = window.bgl || {};\r\nbgl.uil = bgl.uil || {};\r\n\r\nbgl.uil.basetabs = (function() {\r\n let buttons = [];\r\n let content = [];\r\n\r\n function init(idName) {\r\n const tabs = document.getElementById(idName);\r\n\r\n getButtonsAndContent(tabs, idName);\r\n\r\n buttons.forEach((button) => {\r\n button.addEventListener('click', (event) => {\r\n clickTab(event, idName);\r\n });\r\n });\r\n }\r\n\r\n function clickTab(event, idName) {\r\n const tabs = document.getElementById(idName);\r\n\r\n getButtonsAndContent(tabs, idName);\r\n\r\n buttons.forEach((button) => {\r\n button.setAttribute('aria-selected', 'false');\r\n });\r\n\r\n event.currentTarget.setAttribute('aria-selected', 'true');\r\n\r\n content.forEach((contentItem) => {\r\n if (contentItem.hasAttribute('aria-hidden')) {\r\n contentItem.setAttribute('aria-hidden', 'true');\r\n } else {\r\n contentItem.classList.add('hide');\r\n }\r\n });\r\n\r\n const currentTargetId = `${event.currentTarget.getAttribute('aria-controls')}`;\r\n const selectedContent = document.getElementById(currentTargetId);\r\n\r\n if (selectedContent.hasAttribute('aria-hidden')) {\r\n selectedContent.setAttribute('aria-hidden', 'false');\r\n } else {\r\n selectedContent.classList.remove('hide');\r\n }\r\n }\r\n\r\n function getButtonsAndContent(tabs, idName) {\r\n buttons = [...tabs.querySelectorAll(`[data-tab-button-${idName}]`)];\r\n content = [...tabs.querySelectorAll(`[data-tab-content-${idName}]`)];\r\n }\r\n\r\n return {\r\n init: init,\r\n clickTab: clickTab,\r\n };\r\n})();\r\n// eslint-disable-next-line no-var\r\nvar bgl = window.bgl || {};\r\nbgl.uil = bgl.uil || {};\r\n\r\nbgl.uil.accordion = (function() {\r\n function init(elementId) {\r\n if (document.querySelector('[data-accordion]')) {\r\n const accordions = document.querySelectorAll('[data-accordion]');\r\n\r\n accordions.forEach((accordion) => {\r\n const triggers = accordion.querySelectorAll('[data-accordion-button]');\r\n triggers.forEach((trigger) => trigger.addEventListener(\r\n 'click',\r\n (event) => {\r\n clickAccordion(event.currentTarget);\r\n },\r\n ));\r\n });\r\n } else {\r\n const accordion = document.getElementById(elementId);\r\n const triggers = accordion.querySelectorAll('[data-accordion-button]');\r\n triggers.forEach((trigger) => trigger.addEventListener(\r\n 'click',\r\n (event) => {\r\n clickAccordion(event.currentTarget);\r\n },\r\n ));\r\n }\r\n }\r\n\r\n function clickAccordion(currentTarget) {\r\n const isAriaExpanded = currentTarget.getAttribute('aria-expanded');\r\n const currentTargetId = `${currentTarget.getAttribute('aria-controls')}`;\r\n const selectedContent = document.getElementById(currentTargetId);\r\n\r\n if (isAriaExpanded !== 'true') {\r\n const accordion = currentTarget.closest('[data-accordion]');\r\n if (accordion.getAttribute('data-accordion-type') === 'radio') {\r\n collapseAllAccordionContent(accordion);\r\n }\r\n }\r\n\r\n currentTarget.setAttribute(\r\n 'aria-expanded',\r\n isAriaExpanded === 'true' ? 'false' : 'true');\r\n\r\n selectedContent.classList.toggle('hide');\r\n selectedContent.setAttribute(\r\n 'aria-hidden',\r\n isAriaExpanded === 'true' ? 'true' : 'false');\r\n }\r\n\r\n function collapseAllAccordionContent(accordion) {\r\n const buttons = accordion.querySelectorAll('[data-accordion-button]');\r\n buttons.forEach((button) => button.setAttribute('aria-expanded', 'false'));\r\n\r\n const contents = accordion.querySelectorAll('[data-accordion-content]');\r\n contents.forEach((content) => content.classList.add('hide'));\r\n }\r\n\r\n return {\r\n init: init,\r\n clickAccordion: clickAccordion,\r\n };\r\n})();\r\n\r\n// eslint-disable-next-line no-var\r\nvar bgl = window.bgl || {};\r\n\r\nbgl.policyoverviewlink = (function() {\r\n function init(elementId) {\r\n const policyOverviewLink = document.getElementById(elementId);\r\n\r\n if (policyOverviewLink) {\r\n policyOverviewLink.addEventListener('click', function() {\r\n bgl.common.utilities.redirectToUrl(sessionStorage.getItem('policyHomeUrl'));\r\n });\r\n }\r\n }\r\n\r\n return {\r\n init: init,\r\n };\r\n})();\r\n// eslint-disable-next-line no-var\r\nvar bgl = window.bgl || {};\r\nbgl.introtour = bgl.introtour || {};\r\n\r\nbgl.introtour.steps = (function() {\r\n const storageKey = 'introTourInviteSeen';\r\n let inviteSeen = localStorage.getItem(storageKey);\r\n let tourDriver = null;\r\n let stepsInvite = [];\r\n const handleResize = debounce(() => {\r\n if (tourDriver.isActive()) {\r\n stepsConfiguration.steps = getVisibleSteps();\r\n tourDriver.setConfig(stepsConfiguration);\r\n tourDriver.refresh();\r\n }\r\n }, 250);\r\n\r\n const stepsConfiguration = {\r\n popoverClass: 'driverjs-theme',\r\n showProgress: true,\r\n progressText: 'Step {{current}}/{{total}}',\r\n showButtons: ['next', 'previous', 'close'],\r\n nextBtnText: 'Next',\r\n prevBtnText: 'Back',\r\n doneBtnText: 'Done',\r\n onHighlighted: (element, step, options) => {\r\n onHighlighted(options);\r\n },\r\n onCloseClick: () => {\r\n tourDriver.destroy();\r\n },\r\n onDestroyStarted: () => {\r\n tourDriver.destroy();\r\n },\r\n };\r\n\r\n function init(resourceBasePath, introTourDriver) {\r\n tourDriver = introTourDriver;\r\n const welcomeMessage = document\r\n .querySelector('h1[data-testid=\"PolicyOverviewHeaderMessage__header-message\"] > span')\r\n .innerText;\r\n stepsInvite = [{\r\n popover: {\r\n title: ''.concat(welcomeMessage),\r\n description: '\\n
We would love to show you around your account area.
' +\r\n '\\nThis is your dashboard, where you can quickly view your policy details, ' +\r\n 'upcoming payments, and any notifications.
',\r\n side: 'bottom',\r\n align: 'start',\r\n },\r\n },\r\n {\r\n element: '[data-desktop-tourid=\"Make a Change\"]',\r\n popover: {\r\n title: 'Managing your policy',\r\n description: 'Head over to the \\'Make a change\\' section. It\\'s easy and only takes a few clicks.' +\r\n '
',\r\n side: 'bottom',\r\n align: 'end',\r\n },\r\n }, {\r\n element: '[data-mobile-tourid=\"Make Changes\"]',\r\n popover: {\r\n title: 'Managing your policy',\r\n description: 'Head over to the \\'Make Changes\\' section. It\\'s easy and only ' +\r\n 'takes a few clicks.
',\r\n side: 'top',\r\n align: 'end',\r\n },\r\n }, {\r\n element: '[data-desktop-tourid=\"Claims\"]',\r\n popover: {\r\n title: 'Claims',\r\n description: 'Windscreen needs sorting, Broken down or need to track a repair?
' +\r\n 'Take me there
',\r\n side: 'bottom',\r\n align: 'end',\r\n },\r\n }, {\r\n element: '[data-mobile-tourid=\"Claims\"]',\r\n popover: {\r\n title: 'Claims',\r\n description: 'Windscreen needs sorting, Broken down or need to track a repair?
' +\r\n '',\r\n side: 'top',\r\n align: 'end',\r\n },\r\n }, {\r\n element: '#HoustonContainer',\r\n popover: {\r\n title: 'Support',\r\n description: 'Our helpful assistant is here to serve. Our web chat team are here too.' +\r\n '
',\r\n side: 'left',\r\n align: 'end',\r\n },\r\n },\r\n {\r\n element: '[data-tourid=\"quickLinks\"]',\r\n popover: {\r\n title: 'Quick access links',\r\n description: 'We have added some popular links for quick access such as making ' +\r\n 'changes and accessing documents or payments.
',\r\n side: 'bottom',\r\n align: 'start',\r\n },\r\n },\r\n {\r\n popover: {\r\n title: 'All done',\r\n description: 'Dive in and explore what MyAccount can do for you. ' +\r\n 'We\\'re here to help every step of the way.
',\r\n },\r\n }];\r\n\r\n function isElementVisible(selector) {\r\n const element = document.querySelector(selector);\r\n if (!element) {\r\n return false;\r\n }\r\n\r\n const style = window.getComputedStyle(element);\r\n if (element.offsetParent == null && style.position != 'fixed') {\r\n return false;\r\n }\r\n\r\n if (style.display == 'none' || style.visibility == 'hidden') {\r\n return false;\r\n }\r\n\r\n return true;\r\n }\r\n\r\n function debounce(func, wait) {\r\n let timeout;\r\n return () => {\r\n clearTimeout(timeout);\r\n timeout = setTimeout(() => {\r\n func.apply(this);\r\n }, wait);\r\n };\r\n }\r\n\r\n return {\r\n init: init,\r\n onHighlighted: onHighlighted,\r\n };\r\n})();\r\n// eslint-disable-next-line no-var\r\nvar bgl = window.bgl || {};\r\nbgl.hiddensubmit = bgl.hiddensubmit || {};\r\n\r\nbgl.hiddensubmit = (() => {\r\n let initiallySelectedRadioButton;\r\n let confirmDialogue;\r\n\r\n function init() {\r\n const form = document.querySelector('[data-hidden-submit-form]');\r\n\r\n if (form) {\r\n const fieldset = document.querySelector('[data-hidden-submit-fieldset]');\r\n confirmDialogue = document.querySelector('[data-hidden-submit-confirm]');\r\n\r\n if (fieldset) {\r\n const radioButtons = [...fieldset.querySelectorAll('input[type=\"radio\"]')];\r\n\r\n radioButtons.forEach((radioButton) => {\r\n radioButton.addEventListener('click', handleRadioButtonClick);\r\n\r\n if (radioButton.checked) {\r\n initiallySelectedRadioButton = radioButton;\r\n }\r\n });\r\n }\r\n }\r\n }\r\n\r\n const handleRadioButtonClick = (event) => {\r\n if (event.target === initiallySelectedRadioButton) {\r\n confirmDialogue.classList.add('hide');\r\n } else {\r\n confirmDialogue.classList.remove('hide');\r\n }\r\n };\r\n\r\n return {\r\n init,\r\n };\r\n})();\r\n// eslint-disable-next-line no-var\r\nvar bgl = window.bgl || {};\r\nbgl.common = bgl.common || {};\r\n\r\nbgl.common.pubsub = (function() {\r\n let events = {};\r\n\r\n function on(eventName, fn) {\r\n events[eventName] = events[eventName] || [];\r\n events[eventName].push(fn);\r\n }\r\n\r\n function off(eventName, fn) {\r\n if (events[eventName]) {\r\n for (let i = 0; i < events[eventName].length; i++) {\r\n if (events[eventName][i] === fn) {\r\n events[eventName].splice(i, 1);\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n\r\n function emit(eventName, data) {\r\n if (events[eventName]) {\r\n events[eventName].forEach(function(fn) {\r\n fn(data);\r\n });\r\n }\r\n }\r\n\r\n function getEventCount(eventName) {\r\n return events[eventName].length;\r\n }\r\n\r\n function clearEvents() {\r\n events = {};\r\n }\r\n\r\n return {\r\n on: on,\r\n off: off,\r\n emit: emit,\r\n clear: clearEvents,\r\n getEventCount: getEventCount,\r\n };\r\n})();\r\n\r\nbgl.common.loader = (function() {\r\n function makeAjaxCall(options) {\r\n $.ajax({\r\n url: options.componentUrl,\r\n type: 'POST',\r\n contentType: 'application/json',\r\n data: JSON.stringify(options.componentConfiguration),\r\n success: function(data, textStatus, request) {\r\n if (\r\n request.getResponseHeader('Content-Type') ===\r\n 'application/json; charset=utf-8'\r\n ) {\r\n if (data.isSuccess && data.redirectUrl) {\r\n if (typeof options.beforePageRedirectCallback === 'function') {\r\n options.beforePageRedirectCallback();\r\n }\r\n\r\n bgl.common.utilities.redirectToUrl(data.redirectUrl);\r\n } else if (!data.isSuccess) {\r\n bgl.common.utilities.errorRedirect(data.errorRedirectUrl);\r\n }\r\n } else {\r\n const htmlChangingFunction = options.htmlChangingFunction;\r\n\r\n htmlChangingFunction.call($('#' + options.containerElementId), data);\r\n\r\n if (typeof options.callback === 'function') {\r\n options.callback();\r\n }\r\n }\r\n },\r\n error: function(error) {\r\n console.log(error);\r\n },\r\n });\r\n }\r\n\r\n function logToGA(componentConfiguration, componentUrl) {\r\n let subCall;\r\n let sliderGTMPageURL;\r\n let sliderGTMPageTitle;\r\n\r\n if ($(componentConfiguration)[0].CurrentStep) {\r\n subCall = '/' + $(componentConfiguration)[0].CurrentStep;\r\n } else if ($(componentConfiguration)[0].currentStep) {\r\n subCall = '/' + $(componentConfiguration)[0].currentStep;\r\n } else if ($(componentConfiguration)[0].EditActionKey) {\r\n subCall = '/' + $(componentConfiguration)[0].EditActionKey;\r\n } else {\r\n subCall = '';\r\n }\r\n\r\n if (componentUrl && window.dataLayer) {\r\n sliderGTMPageURL =\r\n window.location.pathname.replace(/\\/$/, '') +\r\n '/' +\r\n componentUrl.split('/').pop() +\r\n subCall;\r\n sliderGTMPageTitle = componentUrl.split('/').pop() + subCall;\r\n\r\n dataLayer.push({\r\n event: 'MAVirtualPageView',\r\n virtualPageURL: sliderGTMPageURL,\r\n virtualPageTitle: sliderGTMPageTitle,\r\n });\r\n }\r\n }\r\n\r\n function load(\r\n componentConfiguration,\r\n componentUrl,\r\n containerElementId,\r\n callback,\r\n beforePageRedirectCallback,\r\n ) {\r\n const options = {\r\n componentConfiguration: componentConfiguration,\r\n componentUrl: componentUrl,\r\n containerElementId: containerElementId,\r\n callback: callback,\r\n htmlChangingFunction: $.fn.html,\r\n beforePageRedirectCallback: beforePageRedirectCallback,\r\n };\r\n\r\n logToGA(componentConfiguration, componentUrl);\r\n makeAjaxCall(options);\r\n }\r\n\r\n function loadAndReplace(\r\n componentConfiguration,\r\n componentUrl,\r\n containerElementId,\r\n callback,\r\n beforePageRedirectCallback,\r\n ) {\r\n const options = {\r\n componentConfiguration: componentConfiguration,\r\n componentUrl: componentUrl,\r\n containerElementId: containerElementId,\r\n callback: callback,\r\n htmlChangingFunction: $.fn.replaceWith,\r\n beforePageRedirectCallback: beforePageRedirectCallback,\r\n };\r\n\r\n makeAjaxCall(options);\r\n }\r\n\r\n return {\r\n load: load,\r\n loadAndReplace: loadAndReplace,\r\n };\r\n})();\r\n\r\nbgl.common.modal = (function() {\r\n // Public Functions\r\n function show(el, event) {\r\n el.addClass('show');\r\n el.attr('aria-hidden', false);\r\n $(document.body).addClass('modal-open');\r\n showBackdrop();\r\n event.stopPropagation();\r\n }\r\n\r\n function hide(el) {\r\n el.removeClass('show');\r\n el.attr('aria-hidden', true);\r\n $(document.body).removeClass('modal-open');\r\n $('.modal').off('click');\r\n removeBackdrop();\r\n }\r\n\r\n function showBackdrop() {\r\n const backdrop = document.createElement('div');\r\n backdrop.className = 'modal-backdrop fade show';\r\n $(backdrop).appendTo(document.body);\r\n\r\n $('.modal').on('click', function(e) {\r\n if (e.target !== e.currentTarget) {\r\n return;\r\n }\r\n hide($('.modal'), e);\r\n });\r\n }\r\n\r\n function removeBackdrop() {\r\n $('.modal-backdrop').remove();\r\n $('.modal').off('click');\r\n }\r\n\r\n function loadModalContent(url, $popupContainer, popupConfiguration) {\r\n let requestData = '';\r\n if (popupConfiguration) {\r\n requestData = JSON.stringify(popupConfiguration);\r\n }\r\n\r\n $.ajax({\r\n url: url,\r\n type: 'POST',\r\n contentType: 'application/json',\r\n data: requestData,\r\n success: function(data) {\r\n $popupContainer.html(data);\r\n },\r\n error: function(error) {\r\n console.error(error);\r\n },\r\n });\r\n }\r\n\r\n // Event Handlers\r\n $(document).on('click', '[data-toggle=\"modal\"]', function(event) {\r\n event.preventDefault();\r\n const url = $(this).data('url');\r\n const popupConfiguration = $(this).data('configuration');\r\n\r\n bgl.common.utilities.invoke(\r\n $(this).data('togglePreModal'),\r\n $(this).data('togglePreModalParams'),\r\n );\r\n\r\n const $relatedTarget = $($(this).data('target'));\r\n show($relatedTarget, event);\r\n\r\n if (url) {\r\n loadModalContent(\r\n url,\r\n $relatedTarget.find('.modal-body'),\r\n popupConfiguration,\r\n );\r\n }\r\n });\r\n\r\n $(document).on('click', '[data-dismiss=\"modal\"]', function(event) {\r\n event.preventDefault();\r\n const $relatedTarget = $(this).closest('.modal');\r\n hide($relatedTarget, event);\r\n });\r\n})();\r\n\r\nbgl.common.validator = (function() {\r\n let validator;\r\n const options = {\r\n errorClass: 'error',\r\n hasSubmit: true,\r\n };\r\n\r\n const enterKeyCode = 13;\r\n const escKeyCode = 27;\r\n const tabKeyCode = 9;\r\n const backspaceKeyCode = 8;\r\n const deleteKeyCode = 46;\r\n const endKeyCode = 35;\r\n const downArrowKeyCode = 40;\r\n const numpadZeroKeyCode = 96;\r\n const numpadNineKeyCode = 105;\r\n const zeroKeyCode = 48;\r\n const nineKeyCode = 57;\r\n const letterAInLowerKeyCode = 65;\r\n\r\n function initFormValidator(form, optionsParameters) {\r\n form = $(form);\r\n optionsParameters = optionsParameters || {};\r\n\r\n $.extend(options, optionsParameters);\r\n\r\n // if jQuery validation is switched on\r\n if ($.validator) {\r\n setupCustomValidationRules(form);\r\n\r\n $.validator.unobtrusive.parse(form);\r\n\r\n validator = $(form).validate();\r\n\r\n if (validator) {\r\n validator.settings.onsubmit = options.onsubmit || false;\r\n validator.settings.onkeyup = options.onkeyup || false;\r\n validator.settings.onfocusout = options.onfocusout || false;\r\n validator.settings.onfocusin = options.onfocusin || false;\r\n validator.settings.onclick = options.onclick || false;\r\n validator.settings.focusInvalid = options.focusInvalid || false;\r\n validator.settings.cleanUp = options.cleanUp || false;\r\n validator.settings.errorClass = options.errorClass || 'error';\r\n validator.settings.highlight =\r\n options.highlight ||\r\n function(element) {\r\n highlightElement(element);\r\n };\r\n validator.settings.unhighlight =\r\n options.unhighlight ||\r\n function(element) {\r\n unhighlighElement(element);\r\n };\r\n validator.settings.ignore =\r\n options.ignore !== undefined ?\r\n options.ignore :\r\n validator.settings.ignore;\r\n }\r\n }\r\n\r\n return validator;\r\n }\r\n\r\n function setupCustomValidationRules(form) {\r\n if (form.find('[data-val-requirefromgroup]')) {\r\n setRequireAtLeastOneOfGroupValidation();\r\n }\r\n\r\n if (form.find('[data-val-dateformat]')) {\r\n setValidationOfDateToFormat();\r\n }\r\n\r\n if (form.find('[data-val-requiredif]')) {\r\n setRequiredIfValidation();\r\n }\r\n }\r\n\r\n function validateForm(configuration, form) {\r\n form = $(form);\r\n const isValidForm = isFormValid(form);\r\n\r\n /* client side validation is passed\r\n or skipped if jQuery validation is switched off */\r\n if (isValidForm) {\r\n submitComponentForm(form, configuration);\r\n }\r\n\r\n return isValidForm;\r\n }\r\n\r\n function isFormValid(form) {\r\n form = $(form);\r\n let isValidForm = true;\r\n validator = getFormValidator(form);\r\n\r\n // try to validate the form using jQuery validation\r\n if (validator) {\r\n isValidForm = $(form).valid() && options.hasSubmit;\r\n }\r\n\r\n if (!isValidForm) {\r\n scrollToTheFirstInvalidInput();\r\n getValidationMessages();\r\n }\r\n\r\n /* client side validation is passed\r\n or skipped if jQuery validation is switched off */\r\n return isValidForm;\r\n }\r\n\r\n function getValidationMessages() {\r\n if ($('.form-row').hasClass('error')) {\r\n const data = {\r\n form_section: getFormSectionName($(this)),\r\n error_details: [],\r\n };\r\n\r\n $('.error').find('.form-row__validation-text').each(function() {\r\n const errorDetail = {\r\n error_field: $(this).attr('data-valmsg-for'),\r\n error_message: $(this).text(),\r\n };\r\n\r\n data.error_details.push(errorDetail);\r\n });\r\n\r\n bgl.common.pubsub.emit('formValidationFailed', data);\r\n }\r\n }\r\n\r\n function getFormSectionName() {\r\n const formRow = '.form-row__validation-text';\r\n\r\n if ($(formRow)\r\n .parents()\r\n .find('.step-form__section-title')\r\n .text()\r\n .length === 0) {\r\n return $(formRow).closest('form').find('h1').text();\r\n } else {\r\n return $(formRow)\r\n .closest('form')\r\n .find('.step-form__section-title')\r\n .text();\r\n }\r\n }\r\n\r\n function enableMaxLength() {\r\n $('input[data-val-length-max]').each(function(index, element) {\r\n const maxLength = $(element).data('val-length-max');\r\n\r\n $(element).attr('maxlength', maxLength);\r\n });\r\n }\r\n\r\n function getFormValidator(form) {\r\n form = form || {};\r\n\r\n if (validator) {\r\n return validator;\r\n }\r\n\r\n if ($.validator) {\r\n $.validator.unobtrusive.parse(form);\r\n\r\n validator = $(form).validate({\r\n ignore: '.hide',\r\n });\r\n\r\n $.extend(options, validator.settings);\r\n }\r\n\r\n return validator;\r\n }\r\n\r\n function highlightElement(element) {\r\n element = element || $();\r\n const parentRow = $(element).closest('div.form-row') || $();\r\n\r\n if (parentRow.length > 0) {\r\n $(parentRow).addClass(options.errorClass);\r\n } else {\r\n $(element).addClass(options.errorClass);\r\n }\r\n }\r\n\r\n function unhighlighElement(element) {\r\n element = element || $();\r\n const parentRow = $(element).closest('div.form-row') || $();\r\n\r\n if (parentRow.length > 0) {\r\n $(parentRow).removeClass(options.errorClass);\r\n } else {\r\n $(element).removeClass(options.errorClass);\r\n }\r\n\r\n cleanAriaDescribedbyAttribute(element);\r\n }\r\n\r\n function cleanAriaDescribedbyAttribute(element) {\r\n if (!$(element).attr('aria-describedby')) {\r\n return;\r\n }\r\n\r\n const currentAriaDescribedBy = $(element)\r\n .attr('aria-describedBy')\r\n .split(' ');\r\n const newAriaDescribedBy = [];\r\n\r\n $(currentAriaDescribedBy).each(function(i, elementID) {\r\n elementID = elementID.trim();\r\n if ($('#' + elementID).length) {\r\n newAriaDescribedBy.push(elementID);\r\n }\r\n });\r\n\r\n if (newAriaDescribedBy.length) {\r\n $(element).attr('aria-describedby', newAriaDescribedBy.join(' '));\r\n } else {\r\n $(element).removeAttr('aria-describedby');\r\n }\r\n }\r\n\r\n function submitComponentForm(form, configuration, requestBodyData) {\r\n form = $(form);\r\n const disabled = $('form [data-disable-submit][disabled]').length > 0;\r\n\r\n if (!disabled) {\r\n $('form [data-disable-submit]').attr('disabled', 'disabled');\r\n\r\n bgl.common.pubsub.emit('formSubmit',\r\n form.attr('id') ||\r\n form.attr('action') ||\r\n 'unknown');\r\n\r\n const dataToPost =\r\n requestBodyData ||\r\n $(form).serialize() +\r\n '&' +\r\n $.param({ComponentConfiguration: configuration});\r\n\r\n $.ajax({\r\n url: $(form).attr('action'),\r\n type: $(form).attr('method'),\r\n data: dataToPost,\r\n success: function(data) {\r\n onSuccess(form, configuration, data);\r\n },\r\n error: function(error) {\r\n onError(form, configuration, error.responseText);\r\n },\r\n });\r\n }\r\n }\r\n\r\n function onSuccess(form, configuration, data) {\r\n if (data !== undefined && data !== null) {\r\n if (data.isSuccess === true) {\r\n callFormEvent($(form), 'onSuccess', configuration, data);\r\n } else {\r\n if (data.errorRedirectUrl !== undefined) {\r\n bgl.common.utilities.errorRedirect(data.errorRedirectUrl);\r\n } else {\r\n onError(form, configuration, data);\r\n }\r\n }\r\n }\r\n }\r\n\r\n function onError(form, configuration, error) {\r\n form = form || $();\r\n\r\n const $error = $(error);\r\n const $component = $('div[data-component-id=\"' + configuration.Id + '\"]');\r\n\r\n if ($error.length && $component.length) {\r\n $component.replaceWith($error);\r\n }\r\n\r\n const $invalidForm = $error.find('#' + form.attr('id'));\r\n const invalidInputs = {};\r\n\r\n $error.find('input, select').each(function(index, element) {\r\n unhighlighElement($(element));\r\n const inputName = $(element).attr('name');\r\n const message = $('[data-valmsg-for=\"' + inputName + '\"]').text();\r\n\r\n if (message !== '') {\r\n const htmlMessage = $.parseHTML(message);\r\n\r\n $('[data-valmsg-for=\"' + inputName + '\"]').html(htmlMessage);\r\n invalidInputs[inputName] = htmlMessage;\r\n }\r\n });\r\n\r\n callFormEvent($invalidForm, 'onError', configuration, error);\r\n\r\n validator = getFormValidator($invalidForm);\r\n\r\n // if jQuery validation is switched on\r\n if (validator) {\r\n validator.showErrors(invalidInputs);\r\n } else {\r\n // highlight errors if jQuery validation is switched off\r\n showErrors(invalidInputs);\r\n }\r\n\r\n scrollToTheFirstInvalidInput();\r\n }\r\n\r\n function callFormEvent(form, event, configuration, data) {\r\n const onEventName = form.data(event);\r\n const callback = eval(onEventName);\r\n\r\n if (typeof callback === 'function') {\r\n callback(configuration, data);\r\n }\r\n }\r\n\r\n function showErrors(invalidInputs) {\r\n $.each(invalidInputs, function(key) {\r\n highlightElement($('[name=\"' + key + '\"]'));\r\n });\r\n }\r\n\r\n function addRequireAtLeastOneOfGroupMethod(value, element, params) {\r\n const controlsWithValue = $(\r\n 'input[data-val-requirefromgroup-selector=\"' +\r\n params['selector'] + '\"]',\r\n ).filter(function() {\r\n const controlType = $(this).attr('type');\r\n\r\n return controlType === 'checkbox' || controlType === 'radio' ?\r\n $(this).prop('checked') === true :\r\n $(this).val() !== '';\r\n });\r\n\r\n return controlsWithValue.length >= params['number'];\r\n }\r\n\r\n function setRequireAtLeastOneOfGroupValidation() {\r\n $.validator.addMethod(\r\n 'require_from_group',\r\n addRequireAtLeastOneOfGroupMethod,\r\n '',\r\n );\r\n\r\n $.validator.unobtrusive.adapters.add(\r\n 'requirefromgroup',\r\n ['number', 'selector'],\r\n function(options) {\r\n options.rules['require_from_group'] = {\r\n number: options.params.number,\r\n selector: options.params.selector,\r\n };\r\n options.messages['require_from_group'] = options.message;\r\n },\r\n );\r\n }\r\n\r\n function addRequiredIfValidationMethod(value, element, parameters) {\r\n const id =\r\n '[data-dependent-property=\\'' + parameters['dependentproperty'] + '\\']';\r\n\r\n // get the target value (as a string,\r\n // as that's what actual value will be)\r\n let targetValue = parameters['targetvalue'];\r\n targetValue = (targetValue === null ? '' : targetValue).toString();\r\n\r\n // get the actual value of the target control\r\n // note - this probably needs to cater for more\r\n // control types, e.g. radios\r\n const control = $(id);\r\n const controlType = control.attr('type');\r\n let actualValue =\r\n controlType === 'checkbox' || controlType === 'radio' ?\r\n control.filter(':checked').val() :\r\n control.val();\r\n\r\n actualValue =\r\n actualValue !== undefined && actualValue !== null ?\r\n actualValue.toLowerCase() :\r\n actualValue;\r\n\r\n // if the condition is true, reuse the existing\r\n // required field validator functionality\r\n if (\r\n $.trim(targetValue.toLowerCase()) === $.trim(actualValue) ||\r\n ($.trim(targetValue) === '*' && $.trim(actualValue) !== '')\r\n ) {\r\n return $.validator.methods.required.call(\r\n this,\r\n value,\r\n element,\r\n parameters,\r\n );\r\n }\r\n\r\n return true;\r\n }\r\n\r\n function setRequiredIfValidation() {\r\n $.validator.addMethod('requiredif', addRequiredIfValidationMethod);\r\n\r\n $.validator.unobtrusive.adapters.add(\r\n 'requiredif',\r\n ['dependentproperty', 'targetvalue'],\r\n function(options) {\r\n options.rules['requiredif'] = {\r\n dependentproperty: options.params['dependentproperty'],\r\n targetvalue: options.params['targetvalue'],\r\n };\r\n options.messages['requiredif'] = options.message;\r\n },\r\n );\r\n }\r\n\r\n function setValidationOfDateToFormat() {\r\n $.validator.addMethod('dateformat', validateDateFormat);\r\n\r\n $.validator.unobtrusive.adapters.add(\r\n 'dateformat',\r\n ['regex', 'separator'],\r\n function(options) {\r\n options.rules['dateformat'] = {\r\n regex: options.params['regex'],\r\n separator: options.params['separator'],\r\n };\r\n options.messages['dateformat'] = options.message;\r\n },\r\n );\r\n }\r\n\r\n function validateDateFormat(value, element, parameters) {\r\n const separator = parameters['separator'];\r\n\r\n const regex = new RegExp(parameters['regex']);\r\n\r\n if (regex.test(value)) {\r\n const adata = value.split(separator);\r\n\r\n const day = parseInt(adata[0], 10);\r\n const month = parseInt(adata[1], 10) - 1;\r\n const year = parseInt(adata[2], 10);\r\n\r\n const xdata = new Date(year, month, day);\r\n\r\n if (\r\n xdata.getFullYear() === year &&\r\n xdata.getMonth() === month &&\r\n xdata.getDate() === day\r\n ) {\r\n return true;\r\n }\r\n }\r\n\r\n return false;\r\n }\r\n\r\n function initAutocompleteSearchInputs(form) {\r\n form = $(form);\r\n const autocompleteSearchInputs = form.find('[autocompletesearch]');\r\n\r\n $.each(autocompleteSearchInputs, function(index, element) {\r\n const input = $(element);\r\n\r\n $.validator.addMethod(\r\n input.attr('name'),\r\n validateAutocompleteSearchInputs,\r\n input.data('val-required'),\r\n );\r\n });\r\n }\r\n\r\n function resetValidationState(input) {\r\n unhighlighElement(input);\r\n }\r\n\r\n function validateAutocompleteSearchInputs(value, element) {\r\n const hiddenItemInputId = $(element).attr('id') + 'Id';\r\n const valueId = $('#' + hiddenItemInputId).val();\r\n\r\n return valueId.length !== 0;\r\n }\r\n\r\n function scrollToTheFirstInvalidInput() {\r\n let headerHeight;\r\n const invalidInput = $('.error, .error-messagebox').first();\r\n\r\n if (invalidInput.length) {\r\n let header;\r\n let selector;\r\n let inputTopPosition = invalidInput.offset().top;\r\n\r\n const slidePanelId = bgl.common.contentpanel.getSlidePanelId();\r\n const isInputInSlidePanel = invalidInput\r\n .closest('#' + slidePanelId)\r\n .length;\r\n\r\n if (isInputInSlidePanel) {\r\n header = $('header.panel-header');\r\n selector = $('#' + slidePanelId);\r\n\r\n const slidePanelContentTopPosition = $(\r\n '#' + bgl.common.contentpanel.getSlidePanelContentId(),\r\n ).offset().top;\r\n inputTopPosition -= slidePanelContentTopPosition;\r\n } else {\r\n header = $('header.page-header, header.page-headerv2');\r\n selector = $(window);\r\n }\r\n\r\n headerHeight = header.height() || 0;\r\n\r\n if (header.css('position') === 'fixed') {\r\n headerHeight *= -1;\r\n }\r\n\r\n selector.scrollTop(inputTopPosition + headerHeight);\r\n const invalidInputElem = invalidInput.find('input, select, textarea')[0];\r\n if (invalidInputElem !== undefined) {\r\n invalidInputElem.focus();\r\n }\r\n }\r\n }\r\n\r\n function initNumberInputField(component, maxLength) {\r\n const isZeroAvailable = component.data('val-range-min') === 0;\r\n\r\n $(component)\r\n .off('keydown')\r\n .on('keydown', function(e) {\r\n if (\r\n $.inArray(e.keyCode, [\r\n deleteKeyCode,\r\n backspaceKeyCode,\r\n tabKeyCode,\r\n escKeyCode,\r\n enterKeyCode,\r\n ]) !== -1 ||\r\n (e.keyCode === letterAInLowerKeyCode &&\r\n (e.ctrlKey === true || e.metaKey === true)) ||\r\n (e.keyCode >= endKeyCode && e.keyCode <= downArrowKeyCode)\r\n ) {\r\n return;\r\n }\r\n if (\r\n ((e.shiftKey ||\r\n e.keyCode < zeroKeyCode ||\r\n e.keyCode > nineKeyCode) &&\r\n (e.keyCode < numpadZeroKeyCode || e.keyCode > numpadNineKeyCode)) ||\r\n $(this).val().length === maxLength ||\r\n (!isZeroAvailable &&\r\n e.keyCode === numpadZeroKeyCode &&\r\n $(this).val().length === 0)\r\n ) {\r\n e.preventDefault();\r\n }\r\n });\r\n\r\n $(component)\r\n .off('keyup')\r\n .on('keyup', function() {\r\n let val = $(this).val();\r\n while (val.substring(0, 1) === '0') {\r\n if (isZeroAvailable && val.length === 1) {\r\n break;\r\n }\r\n val = val.substring(1);\r\n }\r\n $(this).val(val);\r\n });\r\n }\r\n\r\n function validatePage(buttonId) {\r\n $('#' + buttonId)\r\n .off('click')\r\n .on('click', function(e) {\r\n e.preventDefault();\r\n\r\n const components = $('[data-component-state=\\'partialerror\\']');\r\n\r\n if (components !== undefined && components.length > 0) {\r\n $.each(components, function(index, value) {\r\n highlightElement($(value));\r\n });\r\n\r\n scrollToTheFirstInvalidInput();\r\n } else {\r\n bgl.common.utilities.redirectToUrl($(this).attr('href'));\r\n }\r\n });\r\n }\r\n\r\n return {\r\n init: initFormValidator,\r\n validate: validateForm,\r\n isFormValid: isFormValid,\r\n getValidationMessages: getValidationMessages,\r\n enableMaxLength: enableMaxLength,\r\n initAutocompleteSearchInputs: initAutocompleteSearchInputs,\r\n resetValidationState: resetValidationState,\r\n submitForm: submitComponentForm,\r\n initNumberInputField: initNumberInputField,\r\n validatePage: validatePage,\r\n };\r\n})();\r\n\r\nbgl.common.utilities = (function() {\r\n let globalIdentifier = this;\r\n\r\n function invoke(funcName, funcParams) {\r\n if (funcName !== undefined && funcName !== null && funcName !== '') {\r\n const params =\r\n funcParams !== undefined && funcParams !== null ?\r\n funcParams.split(',') :\r\n [];\r\n\r\n const object = funcName.split('.');\r\n let fn = globalIdentifier;\r\n\r\n for (let i = 0, len = object.length; i < len && fn; i++) {\r\n fn = fn[object[i]];\r\n }\r\n\r\n if (typeof fn === 'function') {\r\n fn(...params);\r\n } else {\r\n console.error(funcName + ' is not a function.');\r\n }\r\n }\r\n }\r\n\r\n function setIdentifier(indentifier) {\r\n if (indentifier !== undefined && indentifier !== null) {\r\n globalIdentifier = indentifier;\r\n }\r\n }\r\n\r\n function startUnderwritingPolling() {\r\n bgl.common.pubsub.emit('PollBasket');\r\n }\r\n\r\n function getWindowLocation() {\r\n return window.location;\r\n }\r\n\r\n function getUrlHashValue() {\r\n return window.location.hash.substring(1);\r\n }\r\n\r\n function setUrlHashValue(hash) {\r\n window.location.hash = hash;\r\n }\r\n\r\n function errorRedirect(errorRedirectUrl) {\r\n errorRedirectUrl = errorRedirectUrl.replace(/\\?returnUrl=.*$/i, '');\r\n bgl.common.utilities.redirectToUrl(errorRedirectUrl);\r\n }\r\n\r\n function redirectToUrl(url) {\r\n window.location.href = url;\r\n }\r\n\r\n function refreshPage() {\r\n window.location.reload(true);\r\n }\r\n\r\n function toBase64(str) {\r\n return window.btoa(unescape(encodeURIComponent(str)));\r\n }\r\n\r\n function fromBase64(str) {\r\n return decodeURIComponent(escape(window.atob(str)));\r\n }\r\n\r\n function getUrlQueryString(parameterName) {\r\n parameterName = parameterName.replace(/[\\[]/, '\\\\[').replace(/[\\]]/, '\\\\]');\r\n const regex = new RegExp('[\\\\?&]' + parameterName + '=([^]*)');\r\n const results = regex.exec(location.search);\r\n return results === null ?\r\n '' :\r\n decodeURIComponent(results[1].replace(/\\+/g, ' '));\r\n }\r\n\r\n return {\r\n invoke: invoke,\r\n setIdentifier: setIdentifier,\r\n startUnderwritingPolling: startUnderwritingPolling,\r\n getWindowLocation: getWindowLocation,\r\n getUrlHashValue: getUrlHashValue,\r\n setUrlHashValue: setUrlHashValue,\r\n redirectToUrl: redirectToUrl,\r\n errorRedirect: errorRedirect,\r\n refreshPage: refreshPage,\r\n toBase64: toBase64,\r\n fromBase64: fromBase64,\r\n getUrlQueryString: getUrlQueryString,\r\n };\r\n})();\r\n\r\nbgl.common.cookie = (function() {\r\n function getCookie(name) {\r\n const matches = document.cookie.match(\r\n new RegExp(\r\n '(?:^|; )' +\r\n name.replace(/([\\.$?*|{}\\(\\)\\[\\]\\\\\\/\\+^])/g, '\\\\$1') +\r\n '=([^;]*)',\r\n ),\r\n );\r\n\r\n return matches ? decodeURIComponent(matches[1]) : undefined;\r\n }\r\n\r\n function setCookie(name, value, options) {\r\n options = options || {};\r\n\r\n let expires = options.expires;\r\n\r\n if (typeof expires === 'number' && expires) {\r\n const d = new Date();\r\n d.setTime(d.getTime() + expires * 1000);\r\n expires = options.expires = d;\r\n }\r\n\r\n if (expires && expires.toUTCString) {\r\n options.expires = expires.toUTCString();\r\n }\r\n\r\n value = encodeURIComponent(value);\r\n\r\n let updatedCookie = name + '=' + value;\r\n\r\n for (const propName in options) {\r\n updatedCookie += '; ' + propName;\r\n const propValue = options[propName];\r\n\r\n if (propValue !== true) {\r\n updatedCookie += '=' + propValue;\r\n }\r\n }\r\n\r\n document.cookie = updatedCookie + '; path=/';\r\n }\r\n\r\n function getUrlForCookieAsync(componentUrl) {\r\n const regex = /\\/((\\w+)|(\\w+\\/))$/gi;\r\n\r\n const url = componentUrl.replace(regex, '/UpdateCookie');\r\n\r\n return url;\r\n }\r\n\r\n function setCookieAsync(\r\n cookieKey,\r\n cookieValue,\r\n updateCookieUrl,\r\n onSuccess,\r\n onFailure,\r\n ) {\r\n $.ajax({\r\n url: updateCookieUrl,\r\n type: 'POST',\r\n contentType: 'application/json',\r\n data: JSON.stringify({cookieKey: cookieKey, cookieValue: cookieValue}),\r\n success: function(data) {\r\n if (data && data.isSuccess) {\r\n if (typeof onSuccess === 'function') {\r\n onSuccess();\r\n }\r\n }\r\n },\r\n error: function(error) {\r\n if (typeof onFailure === 'function') {\r\n onFailure();\r\n }\r\n console.log(error);\r\n },\r\n });\r\n }\r\n\r\n function deleteCookie(name) {\r\n deleteCookieByNameAndPath(name, '/');\r\n }\r\n\r\n function deleteCookieByNameAndPath(name, path) {\r\n setCookie(name, '', {expires: -1, path: path});\r\n }\r\n\r\n return {\r\n getCookie: getCookie,\r\n setCookie: setCookie,\r\n deleteCookie: deleteCookie,\r\n deleteCookieByNameAndPath: deleteCookieByNameAndPath,\r\n setCookieAsync: setCookieAsync,\r\n getUrlForCookieAsync: getUrlForCookieAsync,\r\n };\r\n})();\r\n\r\nbgl.common.carousel = (function() {\r\n let carousel; let tabs; let slides; let options;\r\n\r\n function createCarouselBlock() {\r\n carousel = options.element;\r\n slides = carousel.find('.carousel__slide');\r\n tabs = carousel.find('.carousel__navigation-tab');\r\n\r\n const ctrls = $('' +\r\n htmlEncodedBody +\r\n '
' +\r\n '' +\r\n '\r\n Please scroll down the page and add your Direct Debit details\r\n
`,\r\n );\r\n } else {\r\n bgl.components.takepayment.annual.init(componentConfig);\r\n addMicroCopy();\r\n document.getElementById('Annual-Details-Back-Button').insertAdjacentHTML('beforebegin',\r\n `\r\n Please add your credit/debit card details to continue\r\n
`,\r\n );\r\n }\r\n\r\n document.getElementsByClassName('payment-switch-link')[0].addEventListener('click',\r\n function() {\r\n submitForm();\r\n });\r\n\r\n const trustpilotWidget = document.getElementById('trustpilot-widget');\r\n if (trustpilotWidget != null) {\r\n try {\r\n window.Trustpilot.loadFromElement(trustpilotWidget);\r\n } catch {\r\n onError(null, 'Failed to load trustpilot', 'Fail to load from element', null);\r\n }\r\n }\r\n }\r\n\r\n async function submitForm() {\r\n const paymentSwitchLinkId = document.getElementsByClassName('payment-switch-link')[0]\r\n .getAttribute('id');\r\n const data = {\r\n __RequestVerificationToken: document.querySelector('input[name=\"__RequestVerificationToken\"]').value,\r\n paymentSwitchId: document.getElementsByClassName('payment-switch-link')[0]\r\n .getAttribute('data-payment-switch-id'),\r\n };\r\n const dataToPost = new URLSearchParams(data).toString();\r\n return bgl.common.fetch.formPost(componentConfig.TenantConfiguration.ApplicationPath +\r\n 'TakePaymentComponent/PaymentSwitch', {\r\n body: dataToPost,\r\n }).then(async (response) => {\r\n const responseBody = await response.json();\r\n if (!response.ok || responseBody.responseCode > 299) {\r\n onError(responseBody, responseBody, response.statusText, dataToPost);\r\n } else {\r\n const result = responseBody;\r\n bgl.common.pubsub.emit('switchPaymentType',\r\n paymentSwitchLinkId === 'monthly-switch-link');\r\n if (paymentSwitchLinkId === 'monthly-switch-link') {\r\n bgl.common.pubsub.emit('showNotification',\r\n document.getElementById('monthly-notification-message').value);\r\n window.location.reload(true);\r\n } else if (paymentSwitchLinkId === 'annual-switch-link') {\r\n bgl.common.pubsub.emit('showNotification',\r\n document.getElementById('annual-notification-message').value);\r\n window.location.reload(true);\r\n }\r\n return result;\r\n }\r\n }).catch((error) =>\r\n onError(null, error, error.statusText, dataToPost),\r\n );\r\n }\r\n\r\n function onError(responseBody, responseError, responseStatusText, dataPosted) {\r\n if (window.appInsights) {\r\n bgl.common.telemetry.logEvent(\r\n 'PaymentSummaryCondensed bgl.components.takePayment.responseBody',\r\n {\r\n status: responseStatusText,\r\n errorThrown: responseError,\r\n dataPosted: dataPosted,\r\n responseData: responseBody,\r\n },\r\n );\r\n }\r\n }\r\n\r\n function showHoustonNotification() {\r\n const isMonthlyPayment = document.getElementById('IsMonthlyPayment').value;\r\n if (isMonthlyPayment === 'True') {\r\n bgl.common.pubsub.emit(\r\n 'showNotification',\r\n `OK ##FIRSTNAME##, your new price is £##PRICE## a month with a deposit of £##DEPOSIT##. \r\n The underwriter for your policy is ##UNDERWRITER##.`,\r\n );\r\n } else {\r\n bgl.common.pubsub.emit(\r\n 'showNotification',\r\n 'OK ##FIRSTNAME##, your new price is £##PRICE##. The underwriter for your policy is ##UNDERWRITER##.',\r\n );\r\n }\r\n }\r\n\r\n function addMicroCopy() {\r\n document.getElementsByClassName('basket__content')[0].classList.add('basket__content--micro-copy');\r\n document.getElementsByClassName('button-container')[0].classList.add('button-container--micro-copy');\r\n document.getElementsByClassName('houston-container')[0].classList.add('houston-container--micro-copy');\r\n }\r\n\r\n return {\r\n init: initComponent,\r\n load: loadComponent,\r\n onError: onError,\r\n submitForm,\r\n };\r\n})();\r\n\r\nif (typeof module !== 'undefined') {\r\n module.exports = bgl.components.takepayment.paymentsummarycondensed;\r\n}\r\n// eslint-disable-next-line no-var\r\nvar bgl = window.bgl || {};\r\nbgl.components = bgl.components || {};\r\nbgl.components.takepayment = bgl.components.takepayment || {};\r\n\r\nbgl.components.takepayment.paymentsummary = (function() {\r\n let componentConfig;\r\n\r\n function loadComponent(componentConfiguration, componentUrl, containerElementId) {\r\n bgl.common.loader.load(componentConfiguration,\r\n componentUrl,\r\n containerElementId,\r\n function() {\r\n initComponent();\r\n });\r\n }\r\n\r\n function initComponent(componentConfiguration) {\r\n const HasEdittedFieldsOnAdditionalDetails = 'HasEdittedFieldsOnAdditionalDetails';\r\n\r\n bgl.common.validator.enableMaxLength();\r\n\r\n componentConfig = componentConfiguration;\r\n\r\n bgl.common.validator.init($('#PaymentSummaryForm'), {\r\n onfocusout: function(element) {\r\n $(element).valid();\r\n if ($('.form-row__validation-text').hasClass('field-validation-error')) {\r\n $('#Email').focus();\r\n }\r\n },\r\n hasSubmit: false,\r\n });\r\n\r\n if (sessionStorage.getItem(HasEdittedFieldsOnAdditionalDetails) === 'true') {\r\n showHoustonNotification();\r\n sessionStorage.removeItem(HasEdittedFieldsOnAdditionalDetails);\r\n }\r\n\r\n bgl.components.takepayment.documentloader.init(componentConfig);\r\n\r\n $('#PaymentSummaryForm').submit(\r\n function(e) {\r\n e.preventDefault();\r\n\r\n if (!$(this).valid()) {\r\n return;\r\n }\r\n if (typeof bgl.common.pubsub !== 'undefined') {\r\n bgl.common.pubsub.emit('fakeFormSubmit', $(this).attr('id') || $(this).attr('action') || 'unknown');\r\n }\r\n\r\n $.ajax({\r\n url: $(this).attr('action'),\r\n type: $(this).attr('method'),\r\n data: $(this).serialize(),\r\n success: function(data) {\r\n if (data.isSuccess) {\r\n bgl.common.utilities.redirectToUrl(data.redirectUrl);\r\n } else {\r\n bgl.common.utilities.redirectToUrl(data.errorRedirectUrl);\r\n }\r\n },\r\n });\r\n });\r\n\r\n $('.payment-switch-link').on('click',\r\n function() {\r\n const paymentSwitchLinkId = $(this).attr('id');\r\n bgl.common.focusHolder.setFocusedElement($(this).data('focusid'));\r\n const dataToPost = {\r\n __RequestVerificationToken: $('input[name=\"__RequestVerificationToken\"]').val(),\r\n paymentSwitchId: $(this).attr('data-payment-switch-id'),\r\n };\r\n\r\n $.ajax({\r\n url: componentConfig.TenantConfiguration.ApplicationPath + 'TakePaymentComponent/PaymentSwitch',\r\n type: 'POST',\r\n cache: false,\r\n dataType: 'json',\r\n data: dataToPost,\r\n success: function(result) {\r\n if (result.isSuccess === true) {\r\n bgl.common.pubsub.emit('switchPaymentType', paymentSwitchLinkId === 'monthly-switch-link');\r\n if (paymentSwitchLinkId === 'monthly-switch-link') {\r\n $('#monthly-section').removeClass('hide');\r\n $('#annual-section').addClass('hide');\r\n $('#IsMonthlyPayment').val('true');\r\n bgl.common.pubsub.emit('showNotification', $('#monthly-notification-message').val());\r\n } else if (paymentSwitchLinkId === 'annual-switch-link') {\r\n $('#monthly-section').addClass('hide');\r\n $('#annual-section').removeClass('hide');\r\n $('#IsMonthlyPayment').val('false');\r\n bgl.common.pubsub.emit('showNotification', $('#annual-notification-message').val());\r\n }\r\n } else {\r\n window.location.href = result.errorRedirectUrl;\r\n return;\r\n }\r\n },\r\n });\r\n });\r\n }\r\n\r\n function showHoustonNotification() {\r\n const isMonthlyPayment = document.getElementById('IsMonthlyPayment').value;\r\n if (isMonthlyPayment === 'True') {\r\n bgl.common.pubsub.emit(\r\n 'showNotification',\r\n `OK ##FIRSTNAME##, your new price is £##PRICE## a month with a deposit of £##DEPOSIT##. \r\n The underwriter for your policy is ##UNDERWRITER##.`,\r\n );\r\n } else {\r\n bgl.common.pubsub.emit(\r\n 'showNotification',\r\n 'OK ##FIRSTNAME##, your new price is £##PRICE##. The underwriter for your policy is ##UNDERWRITER##.',\r\n );\r\n }\r\n }\r\n\r\n return {\r\n init: initComponent,\r\n load: loadComponent,\r\n };\r\n})();\r\n\r\nif (typeof module !== 'undefined') {\r\n module.exports = bgl.components.takepayment.paymentsummary;\r\n}\r\n// eslint-disable-next-line no-var\r\nvar bgl = window.bgl || {};\r\nbgl.components = bgl.components || {};\r\nbgl.components.takepayment = bgl.components.takepayment || {};\r\n\r\nbgl.components.takepayment.paymentsuccessful = (function() {\r\n let componentConfig; let requestVerificationToken;\r\n\r\n function initComponent(componentConfiguration) {\r\n componentConfig = componentConfiguration;\r\n requestVerificationToken = document.querySelector('input[name=\"__RequestVerificationToken\"]').value;\r\n const policyId = sessionStorage.getItem('PaymentProcessedPolicyId');\r\n const authorization = sessionStorage.getItem('Authorization');\r\n const redirectUrl = sessionStorage.getItem('PaymentProcessedRedirectUrl');\r\n\r\n $('body').html(bgl.common.spinner.getSpinnerBody('Creating your policy',\r\n 'Please do not hit the back button or refresh the page'));\r\n\r\n emitGTMUpdate(policyId);\r\n waitForPolicyToBeCreated(policyId, redirectUrl, authorization);\r\n }\r\n\r\n function emitGTMUpdate(policyId) {\r\n bgl.common.pubsub.emit('UpdateGTMPolicyId', policyId);\r\n }\r\n\r\n function waitForPolicyToBeCreated(policyId, redirectUrl, authorization) {\r\n const interval = 500;\r\n const timeoutDuration = 30000;\r\n const pollUrl = 'TakePaymentComponent/IsPolicyCreated';\r\n const tickCount = new Date().getTime();\r\n const timeout = tickCount + timeoutDuration;\r\n const applicationPath = componentConfig.TenantConfiguration.ApplicationPath;\r\n poll(timeout, interval, pollUrl, applicationPath, policyId, redirectUrl, authorization);\r\n }\r\n\r\n function poll(timeout, interval, pollUrl, applicationPath, policyId, redirectUrl, authorization) {\r\n const dataToPost = {\r\n __RequestVerificationToken: requestVerificationToken,\r\n PolicyId: policyId,\r\n BrandCode: componentConfig.BrandCode,\r\n Authorization: authorization,\r\n };\r\n const manageSessionData = {\r\n RequestVerificationToken: requestVerificationToken,\r\n BrandCode: componentConfig.BrandCode,\r\n PolicyId: policyId,\r\n ApplicationPath: applicationPath,\r\n Authorization: authorization,\r\n PolicyCreated: true,\r\n };\r\n\r\n $.ajax({\r\n url: applicationPath + pollUrl,\r\n type: 'Post',\r\n cache: false,\r\n data: dataToPost,\r\n dataType: 'json',\r\n success: (response) => {\r\n if (response.Status === 'Processing') {\r\n if (timeout >= new Date().getTime()) {\r\n setTimeout(() => {\r\n poll(timeout, interval, pollUrl, applicationPath, policyId, redirectUrl, authorization);\r\n },\r\n interval);\r\n } else {\r\n manageSessionData.PolicyCreated = false;\r\n emitManageSessionStorageOnPaymentSuccessful(\r\n manageSessionData,\r\n componentConfig.PolicyCreationPendingUrl,\r\n );\r\n }\r\n } else if (response.Status === 'Created') {\r\n emitManageSessionStorageOnPaymentSuccessful(manageSessionData, redirectUrl);\r\n } else {\r\n emitManageSessionStorageOnPaymentSuccessful(manageSessionData, response.ErrorRedirectUrl);\r\n }\r\n },\r\n });\r\n }\r\n\r\n function emitManageSessionStorageOnPaymentSuccessful(manageSessionData, redirectUrl) {\r\n manageSessionData.RedirectUrl = redirectUrl;\r\n bgl.common.pubsub.emit('ManageSessionStorageOnPaymentSuccessful', manageSessionData);\r\n }\r\n\r\n return {\r\n init: initComponent,\r\n };\r\n})();\r\n\r\nif (typeof module !== 'undefined') {\r\n module.exports = bgl.components.takepayment.paymentsuccessful;\r\n}\r\n// eslint-disable-next-line no-var\r\nvar bgl = window.bgl || {};\r\nbgl.components = bgl.components || {};\r\nbgl.components.takepayment = bgl.components.takepayment || {};\r\n\r\nbgl.components.takepayment.paymentmethods = (function() {\r\n let configuration;\r\n let requestVerificationToken;\r\n let newPaymentMethodType;\r\n\r\n function loadComponent(componentConfiguration, componentUrl, containerElementId) {\r\n bgl.common.loader.load(componentConfiguration, componentUrl, containerElementId, function() {\r\n initComponent(componentConfiguration);\r\n });\r\n }\r\n\r\n function initComponent(componentConfiguration) {\r\n requestVerificationToken = $('input[name=\"__RequestVerificationToken\"]').val();\r\n configuration = componentConfiguration;\r\n onRadioButtonChange();\r\n onUpdatingPaymentMethod();\r\n onClickAddNewPaymentMethod();\r\n }\r\n\r\n function onUpdatingPaymentMethod() {\r\n $('#updatePaymentMethod').on('click', function() {\r\n const linkId = this.id;\r\n const linkButton = $('#' + linkId);\r\n const actionUrl = linkButton.data('action-url');\r\n\r\n commitAndUpdatePaymentMethod(actionUrl);\r\n });\r\n }\r\n\r\n function commitAndUpdatePaymentMethod(actionUrl) {\r\n const dataToPost = {\r\n __RequestVerificationToken: requestVerificationToken,\r\n nominatedAccountId: $('[data-type=payment-methods]:checked').val(),\r\n };\r\n newPaymentMethodType = $('[data-type=payment-methods]:checked').attr('data-payment-method-type');\r\n\r\n $.ajax({\r\n url: actionUrl,\r\n type: 'POST',\r\n cache: false,\r\n dataType: 'json',\r\n data: dataToPost,\r\n success: function(result) {\r\n if (!result.isSuccess) {\r\n bgl.common.utilities.redirectToUrl(result.errorRedirectUrl);\r\n } else {\r\n logPaymentMethodChange();\r\n if (result.viewOptions === 'PaymentStatus') {\r\n window.location.href = configuration.TenantConfiguration.ApplicationPath +\r\n configuration.PaymentStatusUrl;\r\n } else if (result.viewOptions === 'PaymentMethodAllDone') {\r\n window.location.href = configuration.TenantConfiguration.ApplicationPath +\r\n configuration.PaymentMethodAllDoneUrl;\r\n }\r\n }\r\n },\r\n });\r\n }\r\n\r\n function logPaymentMethodChange() {\r\n sessionStorage.setItem('PaymentUpdated', newPaymentMethodType === 'Bank Account' ? 'Direct Debit': 'Card');\r\n }\r\n\r\n function onClickAddNewPaymentMethod() {\r\n $('#addNewPaymentMethod').on('click',\r\n function() {\r\n $(document.body).removeClass('slide-panel-open');\r\n });\r\n }\r\n\r\n function onRadioButtonChange() {\r\n $('[data-type=payment-methods]').each(function(index, value) {\r\n $(value).off('change').on('change',\r\n function() {\r\n if ($('#updatePaymentMethod').hasClass('hide')) {\r\n $('#updatePaymentMethod').removeClass('hide');\r\n }\r\n });\r\n });\r\n };\r\n\r\n function onError() {\r\n }\r\n\r\n return {\r\n init: initComponent,\r\n load: loadComponent,\r\n onError: onError,\r\n newPaymentMethodType: newPaymentMethodType,\r\n };\r\n})();\r\n\r\nif (typeof module !== 'undefined') {\r\n module.exports = bgl.components.takepayment.paymentmethods;\r\n}\r\n// eslint-disable-next-line no-var\r\nvar bgl = window.bgl || {};\r\nbgl.components = bgl.components || {};\r\nbgl.components.takepayment = bgl.components.takepayment || {};\r\n\r\nbgl.components.takepayment.paymentemail = (function() {\r\n let configuration;\r\n\r\n function initComponent(componentConfiguration) {\r\n configuration = componentConfiguration;\r\n const form = $('#PaymentEmailForm');\r\n\r\n bgl.common.validator.init(form);\r\n bgl.common.datastore.init(form);\r\n\r\n form.off('submit').on('submit',\r\n function(e) {\r\n e.preventDefault();\r\n\r\n if (!bgl.common.validator.isFormValid(form)) {\r\n return;\r\n }\r\n\r\n if (!bgl.common.datastore.isDataChanged(form)) {\r\n onSuccess(configuration);\r\n return;\r\n }\r\n\r\n bgl.common.validator.submitForm(form, configuration);\r\n });\r\n }\r\n\r\n function onSuccess(componentConfiguration, data) {\r\n bgl.common.utilities.redirectToUrl(componentConfiguration.NextStepUrl);\r\n }\r\n\r\n function onError(componentConfiguration) {\r\n initComponent(componentConfiguration);\r\n }\r\n\r\n return {\r\n init: initComponent,\r\n onSuccess: onSuccess,\r\n onError: onError,\r\n };\r\n})();\r\n\r\nif (typeof module !== 'undefined') {\r\n module.exports = bgl.components.takepayment.paymentsummary;\r\n}\r\n// eslint-disable-next-line no-var\r\nvar bgl = window.bgl || {};\r\nbgl.components = bgl.components || {};\r\nbgl.components.takepayment = bgl.components.takepayment || {};\r\n\r\nbgl.components.takepayment.paymentdetailsdisplay = (function() {\r\n const slidePanelContainer = 'SlidePanelContent';\r\n function loadComponent(componentConfiguration, componentUrl, containerElementId) {\r\n bgl.common.loader.load(componentConfiguration,\r\n componentUrl,\r\n containerElementId,\r\n function() {\r\n initComponent(componentConfiguration);\r\n });\r\n }\r\n\r\n function initComponent(componentConfiguration) {\r\n const configuration = componentConfiguration;\r\n\r\n $('#ChangePaymentMethod').on('click', function() {\r\n const linkId = this.id;\r\n const linkButton = $('#' + linkId);\r\n const actionUrl = linkButton.data('action-url');\r\n const containerSelector = slidePanelContainer;\r\n bgl.common.loader.load(configuration,\r\n actionUrl,\r\n containerSelector,\r\n function() {\r\n bgl.components.takepayment.paymentmethods.init(componentConfiguration);\r\n });\r\n });\r\n }\r\n\r\n return {\r\n init: initComponent,\r\n load: loadComponent,\r\n };\r\n})();\r\n\r\nif (typeof module !== 'undefined') {\r\n module.exports = bgl.components.takepayment.paymentdetailsdisplay;\r\n}\r\n// eslint-disable-next-line no-var\r\nvar bgl = window.bgl || {};\r\nbgl.components = bgl.components || {};\r\nbgl.components.takepayment = bgl.components.takepayment || {};\r\n\r\nbgl.components.takepayment.paymentdeclined = (function() {\r\n function loadComponent(componentConfiguration, componentUrl, containerElementId) {\r\n bgl.common.loader.load(componentConfiguration,\r\n componentUrl,\r\n containerElementId,\r\n function() {\r\n initComponent();\r\n });\r\n }\r\n\r\n function initComponent() {\r\n clearSession();\r\n }\r\n\r\n function clearSession() {\r\n clearAnnualSessionData();\r\n clearMonthlyDepositSessionData();\r\n clearMonthlyInstalmentSessionData();\r\n clearOneOffPaymentSessionData();\r\n amendSinglePagePaymentSessionData();\r\n }\r\n\r\n function clearAnnualSessionData() {\r\n sessionStorage.removeItem('AnnualSelectedPersonIdText');\r\n sessionStorage.removeItem('AnnualCardCaptureUri');\r\n sessionStorage.removeItem('AnnualSecureSessionId');\r\n sessionStorage.removeItem('AnnualSelectedPersonIdVal');\r\n }\r\n\r\n function clearMonthlyDepositSessionData() {\r\n sessionStorage.removeItem('MonthlyDepositSelectedPersonIdText');\r\n sessionStorage.removeItem('MonthlyDepositCardCaptureUri');\r\n sessionStorage.removeItem('MonthlyDepositSecureSessionId');\r\n sessionStorage.removeItem('MonthlyDepositSelectedPersonIdVal');\r\n }\r\n\r\n function clearMonthlyInstalmentSessionData() {\r\n sessionStorage.removeItem('MonthlyInstalmentCardSelectedPersonIdText');\r\n sessionStorage.removeItem('MonthlyInstalmentCardCaptureUri');\r\n sessionStorage.removeItem('MonthlyInstalmentSecureSessionId');\r\n sessionStorage.removeItem('MonthlyInstalmentCardSelectedPersonIdVal');\r\n }\r\n\r\n function clearOneOffPaymentSessionData() {\r\n sessionStorage.removeItem('OneOffPaymentSelectedPersonIdText');\r\n sessionStorage.removeItem('OneOffPaymentCardCaptureUri');\r\n sessionStorage.removeItem('OneOffPaymentSecureSessionId');\r\n sessionStorage.removeItem('OneOffPaymentSelectedPersonIdVal');\r\n }\r\n\r\n function amendSinglePagePaymentSessionData() {\r\n const isMonthlyPayment = sessionStorage.getItem('IsMonthlyPayment');\r\n\r\n if (isMonthlyPayment) {\r\n sessionStorage.removeItem('TakePaymentSinglePagePaymentCompletedExpandingPanelStep');\r\n }\r\n\r\n if (sessionStorage.getItem('CardDetailsAlreadyEnteredMonthly')) {\r\n sessionStorage.removeItem('CardDetailsAlreadyEnteredMonthly');\r\n }\r\n\r\n if (sessionStorage.getItem('CardDetailsAlreadyEnteredAnnual')) {\r\n sessionStorage.removeItem('CardDetailsAlreadyEnteredAnnual');\r\n }\r\n }\r\n\r\n return {\r\n init: initComponent,\r\n load: loadComponent,\r\n };\r\n})();\r\n\r\nif (typeof module !== 'undefined') {\r\n module.exports = bgl.components.takepayment.paymentdeclined;\r\n}\r\n// eslint-disable-next-line no-var\r\nvar bgl = window.bgl || {};\r\nbgl.components = bgl.components || {};\r\nbgl.components.takepayment = bgl.components.takepayment || {};\r\n\r\nbgl.components.takepayment.oneoffpaymentsummary = (function() {\r\n let componentConfig;\r\n let requestVerificationToken;\r\n\r\n function loadComponent(componentConfiguration, componentUrl, containerElementId) {\r\n componentConfiguration.CardSessionData = getSecureSessionData();\r\n componentConfig = componentConfiguration;\r\n bgl.common.loader.load(componentConfiguration,\r\n componentUrl,\r\n containerElementId,\r\n function() {\r\n initComponent(componentConfiguration);\r\n });\r\n }\r\n\r\n function initComponent(componentConfiguration) {\r\n bgl.components.takepayment.cancellations.init(componentConfiguration);\r\n\r\n subscribeToEvents();\r\n }\r\n\r\n function subscribeToEvents() {\r\n const payNowButton = $('#One-Off-Pay-Now-Button');\r\n const cancellationConfirmationCheckbox = $('#cancellation-confirmation-checkbox');\r\n\r\n payNowButton.on('click',\r\n function() {\r\n commitOneOffPayment();\r\n });\r\n\r\n cancellationConfirmationCheckbox.on('click',\r\n function() {\r\n const isChecked = cancellationConfirmationCheckbox.is(':checked');\r\n\r\n if (isChecked) {\r\n payNowButton.removeAttr('disabled');\r\n } else {\r\n payNowButton.attr('disabled', 'disabled');\r\n }\r\n });\r\n }\r\n\r\n function getSecureSessionData() {\r\n return {\r\n 'Name': sessionStorage.getItem('OneOffPaymentSelectedPersonIdText'),\r\n 'CardCaptureUri': sessionStorage.getItem('OneOffPaymentCardCaptureUri'),\r\n 'SecureSessionId': sessionStorage.getItem('OneOffPaymentSecureSessionId'),\r\n };\r\n }\r\n\r\n function commitOneOffPayment() {\r\n requestVerificationToken = $('input[name=\"__RequestVerificationToken\"]').val();\r\n\r\n const dataToPost = {\r\n __RequestVerificationToken: requestVerificationToken,\r\n commitData: {\r\n ComponentConfiguration: componentConfig,\r\n CommitCardData: {\r\n SecureSessionId: sessionStorage.getItem('OneOffPaymentSecureSessionId'),\r\n SelectedPersonIdVal: sessionStorage.getItem('OneOffPaymentSelectedPersonIdVal'),\r\n SelectedPersonIdText: sessionStorage.getItem('OneOffPaymentSelectedPersonIdText'),\r\n },\r\n },\r\n };\r\n\r\n $('body').html(bgl.common.spinner.getSpinnerBody('Processing your payment!',\r\n 'Please do not hit the back button or refresh the page'));\r\n\r\n const urlPrefix = componentConfig.TenantConfiguration.ApplicationPath !== null ?\r\n componentConfig.TenantConfiguration.ApplicationPath :\r\n '/';\r\n\r\n $.ajax({\r\n url: urlPrefix + 'TakePaymentComponent/CommitOneOffPayment',\r\n type: 'POST',\r\n cache: false,\r\n dataType: 'json',\r\n data: dataToPost,\r\n success: function(result) {\r\n if (result.isSuccess === false) {\r\n bgl.common.utilities.redirectToUrl(result.errorRedirectUrl);\r\n return;\r\n }\r\n bgl.common.utilities.redirectToUrl(result.RedirectUrl);\r\n },\r\n });\r\n }\r\n\r\n return {\r\n init: initComponent,\r\n load: loadComponent,\r\n };\r\n})();\r\n// eslint-disable-next-line no-var\r\nvar bgl = window.bgl || {};\r\nbgl.components = bgl.components || {};\r\nbgl.components.takepayment = bgl.components.takepayment || {};\r\n\r\nbgl.components.takepayment.oneoffpaymentalldone = (function() {\r\n function initComponent() {\r\n clearOneOffPaymentSessionData();\r\n updateSessionDataForCancellationTracking();\r\n bgl.common.pubsub.emit('PaymentComplete');\r\n bgl.components.takepayment.cancellations.init();\r\n }\r\n\r\n function clearOneOffPaymentSessionData() {\r\n sessionStorage.removeItem('OneOffPaymentSelectedPersonIdText');\r\n sessionStorage.removeItem('OneOffPaymentCardCaptureUri');\r\n sessionStorage.removeItem('OneOffPaymentSecureSessionId');\r\n sessionStorage.removeItem('OneOffPaymentSelectedPersonIdVal');\r\n sessionStorage.removeItem('OneOffPaymentSelectedPersonId');\r\n }\r\n\r\n function updateSessionDataForCancellationTracking() {\r\n sessionStorage.setItem('TagManager.CancellationReason', sessionStorage.getItem('Cancellation.Reason'));\r\n sessionStorage.removeItem('Cancellation.Reason');\r\n sessionStorage.setItem('TagManager.CancellationDate', sessionStorage.getItem('Cancellation.Date'));\r\n sessionStorage.removeItem('Cancellation.Date');\r\n }\r\n\r\n return {\r\n init: initComponent,\r\n };\r\n})();\r\n// eslint-disable-next-line no-var\r\nvar bgl = window.bgl || {};\r\nbgl.components = bgl.components || {};\r\nbgl.components.takepayment = bgl.components.takepayment || {};\r\n\r\nbgl.components.takepayment.oneoffpayment = (function() {\r\n let componentConfiguration;\r\n let hideElementsWhen3DSecureIsDisplayedTimeout;\r\n\r\n function loadComponent(componentConfiguration, componentUrl, containerElementId, callback) {\r\n componentConfiguration.CardSessionData = getSecureSessionData();\r\n\r\n bgl.common.loader.load(componentConfiguration,\r\n componentUrl,\r\n containerElementId,\r\n function() {\r\n initComponent(componentConfiguration);\r\n\r\n if (typeof callback === 'function') {\r\n callback();\r\n }\r\n });\r\n }\r\n\r\n function initComponent(configuration) {\r\n componentConfiguration = configuration;\r\n\r\n bgl.common.datastore.setupReadAndWrite();\r\n\r\n loadIframe();\r\n\r\n setVisibilityOfCardholderNameOther();\r\n\r\n bgl.components.takepayment.cancellations.init(componentConfiguration);\r\n\r\n bgl.common.validator.enableMaxLength();\r\n\r\n $('#OneOffPaymentForm').off('submit').on('submit',\r\n function(e) {\r\n e.preventDefault();\r\n });\r\n\r\n bgl.common.validator.init($('#OneOffPaymentForm'),\r\n {\r\n onkeyup: function(element) {\r\n validateElementAndToggleIframe(element);\r\n },\r\n hasSubmit: false,\r\n });\r\n\r\n $('#Card-Capture-Iframe').on('load', function() {\r\n hideElementsWhen3DSecureIsDisplayed();\r\n });\r\n\r\n $('#PersonListData_SelectedPersonId').change(\r\n function() {\r\n if ($('#PersonListData_SelectedPersonId').find(':selected').text() === 'Other') {\r\n $('#CardholderNameRow').removeClass('hide');\r\n $('#Card-Capture-Iframe').addClass('hide');\r\n sessionStorage.setItem('OneOffPaymentSelectedPersonIdText', '');\r\n $('#CardholderName').val('');\r\n $('#CardholderName').focus();\r\n } else {\r\n $('#CardholderNameRow').addClass('hide');\r\n $('#Card-Capture-Iframe').removeClass('hide');\r\n }\r\n\r\n initCardCapture();\r\n });\r\n\r\n if ($('#PersonListData_SelectedPersonId').find(':selected').text() === 'Other') {\r\n validateElementAndToggleIframe($('#OneOffPaymentForm'));\r\n }\r\n }\r\n\r\n function initCardCapture() {\r\n sessionStorage.removeItem('OneOffPaymentCardCaptureUri');\r\n sessionStorage.removeItem('OneOffPaymentSecureSessionId');\r\n sessionStorage.removeItem('OneOffPaymentThreeDSecureUri');\r\n\r\n if (hideElementsWhen3DSecureIsDisplayedTimeout) {\r\n clearTimeout(hideElementsWhen3DSecureIsDisplayedTimeout);\r\n }\r\n\r\n bgl.components.takepayment.cardcaptureiframe.clearIframe();\r\n\r\n componentConfiguration.CardSessionData = {'SelectedPersonId': $('#PersonListData_SelectedPersonId').val()};\r\n\r\n const dataToPost = {\r\n __RequestVerificationToken: $('input[name=\\'__RequestVerificationToken\\']').val(),\r\n configuration: componentConfiguration,\r\n };\r\n\r\n $.ajax({\r\n url: componentConfiguration.TenantConfiguration.ApplicationPath +\r\n 'TakePaymentComponent/InitialiseOneOffPaymentCardCapture',\r\n type: 'POST',\r\n data: dataToPost,\r\n success: function(data) {\r\n sessionStorage.setItem('OneOffPaymentCardCaptureUri', data.cardCaptureUri);\r\n sessionStorage.setItem('OneOffPaymentSecureSessionId', data.secureSessionId);\r\n sessionStorage.setItem('OneOffPaymentThreeDSecureUri', data.threeDSecureUri);\r\n\r\n loadIframe();\r\n },\r\n });\r\n }\r\n\r\n function loadIframe() {\r\n const cardSessionData = getSecureSessionData();\r\n bgl.components.takepayment.cardcaptureiframe.loadIframe(\r\n 'Card-Capture-Iframe',\r\n cardSessionData.CardCaptureUri,\r\n cardSessionData.SecureSessionId,\r\n cardSessionData.ThreeDSecureUri);\r\n }\r\n\r\n function validateElementAndToggleIframe(element) {\r\n const valid = $(element).valid();\r\n if (valid === true) {\r\n $('#Card-Capture-Iframe').removeClass('hide');\r\n } else {\r\n $('#Card-Capture-Iframe').addClass('hide');\r\n }\r\n }\r\n\r\n function getSecureSessionData() {\r\n return {\r\n 'Name': sessionStorage.getItem('OneOffPaymentSelectedPersonIdText'),\r\n 'CardCaptureUri': sessionStorage.getItem('OneOffPaymentCardCaptureUri'),\r\n 'SecureSessionId': sessionStorage.getItem('OneOffPaymentSecureSessionId'),\r\n 'SelectedPersonId': sessionStorage.getItem('OneOffPaymentSelectedPersonIdVal'),\r\n 'ThreeDSecureUri': sessionStorage.getItem('OneOffPaymentThreeDSecureUri'),\r\n };\r\n }\r\n\r\n function setVisibilityOfCardholderNameOther() {\r\n if ($('#PersonListData_SelectedPersonId').find(':selected').text() === 'Other') {\r\n $('#CardholderNameRow').removeClass('hide');\r\n $('#CardholderName').focus();\r\n }\r\n }\r\n\r\n function hideElementsWhen3DSecureIsDisplayed() {\r\n if ($('#Card-Capture-Iframe').contents().find('#continue').length === 0) {\r\n $('#OneOffPaymentCardholderNameFormRow').hide();\r\n $('#CardholderNameRow').hide();\r\n scrollToCardPayment();\r\n return;\r\n }\r\n hideElementsWhen3DSecureIsDisplayedTimeout = setTimeout(function() {\r\n hideElementsWhen3DSecureIsDisplayed();\r\n }, 1000);\r\n }\r\n\r\n function scrollToCardPayment() {\r\n const requiredField = $('.card-payment');\r\n $('html,body').animate({scrollTop: requiredField.offset().top}, 0);\r\n }\r\n\r\n return {\r\n init: initComponent,\r\n load: loadComponent,\r\n };\r\n})();\r\n// eslint-disable-next-line no-var\r\nvar bgl = window.bgl || {};\r\nbgl.components = bgl.components || {};\r\nbgl.components.takepayment = bgl.components.takepayment || {};\r\n\r\nbgl.components.takepayment.mtatakepayment = (function() {\r\n let configuration;\r\n let takePaymentForm;\r\n let additionalDetailsForm;\r\n let monthDropdown;\r\n let yearDropdown;\r\n let fullYearMonthOptions;\r\n let currentYearMonthOptions;\r\n\r\n function initComponent(componentConfiguration) {\r\n configuration = componentConfiguration;\r\n\r\n takePaymentForm = document.querySelector(\r\n `[data-component-id='${configuration.Id}'] form#${configuration.Id}_mta-take-payment`,\r\n );\r\n additionalDetailsForm = document.querySelector(\r\n `[data-component-id='${configuration.Id}'] form#${configuration.Id}_mta-additional-details`,\r\n );\r\n\r\n if (takePaymentForm != null) {\r\n bgl.common.validator.init(takePaymentForm);\r\n } else {\r\n bgl.common.validator.init(additionalDetailsForm);\r\n\r\n const currentMonth = document.getElementById('CurrentMonth').value - 0;\r\n\r\n monthDropdown = document.getElementById('Purchased-Month');\r\n yearDropdown = document.getElementById('Purchased-Year');\r\n fullYearMonthOptions = Array.from(monthDropdown.options);\r\n currentYearMonthOptions = fullYearMonthOptions.slice(0, currentMonth + 1);\r\n }\r\n\r\n subscribeToEvents();\r\n }\r\n\r\n function subscribeToEvents() {\r\n if (takePaymentForm != null) {\r\n takePaymentForm.addEventListener('submit',\r\n (event) => {\r\n event.preventDefault();\r\n agreementCheckboxTicked();\r\n });\r\n } else {\r\n const monthDropdownHtml = monthDropdown.innerHTML;\r\n const regField = document.getElementById('registration-number');\r\n\r\n additionalDetailsForm.addEventListener('submit',\r\n (event) => {\r\n event.preventDefault();\r\n\r\n if (regField != null) {\r\n regField.value = regField.value.replace(/\\s+/gi, '');\r\n }\r\n\r\n if (bgl.common.validator.isFormValid(event.target)) {\r\n bgl.common.validator.submitForm(event.target, configuration);\r\n }\r\n });\r\n\r\n yearDropdown.addEventListener('change', () => {\r\n const months = monthDropdown;\r\n const selectedMonthValue = months.value;\r\n const currentYear = yearDropdown.options[1].value;\r\n\r\n switch (yearDropdown.value) {\r\n case currentYear:\r\n months.innerHTML = '';\r\n currentYearMonthOptions.forEach((option) => {\r\n months.innerHTML += option.outerHTML;\r\n });\r\n break;\r\n default:\r\n months.innerHTML = monthDropdownHtml;\r\n break;\r\n };\r\n\r\n months.value = selectedMonthValue;\r\n\r\n if (months.value == '') {\r\n monthDropdown[0]['selected'] = true;\r\n }\r\n\r\n if (regField != null) {\r\n document.getElementById('registration-number').addEventListener('input', (event) => {\r\n const start = event.target.selectionStart;\r\n const end = event.target.selectionEnd;\r\n\r\n event.target.value = event.target.value.toUpperCase();\r\n\r\n event.target.setSelectionRange(start, end);\r\n });\r\n }\r\n });\r\n }\r\n }\r\n\r\n function onSuccess(configuration, data) {\r\n if (data.redirectUrl) {\r\n bgl.common.utilities.redirectToUrl(data.redirectUrl);\r\n } else {\r\n bgl.common.utilities.redirectToUrl(configuration.PaymentAllDoneUrl);\r\n }\r\n }\r\n\r\n function onError(configuration) {\r\n bgl.common.utilities.redirectToUrl(configuration.PaymentDeclinedUrl);\r\n }\r\n\r\n function onAdditionalDetailsSuccess() {\r\n const options = {\r\n hideNotification: true,\r\n };\r\n bgl.common.pubsub.emit('PollBasket', options);\r\n }\r\n\r\n function onAdditionalDetailsError() {\r\n initComponent(configuration);\r\n }\r\n\r\n function agreementCheckboxTicked() {\r\n const agreementCheckbox = document.getElementById('agreement-checkbox');\r\n if (!agreementCheckbox['checked']) {\r\n document.getElementById('agreement-container').classList.add('error');\r\n agreementCheckbox.focus({preventScroll: true});\r\n agreementCheckbox.scrollIntoView({behavior: 'smooth', block: 'start'});\r\n } else {\r\n bgl.common.validator.submitForm(event.target, configuration);\r\n }\r\n };\r\n\r\n return {\r\n init: initComponent,\r\n onSuccess: onSuccess,\r\n onError: onError,\r\n onAdditionalDetailsSuccess: onAdditionalDetailsSuccess,\r\n onAdditionalDetailsError: onAdditionalDetailsError,\r\n };\r\n})();\r\n// eslint-disable-next-line no-var\r\nvar bgl = window.bgl || {};\r\nbgl.components = bgl.components || {};\r\nbgl.components.takepayment = bgl.components.takepayment || {};\r\n\r\nbgl.components.takepayment.mtaquote = (function() {\r\n function initComponent() {\r\n $('#toggle-payment-breakdown-table').on('click', function(event) {\r\n event.preventDefault();\r\n if ($('[data-payment-breakdown-table]').hasClass('hide')) {\r\n $('[data-payment-breakdown-table]').attr('class', 'flex');\r\n $(this).text('Hide new monthly payment plan');\r\n } else {\r\n $('[data-payment-breakdown-table]').attr('class', 'hide');\r\n $(this).text('View new monthly payment plan');\r\n }\r\n });\r\n }\r\n\r\n return {\r\n init: initComponent,\r\n };\r\n})();\r\n// eslint-disable-next-line no-var\r\nvar bgl = window.bgl || {};\r\nbgl.components = bgl.components || {};\r\nbgl.components.takepayment = bgl.components.takepayment || {};\r\n\r\nbgl.components.takepayment.monthlyinstalmentsummary = (function() {\r\n function loadComponent(componentConfiguration, componentUrl, containerElementId) {\r\n componentConfiguration.CardSessionData = getSecureSessionData();\r\n componentConfiguration.CreditInformationUrl = sessionStorage.getItem('credit-information');\r\n bgl.common.loader.load(componentConfiguration,\r\n componentUrl,\r\n containerElementId,\r\n function() {\r\n initComponent();\r\n });\r\n }\r\n\r\n function initComponent() {\r\n bgl.common.datastore.setupReadAndWrite();\r\n\r\n $(`#importantInfo-payments-instalment-summary,\r\n #importantInfo-bottom,\r\n #intermediary-services-contract-summary-slider-link`).off('click').on('click', function(event) {\r\n event.preventDefault();\r\n const link = $(this);\r\n bgl.common.loader.load({}, link.data('action-url'), link.data('container'));\r\n });\r\n }\r\n\r\n function getSecureSessionData() {\r\n return {\r\n 'Name': sessionStorage.getItem('MonthlyInstalmentCardSelectedPersonIdText'),\r\n 'CardCaptureUri': sessionStorage.getItem('MonthlyInstalmentCardCaptureUri'),\r\n 'SecureSessionId': sessionStorage.getItem('MonthlyInstalmentSecureSessionId'),\r\n };\r\n }\r\n\r\n return {\r\n init: initComponent,\r\n load: loadComponent,\r\n };\r\n})();\r\n// eslint-disable-next-line no-var\r\nvar bgl = window.bgl || {};\r\nbgl.components = bgl.components || {};\r\nbgl.components.takepayment = bgl.components.takepayment || {};\r\n\r\nbgl.components.takepayment.monthlyinstalment = (function() {\r\n let componentConfig;\r\n function loadComponent(componentConfiguration, componentUrl, containerElementId, callback) {\r\n componentConfiguration.CardSessionData = getSecureSessionData();\r\n componentConfiguration.CreditInformationUrl = sessionStorage.getItem('credit-information');\r\n bgl.common.loader.load(componentConfiguration,\r\n componentUrl,\r\n containerElementId,\r\n function() {\r\n initComponent(componentConfiguration);\r\n if (typeof callback === 'function') {\r\n callback();\r\n }\r\n });\r\n }\r\n\r\n function initComponent(componentConfiguration) {\r\n componentConfig = componentConfiguration;\r\n sortCodeAutoTab();\r\n initDirectDebit();\r\n populateBankAccountDetails();\r\n initCommon(componentConfiguration);\r\n\r\n $('#Card-Capture-Iframe').on('load', function() {\r\n hideElementsWhen3DSecureIsDisplayed();\r\n });\r\n\r\n $('#direct-debit-details').on('click', function() {\r\n waitForSlidePanelToLoad();\r\n });\r\n\r\n $(`#importantInfo-payments-instalments,\r\n #importantInfo-bottom, \r\n #intermediary-services-contract-summary-slider-link, \r\n #intermediary-services-contract-summary-slider-link-read-confirm`).off('click').on('click', (event) => {\r\n event.preventDefault();\r\n const link = $(event.currentTarget);\r\n bgl.common.loader.load({}, link.data('action-url'), link.data('container'));\r\n });\r\n }\r\n\r\n function waitForSlidePanelToLoad() {\r\n window.setTimeout(function() {\r\n if ($('#SlidePanel').hasClass('active')) {\r\n const directDebitDetails = $('#direct-debit-info').html();\r\n $('#SlidePanelContent').html(directDebitDetails);\r\n } else {\r\n waitForSlidePanelToLoad();\r\n }\r\n }, 100);\r\n }\r\n\r\n function initCommon(componentConfiguration) {\r\n const accessible = componentConfiguration.ViewOptions.MonthlyInstalment === 2;\r\n if (accessible) {\r\n setupAriaLabeltoDates();\r\n postInstalmentDate();\r\n }\r\n setupDatePicker();\r\n bgl.common.datastore.setupReadAndWrite();\r\n loadIframe();\r\n forceMonthlyPaymentMethodStoreAndSetPaymentDate();\r\n }\r\n\r\n function loadIframe() {\r\n const cardSessionData = getSecureSessionData();\r\n bgl.components.takepayment.cardcaptureiframe.loadIframe(\r\n 'Card-Capture-Iframe',\r\n cardSessionData.CardCaptureUri,\r\n cardSessionData.SecureSessionId,\r\n cardSessionData.ThreeDSecureUri);\r\n }\r\n\r\n function initDirectDebit() {\r\n bgl.common.validator.enableMaxLength();\r\n bgl.common.validator.init($('#Direct-Debit-Form'),\r\n {\r\n onfocusout: function(element) {\r\n checkSortcodeValidation(element);\r\n checkAccountNumberValidation(element);\r\n },\r\n hasSubmit: false,\r\n });\r\n\r\n $('#Direct-Debit-Authorise-Row label').on('click',\r\n function() {\r\n $('#' + $(this).attr('for')).click().focusout();\r\n });\r\n\r\n $('#Direct-Debit-Continue-Button').on('click',\r\n function() {\r\n const formIsValid = $('#Direct-Debit-Form').valid();\r\n if (formIsValid) {\r\n validateBankAccountAndSortCode(saveDataToSessionStorage);\r\n } else {\r\n checkSortcodeValidation($('#SortCodePart1'));\r\n getValidationMessages();\r\n scrollToFirstFieldWithErrorAndFocus();\r\n }\r\n\r\n return formIsValid;\r\n });\r\n\r\n $('input[type=radio][name=monthly-payment]').on('change', function() {\r\n if (this.value == 'DirectDebit') {\r\n $('#Direct-Debit-Continue-Button').removeClass('hide');\r\n } else {\r\n $('#Direct-Debit-Continue-Button').addClass('hide');\r\n }\r\n });\r\n }\r\n\r\n function getValidationMessages() {\r\n if ($('.form-row').hasClass('error')) {\r\n const data = {\r\n form_section: getFormSectionName($(this)),\r\n error_details: [],\r\n };\r\n\r\n $('.error').find('.form-row__validation-text').each(function() {\r\n addError(data, $(this).attr('data-valmsg-for'), $(this).text().trim());\r\n });\r\n\r\n const sortcodeValiationElement = $('#sortcode-validation-text');\r\n if (sortcodeValiationElement.length == 1 && !sortcodeValiationElement.hasClass('hide')) {\r\n addError(\r\n data,\r\n $('#form-row-sortcode1 fieldset legend').text().trim(),\r\n $('#sortcode-validation-text').text().trim(),\r\n );\r\n }\r\n\r\n const sortcodeApiValidationElement = $('#sortcode-api-validation-message');\r\n if (sortcodeApiValidationElement.length == 1 && !sortcodeApiValidationElement.hasClass('hide')) {\r\n addError(\r\n data,\r\n $('#form-row-sortcode1 fieldset legend').text().trim(),\r\n $('#sortcode-api-validation-message').text().trim(),\r\n );\r\n }\r\n\r\n bgl.common.pubsub.emit('formValidationFailed', data);\r\n }\r\n }\r\n\r\n function addError(data, field, message) {\r\n const errorDetail = {\r\n error_field: field,\r\n error_message: message,\r\n };\r\n data.error_details.push(errorDetail);\r\n }\r\n\r\n function getFormSectionName() {\r\n const formRow = '.form-row__validation-text';\r\n if ($(formRow).parents().find('.step-form__section-title').text().length === 0) {\r\n return $(formRow).closest('form').find('h1').text();\r\n } else {\r\n return $(formRow).closest('form').find('.step-form__section-title').text();\r\n }\r\n }\r\n\r\n function scrollToFirstFieldWithErrorAndFocus() {\r\n const firstRequiredField = $('.error,.sort-code__input--error').first();\r\n $('html,body').animate({scrollTop: firstRequiredField.offset().top}, 'slow');\r\n\r\n if (firstRequiredField.length) {\r\n const invalidInputElem = firstRequiredField.find('input, select, textarea')\r\n .addBack('input, select, textarea')[0];\r\n if (invalidInputElem !== undefined) {\r\n invalidInputElem.focus();\r\n }\r\n }\r\n }\r\n\r\n function scrollToCardPayment() {\r\n const requiredField = $('.card-payment');\r\n $('html,body').animate({scrollTop: requiredField.offset().top}, 0);\r\n }\r\n\r\n function hideElementsWhen3DSecureIsDisplayed() {\r\n if ($('#Card-Capture-Iframe').contents().find('#continue').length === 0) {\r\n $('#Cardholder-Name-Form-Row').hide();\r\n $('#Monthly-Card-Payment-Date-Form-Row').hide();\r\n $('#Monthly-Payment-DD-Label').hide();\r\n $('#Monthly-Payment-Card-Label').hide();\r\n $('#Monthly-Payment-DD').hide();\r\n $('#Monthly-Payment-Card').hide();\r\n scrollToCardPayment();\r\n return;\r\n }\r\n\r\n const timeoutId = setTimeout(function() {\r\n hideElementsWhen3DSecureIsDisplayed();\r\n }, 1000);\r\n\r\n sessionStorage.setItem('3dSecureTimeoutId', timeoutId);\r\n }\r\n\r\n function checkAccountNumberValidation(element) {\r\n let isValid = false;\r\n\r\n if ($(element).hasClass('form-row__input account-number sort-code__input--error')) {\r\n $('#account-number-validation-message').addClass('hide');\r\n }\r\n if ($(element).hasClass('form-row__input account-number')) {\r\n isValid = $('#direct-debit-account-number').valid();\r\n }\r\n if (isValid) {\r\n removeAccountErrorStyle();\r\n }\r\n }\r\n\r\n function checkSortcodeValidation(element) {\r\n removeApiValidationErrorMessage(element);\r\n validateIndividualSortCodeInput(element);\r\n clearValidationErrorStylingWhenAllSortCodeInputsAreValid();\r\n }\r\n\r\n function removeApiValidationErrorMessage(element) {\r\n if ($(element).hasClass('form-row__input--sort-code') &&\r\n !$('#sortcode-api-validation-message').hasClass('hide')) {\r\n removeSortCodeErrorStyle();\r\n }\r\n }\r\n\r\n function validateIndividualSortCodeInput(element) {\r\n if ($(element).valid()) {\r\n removeIndividualSortCodeErrorStyle(element);\r\n } else {\r\n addIndividualSortCodeErrorStyle(element);\r\n }\r\n $('#form-row-sortcode1').removeClass('error');\r\n }\r\n\r\n function clearValidationErrorStylingWhenAllSortCodeInputsAreValid() {\r\n const allSortCodeInputsValid = checkAllSortCodeInputsAreValid();\r\n if (allSortCodeInputsValid) {\r\n $('#SortCodeLabel').removeClass('sort-code__label--error');\r\n $('#sortcode-validation-text').addClass('hide');\r\n }\r\n }\r\n\r\n function checkAllSortCodeInputsAreValid() {\r\n let allSortCodeInputsValid = true;\r\n\r\n $('.form-row__input--sort-code').each(function() {\r\n if ($(this).hasClass('sort-code__input--error')) {\r\n allSortCodeInputsValid = false;\r\n }\r\n });\r\n\r\n return allSortCodeInputsValid;\r\n }\r\n\r\n function setupAriaLabeltoDates() {\r\n const selectList = document.getElementById('Direct-Debit-Payment-Date-Label');\r\n const selectCreditCardList = document.getElementById('Credit-Card-Payment-Date-Label');\r\n selectList.setAttribute('aria-label', 'Please Select preferred first installment date from given list');\r\n selectCreditCardList.setAttribute(\r\n 'aria-label',\r\n 'Please Select preferred first installment date from given list',\r\n );\r\n }\r\n\r\n function postInstalmentDate() {\r\n $(document).ready(function() {\r\n $(document).on('change', '#Direct-Debit-Payment-Date-List', (function() {\r\n const nominatedDate = $(this).val();\r\n postChangePaymentDateToApi(nominatedDate);\r\n }));\r\n\r\n $(document).on('change', '#Credit-Card-Payment-Date-List', (function() {\r\n const nominatedDate = $(this).val();\r\n postChangePaymentDateToApi(nominatedDate);\r\n }));\r\n });\r\n }\r\n\r\n function setupDatePicker() {\r\n $.extend($.datepicker, {\r\n _doKeyDown: function(event) {\r\n if (event.shiftKey) {\r\n if (event.keyCode === 9) {\r\n $.datepicker._hideDatepicker();\r\n }\r\n } else {\r\n event.preventDefault();\r\n dayTripper();\r\n $('.ui-datepicker-calendar').keyup(function(event) {\r\n if (event.keyCode === 13) {\r\n $.datepicker._hideDatepicker();\r\n $('#Direct-Debit-Selected-Person-Id').focus();\r\n }\r\n });\r\n }\r\n },\r\n });\r\n\r\n $('.form-row__input--datepicker').datepicker({\r\n selectOtherMonths: true,\r\n minDate: $('#FirstPaymentDate').val(),\r\n maxDate: $('#MaxPaymentDate').val(),\r\n dateFormat: 'dd-mm-yy',\r\n showOtherMonths: false,\r\n dayNamesShort: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],\r\n beforeShow: function(input, inst) {\r\n $(inst.dpDiv).addClass('monthly-payment-date-widget');\r\n },\r\n onSelect: function() {\r\n const nominatedDate = $(this).val();\r\n postChangePaymentDateToApi(nominatedDate);\r\n },\r\n });\r\n\r\n $('Direct-Debit-Payment-Date').attr('aria-describedby', 'Date Input dd-mm-yy');\r\n }\r\n\r\n function positionDateCursorToFirstSelectableDate() {\r\n const cursorStart = getFirstSelectablePositionForMonth();\r\n $(`.ui-datepicker-calendar tr:nth-child('${cursorStart.rowStart}') td:nth-child('${cursorStart.columnStart}')`)\r\n .find('a')\r\n .focus();\r\n }\r\n\r\n function getFirstSelectablePositionForMonth() {\r\n let rowStart = 0;\r\n let columnStart = 0;\r\n let foundColumnStart = false;\r\n\r\n $('.ui-datepicker-calendar tr').each(function(rowIndex) {\r\n const $tds = $(this).find('td');\r\n $($tds).each(function(index) {\r\n const value = $(this).text();\r\n if ($.isNumeric(value) && (!$(this).hasClass('ui-datepicker-unselectable'))) {\r\n columnStart = index + 1;\r\n foundColumnStart = true;\r\n return false;\r\n }\r\n });\r\n if (foundColumnStart) {\r\n rowStart = rowIndex;\r\n return false;\r\n }\r\n });\r\n return {\r\n rowStart: rowStart,\r\n columnStart: columnStart,\r\n };\r\n }\r\n\r\n function sortCodeKeyUpEvent(event, currentSortCodePart, nextSortCodePart) {\r\n const TAB_KEYCODE = 9;\r\n const SHIFT_KEYCODE = 16;\r\n const LEFT_ARROW_KEYCODE = 37;\r\n const UP_ARROW_KEYCODE = 38;\r\n const RIGHT_ARROW_KEYCODE = 39;\r\n const DOWN_ARROW_KEYCODE = 40;\r\n\r\n const currentLength = $(currentSortCodePart).val().length;\r\n if (currentLength === 2 &&\r\n event.which !== TAB_KEYCODE &&\r\n event.which !== SHIFT_KEYCODE &&\r\n event.which !== LEFT_ARROW_KEYCODE &&\r\n event.which !== UP_ARROW_KEYCODE &&\r\n event.which !== RIGHT_ARROW_KEYCODE &&\r\n event.which !== DOWN_ARROW_KEYCODE) {\r\n $(nextSortCodePart).focus().select();\r\n }\r\n }\r\n\r\n function sortCodeAutoTab() {\r\n const container1 = document.getElementById('SortCodePart1');\r\n const container2 = document.getElementById('SortCodePart2');\r\n\r\n container1.onkeyup = function(e) {\r\n sortCodeKeyUpEvent(e, '#SortCodePart1', '#SortCodePart2');\r\n };\r\n\r\n container2.onkeyup = function(e) {\r\n sortCodeKeyUpEvent(e, '#SortCodePart2', '#SortCodePart3');\r\n };\r\n }\r\n\r\n function postChangePaymentDateToApi(nominatedDate) {\r\n const dataToPost = {\r\n __RequestVerificationToken: $('input[name=\"__RequestVerificationToken\"]').val(),\r\n nominatedDate: nominatedDate,\r\n };\r\n\r\n $.ajax({\r\n url: componentConfig.TenantConfiguration.ApplicationPath + 'TakePaymentComponent/ChangePaymentDate',\r\n type: 'POST',\r\n cache: false,\r\n dataType: 'json',\r\n data: dataToPost,\r\n success: function(result) {\r\n if (result.isSuccess === false) {\r\n bgl.common.utilities.redirectToUrl(result.errorRedirectUrl);\r\n return true;\r\n }\r\n return true;\r\n },\r\n });\r\n }\r\n\r\n function forceMonthlyPaymentMethodStoreAndSetPaymentDate() {\r\n $('.monthly-radio__label').on('click',\r\n function() {\r\n $('#' + $(this).attr('for')).click().focusout();\r\n $('#Direct-Debit-Payment-Date, #Credit-Card-Payment-Date')\r\n .val(sessionStorage.getItem('MonthlyInstalmentPaymentDate'));\r\n });\r\n }\r\n\r\n\r\n function getSecureSessionData() {\r\n return {\r\n 'Name': sessionStorage.getItem('MonthlyInstalmentCardSelectedPersonIdText'),\r\n 'CardCaptureUri': sessionStorage.getItem('MonthlyInstalmentCardCaptureUri'),\r\n 'SecureSessionId': sessionStorage.getItem('MonthlyInstalmentSecureSessionId'),\r\n 'SelectedPersonId': sessionStorage.getItem('MonthlyInstalmentCardSelectedPersonIdVal'),\r\n 'ThreeDSecureUri': sessionStorage.getItem('MonthlyInstalmentThreeDSecureUri'),\r\n };\r\n }\r\n\r\n function saveDataToSessionStorage() {\r\n const model = {\r\n sortCode: document.getElementById('SortCodePart1').value +\r\n document.getElementById('SortCodePart2').value +\r\n document.getElementById('SortCodePart3').value,\r\n accountNumber: document.getElementById('direct-debit-account-number').value,\r\n };\r\n\r\n const dataToPost = {\r\n __RequestVerificationToken: document.querySelector('input[name=\"__RequestVerificationToken\"]').value,\r\n BankAccountAndSortCodeModel: model,\r\n encryptData: true,\r\n };\r\n\r\n $.ajax({\r\n url: componentConfig.TenantConfiguration.ApplicationPath +\r\n 'TakePaymentComponent/AccountDetailsCryptography',\r\n type: 'POST',\r\n cache: false,\r\n dataType: 'json',\r\n data: dataToPost,\r\n success: function(result) {\r\n if (!result.isSuccess) {\r\n bgl.common.telemetry.logEvent('MonthlyInstalmentDetails', {'Status': result.message});\r\n bgl.common.utilities.redirectToUrl(result.errorRedirectUrl);\r\n return false;\r\n }\r\n sessionStorage.setItem('MonthlyInstalmentDetails1', result.accountNumber);\r\n sessionStorage.setItem('MonthlyInstalmentDetails2', result.sortCode);\r\n bgl.common.utilities.redirectToUrl(componentConfig.MonthlyDepositUrl);\r\n return true;\r\n },\r\n });\r\n }\r\n\r\n function populateBankAccountDetails() {\r\n const bankAccountNumberEn = sessionStorage.getItem('MonthlyInstalmentDetails1');\r\n const sortCodeEn = sessionStorage.getItem('MonthlyInstalmentDetails2');\r\n if (bankAccountNumberEn != null || sortCodeEn != null) {\r\n const model = {\r\n sortCode: sortCodeEn,\r\n accountNumber: bankAccountNumberEn,\r\n };\r\n const dataToPost = {\r\n __RequestVerificationToken: document.querySelector('input[name=\"__RequestVerificationToken\"]').value,\r\n BankAccountAndSortCodeModel: model,\r\n encryptData: false,\r\n };\r\n\r\n $.ajax({\r\n url: componentConfig.TenantConfiguration.ApplicationPath +\r\n 'TakePaymentComponent/AccountDetailsCryptography',\r\n type: 'POST',\r\n cache: false,\r\n dataType: 'json',\r\n data: dataToPost,\r\n success: function(result) {\r\n if (!result.isSuccess) {\r\n bgl.common.utilities.redirectToUrl(result.errorRedirectUrl);\r\n return false;\r\n }\r\n document.getElementById('direct-debit-account-number').value = result.accountNumber;\r\n const sortCode = result.sortCode;\r\n document.getElementById('SortCodePart1').value = sortCode.substring(0, 2);\r\n document.getElementById('SortCodePart2').value = sortCode.substring(2, 4);\r\n document.getElementById('SortCodePart3').value = sortCode.substring(4, 6);\r\n return true;\r\n },\r\n });\r\n }\r\n return false;\r\n }\r\n\r\n function validateBankAccountAndSortCode(saveDataToSessionStorageCallBack) {\r\n const dataToPost = {\r\n __RequestVerificationToken: document.querySelector('input[name=\"__RequestVerificationToken\"]').value,\r\n sortCode: document.getElementById('SortCodePart1').value +\r\n document.getElementById('SortCodePart2').value +\r\n document.getElementById('SortCodePart3').value,\r\n accountNumber: document.getElementById('direct-debit-account-number').value,\r\n };\r\n $.ajax({\r\n url: componentConfig.TenantConfiguration.ApplicationPath +\r\n 'TakePaymentComponent/PostAccountNumberAndSortCode',\r\n type: 'POST',\r\n cache: false,\r\n dataType: 'json',\r\n data: dataToPost,\r\n success: function(result) {\r\n if (!result.isSuccess) {\r\n bgl.common.telemetry.logEvent('MonthlyInstallmentDetailsStatus', {'message': result.message});\r\n bgl.common.utilities.redirectToUrl(result.errorRedirectUrl);\r\n return false;\r\n }\r\n\r\n switch (result.Result) {\r\n case 'Validated':\r\n if (typeof bgl.common.pubsub !== 'undefined') {\r\n bgl.common.pubsub.emit(\r\n 'fakeFormSubmit',\r\n $('#Direct-Debit-Form').attr('id') ||\r\n $('#Direct-Debit-Form').attr('action') ||\r\n 'unknown',\r\n );\r\n }\r\n removeSortCodeErrorStyle();\r\n removeAccountErrorStyle();\r\n saveDataToSessionStorageCallBack();\r\n return true;\r\n case 'no values submitted':\r\n case 'sort code or account number invalid':\r\n addAccountErrorStyle();\r\n addSortCodeErrorStyle();\r\n break;\r\n case 'sortCode invalid':\r\n addSortCodeErrorStyle();\r\n break;\r\n case 'accountNumber invalid':\r\n addAccountErrorStyle();\r\n break;\r\n }\r\n\r\n scrollToFirstFieldWithErrorAndFocus();\r\n return false;\r\n },\r\n });\r\n }\r\n\r\n function removeSortCodeErrorStyle() {\r\n $('#sortcode-api-validation-message').addClass('hide');\r\n $('#SortCodeLabel').removeClass('sort-code__label--error');\r\n $('#sortcode-api-validation-message').removeClass('sort-code__span--error');\r\n $('#SortCodePart1,#SortCodePart2,#SortCodePart3').removeClass('sort-code__input--error');\r\n $('#sort-code-input-1, #sort-code-input-2, #sort-code-input-3').removeClass('error');\r\n cleanAriaDescribedBy('#sort-code-input-1');\r\n }\r\n\r\n function addSortCodeErrorStyle() {\r\n $('#sortcode-api-validation-message').removeClass('hide');\r\n $('#SortCodeLabel').addClass('sort-code__label--error');\r\n $('#sortcode-api-validation-message').addClass('sort-code__span--error');\r\n $('#SortCodePart1,#SortCodePart2,#SortCodePart3').addClass('sort-code__input--error');\r\n $('#sort-code-input-1, #sort-code-input-2, #sort-code-input-3').addClass('error');\r\n\r\n cleanAriaDescribedBy($('#SortCodePart1,#SortCodePart2,#SortCodePart3'));\r\n $('#SortCodePart1,#SortCodePart2,#SortCodePart3').attr('aria-describedby', 'sortcode-api-validation-message');\r\n }\r\n\r\n function removeIndividualSortCodeErrorStyle(element) {\r\n $(element).removeClass('sort-code__input--error');\r\n cleanAriaDescribedBy(element);\r\n }\r\n\r\n function addIndividualSortCodeErrorStyle(element) {\r\n $('#SortCodeLabel').addClass('sort-code__label--error');\r\n $('#sortcode-validation-text').removeClass('hide');\r\n $(element).addClass('sort-code__input--error');\r\n\r\n cleanAriaDescribedBy(element);\r\n\r\n if ($(element).hasClass('form-row__input account-number sort-code__input--error')) {\r\n element.setAttribute('aria-describedby', 'direct-debit-account-number-error');\r\n } else if ($(element)\r\n .hasClass('form-row__input form-row__input--radio form-row__input--hidden sort-code__input--error')) {\r\n element.setAttribute('aria-describedby', 'DirectDebitData.CanAuthorise-error');\r\n } else {\r\n $(element).attr('aria-describedby', 'sortcode-validation-text');\r\n }\r\n }\r\n\r\n function addAccountErrorStyle() {\r\n $('#account-number-validation-message').removeClass('hide');\r\n $('#AccountNumberLabel').addClass('sort-code__label--error');\r\n $('#account-number-validation-message').addClass('sort-code__span--error');\r\n $('#direct-debit-account-number').addClass('sort-code__input--error');\r\n $('#account-number-input').addClass('error');\r\n\r\n cleanAriaDescribedBy($('#account-number-input'));\r\n $('#direct-debit-account-number').attr('aria-describedby', 'account-number-validation-message');\r\n }\r\n\r\n function removeAccountErrorStyle() {\r\n $('#account-number-validation-message').addClass('hide');\r\n $('#AccountNumberLabel').removeClass('sort-code__label--error');\r\n $('#account-number-validation-message').removeClass('sort-code__span--error');\r\n $('#direct-debit-account-number').removeClass('sort-code__input--error');\r\n $('#account-number-input').removeClass('error');\r\n cleanAriaDescribedBy('#account-number-input');\r\n }\r\n\r\n function cleanAriaDescribedBy(element) {\r\n if ($(element).attr('aria-describedby')) {\r\n $(element).removeAttr('aria-describedby');\r\n }\r\n }\r\n\r\n function dayTripper() {\r\n setTimeout(function() {\r\n let today = $('.ui-datepicker-today a')[0];\r\n\r\n if (!today) {\r\n today = $('.ui-state-active')[0] ||\r\n $('.ui-state-default')[0];\r\n }\r\n $('main').attr('id', 'dp-container');\r\n $('#dp-container').attr('aria-hidden', 'true');\r\n $('#skipnav').attr('aria-hidden', 'true');\r\n\r\n $('.ui-datepicker-current').hide();\r\n\r\n today.focus();\r\n datePickHandler();\r\n $(document).on('click', '#ui-datepicker-div .ui-datepicker-close', function() {\r\n closeCalendar();\r\n });\r\n }, 0);\r\n }\r\n\r\n function datePickHandler() {\r\n const container = document.getElementById('ui-datepicker-div');\r\n const input = document.getElementById('Direct-Debit-Payment-Date');\r\n\r\n if (!container || !input) {\r\n return;\r\n }\r\n\r\n $(container).find('table').first().attr('role', 'grid');\r\n\r\n container.setAttribute('role', 'application');\r\n container.setAttribute('aria-label', 'Calendar view date-picker');\r\n const prev = $('.ui-datepicker-prev', container)[0];\r\n const next = $('.ui-datepicker-next', container)[0];\r\n\r\n\r\n next.href = 'javascript:void(0)';\r\n prev.href = 'javascript:void(0)';\r\n\r\n next.setAttribute('role', 'button');\r\n next.removeAttribute('title');\r\n prev.setAttribute('role', 'button');\r\n prev.removeAttribute('title');\r\n\r\n appendOffscreenMonthText(next);\r\n appendOffscreenMonthText(prev);\r\n\r\n $(next).on('click', handleNextClicks);\r\n $(prev).on('click', handlePrevClicks);\r\n\r\n monthDayYearText();\r\n\r\n $(container).on('keydown', function calendarKeyboardListener(keyVent) {\r\n const which = keyVent.which;\r\n const target = keyVent.target;\r\n let dateCurrent = getCurrentDate(container);\r\n\r\n if (!dateCurrent) {\r\n dateCurrent = $('a.ui-state-default')[0];\r\n setHighlightState(dateCurrent, container);\r\n }\r\n\r\n if (27 === which) {\r\n keyVent.stopPropagation();\r\n return closeCalendar();\r\n } else if (which === 9 && keyVent.shiftKey) {\r\n keyVent.preventDefault();\r\n if ($(target).hasClass('ui-state-default')) {\r\n $('.ui-datepicker-prev')[0].focus();\r\n } else if ($(target).hasClass('ui-datepicker-prev')) {\r\n $('.ui-datepicker-next')[0].focus();\r\n } else if ($(target).hasClass('ui-datepicker-next')) {\r\n positionDateCursorToFirstSelectableDate();\r\n }\r\n } else if (which === 9) { // TAB\r\n keyVent.preventDefault();\r\n if ($(target).hasClass('ui-datepicker-prev')) {\r\n positionDateCursorToFirstSelectableDate();\r\n } else if ($(target).hasClass('ui-state-default')) {\r\n $('.ui-datepicker-next')[0].focus();\r\n } else if ($(target).hasClass('ui-datepicker-next')) {\r\n $('.ui-datepicker-prev')[0].focus();\r\n }\r\n } else if (which === 37) {\r\n if (!$(target).hasClass('ui-datepicker-close') && $(target).hasClass('ui-state-default')) {\r\n keyVent.preventDefault();\r\n previousDay(target);\r\n }\r\n } else if (which === 39) {\r\n if (!$(target).hasClass('ui-datepicker-close') && $(target).hasClass('ui-state-default')) {\r\n keyVent.preventDefault();\r\n nextDay(target);\r\n }\r\n } else if (which === 38) {\r\n if (!$(target).hasClass('ui-datepicker-close') && $(target).hasClass('ui-state-default')) {\r\n keyVent.preventDefault();\r\n upHandler(target, container, prev);\r\n }\r\n } else if (which === 40) {\r\n if (!$(target).hasClass('ui-datepicker-close') && $(target).hasClass('ui-state-default')) {\r\n keyVent.preventDefault();\r\n downHandler(target, container, next);\r\n }\r\n } else if (which === 13) {\r\n if ($(target).hasClass('ui-state-default')) {\r\n setTimeout(function() {\r\n closeCalendar();\r\n }, 100);\r\n } else if ($(target).hasClass('ui-datepicker-prev')) {\r\n handlePrevClicks();\r\n } else if ($(target).hasClass('ui-datepicker-next')) {\r\n handleNextClicks();\r\n }\r\n } else if (32 === which) {\r\n if ($(target).hasClass('ui-datepicker-prev') || $(target).hasClass('ui-datepicker-next')) {\r\n target.click();\r\n }\r\n } else if (33 === which) {\r\n moveOneMonth(target, 'prev');\r\n } else if (34 === which) {\r\n moveOneMonth(target, 'next');\r\n } else if (36 === which) {\r\n const firstOfMonth = $(target).closest('tbody').find('.ui-state-default')[0];\r\n if (firstOfMonth) {\r\n firstOfMonth.focus();\r\n setHighlightState(firstOfMonth, $('#ui-datepicker-div')[0]);\r\n }\r\n } else if (35 === which) {\r\n const $daysOfMonth = $(target).closest('tbody').find('.ui-state-default');\r\n const lastDay = $daysOfMonth[$daysOfMonth.length - 1];\r\n if (lastDay) {\r\n lastDay.focus();\r\n setHighlightState(lastDay, $('#ui-datepicker-div')[0]);\r\n }\r\n }\r\n $('.ui-datepicker-current').hide();\r\n });\r\n }\r\n\r\n function closeCalendar() {\r\n const container = $('#ui-datepicker-div');\r\n $(container).off('keydown');\r\n const input = $('#datepicker')[0];\r\n $(input).datepicker('hide');\r\n\r\n input.focus();\r\n }\r\n\r\n function moveOneMonth(currentDate, dir) {\r\n const button = (dir === 'next') ?\r\n $('.ui-datepicker-next')[0] :\r\n $('.ui-datepicker-prev')[0];\r\n\r\n if (!button) {\r\n return;\r\n }\r\n\r\n const ENABLED_SELECTOR = '#ui-datepicker-div tbody td:not(.ui-state-disabled)';\r\n const $currentCells = $(ENABLED_SELECTOR);\r\n let currentIdx = $.inArray(currentDate.parentNode, $currentCells);\r\n\r\n button.click();\r\n setTimeout(function() {\r\n updateHeaderElements();\r\n\r\n const $newCells = $(ENABLED_SELECTOR);\r\n let newTd = $newCells[currentIdx];\r\n let newAnchor = newTd && $(newTd).find('a')[0];\r\n\r\n while (!newAnchor) {\r\n currentIdx--;\r\n newTd = $newCells[currentIdx];\r\n newAnchor = newTd && $(newTd).find('a')[0];\r\n }\r\n\r\n setHighlightState(newAnchor, $('#ui-datepicker-div')[0]);\r\n newAnchor.focus();\r\n }, 0);\r\n }\r\n\r\n function handleNextClicks() {\r\n setTimeout(function() {\r\n updateHeaderElements();\r\n prepHighlightState();\r\n $('.ui-datepicker-next').focus();\r\n $('.ui-datepicker-current').hide();\r\n }, 0);\r\n }\r\n\r\n function handlePrevClicks() {\r\n setTimeout(function() {\r\n updateHeaderElements();\r\n prepHighlightState();\r\n $('.ui-datepicker-prev').focus();\r\n $('.ui-datepicker-current').hide();\r\n }, 0);\r\n }\r\n\r\n function previousDay(dateLink) {\r\n const container = document.getElementById('ui-datepicker-div');\r\n if (!dateLink) {\r\n return;\r\n }\r\n const td = $(dateLink).closest('td');\r\n if (!td) {\r\n return;\r\n }\r\n\r\n const prevTd = $(td).prev();\r\n const prevDateLink = $('a.ui-state-default', prevTd)[0];\r\n\r\n if (prevTd && prevDateLink) {\r\n setHighlightState(prevDateLink, container);\r\n prevDateLink.focus();\r\n } else {\r\n handlePrevious(dateLink);\r\n }\r\n }\r\n\r\n\r\n function handlePrevious(target) {\r\n const container = document.getElementById('ui-datepicker-div');\r\n if (!target) {\r\n return;\r\n }\r\n const currentRow = $(target).closest('tr');\r\n if (!currentRow) {\r\n return;\r\n }\r\n const previousRow = $(currentRow).prev();\r\n\r\n if (!previousRow || previousRow.length === 0) {\r\n previousMonth();\r\n } else {\r\n const prevRowDates = $('td a.ui-state-default', previousRow);\r\n const prevRowDate = prevRowDates[prevRowDates.length - 1];\r\n\r\n if (prevRowDate) {\r\n setTimeout(function() {\r\n setHighlightState(prevRowDate, container);\r\n prevRowDate.focus();\r\n }, 0);\r\n }\r\n }\r\n }\r\n\r\n function previousMonth() {\r\n const prevLink = $('.ui-datepicker-prev')[0];\r\n const container = document.getElementById('ui-datepicker-div');\r\n prevLink.click();\r\n setTimeout(function() {\r\n const trs = $('tr', container);\r\n const lastRowTdLinks = $('td a.ui-state-default', trs[trs.length - 1]);\r\n const lastDate = lastRowTdLinks[lastRowTdLinks.length - 1];\r\n\r\n updateHeaderElements();\r\n setHighlightState(lastDate, container);\r\n lastDate.focus();\r\n }, 0);\r\n }\r\n\r\n function nextDay(dateLink) {\r\n const container = document.getElementById('ui-datepicker-div');\r\n if (!dateLink) {\r\n return;\r\n }\r\n const td = $(dateLink).closest('td');\r\n if (!td) {\r\n return;\r\n }\r\n const nextTd = $(td).next();\r\n const nextDateLink = $('a.ui-state-default', nextTd)[0];\r\n\r\n if (nextTd && nextDateLink) {\r\n setHighlightState(nextDateLink, container);\r\n nextDateLink.focus();\r\n } else {\r\n handleNext(dateLink);\r\n }\r\n }\r\n\r\n function handleNext(target) {\r\n const container = document.getElementById('ui-datepicker-div');\r\n if (!target) {\r\n return;\r\n }\r\n const currentRow = $(target).closest('tr');\r\n const nextRow = $(currentRow).next();\r\n\r\n if (!nextRow || nextRow.length === 0) {\r\n nextMonth();\r\n } else {\r\n const nextRowFirstDate = $('a.ui-state-default', nextRow)[0];\r\n if (nextRowFirstDate) {\r\n setHighlightState(nextRowFirstDate, container);\r\n nextRowFirstDate.focus();\r\n }\r\n }\r\n }\r\n\r\n function nextMonth() {\r\n const nextMon = $('.ui-datepicker-next')[0];\r\n const container = document.getElementById('ui-datepicker-div');\r\n nextMon.click();\r\n setTimeout(function() {\r\n updateHeaderElements();\r\n const firstDate = $('a.ui-state-default', container)[0];\r\n setHighlightState(firstDate, container);\r\n firstDate.focus();\r\n }, 0);\r\n }\r\n\r\n function upHandler(target, cont, prevLink) {\r\n prevLink = $('.ui-datepicker-prev')[0];\r\n const rowContext = $(target).closest('tr');\r\n if (!rowContext) {\r\n return;\r\n }\r\n const rowTds = $('td', rowContext);\r\n const rowLinks = $('a.ui-state-default', rowContext);\r\n const targetIndex = $.inArray(target, rowLinks);\r\n const prevRow = $(rowContext).prev();\r\n const prevRowTds = $('td', prevRow);\r\n const parallel = prevRowTds[targetIndex];\r\n const linkCheck = $('a.ui-state-default', parallel)[0];\r\n\r\n if (prevRow && parallel && linkCheck) {\r\n setHighlightState(linkCheck, cont);\r\n linkCheck.focus();\r\n } else {\r\n prevLink.click();\r\n setTimeout(function() {\r\n updateHeaderElements();\r\n const newRows = $('tr', cont);\r\n const lastRow = newRows[newRows.length - 1];\r\n const lastRowTds = $('td', lastRow);\r\n const tdParallelIndex = $.inArray(target.parentNode, rowTds);\r\n const newParallel = lastRowTds[tdParallelIndex];\r\n const newCheck = $('a.ui-state-default', newParallel)[0];\r\n\r\n if (lastRow && newParallel && newCheck) {\r\n setHighlightState(newCheck, cont);\r\n newCheck.focus();\r\n } else {\r\n const secondLastRow = newRows[newRows.length - 2];\r\n const secondTds = $('td', secondLastRow);\r\n const targetTd = secondTds[tdParallelIndex];\r\n const linkCheck = $('a.ui-state-default', targetTd)[0];\r\n\r\n if (linkCheck) {\r\n setHighlightState(linkCheck, cont);\r\n linkCheck.focus();\r\n }\r\n }\r\n }, 0);\r\n }\r\n }\r\n\r\n function downHandler(target, cont, nextLink) {\r\n nextLink = $('.ui-datepicker-next')[0];\r\n const targetRow = $(target).closest('tr');\r\n if (!targetRow) {\r\n return;\r\n }\r\n const targetCells = $('td', targetRow);\r\n const cellIndex = $.inArray(target.parentNode, targetCells);\r\n const nextRow = $(targetRow).next();\r\n const nextRowCells = $('td', nextRow);\r\n const nextWeekTd = nextRowCells[cellIndex];\r\n const nextWeekCheck = $('a.ui-state-default', nextWeekTd)[0];\r\n\r\n if (nextRow && nextWeekTd && nextWeekCheck) {\r\n setHighlightState(nextWeekCheck, cont);\r\n nextWeekCheck.focus();\r\n } else {\r\n nextLink.click();\r\n\r\n setTimeout(function() {\r\n updateHeaderElements();\r\n\r\n const nextMonthTrs = $('tbody tr', cont);\r\n const firstTds = $('td', nextMonthTrs[0]);\r\n const firstParallel = firstTds[cellIndex];\r\n const firstCheck = $('a.ui-state-default', firstParallel)[0];\r\n\r\n if (firstParallel && firstCheck) {\r\n setHighlightState(firstCheck, cont);\r\n firstCheck.focus();\r\n } else {\r\n const secondRow = nextMonthTrs[1];\r\n const secondTds = $('td', secondRow);\r\n const secondRowTd = secondTds[cellIndex];\r\n const secondCheck = $('a.ui-state-default', secondRowTd)[0];\r\n\r\n if (secondRow && secondCheck) {\r\n setHighlightState(secondCheck, cont);\r\n secondCheck.focus();\r\n }\r\n }\r\n }, 0);\r\n }\r\n }\r\n\r\n function monthDayYearText() {\r\n const cleanUps = $('.amaze-date');\r\n $(cleanUps).each(function(clean) {\r\n clean.parentNode.removeChild(clean);\r\n });\r\n\r\n const datePickDiv = document.getElementById('ui-datepicker-div');\r\n if (!datePickDiv) {\r\n return;\r\n }\r\n\r\n const dates = $('a.ui-state-default', datePickDiv);\r\n $(dates).attr('role', 'button').on('keydown', function(e) {\r\n if (e.which === 32) {\r\n e.preventDefault();\r\n e.target.click();\r\n setTimeout(function() {\r\n closeCalendar();\r\n }, 100);\r\n }\r\n });\r\n $(dates).each(function(index, date) {\r\n const currentRow = $(date).closest('tr');\r\n const currentTds = $('td', currentRow);\r\n const currentIndex = $.inArray(date.parentNode, currentTds);\r\n const headThs = $('thead tr th', datePickDiv);\r\n const dayIndex = headThs[currentIndex];\r\n const daySpan = $('span', dayIndex)[0];\r\n const monthName = $('.ui-datepicker-month', datePickDiv)[0].innerHTML;\r\n const year = $('.ui-datepicker-year', datePickDiv)[0].innerHTML;\r\n const number = date.innerHTML;\r\n\r\n if (!daySpan || !monthName || !number || !year) {\r\n return;\r\n }\r\n\r\n const dateText = date.innerHTML + ' ' + monthName + ' ' + year + ' ' + daySpan.title;\r\n date.setAttribute('aria-label', dateText);\r\n });\r\n }\r\n\r\n function updateHeaderElements() {\r\n const context = document.getElementById('ui-datepicker-div');\r\n if (!context) {\r\n return;\r\n }\r\n\r\n $(context).find('table').first().attr('role', 'grid');\r\n\r\n const prev = $('.ui-datepicker-prev', context)[0];\r\n const next = $('.ui-datepicker-next', context)[0];\r\n\r\n next.href = 'javascript:void(0)';\r\n prev.href = 'javascript:void(0)';\r\n\r\n next.setAttribute('role', 'button');\r\n prev.setAttribute('role', 'button');\r\n appendOffscreenMonthText(next);\r\n appendOffscreenMonthText(prev);\r\n\r\n $(next).on('click', handleNextClicks);\r\n $(prev).on('click', handlePrevClicks);\r\n\r\n monthDayYearText();\r\n }\r\n\r\n\r\n function prepHighlightState() {\r\n const cage = document.getElementById('ui-datepicker-div');\r\n const highlight = $('.ui-state-highlight', cage)[0] ||\r\n $('.ui-state-default', cage)[0];\r\n if (highlight && cage) {\r\n setHighlightState(highlight, cage);\r\n }\r\n }\r\n\r\n function setHighlightState(newHighlight, container) {\r\n const prevHighlight = getCurrentDate(container);\r\n $(prevHighlight).removeClass('ui-state-highlight');\r\n $(newHighlight).addClass('ui-state-highlight');\r\n }\r\n\r\n\r\n function getCurrentDate(container) {\r\n const currentDate = $('.ui-state-highlight', container)[0];\r\n return currentDate;\r\n }\r\n\r\n function appendOffscreenMonthText(button) {\r\n const isNext = $(button).hasClass('ui-datepicker-next');\r\n const months = [\r\n 'january',\r\n 'february',\r\n 'march',\r\n 'april',\r\n 'may',\r\n 'june',\r\n 'july',\r\n 'august',\r\n 'september',\r\n 'october',\r\n 'november',\r\n 'december',\r\n ];\r\n\r\n const currentMonth = $('.ui-datepicker-title .ui-datepicker-month').text().toLowerCase();\r\n const monthIndex = $.inArray(currentMonth.toLowerCase(), months);\r\n let currentYear = $('.ui-datepicker-title .ui-datepicker-year').text().toLowerCase();\r\n let adjacentIndex = (isNext) ? monthIndex + 1 : monthIndex - 1;\r\n\r\n if (isNext && currentMonth === 'december') {\r\n currentYear = parseInt(currentYear, 10) + 1;\r\n adjacentIndex = 0;\r\n } else if (!isNext && currentMonth === 'january') {\r\n currentYear = parseInt(currentYear, 10) - 1;\r\n adjacentIndex = months.length - 1;\r\n }\r\n\r\n const buttonText = (isNext) ?\r\n 'Next Month, ' + firstToCap(months[adjacentIndex]) + ' ' + currentYear :\r\n 'Previous Month, ' + firstToCap(months[adjacentIndex]) + ' ' + currentYear;\r\n\r\n $(button).find('.ui-icon').html(buttonText);\r\n }\r\n\r\n function firstToCap(s) {\r\n return s.charAt(0).toUpperCase() + s.slice(1);\r\n }\r\n\r\n return {\r\n init: initComponent,\r\n load: loadComponent,\r\n getValidationMessages: getValidationMessages,\r\n };\r\n})();\r\n// eslint-disable-next-line no-var\r\nvar bgl = window.bgl || {};\r\nbgl.components = bgl.components || {};\r\nbgl.components.takepayment = bgl.components.takepayment || {};\r\n\r\nbgl.components.takepayment.monthlydepositsummary = (function() {\r\n let componentConfig;\r\n let redirectInterval;\r\n let redirectTick = 0;\r\n const maxRedirectWait = 25;\r\n let requestVerificationToken;\r\n let isPaymentSuccessful = false;\r\n\r\n function loadComponent(componentConfiguration, componentUrl, containerElementId) {\r\n componentConfiguration.CardSessionData = getSecureSessionData();\r\n componentConfiguration.CreditInformationUrl = sessionStorage.getItem('credit-information');\r\n componentConfig = componentConfiguration;\r\n bgl.common.loader.load(componentConfiguration,\r\n componentUrl,\r\n containerElementId,\r\n function() {\r\n initComponent();\r\n });\r\n }\r\n\r\n function initComponent() {\r\n setupTimeline();\r\n setupImportantInformation();\r\n\r\n $('#Monthly-Pay-Now-Button').on('click',\r\n function() {\r\n if (!$('#Read-Confirm-Checkbox').prop('checked')) {\r\n $('#Read-Confirm-Container').addClass('error');\r\n } else {\r\n commitInstalmentAndDepositPaymentsAndBasket();\r\n }\r\n });\r\n\r\n $('#Read-Confirm-Checkbox').on('click',\r\n function() {\r\n if ($('#Read-Confirm-Checkbox').prop('checked')) {\r\n $('#Read-Confirm-Container').removeClass('error');\r\n }\r\n });\r\n }\r\n\r\n function setupTimeline() {\r\n $('.schedule-bar__item').each(function(i, el) {\r\n const itemWidth = $(el).data('width');\r\n $(el).css('width', itemWidth + '%');\r\n });\r\n\r\n $('.schedule-bar__item.active').prevAll('.schedule-bar__item').each(function(i, el) {\r\n $(el).addClass('active');\r\n });\r\n }\r\n\r\n function getSecureSessionData() {\r\n if (sessionStorage.getItem('UseMonthlyInstalmentCard') === 'true') {\r\n return {\r\n 'Name': sessionStorage.getItem('MonthlyInstalmentCardSelectedPersonIdText'),\r\n 'CardCaptureUri': sessionStorage.getItem('MonthlyInstalmentCardCaptureUri'),\r\n 'SecureSessionId': sessionStorage.getItem('MonthlyInstalmentSecureSessionId'),\r\n };\r\n }\r\n return {\r\n 'Name': sessionStorage.getItem('MonthlyDepositSelectedPersonIdText'),\r\n 'CardCaptureUri': sessionStorage.getItem('MonthlyDepositCardCaptureUri'),\r\n 'SecureSessionId': sessionStorage.getItem('MonthlyDepositSecureSessionId'),\r\n };\r\n }\r\n\r\n function commitInstalmentAndDepositPaymentsAndBasket() {\r\n requestVerificationToken = $('input[name=\"__RequestVerificationToken\"]').val();\r\n\r\n const dataToPost = {\r\n __RequestVerificationToken: requestVerificationToken,\r\n commitData: getCommitCardData(),\r\n };\r\n\r\n $('body').html(bgl.common.spinner.getSpinnerBody('Processing your payment!',\r\n 'Please do not hit the back button or refresh the page'));\r\n\r\n const urlPrefix = componentConfig.TenantConfiguration.ApplicationPath !== null ?\r\n componentConfig.TenantConfiguration.ApplicationPath :\r\n '/';\r\n\r\n $.ajax({\r\n url: urlPrefix + 'TakePaymentComponent/CommitMultiplePaymentBasket',\r\n type: 'POST',\r\n cache: false,\r\n dataType: 'json',\r\n data: dataToPost,\r\n success: function(result) {\r\n if (result.isSuccess === false) {\r\n bgl.common.utilities.redirectToUrl(result.errorRedirectUrl);\r\n return;\r\n }\r\n if (result.PaymentSuccessful === true) {\r\n if (typeof bgl.common.pubsub !== 'undefined') {\r\n bgl.common.pubsub.emit('fakeFormSubmit', 'PaymentSuccessful');\r\n }\r\n dataLayerPushPaymentSuccessful();\r\n bgl.common.telemetry.logEvent(\r\n 'PaymentSuccessful',\r\n {'PolicyId': result.PolicyId});\r\n isPaymentSuccessful = true;\r\n }\r\n bgl.common.telemetry.logEvent(\r\n 'IsPaymentSucessful',\r\n {'isPaymentSuccessful': result.PaymentSuccessful},\r\n );\r\n sessionStorage.setItem('PaymentProcessedRedirectUrl', result.RedirectUrl);\r\n if (result.PolicyId) {\r\n const stringValue = result.PolicyId + '';\r\n let length = stringValue.indexOf('-');\r\n length = length > 0 ? length : stringValue.length;\r\n sessionStorage.setItem('PaymentProcessedPolicyId', stringValue.substring(0, length));\r\n sessionStorage.setItem('Authorization', result.Authorization);\r\n }\r\n },\r\n complete: function() {\r\n redirectInterval = setInterval(checkAiComplete, 200);\r\n },\r\n });\r\n }\r\n\r\n function checkAiComplete() {\r\n if (sessionStorage.getItem('AI_sentBuffer') === '[]' || redirectTick >= maxRedirectWait) {\r\n clearInterval(redirectInterval);\r\n if (isPaymentSuccessful) {\r\n bgl.common.utilities.redirectToUrl(componentConfig.PaymentSuccessfulUrl);\r\n } else {\r\n bgl.common.utilities.redirectToUrl(sessionStorage.getItem('PaymentProcessedRedirectUrl'));\r\n bgl.common.telemetry.logEvent(\r\n 'RedirectUrlAfterFailedPayment',\r\n {'RedirectUrlAfterFailedPayment': sessionStorage.getItem('PaymentProcessedRedirectUrl')},\r\n );\r\n }\r\n }\r\n redirectTick += 1;\r\n }\r\n\r\n function getCommitCardData() {\r\n const model = {};\r\n const directDebitNumber = sessionStorage.getItem('MonthlyInstalmentDetails1');\r\n const directDebitCode = sessionStorage.getItem('MonthlyInstalmentDetails2');\r\n model.TodaysPaymentCard = getDepositCardData();\r\n model.ContinuousPaymentCard = getInstalmentCardData();\r\n model.ContinuousPaymentDirectDebit = getInstalmentDirectDebitData();\r\n model.PaymentType = sessionStorage.getItem('MonthlyInstalmentPaymentType');\r\n model.UseContinuousPaymentCardForTodaysPayment = sessionStorage.getItem('UseMonthlyInstalmentCard');\r\n if (!directDebitNumber && !directDebitCode) {\r\n bgl.common.telemetry.logEvent('MonthlyInstallmentDetails', {'Status': 'Not available'});\r\n } else {\r\n model.DirectDebitNumber = directDebitNumber;\r\n model.DirectDebitCode = directDebitCode;\r\n }\r\n model.PaymentDeclinedUrl = componentConfig.PaymentDeclinedUrl;\r\n model.ComponentConfiguration = componentConfig;\r\n return model;\r\n }\r\n\r\n function getDepositCardData() {\r\n const model = {};\r\n model.SelectedPersonIdText = sessionStorage.getItem('MonthlyDepositSelectedPersonIdText');\r\n model.CardCaptureUri = sessionStorage.getItem('MonthlyDepositCardCaptureUri');\r\n model.SecureSessionId = sessionStorage.getItem('MonthlyDepositSecureSessionId');\r\n model.SelectedPersonIdVal = sessionStorage.getItem('MonthlyDepositSelectedPersonIdVal');\r\n return model;\r\n }\r\n\r\n function getInstalmentCardData() {\r\n const model = {};\r\n model.SelectedPersonIdText = sessionStorage.getItem('MonthlyInstalmentCardSelectedPersonIdText');\r\n model.CardCaptureUri = sessionStorage.getItem('MonthlyInstalmentCardCaptureUri');\r\n model.SecureSessionId = sessionStorage.getItem('MonthlyInstalmentSecureSessionId');\r\n model.SelectedPersonIdVal = sessionStorage.getItem('MonthlyInstalmentCardSelectedPersonIdVal');\r\n return model;\r\n }\r\n\r\n function getInstalmentDirectDebitData() {\r\n const model = {};\r\n model.SelectedPersonIdText = sessionStorage.getItem('MonthlyInstalmentDirectDebitSelectedPersonIdText');\r\n model.SelectedPersonIdVal = sessionStorage.getItem('MonthlyInstalmentDirectDebitSelectedPersonIdVal');\r\n return model;\r\n }\r\n\r\n function dataLayerPushPaymentSuccessful() {\r\n if (typeof dataLayer !== 'undefined') {\r\n dataLayer.push({\r\n 'event': 'TEVirtualPageview',\r\n 'virtualPageURL': 'Payment/Successful',\r\n 'virtualPageTitle': 'Payment Successful',\r\n });\r\n }\r\n }\r\n\r\n function setupImportantInformation() {\r\n $('#moreInfo-payments').off('click').on('click',\r\n function(event) {\r\n event.preventDefault();\r\n const link = $(this);\r\n bgl.common.loader.load({}, link.data('action-url'), link.data('container'));\r\n });\r\n }\r\n\r\n return {\r\n init: initComponent,\r\n load: loadComponent,\r\n };\r\n})();\r\n// eslint-disable-next-line no-var\r\nvar bgl = window.bgl || {};\r\nbgl.components = bgl.components || {};\r\nbgl.components.takepayment = bgl.components.takepayment || {};\r\n\r\nbgl.components.takepayment.monthlydeposit = (function() {\r\n let componentConfiguration;\r\n let hideElementsWhen3DSecureIsDisplayedTimeout;\r\n\r\n function loadComponent(componentConfiguration, componentUrl, containerElementId) {\r\n componentConfiguration.CardSessionData = getSecureSessionData();\r\n bgl.common.loader.load(componentConfiguration,\r\n componentUrl,\r\n containerElementId,\r\n function() {\r\n initComponent(componentConfiguration);\r\n });\r\n }\r\n\r\n function initComponent(configuration) {\r\n componentConfiguration = configuration;\r\n bgl.common.datastore.setupReadAndWrite();\r\n\r\n loadIframe();\r\n\r\n setVisibilityOfCardholderNameOther();\r\n\r\n setCardInformation();\r\n\r\n bgl.common.validator.enableMaxLength();\r\n\r\n bgl.common.validator.init($('#MonthlyDepositPaymentForm'),\r\n {\r\n onkeyup: function(element) {\r\n validateElementAndToggleIframe(element);\r\n },\r\n hasSubmit: false,\r\n });\r\n\r\n $('#PersonListData_SelectedPersonId').change(\r\n function() {\r\n if ($('#PersonListData_SelectedPersonId').find(':selected').text() === 'Other') {\r\n $('#CardholderNameRow').removeClass('hide');\r\n $('#Card-Capture-Iframe').addClass('hide');\r\n sessionStorage.setItem('MonthlyDepositSelectedPersonIdText', '');\r\n $('#CardholderName').val('');\r\n $('#CardholderName').focus();\r\n } else {\r\n $('#CardholderNameRow').addClass('hide');\r\n $('#Card-Capture-Iframe').removeClass('hide');\r\n }\r\n\r\n initCardCapture();\r\n });\r\n\r\n if ($('#PersonListData_SelectedPersonId').find(':selected').text() === 'Other') {\r\n validateElementAndToggleIframe($('#MonthlyDepositPaymentForm'));\r\n }\r\n\r\n setupHowToPayButtons();\r\n\r\n $('#Card-Capture-Iframe').on('load', function() {\r\n hideElementsWhen3DSecureIsDisplayed();\r\n });\r\n }\r\n\r\n\r\n function initCardCapture() {\r\n sessionStorage.removeItem('MonthlyDepositCardCaptureUri');\r\n sessionStorage.removeItem('MonthlyDepositSecureSessionId');\r\n sessionStorage.removeItem('MonthlyDepositThreeDSecureUri');\r\n\r\n if (hideElementsWhen3DSecureIsDisplayedTimeout) {\r\n clearTimeout(hideElementsWhen3DSecureIsDisplayedTimeout);\r\n }\r\n\r\n bgl.components.takepayment.cardcaptureiframe.clearIframe();\r\n\r\n componentConfiguration.CardSessionData = {'SelectedPersonId': $('#PersonListData_SelectedPersonId').val()};\r\n\r\n const dataToPost = {\r\n __RequestVerificationToken: $('input[name=\\'__RequestVerificationToken\\']').val(),\r\n configuration: componentConfiguration,\r\n };\r\n\r\n $.ajax({\r\n url: componentConfiguration.TenantConfiguration.ApplicationPath +\r\n 'TakePaymentComponent/InitialiseMonthlyCardCapture',\r\n type: 'POST',\r\n data: dataToPost,\r\n success: function(data) {\r\n sessionStorage.setItem('MonthlyDepositCardCaptureUri', data.cardCaptureUri);\r\n sessionStorage.setItem('MonthlyDepositSecureSessionId', data.secureSessionId);\r\n sessionStorage.setItem('MonthlyDepositThreeDSecureUri', data.threeDSecureUri);\r\n\r\n loadIframe();\r\n },\r\n });\r\n }\r\n\r\n function loadIframe() {\r\n const cardSessionData = getSecureSessionData();\r\n bgl.components.takepayment.cardcaptureiframe.loadIframe(\r\n 'Card-Capture-Iframe',\r\n cardSessionData.CardCaptureUri,\r\n cardSessionData.SecureSessionId,\r\n cardSessionData.ThreeDSecureUri);\r\n }\r\n\r\n function validateElementAndToggleIframe(element) {\r\n const valid = $(element).valid();\r\n if (valid === true) {\r\n $('#Card-Capture-Iframe').removeClass('hide');\r\n } else {\r\n $('#Card-Capture-Iframe').addClass('hide');\r\n }\r\n }\r\n\r\n function hideElementsWhen3DSecureIsDisplayed() {\r\n if ($('#Card-Capture-Iframe').contents().find('#continue').length === 0) {\r\n $('#Cardholder-Name-Form-Row').hide();\r\n $('#CardholderNameRow').hide();\r\n $('#today-payment-section').hide();\r\n scrollToCardPayment();\r\n return;\r\n }\r\n\r\n hideElementsWhen3DSecureIsDisplayedTimeout = setTimeout(function() {\r\n hideElementsWhen3DSecureIsDisplayed();\r\n }, 1000);\r\n }\r\n\r\n function scrollToCardPayment() {\r\n const requiredField = $('.card-payment');\r\n $('html,body').animate({scrollTop: requiredField.offset().top}, 0);\r\n }\r\n\r\n function setupHowToPayButtons() {\r\n setUseMonthlyInstalmentCard('false');\r\n\r\n $('#deposit-new-card').on('click',\r\n function() {\r\n $('#deposit-iframe-section').removeClass('hide');\r\n if ($('#PersonListData_SelectedPersonId').find(':selected').text() === 'Other') {\r\n validateElementAndToggleIframe($('#MonthlyDepositPaymentForm'));\r\n }\r\n });\r\n\r\n $('#deposit-instalment-card, #deposit-card-icons-instalment-card').on('click',\r\n function() {\r\n setUseMonthlyInstalmentCard('true');\r\n const actionUrl = $(this).data('action-url');\r\n bgl.common.utilities.redirectToUrl(actionUrl);\r\n });\r\n\r\n addCardTypeClassToCardBox();\r\n\r\n addCardTypeForCardIconsClassToCardBox();\r\n\r\n if (instalmentsPaidByDirectDebit()) {\r\n $('#today-payment-section, #deposit-new-card').addClass('hide');\r\n $('#deposit-iframe-section').removeClass('hide');\r\n }\r\n }\r\n\r\n function setUseMonthlyInstalmentCard(value) {\r\n sessionStorage.setItem('UseMonthlyInstalmentCard', value);\r\n }\r\n\r\n function addCardTypeClassToCardBox() {\r\n $('#deposit-instalment-card').addClass('payment-card--' + sessionStorage.getItem('MonthlyInstalmentCardType'));\r\n }\r\n\r\n function addCardTypeForCardIconsClassToCardBox() {\r\n $('#deposit-card-icons-instalment-card')\r\n .find('.payment-card__type')\r\n .addClass('payment-card-new--' + sessionStorage.getItem('MonthlyInstalmentCardType'));\r\n }\r\n\r\n function instalmentsPaidByDirectDebit() {\r\n return sessionStorage.getItem('MonthlyInstalmentPaymentType') === 'DirectDebit';\r\n }\r\n\r\n function getSecureSessionData() {\r\n return {\r\n 'Name': sessionStorage.getItem('MonthlyDepositSelectedPersonIdText'),\r\n 'CardCaptureUri': sessionStorage.getItem('MonthlyDepositCardCaptureUri'),\r\n 'SecureSessionId': sessionStorage.getItem('MonthlyDepositSecureSessionId'),\r\n 'SelectedPersonId': sessionStorage.getItem('MonthlyDepositSelectedPersonIdVal'),\r\n 'ThreeDSecureUri': sessionStorage.getItem('MonthlyDepositThreeDSecureUri'),\r\n };\r\n }\r\n\r\n function setVisibilityOfCardholderNameOther() {\r\n if ($('#PersonListData_SelectedPersonId').find(':selected').text() === 'Other') {\r\n $('#CardholderNameRow').removeClass('hide');\r\n $('#CardholderName').focus();\r\n }\r\n }\r\n\r\n function setCardInformation() {\r\n $('#card-info-date').text('Expires: ' + sessionStorage.getItem('MonthlyInstalmentCardExpiry'));\r\n $('#card-info-name').text(sessionStorage.getItem('MonthlyDepositSelectedPersonIdText'));\r\n }\r\n\r\n return {\r\n init: initComponent,\r\n load: loadComponent,\r\n };\r\n})();\r\n// eslint-disable-next-line no-var\r\nvar bgl = window.bgl || {};\r\nbgl.components = bgl.components || {};\r\nbgl.components.takepayment = bgl.components.takepayment || {};\r\n\r\nbgl.components.takepayment.mergedpaymentsummary = (function() {\r\n let componentConfig;\r\n\r\n function initComponent(componentConfiguration) {\r\n componentConfig = componentConfiguration;\r\n\r\n $('.payment-switch-link').off('click').on('click',\r\n function() {\r\n clearTimeout(sessionStorage.getItem('3dSecureTimeoutId'));\r\n\r\n const paymentSwitchLinkId = $(this).attr('id');\r\n bgl.common.focusHolder.setFocusedElement($(this).data('focusid'));\r\n\r\n const dataToPost = {\r\n __RequestVerificationToken: $('#__AjaxAntiForgeryForm input[name=\"__RequestVerificationToken\"]')\r\n .val(),\r\n paymentSwitchId: $(this).data('payment-switch-id'),\r\n };\r\n const url = $(this).data('url');\r\n const paymentContentUrl = $(this).data('payment-content-url');\r\n\r\n $.ajax({\r\n url: url,\r\n type: 'POST',\r\n cache: false,\r\n dataType: 'json',\r\n data: dataToPost,\r\n success: function(result) {\r\n if (result.isSuccess === true) {\r\n $('#merged-payment-content').empty();\r\n const isMonthly = paymentSwitchLinkId === 'monthly-switch-link';\r\n\r\n $('#IsMonthlyPayment').val(isMonthly);\r\n if (isMonthly) {\r\n bgl.components.takepayment.monthlyinstalment.load(componentConfig,\r\n paymentContentUrl,\r\n 'merged-payment-content',\r\n function() {\r\n $('#monthly-section').removeClass('hide');\r\n $('#annual-section').addClass('hide');\r\n\r\n bgl.common.pubsub.emit(\r\n 'showNotification',\r\n $('#monthly-notification-message').val(),\r\n );\r\n });\r\n } else {\r\n bgl.components.takepayment.annual.load(componentConfig,\r\n paymentContentUrl,\r\n 'merged-payment-content',\r\n function() {\r\n $('#monthly-section').addClass('hide');\r\n $('#annual-section').removeClass('hide');\r\n\r\n bgl.common.pubsub.emit(\r\n 'showNotification',\r\n $('#annual-notification-message').val(),\r\n );\r\n });\r\n }\r\n\r\n bgl.common.pubsub.emit('switchPaymentType', isMonthly);\r\n } else {\r\n window.location.href = result.errorRedirectUrl;\r\n }\r\n },\r\n });\r\n });\r\n }\r\n\r\n return {\r\n init: initComponent,\r\n };\r\n})();\r\n\r\nif (typeof module !== 'undefined') {\r\n module.exports = bgl.components.takepayment.mergedpaymentsummary;\r\n}\r\n// eslint-disable-next-line no-var\r\nvar bgl = window.bgl || {};\r\nbgl.components = bgl.components || {};\r\nbgl.components.takepayment = bgl.components.takepayment || {};\r\n\r\nbgl.components.takepayment.documentloader = (function() {\r\n let configuration;\r\n function initComponent(config) {\r\n configuration = config;\r\n $(document).ready(function() {\r\n getDocumentUrl();\r\n });\r\n }\r\n\r\n function getDocumentUrl() {\r\n $.get(configuration.TenantConfiguration.ApplicationPath + 'TakePaymentComponent/DocumentLoader',\r\n {name: 'credit-information'},\r\n function(result) {\r\n if (result.url) {\r\n window.sessionStorage.setItem('credit-information', result.url);\r\n }\r\n });\r\n }\r\n\r\n return {\r\n init: initComponent,\r\n };\r\n})();\r\n\r\nif (typeof module !== 'undefined') {\r\n module.exports = bgl.components.takepayment.documentloader;\r\n}\r\n// eslint-disable-next-line no-var\r\nvar bgl = window.bgl || {};\r\nbgl.components = bgl.components || {};\r\nbgl.components.takepayment = bgl.components.takepayment || {};\r\n\r\nbgl.components.takepayment.creditagreementacceptanceservice = (function() {\r\n function init(configuration) {\r\n const form = document.querySelector('[data-credit-agreement-acceptance-service-form]');\r\n\r\n if (form) {\r\n form.addEventListener('submit', function(e) {\r\n e.preventDefault();\r\n\r\n if (bgl.common.validator.isFormValid(e.target)) {\r\n bgl.common.validator.submitForm(e.target, configuration);\r\n }\r\n });\r\n\r\n bgl.common.validator.init(form);\r\n }\r\n }\r\n\r\n function onSuccess() {\r\n bgl.common.utilities.refreshPage();\r\n }\r\n\r\n return {\r\n init: init,\r\n onSuccess: onSuccess,\r\n };\r\n})();\r\n// eslint-disable-next-line no-var\r\nvar bgl = window.bgl || {};\r\nbgl.components = bgl.components || {};\r\nbgl.components.takepayment = bgl.components.takepayment || {};\r\n\r\nbgl.components.takepayment.cardcaptureiframe = (function() {\r\n function loadIframe(iframeName, cardCaptureUri, secureSessionId, threeDSecureUri) {\r\n if ($('#Card-Capture-Iframe').length) {\r\n bgl.common.telemetry.logEvent('CardCaptureIframe exists');\r\n\r\n const form = $(``);\r\n\r\n form.appendTo('body');\r\n\r\n const timeoutId = setTimeout(function() {\r\n bgl.common.telemetry.logException(new Error('iFrame took longer than 30 seconds to load'));\r\n }, 30000);\r\n\r\n const iframe = document.getElementById('Card-Capture-Iframe');\r\n\r\n iframe.onload = function() {\r\n bgl.common.telemetry.logEvent('Iframe loaded successfully');\r\n clearTimeout(timeoutId);\r\n };\r\n\r\n iframe.onerror = function() {\r\n bgl.common.telemetry.logException(new Error('Error loading iframe'));\r\n };\r\n\r\n form.submit();\r\n form.remove();\r\n } else {\r\n bgl.common.telemetry.logEvent('Card-Capture-Iframe does not exist. Iframe not loaded');\r\n }\r\n }\r\n\r\n function clearIframe() {\r\n $('#Card-Capture-Iframe').contents().find('body').empty();\r\n }\r\n\r\n return {\r\n loadIframe: loadIframe,\r\n clearIframe: clearIframe,\r\n };\r\n})();\r\n// eslint-disable-next-line no-var\r\nvar bgl = window.bgl || {};\r\nbgl.components = bgl.components || {};\r\nbgl.components.takepayment = bgl.components.takepayment || {};\r\n\r\nbgl.components.takepayment.cancellations = (function() {\r\n function init(componentConfiguration) {\r\n if (componentConfiguration) {\r\n if (componentConfiguration.MTACancelUrl) {\r\n sessionStorage.setItem('MTAStartPage', componentConfiguration.MTACancelUrl);\r\n }\r\n }\r\n }\r\n\r\n return {\r\n init: init,\r\n };\r\n})();\r\n// eslint-disable-next-line no-var\r\nvar bgl = window.bgl || {};\r\nbgl.components = bgl.components || {};\r\nbgl.components.takepayment = bgl.components.takepayment || {};\r\n\r\nbgl.components.takepayment.authenticationsignout = (function() {\r\n function initComponent() {\r\n subscribeToSignOutEvent();\r\n }\r\n\r\n function subscribeToSignOutEvent() {\r\n bgl.common.pubsub.on('CallAuthenticationSignOutInTakePayment', (signOutData) => {\r\n const signOutUrl = 'TakePaymentComponent/AuthenticationSignOut';\r\n const dataToPost = {\r\n __RequestVerificationToken: signOutData.RequestVerificationToken,\r\n };\r\n\r\n $.ajax({\r\n url: signOutData.ApplicationPath + signOutUrl,\r\n type: 'Post',\r\n data: dataToPost,\r\n dataType: 'json',\r\n success: () => {\r\n if (signOutData.RedirectUrl) {\r\n navigateWhenReadyTo(signOutData.RedirectUrl);\r\n }\r\n },\r\n });\r\n });\r\n }\r\n\r\n function navigateWhenReadyTo(nextPage) {\r\n const twoSeconds = 2000;\r\n navigateTo(nextPage, theTimeRightNow() + twoSeconds);\r\n }\r\n\r\n function navigateTo(nextPage, timeoutTime) {\r\n if (hasTimeoutOccured(timeoutTime) || hasTagProcessingCompleted()) {\r\n window.location.href = nextPage;\r\n } else {\r\n setTimeout(navigateTo, 100, nextPage, timeoutTime);\r\n }\r\n }\r\n\r\n function theTimeRightNow() {\r\n return new Date().getTime();\r\n }\r\n\r\n function hasTimeoutOccured(timeoutTime) {\r\n return timeoutTime <= theTimeRightNow();\r\n }\r\n\r\n function hasTagProcessingCompleted() {\r\n return tagProcessingDone;\r\n }\r\n\r\n return {\r\n init: initComponent,\r\n };\r\n})();\r\n\r\nif (typeof module !== 'undefined') {\r\n module.exports = bgl.components.takepayment.authenticationsignout;\r\n}\r\n// eslint-disable-next-line no-var\r\nvar bgl = window.bgl || {};\r\nbgl.components = bgl.components || {};\r\nbgl.components.takepayment = bgl.components.takepayment || {};\r\n\r\nbgl.components.takepayment.annualsummary = (function() {\r\n let componentConfig;\r\n let redirectInterval;\r\n let redirectTick = 0;\r\n const maxRedirectWait = 25;\r\n let requestVerificationToken;\r\n let isPaymentSuccessful = false;\r\n let componentConfiguration;\r\n let hideElementsWhen3DSecureIsDisplayedTimeout;\r\n\r\n function loadComponent(componentConfiguration, componentUrl, containerElementId) {\r\n componentConfiguration.CardSessionData = getTodaysPaymentSessionData();\r\n componentConfiguration.ContinuousPaymentCardSessionData = getContinuousPaymentCardSecureSessionData();\r\n\r\n const continuousPaymentCardEdit = sessionStorage.getItem('ContinuousPaymentCardEdit');\r\n componentConfiguration.ContinuousPaymentCardEdit = continuousPaymentCardEdit !== null ?\r\n continuousPaymentCardEdit :\r\n false;\r\n sessionStorage.setItem('ContinuousPaymentCardEdit', false);\r\n\r\n componentConfig = componentConfiguration;\r\n bgl.common.loader.load(componentConfiguration,\r\n componentUrl,\r\n containerElementId,\r\n function() {\r\n initComponent(componentConfiguration);\r\n });\r\n }\r\n\r\n function initComponent(configuration) {\r\n componentConfiguration = configuration;\r\n bgl.common.datastore.setupReadAndWrite();\r\n loadIframe();\r\n setupConfirmCheckbox();\r\n setupImportantInformation();\r\n populateBankAccountDetails();\r\n requestVerificationToken = $('input[name=\"__RequestVerificationToken\"]').val();\r\n\r\n $('#Card-Capture-Iframe').on('load', function() {\r\n hideElementsWhen3DSecureIsDisplayed();\r\n });\r\n\r\n if (isSecondPaymentMethodRequired()) {\r\n if ($('#Direct-Debit-Form').length > 0) {\r\n initDirectDebit();\r\n }\r\n\r\n if ($('#Pay-Now-Button').length > 0) {\r\n $('#Pay-Now-Button').on('click',\r\n function() {\r\n const continuousPaymentPaymentType = sessionStorage.getItem('ContinuousPaymentPaymentType');\r\n\r\n if (!$('#Read-Confirm-Checkbox').prop('checked')) {\r\n $('#Read-Confirm-Container').addClass('error');\r\n } else if (continuousPaymentPaymentType === 'CreditCard') {\r\n commitPaymentAndBasket(true);\r\n } else {\r\n directDebitIsSelectedAndValid(continuousPaymentPaymentType);\r\n }\r\n });\r\n }\r\n setupContinuousPaymentCardEditLink();\r\n } else {\r\n $('#Pay-Now-Button').on('click',\r\n () => {\r\n if (!$('#Read-Confirm-Checkbox').prop('checked')) {\r\n $('#Read-Confirm-Container').addClass('error');\r\n } else {\r\n commitPaymentAndBasket(false);\r\n }\r\n });\r\n }\r\n\r\n $('#Credit-Card-Selected-Person-Id').change(\r\n function() {\r\n initCardCapture();\r\n });\r\n }\r\n\r\n function initCardCapture() {\r\n sessionStorage.removeItem('ContinuousPaymentCardCaptureUri');\r\n sessionStorage.removeItem('ContinuousPaymentCardSecureSessionId');\r\n sessionStorage.removeItem('ContinuousPaymentCardThreeDSecureUri');\r\n\r\n if (hideElementsWhen3DSecureIsDisplayedTimeout) {\r\n clearTimeout(hideElementsWhen3DSecureIsDisplayedTimeout);\r\n }\r\n\r\n bgl.components.takepayment.cardcaptureiframe.clearIframe();\r\n\r\n componentConfiguration.CardSessionData = getTodaysPaymentSessionData();\r\n componentConfiguration.ContinuousPaymentCardSessionData = {\r\n 'SelectedPersonId': $('#Credit-Card-Selected-Person-Id').val(),\r\n };\r\n\r\n const dataToPost = {\r\n __RequestVerificationToken: $('input[name=\\'__RequestVerificationToken\\']').val(),\r\n configuration: componentConfiguration,\r\n };\r\n\r\n $.ajax({\r\n url: componentConfiguration.TenantConfiguration.ApplicationPath +\r\n 'TakePaymentComponent/InitialiseAnnualSummaryCardCapture',\r\n type: 'POST',\r\n data: dataToPost,\r\n success: function(data) {\r\n sessionStorage.setItem('ContinuousPaymentCardCaptureUri', data.cardCaptureUri);\r\n sessionStorage.setItem('ContinuousPaymentCardSecureSessionId', data.secureSessionId);\r\n sessionStorage.setItem('ContinuousPaymentCardThreeDSecureUri', data.threeDSecureUri);\r\n\r\n loadIframe();\r\n },\r\n });\r\n }\r\n\r\n function loadIframe() {\r\n const cardSessionData = getContinuousPaymentCardSecureSessionData();\r\n bgl.components.takepayment.cardcaptureiframe.loadIframe(\r\n 'Card-Capture-Iframe',\r\n cardSessionData.CardCaptureUri,\r\n cardSessionData.SecureSessionId,\r\n cardSessionData.ThreeDSecureUri);\r\n }\r\n\r\n function directDebitIsSelectedAndValid(continuousPaymentPaymentType) {\r\n if (continuousPaymentPaymentType === 'DirectDebit' && $('#Direct-Debit-Form').length > 0) {\r\n isDirectDebitFormValid();\r\n }\r\n }\r\n\r\n function hideElementsWhen3DSecureIsDisplayed() {\r\n if ($('#Card-Capture-Iframe').contents().find('#continue').length === 0) {\r\n $('#Cardholder-Name-Form-Row').hide();\r\n $('#Monthly-Payment-DD-Label').hide();\r\n $('#Monthly-Payment-Card-Label').hide();\r\n scrollToCardPayment();\r\n return;\r\n }\r\n hideElementsWhen3DSecureIsDisplayedTimeout = setTimeout(function() {\r\n hideElementsWhen3DSecureIsDisplayed();\r\n }, 1000);\r\n }\r\n\r\n function scrollToCardPayment() {\r\n const requiredField = $('.card-payment');\r\n $('html,body').animate({scrollTop: requiredField.offset().top}, 0);\r\n }\r\n\r\n function isSecondPaymentMethodRequired() {\r\n const isContinuousPaymentCard = sessionStorage.getItem('IsContinuousPaymentCard');\r\n if (isContinuousPaymentCard !== 'False') {\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n function initDirectDebit() {\r\n sortCodeAutoTab();\r\n setupDirectDebitSlideInPanel();\r\n bgl.common.validator.enableMaxLength();\r\n setupDirectDebitFormValidation();\r\n setupTabOffAuthoriseDirectDebitButtons();\r\n }\r\n\r\n function setupTabOffAuthoriseDirectDebitButtons() {\r\n $('#Direct-Debit-Authorise-Row label').on('click',\r\n function() {\r\n $('#' + $(this).attr('for')).click().focusout();\r\n });\r\n }\r\n\r\n function setupDirectDebitSlideInPanel() {\r\n $('#direct-debit-details').on('click',\r\n function() {\r\n waitForSlidePanelToLoad();\r\n });\r\n }\r\n\r\n function setupDirectDebitFormValidation() {\r\n bgl.common.validator.init($('#Direct-Debit-Form'),\r\n {\r\n onfocusout: function(element) {\r\n $(element).valid();\r\n checkSortcodeValidation(element);\r\n checkAccountNumberValidation(element);\r\n },\r\n hasSubmit: false,\r\n });\r\n }\r\n\r\n function isDirectDebitFormValid() {\r\n if (!$('#Direct-Debit-Form').valid()) {\r\n checkSortcodeValidation($('#SortCodePart1'));\r\n } else {\r\n validateBankAccountAndSortCode();\r\n saveDataToSessionStorage();\r\n }\r\n }\r\n\r\n function setupContinuousPaymentCardEditLink() {\r\n if ($('#Edit-Card-Link').length > 0) {\r\n $('#Edit-Card-Link').on('click',\r\n function() {\r\n sessionStorage.setItem('ContinuousPaymentCardEdit', true);\r\n location.reload();\r\n });\r\n }\r\n }\r\n\r\n function setupImportantInformation() {\r\n $(`#importantInfo-payments-annual, \r\n #importantInfo-bottom, \r\n #moreInfo-payments, \r\n #intermediary-services-contract-summary-slider-link, \r\n #intermediary-services-contract-summary-slider-link-read-confirm`).off('click').on('click',\r\n function(event) {\r\n event.preventDefault();\r\n const link = $(this);\r\n bgl.common.loader.load({}, link.data('action-url'), link.data('container'));\r\n });\r\n }\r\n\r\n function setupConfirmCheckbox() {\r\n $('#Read-Confirm-Checkbox').on('click',\r\n function() {\r\n if ($('#Read-Confirm-Checkbox').prop('checked')) {\r\n $('#Read-Confirm-Container').removeClass('error');\r\n }\r\n });\r\n }\r\n\r\n function commitPaymentAndBasket(commitMultiplePayment) {\r\n const postMethod = commitMultiplePayment ? 'CommitMultiplePaymentBasket' : 'CommitSinglePaymentBasket';\r\n\r\n const dataToPost = {\r\n __RequestVerificationToken: requestVerificationToken,\r\n commitData: commitMultiplePayment ? getCommitMultiplePaymentData() : getCommitCardData(),\r\n };\r\n\r\n $('body').html(bgl.common.spinner.getSpinnerBody('Processing your payment!',\r\n 'Please do not hit the back button or refresh the page'));\r\n\r\n const urlPrefix = componentConfig.TenantConfiguration.ApplicationPath !== null ?\r\n componentConfig.TenantConfiguration.ApplicationPath :\r\n '/';\r\n\r\n $.ajax({\r\n url: urlPrefix + 'TakePaymentComponent/' + postMethod,\r\n type: 'POST',\r\n cache: false,\r\n dataType: 'json',\r\n data: dataToPost,\r\n success: function(result) {\r\n if (result.isSuccess === false) {\r\n bgl.common.utilities.redirectToUrl(result.errorRedirectUrl);\r\n return;\r\n }\r\n if (result.PaymentSuccessful === true) {\r\n if (typeof bgl.common.pubsub !== 'undefined') {\r\n bgl.common.pubsub.emit('fakeFormSubmit', 'PaymentSuccessful');\r\n }\r\n dataLayerPushPaymentSuccessful();\r\n bgl.common.telemetry.logEvent(\r\n 'PaymentSuccessful',\r\n {'PolicyId': result.PolicyId});\r\n isPaymentSuccessful = true;\r\n\r\n if (result.PolicyId) {\r\n const stringValue = result.PolicyId + '';\r\n let length = stringValue.indexOf('-');\r\n length = length > 0 ? length : stringValue.length;\r\n sessionStorage.setItem('PaymentProcessedPolicyId', stringValue.substring(0, length));\r\n sessionStorage.setItem('Authorization', result.Authorization);\r\n }\r\n }\r\n\r\n bgl.common.telemetry.logEvent(\r\n 'IsPaymentSucessful',\r\n {'isPaymentSuccessful': result.PaymentSuccessful},\r\n );\r\n\r\n sessionStorage.setItem('PaymentProcessedRedirectUrl', result.RedirectUrl);\r\n\r\n bgl.common.telemetry.logEvent(\r\n 'RedirectUrl',\r\n {'RedirectUrl': result.RedirectUrl},\r\n );\r\n },\r\n complete: function() {\r\n redirectInterval = setInterval(checkAiComplete, 200);\r\n },\r\n });\r\n }\r\n\r\n function getCommitMultiplePaymentData() {\r\n const model = {};\r\n model.TodaysPaymentCard = getTodaysPaymentCardData();\r\n model.ContinuousPaymentCard = getContinuousPaymentCardData();\r\n model.ContinuousPaymentDirectDebit = getDirectDebitData();\r\n model.PaymentType = sessionStorage.getItem('ContinuousPaymentPaymentType');\r\n model.PaymentDeclinedUrl = componentConfig.PaymentDeclinedUrl;\r\n model.ComponentConfiguration = componentConfig;\r\n return model;\r\n }\r\n\r\n function getTodaysPaymentCardData() {\r\n const model = {};\r\n model.SelectedPersonIdText = sessionStorage.getItem('AnnualSelectedPersonIdText');\r\n model.CardCaptureUri = sessionStorage.getItem('AnnualCardCaptureUri');\r\n model.SecureSessionId = sessionStorage.getItem('AnnualSecureSessionId');\r\n model.SelectedPersonIdVal = sessionStorage.getItem('AnnualSelectedPersonIdVal');\r\n return model;\r\n }\r\n\r\n function getContinuousPaymentCardData() {\r\n const model = {};\r\n model.SelectedPersonIdText = sessionStorage.getItem('ContinuousPaymentCardSelectedPersonIdText');\r\n model.CardCaptureUri = sessionStorage.getItem('ContinuousPaymentCardCaptureUri');\r\n model.SecureSessionId = sessionStorage.getItem('ContinuousPaymentCardSecureSessionId');\r\n model.SelectedPersonIdVal = sessionStorage.getItem('ContinuousPaymentCardSelectedPersonIdVal');\r\n return model;\r\n }\r\n\r\n function getDirectDebitData() {\r\n const model = {};\r\n model.SelectedPersonIdText = sessionStorage.getItem('ContinuousPaymentDirectDebitSelectedPersonIdText');\r\n model.SelectedPersonIdVal = sessionStorage.getItem('ContinuousPaymentDirectDebitSelectedPersonIdVal');\r\n model.AccountNumber = sessionStorage.getItem('ContinuousPaymentDirectDebitAccountNumber');\r\n model.SortCode = buildSortCode();\r\n return model;\r\n }\r\n\r\n function buildSortCode() {\r\n if (sessionStorage.getItem('ContinuousPaymentDirectDebitSortCodePart1') !== null &&\r\n sessionStorage.getItem('ContinuousPaymentDirectDebitSortCodePart2') !== null &&\r\n sessionStorage.getItem('ContinuousPaymentDirectDebitSortCodePart3') !== null) {\r\n return sessionStorage.getItem('ContinuousPaymentDirectDebitSortCodePart1') +\r\n sessionStorage.getItem('ContinuousPaymentDirectDebitSortCodePart2') +\r\n sessionStorage.getItem('ContinuousPaymentDirectDebitSortCodePart3');\r\n }\r\n return null;\r\n }\r\n\r\n function checkAiComplete() {\r\n if (sessionStorage.getItem('AI_sentBuffer') === '[]' || redirectTick >= maxRedirectWait) {\r\n clearInterval(redirectInterval);\r\n if (isPaymentSuccessful) {\r\n bgl.common.utilities.redirectToUrl(componentConfig.PaymentSuccessfulUrl);\r\n } else {\r\n bgl.common.utilities.redirectToUrl(sessionStorage.getItem('PaymentProcessedRedirectUrl'));\r\n bgl.common.telemetry.logEvent(\r\n 'RedirectUrlAfterFailedPayment',\r\n {'RedirectUrlAfterFailedPayment': sessionStorage.getItem('PaymentProcessedRedirectUrl')},\r\n );\r\n }\r\n }\r\n redirectTick += 1;\r\n }\r\n\r\n function getCommitCardData() {\r\n const model = {};\r\n model.TodaysPaymentCard = getTodaysPaymentCardData();\r\n model.PaymentDeclinedUrl = componentConfig.PaymentDeclinedUrl;\r\n model.ComponentConfiguration = componentConfig;\r\n return model;\r\n }\r\n\r\n function getTodaysPaymentSessionData() {\r\n return {\r\n 'Name': sessionStorage.getItem('AnnualSelectedPersonIdText'),\r\n 'CardCaptureUri': sessionStorage.getItem('AnnualCardCaptureUri'),\r\n 'SecureSessionId': sessionStorage.getItem('AnnualSecureSessionId'),\r\n 'SelectedPersonId': sessionStorage.getItem('AnnualSelectedPersonIdVal'),\r\n 'ThreeDSecureUri': sessionStorage.getItem('AnnualThreeDSecureUri'),\r\n };\r\n }\r\n\r\n function getContinuousPaymentCardSecureSessionData() {\r\n return {\r\n 'Name': sessionStorage.getItem('ContinuousPaymentCardSelectedPersonIdText'),\r\n 'CardCaptureUri': sessionStorage.getItem('ContinuousPaymentCardCaptureUri'),\r\n 'SecureSessionId': sessionStorage.getItem('ContinuousPaymentCardSecureSessionId'),\r\n 'SelectedPersonId': sessionStorage.getItem('ContinuousPaymentCardSelectedPersonIdVal'),\r\n 'ThreeDSecureUri': sessionStorage.getItem('ContinuousPaymentCardThreeDSecureUri'),\r\n };\r\n }\r\n\r\n function dataLayerPushPaymentSuccessful() {\r\n if (typeof dataLayer !== 'undefined') {\r\n dataLayer.push({\r\n 'event': 'TEVirtualPageview',\r\n 'virtualPageURL': 'Payment/Successful',\r\n 'virtualPageTitle': 'Payment Successful',\r\n });\r\n }\r\n }\r\n\r\n function checkSortcodeValidation(element) {\r\n removeApiValidationErrorMessage(element);\r\n validateIndividualSortCodeInput(element);\r\n clearValidationErrorStylingWhenAllSortCodeInputsAreValid();\r\n }\r\n\r\n function removeApiValidationErrorMessage(element) {\r\n if ($(element).hasClass('form-row__input--sort-code') &&\r\n !$('#sortcode-api-validation-message').hasClass('hide')) {\r\n removeSortCodeErrorStyle();\r\n }\r\n }\r\n\r\n function validateIndividualSortCodeInput(element) {\r\n if ($(element).valid()) {\r\n $(element).removeClass('sort-code__input--error');\r\n } else {\r\n addIndividualSortCodeErrorStyle(element);\r\n }\r\n $('#form-row-sortcode1').removeClass('error');\r\n }\r\n\r\n function clearValidationErrorStylingWhenAllSortCodeInputsAreValid() {\r\n const allSortCodeInputsValid = checkAllSortCodeInputsAreValid();\r\n if (allSortCodeInputsValid) {\r\n $('#SortCodeLabel').removeClass('sort-code__label--error');\r\n $('#sortcode-validation-text').addClass('hide');\r\n }\r\n }\r\n\r\n function checkAllSortCodeInputsAreValid() {\r\n let allSortCodeInputsValid = true;\r\n\r\n $('.form-row__input--sort-code').each(function() {\r\n if ($(this).hasClass('sort-code__input--error')) {\r\n allSortCodeInputsValid = false;\r\n }\r\n });\r\n\r\n return allSortCodeInputsValid;\r\n }\r\n\r\n function sortCodeKeyUpEvent(event, currentSortCodePart, nextSortCodePart) {\r\n const TAB_KEYCODE = 9;\r\n const SHIFT_KEYCODE = 16;\r\n const LEFT_ARROW_KEYCODE = 37;\r\n const UP_ARROW_KEYCODE = 38;\r\n const RIGHT_ARROW_KEYCODE = 39;\r\n const DOWN_ARROW_KEYCODE = 40;\r\n\r\n const currentLength = $(currentSortCodePart).val().length;\r\n if (currentLength === 2 &&\r\n event.which !== TAB_KEYCODE &&\r\n event.which !== SHIFT_KEYCODE &&\r\n event.which !== LEFT_ARROW_KEYCODE &&\r\n event.which !== UP_ARROW_KEYCODE &&\r\n event.which !== RIGHT_ARROW_KEYCODE &&\r\n event.which !== DOWN_ARROW_KEYCODE) {\r\n $(nextSortCodePart).focus().select();\r\n }\r\n }\r\n\r\n function sortCodeAutoTab() {\r\n const container1 = document.getElementById('SortCodePart1');\r\n const container2 = document.getElementById('SortCodePart2');\r\n\r\n container1.onkeyup = function(e) {\r\n sortCodeKeyUpEvent(e, '#SortCodePart1', '#SortCodePart2');\r\n };\r\n\r\n container2.onkeyup = function(e) {\r\n sortCodeKeyUpEvent(e, '#SortCodePart2', '#SortCodePart3');\r\n };\r\n }\r\n\r\n function waitForSlidePanelToLoad() {\r\n window.setTimeout(function() {\r\n if ($('#SlidePanel').hasClass('active')) {\r\n const directDebitDetails = $('#direct-debit-info').html();\r\n $('#SlidePanelContent').html(directDebitDetails);\r\n } else {\r\n waitForSlidePanelToLoad();\r\n }\r\n },\r\n 100);\r\n }\r\n\r\n function saveDataToSessionStorage() {\r\n const model = {\r\n sortCode: document.getElementById('SortCodePart1').value +\r\n document.getElementById('SortCodePart2').value +\r\n document.getElementById('SortCodePart3').value,\r\n accountNumber: document.getElementById('direct-debit-account-number').value,\r\n };\r\n\r\n const dataToPost = {\r\n __RequestVerificationToken: document.querySelector('input[name=\"__RequestVerificationToken\"]').value,\r\n BankAccountAndSortCodeModel: model,\r\n encryptData: true,\r\n };\r\n\r\n $.ajax({\r\n url: componentConfig.TenantConfiguration.ApplicationPath +\r\n 'TakePaymentComponent/AccountDetailsCryptography',\r\n type: 'POST',\r\n cache: false,\r\n dataType: 'json',\r\n data: dataToPost,\r\n success: function(result) {\r\n if (!result.isSuccess) {\r\n bgl.common.utilities.redirectToUrl(result.errorRedirectUrl);\r\n return false;\r\n }\r\n sessionStorage.setItem('AnnualSummaryDetails1', result.accountNumber);\r\n sessionStorage.setItem('AnnualSummaryDetails2', result.sortCode);\r\n return true;\r\n },\r\n });\r\n }\r\n\r\n function populateBankAccountDetails() {\r\n const bankAccountNumberEn = sessionStorage.getItem('AnnualSummaryDetails1');\r\n const sortCodeEn = sessionStorage.getItem('AnnualSummaryDetails2');\r\n if (bankAccountNumberEn != null || sortCodeEn != null) {\r\n const model = {\r\n sortCode: sortCodeEn,\r\n accountNumber: bankAccountNumberEn,\r\n };\r\n const dataToPost = {\r\n __RequestVerificationToken: document.querySelector('input[name=\"__RequestVerificationToken\"]').value,\r\n BankAccountAndSortCodeModel: model,\r\n encryptData: false,\r\n };\r\n\r\n $.ajax({\r\n url: componentConfig.TenantConfiguration.ApplicationPath +\r\n 'TakePaymentComponent/AccountDetailsCryptography',\r\n type: 'POST',\r\n cache: false,\r\n dataType: 'json',\r\n data: dataToPost,\r\n success: function(result) {\r\n if (!result.isSuccess) {\r\n bgl.common.utilities.redirectToUrl(result.errorRedirectUrl);\r\n return false;\r\n }\r\n document.getElementById('direct-debit-account-number').value = result.accountNumber;\r\n const sortCode = result.sortCode;\r\n document.getElementById('SortCodePart1').value = sortCode.substring(0, 2);\r\n document.getElementById('SortCodePart2').value = sortCode.substring(2, 4);\r\n document.getElementById('SortCodePart3').value = sortCode.substring(4, 6);\r\n return true;\r\n },\r\n });\r\n }\r\n return false;\r\n }\r\n\r\n function validateBankAccountAndSortCode() {\r\n const dataToPost = {\r\n __RequestVerificationToken: document.querySelector('input[name=\"__RequestVerificationToken\"]').value,\r\n sortCode: document.getElementById('SortCodePart1').value +\r\n document.getElementById('SortCodePart2').value +\r\n document.getElementById('SortCodePart3').value,\r\n accountNumber: document.getElementById('direct-debit-account-number').value,\r\n };\r\n $.ajax({\r\n url: componentConfig.TenantConfiguration.ApplicationPath +\r\n 'TakePaymentComponent/PostAccountNumberAndSortCode',\r\n type: 'POST',\r\n cache: false,\r\n dataType: 'json',\r\n data: dataToPost,\r\n success: function(result) {\r\n if (!result.isSuccess) {\r\n bgl.common.utilities.redirectToUrl(result.errorRedirectUrl);\r\n return false;\r\n }\r\n\r\n switch (result.Result) {\r\n case 'Validated':\r\n removeSortCodeErrorStyle();\r\n removeAccountErrorStyle();\r\n commitPaymentAndBasket(true);\r\n return true;\r\n case 'no values submitted':\r\n case 'sort code or account number invalid':\r\n addAccountErrorStyle();\r\n addSortCodeErrorStyle();\r\n break;\r\n case 'sortCode invalid':\r\n addSortCodeErrorStyle();\r\n break;\r\n case 'accountNumber invalid':\r\n addAccountErrorStyle();\r\n break;\r\n }\r\n\r\n return false;\r\n },\r\n });\r\n }\r\n\r\n function removeSortCodeErrorStyle() {\r\n $('#sortcode-api-validation-message').addClass('hide');\r\n $('#SortCodeLabel').removeClass('sort-code__label--error');\r\n $('#sortcode-api-validation-message').removeClass('sort-code__span--error');\r\n $('#SortCodePart1,#SortCodePart2,#SortCodePart3').removeClass('sort-code__input--error');\r\n cleanAriaDescribedBy('#SortCodePart1');\r\n }\r\n\r\n function addSortCodeErrorStyle() {\r\n $('#sortcode-api-validation-message').removeClass('hide');\r\n $('#SortCodeLabel').addClass('sort-code__label--error');\r\n $('#sortcode-api-validation-message').addClass('sort-code__span--error');\r\n $('#SortCodePart1,#SortCodePart2,#SortCodePart3').addClass('sort-code__input--error');\r\n }\r\n\r\n function addAccountErrorStyle() {\r\n $('#account-number-validation-message').removeClass('hide');\r\n $('#AccountNumberLabel').addClass('sort-code__label--error');\r\n $('#account-number-validation-message').addClass('sort-code__span--error');\r\n $('#direct-debit-account-number').addClass('sort-code__input--error');\r\n }\r\n\r\n function removeAccountErrorStyle() {\r\n $('#account-number-validation-message').addClass('hide');\r\n $('#AccountNumberLabel').removeClass('sort-code__label--error');\r\n $('#account-number-validation-message').removeClass('sort-code__span--error');\r\n $('#direct-debit-account-number').removeClass('sort-code__input--error');\r\n cleanAriaDescribedBy('#direct-debit-account-number');\r\n }\r\n\r\n function cleanAriaDescribedBy(element) {\r\n if ($(element).attr('aria-describedby')) {\r\n $(element).removeAttr('aria-describedby');\r\n }\r\n }\r\n\r\n function addIndividualSortCodeErrorStyle(element) {\r\n $('#SortCodeLabel').addClass('sort-code__label--error');\r\n $('#sortcode-validation-text').removeClass('hide');\r\n $(element).addClass('sort-code__input--error');\r\n }\r\n\r\n function checkAccountNumberValidation(element) {\r\n let isValid = false;\r\n\r\n if ($(element).hasClass('form-row__input account-number sort-code__input--error')) {\r\n $('#account-number-validation-message').addClass('hide');\r\n }\r\n\r\n if ($(element).hasClass('form-row__input account-number')) {\r\n isValid = $('#direct-debit-account-number').valid();\r\n }\r\n\r\n if (isValid) {\r\n removeAccountErrorStyle();\r\n }\r\n }\r\n\r\n return {\r\n init: initComponent,\r\n load: loadComponent,\r\n };\r\n})();\r\n\r\nif (typeof module !== 'undefined') {\r\n module.exports = bgl.components.takepayment.annualsummary;\r\n}\r\n// eslint-disable-next-line no-var\r\nvar bgl = window.bgl || {};\r\nbgl.components = bgl.components || {};\r\nbgl.components.takepayment = bgl.components.takepayment || {};\r\n\r\nbgl.components.takepayment.annual = (function() {\r\n let componentConfiguration;\r\n let hideElementsWhen3DSecureIsDisplayedTimeout;\r\n\r\n function loadComponent(componentConfiguration, componentUrl, containerElementId, callback) {\r\n componentConfiguration.CardSessionData = getSecureSessionData();\r\n bgl.common.loader.load(componentConfiguration,\r\n componentUrl,\r\n containerElementId,\r\n function() {\r\n initComponent(componentConfiguration);\r\n\r\n if (typeof callback === 'function') {\r\n callback();\r\n }\r\n });\r\n }\r\n\r\n function initComponent(configuration) {\r\n componentConfiguration = configuration;\r\n\r\n bgl.common.datastore.setupReadAndWrite();\r\n\r\n loadIframe();\r\n\r\n setVisibilityOfCardholderNameOther();\r\n\r\n bgl.common.validator.enableMaxLength();\r\n\r\n $('#AnnualPaymentForm').off('submit').on('submit',\r\n function(e) {\r\n e.preventDefault();\r\n });\r\n\r\n bgl.common.validator.init($('#AnnualPaymentForm'),\r\n {\r\n onkeyup: function(element) {\r\n validateElementAndToggleIframe(element);\r\n },\r\n hasSubmit: false,\r\n });\r\n\r\n $('#Card-Capture-Iframe').on('load',\r\n function() {\r\n hideElementsWhen3DSecureIsDisplayed();\r\n });\r\n\r\n $('#PersonListData_SelectedPersonId').change(\r\n function() {\r\n if (isOtherSelected()) {\r\n $('#CardholderNameRow').removeClass('hide');\r\n $('#Card-Capture-Iframe').addClass('hide');\r\n sessionStorage.setItem('AnnualSelectedPersonIdText', '');\r\n $('#CardholderName').val('');\r\n $('#CardholderName').focus();\r\n } else {\r\n $('#CardholderNameRow').addClass('hide');\r\n $('#Card-Capture-Iframe').removeClass('hide');\r\n }\r\n\r\n initCardCapture();\r\n });\r\n\r\n if (isOtherSelected()) {\r\n validateElementAndToggleIframe($('#AnnualPaymentForm'));\r\n }\r\n }\r\n\r\n function initCardCapture() {\r\n sessionStorage.removeItem('AnnualCardCaptureUri');\r\n sessionStorage.removeItem('AnnualSecureSessionId');\r\n sessionStorage.removeItem('AnnualThreeDSecureUri');\r\n\r\n if (hideElementsWhen3DSecureIsDisplayedTimeout) {\r\n clearTimeout(hideElementsWhen3DSecureIsDisplayedTimeout);\r\n }\r\n\r\n bgl.components.takepayment.cardcaptureiframe.clearIframe();\r\n\r\n componentConfiguration.CardSessionData = {'SelectedPersonId': $('#PersonListData_SelectedPersonId').val()};\r\n\r\n const dataToPost = {\r\n __RequestVerificationToken: $('input[name=\\'__RequestVerificationToken\\']').val(),\r\n configuration: componentConfiguration,\r\n };\r\n\r\n $.ajax({\r\n url: componentConfiguration.TenantConfiguration.ApplicationPath +\r\n 'TakePaymentComponent/InitialiseAnnualCardCapture',\r\n type: 'POST',\r\n data: dataToPost,\r\n success: function(data) {\r\n sessionStorage.setItem('AnnualCardCaptureUri', data.cardCaptureUri);\r\n sessionStorage.setItem('AnnualSecureSessionId', data.secureSessionId);\r\n sessionStorage.setItem('AnnualThreeDSecureUri', data.threeDSecureUri);\r\n\r\n loadIframe();\r\n },\r\n });\r\n }\r\n\r\n function loadIframe() {\r\n const cardSessionData = getSecureSessionData();\r\n bgl.components.takepayment.cardcaptureiframe.loadIframe(\r\n 'Card-Capture-Iframe',\r\n cardSessionData.CardCaptureUri,\r\n cardSessionData.SecureSessionId,\r\n cardSessionData.ThreeDSecureUri);\r\n }\r\n\r\n function validateElementAndToggleIframe(element) {\r\n const valid = $(element).valid();\r\n if (valid === true) {\r\n $('#Card-Capture-Iframe').removeClass('hide');\r\n } else {\r\n $('#Card-Capture-Iframe').addClass('hide');\r\n }\r\n }\r\n\r\n function isOtherSelected() {\r\n return $('#PersonListData_SelectedPersonId').find(':selected').text() === 'Other';\r\n }\r\n\r\n function getSecureSessionData() {\r\n return {\r\n 'Name': sessionStorage.getItem('AnnualSelectedPersonIdText'),\r\n 'CardCaptureUri': sessionStorage.getItem('AnnualCardCaptureUri'),\r\n 'SecureSessionId': sessionStorage.getItem('AnnualSecureSessionId'),\r\n 'SelectedPersonId': sessionStorage.getItem('AnnualSelectedPersonIdVal'),\r\n 'ThreeDSecureUri': sessionStorage.getItem('AnnualThreeDSecureUri'),\r\n };\r\n }\r\n\r\n function setVisibilityOfCardholderNameOther() {\r\n if ($('#PersonListData_SelectedPersonId').find(':selected').text() === 'Other') {\r\n $('#CardholderNameRow').removeClass('hide');\r\n $('#CardholderName').focus();\r\n }\r\n }\r\n\r\n function hideElementsWhen3DSecureIsDisplayed() {\r\n if ($('#Card-Capture-Iframe').contents().find('#continue').length === 0) {\r\n $('#AnnualCardholderNameFormRow').hide();\r\n $('#CardholderNameRow').hide();\r\n scrollToCardPayment();\r\n return;\r\n }\r\n\r\n hideElementsWhen3DSecureIsDisplayedTimeout = setTimeout(function() {\r\n hideElementsWhen3DSecureIsDisplayed();\r\n }, 1000);\r\n }\r\n\r\n function scrollToCardPayment() {\r\n const requiredField = $('.card-payment');\r\n $('html,body').animate({scrollTop: requiredField.offset().top}, 0);\r\n }\r\n\r\n return {\r\n init: initComponent,\r\n load: loadComponent,\r\n };\r\n})();\r\n// eslint-disable-next-line no-var\r\nvar bgl = window.bgl || {};\r\nbgl.components = bgl.components || {};\r\nbgl.components.takepayment = bgl.components.takepayment || {};\r\n\r\nbgl.components.takepayment.alldone = (function() {\r\n function initComponent(policyFieldId) {\r\n const policyId = sessionStorage.getItem('PaymentProcessedPolicyId');\r\n\r\n $('#' + policyFieldId).text(policyId);\r\n\r\n clearSomeKeysFromSessionStorage();\r\n\r\n\r\n sessionStorage.removeItem('PaymentProcessedPolicyId');\r\n }\r\n\r\n function clearSomeKeysFromSessionStorage() {\r\n const keysToRemove = [\r\n '3dSecureTimeoutId',\r\n 'ActiveTab',\r\n 'AddPaymentCardCaptureUri',\r\n 'AddPaymentCreditCardSelectedPersonId',\r\n 'AddPaymentCreditCardSelectedPersonIdText',\r\n 'AddPaymentCreditCardSelectedPersonIdVal',\r\n 'AddPaymentDirectDebitAccountNumber',\r\n 'AddPaymentDirectDebitSelectedPersonId',\r\n 'AddPaymentDirectDebitSelectedPersonIdText',\r\n 'AddPaymentDirectDebitSelectedPersonIdVal',\r\n 'AddPaymentDirectDebitSortCodePart1',\r\n 'AddPaymentDirectDebitSortCodePart2',\r\n 'AddPaymentDirectDebitSortCodePart3',\r\n 'AddPaymentDirectDebitAuthorise',\r\n 'AddPaymentMethodCardCaptureUri',\r\n 'AddPaymentMethodSecureSessionId',\r\n 'AddPaymentSecureSessionId',\r\n 'AnnualCardCaptureUri',\r\n 'AnnualSecureSessionId',\r\n 'AnnualSelectedPersonIdText',\r\n 'ContinuousPaymentCardCaptureUri',\r\n 'ContinuousPaymentCardEdit',\r\n 'ContinuousPaymentCardSecureSessionId',\r\n 'credit-information',\r\n 'MonthlyDepositSelectedPersonIdText',\r\n 'MTAStartPage',\r\n 'OneOffPaymentSelectedPersonIdText',\r\n 'OneOffPaymentCardCaptureUri',\r\n 'OneOffPaymentSecureSessionId',\r\n 'OneOffPaymentSelectedPersonIdVal',\r\n 'OneOffPaymentSelectedPersonId',\r\n 'PaymentProcessedPolicyId',\r\n 'PaymentProcessedRedirectUrl',\r\n 'UseMonthlyInstalmentCard',\r\n ];\r\n\r\n keysToRemove.forEach(function(key) {\r\n window.sessionStorage.removeItem(key);\r\n });\r\n }\r\n\r\n return {\r\n init: initComponent,\r\n };\r\n})();\r\n// eslint-disable-next-line no-var\r\nvar bgl = window.bgl || {};\r\nbgl.components = bgl.components || {};\r\nbgl.components.takepayment = bgl.components.takepayment || {};\r\n\r\nbgl.components.takepayment.addpaymentmethodconfirmation = (function() {\r\n let componentConfig;\r\n let requestVerificationToken;\r\n\r\n function loadComponent(componentConfiguration, componentUrl, containerElementId) {\r\n componentConfiguration.CardSessionData = getTodaysPaymentSessionData();\r\n componentConfiguration.ContinuousPaymentCardSessionData = getContinuousPaymentCardSecureSessionData();\r\n\r\n bgl.common.loader.load(componentConfiguration,\r\n componentUrl,\r\n containerElementId,\r\n function() {\r\n initComponent(componentConfiguration);\r\n });\r\n }\r\n\r\n function initComponent(componentConfiguration) {\r\n requestVerificationToken = $('input[name=\"__RequestVerificationToken\"]').val();\r\n componentConfig = componentConfiguration;\r\n bgl.common.datastore.setupReadAndWrite();\r\n if (window.sessionStorage.getItem('ActiveTab') === 'BankAccount') {\r\n populateBankAccountDetails();\r\n } else {\r\n const cardHolderName = sessionStorage.getItem('AddPaymentDirectDebitSelectedPersonIdText');\r\n $('#Account-Holder-Name strong').text(cardHolderName);\r\n }\r\n\r\n $('#Confirm-Direct-Debit-Details').off().on('click',\r\n function() {\r\n commitDirectDebitPayment();\r\n });\r\n $('#Confirm-Credit-Card-Details').off().on('click',\r\n function() {\r\n commitCreditCardPayment();\r\n });\r\n\r\n $('#Edit-Direct-Debit-Details,#Back-To-Edit-Direct-Debit-Details').on('click',\r\n function() {\r\n backToAddPaymentMethod();\r\n });\r\n bgl.common.pubsub.on('session:end', function() {\r\n cleanUpSessionStorage();\r\n });\r\n }\r\n\r\n function cleanUpSessionStorage() {\r\n const keysToRemove = ['AddPaymentDirectDebitAccountNumber',\r\n 'AddPaymentDirectDebitSortCodePart1',\r\n 'AddPaymentDirectDebitSortCodePart2',\r\n 'AddPaymentDirectDebitSortCodePart3',\r\n 'AddPaymentDirectDebitAuthorise',\r\n 'OneOffPaymentSelectedPersonIdText',\r\n 'OneOffPaymentCardCaptureUri',\r\n 'OneOffPaymentSecureSessionId',\r\n 'OneOffPaymentSelectedPersonIdVal',\r\n 'OneOffPaymentSelectedPersonId',\r\n ];\r\n\r\n keysToRemove.forEach(function(key) {\r\n window.sessionStorage.removeItem(key);\r\n });\r\n }\r\n\r\n function populateBankAccountDetails() {\r\n const bankAccountNumberEn = sessionStorage.getItem('AddPaymentMethodDetails1');\r\n const sortCodeEn = sessionStorage.getItem('AddPaymentMethodDetails2');\r\n const accountHolderName = sessionStorage.getItem('AddPaymentDirectDebitSelectedPersonIdText');\r\n $('#Account-Holder-Name strong').text(accountHolderName);\r\n if (bankAccountNumberEn != null && sortCodeEn != null) {\r\n const model = {\r\n sortCode: sortCodeEn,\r\n accountNumber: bankAccountNumberEn,\r\n };\r\n const dataToPost = {\r\n __RequestVerificationToken: requestVerificationToken,\r\n BankAccountAndSortCodeModel: model,\r\n encryptData: false,\r\n };\r\n $.ajax({\r\n url: componentConfig.TenantConfiguration.ApplicationPath +\r\n 'TakePaymentComponent/AccountDetailsCryptography',\r\n type: 'POST',\r\n cache: false,\r\n dataType: 'json',\r\n data: dataToPost,\r\n success: function(result) {\r\n if (result.isSuccess === false) {\r\n bgl.common.utilities.redirectToUrl(result.errorRedirectUrl);\r\n return false;\r\n }\r\n const visibleAccountNumber = result.accountNumber;\r\n $('#Sort-Code strong').text(result.sortCode);\r\n $('#Account-Number').text(visibleAccountNumber);\r\n return true;\r\n },\r\n });\r\n }\r\n return true;\r\n }\r\n\r\n function commitDirectDebitPayment() {\r\n const dataToPost = {\r\n __RequestVerificationToken: requestVerificationToken,\r\n addDirectDebitViewModel: getCommitDirectDebitData(),\r\n };\r\n\r\n $.ajax({\r\n url: componentConfig.TenantConfiguration.ApplicationPath +\r\n 'TakePaymentComponent/CommitNewDirectDebitPaymentMethod',\r\n type: 'POST',\r\n cache: false,\r\n dataType: 'json',\r\n data: dataToPost,\r\n success: function(result) {\r\n cleanUpSessionStorage();\r\n if (result.isSuccess === false) {\r\n bgl.common.utilities.redirectToUrl(result.errorRedirectUrl);\r\n return false;\r\n }\r\n logPaymentMethodChange('Direct Debit');\r\n bgl.common.pubsub.emit('PollBasket',\r\n {\r\n hideNotification: true,\r\n callback: function() {\r\n bgl.components.takepayment.addpaymentmethodconfirmation\r\n .commitBasketCallback(result.accountId);\r\n },\r\n });\r\n return true;\r\n },\r\n });\r\n }\r\n\r\n function commitCreditCardPayment() {\r\n const dataToPost = {\r\n __RequestVerificationToken: requestVerificationToken,\r\n commitCreditCardViewModel: getCommitCreditCardData(),\r\n };\r\n\r\n $.ajax({\r\n url: componentConfig.TenantConfiguration.ApplicationPath +\r\n 'TakePaymentComponent/CommitNewCreditCardPaymentMethod',\r\n type: 'POST',\r\n cache: false,\r\n dataType: 'json',\r\n data: dataToPost,\r\n success: function(result) {\r\n if (result.isSuccess === false) {\r\n bgl.common.utilities.redirectToUrl(result.errorRedirectUrl);\r\n return false;\r\n }\r\n logPaymentMethodChange('Card');\r\n bgl.common.pubsub.emit('PollBasket',\r\n {\r\n hideNotification: true,\r\n\r\n callback: function() {\r\n bgl.components.takepayment.addpaymentmethodconfirmation\r\n .commitBasketCallback(result.accountId);\r\n },\r\n });\r\n return true;\r\n },\r\n });\r\n }\r\n\r\n function commitBasketCallback(accountId) {\r\n const dataToPost = {\r\n __RequestVerificationToken: requestVerificationToken,\r\n nominatedAccountId: accountId,\r\n };\r\n\r\n $.ajax({\r\n url: componentConfig.TenantConfiguration.ApplicationPath +\r\n 'TakePaymentComponent/CommitBasketUpdatedPaymentMethod',\r\n type: 'POST',\r\n cache: false,\r\n dataType: 'json',\r\n data: dataToPost,\r\n success: function(result) {\r\n if (result.isSuccess === false) {\r\n window.location.href = result.errorRedirectUrl;\r\n return false;\r\n }\r\n if (result.viewOptions === 'PaymentStatus') {\r\n window.location.href = componentConfig.PaymentStatusUrl;\r\n } else if (result.viewOptions === 'PaymentMethodAllDone') {\r\n window.location.href = componentConfig.PaymentMethodAllDoneUrl;\r\n }\r\n return true;\r\n },\r\n });\r\n }\r\n\r\n function logPaymentMethodChange(newPaymentMethod) {\r\n sessionStorage.setItem('PaymentUpdated', newPaymentMethod);\r\n }\r\n\r\n function backToAddPaymentMethod() {\r\n bgl.common.utilities.redirectToUrl(componentConfig.RedirectUrl);\r\n }\r\n\r\n function getCommitDirectDebitData() {\r\n const model = {};\r\n const commitDirectDebitData = {};\r\n commitDirectDebitData.SelectedPersonIdVal = sessionStorage.getItem('AddPaymentDirectDebitSelectedPersonIdVal');\r\n commitDirectDebitData.AccountNumber = $('#Account-Number').text();\r\n commitDirectDebitData.SortCode = $('#Sort-Code').text().replace(/ /g, '');\r\n model.ComponentConfiguration = componentConfig;\r\n model.CommitDirectDebitData = commitDirectDebitData;\r\n return model;\r\n }\r\n\r\n function getCommitCreditCardData() {\r\n const model = {};\r\n\r\n model.SecureSessionId = sessionStorage.getItem('AddPaymentMethodSecureSessionId');\r\n model.SelectedPersonIdText = sessionStorage.getItem('AddPaymentDirectDebitSelectedPersonIdText');\r\n model.SelectedPersonIdVal = sessionStorage.getItem('AddPaymentCreditCardSelectedPersonId');\r\n return model;\r\n }\r\n\r\n function getTodaysPaymentSessionData() {\r\n return {\r\n 'Name': sessionStorage.getItem('AddPaymentSelectedPersonIdText'),\r\n 'CardCaptureUri': sessionStorage.getItem('AddPaymentMethodCardCaptureUri'),\r\n 'SecureSessionId': sessionStorage.getItem('AddPaymentMethodSecureSessionId'),\r\n\r\n };\r\n }\r\n\r\n function getContinuousPaymentCardSecureSessionData() {\r\n return {\r\n 'Name': sessionStorage.getItem('ContinuousPaymentCardSelectedPersonIdText'),\r\n 'CardCaptureUri': sessionStorage.getItem('AddPaymentMethodCardCaptureUri'),\r\n 'SecureSessionId': sessionStorage.getItem('AddPaymentMethodSecureSessionId'),\r\n };\r\n }\r\n\r\n return {\r\n init: initComponent,\r\n load: loadComponent,\r\n commitBasketCallback: commitBasketCallback,\r\n };\r\n})();\r\n\r\nif (typeof module !== 'undefined') {\r\n module.exports = bgl.components.takepayment.addpaymentmethodconfirmation;\r\n}\r\n// eslint-disable-next-line no-var\r\nvar bgl = window.bgl || {};\r\nbgl.components = bgl.components || {};\r\nbgl.components.takepayment = bgl.components.takepayment || {};\r\n\r\nbgl.components.takepayment.addpaymentmethod = (function() {\r\n let componentConfiguration = {};\r\n\r\n function loadComponent(componentConfig, componentUrl, containerElementId) {\r\n componentConfig.CardSessionData = getTodaysPaymentSessionData();\r\n componentConfig.ContinuousPaymentCardSessionData = getContinuousPaymentCardSecureSessionData();\r\n\r\n bgl.common.loader.load(componentConfig,\r\n componentUrl,\r\n containerElementId,\r\n function() {\r\n initComponent(componentConfig);\r\n });\r\n }\r\n\r\n function initComponent(componentConfig) {\r\n componentConfiguration = componentConfig;\r\n sortCodeAutoTab();\r\n initDirectDebit();\r\n initCreditCard();\r\n onCreditCardTabClick();\r\n onDirectDebitTabClick();\r\n bgl.common.datastore.setupReadAndWrite();\r\n populateBankAccountDetails();\r\n loadIframe();\r\n\r\n window.sessionStorage.setItem('ActiveTab', 'BankAccount');\r\n\r\n bgl.common.pubsub.on('session:end',\r\n function() {\r\n const keysToRemove = [\r\n 'AddPaymentDirectDebitAccountNumber',\r\n 'AddPaymentDirectDebitSortCodePart1',\r\n 'AddPaymentDirectDebitSortCodePart2',\r\n 'AddPaymentDirectDebitSortCodePart3',\r\n 'AddPaymentDirectDebitAuthorise',\r\n 'OneOffPaymentSelectedPersonIdText',\r\n 'OneOffPaymentCardCaptureUri',\r\n 'OneOffPaymentSecureSessionId',\r\n 'OneOffPaymentSelectedPersonIdVal',\r\n 'OneOffPaymentSelectedPersonId',\r\n ];\r\n\r\n keysToRemove.forEach(function(key) {\r\n window.sessionStorage.removeItem(key);\r\n });\r\n });\r\n }\r\n\r\n function initCardCapture() {\r\n sessionStorage.removeItem('AddPaymentMethodCardCaptureUri');\r\n sessionStorage.removeItem('AddPaymentMethodSecureSessionId');\r\n sessionStorage.removeItem('AddPaymentMethodThreeDSecureUri');\r\n\r\n bgl.components.takepayment.cardcaptureiframe.clearIframe();\r\n\r\n componentConfiguration.CardSessionData = {'SelectedPersonId': $('#Credit-Card-Selected-Person-Id').val()};\r\n\r\n const dataToPost = {\r\n __RequestVerificationToken: $('input[name=\\'__RequestVerificationToken\\']').val(),\r\n configuration: componentConfiguration,\r\n };\r\n\r\n $.ajax({\r\n url: componentConfiguration.TenantConfiguration.ApplicationPath +\r\n 'TakePaymentComponent/InitialiseAddPaymentMethodCardCapture',\r\n type: 'POST',\r\n data: dataToPost,\r\n success: function(data) {\r\n sessionStorage.setItem('AddPaymentMethodCardCaptureUri', data.cardCaptureUri);\r\n sessionStorage.setItem('AddPaymentMethodSecureSessionId', data.secureSessionId);\r\n sessionStorage.setItem('AddPaymentMethodThreeDSecureUri', data.threeDSecureUri);\r\n\r\n loadIframe();\r\n },\r\n });\r\n }\r\n\r\n function loadIframe() {\r\n const cardSessionData = getTodaysPaymentSessionData();\r\n\r\n bgl.components.takepayment.cardcaptureiframe.loadIframe(\r\n 'Card-Capture-Iframe',\r\n cardSessionData.CardCaptureUri,\r\n cardSessionData.SecureSessionId,\r\n cardSessionData.ThreeDSecureUri);\r\n }\r\n\r\n function onCreditCardTabClick() {\r\n $('#credit-card').on('click',\r\n function() {\r\n $('#section2').removeClass('hide')\r\n .addClass('active')\r\n .attr('display', 'none');\r\n\r\n $('#section1').removeClass('active')\r\n .addClass('hide');\r\n\r\n $('#Credit-Card-Tab-Button').addClass('active');\r\n $('#Direct-Debit-Tab-Button').removeClass('active');\r\n window.sessionStorage.setItem('ActiveTab', 'Card');\r\n });\r\n }\r\n\r\n function onDirectDebitTabClick() {\r\n $('#direct-debit').on('click',\r\n function() {\r\n $('#section2').removeClass('active')\r\n .addClass('hide')\r\n .attr('display', 'block');\r\n\r\n $('#section1').removeClass('hide')\r\n .addClass('active');\r\n\r\n $('#Credit-Card-Tab-Button').removeClass('active');\r\n $('#Direct-Debit-Tab-Button').addClass('active');\r\n window.sessionStorage.setItem('ActiveTab', 'BankAccount');\r\n });\r\n }\r\n\r\n function initCreditCard() {\r\n $('#Credit-Card-Selected-Person-Id').change(\r\n function() {\r\n initCardCapture();\r\n });\r\n }\r\n\r\n function initDirectDebit() {\r\n bgl.common.validator.enableMaxLength();\r\n\r\n bgl.common.validator.init($('#Direct-Debit-Form'),\r\n {\r\n onfocusout: function(element) {\r\n checkSortcodeValidation(element);\r\n checkAccountNumberValidation(element);\r\n },\r\n hasSubmit: false,\r\n });\r\n\r\n $('#Direct-Debit-Authorise-Row label').on('click',\r\n function() {\r\n $('#' + $(this).attr('for')).click().focusout();\r\n });\r\n\r\n $('#Direct-Debit-Continue-Button').off().on('click',\r\n function() {\r\n let isValid = true;\r\n if (!$('#Direct-Debit-Form').valid()) {\r\n checkSortcodeValidation($('#SortCodePart1'));\r\n isValid = false;\r\n }\r\n if (isValid) {\r\n validateBankAccountAndSortCode();\r\n saveDataToSessionStorage();\r\n } else {\r\n getValidationMessages();\r\n scrollToFirstFieldWithErrorAndFocus();\r\n }\r\n return isValid;\r\n });\r\n\r\n $('#Direct-Debit-Cancel-Button').off().on('click',\r\n function() {\r\n window.location.href =\r\n componentConfiguration.TenantConfiguration.ApplicationPath +\r\n componentConfiguration.PaymentMethodCancelUrl;\r\n });\r\n }\r\n\r\n function checkAccountNumberValidation(element) {\r\n let isValid = false;\r\n\r\n if ($(element).hasClass('form-row__input account-number sort-code__input--error')) {\r\n $('#account-number-validation-message').addClass('hide');\r\n }\r\n if ($(element).hasClass('form-row__input account-number')) {\r\n isValid = $('#direct-debit-account-number').valid();\r\n }\r\n if (isValid) {\r\n removeAccountErrorStyle();\r\n }\r\n }\r\n\r\n function checkSortcodeValidation(element) {\r\n removeApiValidationErrorMessage(element);\r\n validateIndividualSortCodeInput(element);\r\n clearValidationErrorStylingWhenAllSortCodeInputsAreValid();\r\n }\r\n\r\n function removeApiValidationErrorMessage(element) {\r\n if (element.classList &&\r\n element.classList.contains('form-row__input--sort-code') &&\r\n !document.getElementById('sortcode-api-validation-message').classList.contains('hide')) {\r\n removeSortCodeErrorStyle();\r\n }\r\n }\r\n\r\n function validateIndividualSortCodeInput(element) {\r\n if ($(element).valid()) {\r\n removeIndividualSortCodeErrorStyle(element);\r\n } else {\r\n addIndividualSortCodeErrorStyle(element);\r\n }\r\n $('#form-row-sortcode1').removeClass('error');\r\n }\r\n\r\n function clearValidationErrorStylingWhenAllSortCodeInputsAreValid() {\r\n const allSortCodeInputsValid = checkAllSortCodeInputsAreValid();\r\n\r\n if (allSortCodeInputsValid) {\r\n $('#SortCodeLabel').removeClass('sort-code__label--error');\r\n $('#sortcode-validation-text').addClass('hide');\r\n }\r\n }\r\n\r\n function checkAllSortCodeInputsAreValid() {\r\n let allSortCodeInputsValid = true;\r\n\r\n $('.form-row__input--sort-code').each(function() {\r\n if ($(this).hasClass('sort-code__input--error')) {\r\n allSortCodeInputsValid = false;\r\n }\r\n });\r\n\r\n return allSortCodeInputsValid;\r\n }\r\n\r\n function sortCodeKeyUpEvent(event, currentSortCodePart, nextSortCodePart) {\r\n const TAB_KEYCODE = 9;\r\n const SHIFT_KEYCODE = 16;\r\n const LEFT_ARROW_KEYCODE = 37;\r\n const UP_ARROW_KEYCODE = 38;\r\n const RIGHT_ARROW_KEYCODE = 39;\r\n const DOWN_ARROW_KEYCODE = 40;\r\n\r\n const currentLength = $(currentSortCodePart).val().length;\r\n if (currentLength === 2 &&\r\n event.which !== TAB_KEYCODE &&\r\n event.which !== SHIFT_KEYCODE &&\r\n event.which !== LEFT_ARROW_KEYCODE &&\r\n event.which !== UP_ARROW_KEYCODE &&\r\n event.which !== RIGHT_ARROW_KEYCODE &&\r\n event.which !== DOWN_ARROW_KEYCODE) {\r\n $(nextSortCodePart).focus().select();\r\n }\r\n }\r\n\r\n function sortCodeAutoTab() {\r\n const container1 = document.getElementById('SortCodePart1');\r\n const container2 = document.getElementById('SortCodePart2');\r\n\r\n container1.onkeyup = function(e) {\r\n sortCodeKeyUpEvent(e, '#SortCodePart1', '#SortCodePart2');\r\n };\r\n\r\n container2.onkeyup = function(e) {\r\n sortCodeKeyUpEvent(e, '#SortCodePart2', '#SortCodePart3');\r\n };\r\n }\r\n\r\n\r\n function saveDataToSessionStorage() {\r\n const model = {\r\n sortCode: document.getElementById('SortCodePart1').value +\r\n document.getElementById('SortCodePart2').value +\r\n document.getElementById('SortCodePart3').value,\r\n accountNumber: document.getElementById('direct-debit-account-number').value,\r\n };\r\n\r\n const dataToPost = {\r\n __RequestVerificationToken: document.querySelector('input[name=\"__RequestVerificationToken\"]').value,\r\n BankAccountAndSortCodeModel: model,\r\n encryptData: true,\r\n };\r\n\r\n $.ajax({\r\n url: componentConfiguration.TenantConfiguration.ApplicationPath +\r\n 'TakePaymentComponent/AccountDetailsCryptography',\r\n type: 'POST',\r\n cache: false,\r\n dataType: 'json',\r\n data: dataToPost,\r\n success: function(result) {\r\n if (!result.isSuccess) {\r\n bgl.common.utilities.redirectToUrl(result.errorRedirectUrl);\r\n return false;\r\n }\r\n sessionStorage.setItem('AddPaymentMethodDetails1', result.accountNumber);\r\n sessionStorage.setItem('AddPaymentMethodDetails2', result.sortCode);\r\n return true;\r\n },\r\n });\r\n }\r\n\r\n function populateBankAccountDetails() {\r\n const bankAccountNumberEn = sessionStorage.getItem('AddPaymentMethodDetails1');\r\n const sortCodeEn = sessionStorage.getItem('AddPaymentMethodDetails2');\r\n if (bankAccountNumberEn != null || sortCodeEn != null) {\r\n const model = {\r\n sortCode: sortCodeEn,\r\n accountNumber: bankAccountNumberEn,\r\n };\r\n const dataToPost = {\r\n __RequestVerificationToken: document.querySelector('input[name=\"__RequestVerificationToken\"]').value,\r\n BankAccountAndSortCodeModel: model,\r\n encryptData: false,\r\n };\r\n\r\n $.ajax({\r\n url: componentConfiguration.TenantConfiguration.ApplicationPath +\r\n 'TakePaymentComponent/AccountDetailsCryptography',\r\n type: 'POST',\r\n cache: false,\r\n dataType: 'json',\r\n data: dataToPost,\r\n success: function(result) {\r\n if (!result.isSuccess) {\r\n bgl.common.utilities.redirectToUrl(result.errorRedirectUrl);\r\n return false;\r\n }\r\n document.getElementById('direct-debit-account-number').value = result.accountNumber;\r\n const sortCode = result.sortCode;\r\n document.getElementById('SortCodePart1').value = sortCode.substring(0, 2);\r\n document.getElementById('SortCodePart2').value = sortCode.substring(2, 4);\r\n document.getElementById('SortCodePart3').value = sortCode.substring(4, 6);\r\n return true;\r\n },\r\n });\r\n }\r\n return false;\r\n }\r\n\r\n function validateBankAccountAndSortCode() {\r\n const dataToPost = {\r\n __RequestVerificationToken: document.querySelector('input[name=\"__RequestVerificationToken\"]').value,\r\n sortCode: document.getElementById('SortCodePart1').value +\r\n document.getElementById('SortCodePart2').value +\r\n document.getElementById('SortCodePart3').value,\r\n accountNumber: document.getElementById('direct-debit-account-number').value,\r\n };\r\n $.ajax({\r\n url: componentConfiguration.TenantConfiguration.ApplicationPath +\r\n 'TakePaymentComponent/PostAccountNumberAndSortCode',\r\n type: 'POST',\r\n cache: false,\r\n dataType: 'json',\r\n data: dataToPost,\r\n success: function(result) {\r\n if (!result.isSuccess) {\r\n bgl.common.utilities.redirectToUrl(result.errorRedirectUrl);\r\n return false;\r\n }\r\n\r\n switch (result.Result) {\r\n case 'Validated':\r\n if (typeof bgl.common.pubsub !== 'undefined') {\r\n bgl.common.pubsub.emit(\r\n 'fakeFormSubmit',\r\n $('#Direct-Debit-Form').attr('id') ||\r\n $('#Direct-Debit-Form').attr('action') ||\r\n 'unknown',\r\n );\r\n }\r\n removeSortCodeErrorStyle();\r\n removeAccountErrorStyle();\r\n loadAddPaymentConfirmation();\r\n return true;\r\n case 'no values submitted':\r\n case 'sort code or account number invalid':\r\n addAccountErrorStyle();\r\n addSortCodeErrorStyle();\r\n break;\r\n case 'sortCode invalid':\r\n addSortCodeErrorStyle();\r\n break;\r\n case 'accountNumber invalid':\r\n addAccountErrorStyle();\r\n break;\r\n }\r\n\r\n getInvalidAccountNumberOrSortCodeMessages();\r\n return false;\r\n },\r\n });\r\n }\r\n\r\n function loadAddPaymentConfirmation() {\r\n bgl.common.utilities.redirectToUrl(componentConfiguration.RedirectUrl);\r\n }\r\n\r\n function removeSortCodeErrorStyle() {\r\n $('#sortcode-api-validation-message').addClass('hide');\r\n $('#SortCodeLabel').removeClass('sort-code__label--error');\r\n $('#sortcode-api-validation-message').removeClass('sort-code__span--error');\r\n $('#SortCodePart1,#SortCodePart2,#SortCodePart3').removeClass('sort-code__input--error');\r\n cleanAriaDescribedBy('#SortCodePart1,#SortCodePart2,#SortCodePart3');\r\n }\r\n\r\n function addSortCodeErrorStyle() {\r\n $('#sortcode-api-validation-message').removeClass('hide');\r\n $('#SortCodeLabel').addClass('sort-code__label--error');\r\n $('#sortcode-api-validation-message').addClass('sort-code__span--error');\r\n $('#SortCodePart1,#SortCodePart2,#SortCodePart3').addClass('sort-code__input--error')\r\n .attr('aria-describedby', 'sortcode-api-validation-message');\r\n }\r\n\r\n function removeIndividualSortCodeErrorStyle(element) {\r\n $(element).removeClass('sort-code__input--error');\r\n cleanAriaDescribedBy(element);\r\n }\r\n\r\n function addIndividualSortCodeErrorStyle(element) {\r\n $('#SortCodeLabel').addClass('sort-code__label--error');\r\n $('#sortcode-validation-text').removeClass('hide');\r\n $(element).addClass('sort-code__input--error')\r\n .attr('aria-describedby', 'sortcode-validation-text');\r\n }\r\n\r\n function addAccountErrorStyle() {\r\n $('#account-number-validation-message').removeClass('hide');\r\n $('#account-number-validation-message').addClass('sort-code__span--error');\r\n $('#direct-debit-account-number').addClass('sort-code__input--error');\r\n }\r\n\r\n function removeAccountErrorStyle() {\r\n $('#account-number-validation-message').addClass('hide');\r\n $('#account-number-validation-message').removeClass('sort-code__span--error');\r\n $('#direct-debit-account-number').removeClass('sort-code__input--error');\r\n $('#direct-debit-account-number').removeAttr('aria-describedby');\r\n cleanAriaDescribedBy('#direct-debit-account-number');\r\n }\r\n\r\n function cleanAriaDescribedBy(element) {\r\n if ($(element).attr('aria-describedby')) {\r\n $(element).removeAttr('aria-describedby');\r\n }\r\n }\r\n\r\n function getTodaysPaymentSessionData() {\r\n return {\r\n 'Name': sessionStorage.getItem('AddPaymentSelectedPersonIdText'),\r\n 'CardCaptureUri': sessionStorage.getItem('AddPaymentMethodCardCaptureUri'),\r\n 'SecureSessionId': sessionStorage.getItem('AddPaymentMethodSecureSessionId'),\r\n 'SelectedPersonId': sessionStorage.getItem('AddPaymentSelectedPersonIdVal'),\r\n 'ThreeDSecureUri': sessionStorage.getItem('AddPaymentMethodThreeDSecureUri'),\r\n };\r\n }\r\n\r\n function getContinuousPaymentCardSecureSessionData() {\r\n return {\r\n 'Name': sessionStorage.getItem('ContinuousPaymentCardSelectedPersonIdText'),\r\n 'CardCaptureUri': sessionStorage.getItem('AddPaymentMethodCardCaptureUri'),\r\n 'SecureSessionId': sessionStorage.getItem('AddPaymentMethodSecureSessionId'),\r\n 'SelectedPersonId': sessionStorage.getItem('AddPaymentSelectedPersonIdVal'),\r\n 'ThreeDSecureUri': sessionStorage.getItem('AddPaymentMethodThreeDSecureUri'),\r\n };\r\n }\r\n\r\n function scrollToFirstFieldWithErrorAndFocus() {\r\n const firstRequiredField = $('.error,.sort-code__input--error').first();\r\n $('html,body').animate({scrollTop: firstRequiredField.offset().top}, 'slow');\r\n\r\n if (firstRequiredField.length) {\r\n const invalidInputElem = firstRequiredField.find('input, select, textarea')\r\n .addBack('input, select, textarea')[0];\r\n\r\n if (invalidInputElem !== undefined) {\r\n invalidInputElem.focus();\r\n }\r\n }\r\n }\r\n\r\n function getValidationMessages() {\r\n if ($('.form-row').hasClass('error')) {\r\n const data = {\r\n form_section: $('h1').text().trim(),\r\n error_details: [],\r\n };\r\n\r\n $('.error').find('.form-row__validation-text').each(function() {\r\n addError(data, $(this).attr('data-valmsg-for'), $(this).text().trim());\r\n });\r\n\r\n const sortcodeValidationElement = $('#sortcode-validation-text');\r\n if (sortcodeValidationElement.length == 1 && !sortcodeValidationElement.hasClass('hide')) {\r\n addError(data, $('#SortCodeLabel').text().trim(), $('#sortcode-validation-text').text().trim());\r\n }\r\n\r\n const sortcodeApiValidationElement = $('#sortcode-api-validation-message');\r\n if (sortcodeApiValidationElement.length == 1 && !sortcodeApiValidationElement.hasClass('hide')) {\r\n addError(data, $('#SortCodeLabel').text().trim(), $('#sortcode-api-validation-message').text().trim());\r\n }\r\n\r\n bgl.common.pubsub.emit('formValidationFailed', data);\r\n }\r\n }\r\n\r\n function getInvalidAccountNumberOrSortCodeMessages() {\r\n const data = {error_details: []};\r\n\r\n const accountNumberValidationElement = document.getElementById('account-number-validation-message');\r\n if (accountNumberValidationElement && !accountNumberValidationElement.classList.contains('hide')) {\r\n addError(\r\n data,\r\n document.querySelector('label[for=\\'direct-debit-account-number\\']').textContent.trim(),\r\n document.getElementById('account-number-validation-message').textContent.trim(),\r\n );\r\n }\r\n\r\n const sortCodeApiValidationElement = document.getElementById('sortcode-api-validation-message');\r\n if (sortCodeApiValidationElement && !sortCodeApiValidationElement.classList.contains('hide')) {\r\n addError(\r\n data,\r\n document.getElementById('SortCodeLabel').textContent.trim(),\r\n document.getElementById('sortcode-api-validation-message').textContent.trim(),\r\n );\r\n }\r\n\r\n if (data.error_details.length > 0) {\r\n data.form_section = document.querySelector('h1').textContent.trim();\r\n bgl.common.pubsub.emit('formValidationFailed', data);\r\n }\r\n }\r\n\r\n function addError(data, field, message) {\r\n const errorDetail = {\r\n error_field: field,\r\n error_message: message,\r\n };\r\n data.error_details.push(errorDetail);\r\n }\r\n\r\n return {\r\n init: initComponent,\r\n load: loadComponent,\r\n getValidationMessages: getValidationMessages,\r\n getInvalidAccountNumberOrSortCodeMessages: getInvalidAccountNumberOrSortCodeMessages,\r\n };\r\n})();\r\n\r\nif (typeof module !== 'undefined') {\r\n module.exports = bgl.components.takepayment.addpaymentmethod;\r\n}\r\n// eslint-disable-next-line no-var\r\nvar bgl = window.bgl || {};\r\nbgl.components = bgl.components || {};\r\n\r\n// eslint-disable-next-line no-var\r\nvar digitalData = window.digitalData || {};\r\ndigitalData.page_data = digitalData.page_data || {};\r\ndigitalData.user_data = digitalData.user_data || {};\r\ndigitalData.journey_data = digitalData.journey_data || {};\r\ndigitalData.application_data = digitalData.application_data || {};\r\ndigitalData.application_data.insurance_data = digitalData.application_data.insurance_data || {};\r\ndigitalData.my_account = digitalData.my_account || {};\r\ndigitalData.my_account.policy_data = digitalData.my_account.policy_data || {};\r\ndigitalData.my_account.policy_data.policy_change = digitalData.my_account.policy_data.policy_change || {};\r\ndigitalData.my_account.policy_data.policy_cancellation_questions =\r\n digitalData.my_account.policy_data.policy_cancellation_questions || {};\r\n\r\nbgl.components.tagmanager = (function() {\r\n function initComponent() {\r\n setPageProperties();\r\n setReferrerProperties();\r\n setTimestampProperty();\r\n setPageCategories();\r\n subscribeToRetrieveQuoteSuccess();\r\n setJavascriptErrorProperty();\r\n setUpdatedUserDetails();\r\n setUpdatedVehicleDetails();\r\n setUpdatedPaymentDetails();\r\n setCancellationDetails();\r\n subscribeToStatusesAndTimingEvents();\r\n checkStorageAndUpdateApplicationData();\r\n subscribeToErrorData();\r\n subscribeToItemsClickedEvent();\r\n setClickedItemsInDigitalData();\r\n logClicksForLinksAndButtons();\r\n subscribeToFormSubmitEvents();\r\n subscribeToMvtTracking();\r\n }\r\n\r\n function subscribeToFormSubmitEvents() {\r\n const formLoadTime = new Date();\r\n bgl.common.pubsub.on('formSubmit', function(data) {\r\n logFormSubmission(data, formLoadTime);\r\n });\r\n bgl.common.pubsub.on('fakeFormSubmit', function(data) {\r\n logFormSubmission(data, formLoadTime);\r\n });\r\n }\r\n\r\n function logFormSubmission(data, formLoadTime) {\r\n const formData = {\r\n detail: {\r\n form_title: data,\r\n form_section: $('h1:visible:first').text().replace(/\\s\\s+/g, ' ').trim(),\r\n form_page: digitalData.page_data.page_title,\r\n page_url: digitalData.page_data.page_url,\r\n time_to_complete: calculateTimeTaken(formLoadTime, new Date()),\r\n },\r\n };\r\n document.dispatchEvent(new CustomEvent('form_completed', formData));\r\n }\r\n\r\n function setPageProperties() {\r\n digitalData.page_data.page_url = window.location.href;\r\n digitalData.page_data.page_title = document.title;\r\n digitalData.page_data.page_path = window.location.pathname;\r\n }\r\n\r\n function setReferrerProperties() {\r\n digitalData.page_data.page_previous_url = document.referrer;\r\n if (document.referrer.length > 0) {\r\n const newUrl = new URL(document.referrer);\r\n digitalData.page_data.page_previous_path = newUrl.pathname;\r\n }\r\n }\r\n\r\n function setTimestampProperty() {\r\n digitalData.page_data.timestamp = (new Date()).toString();\r\n }\r\n\r\n function setPageCategories() {\r\n const pathArray = window.location.pathname.split('/');\r\n pathArray.pop();\r\n digitalData.page_data.page_categories = pathArray;\r\n }\r\n\r\n function setJavascriptErrorProperty() {\r\n digitalData.page_data.javascript_errors = [];\r\n window.onerror = function(error, url, line) {\r\n digitalData.page_data.javascript_errors.push('ERR:' + error + ' URL:' + url + ' L:' + line);\r\n };\r\n }\r\n\r\n function logClicksForLinksAndButtons() {\r\n $('i[data-type=\"policy-overview-slide-panel-navigation\"]').click(function(event) {\r\n const clickedLink = $(event.target).parent().attr('id');\r\n bgl.common.pubsub.emit('SlidePanelClicked', clickedLink);\r\n });\r\n\r\n $('a[data-type=\"policy-navigation\"]').click(function(event) {\r\n let clickedLink = $(event.target).text().trim();\r\n if (clickedLink === '') {\r\n clickedLink = $(event.target).parent().text().trim();\r\n }\r\n bgl.common.pubsub.emit('NavigationBarClicked', clickedLink);\r\n });\r\n\r\n $('a[data-testid=\"footer__contact-us\"], a[data-testid=\"footer__privacy-policy\"]').click(function(event) {\r\n const clickedLink = $(event.target).text().trim();\r\n bgl.common.pubsub.emit('FooterClicked', clickedLink);\r\n });\r\n\r\n $('#ChangePaymentMethod, #PaymentSuccessful_ChangePaymentDate').click(function(event) {\r\n const clickedSlidePanel = $(event.target).attr('id');\r\n bgl.common.pubsub.emit('SlidePanelClicked', clickedSlidePanel);\r\n });\r\n\r\n $('i[data-type=\"slide-panel-navigation\"]').on('click',\r\n function(event) {\r\n let clickedSlidePanel = $(event.target).parent().attr('data-edit-action-key');\r\n if (clickedSlidePanel === undefined) {\r\n clickedSlidePanel = $(event.target).parent().attr('data-cover-key');\r\n if (clickedSlidePanel === undefined) {\r\n clickedSlidePanel = $(event.target).parent().attr('data-action');\r\n }\r\n }\r\n bgl.common.pubsub.emit('SlidePanelClicked', clickedSlidePanel);\r\n });\r\n }\r\n\r\n function setUpdatedUserDetails() {\r\n digitalData.user_data.detail_updated = JSON.parse(sessionStorage.getItem('ChangedUserData'));\r\n }\r\n\r\n function setUpdatedVehicleDetails() {\r\n digitalData.my_account.policy_data.policy_change = digitalData.my_account.policy_data.policy_change || {};\r\n digitalData.my_account.policy_data.policy_change.vehicle_details =\r\n digitalData.my_account.policy_data.policy_change.vehicle_details || {};\r\n digitalData.application_data.insurance_data.quote_updated = JSON.parse(\r\n sessionStorage.getItem('ChangedVehicleData'),\r\n );\r\n getChangedPolicyData();\r\n\r\n if (jQuery.isEmptyObject(digitalData.my_account.policy_data.policy_change.vehicle_details) !== true) {\r\n digitalData.my_account.policy_data.policy_change.vehicle_changed = true;\r\n }\r\n }\r\n\r\n function setUpdatedPaymentDetails() {\r\n const paymentChange = sessionStorage.getItem('PaymentUpdated');\r\n if (paymentChange === null) {\r\n digitalData.my_account.policy_data.payment_method_changes = false;\r\n } else {\r\n digitalData.my_account.policy_data.payment_method_changes = true;\r\n digitalData.my_account.policy_data.payment_method_selected = paymentChange;\r\n }\r\n }\r\n\r\n function setCancellationDetails() {\r\n const cancellationReason = sessionStorage.getItem('TagManager.CancellationReason');\r\n const cancellationDate = sessionStorage.getItem('TagManager.CancellationDate');\r\n if (cancellationReason === null && cancellationDate === null) {\r\n digitalData.my_account.policy_data.policy_cancellation = false;\r\n } else {\r\n digitalData.my_account.policy_data.policy_cancellation = true;\r\n const why = {\r\n cancellation_question: 'Why',\r\n cancellation_answer: cancellationReason,\r\n };\r\n const when = {\r\n cancellation_question: 'When',\r\n cancellation_answer: cancellationDate,\r\n };\r\n digitalData.my_account.policy_data.policy_cancellation_questions = [why, when];\r\n }\r\n }\r\n\r\n function subscribeToItemsClickedEvent() {\r\n bgl.common.pubsub.on('NavigationBarClicked', function(clickedItem) {\r\n storeClicksInNavigationBarForTagManager(clickedItem);\r\n });\r\n\r\n bgl.common.pubsub.on('FooterClicked', function(clickedItem) {\r\n storeClicksInFooterForTagManager(clickedItem);\r\n });\r\n\r\n bgl.common.pubsub.on('SlidePanelClicked', function(clickedItem) {\r\n storeClicksOnSlidePanelForTagManager(clickedItem);\r\n });\r\n }\r\n\r\n function storeClicksInNavigationBarForTagManager(clickedItem) {\r\n const data = getPreviouslyStoredClickedItemsInHeader();\r\n if (clickedItem) {\r\n data.push(['HeaderItemClicked', clickedItem]);\r\n setPreviouslyStoredClickedItemsInHeader(data);\r\n }\r\n }\r\n\r\n function storeClicksInFooterForTagManager(clickedItem) {\r\n const data = getPreviouslyStoredClickedItemsInFooter();\r\n if (clickedItem) {\r\n data.push(['FooterItemClicked', clickedItem]);\r\n setPreviouslyStoredClickedItemsInFooter(data);\r\n }\r\n }\r\n\r\n function storeClicksOnSlidePanelForTagManager(clickedItem) {\r\n const data = getPreviouslyStoredClickedSlidePanels();\r\n if (clickedItem) {\r\n data.push(['SlidePanelClicked', clickedItem]);\r\n setPreviouslyStoredClickedSlidePanels(data);\r\n }\r\n }\r\n\r\n function setClickedItemsInDigitalData() {\r\n if (sessionStorage.getItem('NavigationBarClicked') !== null) {\r\n digitalData.journey_data.megamenu_clicked = true;\r\n digitalData.journey_data.megamenu_item_clicked =\r\n JSON.parse(sessionStorage.getItem('NavigationBarClicked'));\r\n }\r\n\r\n if (sessionStorage.getItem('FooterClicked') !== null) {\r\n digitalData.journey_data.footer_clicked = true;\r\n digitalData.journey_data.footer_item_clicked =\r\n JSON.parse(sessionStorage.getItem('FooterClicked'));\r\n }\r\n\r\n if (sessionStorage.getItem('SlidePanelClicked') !== null) {\r\n digitalData.journey_data.page_body_item_clicked =\r\n JSON.parse(sessionStorage.getItem('SlidePanelClicked'));\r\n }\r\n\r\n if (sessionStorage.getItem('PaperlessStatus') !== null) {\r\n digitalData.my_account.policy_data.paperless_status = sessionStorage.getItem('PaperlessStatus');\r\n }\r\n }\r\n\r\n function getPreviouslyStoredClickedItemsInHeader() {\r\n let data = [];\r\n\r\n if (sessionStorage.getItem('NavigationBarClicked') !== null) {\r\n data = JSON.parse(sessionStorage.getItem('NavigationBarClicked'));\r\n }\r\n\r\n return data;\r\n }\r\n\r\n function getPreviouslyStoredClickedItemsInFooter() {\r\n let data = [];\r\n\r\n if (sessionStorage.getItem('FooterClicked') !== null) {\r\n data = JSON.parse(sessionStorage.getItem('FooterClicked'));\r\n }\r\n\r\n return data;\r\n }\r\n\r\n function getPreviouslyStoredClickedSlidePanels() {\r\n let data = [];\r\n\r\n if (sessionStorage.getItem('SlidePanelClicked') !== null) {\r\n data = JSON.parse(sessionStorage.getItem('SlidePanelClicked'));\r\n }\r\n\r\n return data;\r\n }\r\n\r\n function setPreviouslyStoredClickedItemsInHeader(data) {\r\n sessionStorage.setItem('NavigationBarClicked', JSON.stringify(data));\r\n }\r\n\r\n function setPreviouslyStoredClickedItemsInFooter(data) {\r\n sessionStorage.setItem('FooterClicked', JSON.stringify(data));\r\n }\r\n\r\n function setPreviouslyStoredClickedSlidePanels(data) {\r\n sessionStorage.setItem('SlidePanelClicked', JSON.stringify(data));\r\n }\r\n\r\n function getChangedPolicyData() {\r\n const changedVehicleData = JSON.parse(sessionStorage.getItem('ChangedVehicleData'));\r\n\r\n if (changedVehicleData !== null) {\r\n for (let i = 0; i < changedVehicleData.length; i++) {\r\n setChangedVehicleDataItems(changedVehicleData[i]);\r\n }\r\n }\r\n }\r\n\r\n function setChangedVehicleDataItems(changedItemArray) {\r\n if (changedItemArray[0] === 'Manufacturer') {\r\n digitalData.my_account.policy_data.policy_change.vehicle_details.vehicle_make = changedItemArray[1];\r\n }\r\n\r\n if (changedItemArray[0] === 'Model') {\r\n digitalData.my_account.policy_data.policy_change.vehicle_details.vehicle_model = changedItemArray[1];\r\n }\r\n\r\n if (changedItemArray[0] === 'Age') {\r\n digitalData.my_account.policy_data.policy_change.vehicle_details.vehicle_age = changedItemArray[1];\r\n }\r\n\r\n if (changedItemArray[0] === 'VehicleOvernightParking') {\r\n digitalData.my_account.policy_data.policy_change.vehicle_details.vehicle_overnight_parking =\r\n changedItemArray[1];\r\n }\r\n\r\n if (changedItemArray[0] === 'CustomerVehicleValue') {\r\n digitalData.my_account.policy_data.policy_change.vehicle_details.vehicle_value = changedItemArray[1];\r\n }\r\n\r\n if (changedItemArray[0] === 'Age') {\r\n digitalData.my_account.policy_data.policy_change.vehicle_details.vehicle_age = changedItemArray[1];\r\n }\r\n }\r\n\r\n function checkStorageAndUpdateApplicationData() {\r\n checkForSessionAndClearStorageItems();\r\n checkForStartedTimeAndUpdateDigitalData();\r\n checkForQuoteSavedAndUpdateDigitalData();\r\n checkForQuoteRetrievedAndUpdateDigitalData();\r\n checkForPaymentSuccessfulAndUpdateDigitalData();\r\n checkForPaymentUnsuccessfulAndUpdateDigitalData();\r\n checkForApplicationOrderedTimeAndUpdateDigitalData();\r\n storeTimeTakenInDigitalData();\r\n checkForQuotedTimeAndUpdateDigitalData();\r\n checkForUnableToQuoteAndUpdateDigitalData();\r\n checkForOrderStartTimeAndUpdateDigitalData();\r\n }\r\n\r\n function subscribeToRetrieveQuoteSuccess() {\r\n bgl.common.pubsub.on('RetrieveQuoteSuccess',\r\n function() {\r\n localStorage.setItem('RetrieveQuoteSuccess', true);\r\n });\r\n }\r\n\r\n function checkForSessionAndClearStorageItems() {\r\n if (localStorage.getItem('Session') !== digitalData.user_data.user_id) {\r\n localStorage.setItem('ApplicationOrderedTime', '');\r\n localStorage.setItem('QuoteRetrieved', '');\r\n localStorage.setItem('ApplicationOrderStartTime', '');\r\n localStorage.setItem('ApplicationStartedTime', '');\r\n localStorage.setItem('QuoteSaved', '');\r\n localStorage.setItem('PaymentSuccessful', '');\r\n localStorage.setItem('PaymentUnsuccessful', '');\r\n localStorage.setItem('ApplicationQuotedTime', '');\r\n localStorage.setItem('UnableToQuote', '');\r\n\r\n localStorage.setItem('Session', digitalData.user_data.user_id);\r\n }\r\n if (localStorage.getItem('RetrieveQuoteSuccess') === true ||\r\n localStorage.getItem('RetrieveQuoteSuccess') === 'true') {\r\n localStorage.setItem('QuoteRetrieved', true);\r\n localStorage.removeItem('RetrieveQuoteSuccess');\r\n }\r\n }\r\n\r\n function subscribeToStatusesAndTimingEvents() {\r\n bgl.common.pubsub.on('ApplicationStarted', function(getAppStartTime) {\r\n storeApplicationStartedTIme(getAppStartTime);\r\n checkForStartedTimeAndUpdateDigitalData();\r\n });\r\n\r\n bgl.common.pubsub.on('ApplicationQuoted', function(getAppQuotedTime) {\r\n storeApplicationQuotedTimeAndOrderStartTime(getAppQuotedTime);\r\n checkForQuotedTimeAndUpdateDigitalData();\r\n });\r\n\r\n bgl.common.pubsub.on('UnableToQuote', function() {\r\n localStorage.setItem('UnableToQuote', true);\r\n checkForUnableToQuoteAndUpdateDigitalData();\r\n });\r\n\r\n bgl.common.pubsub.on('SavedQuote', function() {\r\n localStorage.setItem('QuoteSaved', true);\r\n checkForQuoteSavedAndUpdateDigitalData();\r\n });\r\n\r\n bgl.common.pubsub.on('QuoteRetrieved', function() {\r\n localStorage.setItem('QuoteRetrieved', true);\r\n checkForQuoteRetrievedAndUpdateDigitalData();\r\n });\r\n\r\n bgl.common.pubsub.on('PaymentSuccessful', function(applicationOrderedTime) {\r\n localStorage.setItem('PaymentSuccessful', true);\r\n storeApplicationOrderedTime(applicationOrderedTime);\r\n checkForPaymentSuccessfulAndUpdateDigitalData();\r\n });\r\n\r\n bgl.common.pubsub.on('PaymentUnsuccessful', function() {\r\n localStorage.setItem('PaymentUnsuccessful', true);\r\n checkForPaymentUnsuccessfulAndUpdateDigitalData();\r\n });\r\n }\r\n\r\n function checkForStartedTimeAndUpdateDigitalData() {\r\n if (localStorage.getItem('ApplicationStartedTime') !== '') {\r\n digitalData.application_data.application_started = true;\r\n }\r\n }\r\n\r\n function checkForOrderStartTimeAndUpdateDigitalData() {\r\n if (localStorage.getItem('ApplicationOrderStartTime') !== '') {\r\n digitalData.application_data.application_quoted = true;\r\n }\r\n }\r\n\r\n function checkForQuoteSavedAndUpdateDigitalData() {\r\n if (localStorage.getItem('QuoteSaved') !== '') {\r\n digitalData.application_data.application_saved = true;\r\n }\r\n }\r\n\r\n function checkForQuoteRetrievedAndUpdateDigitalData() {\r\n if (localStorage.getItem('QuoteRetrieved') !== '') {\r\n digitalData.application_data.retrieved_quote = true;\r\n }\r\n }\r\n\r\n function checkForPaymentSuccessfulAndUpdateDigitalData() {\r\n if (localStorage.getItem('PaymentSuccessful') !== '') {\r\n digitalData.application_data.application_ordered = true;\r\n checkForApplicationOrderedTimeAndUpdateDigitalData();\r\n }\r\n }\r\n\r\n function checkForPaymentUnsuccessfulAndUpdateDigitalData() {\r\n if (localStorage.getItem('PaymentUnsuccessful') !== '') {\r\n digitalData.application_data.application_failed_payment = true;\r\n }\r\n }\r\n\r\n function checkForApplicationOrderedTimeAndUpdateDigitalData() {\r\n if (localStorage.getItem('ApplicationOrderedTime') !== '') {\r\n const orderStartTime = Date.parse(localStorage.getItem('ApplicationOrderStartTime'));\r\n const orderEndTime = Date.parse(localStorage.getItem('ApplicationOrderedTime'));\r\n\r\n digitalData.application_data.application_time_to_order = calculateTimeTaken(orderStartTime, orderEndTime);\r\n }\r\n }\r\n\r\n function storeTimeTakenInDigitalData() {\r\n if (localStorage.getItem('ApplicationQuotedTime') !== '' &&\r\n localStorage.getItem('ApplicationStartedTime') !== '') {\r\n const quoteStartTime = Date.parse(localStorage.getItem('ApplicationStartedTime'));\r\n const quoteEndTime = Date.parse(localStorage.getItem('ApplicationQuotedTime'));\r\n digitalData.application_data.application_time_to_quote = calculateTimeTaken(quoteStartTime, quoteEndTime);\r\n }\r\n }\r\n\r\n function checkForQuotedTimeAndUpdateDigitalData() {\r\n if (localStorage.getItem('ApplicationQuotedTime') !== '') {\r\n digitalData.application_data.application_quoted = true;\r\n }\r\n }\r\n\r\n function checkForUnableToQuoteAndUpdateDigitalData() {\r\n if (localStorage.getItem('UnableToQuote') !== '' && digitalData.application_data.application_quoted === true) {\r\n digitalData.application_data.application_failed_order = true;\r\n } else if (localStorage.getItem('UnableToQuote') !== '' &&\r\n localStorage.getItem('Session') === digitalData.user_data.user_id) {\r\n digitalData.application_data.quote_failed = true;\r\n }\r\n }\r\n\r\n function storeApplicationStartedTIme(getAppStartTime) {\r\n if (localStorage.getItem('ApplicationStartedTime') === '') {\r\n localStorage.setItem('ApplicationStartedTime', getAppStartTime);\r\n }\r\n }\r\n\r\n function storeApplicationQuotedTimeAndOrderStartTime(getAppQuotedTime) {\r\n if (localStorage.getItem('ApplicationQuotedTime') === '') {\r\n localStorage.setItem('ApplicationQuotedTime', getAppQuotedTime);\r\n localStorage.setItem('ApplicationOrderStartTime', getAppQuotedTime);\r\n storeTimeTakenInDigitalData();\r\n }\r\n }\r\n\r\n function storeApplicationOrderedTime(applicationOrderedTime) {\r\n if (localStorage.getItem('PaymentSuccessful') !== '') {\r\n localStorage.setItem('ApplicationOrderedTime', applicationOrderedTime);\r\n }\r\n }\r\n\r\n function calculateTimeTaken(startTime, endTime) {\r\n const duration = endTime - startTime;\r\n\r\n let seconds = Math.floor((duration / 1000) % 60);\r\n let minutes = Math.floor((duration / (1000 * 60)) % 60);\r\n let hours = Math.floor((duration / (1000 * 60 * 60)) % 24);\r\n\r\n hours = (hours < 10) ? '0' + hours : hours;\r\n minutes = (minutes < 10) ? '0' + minutes : minutes;\r\n seconds = (seconds < 10) ? '0' + seconds : seconds;\r\n\r\n const timeTakenToQuote = (hours + ':' + minutes + ':' + seconds);\r\n\r\n return timeTakenToQuote;\r\n }\r\n\r\n function subscribeToErrorData() {\r\n bgl.common.pubsub.on('formValidationFailed', function(data) {\r\n document.dispatchEvent(new CustomEvent('form_field_error', {\r\n detail: {\r\n form_title: digitalData.page_data.page_path,\r\n form_section: data.form_section,\r\n form_page: digitalData.page_data.page_title,\r\n page_url: digitalData.page_data.page_url,\r\n error_details: [data.error_details],\r\n },\r\n }));\r\n });\r\n }\r\n\r\n function subscribeToMvtTracking() {\r\n bgl.common.pubsub.on('MvtRunning', function(testName, variation) {\r\n trackMvtRunning(testName, variation);\r\n });\r\n }\r\n\r\n function trackMvtRunning(testName, variation) {\r\n _satellite.track('targetClickTracking', {\r\n testType: 'MVT',\r\n testName: testName,\r\n variation: variation,\r\n });\r\n }\r\n\r\n return {\r\n init: initComponent,\r\n };\r\n})();\r\n\r\nif (typeof module !== 'undefined') {\r\n module.exports = bgl.components.tagmanager;\r\n}\r\n// eslint-disable-next-line no-var\r\nvar bgl = window.bgl || {};\r\nbgl.components = bgl.components || {};\r\n\r\nbgl.components.staticbasketbutton = (function() {\r\n let configuration;\r\n\r\n function initComponent(componentConfiguration) {\r\n configuration = componentConfiguration;\r\n\r\n subscribeToUpdateBasketPubSubEvent();\r\n subscribeToSwitchPaymentTypePubSubEvent();\r\n\r\n setOpenBasketPanelEvent();\r\n }\r\n\r\n function setOpenBasketPanelEvent() {\r\n const shoppingBasketButton = document.getElementById('shopping-basket-mvt');\r\n\r\n shoppingBasketButton.addEventListener('click', function() {\r\n const basketPanel = document.getElementById('basket-panel');\r\n\r\n basketPanel.classList.add('active');\r\n basketPanel.classList.remove('hide-panel');\r\n\r\n bgl.common.overlay.show(false);\r\n });\r\n }\r\n\r\n function subscribeToSwitchPaymentTypePubSubEvent() {\r\n bgl.common.pubsub.on('switchPaymentType', function(isMonthly) {\r\n switchPaymentType(isMonthly);\r\n });\r\n }\r\n\r\n function switchPaymentType(isMonthly) {\r\n if (isMonthly === true) {\r\n $('#price-monthly').removeClass('hide');\r\n $('#price-annually').addClass('hide');\r\n }\r\n if (isMonthly === false) {\r\n $('#price-monthly').addClass('hide');\r\n $('#price-annually').removeClass('hide');\r\n }\r\n }\r\n\r\n function subscribeToUpdateBasketPubSubEvent() {\r\n bgl.common.pubsub.off('UpdateBasket', updateBasket);\r\n bgl.common.pubsub.on('UpdateBasket', updateBasket);\r\n }\r\n\r\n function updateBasket(callback) {\r\n bgl.common.loader.loadAndReplace(configuration,\r\n configuration.ComponentUrl,\r\n 'shopping-basket-button',\r\n function() {\r\n initComponent(configuration);\r\n });\r\n }\r\n\r\n return {\r\n init: initComponent,\r\n };\r\n})();\r\n// eslint-disable-next-line no-var\r\nvar bgl = window.bgl || {};\r\nbgl.components = bgl.components || {};\r\n\r\nbgl.components.staticbasket = (function() {\r\n let configuration;\r\n let basketPanel;\r\n let slidePanel;\r\n\r\n function initComponent(componentConfiguration) {\r\n configuration = componentConfiguration;\r\n basketPanel = $('#basket-panel');\r\n slidePanel = document.getElementById('SlidePanel');\r\n\r\n bgl.common.accordions.init();\r\n\r\n subscribeToUpdateBasketPubSubEvent();\r\n subscribeToSwitchPaymentTypePubSubEvent();\r\n\r\n setContinueButtonText();\r\n setCloseBasketPanelEvent();\r\n setClickOnOverlayEvent();\r\n setEscapeOnOverlayEvent();\r\n setSlidePanelClassChangeEventBinding();\r\n }\r\n\r\n function setSlidePanelClassChangeEventBinding() {\r\n const mutationObserver = new MutationObserver(function(mutations) {\r\n mutations.forEach(function() {\r\n setPositionOfHoustonInSlider();\r\n });\r\n });\r\n\r\n mutationObserver.observe(slidePanel, {\r\n attributes: true,\r\n attributeFilter: ['class'],\r\n });\r\n }\r\n\r\n function setContinueButtonText() {\r\n $('#next-button, #next-page-button, #continue-button')\r\n .text(configuration.ContinueButtonText);\r\n }\r\n\r\n function setCloseBasketPanelEvent() {\r\n $('#basket-panel-close').click(function() {\r\n basketPanel.addClass('hide-panel').removeClass('active');\r\n bgl.common.overlay.hide();\r\n });\r\n }\r\n\r\n function setClickOnOverlayEvent() {\r\n $(document).on('click', '#overlay', function() {\r\n basketPanel.addClass('hide-panel');\r\n bgl.common.overlay.hide();\r\n });\r\n }\r\n\r\n function setEscapeOnOverlayEvent() {\r\n $(document).keyup(function(e) {\r\n if (e.key === 'Escape') {\r\n basketPanel.addClass('hide-panel');\r\n bgl.common.overlay.hide();\r\n }\r\n });\r\n }\r\n\r\n function subscribeToSwitchPaymentTypePubSubEvent() {\r\n bgl.common.pubsub.on('switchPaymentType', function(isMonthly) {\r\n switchPaymentType(isMonthly);\r\n });\r\n }\r\n\r\n function switchPaymentType(isMonthly) {\r\n if (isMonthly === true) {\r\n $('#basket-aside-price-monthly').removeClass('hide');\r\n $('#basket-aside-price-annually').addClass('hide');\r\n\r\n $('#basket-aside-cost-breakdown-monthly').removeClass('hide');\r\n $('#basket-aside-cost-breakdown-annually').addClass('hide');\r\n }\r\n if (isMonthly === false) {\r\n $('#basket-aside-price-monthly').addClass('hide');\r\n $('#basket-aside-price-annually').removeClass('hide');\r\n\r\n $('#basket-aside-cost-breakdown-monthly').addClass('hide');\r\n $('#basket-aside-cost-breakdown-annually').removeClass('hide');\r\n }\r\n }\r\n\r\n function subscribeToUpdateBasketPubSubEvent() {\r\n bgl.common.pubsub.off('UpdateBasket', updateBasket);\r\n bgl.common.pubsub.on('UpdateBasket', updateBasket);\r\n }\r\n\r\n function updateBasket() {\r\n bgl.common.loader.loadAndReplace(configuration,\r\n configuration.ComponentUrl,\r\n 'basket-panel',\r\n function() {\r\n initComponent(configuration);\r\n });\r\n }\r\n\r\n function setPositionOfHoustonInSlider() {\r\n const houstonContainer = document.getElementById('HoustonContainer');\r\n\r\n if (slidePanel.classList.contains('active')) {\r\n houstonContainer.classList.remove('houston-container--outside-slider');\r\n houstonContainer.classList.add('houston-container--within-slider');\r\n } else if (slidePanel.classList.contains('hide-panel')) {\r\n houstonContainer.classList.remove('houston-container--within-slider');\r\n houstonContainer.classList.add('houston-container--outside-slider');\r\n }\r\n }\r\n\r\n return {\r\n init: initComponent,\r\n setPositionOfHoustonInSlider: setPositionOfHoustonInSlider,\r\n };\r\n})();\r\nvar bgl = window.bgl || {};\r\nbgl.components = bgl.components || {};\r\n\r\nbgl.components.retrievequote = (function () {\r\n var configuration;\r\n\r\n function initComponent(componentConfiguration) {\r\n\r\n configuration = componentConfiguration;\r\n\r\n var form = $('#retrieve-quote-form');\r\n bgl.common.validator.init(form);\r\n bgl.common.date.initDateFormat($('#DateOfBirth'));\r\n\r\n $('#DontKnowQuoteButton').off('click').on('click',\r\n function (event) {\r\n event.preventDefault();\r\n bgl.common.pubsub.emit('showContactDataNotification');\r\n });\r\n\r\n form.off('submit')\r\n .on('submit',\r\n function (event) {\r\n event.preventDefault();\r\n\r\n var errorMessageBox = $('.error-messagebox');\r\n var form = $(this);\r\n\r\n if (errorMessageBox) {\r\n errorMessageBox.hide();\r\n }\r\n\r\n if (bgl.common.validator.isFormValid(form)) {\r\n bgl.components.recaptcha.populateToken(function () {\r\n bgl.common.validator.submitForm(form, configuration);\r\n });\r\n }\r\n });\r\n }\r\n\r\n function onSuccess(configuration, data) {\r\n bgl.common.pubsub.emit('RetrieveQuoteSuccess');\r\n if (data.redirectUrl) {\r\n bgl.common.pubsub.emit('PollBasket',\r\n {\r\n callback: function () {\r\n bgl.common.utilities.redirectToUrl(data.redirectUrl);\r\n },\r\n hideNotification: true\r\n });\r\n }\r\n }\r\n\r\n function onError() {\r\n bgl.components.retrievequote.init(configuration);\r\n bgl.components.recaptcha.addHiddenInputToForm();\r\n }\r\n\r\n return {\r\n init: initComponent,\r\n onSuccess: onSuccess,\r\n onError: onError\r\n };\r\n\r\n})();var bgl = window.bgl || {};\r\nbgl.components = bgl.components || {};\r\n\r\nbgl.components.recaptcha = (function () {\r\n var configuration, tokenInput;\r\n\r\n function initComponent(componentConfiguration) {\r\n configuration = componentConfiguration;\r\n\r\n addHiddenInputToForm();\r\n addScriptToHead();\r\n }\r\n\r\n function addHiddenInputToForm() {\r\n var form = document.querySelector(configuration.formCssSelector);\r\n\r\n tokenInput = document.createElement('input');\r\n tokenInput.type = 'hidden';\r\n tokenInput.name = 'recaptchaToken';\r\n\r\n form.appendChild(tokenInput);\r\n }\r\n\r\n function addScriptToHead() {\r\n var scripts = [].slice.call(document.querySelectorAll('head script'));\r\n var indexOfExistingScript = scripts.map(function(x) {\r\n return x.src;\r\n }).indexOf(\"https://www.google.com/recaptcha/api.js?render=siteKey\");\r\n\r\n if (indexOfExistingScript > -1) {\r\n return;\r\n }\r\n\r\n var head = document.getElementsByTagName('head')[0];\r\n var script = document.createElement('script');\r\n script.type = 'text/javascript';\r\n script.src = 'https://www.google.com/recaptcha/api.js?render=' + configuration.siteKey;\r\n head.appendChild(script);\r\n }\r\n\r\n function populateToken(callback) {\r\n grecaptcha.execute(configuration.siteKey, { action: configuration.Id })\r\n .then(function (token) {\r\n tokenInput.value = token;\r\n \r\n if (callback) {\r\n callback(token);\r\n }\r\n });\r\n }\r\n\r\n return {\r\n init: initComponent,\r\n populateToken: populateToken,\r\n addHiddenInputToForm: addHiddenInputToForm\r\n };\r\n})();\r\n\r\nif (typeof module !== 'undefined') {\r\n module.exports = bgl.components.recaptcha;\r\n}// eslint-disable-next-line no-var\r\nvar bgl = window.bgl || {};\r\nbgl.components = bgl.components || {};\r\nbgl.components.pagereloader = bgl.components.pagereloader || {};\r\n\r\nbgl.components.pagereloader.policydocumentinterim = (function() {\r\n function loadComponent(componentConfiguration, componentUrl, containerElementId) {\r\n bgl.common.loader.load(\r\n componentConfiguration,\r\n componentUrl,\r\n containerElementId,\r\n function() {\r\n initComponent(componentConfiguration);\r\n });\r\n }\r\n\r\n function initComponent(componentConfiguration) {\r\n const downloadCookieName = 'PdfCreated';\r\n const documentUrlElement = document.body.querySelector('#documentUrl');\r\n const downloadingInProgressContent = document.body.querySelector('#spinner');\r\n const downloadCompleteContent = document.body.querySelector('#downloadedMessage');\r\n handleDocumentDownload(\r\n downloadCookieName,\r\n downloadingInProgressContent,\r\n downloadCompleteContent,\r\n documentUrlElement);\r\n }\r\n\r\n function handleDocumentDownload(\r\n downloadCookieName,\r\n downloadingInProgressContent,\r\n downloadCompleteContent,\r\n documentUrlElement) {\r\n bgl.common.cookie.deleteCookie(downloadCookieName);\r\n const checkForDownloadCompleted = setInterval(\r\n () => {\r\n showDownloadedContentIfDocumentDownloaded(\r\n downloadCookieName,\r\n downloadingInProgressContent,\r\n downloadCompleteContent,\r\n checkForDownloadCompleted);\r\n },\r\n 500);\r\n bgl.common.utilities.redirectToUrl(documentUrlElement.value);\r\n }\r\n\r\n function showDownloadedContentIfDocumentDownloaded(\r\n cookieName,\r\n downloadingInProgressContent,\r\n downloadCompleteContent,\r\n checkForDownloadCompleted) {\r\n if (hasDocumentDownloaded(cookieName)) {\r\n clearInterval(checkForDownloadCompleted);\r\n downloadingInProgressContent.classList.add('hide');\r\n downloadCompleteContent.classList.remove('hide');\r\n }\r\n }\r\n\r\n function hasDocumentDownloaded(cookieName) {\r\n return bgl.common.cookie.getCookie(cookieName) != undefined;\r\n }\r\n\r\n return {\r\n init: initComponent,\r\n load: loadComponent,\r\n hasDocumentDownloaded: hasDocumentDownloaded,\r\n showDownloadedContentIfDocumentDownloaded: showDownloadedContentIfDocumentDownloaded,\r\n handleDocumentDownload: handleDocumentDownload,\r\n };\r\n})();\r\n\r\nif (typeof module !== 'undefined') {\r\n module.exports = bgl.components.pagereloader;\r\n}\r\n// eslint-disable-next-line no-var\r\nvar bgl = window.bgl || {};\r\nbgl.components = bgl.components || {};\r\nbgl.components.pagereloader = bgl.components.pagereloader || {};\r\n\r\nbgl.components.pagereloader.loader = (function() {\r\n let applicationPath = '';\r\n\r\n function initComponent(componentConfiguration) {\r\n applicationPath = componentConfiguration.TenantConfiguration.ApplicationPath;\r\n bgl.common.pubsub.on('PollBasket', function(options) {\r\n pollBasket(options);\r\n });\r\n }\r\n\r\n function pollBasket(options) {\r\n const interval = 500;\r\n const timeoutDuration = 30000;\r\n const pollUrl = 'PageReloaderComponent/IsUnderwritingComplete';\r\n const tickCount = new Date().getTime();\r\n const timeout = tickCount + timeoutDuration;\r\n bgl.components.pagereloader.poller.poll(\r\n timeout,\r\n interval,\r\n false,\r\n pollUrl,\r\n applicationPath,\r\n options);\r\n }\r\n\r\n return {\r\n init: initComponent,\r\n };\r\n})();\r\n\r\nbgl.components.pagereloader.poller = (function() {\r\n const notificationObj = {\r\n cat: 'underwriting',\r\n msg: {\r\n annual:\r\n 'OK ##FIRSTNAME##, your new price is £##PRICE##. The underwriter for your policy is ##UNDERWRITER##.',\r\n monthly:\r\n `OK ##FIRSTNAME##, your new price is £##PRICE## a month with a deposit of £##DEPOSIT##.\r\n The underwriter for your policy is ##UNDERWRITER##.`,\r\n },\r\n };\r\n\r\n function poll(timeout, interval, isSpinnerVisible, pollUrl, applicationPath, options) {\r\n options = options || {};\r\n\r\n if (options.hideSpinnerOnInitialAttempt || options.noSpinner) {\r\n options.hideSpinnerOnInitialAttempt = false;\r\n } else {\r\n bgl.components.pagereloader.poller.showSpinner(isSpinnerVisible, options.spinnerName);\r\n isSpinnerVisible = true;\r\n }\r\n\r\n $.ajax({\r\n url: applicationPath + pollUrl,\r\n type: 'Get',\r\n cache: false,\r\n dataType: 'json',\r\n success: function(response) {\r\n if (response.IsSuccess === true) {\r\n if (response.statusCode === 202) {\r\n if (timeout >= new Date().getTime()) {\r\n setTimeout(\r\n function() {\r\n bgl.components.pagereloader.poller.poll(\r\n timeout,\r\n interval,\r\n isSpinnerVisible,\r\n pollUrl,\r\n applicationPath,\r\n options);\r\n },\r\n interval);\r\n } else {\r\n bgl.components.pagereloader.poller\r\n .goToUnderwritingTimeOutPage(applicationPath);\r\n }\r\n } else if (response.statusCode === 400) {\r\n removeNotificationFromSessionStorage();\r\n bgl.components.pagereloader.poller\r\n .goToUnableToQuoteOnlinePage(applicationPath);\r\n } else {\r\n if (options.hideNotification) {\r\n removeNotificationFromSessionStorage();\r\n }\r\n bgl.components.pagereloader.poller.reloadPage(\r\n options.callback,\r\n options.hideNotification,\r\n options.redirectUrl,\r\n );\r\n }\r\n } else {\r\n bgl.components.pagereloader.poller.goToErrorPage(applicationPath);\r\n }\r\n },\r\n error: function() {\r\n bgl.components.pagereloader.poller.goToErrorPage(applicationPath);\r\n },\r\n });\r\n }\r\n\r\n function showSpinner(isSpinnerVisible, spinnerName) {\r\n let spinnerHtml;\r\n\r\n if (isSpinnerVisible === false) {\r\n switch (spinnerName) {\r\n case 'addonSpinner':\r\n bgl.common.overlay.show();\r\n break;\r\n\r\n case 'serviceSpinner':\r\n spinnerHtml = bgl.common.spinner.getSpinnerBody(\r\n 'Working on it',\r\n 'We won\\'t be a moment');\r\n document.getElementsByTagName('body')[0].innerHTML = '';\r\n document.getElementsByClassName('spinner-container')[0].innerHTML = spinnerHtml;\r\n break;\r\n\r\n default:\r\n spinnerHtml = bgl.common.spinner.getSpinnerBody(\r\n 'Working on it',\r\n 'We won\\'t be a moment');\r\n document.getElementsByTagName('body')[0].innerHTML = spinnerHtml;\r\n break;\r\n }\r\n }\r\n }\r\n\r\n function goToErrorPage(applicationPath) {\r\n bgl.common.utilities.redirectToUrl(applicationPath + 'Error');\r\n }\r\n\r\n function goToUnderwritingTimeOutPage(applicationPath) {\r\n bgl.common.utilities.redirectToUrl(applicationPath + 'Error/UnderwritingTimeOut');\r\n }\r\n\r\n function goToUnableToQuoteOnlinePage(applicationPath) {\r\n bgl.common.telemetry.logEvent(`No Quote`);\r\n bgl.common.utilities.redirectToUrl(applicationPath + 'Error/UnableToQuoteOnline');\r\n }\r\n\r\n function reloadPage(callback, hideNotification, redirectUrl) {\r\n if (typeof callback === 'function') {\r\n callback();\r\n return;\r\n }\r\n\r\n if (!hideNotification) {\r\n window.sessionStorage.setItem('notification', JSON.stringify(notificationObj));\r\n }\r\n\r\n if (redirectUrl) {\r\n bgl.common.utilities.redirectToUrl(redirectUrl);\r\n } else {\r\n bgl.common.utilities.refreshPage();\r\n }\r\n }\r\n\r\n function removeNotificationFromSessionStorage() {\r\n sessionStorage.removeItem('notification');\r\n }\r\n\r\n return {\r\n poll: poll,\r\n showSpinner: showSpinner,\r\n goToErrorPage: goToErrorPage,\r\n goToUnderwritingTimeOutPage: goToUnderwritingTimeOutPage,\r\n goToUnableToQuoteOnlinePage: goToUnableToQuoteOnlinePage,\r\n reloadPage: reloadPage,\r\n };\r\n})();\r\n\r\nif (typeof module !== 'undefined') {\r\n module.exports = bgl.components.pagereloader.loader;\r\n}\r\n// eslint-disable-next-line no-var\r\nvar bgl = window.bgl || {};\r\nbgl.components = bgl.components || {};\r\nbgl.components.pagereloader = bgl.components.pagereloader || {};\r\n\r\nbgl.components.pagereloader.documentloader = (function() {\r\n let applicationPath = '';\r\n\r\n function initComponent(componentConfiguration) {\r\n applicationPath = componentConfiguration.TenantConfiguration.ApplicationPath;\r\n showSpinner();\r\n pollDocument();\r\n }\r\n\r\n function showSpinner() {\r\n const spinnerHtml = bgl.common.spinner.getSpinnerBody(\r\n 'Working on it',\r\n 'We won\\'t be a moment');\r\n document.getElementById('spinner').innerHTML = spinnerHtml;\r\n }\r\n function showSpinnerDownloadCompletedMsg() {\r\n const downloadCompletedHtml =\r\n 'Please close this tab to continue your journey<\\/span><\\/p>' +\r\n '<\\/div>' +\r\n '<\\/div>' +\r\n '<\\/div>' +\r\n '<\\/main>';\r\n\r\n document.getElementById('spinner').innerHTML = downloadCompletedHtml;\r\n }\r\n\r\n function pollDocument() {\r\n const tickCount = new Date().getTime();\r\n const timeoutDuration = 120000;\r\n const timeout = tickCount + timeoutDuration;\r\n const interval = 1000;\r\n const pollUrl = 'PageReloaderComponent/IsDocumentReady';\r\n bgl.components.pagereloader.documentloader.poll(\r\n timeout,\r\n interval,\r\n pollUrl);\r\n }\r\n\r\n function poll(timeout, interval, pollUrl) {\r\n const token = document.querySelector('input[name=\"__RequestVerificationToken\"]').value;\r\n $.ajax({\r\n url: applicationPath + pollUrl,\r\n type: 'Post',\r\n cache: false,\r\n dataType: 'json',\r\n data: {\r\n __RequestVerificationToken: token,\r\n url: document.getElementById('documentUrl').value,\r\n },\r\n success: function(response) {\r\n if (response.isDocumentReady === false) {\r\n if (timeout >= new Date().getTime()) {\r\n setTimeout(function() {\r\n poll(timeout, interval, pollUrl);\r\n }, interval);\r\n } else {\r\n goToErrorPage(applicationPath);\r\n }\r\n } else if (response.isDocumentReady === true) {\r\n downloadDocument();\r\n showSpinnerDownloadCompletedMsg();\r\n } else {\r\n goToErrorPage(applicationPath);\r\n }\r\n },\r\n error: function() {\r\n goToErrorPage(applicationPath);\r\n },\r\n });\r\n }\r\n function goToErrorPage(applicationPath) {\r\n bgl.common.utilities.redirectToUrl(applicationPath + 'Error');\r\n }\r\n\r\n function downloadDocument() {\r\n document.getElementById('__DocumentLoaderForm').submit();\r\n }\r\n return {\r\n init: initComponent,\r\n poll: poll,\r\n };\r\n})();\r\n\r\nif (typeof module !== 'undefined') {\r\n module.exports = bgl.components.pagereloader;\r\n}\r\n// eslint-disable-next-line no-var\r\nvar bgl = window.bgl || {};\r\nbgl.components = bgl.components || {};\r\nbgl.components.pagereloader = bgl.components.pagereloader || {};\r\n\r\nbgl.components.pagereloader.deletebasket = (function() {\r\n let applicationPath = '';\r\n function initComponent(componentConfiguration) {\r\n applicationPath = componentConfiguration.TenantConfiguration.ApplicationPath;\r\n showSpinner();\r\n deleteBasket();\r\n }\r\n\r\n function showSpinner() {\r\n const spinnerHtml = bgl.common.spinner.getSpinnerBody(\r\n 'Working on it',\r\n 'We won\\'t be a moment');\r\n document.getElementById('spinner').innerHTML(spinnerHtml);\r\n }\r\n\r\n function deleteBasket() {\r\n const token = document.querySelector('input[name=\"__RequestVerificationToken\"]').value;\r\n $.ajax({\r\n url: applicationPath + 'PageReloaderComponent/DeleteBasket',\r\n type: 'POST',\r\n data: {__RequestVerificationToken: token},\r\n success: function() {\r\n goToSuccessPage();\r\n },\r\n error: function() {\r\n goToErrorPage();\r\n },\r\n });\r\n }\r\n\r\n function goToSuccessPage() {\r\n const attemptToContinue = getUrlParameter('startAgain');\r\n if (attemptToContinue && attemptToContinue.toLocaleLowerCase().trim() === 'true') {\r\n const startPage = sessionStorage.getItem('MTAStartPage');\r\n if (startPage) {\r\n bgl.common.utilities.redirectToUrl(startPage);\r\n return;\r\n }\r\n }\r\n bgl.common.utilities.redirectToUrl(applicationPath + 'PolicyOverview/Vehicle');\r\n }\r\n\r\n function getUrlParameter(name) {\r\n name = name.replace(/[\\[]/, '\\\\[').replace(/[\\]]/, '\\\\]');\r\n const regex = new RegExp('[\\\\?&]' + name + '=([^]*)');\r\n const results = regex.exec(location.search);\r\n return results === null ? '' : decodeURIComponent(results[1].replace(/\\+/g, ' '));\r\n }\r\n\r\n function goToErrorPage() {\r\n bgl.common.utilities.redirectToUrl(applicationPath + 'Error');\r\n }\r\n\r\n return {\r\n init: initComponent,\r\n };\r\n})();\r\nif (typeof module !== 'undefined') {\r\n module.exports = bgl.components.pagereloader;\r\n}\r\n// eslint-disable-next-line no-var\r\nvar bgl = window.bgl || {};\r\nbgl.components = bgl.components || {};\r\nbgl.components.outofhours = bgl.components.outofhours || {};\r\n\r\nbgl.components.outofhours = (function() {\r\n let configuration;\r\n\r\n function loadComponent(componentConfiguration, componentUrl, containerElementId) {\r\n bgl.common.loader.load(componentConfiguration,\r\n componentUrl,\r\n containerElementId,\r\n function() {\r\n initComponent(componentConfiguration);\r\n });\r\n }\r\n\r\n function initComponent(componentConfiguration) {\r\n configuration = componentConfiguration;\r\n\r\n const componentId = configuration.Id.toLowerCase();\r\n\r\n $(document).on('submit', '[data-component-id=\\'' + configuration.Id + '\\'] form',\r\n function(event) {\r\n event.preventDefault();\r\n\r\n bgl.common.validator.init($(this));\r\n bgl.common.validator.submitForm($(this), configuration);\r\n });\r\n\r\n $(document).on('input', 'textarea[data-id=\\'' + componentId + '-message\\']', function() {\r\n $('[data-id=\\'' + componentId + '-charactersRemaining\\']').html(300 - $(this).val().length);\r\n });\r\n\r\n $(document).on('click', 'a[data-id=\\'' + componentId + '-close\\']', function() {\r\n window.close();\r\n });\r\n\r\n $(document).on('click', 'a[data-id=\\'' + componentId + '-cross\\']', function() {\r\n window.close();\r\n });\r\n }\r\n\r\n return {\r\n init: initComponent,\r\n load: loadComponent,\r\n };\r\n})();\r\n\r\nif (typeof module !== 'undefined') {\r\n module.exports = bgl.components.outofhours;\r\n}\r\n// eslint-disable-next-line no-var\r\nvar bgl = window.bgl || {};\r\nbgl.components = bgl.components || {};\r\n\r\nbgl.components.optionalextras = (function() {\r\n function loadComponent(componentConfiguration, componentUrl, containerElementId) {\r\n bgl.common.loader.load(componentConfiguration, componentUrl, containerElementId, function() {\r\n initComponent();\r\n });\r\n }\r\n\r\n function initComponent() {\r\n bgl.common.accordions.init();\r\n }\r\n\r\n return {\r\n init: initComponent,\r\n load: loadComponent,\r\n };\r\n})();\r\n\r\nif (typeof module !== 'undefined') {\r\n module.exports = bgl.components.optionalextras;\r\n}\r\n// eslint-disable-next-line no-var\r\nvar bgl = window.bgl || {};\r\nbgl.components = bgl.components || {};\r\n\r\nbgl.components.navigation = (function() {\r\n let configuration;\r\n\r\n let pagesWithAsyncComponents = [];\r\n\r\n let pagesWithoutBackAction = [];\r\n\r\n let pathName;\r\n\r\n function loadComponent(componentConfiguration, componentUrl, containerElementId) {\r\n configuration = componentConfiguration;\r\n\r\n bgl.common.loader.load(configuration, componentUrl, containerElementId, function() {\r\n bgl.components.navigation.init(configuration);\r\n });\r\n }\r\n\r\n function initComponent(componentConfiguration) {\r\n configuration = componentConfiguration;\r\n }\r\n\r\n function initBackButtonFromOopsPage(listOfPagesWithoutBackAction, listOfPagesWithAsyncComponents) {\r\n pagesWithAsyncComponents = listOfPagesWithAsyncComponents || [];\r\n\r\n pagesWithoutBackAction = listOfPagesWithoutBackAction || [];\r\n\r\n const location = bgl.common.utilities.getWindowLocation();\r\n\r\n pathName = location.pathname;\r\n\r\n const result = isPagesWithoutBackAction(pathName);\r\n\r\n if (result === true) {\r\n sessionStorage.setItem('hideBackButton', true);\r\n }\r\n\r\n $(document).ready(function() {\r\n sessionStorage.setItem('hideBackButton', isPagesWithoutBackAction(pathName));\r\n\r\n const index = jQuery.inArray(pathName, pagesWithAsyncComponents);\r\n\r\n if ((index > -1) === false) {\r\n sessionStorage.setItem('loaded_page', pathName);\r\n }\r\n });\r\n }\r\n\r\n function showBackButtonOnOopsPage(listOfPagesWithoutBackAction, failedAction) {\r\n pagesWithoutBackAction = listOfPagesWithoutBackAction || [];\r\n\r\n pathName = decodeURIComponent(failedAction);\r\n\r\n $(document).ready(function() {\r\n const backLink = $('a[data-role=\\'back-button-from-error\\']');\r\n\r\n const hideBackButtonValue = sessionStorage.getItem('hideBackButton');\r\n\r\n const hideBackButton = hideBackButtonValue === null ||\r\n hideBackButtonValue === 'true' ||\r\n isPagesWithoutBackAction(pathName);\r\n\r\n if (hideBackButton) {\r\n backLink.hide();\r\n } else {\r\n const pageAction = sessionStorage.getItem('loaded_page');\r\n backLink.attr('href', pageAction);\r\n }\r\n });\r\n }\r\n\r\n function isPagesWithoutBackAction(pathName) {\r\n const index = pagesWithoutBackAction.length > 0 ? jQuery.inArray(pathName, pagesWithoutBackAction) : -1;\r\n\r\n return (index > -1) === true;\r\n }\r\n\r\n return {\r\n init: initComponent,\r\n load: loadComponent,\r\n initBackButtonFromOopsPage: initBackButtonFromOopsPage,\r\n showBackButtonOnOopsPage: showBackButtonOnOopsPage,\r\n };\r\n})();\r\n\r\nif (typeof module !== 'undefined') {\r\n module.exports = bgl.components.navigation;\r\n}\r\n// eslint-disable-next-line no-var\r\nvar bgl = window.bgl || {};\r\nbgl.components = bgl.components || {};\r\nbgl.components.marketingpreferencesadd = bgl.components.marketingpreferencesadd || {};\r\n\r\nbgl.components.marketingpreferencesadd.thirdparty = (function() {\r\n let validationTriggered = false;\r\n const questions = ['email', 'post', 'devicemessaging', 'textmessages', 'phone'];\r\n\r\n function loadComponent(componentConfiguration, componentUrl, containerElementId) {\r\n }\r\n\r\n function initComponent(componentConfiguration) {\r\n const configuration = componentConfiguration;\r\n\r\n populateFromSessionStorage(configuration.Id);\r\n generateClickOnKeyPressForLabels(configuration.Id);\r\n document.body.querySelector('#MarketingPreferencesNextButton').addEventListener('click', function(event) {\r\n event.preventDefault();\r\n onNextClick(configuration);\r\n });\r\n\r\n document.body.querySelector('#MarketingPreferencesBackButton').addEventListener('click', function(event) {\r\n event.preventDefault();\r\n onBackClick(configuration);\r\n });\r\n\r\n const allLabels = document.body.querySelectorAll('[data-type=\"marketing-preference-radio-label\"]');\r\n for (let i = 0; i < allLabels.length; i++) {\r\n allLabels[i].addEventListener('click',\r\n function(event) {\r\n event.preventDefault();\r\n const elementFor = this.getAttribute('for');\r\n document.body.querySelector('#' + elementFor).checked = true;\r\n if (validationTriggered) {\r\n showValidation(configuration.Id);\r\n }\r\n });\r\n }\r\n }\r\n\r\n function generateClickOnKeyPressForLabels(componentId) {\r\n const selector = document.body.querySelectorAll('[data-testid=\"' + componentId + '-page-section\"] label');\r\n for (let i = 0; i < selector.length; i++) {\r\n selector[i].addEventListener('keydown', function(event) {\r\n const SPACE_KEYCODE = 32;\r\n const ENTER_KEYCODE = 13;\r\n const code = event.charCode || event.keyCode;\r\n if (code === ENTER_KEYCODE || code === SPACE_KEYCODE) {\r\n event.preventDefault();\r\n event.currentTarget.click();\r\n }\r\n });\r\n }\r\n }\r\n\r\n function onNextClick(configuration) {\r\n if (areAllQuestionsAnswered(configuration.Id)) {\r\n addMarketingPreferencesToSessionStorage(configuration.Id);\r\n navigateToNextPage(configuration);\r\n } else {\r\n showValidation(configuration.Id);\r\n scrollToListItemWithError(configuration.Id);\r\n }\r\n }\r\n\r\n function onBackClick(configuration) {\r\n addMarketingPreferencesToSessionStorage(configuration.Id);\r\n navigateToPreviousPage(configuration);\r\n }\r\n\r\n function showValidation(componentId) {\r\n validationTriggered = true;\r\n for (let i = 0; i < questions.length; i++) {\r\n if (!isRadioButtonChecked(`#${componentId}-${questions[i]}-yes`) &&\r\n !isRadioButtonChecked(`#${componentId}-${questions[i]}-no`)) {\r\n addClassToElementIfItExists(`#${componentId}-${questions[i]}-fieldset-container`, 'error');\r\n addClassToElementIfItExists(`#${componentId}-${questions[i]}-heading`, 'error-text__heading');\r\n addClassToElementIfItExists(`#${componentId}-${questions[i]}-list-item`, 'error');\r\n addClassToElementIfItExists(`#${componentId}-${questions[i]}-heading-text`, 'error');\r\n } else {\r\n removeClassFromElementIfItExists(`#${componentId}-${questions[i]}-fieldset-container`, 'error');\r\n removeClassFromElementIfItExists(`#${componentId}-${questions[i]}-heading`, 'error-text__heading');\r\n removeClassFromElementIfItExists(`#${componentId}-${questions[i]}-list-item`, 'error');\r\n removeClassFromElementIfItExists(`#${componentId}-${questions[i]}-heading-text`, 'error');\r\n }\r\n }\r\n }\r\n\r\n function scrollToListItemWithError(componentId) {\r\n const listItemsInErrorState = document.body.querySelectorAll(\r\n '[data-type=\"marketing-preference-list-item\"].error',\r\n );\r\n\r\n if (listItemsInErrorState.length > 0) {\r\n listItemsInErrorState[0].scrollIntoView(true);\r\n const headerHeight = document.body.querySelector('header').offsetHeight;\r\n const currentYPosition = window.scrollY;\r\n if (currentYPosition) {\r\n window.scroll(0, currentYPosition - headerHeight);\r\n }\r\n }\r\n }\r\n\r\n function addClassToElementIfItExists(elementSelector, className) {\r\n const element = document.body.querySelector(elementSelector);\r\n if (element != null) {\r\n element.classList.add(className);\r\n }\r\n }\r\n\r\n function removeClassFromElementIfItExists(elementSelector, className) {\r\n const element = document.body.querySelector(elementSelector);\r\n if (element != null) {\r\n element.classList.remove(className);\r\n }\r\n }\r\n\r\n function navigateToNextPage(configuration) {\r\n bgl.common.utilities.redirectToUrl(configuration.NextPageLink);\r\n }\r\n\r\n function navigateToPreviousPage(configuration) {\r\n bgl.common.utilities.redirectToUrl(configuration.BackLink);\r\n }\r\n\r\n function areAllQuestionsAnswered(componentId) {\r\n for (let i = 0; i < questions.length; i++) {\r\n if (!isRadioButtonChecked('#' + componentId + '-' + questions[i] + '-yes') &&\r\n !isRadioButtonChecked('#' + componentId + '-' + questions[i] + '-no')) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n\r\n function addMarketingPreferencesToSessionStorage(componentId) {\r\n const preferences = {\r\n email: getPreferenceValue(componentId, 'email'),\r\n post: getPreferenceValue(componentId, 'post'),\r\n deviceMessaging: getPreferenceValue(componentId, 'devicemessaging'),\r\n sms: getPreferenceValue(componentId, 'textmessages'),\r\n telephone: getPreferenceValue(componentId, 'phone'),\r\n };\r\n sessionStorage.setItem('marketingPreferences', JSON.stringify(preferences));\r\n }\r\n\r\n function getPreferenceValue(componentId, preference) {\r\n if (isRadioButtonChecked('#' + componentId + '-' + preference + '-yes')) {\r\n return true;\r\n } else if (isRadioButtonChecked('#' + componentId + '-' + preference + '-no')) {\r\n return false;\r\n } else {\r\n return null;\r\n }\r\n }\r\n\r\n function populateFromSessionStorage(componentId) {\r\n const preferences = JSON.parse(sessionStorage.getItem('marketingPreferences'));\r\n if (preferences != null) {\r\n setPreference(componentId, 'email', preferences.email);\r\n setPreference(componentId, 'post', preferences.post);\r\n setPreference(componentId, 'devicemessaging', preferences.deviceMessaging);\r\n setPreference(componentId, 'textmessages', preferences.sms);\r\n setPreference(componentId, 'phone', preferences.telephone);\r\n }\r\n }\r\n\r\n function setPreference(componentId, name, value) {\r\n if (value === true) {\r\n document.body.querySelector('#' + componentId + '-' + name + '-yes').checked = true;\r\n } else if (value === false) {\r\n document.body.querySelector('#' + componentId + '-' + name + '-no').checked = true;\r\n }\r\n }\r\n\r\n function isRadioButtonChecked(radioButtonSelector) {\r\n return document.body.querySelector(radioButtonSelector).checked;\r\n }\r\n\r\n function initialiseMarketingPrefsEvent() {\r\n initSubmitThirdPartyMarketingPreferencesEvent();\r\n }\r\n\r\n function initSubmitThirdPartyMarketingPreferencesEvent() {\r\n bgl.common.pubsub.on('SubmitThirdPartyMarketingPreferences', (data) => {\r\n waitForPartnerIntegration(data);\r\n });\r\n }\r\n\r\n function waitForPartnerIntegration(data) {\r\n const interval = 500;\r\n const timeoutDuration = 5000;\r\n const pollUrl = 'ThirdPartyMarketingPreferencesComponent/IsCustomerIntegrated';\r\n const tickCount = new Date().getTime();\r\n const timeout = tickCount + timeoutDuration;\r\n\r\n poll(timeout, interval, pollUrl, data);\r\n }\r\n\r\n function poll(timeout, interval, pollUrl, data) {\r\n const dataToPost = {\r\n __RequestVerificationToken: data.RequestVerificationToken,\r\n CustomerAccountId: data.PolicyId,\r\n BrandCode: data.BrandCode,\r\n Authorization: data.Authorization,\r\n };\r\n\r\n $.ajax({\r\n url: data.ApplicationPath + pollUrl,\r\n type: 'Post',\r\n cache: false,\r\n data: dataToPost,\r\n dataType: 'json',\r\n success: (response) => {\r\n if (response.Status === 'Processing') {\r\n if (timeout >= new Date().getTime()) {\r\n setTimeout(() => {\r\n poll(timeout, interval, pollUrl, data);\r\n }, interval);\r\n } else {\r\n bgl.common.telemetry.logEvent(\r\n 'Partner integration timeout reached. Third party marketing preferences not submitted');\r\n callAuthenticationSignOut(data);\r\n }\r\n } else if (response.Status === 'Integrated') {\r\n submitThirdPartyMarketingPreferences(data);\r\n } else {\r\n callAuthenticationSignOut(data);\r\n }\r\n },\r\n error: () => {\r\n bgl.common.telemetry.logEvent(\r\n 'Error occured in partner integration poll. Third party marketing preferences not submitted');\r\n callAuthenticationSignOut(data);\r\n },\r\n });\r\n }\r\n\r\n function submitThirdPartyMarketingPreferences(data) {\r\n const dataToPost = {\r\n __RequestVerificationToken: data.RequestVerificationToken,\r\n MarketingPreferences: JSON.parse(data.MarketingPreferences),\r\n BrandCode: data.BrandCode,\r\n CustomerAccountId: data.PolicyId,\r\n Authorization: data.Authorization,\r\n };\r\n\r\n $.ajax({\r\n url: data.ApplicationPath + 'ThirdPartyMarketingPreferencesComponent/SubmitThirdPartyMarketingPreferences',\r\n type: 'POST',\r\n data: dataToPost,\r\n dataType: 'json',\r\n complete: () => {\r\n callAuthenticationSignOut(data);\r\n },\r\n });\r\n }\r\n\r\n function callAuthenticationSignOut(data) {\r\n const signOutData = {\r\n RequestVerificationToken: data.RequestVerificationToken,\r\n ApplicationPath: data.ApplicationPath,\r\n RedirectUrl: data.RedirectUrl,\r\n };\r\n bgl.common.pubsub.emit('CallAuthenticationSignOutInTakePayment', signOutData);\r\n }\r\n\r\n return {\r\n init: initComponent,\r\n load: loadComponent,\r\n initMarketingPrefsEvent: initialiseMarketingPrefsEvent,\r\n };\r\n})();\r\n// eslint-disable-next-line no-var\r\nvar bgl = window.bgl || {};\r\nbgl.components = bgl.components || {};\r\n\r\nbgl.components.marketingpreferences = (function() {\r\n let component;\r\n\r\n function loadComponent(componentConfiguration, componentUrl, containerElementId) {\r\n bgl.common.loader.load(componentConfiguration, componentUrl, containerElementId, function() {\r\n initComponent(componentConfiguration);\r\n });\r\n }\r\n\r\n function initComponent(componentConfiguration) {\r\n const SPACE_KEYCODE = 32;\r\n const ENTER_KEYCODE = 13;\r\n\r\n component = $('#' + componentConfiguration.Id);\r\n\r\n component.find('input[type=\\'checkbox\\']').on('change', submitComponentForm);\r\n\r\n component.find('a[data-id=optOutAll]').on('click', function(event) {\r\n event.preventDefault();\r\n\r\n submitOptOutAll();\r\n });\r\n\r\n $('.contact-tiles__tile').off('keypress').on('keypress',\r\n function(event) {\r\n const code = event.charCode || event.keyCode;\r\n\r\n if (code === ENTER_KEYCODE || code === SPACE_KEYCODE) {\r\n event.preventDefault();\r\n $(this).click();\r\n $(this).focus();\r\n }\r\n });\r\n }\r\n\r\n function getData() {\r\n const token = component.find('input[name=\\'__RequestVerificationToken\\']').val();\r\n const radioButtonList = [];\r\n\r\n component.find('.contact-tiles__input[type=\\'checkbox\\']').each(function() {\r\n const element = $(this);\r\n radioButtonList.push({\r\n Id: element.data('preference-id'),\r\n IsContactTileSelected: element.is(':checked'),\r\n });\r\n });\r\n\r\n return {\r\n __RequestVerificationToken: token,\r\n variant: component.find('[data-id=variant]').val(),\r\n MarketingPreferences: radioButtonList,\r\n };\r\n }\r\n\r\n function submitComponentForm() {\r\n const form = component.find('form');\r\n if (typeof bgl.common.pubsub !== 'undefined') {\r\n bgl.common.pubsub.emit('fakeFormSubmit', form.attr('id') || form.attr('action') || 'unknown');\r\n }\r\n $.ajax({\r\n url: $(form).attr('action'),\r\n type: $(form).attr('method'),\r\n data: getData(),\r\n success: function(data) {\r\n if (!data.isSuccess) {\r\n bgl.common.utilities.errorRedirect(data.errorRedirectUrl);\r\n }\r\n },\r\n });\r\n }\r\n\r\n function submitOptOutAll() {\r\n const form = component.find('form');\r\n if (typeof bgl.common.pubsub !== 'undefined') {\r\n bgl.common.pubsub.emit('fakeFormSubmit', form.attr('id') || form.attr('action') || 'unknown');\r\n }\r\n const token = component.find('input[name=\"__RequestVerificationToken\"]').val();\r\n\r\n $.ajax({\r\n url: $(form).attr('action'),\r\n type: $(form).attr('method'),\r\n data: {__RequestVerificationToken: token},\r\n success: function(data) {\r\n if (data.isSuccess) {\r\n $('[data-id=optOutAllConfirmation]').removeClass('hide');\r\n } else {\r\n bgl.common.utilities.errorRedirect(data.errorRedirectUrl);\r\n }\r\n },\r\n });\r\n }\r\n\r\n return {\r\n init: initComponent,\r\n load: loadComponent,\r\n };\r\n})();\r\n\r\nif (typeof module !== 'undefined') {\r\n module.exports = bgl.components.marketingpreferences;\r\n}\r\n// eslint-disable-next-line no-var\r\nvar bgl = window.bgl || {};\r\nbgl.components = bgl.components || {};\r\n\r\nbgl.components.houston = (function() {\r\n let applicationPath = '/';\r\n let houstonButtonState = '';\r\n let brand = '';\r\n let livePersonBrand = '';\r\n let journey = '';\r\n let journeySection = '';\r\n let notificationTimeout;\r\n let configuration;\r\n let autoCleared = true;\r\n const defaultNotificationSettings = {\r\n autoClose: true,\r\n timeout: 10000,\r\n };\r\n\r\n function loadComponent(componentConfiguration, componentUrl, containerElementId) {\r\n bgl.common.loader.load(componentConfiguration,\r\n componentUrl,\r\n containerElementId,\r\n function() {\r\n initComponent(componentConfiguration);\r\n });\r\n }\r\n\r\n function getPage() {\r\n const pathname = location.pathname.split('/');\r\n return pathname[pathname.length - 1];\r\n }\r\n\r\n function initComponent(componentConfiguration) {\r\n configuration = componentConfiguration;\r\n\r\n brand = configuration.Brand;\r\n livePersonBrand = configuration.LivePersonBrand;\r\n journey = configuration.Journey;\r\n journeySection = configuration.JourneySection;\r\n setState('loading');\r\n eventListener();\r\n $(document).ready(function() {\r\n const contextData = getContextData();\r\n\r\n if (contextData.VaContext != undefined && contextData.VaContext.ApplicationPath != undefined) {\r\n applicationPath = contextData.VaContext.ApplicationPath;\r\n }\r\n\r\n if (configuration.IsVaEnabled) {\r\n window._twilioWebChat?.toggleChatVisibility();\r\n window.VAUserInitials = contextData.Initials;\r\n try {\r\n const contextItems = contextData.VaContext !== null ? contextData.VaContext : {\r\n Brand: brand,\r\n BGLActualPageName: 'Sales_TE' +\r\n location.pathname.substr(location.pathname.lastIndexOf('/') + 1).toLowerCase(),\r\n InvocationPoint: configuration.InvocationPoint,\r\n WebSessionID: 'Unknown',\r\n QuoteNo: 'N/A',\r\n PolicyNo: 'Unknown',\r\n ArrayOfProducts: [\r\n {\r\n BGLProduct: configuration.Product,\r\n BGLSeqNumber: 'Unknown',\r\n CoverLevel: 'Unknown',\r\n ProductStatus: 'Unknown',\r\n ProductVariant: 'N/A',\r\n },\r\n ],\r\n };\r\n const livePersonContextItems = contextData.LivePersonContext !==\r\n null ?\r\n contextData.LivePersonContext :\r\n {\r\n ActionName: getPage(),\r\n Ctype: livePersonBrand + ': ' + journey + ': ' + journeySection,\r\n CustomerName: sessionStorage.getItem('CustomerFirstName'),\r\n Section: [livePersonBrand, journey, journeySection, getPage()],\r\n SessionId: 'N/A',\r\n VaStatus: 7,\r\n };\r\n\r\n bgl.components.houston.buildLivePersonEngagementAttributes(livePersonContextItems);\r\n\r\n window.NinaVars.forceReprocessContextItems = false;\r\n window.NinaVars.BGLContextItems = JSON.stringify(contextItems);\r\n window.NinaVars.BGLBrand = contextItems.Brand;\r\n $('#nina-block .nw_Input .nw_StatusMessage').remove();\r\n cookiePolicyCheck(contextItems);\r\n } catch (err) {\r\n if (window.NinaVars.preprod === true) {\r\n console.warn(err.message);\r\n }\r\n }\r\n }\r\n\r\n if ($('#EnhancedNotification').length) {\r\n if (sessionStorage.getItem('notification') !== null) {\r\n bgl.components.houston.showEnhancedNotification(contextData);\r\n }\r\n } else {\r\n bgl.components.houston.showNotificationFromLocalStore(contextData);\r\n }\r\n });\r\n\r\n $('#houstonButton').on(whichAnimationEvent(), handleLoad);\r\n\r\n $('#houstonButton').on('click', function() {\r\n if (configuration.IsVaEnabled) {\r\n window._twilioWebChat?.toggleChatVisibility();\r\n sessionStorage.setItem('ChatEngaged', true);\r\n setInvocationPoint('#houstonButton');\r\n if ($(this).hasClass('ready')) {\r\n window.NinaVars.forceReprocessContextItems = true;\r\n }\r\n clickHandler();\r\n const attributeVal = $('#houstonButton').attr('aria-label');\r\n if (attributeVal === 'Close Virtual Assistant' && configuration.IsVapEnabled) {\r\n setInvocationForVap();\r\n }\r\n } else {\r\n bgl.common.pubsub.emit('showContactInformationNotification');\r\n }\r\n });\r\n\r\n $(document.body).on('click', '.notification-button, #notificationButton', function() {\r\n $('.notification-container').hide();\r\n autoCleared = false;\r\n resetFocus();\r\n });\r\n\r\n $(document.body).on('click', '.va-invocation',\r\n function(event) {\r\n $('.notification-container').hide();\r\n event.preventDefault();\r\n if (configuration.IsVaEnabled) {\r\n setInvocationPoint(this);\r\n window.NinaVars.forceReprocessContextItems = true;\r\n setState('ready');\r\n clickHandler();\r\n if (configuration.IsVapEnabled) {\r\n setInvocationForVap();\r\n }\r\n } else {\r\n bgl.common.pubsub.emit('showContactInformationNotification');\r\n }\r\n });\r\n }\r\n\r\n\r\n function setInvocationForVap() {\r\n vapExchangeCompleteEventListener();\r\n const tokens = bgl.security.authentication.getAccessAndIdentityTokens();\r\n if (Object.keys(tokens).length === 0 || tokens === undefined) {\r\n const redirectUrl = encodeURIComponent(configuration.AuthRedirectUrl);\r\n const authUrl =\r\n bgl.security.authentication.getAuthenticationRequestUrl(configuration.ClientId,\r\n redirectUrl,\r\n configuration.AuthorizationEndpoint, configuration.Tid);\r\n const body = $(document.body);\r\n const div = $('');\r\n const iframe = $('')\r\n .attr({src: authUrl, id: 'VapHiddenIframe'})\r\n .addClass('hide');\r\n div.append(iframe);\r\n body.append(div);\r\n } else {\r\n window.NinaVars.vapAccessToken = tokens.accessToken;\r\n window.NinaVars.vapIdentityToken = tokens.identityToken;\r\n }\r\n }\r\n\r\n function vapExchangeCompleteEventListener() {\r\n bgl.common.pubsub.on('exchangeComplete',\r\n function() {\r\n const tokens = bgl.security.authentication.getAccessAndIdentityTokens();\r\n window.NinaVars.vapAccessToken = tokens.accessToken;\r\n window.NinaVars.vapIdentityToken = tokens.identityToken;\r\n $('#VapHiddenIframe').remove();\r\n });\r\n }\r\n\r\n function getFormattedNotification(url) {\r\n $.get(url,\r\n function(data) {\r\n if (data.errorRedirectUrl) {\r\n bgl.common.utilities.redirectToUrl(data.errorRedirectUrl);\r\n } else {\r\n bgl.components.houston.showFormattedNotification(data, {autoClose: false});\r\n }\r\n });\r\n }\r\n\r\n function eventListener() {\r\n bgl.common.pubsub.on('showNotification', function(data) {\r\n bgl.components.houston.showNotification(data);\r\n });\r\n\r\n bgl.common.pubsub.on('showContactDataNotification', function() {\r\n getFormattedNotification(configuration.ContactDataUrl);\r\n });\r\n\r\n bgl.common.pubsub.on('showContactInformationNotification', function() {\r\n getFormattedNotification(configuration.ContactInformationUrl);\r\n });\r\n\r\n bgl.common.pubsub.on('refreshHoustonContext', function(callback) {\r\n refreshContext(callback);\r\n });\r\n\r\n bgl.common.pubsub.on('PaymentComplete', function() {\r\n clearSession();\r\n });\r\n\r\n bgl.common.pubsub.on('CancelMTA', function(data) {\r\n $('#houstonConfirmation').removeClass('hide');\r\n\r\n $('#houstonConfirmation #continueButton').off().on('click',\r\n function() {\r\n $('#houstonConfirmation').addClass('hide');\r\n });\r\n\r\n $('#houstonConfirmation #abandonButton').focus();\r\n $('#houstonConfirmation #abandonButton').off().on('click',\r\n function() {\r\n deleteBasket(data ? data.redirectUrl : null);\r\n });\r\n });\r\n }\r\n\r\n function setInvocationPoint(element) {\r\n const invocationPoint = $(element).attr('data-va-invocation-point');\r\n try {\r\n let contextItems = getContextData().VaContext;\r\n if (contextItems === null) {\r\n contextItems = {\r\n Brand: brand,\r\n BGLActualPageName: 'Sales_TE' +\r\n location.pathname.substr(location.pathname.lastIndexOf('/') + 1).toLowerCase(),\r\n InvocationPoint: configuration.InvocationPoint,\r\n WebSessionID: 'Unknown',\r\n QuoteNo: 'N/A',\r\n PolicyNo: 'Unknown',\r\n ArrayOfProducts: [\r\n {\r\n BGLProduct: configuration.Product,\r\n BGLSeqNumber: 'Unknown',\r\n CoverLevel: 'Unknown',\r\n ProductStatus: 'Unknown',\r\n ProductVariant: 'N/A',\r\n },\r\n ],\r\n };\r\n }\r\n contextItems.InvocationPoint = invocationPoint;\r\n window.NinaVars.BGLContextItems = JSON.stringify(contextItems);\r\n } catch (err) {\r\n if (window.NinaVars.preprod === true) {\r\n console.warn(err.message);\r\n }\r\n }\r\n }\r\n\r\n function stopNotificationTimeout() {\r\n if (notificationTimeout !== undefined) {\r\n clearTimeout(notificationTimeout);\r\n }\r\n }\r\n\r\n function showNotification(message, notificationContext) {\r\n stopNotificationTimeout();\r\n\r\n if (message) {\r\n if (notificationContext) {\r\n if (typeof message === 'object') {\r\n if (notificationContext.IsMonthly) {\r\n message = message.monthly;\r\n } else {\r\n message = message.annual;\r\n }\r\n }\r\n }\r\n\r\n const context = getContextData();\r\n const notificationMessage = buildNotificationMessage(message, context);\r\n\r\n $('.notification-message').text(notificationMessage);\r\n showNotificationTimeout();\r\n }\r\n }\r\n\r\n function showFormattedNotification(html, notificationSettings) {\r\n stopNotificationTimeout();\r\n if (html) {\r\n $('.notification-message').html(html);\r\n showNotificationTimeout(notificationSettings);\r\n }\r\n }\r\n\r\n function showNotificationTimeout(notificationSettings) {\r\n const settings = $.extend({}, defaultNotificationSettings, notificationSettings);\r\n autoCleared = true;\r\n $('.notification-container').show(0).focus();\r\n $('.notification-container').attr('aria-live', 'polite');\r\n $('.notification-button').focus();\r\n if (settings.autoClose) {\r\n notificationTimeout = setTimeout(function() {\r\n $('.notification-container').hide(0);\r\n setFocusToElement();\r\n }, settings.timeout);\r\n }\r\n }\r\n\r\n function showNotificationFromLocalStore(contextData) {\r\n const notification = getNotificationFromLocalStore();\r\n if (notification) {\r\n showNotification(notification.msg, contextData.NotificationContext);\r\n sessionStorage.removeItem('notification');\r\n }\r\n }\r\n\r\n function showEnhancedNotification(contextData) {\r\n stopNotificationTimeout();\r\n\r\n if ($('#SaveEnhancedProduct').val() == 'True') {\r\n displayEnhancedNotification('#SaveEnhanced', '#SpendEnhanced');\r\n } else if ($('#SpendEnhancedProduct').val() == 'True') {\r\n displayEnhancedNotification('#SpendEnhanced', '#SaveEnhanced');\r\n } else {\r\n bgl.components.houston.showNotificationFromLocalStore(contextData);\r\n }\r\n }\r\n\r\n function setupEnhancedNotificationHtml() {\r\n const enhancedMessageHtml = $('#EnhancedNotification').html();\r\n $('.notification--enhanced').html(enhancedMessageHtml);\r\n $('#EnhancedNotification').remove();\r\n }\r\n\r\n function displayEnhancedNotification(shownMessageContainerId, hiddenMessageContainerId) {\r\n setupEnhancedNotificationHtml();\r\n sessionStorage.removeItem('notification');\r\n\r\n $(shownMessageContainerId).removeClass('hide');\r\n $(hiddenMessageContainerId).removeClass('hide').addClass('hide');\r\n\r\n $('.notification-container').show(0);\r\n $('.notification-container').attr('aria-live', 'polite');\r\n $('#ViewEnhancedProduct').focus();\r\n }\r\n\r\n function buildLivePersonEngagementAttributes(livePersonContext) {\r\n if (livePersonContext !== null) {\r\n livePersonTag.buildAttributes(livePersonContext);\r\n }\r\n }\r\n\r\n function getNotificationFromLocalStore() {\r\n return JSON.parse(sessionStorage.getItem('notification'));\r\n }\r\n\r\n function buildNotificationMessage(msg, contextData) {\r\n const contextDataReplacer = createContextDataReplacer(contextData);\r\n msg = replaceAll(msg, contextDataReplacer);\r\n return msg;\r\n }\r\n\r\n function createContextDataReplacer(contextData) {\r\n const contextDataReplacer = [\r\n {\r\n search: '##PRICE##',\r\n replacement: contextData.NotificationContext.Price,\r\n },\r\n {\r\n search: '##FIRSTNAME##',\r\n replacement: toTitleCase(contextData.NotificationContext.FirstName),\r\n }, {\r\n search: '##EMAIL##',\r\n replacement: contextData.NotificationContext.Email,\r\n },\r\n {\r\n search: '##UNDERWRITER##',\r\n replacement: contextData.NotificationContext.Underwriter,\r\n },\r\n {\r\n search: '##DEPOSIT##',\r\n replacement: contextData.NotificationContext.Deposit,\r\n },\r\n ];\r\n return contextDataReplacer;\r\n }\r\n\r\n function toTitleCase(str) {\r\n try {\r\n const splitName = str.split('-');\r\n let titleCaseName = '';\r\n for (let i = 0; i < splitName.length; i++) {\r\n titleCaseName =\r\n titleCaseName + splitName[i].charAt(0).toUpperCase() + splitName[i].substr(1).toLowerCase() + '-';\r\n }\r\n return titleCaseName.substring(0, titleCaseName.length - 1);\r\n } catch (ex) {\r\n return str;\r\n }\r\n }\r\n\r\n function replaceAll(input, contextDataReplacer) {\r\n for (let i = 0; i < contextDataReplacer.length; i++) {\r\n input = input.replace(new RegExp(contextDataReplacer[i].search, 'g'), contextDataReplacer[i].replacement);\r\n }\r\n return input;\r\n }\r\n\r\n function getContextData() {\r\n const context = $('#houstoncontextdata').attr('data-context');\r\n if (context) {\r\n return JSON.parse(context);\r\n }\r\n\r\n return {};\r\n }\r\n\r\n function handleLoad(event) {\r\n $(event.target).off(event.type, handleLoad);\r\n setState('ready');\r\n }\r\n\r\n function setState(newState) {\r\n const houstonButton = $('#houstonButton');\r\n switch (newState) {\r\n case 'loading':\r\n houstonButtonState = 'loading';\r\n houstonButton.removeClass('ready va typing').addClass('loading');\r\n break;\r\n\r\n case 'typing':\r\n houstonButtonState = 'typing';\r\n houstonButton.removeClass('loading ready va').addClass('typing');\r\n break;\r\n\r\n case 'ready':\r\n houstonButtonState = 'ready';\r\n houstonButton.removeClass('loading typing va').addClass('ready');\r\n houstonButton.attr('aria-label', 'Open Virtual Assistant');\r\n break;\r\n\r\n case 'va':\r\n houstonButtonState = 'va';\r\n houstonButton.removeClass('loading ready typing').addClass('va');\r\n houstonButton.attr('aria-label', 'Close Virtual Assistant');\r\n break;\r\n\r\n default:\r\n break;\r\n }\r\n }\r\n\r\n function clickHandler() {\r\n switch (houstonButtonState) {\r\n case 'loading':\r\n break;\r\n\r\n case 'typing':\r\n break;\r\n\r\n case 'ready':\r\n handleReadyStateClick();\r\n break;\r\n\r\n case 'va':\r\n setState('ready');\r\n $('#nina-block').removeClass('is-visible');\r\n $('.houston-container').removeClass('ground-control');\r\n break;\r\n\r\n default:\r\n break;\r\n }\r\n }\r\n\r\n function handleReadyStateClick() {\r\n const conversationLog = $('#nw_ConversationText');\r\n const lastAgentMessage = $('#nw_ConversationText .nw_AgentSays:last');\r\n const userMessages = $('#nw_ConversationText .nw_UserSays');\r\n let messagesToAnnounce;\r\n\r\n setState('va');\r\n $('#nina-block').addClass('is-visible');\r\n $('.houston-container').addClass('ground-control');\r\n $('#nw_UserInputField').focus();\r\n\r\n if (userMessages.length === 0) {\r\n messagesToAnnounce = conversationLog.children();\r\n } else {\r\n const previousMessagesAnnouncement = $('#nw_previousMessagesAnnouncement').length ?\r\n $('#nw_previousMessagesAnnouncement') :\r\n $('Last message: ');\r\n previousMessagesAnnouncement.detach();\r\n messagesToAnnounce = lastAgentMessage.prev().nextAll();\r\n previousMessagesAnnouncement.prependTo(messagesToAnnounce);\r\n }\r\n\r\n if (messagesToAnnounce.length) {\r\n messagesToAnnounce.detach();\r\n setTimeout(\r\n function() {\r\n messagesToAnnounce.appendTo(conversationLog);\r\n },\r\n 200);\r\n }\r\n }\r\n\r\n function whichAnimationEvent() {\r\n let typeAnimations;\r\n const element = document.createElement('fakeelement');\r\n\r\n const animations = {\r\n 'animation': 'animationend',\r\n 'OAnimation': 'oAnimationEnd',\r\n 'MozAnimation': 'animationend',\r\n 'WebkitAnimation': 'webkitAnimationEnd',\r\n };\r\n\r\n for (typeAnimations in animations) {\r\n if (element.style[typeAnimations] !== undefined) {\r\n return animations[typeAnimations];\r\n }\r\n }\r\n }\r\n\r\n function setFocusToElement() {\r\n const notificationButtonIsFocused = $('.notification-button').is(':focus');\r\n\r\n if (autoCleared && notificationButtonIsFocused) {\r\n resetFocus();\r\n }\r\n }\r\n\r\n function resetFocus() {\r\n bgl.common.focusHolder.setFocusToElement();\r\n bgl.common.focusHolder.removeFocused();\r\n }\r\n\r\n function cookiePolicyCheck(contextItems) {\r\n if (contextItems.InvocationPoint !== 'SSC_TE' && document.cookie.indexOf('bgl-cookie-notified') === -1) {\r\n setCookieForCookiePolicy();\r\n }\r\n }\r\n\r\n function setCookieForCookiePolicy() {\r\n const domain = getRootDomain();\r\n let expirationDate = new Date();\r\n expirationDate.setDate(expirationDate.getDate() + 180);\r\n expirationDate = expirationDate.toUTCString();\r\n\r\n document.cookie = 'bgl-cookie-notified=1;expires=' + expirationDate + ';domain=' + domain + ';SameSite=strict;';\r\n }\r\n\r\n function getRootDomain() {\r\n const acceptableTlds = ['.com', '.co.uk', '.io', '.net'];\r\n let tld = '';\r\n let hostname = window.location.hostname.toString();\r\n\r\n acceptableTlds.forEach(function(element) {\r\n if (hostname.indexOf(element) > -1) {\r\n tld = element;\r\n hostname = hostname.replace(tld, '');\r\n }\r\n });\r\n\r\n const parts = hostname.split('.');\r\n\r\n return parts[parts.length - 1] + tld;\r\n }\r\n\r\n function refreshContext(callback) {\r\n const url = applicationPath + 'HoustonComponent/Context';\r\n\r\n $.ajax({\r\n url: url,\r\n type: 'POST',\r\n data: configuration,\r\n success: function(data) {\r\n $('#houstoncontextdata').attr('data-context', JSON.stringify(data));\r\n\r\n if (typeof callback === 'function') {\r\n callback();\r\n }\r\n },\r\n });\r\n }\r\n\r\n function deleteBasket(redirectUrl) {\r\n const token = $('input[name=\"__RequestVerificationToken\"]').val();\r\n $.ajax({\r\n url: applicationPath + 'HoustonComponent/DeleteBasket',\r\n type: 'POST',\r\n data: {\r\n __RequestVerificationToken: token,\r\n },\r\n success: function(data) {\r\n if (data.isSuccess) {\r\n clearSession();\r\n\r\n if (redirectUrl) {\r\n sessionStorage.removeItem('MTAStartPage');\r\n window.location = redirectUrl;\r\n } else {\r\n $('#houstonConfirmation button').removeAttr('tabindex');\r\n $('#houstonConfirmation').addClass('hide');\r\n bgl.common.pubsub.emit('CancelMTAComplete');\r\n }\r\n } else {\r\n window.location = applicationPath + 'Error';\r\n }\r\n },\r\n error: function() {\r\n window.location = applicationPath + 'Error';\r\n },\r\n });\r\n }\r\n\r\n function clearSession() {\r\n sessionStorage.removeItem('cancellationReasons');\r\n sessionStorage.removeItem('cancellationReasonsOther');\r\n sessionStorage.removeItem('cancellationWhen');\r\n sessionStorage.removeItem('cancellationDate');\r\n sessionStorage.removeItem('cancellationBackWhen');\r\n sessionStorage.removeItem('cancellationBackDatePicker');\r\n }\r\n\r\n return {\r\n showNotification: showNotification,\r\n showFormattedNotification: showFormattedNotification,\r\n showNotificationFromLocalStore: showNotificationFromLocalStore,\r\n showEnhancedNotification: showEnhancedNotification,\r\n setInvocationForVap: setInvocationForVap,\r\n buildLivePersonEngagementAttributes: buildLivePersonEngagementAttributes,\r\n init: initComponent,\r\n load: loadComponent,\r\n };\r\n})();\r\n\r\nif (typeof module !== 'undefined') {\r\n module.exports = bgl.components.houston;\r\n}\r\n// eslint-disable-next-line no-var\r\nvar bgl = window.bgl || {};\r\nbgl.components = bgl.components || {};\r\n\r\nbgl.components.googletagmanager = (function() {\r\n let gtmContainerId;\r\n let gtmApplicationPath;\r\n\r\n function initComponent(containerId, applicationPath) {\r\n gtmContainerId = containerId;\r\n gtmApplicationPath = applicationPath;\r\n\r\n if (gtmContainerId) {\r\n // gtmStart(window, document, 'script', 'dataLayer', gtmContainerId);\r\n gtmStartWithOneTrust(\r\n window,\r\n document,\r\n 'script',\r\n 'dataLayer',\r\n gtmContainerId,\r\n 'cdn-ukwest.onetrust.com',\r\n 'Optanon',\r\n );\r\n }\r\n\r\n updateGTMPolicyId();\r\n }\r\n\r\n function gtmStartWithOneTrust(w, d, s, l, g, o1, o2) {\r\n w[l] = w[l] || []; w[l].push({\r\n 'gtm.start':\r\n new Date().getTime(), 'event': 'gtm.js',\r\n });\r\n let f = d.getElementsByTagName(s)[0];\r\n const j = d.createElement(s);\r\n const dl = l !== 'dataLayer' ? '&l=' + l : '';\r\n j.async = true;\r\n j.src = 'https://www.googletagmanager.com/gtm.js?id=' + g + dl;\r\n for (let i = 0; i < d.getElementsByTagName(s).length; i++) {\r\n if (i > 0) f = d.getElementsByTagName(s)[i];\r\n if ((f.outerHTML.indexOf(o1) === -1) && (f.outerHTML.indexOf(o2) === -1)) {\r\n break;\r\n }\r\n }\r\n f.parentNode.insertBefore(j, f);\r\n }\r\n\r\n function updateGTMPolicyId() {\r\n bgl.common.pubsub.on('UpdateGTMPolicyId', function(policyId) {\r\n dataLayer.push({'policyNumber': policyId});\r\n\r\n const url = gtmApplicationPath + 'GoogleTagManagerComponent/GetECommerceDataLayer?policyId=' + policyId;\r\n\r\n $.ajax({\r\n url: url,\r\n type: 'GET',\r\n success: function(data) {\r\n const eCommmerceData = JSON.parse(data);\r\n dataLayer.push(eCommmerceData);\r\n },\r\n });\r\n });\r\n }\r\n\r\n return {\r\n init: initComponent,\r\n };\r\n})();\r\n\r\nif (typeof module !== 'undefined') {\r\n module.exports = bgl.components.googletagmanager;\r\n}\r\n// eslint-disable-next-line no-var\r\nvar bgl = window.bgl || {};\r\nbgl.components = bgl.components || {};\r\n\r\nbgl.components.footer = (function() {\r\n function loadComponent(componentConfiguration, componentUrl, containerElementId) {\r\n bgl.common.loader.load(componentConfiguration, componentUrl, containerElementId, function() {\r\n bgl.components.footer.init();\r\n });\r\n }\r\n\r\n function initComponent() {\r\n eventListener();\r\n }\r\n\r\n function eventListener() {\r\n bgl.common.pubsub.on('switchPaymentType', function(isMonthly) {\r\n switchPaymentType(isMonthly);\r\n });\r\n }\r\n\r\n function switchPaymentType(isMonthly) {\r\n const monthlyLink = document.getElementById('monthly-link');\r\n\r\n if (isMonthly) {\r\n monthlyLink.classList.remove('hide');\r\n } else {\r\n monthlyLink.classList.add('hide');\r\n }\r\n }\r\n\r\n return {\r\n init: initComponent,\r\n load: loadComponent,\r\n };\r\n})();\r\n\r\nif (typeof module !== 'undefined') {\r\n module.exports = bgl.components.footer;\r\n}\r\n// eslint-disable-next-line no-var\r\nvar bgl = window.bgl || {};\r\nbgl.components = bgl.components || {};\r\n\r\nbgl.components.dynamicbasket = (function() {\r\n let basketPanel;\r\n\r\n function initComponent() {\r\n bgl.common.accordions.init();\r\n subscribeToSwitchPaymentTypePubSubEvent();\r\n setOpenBasketPanelEvent();\r\n }\r\n\r\n function setOpenBasketPanelEvent() {\r\n document.querySelector('[data-dynamicbasketbutton]')\r\n .addEventListener('click', function() {\r\n basketPanel = document.querySelector('[data-dynamicbasket]');\r\n basketPanel.classList.remove('uil-basket--hidden');\r\n basketPanel.classList.add('uil-basket--expanded');\r\n\r\n bgl.common.overlay.show(false);\r\n\r\n setCloseBasketPanelEvent();\r\n setClickOnOverlayEvent();\r\n setEscapeOnOverlayEvent();\r\n });\r\n }\r\n\r\n function setCloseBasketPanelEvent() {\r\n document.querySelector('[data-dynamicbasketclose]')\r\n .addEventListener('click', function() {\r\n closeBasketPanel();\r\n });\r\n }\r\n\r\n function closeBasketPanel() {\r\n basketPanel.classList.remove('uil-basket--expanded');\r\n basketPanel.classList.add('uil-basket--hidden');\r\n bgl.common.overlay.hide();\r\n }\r\n\r\n function setClickOnOverlayEvent() {\r\n document.getElementById('overlay').addEventListener('click', function() {\r\n closeBasketPanel();\r\n });\r\n }\r\n\r\n function setEscapeOnOverlayEvent() {\r\n document.addEventListener('keyup', function(e) {\r\n if (e.key === 'Escape') {\r\n closeBasketPanel();\r\n }\r\n });\r\n }\r\n\r\n function subscribeToSwitchPaymentTypePubSubEvent() {\r\n bgl.common.pubsub.on('switchPaymentType', function(isMonthly) {\r\n switchPaymentType(isMonthly);\r\n });\r\n }\r\n\r\n function switchPaymentType(isMonthly) {\r\n const monthlyPrices = document.querySelectorAll('[data-pricemonthly], [data-costbreakdownmonthly]');\r\n const annualPrices = document.querySelectorAll('[data-priceannually], [data-costbreakdownannually]');\r\n if (isMonthly === true) {\r\n removeHideClassFrom(monthlyPrices);\r\n addHideClassTo(annualPrices);\r\n } else {\r\n addHideClassTo(monthlyPrices);\r\n removeHideClassFrom(annualPrices);\r\n }\r\n }\r\n\r\n function addHideClassTo(elements) {\r\n [].forEach.call(elements, (element) => {\r\n element.classList.add('hide');\r\n });\r\n }\r\n\r\n function removeHideClassFrom(elements) {\r\n [].forEach.call(elements, (element) => {\r\n element.classList.remove('hide');\r\n });\r\n }\r\n\r\n return {\r\n init: initComponent,\r\n };\r\n})();\r\n// eslint-disable-next-line no-var\r\nvar bgl = window.bgl || {};\r\nbgl.components = bgl.components || {};\r\nbgl.components.driverdetails = bgl.components.driverdetails || {};\r\n\r\nbgl.components.driverdetails.ukresidentfiveyears = (function() {\r\n let form;\r\n let configuration;\r\n let residencyStartDateDropdowns;\r\n let fullYearMonthOptions;\r\n let currentYearMonthOptions;\r\n let firstYearMonthOptions;\r\n let monthDropdown;\r\n let yearDropdown;\r\n const HIDE_CLASS = 'hide';\r\n let hasPreselectedValues = false;\r\n\r\n function initComponent(componentConfiguration) {\r\n initObject(componentConfiguration);\r\n\r\n bgl.common.datastore.init(form, false, true);\r\n bgl.common.datastore.setupReadAndWrite();\r\n\r\n subscribeForEvents();\r\n\r\n updateMonthDropdown();\r\n }\r\n\r\n function initObject(componentConfiguration) {\r\n const currentMonth = $('#CurrentMonth').val() * 1;\r\n\r\n configuration = componentConfiguration;\r\n form = $('#uk-resident-five-years');\r\n residencyStartDateDropdowns = form.find('#residency-start-date-dropdowns');\r\n monthDropdown = form.find('#Resident-Since-Month');\r\n yearDropdown = form.find('#Resident-Since-Year');\r\n\r\n bgl.common.validator.init(form);\r\n\r\n fullYearMonthOptions = monthDropdown.find('option');\r\n currentYearMonthOptions = fullYearMonthOptions.slice(0, currentMonth + 1);\r\n firstYearMonthOptions = fullYearMonthOptions.slice(0);\r\n firstYearMonthOptions.splice(1, currentMonth - 1);\r\n }\r\n\r\n function subscribeForEvents() {\r\n hasPreselectedValues = form.find('input[type=radio]:checked').length !== 0;\r\n\r\n if (hasPreselectedValues) {\r\n showContinueButton();\r\n\r\n const selectedButton = $(form.find('input[type=radio]:checked')[0]);\r\n switch (selectedButton.val().toLowerCase()) {\r\n case 'false':\r\n if (residencyStartDateDropdowns.hasClass(HIDE_CLASS)) {\r\n residencyStartDateDropdowns.removeClass(HIDE_CLASS);\r\n }\r\n break;\r\n }\r\n }\r\n\r\n form.find('input[type=radio]').off('click').on('click',\r\n function(event) {\r\n $(event.target).prop('checked', true);\r\n\r\n updateResidencyStartDateVisibility();\r\n\r\n if (hasPreselectedValues !== true) {\r\n continueHandler(event);\r\n }\r\n });\r\n\r\n yearDropdown.on('change', updateMonthDropdown);\r\n\r\n form.off('submit')\r\n .on('submit',\r\n function(event) {\r\n event.preventDefault();\r\n\r\n if (bgl.common.validator.isFormValid($(this))) {\r\n $('#HasChanges').val(bgl.common.datastore.isDataChanged($(this)) === true);\r\n\r\n bgl.common.validator.submitForm($(this), configuration);\r\n }\r\n });\r\n\r\n form.find('label').on('keyup', bgl.common.keyboardAccessibility.generateClickOnKeypress);\r\n }\r\n\r\n function updateResidencyStartDateVisibility() {\r\n const value = form.find('input[type=radio]:checked').val();\r\n\r\n if (value.toLowerCase() === 'false') {\r\n if (residencyStartDateDropdowns.hasClass(HIDE_CLASS)) {\r\n residencyStartDateDropdowns.removeClass(HIDE_CLASS);\r\n }\r\n\r\n hasPreselectedValues = true;\r\n } else {\r\n if (!residencyStartDateDropdowns.hasClass(HIDE_CLASS)) {\r\n residencyStartDateDropdowns.addClass(HIDE_CLASS);\r\n }\r\n }\r\n\r\n if (hasPreselectedValues === true) {\r\n showContinueButton();\r\n }\r\n }\r\n\r\n function showContinueButton() {\r\n const continueButton = $(form.find('[type=\\'submit\\']'));\r\n continueButton.removeClass('hide');\r\n }\r\n\r\n function continueHandler(event) {\r\n event.preventDefault();\r\n\r\n if ($(event.target).is(':checked')) {\r\n $(event.target).trigger('change');\r\n }\r\n\r\n form.submit();\r\n }\r\n\r\n function updateMonthDropdown() {\r\n const months = monthDropdown;\r\n const selectedMonthValue = months.val();\r\n const currentYear = $('#CurrentYear').val();\r\n const firstYear = (currentYear - 5).toString();\r\n\r\n switch (yearDropdown.val()) {\r\n case currentYear:\r\n months.html(currentYearMonthOptions);\r\n break;\r\n case firstYear:\r\n months.html(firstYearMonthOptions);\r\n break;\r\n default:\r\n months.html(fullYearMonthOptions);\r\n break;\r\n };\r\n\r\n months.val(selectedMonthValue);\r\n\r\n // select first value if value is not selected\r\n if (!months.val()) {\r\n months.find('option:eq(0)').prop('selected', true);\r\n }\r\n }\r\n\r\n function onSuccess(configuration, data) {\r\n if (data.isUkResident === true) {\r\n bgl.common.datastore.deleteFields(form,\r\n [\r\n 'UkResidentYear', 'UkResidentYearVal', 'UkResidentYearText',\r\n 'UkResidentMonth', 'UkResidentMonthVal', 'UkResidentMonthText',\r\n ]);\r\n }\r\n\r\n if (data.nextDtsPageUrl) {\r\n bgl.common.utilities.redirectToUrl(data.nextDtsPageUrl);\r\n }\r\n }\r\n\r\n function onError() {\r\n bgl.components.driverdetails.ukresidentfiveyears.init(configuration);\r\n bgl.common.datastore.extendCollectedData(form, {isFormDirty: true});\r\n }\r\n\r\n return {\r\n init: initComponent,\r\n onSuccess: onSuccess,\r\n onError: onError,\r\n };\r\n})();\r\n// eslint-disable-next-line no-var\r\nvar bgl = window.bgl || {};\r\nbgl.components = bgl.components || {};\r\nbgl.components.driverdetails = bgl.components.driverdetails || {};\r\n\r\nbgl.components.driverdetails.typeoflicence = (function() {\r\n let form;\r\n let configuration;\r\n let licenceInputs;\r\n const internationalLabel = 'I';\r\n let hasPreselectedValues;\r\n\r\n function initComponent(componentConfiguration) {\r\n configuration = componentConfiguration;\r\n\r\n form = $('#type-of-licence');\r\n\r\n licenceInputs = form.find('#licence-section [type=radio]');\r\n\r\n bgl.common.validator.init(form);\r\n\r\n bgl.common.datastore.init(form, false, true);\r\n bgl.common.datastore.setupReadAndWrite();\r\n\r\n const person = bgl.common.datastore.getData(form);\r\n const selectedEmploymentStatus = person.EmploymentStatusId;\r\n\r\n const hasOccupation = configuration.StatusCodesToAskOccupation.filter(function(value) {\r\n return selectedEmploymentStatus.toLowerCase() === value.toLowerCase();\r\n }).length !== 0;\r\n\r\n if (hasOccupation) {\r\n document.getElementById(configuration.Id + '-back-button').\r\n setAttribute('href', configuration.PreviousBusinessTypePageUrl);\r\n }\r\n\r\n subscribeOnEvents();\r\n }\r\n\r\n function subscribeOnEvents() {\r\n hasPreselectedValues = form.find('input[type=radio]:checked').length !== 0;\r\n\r\n updateCountrySectionVisibility();\r\n\r\n form.off('submit')\r\n .on('submit',\r\n function(event) {\r\n event.preventDefault();\r\n\r\n if (bgl.common.validator.isFormValid($(this))) {\r\n $('#HasChanges').val(bgl.common.datastore.isDataChanged($(this)) === true);\r\n\r\n bgl.common.validator.submitForm($(this), configuration);\r\n }\r\n });\r\n\r\n licenceInputs.off('click').on('click',\r\n function(event) {\r\n updateCountrySectionVisibility();\r\n\r\n if (hasPreselectedValues !== true) {\r\n continueHandler(event);\r\n }\r\n });\r\n\r\n form.find('label').on('keyup', bgl.common.keyboardAccessibility.generateClickOnKeypress);\r\n }\r\n\r\n function showContinueButton() {\r\n const continueButton = $(form.find('[type=\\'submit\\']'));\r\n continueButton.removeClass('hide');\r\n }\r\n\r\n function updateCountrySectionVisibility() {\r\n const countriesSection = form.find('#licence-row');\r\n\r\n const checkedLicenceValue = findCheckedLicenceValue();\r\n\r\n if (checkedLicenceValue === internationalLabel) {\r\n hasPreselectedValues = true;\r\n countriesSection.removeClass('hide');\r\n } else {\r\n countriesSection.addClass('hide');\r\n }\r\n\r\n if (hasPreselectedValues === true) {\r\n showContinueButton();\r\n }\r\n }\r\n\r\n function continueHandler(event) {\r\n event.preventDefault();\r\n\r\n if ($(event.target).is(':checked')) {\r\n $(event.target).trigger('change');\r\n }\r\n\r\n form.submit();\r\n }\r\n\r\n function onSuccess(configuration, data) {\r\n if (data.isInternationalType === false) {\r\n bgl.common.datastore.deleteFields(form,\r\n [\r\n 'Country', 'CountryVal', 'CountryText',\r\n ]);\r\n }\r\n\r\n if (data.isInternationalType === true) {\r\n bgl.common.datastore.deleteFields(form,\r\n [\r\n 'HasDrivingLicenceNumber', 'DrivingLicenceNumber',\r\n ]);\r\n }\r\n\r\n location.href = data.nextDtsPageUrl;\r\n }\r\n\r\n function onError() {\r\n bgl.components.driverdetails.typeoflicence.init(configuration);\r\n\r\n bgl.common.datastore.extendCollectedData(form, {isFormDirty: true});\r\n }\r\n\r\n function findCheckedLicenceValue() {\r\n return form.find('#licence-section [type=radio]:checked').val();\r\n }\r\n\r\n return {\r\n init: initComponent,\r\n onSuccess: onSuccess,\r\n onError: onError,\r\n };\r\n})();\r\n// eslint-disable-next-line no-var\r\nvar bgl = window.bgl || {};\r\nbgl.components = bgl.components || {};\r\nbgl.components.driverdetails = bgl.components.driverdetails || {};\r\n\r\nbgl.components.driverdetails.searchaddress = (function() {\r\n let configuration;\r\n let containerId;\r\n let form;\r\n const BACK_URL_STACK_KEY = 'backUrlStack';\r\n\r\n function loadComponent(componentConfiguration, componentUrl, containerElementId) {\r\n configuration = componentConfiguration;\r\n containerId = document.getElementById(containerElementId).parentElement.getAttribute('id');\r\n\r\n bgl.common.loader.load(componentConfiguration,\r\n componentUrl,\r\n containerElementId,\r\n function() {\r\n bgl.components.driverdetails.searchaddress.init(configuration);\r\n setSessionStorageItems();\r\n sessionStorage.removeItem(BACK_URL_STACK_KEY);\r\n },\r\n );\r\n }\r\n\r\n function initComponent(componentConfiguration) {\r\n configuration = componentConfiguration;\r\n containerId = document.getElementById(componentConfiguration.Id).parentElement.getAttribute('id');\r\n form = $('form');\r\n if (form.attr('data-step') === 'confirm') {\r\n bgl.common.datastore.setupReadAndWrite();\r\n } else {\r\n bgl.common.datastore.init(form);\r\n bgl.common.datastore.setupReadAndWrite();\r\n }\r\n\r\n bgl.common.validator.enableMaxLength();\r\n bgl.common.validator.init(form);\r\n\r\n initAjaxLink();\r\n initBackButtonLink();\r\n initPostcodeFieldTrim();\r\n\r\n setElementFocusIfIsOnPage('Line1'); // Manual entry\r\n setElementFocusIfIsOnPage('Home'); // Search entry\r\n\r\n form.off('submit')\r\n .on('submit',\r\n function(event) {\r\n event.preventDefault();\r\n if (bgl.common.validator.isFormValid(form)) {\r\n const quoteId = $('#QuoteId').val();\r\n\r\n if (form.attr('data-step') === 'confirm' && quoteId !== '') {\r\n bgl.common.validator.submitForm(form, configuration);\r\n } else if (form.attr('data-step') === 'confirm' && quoteId === '') {\r\n const dataToPost = form.serialize();\r\n $.ajax({\r\n url: configuration.TenantConfiguration.ApplicationPath + 'Account/' + 'NewLeadEntry',\r\n type: 'POST',\r\n cache: false,\r\n dataType: 'json',\r\n data: dataToPost,\r\n success: function(data) {\r\n if (data.isSuccess === false) {\r\n bgl.common.utilities.errorRedirect(data.errorRedirectUrl);\r\n return;\r\n }\r\n sessionStorage.setItem('CustomerFirstName', data.customerFirstName);\r\n sessionStorage.setItem('CustomerAccountId', data.customerAccountId);\r\n bgl.common.utilities.redirectToUrl(data.redirectUrl);\r\n },\r\n });\r\n } else {\r\n bgl.common.validator.submitForm(form, configuration);\r\n }\r\n }\r\n });\r\n }\r\n\r\n function setSessionStorageItems() {\r\n const addressId = $('[name=\"AddressId\"]').val();\r\n const postcode = $('[name=\"PostCode\"]').val();\r\n const home = $('[name=\"Home\"]').val();\r\n\r\n sessionStorage.setItem('addressId', addressId);\r\n sessionStorage.setItem('postCode', postcode);\r\n sessionStorage.setItem('home', home);\r\n }\r\n\r\n function loadView(url) {\r\n const sessionStorageData = JSON.parse(sessionStorage.getItem(configuration.DataStoreKey));\r\n\r\n let data = {\r\n ComponentConfiguration: configuration,\r\n AddressId: sessionStorageData.AddressId,\r\n };\r\n\r\n if (url.indexOf('SearchAddress') !== -1) {\r\n sessionStorage.removeItem(BACK_URL_STACK_KEY);\r\n data = configuration;\r\n } else if (url.indexOf('SelectAddress') !== -1) {\r\n data.PostCode = sessionStorageData.PostCode;\r\n data.Home = sessionStorageData.Home;\r\n }\r\n\r\n bgl.common.loader.load(data,\r\n url,\r\n containerId,\r\n function() {\r\n initComponent(configuration);\r\n });\r\n }\r\n\r\n function initAjaxLink() {\r\n $('.ajax-address-link')\r\n .off('click')\r\n .on('click',\r\n function(e) {\r\n e.preventDefault();\r\n const url = $(this).attr('href');\r\n const backButtonUrl = $(this).data('back-url');\r\n pushBackButtonUrl(backButtonUrl);\r\n loadView(url);\r\n });\r\n }\r\n\r\n function initBackButtonLink() {\r\n $('.back-button-link')\r\n .off('click')\r\n .on('click',\r\n function(e) {\r\n e.preventDefault();\r\n const url = getBackButtonUrlFromStack();\r\n if (url) {\r\n $(this).hide();\r\n loadView(url);\r\n } else {\r\n location.href = configuration.PreviousStepUrl;\r\n }\r\n });\r\n }\r\n\r\n function initPostcodeFieldTrim() {\r\n $('#PostCode')\r\n .on('blur',\r\n function(e) {\r\n $(this).val($(this).val().trim());\r\n });\r\n }\r\n\r\n function setElementFocusIfIsOnPage(elementId) {\r\n const element = document.getElementById(elementId);\r\n\r\n if (element != null) {\r\n $(`#${elementId}`).focus().select();\r\n }\r\n }\r\n\r\n function onSuccess(configuration, data) {\r\n pushBackButtonUrl(data.backButtonUrl);\r\n bgl.common.loader.load(data.content, data.url, containerId, function() {\r\n bgl.components.driverdetails.searchaddress.init(configuration);\r\n });\r\n }\r\n\r\n function onSuccessConfirmation(configuration, data) {\r\n location.href = configuration.NextStepUrl;\r\n }\r\n\r\n function onError() {\r\n bgl.components.driverdetails.searchaddress.init(configuration);\r\n }\r\n\r\n function getBackButtonUrlFromStack() {\r\n const stack = JSON.parse(sessionStorage.getItem(BACK_URL_STACK_KEY));\r\n if (stack) {\r\n const url = stack.pop();\r\n sessionStorage.setItem(BACK_URL_STACK_KEY, JSON.stringify(stack));\r\n return url;\r\n }\r\n }\r\n\r\n function pushBackButtonUrl(url) {\r\n const stack = JSON.parse(sessionStorage.getItem(BACK_URL_STACK_KEY)) || [];\r\n stack.push(url);\r\n sessionStorage.setItem(BACK_URL_STACK_KEY, JSON.stringify(stack));\r\n }\r\n\r\n return {\r\n init: initComponent,\r\n load: loadComponent,\r\n onSuccess: onSuccess,\r\n onSuccessConfirmation: onSuccessConfirmation,\r\n onError: onError,\r\n };\r\n})();\r\n// eslint-disable-next-line no-var\r\nvar bgl = window.bgl || {};\r\nbgl.components = bgl.components || {};\r\nbgl.components.driverdetails = bgl.components.driverdetails || {};\r\n\r\nbgl.components.driverdetails.scrolltoelement = (function() {\r\n function init() {\r\n subscribeScrollLink();\r\n }\r\n\r\n function subscribeScrollLink() {\r\n $('.scroll-to-link')\r\n .off('click')\r\n .on('click', function(e) {\r\n e.preventDefault();\r\n\r\n const $this = $(this);\r\n const time = parseInt($this.data('scrollTime'));\r\n const elementToScroll = $this.attr('href');\r\n const accordion = $this.data('accordion');\r\n\r\n if (accordion) {\r\n openAccordion(accordion);\r\n }\r\n\r\n scrollTo(elementToScroll, time);\r\n });\r\n }\r\n\r\n function openAccordion(element) {\r\n const driverHeaderAccordionButton = $(element).find('.accordion__heading-button');\r\n const isExpanded = $(driverHeaderAccordionButton).attr('aria-expanded');\r\n\r\n if (isExpanded.toLowerCase() === 'false') {\r\n $(driverHeaderAccordionButton).click();\r\n }\r\n }\r\n\r\n function scrollTo(element, time) {\r\n $('html,body').animate({\r\n scrollTop: $(element).offset().top,\r\n }, time);\r\n }\r\n\r\n return {\r\n init: init,\r\n scrollTo: scrollTo,\r\n };\r\n})();\r\n// eslint-disable-next-line no-var\r\nvar bgl = window.bgl || {};\r\nbgl.components = bgl.components || {};\r\nbgl.components.driverdetails = bgl.components.driverdetails || {};\r\n\r\nbgl.components.driverdetails.overnightparking = (function() {\r\n let doneButton;\r\n let radioButtons;\r\n let configuration;\r\n let containerId;\r\n const BACK_URL_STACK_KEY = 'backUrlStack';\r\n let form;\r\n\r\n function initComponent(componentConfiguration, containerRef) {\r\n configuration = componentConfiguration;\r\n containerId = containerRef;\r\n\r\n form = $('[data-component-id=\\'' + configuration.Id + '\\'] form');\r\n doneButton = $('#vehicle-overnight_done-button');\r\n radioButtons = $('input[type=\\'radio\\']');\r\n\r\n bgl.common.datastore.init(form, false, true);\r\n bgl.common.datastore.setupReadAndWrite();\r\n\r\n initBackButtonLink();\r\n subscribeToDoneEvents();\r\n subscribeToRadioButtonEvents();\r\n\r\n bgl.common.datastore.extendCollectedData(\r\n form,\r\n {OvernightParkingCode: $('input[name=OvernightParkingCode]:checked').val()},\r\n );\r\n }\r\n\r\n function initBackButtonLink() {\r\n $('.back-button-link')\r\n .off('click')\r\n .on('click',\r\n function(e) {\r\n e.preventDefault();\r\n $(this).hide();\r\n const url = getBackButtonUrl();\r\n loadView(url);\r\n });\r\n }\r\n\r\n function loadView(url) {\r\n const data = bgl.common.datastore.getData('Address');\r\n\r\n data.ComponentConfiguration = configuration;\r\n\r\n\r\n bgl.common.loader.load(data,\r\n url,\r\n containerId,\r\n function() {\r\n bgl.components.editaddress.init(configuration, false);\r\n });\r\n }\r\n\r\n function pushBackButtonUrl(url) {\r\n const stack = JSON.parse(sessionStorage.getItem(BACK_URL_STACK_KEY)) || [];\r\n\r\n stack.push(url);\r\n\r\n sessionStorage.setItem(BACK_URL_STACK_KEY, JSON.stringify(stack));\r\n }\r\n\r\n function getBackButtonUrl() {\r\n const stack = JSON.parse(sessionStorage.getItem(BACK_URL_STACK_KEY));\r\n const url = stack.pop();\r\n\r\n sessionStorage.setItem(BACK_URL_STACK_KEY, JSON.stringify(stack));\r\n\r\n return url;\r\n }\r\n\r\n\r\n function subscribeToRadioButtonEvents() {\r\n const hasValue = radioButtons.is(':checked');\r\n\r\n if (hasValue) {\r\n doneButton.removeClass('hide');\r\n } else {\r\n doneButton.addClass('hide');\r\n }\r\n\r\n $.each(radioButtons,\r\n function(key, item) {\r\n const button = $(item);\r\n\r\n button.on('change',\r\n function(event) {\r\n event.preventDefault();\r\n if (!hasValue) {\r\n form.submit();\r\n }\r\n });\r\n });\r\n\r\n form.find('label').on('keyup', bgl.common.keyboardAccessibility.generateClickOnKeypress);\r\n }\r\n\r\n function subscribeToDoneEvents() {\r\n form.off('submit').on('submit',\r\n function(event) {\r\n event.preventDefault();\r\n if (bgl.common.validator.isFormValid($(this))) {\r\n $('#HasChanges').val(bgl.common.datastore.isDataChanged($(event.target)) === true);\r\n bgl.common.validator.submitForm($(this), configuration);\r\n }\r\n });\r\n }\r\n\r\n function onSuccess(configuration, response) {\r\n bgl.common.datastore.extendCollectedData(\r\n form,\r\n {\r\n isFormDirty: response.hasChanges,\r\n HasChanges: response.hasChanges,\r\n },\r\n );\r\n pushBackButtonUrl(response.backUrl);\r\n bgl.common.loader.load(configuration, response.nextUrl, containerId, function(e) {\r\n bgl.components.driverdetails.annualmileage.init(configuration, containerId);\r\n });\r\n }\r\n\r\n function onError() {\r\n bgl.common.datastore.extendCollectedData(form, {isFormDirty: true});\r\n bgl.components.vehicledetails.overnightparking.init(configuration);\r\n }\r\n\r\n return {\r\n init: initComponent,\r\n onSuccess: onSuccess,\r\n onError: onError,\r\n };\r\n})();\r\n// eslint-disable-next-line no-var\r\nvar bgl = window.bgl || {};\r\nbgl.components = bgl.components || {};\r\nbgl.components.driverdetails = bgl.components.driverdetails || {};\r\n\r\nconst hasConvictions = 'HasConvictions';\r\n\r\nbgl.components.driverdetails.motorconvictions = (function() {\r\n let configuration;\r\n let form;\r\n let motorConvictionList;\r\n let noButton;\r\n let yesButton;\r\n let doneButton;\r\n let container;\r\n const HIDE_CLASS = 'hide';\r\n\r\n function initComponent(componentConfiguration) {\r\n configuration = componentConfiguration;\r\n\r\n form = $('div[id=' + configuration.Id + '-motor-convictions] form');\r\n noButton = $('#motor-convictions-radio-no');\r\n yesButton = $('#motor-convictions-radio-yes');\r\n motorConvictionList = $('#motor-convictions-list');\r\n doneButton = $('button[data-remove-all-url]');\r\n container = $('#' + configuration.Id + '-motor-convictions form');\r\n\r\n bgl.common.datastore.init(container, false, true);\r\n bgl.common.datastore.setupWrite();\r\n\r\n if (getMotorConvictions() === 0) {\r\n getConvictionsFromStorageAndSetNoButton();\r\n }\r\n\r\n subscribeForEvents();\r\n }\r\n\r\n function subscribeForEvents() {\r\n subscribeToEventShowMotorConvictions();\r\n subscribeToEventDeleteMotorConviction();\r\n subscribeToEventRemoveAllMotorConvictions();\r\n subscribeToEventAddMotorConviction();\r\n subscribeToEventDoneButtonMotorConvictions();\r\n form.find('label').on('keyup', bgl.common.keyboardAccessibility.generateClickOnKeypress);\r\n }\r\n\r\n function subscribeToEventShowMotorConvictions() {\r\n const radioButtons = $('input[type=\\'radio\\']');\r\n if (!radioButtons.is(':checked')) {\r\n doneButton.addClass('hide');\r\n } else {\r\n doneButton.removeClass('hide');\r\n }\r\n\r\n $.each(radioButtons,\r\n function(key, item) {\r\n const button = $(item);\r\n\r\n button.off('change').on('change',\r\n function(event) {\r\n event.preventDefault();\r\n\r\n switch ($(this).val()) {\r\n case 'True':\r\n if (getMotorConvictions() === 0) {\r\n $('#motor-convictions-add-another').click();\r\n $(this).prop('checked', false);\r\n } else {\r\n $('#motor-convictions-radio-no').attr('data-need-to-delete', 'false');\r\n if (motorConvictionList.hasClass(HIDE_CLASS)) {\r\n motorConvictionList.removeClass(HIDE_CLASS);\r\n }\r\n }\r\n break;\r\n case 'False':\r\n const isNeedToBeDeleted = getMotorConvictions() !== 0;\r\n $('#motor-convictions-radio-no').attr('data-need-to-delete', isNeedToBeDeleted);\r\n\r\n if (!isNeedToBeDeleted) {\r\n setSessionStorageValue();\r\n goToNextStep();\r\n } else if (!motorConvictionList.hasClass(HIDE_CLASS)) {\r\n motorConvictionList.addClass(HIDE_CLASS);\r\n }\r\n break;\r\n }\r\n });\r\n });\r\n }\r\n\r\n function subscribeToEventDeleteMotorConviction() {\r\n const deleteMotorConvictionButtons = $('button[data-role=\\'delete\\']');\r\n\r\n $.each(deleteMotorConvictionButtons,\r\n function(key, item) {\r\n $(item).off('click').on('click',\r\n function(event) {\r\n event.preventDefault();\r\n $(item).attr('disabled', 'disabled');\r\n\r\n const target = $(event.target);\r\n const link = target.is('button') ? target : target.parent();\r\n\r\n const token = $('input[name=\\'__RequestVerificationToken\\']').val();\r\n const journeyType = $('#JourneyType').val();\r\n const patchUrl = link.attr('href');\r\n\r\n const dataToPost = {\r\n __RequestVerificationToken: token,\r\n motorConvictionId: link.data('conviction-id'),\r\n journeyType: journeyType,\r\n };\r\n\r\n $.ajax({\r\n url: patchUrl,\r\n type: 'POST',\r\n data: dataToPost,\r\n success: function(data, textStatus, request) {\r\n if (request.getResponseHeader('Content-Type') === 'application/json; charset=utf-8') {\r\n if (!data.isSuccess) {\r\n bgl.common.utilities.errorRedirect(data.errorRedirectUrl);\r\n }\r\n\r\n if (getMotorConvictions() === 1) {\r\n setSessionStorageValue();\r\n }\r\n\r\n bgl.common.utilities.refreshPage();\r\n }\r\n },\r\n });\r\n });\r\n });\r\n }\r\n\r\n function subscribeToEventRemoveAllMotorConvictions() {\r\n const removeAllButton = $('#remove-all-motor-convictions');\r\n\r\n removeAllButton.off('click').on('click',\r\n function(event) {\r\n event.preventDefault();\r\n noButton.click();\r\n });\r\n }\r\n\r\n function subscribeToEventAddMotorConviction() {\r\n $('#motor-convictions-add-another').off('click').on('click',\r\n function(event) {\r\n event.preventDefault();\r\n const url = $(event.target).attr('href');\r\n loadAddMotorConvictions(url);\r\n });\r\n }\r\n\r\n function subscribeToEventDoneButtonMotorConvictions() {\r\n doneButton.off('click').on('click',\r\n function() {\r\n const isNeededToDelete = noButton.attr('data-need-to-delete') === 'true';\r\n const isNoButtonChecked = noButton.is(':checked');\r\n const patchUrl = $(this).data('remove-all-url');\r\n\r\n if (isNeededToDelete && isNoButtonChecked) {\r\n const dataToPost = $.param({\r\n __RequestVerificationToken: $('input[name=\\'__RequestVerificationToken\\']').val(),\r\n personId: $('#PersonId').val(),\r\n JourneyType: $('#JourneyType').val(),\r\n });\r\n\r\n $.ajax({\r\n url: patchUrl,\r\n type: 'POST',\r\n data: dataToPost,\r\n success: function(data, textStatus, request) {\r\n if (request.getResponseHeader('Content-Type') === 'application/json; charset=utf-8') {\r\n if (!data.isSuccess && data.errorRedirectUrl !== null) {\r\n bgl.common.utilities.errorRedirect(data.errorRedirectUrl);\r\n } else if (data.isSuccess) {\r\n goToNextStep();\r\n }\r\n }\r\n },\r\n });\r\n } else {\r\n goToNextStep();\r\n }\r\n });\r\n }\r\n\r\n function goToNextStep() {\r\n if (typeof bgl.common.pubsub !== 'undefined') {\r\n bgl.common.pubsub.emit('fakeFormSubmit', form.attr('id') || form.attr('action') || 'unknown');\r\n }\r\n bgl.common.utilities.redirectToUrl(configuration.NextStepUrl);\r\n }\r\n\r\n function getMotorConvictions() {\r\n return $('.step-form__summary-item').length;\r\n }\r\n\r\n function setSessionStorageValue() {\r\n const key = container.data('store-key');\r\n const yourDetails = JSON.parse(sessionStorage.getItem(key));\r\n yourDetails[hasConvictions] = 'False';\r\n sessionStorage.setItem(key, JSON.stringify(yourDetails));\r\n }\r\n\r\n function loadAddMotorConvictions(url) {\r\n const model = {\r\n ComponentConfiguration: configuration,\r\n PersonId: $('#PersonId').val(),\r\n JourneyType: $('#JourneyType').val(),\r\n };\r\n\r\n bgl.common.loader.load(model,\r\n url,\r\n 'SlidePanelContent',\r\n function() {\r\n bgl.components.driverdetails.motorconvictionsbuilder.init(configuration);\r\n });\r\n }\r\n\r\n function resetYesNoButtonHandler(flag) {\r\n if (!flag && getMotorConvictions() === 0) {\r\n yesButton.prop('checked', false);\r\n getConvictionsFromStorageAndSetNoButton();\r\n }\r\n }\r\n\r\n function getConvictionsFromStorageAndSetNoButton() {\r\n const model = bgl.common.datastore.getData(container);\r\n if (model && model.HasConvictions) {\r\n noButton.prop('checked', 'checked');\r\n }\r\n }\r\n\r\n return {\r\n init: initComponent,\r\n resetButtons: resetYesNoButtonHandler,\r\n };\r\n})();\r\n\r\nbgl.components.driverdetails.motorconvictionsbuilder = (function() {\r\n let form;\r\n let configuration;\r\n const HIDE_CLASS = 'hide';\r\n let haveMotorConvictionsBeenChanged = false;\r\n\r\n function initComponent(componentConfiguration) {\r\n configuration = componentConfiguration;\r\n form = $('#add-motor-conviction');\r\n\r\n if (form) {\r\n bgl.common.validator.init(form);\r\n }\r\n\r\n subscribeForEvents();\r\n subscribeToEventDismissMotorConvictionPannel();\r\n }\r\n\r\n function subscribeToEventDismissMotorConvictionPannel() {\r\n $(document).off('click.drivermotorconvictions', '[data-dismiss=\"slide-panel\"]')\r\n .on('click.drivermotorconvictions', '[data-dismiss=\"slide-panel\"]', function() {\r\n unSubscribeToEventDismissMotorConvictionPannel();\r\n bgl.components.driverdetails.motorconvictions.resetButtons(haveMotorConvictionsBeenChanged);\r\n });\r\n\r\n $(document).off('keyup.drivermotorconvictions').on('keyup.drivermotorconvictions', function(event) {\r\n if (event.key === 'Escape') {\r\n unSubscribeToEventDismissMotorConvictionPannel();\r\n bgl.components.driverdetails.motorconvictions.resetButtons(haveMotorConvictionsBeenChanged);\r\n }\r\n });\r\n\r\n $('.overlay').off('click.drivermotorconvictions').on('click.drivermotorconvictions', function() {\r\n unSubscribeToEventDismissMotorConvictionPannel();\r\n bgl.components.driverdetails.motorconvictions.resetButtons(haveMotorConvictionsBeenChanged);\r\n });\r\n }\r\n\r\n function unSubscribeToEventDismissMotorConvictionPannel() {\r\n $(document).off('click.drivermotorconvictions', '[data-dismiss=\"slide-panel\"]');\r\n $(document).off('keyup.drivermotorconvictions');\r\n $('.overlay').off('click.drivermotorconvictions');\r\n }\r\n\r\n function subscribeForEvents() {\r\n $('.step-form__button, .form-row__breadcrumb-link').off('click').on('click',\r\n function(event) {\r\n stepClick(event, false);\r\n });\r\n\r\n $('[data-step-type=\"previous-step\"]').off('click').on('click',\r\n function(event) {\r\n stepClick(event, true);\r\n });\r\n\r\n function stepClick(event, isBackButtonClicked) {\r\n event.preventDefault();\r\n const link = $(event.currentTarget);\r\n selectNextStep(link, isBackButtonClicked);\r\n }\r\n\r\n const banLengthRow = $('#ban-length-row');\r\n\r\n $('#conviction-has-ban-no').on('click',\r\n function() {\r\n if (!banLengthRow.hasClass(HIDE_CLASS)) {\r\n banLengthRow.addClass(HIDE_CLASS);\r\n }\r\n $('#Months-Ban').val('');\r\n });\r\n\r\n $('#conviction-has-ban-yes').on('click',\r\n function() {\r\n if (banLengthRow.hasClass(HIDE_CLASS)) {\r\n banLengthRow.removeClass(HIDE_CLASS);\r\n }\r\n });\r\n\r\n bgl.common.validator.initNumberInputField($('#Months-Ban'), 2);\r\n bgl.common.validator.initNumberInputField($('#Fine-Amount'), 5);\r\n\r\n if (form) {\r\n form.off('submit').on('submit',\r\n function(event) {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n\r\n const submit = $(this).find(':submit');\r\n submit.attr('disabled', 'disabled');\r\n\r\n if (bgl.common.validator.validate(configuration, form) === false) {\r\n submit.removeAttr('disabled');\r\n }\r\n });\r\n }\r\n }\r\n\r\n function selectNextStep(link, isBack) {\r\n const nextStep = link.data('next-step');\r\n const currentStep = $('#motor-conviction-tiles').data('current-step');\r\n const journeyType = $('#JourneyType').val();\r\n if (typeof bgl.common.pubsub !== 'undefined' && !isBack) {\r\n bgl.common.pubsub.emit('fakeFormSubmit', $('#motor-conviction-current-step').val());\r\n }\r\n\r\n let currentValue = {\r\n Code: link.data('code'),\r\n Value: $.trim(link.text()),\r\n BuilderStep: currentStep,\r\n };\r\n\r\n const model = {\r\n ComponentConfiguration: configuration,\r\n PersonId: $('#PersonId').val(),\r\n JourneyType: journeyType,\r\n CurrentStep: nextStep,\r\n };\r\n\r\n if (isBack) {\r\n currentValue = undefined;\r\n model.IsBackButtonClicked = true;\r\n }\r\n\r\n model.SelectedValues = getSelectedValues(currentValue);\r\n\r\n const url = link.attr('href');\r\n if (link.data('current-step') === 'Type' && isBack === true) {\r\n $('[data-dismiss]').click();\r\n return;\r\n }\r\n\r\n bgl.common.loader.load(model,\r\n url,\r\n 'SlidePanelContent',\r\n function() {\r\n bgl.components.driverdetails.motorconvictionsbuilder.init(configuration);\r\n });\r\n }\r\n\r\n function getSelectedValues(currentValue) {\r\n const result = [];\r\n const breadcrumbLinks = $('.form-row__breadcrumb-link') || [];\r\n\r\n $.each(breadcrumbLinks,\r\n function(idx, element) {\r\n const value = {\r\n Code: $(element).data('code'),\r\n Value: $.trim($(element).text()),\r\n BuilderStep: $(element).data('next-step'),\r\n };\r\n\r\n result.push(value);\r\n });\r\n\r\n if (currentValue !== undefined) {\r\n result.push(currentValue);\r\n }\r\n\r\n return result;\r\n }\r\n\r\n function onSuccess(configuration, data) {\r\n if (data.lastStep === true) {\r\n haveMotorConvictionsBeenChanged = true;\r\n $('[data-dismiss]').click();\r\n bgl.common.utilities.refreshPage();\r\n } else {\r\n const newModel = JSON.parse(data.content);\r\n\r\n configuration = newModel.ComponentConfiguration;\r\n\r\n bgl.common.loader.load(newModel,\r\n data.redirectUrl,\r\n 'SlidePanelContent',\r\n function() {\r\n bgl.components.driverdetails.motorconvictionsbuilder.init(configuration);\r\n });\r\n }\r\n }\r\n\r\n function onError() {\r\n bgl.components.driverdetails.motorconvictionsbuilder.init(configuration);\r\n }\r\n\r\n return {\r\n init: initComponent,\r\n onSuccess: onSuccess,\r\n onError: onError,\r\n };\r\n})();\r\n// eslint-disable-next-line no-var\r\nvar bgl = window.bgl || {};\r\nbgl.components = bgl.components || {};\r\nbgl.components.driverdetails = bgl.components.driverdetails || {};\r\n\r\nconst hasClaims = 'HasClaims';\r\n\r\nbgl.components.driverdetails.motorclaims = (function() {\r\n let configuration;\r\n let motorClaimList;\r\n let form;\r\n let doneButton;\r\n let radioButtons;\r\n const HIDE_CLASS = 'hide';\r\n let addNewClaim;\r\n\r\n function initComponent(componentConfiguration) {\r\n form = $('#' + componentConfiguration.Id + '-motor-claims-form');\r\n doneButton = $('button[data-remove-all-url]');\r\n radioButtons = $('input[type=\\'radio\\']');\r\n configuration = componentConfiguration;\r\n motorClaimList = $('#motor-claims-list');\r\n\r\n addNewClaim = $('#add-new-motor-claim');\r\n\r\n subscribeForEvents();\r\n\r\n bgl.common.datastore.init(form, false, true);\r\n bgl.common.datastore.setupWrite();\r\n\r\n const noButton = $('#driver-has-claims-no');\r\n const isAnyClaims = $('.step-form__summary-item').length > 0;\r\n\r\n if (!isAnyClaims) {\r\n const model = bgl.common.datastore.getData(form);\r\n if (model && model.HasClaims) {\r\n noButton.prop('checked', 'checked');\r\n }\r\n }\r\n\r\n if (!radioButtons.is(':checked')) {\r\n doneButton.addClass('hide');\r\n } else {\r\n doneButton.removeClass('hide');\r\n }\r\n }\r\n\r\n function subscribeForEvents() {\r\n subscribeToEventShowMotorClaims();\r\n subscribeToEventDeleteMotorClaim();\r\n subscribeToEventRemoveAllMotorClaims();\r\n subscribeToEventAddMotorClaim();\r\n form.find('label').on('keyup', bgl.common.keyboardAccessibility.generateClickOnKeypress);\r\n }\r\n\r\n function subscribeToEventShowMotorClaims() {\r\n $.each(radioButtons,\r\n function(key, item) {\r\n const button = $(item);\r\n button.off('change').on('change',\r\n function(event) {\r\n event.preventDefault();\r\n\r\n switch ($(this).val()) {\r\n case 'True':\r\n if (getMotorClaims() === 0) {\r\n addNewClaim.click();\r\n } else {\r\n $('#driver-has-claims-no').attr('data-need-to-delete', 'false');\r\n if (motorClaimList.hasClass(HIDE_CLASS)) {\r\n motorClaimList.removeClass(HIDE_CLASS);\r\n }\r\n }\r\n break;\r\n case 'False':\r\n const isNeededToBeDelete = getMotorClaims() !== 0;\r\n $('#driver-has-claims-no').attr('data-need-to-delete', isNeededToBeDelete);\r\n\r\n if (!motorClaimList.hasClass(HIDE_CLASS)) {\r\n motorClaimList.addClass(HIDE_CLASS);\r\n }\r\n\r\n if (getMotorClaims() === 0) {\r\n if (typeof bgl.common.pubsub !== 'undefined') {\r\n bgl.common.pubsub.emit(\r\n 'fakeFormSubmit',\r\n form.attr('id') || form.attr('action') || 'unknown',\r\n );\r\n }\r\n bgl.common.utilities.redirectToUrl(doneButton.data('next-step-url'));\r\n }\r\n break;\r\n }\r\n });\r\n });\r\n }\r\n\r\n function subscribeToEventAddMotorClaim() {\r\n addNewClaim.off('click').on('click',\r\n function(event) {\r\n event.preventDefault();\r\n const url = $(this).attr('href');\r\n loadAddMotorClaims(url);\r\n });\r\n }\r\n\r\n function subscribeToEventRemoveAllMotorClaims() {\r\n const removeAllButton = $('#remove-all-motor-claims');\r\n const noButton = $('#driver-has-claims-no');\r\n\r\n removeAllButton.off('click');\r\n removeAllButton.on('click',\r\n function(event) {\r\n event.preventDefault();\r\n noButton.click();\r\n });\r\n\r\n doneButton.off('click').on('click',\r\n function() {\r\n if (typeof bgl.common.pubsub !== 'undefined') {\r\n bgl.common.pubsub.emit('fakeFormSubmit', form.attr('id') || form.attr('action') || 'unknown');\r\n }\r\n const isNeededToDelete = noButton.attr('data-need-to-delete') === 'true';\r\n const isNoButtonChecked = noButton.is(':checked');\r\n const patchUrl = $(this).data('remove-all-url');\r\n\r\n if (isNeededToDelete && isNoButtonChecked) {\r\n const dataToPost = $.param({\r\n __RequestVerificationToken: $('input[name=\"__RequestVerificationToken\"]').val(),\r\n personId: $('#PersonId').val(),\r\n });\r\n\r\n $.ajax({\r\n url: patchUrl,\r\n type: 'POST',\r\n data: dataToPost,\r\n success: function(data, textStatus, request) {\r\n if (request.getResponseHeader('Content-Type') === 'application/json; charset=utf-8') {\r\n if (!data.isSuccess && data.errorRedirectUrl !== null) {\r\n bgl.common.utilities.errorRedirect(data.errorRedirectUrl);\r\n } else if (data.isSuccess) {\r\n bgl.common.utilities.redirectToUrl(configuration.NextStepUrl);\r\n }\r\n }\r\n },\r\n });\r\n } else {\r\n bgl.common.utilities.redirectToUrl(configuration.NextStepUrl);\r\n }\r\n });\r\n }\r\n\r\n function subscribeToEventDeleteMotorClaim() {\r\n const deleteMotorClaimButtons = $('button[data-role=\\'delete\\']');\r\n\r\n $.each(deleteMotorClaimButtons,\r\n function(key, item) {\r\n $(item).off('click');\r\n $(item).on('click', function(event) {\r\n event.preventDefault();\r\n $(item).attr('disabled', 'disabled');\r\n\r\n const target = $(event.target);\r\n const link = target.is('button') ? target : target.parent();\r\n const token = $('input[name=\\'__RequestVerificationToken\\']').val();\r\n const patchUrl = link.attr('href');\r\n const journeyType = $('#JourneyType').val();\r\n const dataToPost = $.param({\r\n __RequestVerificationToken: token,\r\n motorclaimId: link.data('claim-id'),\r\n journeyType: journeyType,\r\n });\r\n\r\n $.ajax({\r\n url: patchUrl,\r\n type: 'POST',\r\n data: dataToPost,\r\n success: function(data, textStatus, request) {\r\n if (request.getResponseHeader('Content-Type') === 'application/json; charset=utf-8') {\r\n if (!data.isSuccess) {\r\n bgl.common.utilities.errorRedirect(data.errorRedirectUrl);\r\n }\r\n\r\n if (getMotorClaims() === 1) {\r\n const key = form.data('store-key');\r\n const yourDetails = JSON.parse(sessionStorage.getItem(key)) || {};\r\n yourDetails[hasClaims] = 'False';\r\n sessionStorage.setItem(key, JSON.stringify(yourDetails));\r\n }\r\n\r\n bgl.common.utilities.refreshPage();\r\n }\r\n },\r\n });\r\n });\r\n });\r\n }\r\n\r\n function getMotorClaims() {\r\n return $('.step-form__summary-item').length;\r\n }\r\n\r\n function loadAddMotorClaims(url) {\r\n const model = {\r\n ComponentConfiguration: configuration,\r\n PersonId: $('#PersonId').val(),\r\n JourneyType: $('#JourneyType').val(),\r\n };\r\n\r\n bgl.common.loader.load(model,\r\n url,\r\n 'SlidePanelContent',\r\n function() {\r\n bgl.components.driverdetails.motorclaimbuilder.init(configuration);\r\n });\r\n }\r\n\r\n return {\r\n init: initComponent,\r\n };\r\n})();\r\n\r\nbgl.components.driverdetails.motorclaimbuilder = (function() {\r\n let form;\r\n let configuration;\r\n const HIDE_CLASS = 'hide';\r\n\r\n function initComponent(componentConfiguration) {\r\n configuration = componentConfiguration;\r\n form = $('#add-motor-claim');\r\n if (form) {\r\n bgl.common.validator.init(form);\r\n bgl.common.validator.initNumberInputField($('#Claim-Amount'), 5);\r\n }\r\n\r\n subscribeForEvents();\r\n subscribeToEventDismissMotorClaimsPanel();\r\n groupSpanAndButton();\r\n }\r\n\r\n function groupSpanAndButton() {\r\n $('.form-row__label.step-form__question-label').append('');\r\n $('.form-row__label.step-form__question-label #questionmark').prev().appendTo('#tile-container');\r\n $('.form-row__label.step-form__question-label #questionmark').appendTo('#tile-container');\r\n }\r\n\r\n function subscribeForEvents() {\r\n $('.step-form__button').off('click').on('click',\r\n function(event) {\r\n event.preventDefault();\r\n const link = $(event.target);\r\n selectNextStep(link);\r\n });\r\n\r\n $('.form-row__breadcrumb-link').off('click').on('click',\r\n function(event) {\r\n event.preventDefault();\r\n gotoBack($(event.target));\r\n });\r\n\r\n $('[data-step-type=\"previous-step\"]').off('click').on('click',\r\n function(event) {\r\n event.preventDefault();\r\n gotoBack($(event.target));\r\n });\r\n\r\n const claimAmountRow = $('#claim-amount-row');\r\n\r\n $('#claim-has-amount-no').on('click',\r\n function() {\r\n if (!claimAmountRow.hasClass(HIDE_CLASS)) {\r\n claimAmountRow.addClass(HIDE_CLASS);\r\n }\r\n });\r\n\r\n $('#claim-has-amount-yes').on('click',\r\n function() {\r\n if (claimAmountRow.hasClass(HIDE_CLASS)) {\r\n claimAmountRow.removeClass(HIDE_CLASS);\r\n }\r\n });\r\n\r\n if (form) {\r\n form.off('submit').on('submit',\r\n function(event) {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n\r\n const submit = $(this).find(':submit');\r\n submit.attr('disabled', 'disabled');\r\n\r\n if (bgl.common.validator.validate(configuration, form) === false) {\r\n submit.removeAttr('disabled');\r\n }\r\n });\r\n }\r\n }\r\n\r\n function subscribeToEventDismissMotorClaimsPanel() {\r\n $(document).off('click.motorclaims', '[data-dismiss=\"slide-panel\"]')\r\n .on('click.motorclaims', '[data-dismiss=\"slide-panel\"]', function() {\r\n unSubscribeToEventDismissMotorClaimsPanel();\r\n dismissSlidePanelHandler();\r\n });\r\n\r\n $(document).off('keyup.motorclaims').on('keyup.motorclaims', function(event) {\r\n if (event.key === 'Escape') {\r\n unSubscribeToEventDismissMotorClaimsPanel();\r\n dismissSlidePanelHandler();\r\n }\r\n });\r\n\r\n $('.overlay').off('click.motorclaims').on('click.motorclaims', function() {\r\n unSubscribeToEventDismissMotorClaimsPanel();\r\n dismissSlidePanelHandler();\r\n });\r\n }\r\n\r\n function unSubscribeToEventDismissMotorClaimsPanel() {\r\n $(document).off('click.motorclaims', '[data-dismiss=\"slide-panel\"]');\r\n $(document).off('keyup.motorclaims');\r\n $('.overlay').off('click.motorclaims');\r\n }\r\n\r\n function dismissSlidePanelHandler() {\r\n bgl.common.utilities.refreshPage();\r\n }\r\n\r\n function gotoBack(link) {\r\n selectNextStep(link, true);\r\n }\r\n\r\n function selectNextStep(link, isBack) {\r\n const nextStep = link.data('next-step');\r\n const currentStep = $('#motor-claim-tiles').data('current-step');\r\n const url = link.attr('href');\r\n\r\n if (currentStep === 'Year' && isBack === true) {\r\n bgl.common.utilities.refreshPage();\r\n return;\r\n }\r\n\r\n let currentValue = {\r\n Code: link.data('code'),\r\n Value: $.trim(link.text()),\r\n BuilderStep: currentStep,\r\n };\r\n\r\n const model = {\r\n ComponentConfiguration: configuration,\r\n PersonId: $('#PersonId').val(),\r\n CurrentStep: nextStep,\r\n JourneyType: $('#JourneyType').val(),\r\n FirstName: $('#FirstName').val(),\r\n };\r\n\r\n if (isBack) {\r\n currentValue = undefined;\r\n model.IsBackButtonClicked = true;\r\n }\r\n\r\n if (typeof bgl.common.pubsub !== 'undefined' && !isBack) {\r\n bgl.common.pubsub.emit('fakeFormSubmit', $('#motor-claim-tiles-legend').text());\r\n }\r\n\r\n model.SelectedValues = getSelectedValues(currentValue);\r\n\r\n bgl.common.loader.load(model,\r\n url,\r\n 'SlidePanelContent',\r\n function() {\r\n bgl.components.driverdetails.motorclaimbuilder.init(configuration);\r\n });\r\n }\r\n\r\n function getSelectedValues(currentValue) {\r\n const result = [];\r\n const breadcrumbLinks = $('.form-row__breadcrumb-link') || [];\r\n\r\n $.each(breadcrumbLinks,\r\n function(idx, element) {\r\n const value = {\r\n Code: $(element).data('code'),\r\n Value: $.trim($(element).text()),\r\n BuilderStep: $(element).data('next-step'),\r\n };\r\n result.push(value);\r\n });\r\n\r\n if (currentValue !== undefined) {\r\n result.push(currentValue);\r\n }\r\n\r\n return result;\r\n }\r\n\r\n function onSuccess() {\r\n bgl.common.utilities.refreshPage();\r\n }\r\n\r\n function onError() {\r\n bgl.components.driverdetails.motorclaimbuilder.init(configuration);\r\n }\r\n\r\n return {\r\n init: initComponent,\r\n onSuccess: onSuccess,\r\n onError: onError,\r\n };\r\n})();\r\n// eslint-disable-next-line no-var\r\nvar bgl = window.bgl || {};\r\nbgl.components = bgl.components || {};\r\nbgl.components.driverdetails = bgl.components.driverdetails || {};\r\n\r\nbgl.components.driverdetails.medicalconditiondvlanotified = (function() {\r\n let form; let configuration;\r\n\r\n function initComponent(componentConfiguration) {\r\n configuration = componentConfiguration;\r\n\r\n form = $('#medical-condition-dvla-notified');\r\n\r\n bgl.common.validator.init(form);\r\n\r\n bgl.common.datastore.init(form, false, true);\r\n bgl.common.datastore.setupReadAndWrite();\r\n\r\n subscribeForEvents();\r\n }\r\n\r\n function subscribeForEvents() {\r\n if (form.find('input[type=radio]:checked').length === 0) {\r\n form.find('input[type=radio]')\r\n .off('keypress', generateClickOnKeypress)\r\n .on('keypress', generateClickOnKeypress)\r\n .off('click', continueHandler)\r\n .on('click', continueHandler);\r\n } else {\r\n const continueButton = $(form.find('[type=\\'submit\\']'));\r\n continueButton.removeClass('hide');\r\n }\r\n\r\n form.off('submit')\r\n .on('submit',\r\n function(event) {\r\n event.preventDefault();\r\n\r\n if (bgl.common.validator.isFormValid($(this))) {\r\n $('#HasChanges').val(bgl.common.datastore.isDataChanged($(this)) === true);\r\n\r\n const currentData = bgl.common.datastore.getData($(this));\r\n const dataForValidate = $(form).serialize() +\r\n '&' +\r\n $.param(currentData) +\r\n '&' +\r\n $.param({ComponentConfiguration: configuration});\r\n\r\n bgl.common.validator.submitForm(form, configuration, dataForValidate);\r\n }\r\n });\r\n\r\n form.find('label').on('keyup', bgl.common.keyboardAccessibility.generateClickOnKeypress);\r\n }\r\n\r\n function generateClickOnKeypress(event) {\r\n const SPACE_KEYCODE = 32;\r\n const ENTER_KEYCODE = 13;\r\n const code = event.charCode || event.keyCode;\r\n\r\n if (code === ENTER_KEYCODE || code === SPACE_KEYCODE) {\r\n $(event.target).prop('checked', 'checked');\r\n $(event.target).click();\r\n }\r\n }\r\n\r\n function continueHandler(event) {\r\n event.preventDefault();\r\n\r\n if ($(event.target).is(':checked')) {\r\n $(event.target).trigger('change');\r\n }\r\n\r\n form.find('input[type=radio]').off();\r\n form.submit();\r\n }\r\n\r\n function onSuccess(configuration, data) {\r\n if (data.nextDtsPageUrl) {\r\n location.href = data.nextDtsPageUrl;\r\n }\r\n }\r\n\r\n function onError() {\r\n bgl.components.driverdetails.medicalconditiondvlanotified.init(configuration);\r\n bgl.common.datastore.extendCollectedData(form, {isFormDirty: true});\r\n }\r\n\r\n return {\r\n init: initComponent,\r\n onSuccess: onSuccess,\r\n onError: onError,\r\n };\r\n})();\r\n// eslint-disable-next-line no-var\r\nvar bgl = window.bgl || {};\r\nbgl.components = bgl.components || {};\r\nbgl.components.driverdetails = bgl.components.driverdetails || {};\r\n\r\nbgl.components.driverdetails.medicalcondition = (function() {\r\n let form;\r\n let configuration;\r\n\r\n function initComponent(componentConfiguration) {\r\n configuration = componentConfiguration;\r\n\r\n initialiseVariables();\r\n\r\n bgl.common.datastore.init(form, false, true);\r\n bgl.common.datastore.setupReadAndWrite();\r\n\r\n subscribeForEvents();\r\n }\r\n\r\n function initialiseVariables() {\r\n form = $('#medical-condition');\r\n\r\n bgl.common.validator.init(form, configuration);\r\n }\r\n\r\n function subscribeForEvents() {\r\n const person = bgl.common.datastore.getData(form);\r\n const isLicenceInternational = person.Licence === 'I';\r\n\r\n if (isLicenceInternational) {\r\n $('#' + configuration.Id + '-back-button').attr('href', configuration.LicenceDatePageUrl);\r\n }\r\n\r\n if (form.find('input[type=radio]:checked').length === 0) {\r\n form.find('input[type=radio]')\r\n .off('keypress', generateClickOnKeypress)\r\n .on('keypress', generateClickOnKeypress)\r\n .off('click', continueHandler)\r\n .on('click', continueHandler);\r\n } else {\r\n const continueButton = $(form.find('[type=\\'submit\\']'));\r\n continueButton.removeClass('hide');\r\n }\r\n\r\n form.off('submit')\r\n .on('submit',\r\n function(event) {\r\n event.preventDefault();\r\n\r\n if (bgl.common.validator.isFormValid($(this))) {\r\n $('#HasChanges').val(bgl.common.datastore.isDataChanged($(this)) === true);\r\n\r\n bgl.common.validator.submitForm(form, configuration);\r\n }\r\n });\r\n\r\n form.find('label').on('keyup', bgl.common.keyboardAccessibility.generateClickOnKeypress);\r\n }\r\n\r\n function generateClickOnKeypress(event) {\r\n const SPACE_KEYCODE = 32;\r\n const ENTER_KEYCODE = 13;\r\n const code = event.charCode || event.keyCode;\r\n\r\n if (code === ENTER_KEYCODE || code === SPACE_KEYCODE) {\r\n $(event.target).prop('checked', 'checked');\r\n $(event.target).click();\r\n }\r\n }\r\n\r\n function continueHandler(event) {\r\n event.preventDefault();\r\n\r\n if ($(event.target).is(':checked')) {\r\n $(event.target).trigger('change');\r\n }\r\n\r\n form.find('input[type=radio]').off();\r\n form.submit();\r\n }\r\n\r\n function onSuccess(configuration, data) {\r\n if (data.hasDvlaNotified === false) {\r\n bgl.common.datastore.deleteFields(form, ['MedicalConditionDvlaNotified']);\r\n }\r\n\r\n if (data.nextDtsPageUrl) {\r\n location.href = data.nextDtsPageUrl;\r\n }\r\n }\r\n\r\n function onError() {\r\n bgl.components.driverdetails.medicalcondition.init(configuration);\r\n bgl.common.datastore.extendCollectedData(form, {isFormDirty: true});\r\n }\r\n\r\n return {\r\n init: initComponent,\r\n onSuccess: onSuccess,\r\n onError: onError,\r\n };\r\n})();\r\n// eslint-disable-next-line no-var\r\nvar bgl = window.bgl || {};\r\nbgl.components = bgl.components || {};\r\nbgl.components.driverdetails = bgl.components.driverdetails || {};\r\n\r\nbgl.components.driverdetails.maritalstatus = (function() {\r\n let form;\r\n let configuration;\r\n function loadComponent(componentConfiguration, componentUrl, containerElementId) {\r\n bgl.common.loader.load(componentConfiguration, componentUrl, containerElementId, function() {\r\n initComponent(componentConfiguration);\r\n });\r\n }\r\n\r\n function initComponent(componentConfiguration) {\r\n configuration = componentConfiguration;\r\n form = $('#marital-status-form');\r\n\r\n bgl.common.datastore.init(form);\r\n bgl.common.datastore.setupReadAndWrite();\r\n\r\n if (form.find('input[type=radio]:checked').length === 0) {\r\n form.find('input[type=radio]')\r\n .off('keypress', generateClickOnKeypress)\r\n .on('keypress', generateClickOnKeypress)\r\n .off('click', continueHandler)\r\n .on('click', function(event) {\r\n $(this).focusout();\r\n continueHandler(event);\r\n });\r\n } else {\r\n const continueButton = $(form.find('[type=\\'submit\\']'));\r\n continueButton.removeClass('hide');\r\n continueButton.off('click').on('click', continueHandler);\r\n }\r\n\r\n form.find('label').on('keyup', bgl.common.keyboardAccessibility.generateClickOnKeypress);\r\n }\r\n\r\n function generateClickOnKeypress(event) {\r\n const code = event.charCode || event.keyCode;\r\n if (code === 13 || code === 32) {\r\n $(this).click();\r\n }\r\n }\r\n\r\n function continueHandler(event, element) {\r\n if (typeof bgl.common.pubsub !== 'undefined') {\r\n bgl.common.pubsub.emit('fakeFormSubmit', form.attr('id') || form.attr('action') || 'unknown');\r\n }\r\n event.preventDefault();\r\n form.find('input[type=radio]').off();\r\n location.href = configuration.NextStepUrl;\r\n }\r\n\r\n return {\r\n init: initComponent,\r\n load: loadComponent,\r\n };\r\n})();\r\n\r\n// eslint-disable-next-line no-var\r\nvar bgl = window.bgl || {};\r\nbgl.components = bgl.components || {};\r\nbgl.components.driverdetails = bgl.components.driverdetails || {};\r\n\r\nbgl.components.driverdetails.licenceheldsince = (function() {\r\n let form;\r\n let configuration;\r\n let monthDropdown;\r\n let yearDropdown;\r\n let fullYearMonthOptions;\r\n\r\n function initComponent(componentConfiguration) {\r\n configuration = componentConfiguration;\r\n form = $('#licence-held-since');\r\n\r\n bgl.common.validator.init(form);\r\n\r\n bgl.common.datastore.init(form, false, true);\r\n bgl.common.datastore.setupReadAndWrite();\r\n\r\n subscribeOnEvents();\r\n\r\n updateMonthDropdown();\r\n }\r\n\r\n function subscribeOnEvents() {\r\n form.off('submit')\r\n .on('submit',\r\n function(event) {\r\n event.preventDefault();\r\n\r\n if (bgl.common.validator.isFormValid($(this))) {\r\n $('#HasChanges').val(bgl.common.datastore.isDataChanged($(this)) === true);\r\n\r\n const currentData = bgl.common.datastore.getData($(this));\r\n const dataForValidate = $(form).serialize() +\r\n '&' +\r\n $.param(currentData) +\r\n '&' +\r\n $.param({ComponentConfiguration: configuration});\r\n\r\n bgl.common.validator.submitForm($(this), configuration, dataForValidate);\r\n }\r\n });\r\n\r\n monthDropdown = form.find('#Since-Month');\r\n yearDropdown = form.find('#Since-Year');\r\n\r\n fullYearMonthOptions = monthDropdown.find('option');\r\n\r\n yearDropdown.on('change', updateMonthDropdown);\r\n }\r\n\r\n function updateMonthDropdown() {\r\n const months = monthDropdown;\r\n const selectedMonthValue = months.val();\r\n\r\n const currentYear = $('#CurrentYear').val() * 1;\r\n const currentMonth = $('#CurrentMonth').val() * 1;\r\n\r\n const selectedYear = yearDropdown.val() * 1;\r\n\r\n const personBirthYear = $('#PersonBirthYear').val() * 1;\r\n const personBirthMonth = $('#PersonBirthMonth').val() * 1;\r\n\r\n const adulthood = personBirthYear + 17;\r\n\r\n if (selectedYear === currentYear) {\r\n months.html(fullYearMonthOptions.slice(0, currentMonth + 1));\r\n } else if (selectedYear === adulthood) {\r\n // merge months after birth month and please select...\r\n const dropdownOptions = fullYearMonthOptions.slice(personBirthMonth);\r\n months.html($.merge([fullYearMonthOptions[0]], dropdownOptions));\r\n } else {\r\n months.html(fullYearMonthOptions);\r\n }\r\n months.val(selectedMonthValue);\r\n\r\n // select first value if value is not selected\r\n if (!months.val()) {\r\n months.find('option:eq(0)').prop('selected', true);\r\n }\r\n }\r\n\r\n function onSuccess(configuration, data) {\r\n if (data.needUpdatePerson === true) {\r\n form.attr('action', data.patchUrl);\r\n\r\n $('#HasChanges').val(bgl.common.datastore.isDataChanged(form) === true);\r\n\r\n const currentData = bgl.common.datastore.getData(form);\r\n\r\n const dataForValidate = $(form).serialize() +\r\n '&' + $.param(currentData) +\r\n '&' + $.param({ComponentConfiguration: configuration, ViewName: 'LicenceHeldSince'});\r\n\r\n bgl.common.datastore.extendCollectedData(form, {isFormDirty: false});\r\n\r\n bgl.common.validator.submitForm(form, configuration, dataForValidate);\r\n return;\r\n }\r\n\r\n location.href = data.nextDtsPageUrl;\r\n }\r\n\r\n function onError() {\r\n bgl.components.driverdetails.licenceheldsince.init(configuration);\r\n bgl.common.datastore.extendCollectedData(form, {isFormDirty: true});\r\n }\r\n\r\n return {\r\n init: initComponent,\r\n onSuccess: onSuccess,\r\n onError: onError,\r\n };\r\n})();\r\n// eslint-disable-next-line no-var\r\nvar bgl = window.bgl || {};\r\nbgl.components = bgl.components || {};\r\nbgl.components.driverdetails = bgl.components.driverdetails || {};\r\n\r\nbgl.components.driverdetails.informationsource = (function() {\r\n let form;\r\n let configuration;\r\n let informationSourceSelectedResponse;\r\n const brandCodeNames = [\r\n 'BRANCH',\r\n 'KIOSK',\r\n 'PROMO',\r\n 'COLLEA',\r\n ];\r\n\r\n function initComponent(componentConfiguration) {\r\n configuration = componentConfiguration;\r\n form = $('#' + configuration.Id).find('#information-source-form');\r\n informationSourceSelectedResponse = form.find('#InformationSourceQuestion_SelectedResponse');\r\n\r\n bgl.common.datastore.init(form);\r\n bgl.common.datastore.setupReadAndWrite();\r\n bgl.common.validator.init(form);\r\n subscribeForEvents();\r\n\r\n toggleBrandCodeSection(informationSourceSelectedResponse.val());\r\n }\r\n\r\n function subscribeForEvents() {\r\n informationSourceSelectedResponse.on('change',\r\n function() {\r\n const currentValue = $(this).val();\r\n toggleBrandCodeSection(currentValue);\r\n });\r\n\r\n form.off('submit')\r\n .on('submit',\r\n function(event) {\r\n event.preventDefault();\r\n if (!bgl.common.validator.isFormValid(form)) {\r\n return;\r\n }\r\n\r\n if (!bgl.common.datastore.isDataChanged(form)) {\r\n onSuccess();\r\n return;\r\n };\r\n\r\n bgl.common.validator.submitForm(form, configuration);\r\n });\r\n }\r\n\r\n function toggleBrandCodeSection(currentValue) {\r\n const brandCodeSection = $('#Branch-Code-Section');\r\n\r\n for (let i = 0; i < brandCodeNames.length; i++) {\r\n if (endsWith(currentValue, brandCodeNames[i])) {\r\n brandCodeSection.removeClass('hide');\r\n return;\r\n }\r\n }\r\n\r\n brandCodeSection.addClass('hide');\r\n form.find('#BranchCodeQuestion_SelectedResponse').val('').trigger('focusout');\r\n }\r\n\r\n function endsWith(originalString, searchString) {\r\n let position = originalString.length;\r\n position -= searchString.length;\r\n\r\n const lastIndex = originalString.indexOf(searchString, position);\r\n\r\n return lastIndex !== -1 && lastIndex === position;\r\n }\r\n\r\n function onSuccess() {\r\n bgl.common.datastore.removeSessionStorage(form);\r\n bgl.common.utilities.redirectToUrl(configuration.NextStepUrl);\r\n }\r\n\r\n function onError() {\r\n initComponent(configuration);\r\n }\r\n\r\n return {\r\n init: initComponent,\r\n onSuccess: onSuccess,\r\n onError: onError,\r\n };\r\n})();\r\n\r\n// eslint-disable-next-line no-var\r\nvar bgl = window.bgl || {};\r\nbgl.components = bgl.components || {};\r\nbgl.components.driverdetails = bgl.components.driverdetails || {};\r\n\r\nbgl.components.driverdetails.homeowner = (function() {\r\n let form;\r\n let configuration;\r\n let continueButton;\r\n let homeOwnerYes;\r\n let homeOwnerNo;\r\n\r\n function initComponent(componentConfiguration) {\r\n configuration = componentConfiguration;\r\n form = $('#home-owner');\r\n continueButton = form.find('[type=\\'submit\\']');\r\n homeOwnerYes = form.find('#home-owner-yes');\r\n homeOwnerNo = form.find('#home-owner-no');\r\n\r\n bgl.common.validator.init(form);\r\n bgl.common.datastore.init(form, false, true);\r\n bgl.common.datastore.setupReadAndWrite();\r\n\r\n if (!configuration.MarketingQuestion) {\r\n subscribeForRadioButtonsClick();\r\n } else {\r\n subscribeForRadioButtonsClickWithHomeInsuranceDueOptions();\r\n }\r\n\r\n form.find('label').on('keyup', bgl.common.keyboardAccessibility.generateClickOnKeypress);\r\n }\r\n\r\n function generateClickOnKeypress(event) {\r\n const SPACE_KEYCODE = 32;\r\n const ENTER_KEYCODE = 13;\r\n const code = event.charCode || event.keyCode;\r\n\r\n if (code === ENTER_KEYCODE || code === SPACE_KEYCODE) {\r\n $(event.target).prop('checked', 'checked');\r\n $(event.target).click();\r\n }\r\n }\r\n\r\n function continueHandler(event) {\r\n if (typeof bgl.common.pubsub !== 'undefined') {\r\n bgl.common.pubsub.emit('fakeFormSubmit', form.attr('id') || form.attr('action') || 'unknown');\r\n }\r\n event.preventDefault();\r\n\r\n if ($(event.target).is(':checked')) {\r\n $(event.target).trigger('change');\r\n }\r\n\r\n bgl.common.utilities.redirectToUrl(configuration.NextStepUrl);\r\n }\r\n\r\n function subscribeForRadioButtonsClick() {\r\n if (form.find('input[type=radio]:checked').length === 0) {\r\n form.find('input[type=radio]')\r\n .off('keypress', generateClickOnKeypress)\r\n .on('keypress', generateClickOnKeypress)\r\n .off('click', continueHandler)\r\n .on('click', continueHandler);\r\n } else {\r\n const continueButton = $(form.find('[type=\\'submit\\']'));\r\n continueButton.removeClass('hide');\r\n continueButton.off('click').on('click', continueHandler);\r\n }\r\n }\r\n\r\n function showDropDown() {\r\n form.find('#home-insurance-due-dropdowns').removeClass('hide');\r\n showContinue();\r\n }\r\n\r\n function showContinue() {\r\n continueButton.removeClass('hide');\r\n continueButton.off('click').on('click', continueHandlerWithHomeInsuranceDueRemoval);\r\n homeOwnerNo.off('click', continueHandlerWithHomeInsuranceDueRemoval).on('click', hideDropdown);\r\n }\r\n\r\n function hideDropdown() {\r\n form.find('#home-insurance-due-dropdowns').addClass('hide');\r\n }\r\n\r\n function continueHandlerWithHomeInsuranceDueRemoval(event) {\r\n event.preventDefault();\r\n\r\n if ($(event.target).is(':checked')) {\r\n $(event.target).trigger('change');\r\n }\r\n\r\n continueButton.attr('disabled', 'disabled');\r\n\r\n if (homeOwnerNo.prop('checked')) {\r\n $('#Home-Insurance-Due-Month').val('');\r\n }\r\n\r\n if ($('#SelectedResponse').val() !== $('#Home-Insurance-Due-Month').val()) {\r\n bgl.common.validator.submitForm(form, configuration);\r\n } else {\r\n continueButton.removeAttr('disabled');\r\n bgl.common.utilities.redirectToUrl(configuration.NextStepUrl);\r\n }\r\n }\r\n\r\n function subscribeForRadioButtonsClickWithHomeInsuranceDueOptions() {\r\n homeOwnerYes.off('click').on('click', showDropDown);\r\n\r\n if (form.find('input[type=radio]:checked').length === 0) {\r\n form.find('input[type=radio]')\r\n .off('keypress', generateClickOnKeypress)\r\n .on('keypress', generateClickOnKeypress);\r\n\r\n homeOwnerNo.off('click').on('click', continueHandlerWithHomeInsuranceDueRemoval);\r\n } else if (homeOwnerNo.prop('checked')) {\r\n showContinue();\r\n } else {\r\n showDropDown();\r\n }\r\n }\r\n\r\n function onSuccess() {\r\n if (homeOwnerNo.prop('checked')) {\r\n bgl.common.datastore.deleteFields(\r\n form,\r\n ['HomeInsuranceDueQuestion.SelectedResponseText',\r\n 'HomeInsuranceDueQuestion.SelectedResponseVal',\r\n 'HomeInsuranceDueQuestion.SelectedResponse'],\r\n );\r\n }\r\n bgl.common.utilities.redirectToUrl(configuration.NextStepUrl);\r\n }\r\n\r\n function onError() {\r\n bgl.components.driverdetails.homeowner.init(configuration);\r\n }\r\n\r\n return {\r\n init: initComponent,\r\n onSuccess: onSuccess,\r\n onError: onError,\r\n };\r\n})();\r\n// eslint-disable-next-line no-var\r\nvar bgl = window.bgl || {};\r\nbgl.components = bgl.components || {};\r\nbgl.components.driverdetails = bgl.components.driverdetails || {};\r\n\r\nbgl.components.driverdetails.employmentstatus = (function() {\r\n let configuration;\r\n let form;\r\n let hasPreselectedValues;\r\n\r\n function init(componentConfiguration) {\r\n configuration = componentConfiguration;\r\n\r\n form = $('[data-component-id=\\'' + configuration.Id + '\\'] form');\r\n\r\n bgl.common.validator.init(form);\r\n bgl.common.validator.initAutocompleteSearchInputs(form);\r\n\r\n bgl.common.autocompletesearch.init(3);\r\n\r\n bgl.common.datastore.init(form, false, true);\r\n bgl.common.datastore.setupReadAndWrite();\r\n\r\n hasPreselectedValues = form.find('input[type=radio]:checked').length !== 0;\r\n\r\n if (hasPreselectedValues) {\r\n showContinueButton();\r\n }\r\n\r\n if ($('#PersonOccupationStep').val() === 'PartTime') {\r\n const person = bgl.common.datastore.getData(form);\r\n const selectedEmploymentStatus = person.EmploymentStatusId;\r\n\r\n const hasOccupation = $.grep(configuration.StatusCodesToAskOccupation,\r\n function(value) {\r\n return selectedEmploymentStatus.toLowerCase() === value.toLowerCase();\r\n }).length !== 0;\r\n\r\n if (hasOccupation) {\r\n $('#' + configuration.Id + '-back-button').attr('href', configuration.PreviousBusinessTypePageUrl);\r\n }\r\n }\r\n\r\n if (hasPreselectedValues === false) {\r\n form.find('input[type=radio]')\r\n .off('click')\r\n .on('click', continueHandler);\r\n }\r\n\r\n if (hasPreselectedValues === true) {\r\n form.find('input[type=radio]')\r\n .off('change.occupation')\r\n .on('change.occupation', function() {\r\n const stepType = $('#PersonOccupationStep').val() === 'PartTime' ? 1 : 0;\r\n resetOccupationInfo(stepType, form);\r\n });\r\n }\r\n\r\n form.off('submit').on('submit',\r\n function(e) {\r\n e.preventDefault();\r\n\r\n if (bgl.common.validator.isFormValid($(this))) {\r\n $('#HasChanges').val(bgl.common.datastore.isDataChanged($(this)) === true);\r\n\r\n const elementsArray = $(this).serializeArray();\r\n const formData = {};\r\n\r\n $.map(elementsArray, function(item, i) {\r\n formData[item['name']] = item['value'];\r\n });\r\n\r\n let currentData = bgl.common.datastore.getData($(this));\r\n\r\n currentData = $.extend(currentData, formData);\r\n\r\n const dataForValidate = $.param(currentData) +\r\n '&' +\r\n $.param({ComponentConfiguration: configuration});\r\n\r\n bgl.common.validator.submitForm($(this), configuration, dataForValidate);\r\n }\r\n });\r\n\r\n form.find('label').on('keyup', bgl.common.keyboardAccessibility.generateClickOnKeypress);\r\n }\r\n\r\n function continueHandler(event) {\r\n event.preventDefault();\r\n\r\n const controlType = $(event.target).attr('type');\r\n if (controlType === 'checkbox' || controlType === 'radio') {\r\n $(event.target).trigger('change');\r\n }\r\n\r\n form.submit();\r\n }\r\n\r\n function showContinueButton() {\r\n const continueButton = $(form.find('[type=\\'submit\\']'));\r\n continueButton.removeClass('hide');\r\n }\r\n\r\n function onSuccess(configuration, data) {\r\n if (data.needDeleteOccupation === true) {\r\n resetOccupationInfo(data.occupationStep, form);\r\n }\r\n\r\n if (data.isDataProvided) {\r\n bgl.common.datastore.extendCollectedData(form, {isFormDirty: false});\r\n }\r\n\r\n if (data.nextDtsPageUrl) {\r\n location.href = data.nextDtsPageUrl;\r\n }\r\n }\r\n\r\n function resetOccupationInfo(stepType, form) {\r\n switch (stepType) {\r\n case 1:\r\n bgl.common.datastore.deleteFields(form,\r\n [\r\n 'PartTimeOccupationId', 'PartTimeOccupation',\r\n 'PartTimeBusinessCategoryId', 'PartTimeBusinessCategory',\r\n ]);\r\n break;\r\n default:\r\n bgl.common.datastore.deleteFields(form,\r\n [\r\n 'OccupationId', 'Occupation',\r\n 'BusinessCategoryId', 'BusinessCategory',\r\n ]);\r\n break;\r\n }\r\n }\r\n\r\n function onError() {\r\n bgl.components.driverdetails.employmentstatus.init(configuration);\r\n bgl.common.datastore.extendCollectedData(form, {isFormDirty: true});\r\n }\r\n\r\n return {\r\n init: init,\r\n onSuccess: onSuccess,\r\n onError: onError,\r\n };\r\n})();\r\n// eslint-disable-next-line no-var\r\nvar bgl = window.bgl || {};\r\nbgl.components = bgl.components || {};\r\nbgl.components.driverdetails = bgl.components.driverdetails || {};\r\n\r\nbgl.components.driverdetails.drivinglicencenumber = (function() {\r\n let configuration; let form;\r\n let hasPreselectedValues;\r\n\r\n function initComponent(componentConfiguration) {\r\n initObject(componentConfiguration);\r\n\r\n bgl.common.datastore.init(form, false, true);\r\n }\r\n\r\n function initObject(componentConfiguration) {\r\n configuration = componentConfiguration;\r\n\r\n form = $('[data-component-id=\\'' + configuration.Id + '\\'] form');\r\n\r\n bgl.common.datastore.init(form, false, true);\r\n bgl.common.datastore.setupReadAndWrite();\r\n\r\n bgl.common.validator.init(form);\r\n\r\n initRadioButtons();\r\n\r\n form.off('submit').on('submit',\r\n function(e) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n\r\n if (bgl.common.validator.isFormValid($(this))) {\r\n $('#HasChanges').val(bgl.common.datastore.isDataChanged($(this)) === true);\r\n\r\n bgl.common.validator.submitForm($(this), configuration);\r\n }\r\n });\r\n }\r\n\r\n function initRadioButtons() {\r\n hasPreselectedValues = form.find('input[type=radio]:checked').length !== 0;\r\n\r\n if (hasPreselectedValues === true) {\r\n showContinueButton();\r\n setDrivingLicenceRowVisibility(form.find('input[type=\\'radio\\']:checked').val().toLowerCase() === 'true');\r\n }\r\n\r\n $('#has-driving-licence-number-yes').on('click',\r\n function() {\r\n setDrivingLicenceRowVisibility(true);\r\n\r\n hasPreselectedValues = true;\r\n showContinueButton();\r\n });\r\n\r\n $('#has-driving-licence-number-no').on('click',\r\n function(event) {\r\n setDrivingLicenceRowVisibility(false);\r\n\r\n if (hasPreselectedValues === false) {\r\n $(event.target).prop('checked', 'checked');\r\n continueHandler(event);\r\n }\r\n });\r\n\r\n form.find('label').on('keyup', bgl.common.keyboardAccessibility.generateClickOnKeypress);\r\n }\r\n\r\n function showContinueButton() {\r\n const continueButton = $(form.find('[type=\\'submit\\']'));\r\n continueButton.removeClass('hide');\r\n }\r\n\r\n function setDrivingLicenceRowVisibility(needToShow) {\r\n const drivingLicenceRow = form.find('#driving-licence-number-row');\r\n\r\n if (needToShow === true) {\r\n drivingLicenceRow.removeClass('hide');\r\n } else {\r\n drivingLicenceRow.addClass('hide');\r\n }\r\n }\r\n\r\n function continueHandler(event) {\r\n event.preventDefault();\r\n\r\n if ($(event.target).is(':checked')) {\r\n $(event.target).trigger('change');\r\n }\r\n\r\n form.submit();\r\n }\r\n\r\n function onSuccess(configuration, data) {\r\n if (data.hasDrivingLicenceNumber === false) {\r\n bgl.common.datastore.deleteFields(form, ['DrivingLicenceNumber']);\r\n }\r\n\r\n if (data.needUpdatePerson === true) {\r\n form.attr('action', data.patchUrl);\r\n\r\n $('#HasChanges').val(bgl.common.datastore.isDataChanged(form) === true);\r\n\r\n const currentData = bgl.common.datastore.getData(form);\r\n\r\n const dataForValidate = $(form).serialize() +\r\n '&' + $.param(currentData) +\r\n '&' + $.param({ComponentConfiguration: configuration, ViewName: 'DrivingLicenceNumber'});\r\n\r\n bgl.common.datastore.extendCollectedData(form, {isFormDirty: false});\r\n\r\n bgl.common.validator.submitForm(form, configuration, dataForValidate);\r\n return;\r\n }\r\n\r\n location.href = data.nextDtsPageUrl;\r\n }\r\n\r\n function onError() {\r\n bgl.components.driverdetails.drivinglicencenumber.init(configuration);\r\n\r\n bgl.common.datastore.extendCollectedData(form, {isFormDirty: true});\r\n }\r\n\r\n return {\r\n init: initComponent,\r\n onSuccess: onSuccess,\r\n onError: onError,\r\n };\r\n})();\r\n// eslint-disable-next-line no-var\r\nvar bgl = window.bgl || {};\r\nbgl.components = bgl.components || {};\r\nbgl.components.driverdetails = bgl.components.driverdetails || {};\r\n\r\nbgl.components.driverdetails.driverbubbles = (function() {\r\n function loadComponent(componentConfiguration, componentUrl, containerElementId) {\r\n bgl.common.loader.load(componentConfiguration, componentUrl, containerElementId, function() {\r\n bgl.components.driverdetails.common.init(componentConfiguration);\r\n });\r\n }\r\n\r\n function initComponent(componentConfiguration) {\r\n subscribeAddDriverButton(componentConfiguration);\r\n subscribeMainDriver(componentConfiguration);\r\n subscribeNamedDrivers(componentConfiguration);\r\n\r\n const tabIndex = localStorage.getItem('driverDetailsTabIndex');\r\n\r\n if (tabIndex !== null) {\r\n $('#tab-' + tabIndex).click();\r\n localStorage.removeItem('driverDetailsTabIndex');\r\n }\r\n\r\n bgl.components.driverdetails.scrolltoelement.init();\r\n }\r\n\r\n function subscribeAddDriverButton(componentConfiguration) {\r\n $('#AddDriver')\r\n .off('click')\r\n .on('click', function(event) {\r\n event.preventDefault();\r\n\r\n const actionUrl = $(this).data('action-url');\r\n\r\n if (componentConfiguration.IsService) {\r\n bgl.common.utilities.redirectToUrl(actionUrl);\r\n } else {\r\n const requestBodyData = {\r\n ComponentConfiguration: componentConfiguration,\r\n JourneyType: 1,\r\n };\r\n\r\n bgl.common.loader.load(requestBodyData,\r\n actionUrl,\r\n 'SlidePanelContent',\r\n function() {\r\n bgl.components.additionaldriver.init(componentConfiguration);\r\n },\r\n );\r\n }\r\n });\r\n }\r\n\r\n function subscribeMainDriver(componentConfiguration) {\r\n subscribeDriver(componentConfiguration, 'ViewMainDriver', 0);\r\n }\r\n\r\n function subscribeNamedDrivers(componentConfiguration) {\r\n subscribeDriver(componentConfiguration, 'ViewNamedDrivers', 1);\r\n }\r\n\r\n function subscribeDriver(componentConfiguration, tabName, tabIndex) {\r\n $('#' + tabName)\r\n .off('keypress', generateClickOnKeypress)\r\n .on('keypress', generateClickOnKeypress)\r\n .off('click')\r\n .on('click',\r\n function(event) {\r\n event.preventDefault();\r\n\r\n if (componentConfiguration &&\r\n componentConfiguration.RedirectUrl &&\r\n componentConfiguration.RedirectUrl.length > 0) {\r\n localStorage.setItem('driverDetailsTabIndex', tabIndex);\r\n window.location = componentConfiguration.RedirectUrl;\r\n } else {\r\n if (document.getElementById('DriverDetails')) {\r\n openAccordion($('#DriverDetails'));\r\n }\r\n\r\n $('#tab-' + tabIndex).click();\r\n $('#tab-' + tabIndex).focus();\r\n }\r\n });\r\n }\r\n\r\n function openAccordion(element) {\r\n const driverHeaderAccordionButton = $(element).find('.accordion__heading-button');\r\n const isExpanded = $(driverHeaderAccordionButton).attr('aria-expanded');\r\n\r\n if (isExpanded.toLowerCase() === 'false') {\r\n $(driverHeaderAccordionButton).click();\r\n }\r\n\r\n bgl.components.driverdetails.scrolltoelement.scrollTo(element, 400);\r\n }\r\n\r\n function generateClickOnKeypress(event) {\r\n const code = event.charCode || event.keyCode;\r\n if (code === 13 || code === 32) {\r\n $(this).click();\r\n }\r\n }\r\n\r\n return {\r\n init: initComponent,\r\n load: loadComponent,\r\n };\r\n})();\r\n\r\nif (typeof module !== 'undefined') {\r\n module.exports = bgl.components.driverdetails.common;\r\n}\r\n// eslint-disable-next-line no-var\r\nvar bgl = window.bgl || {};\r\nbgl.components = bgl.components || {};\r\n\r\nbgl.components.deletefrequentdriver = (function() {\r\n let configuration;\r\n\r\n function initComponent(componentConfiguration) {\r\n configuration = componentConfiguration;\r\n\r\n subscribeDeleteFrequentDriver();\r\n }\r\n function subscribeDeleteFrequentDriver() {\r\n $(document).off('click', 'button[data-delete-driver]')\r\n .on('click', 'button[data-delete-driver]', function(event) {\r\n event.preventDefault();\r\n const $this = $(this);\r\n const url = $this.data('delete-url');\r\n const driverId = $this.data('driverId');\r\n const disabled = $this.data('disabled');\r\n const requestVerificationToken = $('input[name=\\'__RequestVerificationToken\\']').val();\r\n\r\n if (!disabled) {\r\n $this.attr('data-disabled', 'true');\r\n deleteFrequentDriver(url, driverId, requestVerificationToken);\r\n }\r\n });\r\n }\r\n\r\n function deleteFrequentDriver(url, driverId, requestVerificationToken) {\r\n const data = {\r\n driverId: driverId,\r\n __RequestVerificationToken: requestVerificationToken,\r\n };\r\n\r\n $.post(url, data, function(data) {\r\n if (!data.isSuccess && data.errorRedirectUrl) {\r\n bgl.common.utilities.errorRedirect(data.errorRedirectUrl);\r\n return;\r\n }\r\n\r\n if (configuration.IsService) {\r\n const options = {\r\n callback: function() {\r\n bgl.common.utilities.redirectToUrl(configuration.NextStepUrl);\r\n },\r\n };\r\n\r\n const mtaSuffix = bgl.common.utilities.getWindowLocation()\r\n .href.toLowerCase().includes('makechanges') ?\r\n 'start' :\r\n 'additional change';\r\n\r\n bgl.common.telemetry.logEvent(`MTA ${mtaSuffix}`,\r\n {mta_type: 'Delete Frequent Driver', component: configuration.Id});\r\n\r\n bgl.common.pubsub.emit('PollBasket', options);\r\n } else {\r\n $('[data-dismiss=\"slide-panel\"]').click();\r\n\r\n bgl.common.utilities.setUrlHashValue('main');\r\n bgl.common.pubsub.emit('PollBasket');\r\n }\r\n });\r\n }\r\n\r\n return {\r\n init: initComponent,\r\n };\r\n})();\r\n// eslint-disable-next-line no-var\r\nvar bgl = window.bgl || {};\r\nbgl.components = bgl.components || {};\r\nbgl.components.driverdetails = bgl.components.driverdetails || {};\r\n\r\nbgl.components.driverdetails.declinedinsurance = (function() {\r\n let form;\r\n let configuration;\r\n\r\n function ctor(componentConfiguration) {\r\n configuration = componentConfiguration;\r\n form = $('#declined-insurance');\r\n\r\n bgl.common.validator.init(form);\r\n }\r\n\r\n function initComponent(componentConfiguration) {\r\n ctor(componentConfiguration);\r\n\r\n bgl.common.datastore.init(form, false, true);\r\n bgl.common.datastore.setupReadAndWrite();\r\n\r\n const person = bgl.common.datastore.getData(form);\r\n const hasMedicalCondition = person.MedicalCondition.toLowerCase() === 'true';\r\n\r\n if (hasMedicalCondition) {\r\n $('#' + configuration.Id + '-back-button').attr('href', configuration.DvlaNotifiedPageUrl);\r\n }\r\n\r\n subscribeToEvents();\r\n }\r\n\r\n function subscribeToEvents() {\r\n if (form.find('input[type=radio]:checked').length === 0) {\r\n form.find('input[type=radio]')\r\n .off('keypress', generateClickOnKeypress)\r\n .on('keypress', generateClickOnKeypress)\r\n .off('click', continueHandler)\r\n .on('click', continueHandler);\r\n } else {\r\n const continueButton = $(form.find('[type=\\'submit\\']'));\r\n continueButton.removeClass('hide');\r\n }\r\n\r\n form.off('submit')\r\n .on('submit',\r\n function(event) {\r\n event.preventDefault();\r\n\r\n if (bgl.common.validator.isFormValid($(this))) {\r\n $('#HasChanges').val(bgl.common.datastore.isDataChanged($(this)) === true);\r\n\r\n const currentData = bgl.common.datastore.getData($(this));\r\n const dataForValidate = $(form).serialize() +\r\n '&' +\r\n $.param(currentData) +\r\n '&' +\r\n $.param({ComponentConfiguration: configuration});\r\n\r\n bgl.common.validator.submitForm(form, configuration, dataForValidate);\r\n }\r\n });\r\n\r\n form.find('label').on('keyup', bgl.common.keyboardAccessibility.generateClickOnKeypress);\r\n }\r\n\r\n function generateClickOnKeypress(event) {\r\n const SPACE_KEYCODE = 32;\r\n const ENTER_KEYCODE = 13;\r\n const code = event.charCode || event.keyCode;\r\n\r\n if (code === ENTER_KEYCODE || code === SPACE_KEYCODE) {\r\n $(event.target).prop('checked', true);\r\n $(event.target).click();\r\n }\r\n }\r\n\r\n function continueHandler(event) {\r\n event.preventDefault();\r\n\r\n if ($(event.target).is(':checked')) {\r\n $(event.target).trigger('change');\r\n }\r\n\r\n form.find('input[type=radio]').off();\r\n form.submit();\r\n }\r\n\r\n function onSuccess(configuration, data) {\r\n if (data.needUpdatePerson === true) {\r\n form.attr('action', data.patchUrl);\r\n\r\n $('#HasChanges').val(bgl.common.datastore.isDataChanged(form) === true);\r\n\r\n const currentData = bgl.common.datastore.getData(form);\r\n\r\n const dataForValidate = $(form).serialize() +\r\n '&' + $.param(currentData) +\r\n '&' + $.param({ComponentConfiguration: configuration, ViewName: 'DeclinedInsurance'});\r\n\r\n bgl.common.datastore.extendCollectedData(form, {isFormDirty: false});\r\n\r\n bgl.common.validator.submitForm(form, configuration, dataForValidate);\r\n return;\r\n }\r\n\r\n if (data.nextDtsPageUrl) {\r\n location.href = data.nextDtsPageUrl;\r\n }\r\n }\r\n\r\n function onError() {\r\n bgl.components.driverdetails.declinedinsurance.init(configuration);\r\n bgl.common.datastore.extendCollectedData(form, {isFormDirty: true});\r\n }\r\n\r\n return {\r\n init: initComponent,\r\n onSuccess: onSuccess,\r\n onError: onError,\r\n };\r\n})();\r\n// eslint-disable-next-line no-var\r\nvar bgl = window.bgl || {};\r\nbgl.components = bgl.components || {};\r\nbgl.components.driverdetails = bgl.components.driverdetails || {};\r\n\r\nbgl.components.driverdetails.criminalconvictions = (function() {\r\n let form;\r\n let configuration;\r\n let criminalConvictionsContainer;\r\n let criminalConvictionAddAnotherButton;\r\n let criminalConvictionRemoveAllButton;\r\n let doneButton;\r\n let noButton;\r\n let yesButton;\r\n let fullYearMonthOptions;\r\n let monthDropdown;\r\n let yearDropdown;\r\n let isChanged = false;\r\n const HIDE_CLASS = 'hide';\r\n const journeyType = 2;\r\n\r\n function initComponent(componentConfiguration, isChangedComponent) {\r\n configuration = componentConfiguration;\r\n isChanged = isChangedComponent;\r\n\r\n form = $('#criminal-convictions');\r\n criminalConvictionsContainer = $('#criminal-convictions-container');\r\n criminalConvictionAddAnotherButton = criminalConvictionsContainer.find('#criminal-conviction-add-another');\r\n criminalConvictionRemoveAllButton = criminalConvictionsContainer.find('#remove-all-criminal-convictions');\r\n\r\n doneButton = $('#criminal-conviction_done-button');\r\n noButton = $('#has-criminal-convictions-no');\r\n yesButton = $('#has-criminal-convictions-yes');\r\n\r\n subscribeForEvents();\r\n\r\n bgl.common.validator.init(form);\r\n\r\n bgl.common.datastore.init(form, false, true);\r\n bgl.common.datastore.setupWrite();\r\n\r\n const isAnyCriminalConvictions = criminalConvictionsCount() > 0;\r\n\r\n if (!isAnyCriminalConvictions) {\r\n const model = bgl.common.datastore.getData(form);\r\n\r\n if (model && model.HasCriminalConvictions) {\r\n noButton.prop('checked', 'checked');\r\n }\r\n }\r\n\r\n if (yesButton.is(':checked') || noButton.is(':checked')) {\r\n if (doneButton.hasClass(HIDE_CLASS)) {\r\n doneButton.removeClass(HIDE_CLASS);\r\n }\r\n }\r\n }\r\n\r\n function generateClickOnKeypress(event) {\r\n const SPACE_KEYCODE = 32;\r\n const ENTER_KEYCODE = 13;\r\n const code = event.charCode || event.keyCode;\r\n\r\n if (code === ENTER_KEYCODE || code === SPACE_KEYCODE) {\r\n const forAttr = $(event.target).attr('for');\r\n\r\n if (forAttr !== null) {\r\n $('#' + forAttr).click();\r\n } else {\r\n $(this).click();\r\n }\r\n }\r\n }\r\n\r\n function subscribeForEvents() {\r\n yesButton.off('click').on('click',\r\n function() {\r\n const hasCriminalConviction = criminalConvictionsCount() > 0;\r\n if (!hasCriminalConviction) {\r\n criminalConvictionAddAnotherButton.click();\r\n } else if (criminalConvictionsContainer.hasClass(HIDE_CLASS)) {\r\n criminalConvictionsContainer.removeClass(HIDE_CLASS);\r\n }\r\n });\r\n\r\n noButton.off('click').on('click',\r\n function() {\r\n if (criminalConvictionsCount() === 0) {\r\n onSuccess();\r\n }\r\n\r\n if (!criminalConvictionsContainer.hasClass(HIDE_CLASS)) {\r\n criminalConvictionsContainer.addClass(HIDE_CLASS);\r\n }\r\n });\r\n\r\n $('button[data-role=\\'delete\\']').off('click').on('click',\r\n function(event) {\r\n event.preventDefault();\r\n $(this).attr('disabled', 'disabled');\r\n\r\n const target = $(event.target);\r\n\r\n const object = target.is('button') ? target : target.parent();\r\n\r\n const token = $('input[name=\\'__RequestVerificationToken\\']').val();\r\n const patchUrl = object.data('url');\r\n\r\n const dataToPost = {\r\n __RequestVerificationToken: token,\r\n motorCriminalConvictionId: object.data('value'),\r\n journeyType: journeyType,\r\n };\r\n\r\n $.ajax({\r\n url: patchUrl,\r\n type: 'POST',\r\n data: dataToPost,\r\n success: function(data) {\r\n if (!data.isSuccess) {\r\n bgl.common.utilities.errorRedirect(data.errorRedirectUrl);\r\n } else {\r\n isChanged = true;\r\n if (criminalConvictionsCount() === 1) {\r\n const key = form.data('store-key');\r\n const yourDetails = JSON.parse(sessionStorage.getItem(key)) || {};\r\n yourDetails['HasCriminalConvictions'] = 'False';\r\n sessionStorage.setItem(key, JSON.stringify(yourDetails));\r\n }\r\n bgl.common.utilities.refreshPage();\r\n }\r\n },\r\n });\r\n }).off('keypress').on('keypress', generateClickOnKeypress);\r\n\r\n criminalConvictionAddAnotherButton.off('click').on('click', function(event) {\r\n event.preventDefault();\r\n\r\n bgl.components.driverdetails.criminalconvictions.goToWizardStep(1);\r\n }).off('keypress').on('keypress', generateClickOnKeypress);\r\n\r\n criminalConvictionRemoveAllButton.off('click').on('click', function(event) {\r\n event.preventDefault();\r\n noButton.click();\r\n }).off('keypress').on('keypress', generateClickOnKeypress);\r\n\r\n doneButton.off('click').on('click',\r\n function() {\r\n const isNoButtonChecked = noButton.is(':checked');\r\n const hasCriminalConviction = criminalConvictionsCount() > 0;\r\n\r\n if (isNoButtonChecked && hasCriminalConviction) {\r\n isChanged = true;\r\n\r\n bgl.common.validator.validate(configuration, form);\r\n } else {\r\n onSuccess();\r\n }\r\n }).off('keypress').on('keypress', generateClickOnKeypress);\r\n\r\n form.find('label').on('keyup', bgl.common.keyboardAccessibility.generateClickOnKeypress);\r\n }\r\n\r\n function subscribeToEventDismissCriminalConvictionsPanel() {\r\n yesButton.prop('checked', false);\r\n $(document).on('click.criminalconvictions', '[data-dismiss=\"slide-panel\"]', function() {\r\n unSubscribeToEventDismissCriminalConvictionsPanel();\r\n dismissSlidePanelHandler(isChanged);\r\n });\r\n\r\n $(document).on('keyup.criminalconvictions', function(event) {\r\n if (event.key === 'Escape') {\r\n unSubscribeToEventDismissCriminalConvictionsPanel();\r\n dismissSlidePanelHandler(isChanged);\r\n }\r\n });\r\n\r\n $('.overlay').on('click.criminalconvictions', function() {\r\n unSubscribeToEventDismissCriminalConvictionsPanel();\r\n dismissSlidePanelHandler(isChanged);\r\n });\r\n }\r\n\r\n function unSubscribeToEventDismissCriminalConvictionsPanel() {\r\n $(document).off('click.criminalconvictions', '[data-dismiss=\"slide-panel\"]');\r\n $(document).off('keyup.criminalconvictions');\r\n $('.overlay').off('click');\r\n }\r\n\r\n function dismissSlidePanelHandler(flag) {\r\n if (flag === true) {\r\n bgl.common.utilities.refreshPage();\r\n }\r\n }\r\n\r\n function subscribeForEventsWizardStep1() {\r\n const formstep1 = $('#criminal-convictions-addanother-step1');\r\n bgl.common.validator.init(formstep1);\r\n\r\n formstep1.off('submit').on('submit', function(event) {\r\n event.preventDefault();\r\n\r\n $('#MonthText').val($('#Criminal-Conviction-Month option:selected').text());\r\n\r\n bgl.common.validator.validate(configuration, formstep1);\r\n });\r\n\r\n monthDropdown = formstep1.find('#Criminal-Conviction-Month');\r\n yearDropdown = formstep1.find('#Criminal-Conviction-Year');\r\n\r\n fullYearMonthOptions = monthDropdown.find('option');\r\n\r\n yearDropdown.on('change', updateMonthDropdown);\r\n\r\n $('a[data-step-type=\\'previous-step\\']').one('click', function(event) {\r\n event.preventDefault();\r\n bgl.common.utilities.refreshPage();\r\n });\r\n }\r\n\r\n function subscribeForEventsWizardStep2() {\r\n const formStep2 = $('#criminal-convictions-addanother-step2');\r\n\r\n bgl.common.validator.init(formStep2);\r\n\r\n formStep2.off('submit').on('submit', function(event) {\r\n event.preventDefault();\r\n\r\n $('#ConvictionsTypeText').val($('#Conviction-type option:selected').text());\r\n\r\n bgl.common.validator.validate(configuration, formStep2);\r\n });\r\n\r\n subscribeBreadcrumbs();\r\n }\r\n\r\n function subscribeForEventsWizardStep3() {\r\n const formStep3 = $('#criminal-convictions-addanother-step3');\r\n\r\n bgl.common.validator.init(formStep3);\r\n\r\n formStep3.off('submit').on('submit', function(event) {\r\n event.preventDefault();\r\n const submit = $(this).find(':submit');\r\n submit.attr('disabled', 'disabled');\r\n\r\n if (bgl.common.validator.validate(configuration, formStep3) === false) {\r\n submit.removeAttr('disabled');\r\n }\r\n });\r\n\r\n subscribeBreadcrumbs();\r\n }\r\n\r\n function subscribeBreadcrumbs() {\r\n $('.criminal-conviction-back-to-first-step').off('click').on('click', function(event) {\r\n event.preventDefault();\r\n\r\n bgl.components.driverdetails.criminalconvictions.goToWizardStep(1);\r\n });\r\n\r\n $('.criminal-conviction-back-to-second-step').off('click').on('click', function(event) {\r\n event.preventDefault();\r\n\r\n bgl.components.driverdetails.criminalconvictions.goToWizardStep(\r\n 2,\r\n {\r\n Year: $('#Year').val(),\r\n Month: $('#Month').val(),\r\n MonthText: $('#MonthText').val(),\r\n },\r\n );\r\n });\r\n }\r\n\r\n function goToWizardStep(step, data) {\r\n const href = $('#UrlToWizard').val();\r\n\r\n const defaultData = getDefaultData(step);\r\n\r\n if (data !== null) {\r\n $.extend(defaultData, data);\r\n }\r\n\r\n isChanged = true;\r\n\r\n $.ajax({\r\n url: href,\r\n type: 'POST',\r\n contentType: 'application/json',\r\n data: JSON.stringify(defaultData),\r\n success: function(data) {\r\n if (step === 1) {\r\n subscribeToEventDismissCriminalConvictionsPanel();\r\n }\r\n\r\n if (typeof data.isSuccess === 'undefined') {\r\n bgl.components.driverdetails.criminalconvictions.updateSlidePanel(data);\r\n } else if (data.isSuccess === true) {\r\n bgl.components.driverdetails.criminalconvictions.updateSlidePanel(data.html);\r\n } else {\r\n bgl.common.utilities.errorRedirect(data.errorRedirectUrl);\r\n }\r\n\r\n switch (step) {\r\n case 1:\r\n bgl.components.driverdetails.criminalconvictions.subscribeForEventsWizardStep1();\r\n break;\r\n\r\n case 2:\r\n bgl.components.driverdetails.criminalconvictions.subscribeForEventsWizardStep2();\r\n break;\r\n\r\n case 3:\r\n bgl.components.driverdetails.criminalconvictions.subscribeForEventsWizardStep3();\r\n break;\r\n }\r\n },\r\n });\r\n }\r\n\r\n function getDefaultData(step) {\r\n const personId = $('#PersonId').val();\r\n const firstName = $('#FirstName').val();\r\n\r\n const data = {\r\n ComponentConfiguration: configuration,\r\n PersonId: personId,\r\n CriminalConvictionStep: step,\r\n JourneyType: 2,\r\n };\r\n\r\n if (firstName) {\r\n data.FirstName = firstName;\r\n }\r\n\r\n return data;\r\n }\r\n\r\n function onSuccess() {\r\n if (typeof bgl.common.pubsub !== 'undefined') {\r\n bgl.common.pubsub.emit('fakeFormSubmit', form.attr('id') || form.attr('action') || 'unknown');\r\n }\r\n bgl.common.utilities.redirectToUrl(doneButton.data('nextStepUrl'));\r\n }\r\n\r\n function onError() {\r\n bgl.components.driverdetails.criminalconvictions.init(configuration);\r\n }\r\n\r\n function updateMonthDropdown() {\r\n const months = monthDropdown;\r\n const selectedMonthValue = months.val();\r\n const currentYear = $('#CurrentYear').val() * 1;\r\n const currentMonth = $('#CurrentMonth').val() * 1;\r\n const selectedYear = yearDropdown.val() * 1;\r\n const personBirthYear = $('#PersonBirthYear').val() * 1;\r\n const personBirthMonth = $('#PersonBirthMonth').val() * 1;\r\n\r\n if (selectedYear === currentYear) {\r\n months.html(fullYearMonthOptions.slice(0, currentMonth + 1));\r\n } else if (selectedYear === personBirthYear) {\r\n // merge months after birth month and please select...\r\n const dropdownOptions = fullYearMonthOptions.slice(personBirthMonth + 1);\r\n months.html($.merge([fullYearMonthOptions[0]], dropdownOptions));\r\n } else {\r\n months.html(fullYearMonthOptions);\r\n }\r\n months.val(selectedMonthValue);\r\n\r\n // select first value if value is not selected\r\n if (!months.val()) {\r\n months.find('option:eq(0)').prop('selected', true);\r\n }\r\n }\r\n\r\n function criminalconvictionsDateOnSuccess(configuration, data) {\r\n bgl.components.driverdetails.criminalconvictions.updateSlidePanel(data.html);\r\n bgl.components.driverdetails.criminalconvictions.subscribeForEventsWizardStep2();\r\n }\r\n\r\n function criminalconvictionsDateOnError() {\r\n bgl.components.driverdetails.criminalconvictions.subscribeForEventsWizardStep1();\r\n }\r\n\r\n function criminalconvictionsConvictionTypeOnSuccess(configuration, data) {\r\n bgl.components.driverdetails.criminalconvictions.updateSlidePanel(data.html);\r\n bgl.components.driverdetails.criminalconvictions.subscribeForEventsWizardStep3();\r\n }\r\n\r\n function criminalconvictionsConvictionTypeOnError() {\r\n bgl.components.driverdetails.criminalconvictions.subscribeForEventsWizardStep2();\r\n }\r\n\r\n function criminalconvictionsSentenceTypeOnSuccess() {\r\n unSubscribeToEventDismissCriminalConvictionsPanel();\r\n $('[data-dismiss=\"slide-panel\"]').click();\r\n bgl.common.utilities.refreshPage();\r\n }\r\n\r\n function criminalconvictionsSentenceTypeOnError() {\r\n bgl.components.driverdetails.criminalconvictions.subscribeForEventsWizardStep3();\r\n }\r\n\r\n function updateSlidePanel(html) {\r\n $('#SlidePanelContent').html(html);\r\n }\r\n\r\n function criminalConvictionsCount() {\r\n return $('#Criminal-Convictions-List .step-form__summary-item').length;\r\n }\r\n\r\n return {\r\n init: initComponent,\r\n onSuccess: onSuccess,\r\n onError: onError,\r\n goToWizardStep: goToWizardStep,\r\n updateSlidePanel: updateSlidePanel,\r\n criminalconvictionsDateOnSuccess: criminalconvictionsDateOnSuccess,\r\n criminalconvictionsDateOnError: criminalconvictionsDateOnError,\r\n criminalconvictionsConvictionTypeOnError: criminalconvictionsConvictionTypeOnError,\r\n criminalconvictionsConvictionTypeOnSuccess: criminalconvictionsConvictionTypeOnSuccess,\r\n criminalconvictionsSentenceTypeOnSuccess: criminalconvictionsSentenceTypeOnSuccess,\r\n criminalconvictionsSentenceTypeOnError: criminalconvictionsSentenceTypeOnError,\r\n subscribeForEventsWizardStep1: subscribeForEventsWizardStep1,\r\n subscribeForEventsWizardStep2: subscribeForEventsWizardStep2,\r\n subscribeForEventsWizardStep3: subscribeForEventsWizardStep3,\r\n };\r\n})();\r\n// eslint-disable-next-line no-var\r\nvar bgl = window.bgl || {};\r\nbgl.components = bgl.components || {};\r\nbgl.components.driverdetails = bgl.components.driverdetails || {};\r\n\r\nconst journeyTypes = {\r\n singleEdit: 0,\r\n additionalDriver: 1,\r\n multiStepEdit: 2,\r\n};\r\n\r\nbgl.components.driverdetails.common = (function() {\r\n let component;\r\n const actions = {\r\n aboutYou: 'AboutYou',\r\n employmentStatus: 'EmploymentStatus',\r\n existencePartTimeOccupation: 'ExistencePartTimeOccupation',\r\n address: 'SearchAddress',\r\n ukResidentFiveYears: 'UkResidentFiveYears',\r\n drivingLicenceNumber: 'DrivingLicenceNumber',\r\n homeOwner: 'HomeOwner',\r\n typeOfLicence: 'TypeOfLicence',\r\n licenceHeldSince: 'LicenceHeldSince',\r\n motorClaims: 'MotorClaims',\r\n declinedInsurance: 'DeclinedInsurance',\r\n criminalConvictions: 'CriminalConvictions',\r\n medicalCondition: 'MedicalCondition',\r\n medicalConditionDvlaNotified: 'MedicalConditionDvlaNotified',\r\n contactInformation: 'ContactInformation',\r\n contactInformationPolicy: 'ContactInformationPolicy',\r\n motorConvictions: 'MotorConvictions',\r\n useOfOtherVehicles: 'UseOfOtherVehicles',\r\n maritalStatus: 'MaritalStatus',\r\n deleterFrequentDriver: 'DeleteFrequentDriverSlider',\r\n };\r\n\r\n function loadComponent(componentConfiguration, componentUrl, containerElementId) {\r\n bgl.common.loader.load(componentConfiguration, componentUrl, containerElementId, function() {\r\n bgl.components.driverdetails.common.init(componentConfiguration);\r\n });\r\n }\r\n\r\n function initComponent(componentConfiguration) {\r\n component = $('#' + componentConfiguration.Id);\r\n bgl.common.accordions.init();\r\n setupChangeTelephoneEventBinder(componentConfiguration);\r\n subscribeForEvents(componentConfiguration);\r\n }\r\n\r\n function getPreviouslyStoredChangedUserData() {\r\n let data = [];\r\n\r\n if (sessionStorage.getItem('ChangedUserData') !== null) {\r\n data = JSON.parse(sessionStorage.getItem('ChangedUserData'));\r\n }\r\n\r\n return data;\r\n }\r\n\r\n function setPreviouslyStoredChangedUserData(data) {\r\n sessionStorage.setItem('ChangedUserData', JSON.stringify(data));\r\n }\r\n\r\n function getAmountOfYears(dateEntered) {\r\n if (dateEntered) {\r\n const formattedDate = dateEntered.split('/').reverse().join('/');\r\n const dateToday = new Date();\r\n const fullDateEntered = new Date(formattedDate);\r\n let year = dateToday.getFullYear() - fullDateEntered.getFullYear();\r\n const month = dateToday.getMonth() - fullDateEntered.getMonth();\r\n if (month < 0 || (month === 0 && dateToday.getDate() < fullDateEntered.getDate())) {\r\n year--;\r\n }\r\n return year;\r\n } else {\r\n return 0;\r\n }\r\n }\r\n\r\n function subscribeForEvents(componentConfiguration) {\r\n subscribeEditLinks(componentConfiguration);\r\n subscribeDriverCarousel(componentConfiguration);\r\n }\r\n\r\n function subscribeDriverCarousel(componentConfiguration) {\r\n bgl.components.drivertabs.init();\r\n\r\n const selectedDriver = bgl.common.utilities.getUrlHashValue();\r\n if (selectedDriver !== '') {\r\n bgl.components.drivertabs.setActiveDriver(selectedDriver);\r\n }\r\n\r\n $('.named-driver-tab').off('click.driverdetails').on('click.driverdetails', function() {\r\n bgl.common.utilities.setUrlHashValue(bgl.components.drivertabs.getActiveDriver($(this)));\r\n });\r\n\r\n $(`[data-accordion-key=${componentConfiguration.Id}-driver-details-accordion]`)\r\n .off('click.driver-details-accordion')\r\n .on('click.driver-details-accordion', function() {\r\n if ($(this).attr('aria-expanded') === 'true') {\r\n bgl.components.drivertabs.showArrow();\r\n }\r\n });\r\n }\r\n\r\n function setupChangeTelephoneEventBinder(componentConfiguration) {\r\n bgl.common.pubsub.on('ChangeTelephoneEventBinder', function(link) {\r\n const containerSelector = 'SlidePanelContent';\r\n const actionUrl = link.data('action-url');\r\n const personId = link.data('personId');\r\n const policyHolderId = link.data('policyHolderId');\r\n const source = link.data('source');\r\n const requestBodyData = {\r\n componentConfiguration: componentConfiguration,\r\n personId: personId,\r\n source: source,\r\n };\r\n requestBodyData.personId = policyHolderId;\r\n bgl.common.loader.load(requestBodyData,\r\n actionUrl,\r\n containerSelector,\r\n function() {\r\n bgl.components.contactinformationpolicy.init(componentConfiguration);\r\n });\r\n });\r\n }\r\n\r\n function subscribeEditLinks(componentConfiguration) {\r\n const SPACE_KEYCODE = 32;\r\n const ENTER_KEYCODE = 13;\r\n const editLinks = component.find('[data-action-url]');\r\n\r\n editLinks.off()\r\n .on({\r\n 'keyup': function(event) {\r\n const code = event.charCode || event.keyCode;\r\n\r\n if (code === ENTER_KEYCODE || code === SPACE_KEYCODE) {\r\n $(this).click();\r\n }\r\n },\r\n 'click': function(event) {\r\n event.preventDefault();\r\n\r\n const link = $(this);\r\n\r\n const containerSelector = 'SlidePanelContent';\r\n const actionUrl = link.data('action-url');\r\n const action = link.data('action');\r\n const personId = link.data('personId');\r\n const policyHolderId = link.data('policyHolderId');\r\n const firstName = link.data('driverFirstName');\r\n const isPolicyHolder = link.data('isPolicyHolder');\r\n\r\n const source = link.data('source');\r\n const requestBodyData = {\r\n componentConfiguration: componentConfiguration,\r\n personId: personId,\r\n source: source,\r\n };\r\n\r\n if (isPolicyHolder !== 'True') {\r\n requestBodyData.FirstName = firstName;\r\n }\r\n\r\n requestBodyData.isPolicyHolder = isPolicyHolder === 'True';\r\n\r\n switch (action) {\r\n case actions.aboutYou:\r\n requestBodyData.JourneyType = journeyTypes.singleEdit;\r\n bgl.common.loader.load(requestBodyData,\r\n actionUrl,\r\n containerSelector,\r\n function() {\r\n bgl.components.aboutyoudriverdetails.init(componentConfiguration);\r\n });\r\n break;\r\n\r\n case actions.employmentStatus:\r\n case actions.existencePartTimeOccupation:\r\n bgl.common.loader.load(requestBodyData,\r\n actionUrl,\r\n containerSelector,\r\n function() {\r\n bgl.components.employmentstatusbuilder.init(componentConfiguration, containerSelector);\r\n });\r\n break;\r\n\r\n case actions.address:\r\n bgl.components.editaddress.load(componentConfiguration,\r\n actionUrl,\r\n containerSelector);\r\n return;\r\n\r\n case actions.drivingLicenceNumber:\r\n bgl.common.loader.load(requestBodyData,\r\n actionUrl,\r\n containerSelector, function() {\r\n bgl.components.drivinglicencenumber.init(componentConfiguration);\r\n });\r\n break;\r\n\r\n case actions.homeOwner:\r\n requestBodyData.personId = policyHolderId;\r\n\r\n bgl.common.loader.load(requestBodyData,\r\n actionUrl,\r\n containerSelector,\r\n function() {\r\n bgl.components.homeowner.init(componentConfiguration);\r\n });\r\n break;\r\n\r\n case actions.ukResidentFiveYears:\r\n bgl.common.loader.load(requestBodyData,\r\n actionUrl,\r\n containerSelector,\r\n function() {\r\n bgl.components.ukresidentfiveyears.init(componentConfiguration);\r\n });\r\n break;\r\n\r\n case actions.typeOfLicence:\r\n requestBodyData.firstStep = actions.typeOfLicence;\r\n bgl.common.loader.load(requestBodyData,\r\n actionUrl,\r\n containerSelector,\r\n function() {\r\n bgl.components.typeoflicence.init(componentConfiguration);\r\n });\r\n break;\r\n\r\n case actions.licenceHeldSince:\r\n requestBodyData.firstStep = actions.licenceHeldSince;\r\n bgl.common.loader.load(requestBodyData,\r\n actionUrl,\r\n containerSelector,\r\n function() {\r\n bgl.components.licenceheldsince.init(componentConfiguration);\r\n });\r\n break;\r\n\r\n case actions.motorClaims:\r\n bgl.common.loader.load(requestBodyData,\r\n actionUrl,\r\n containerSelector,\r\n function() {\r\n bgl.components.motorclaims.init(componentConfiguration);\r\n });\r\n break;\r\n\r\n case actions.declinedInsurance:\r\n bgl.common.loader.load(requestBodyData,\r\n actionUrl,\r\n containerSelector,\r\n function() {\r\n bgl.components.declinedinsurance.init(componentConfiguration);\r\n });\r\n break;\r\n\r\n case actions.medicalCondition:\r\n bgl.common.loader.load(requestBodyData,\r\n actionUrl,\r\n containerSelector,\r\n function() {\r\n bgl.components.medicalcondition.init(componentConfiguration);\r\n });\r\n break;\r\n\r\n case actions.medicalConditionDvlaNotified:\r\n bgl.common.loader.load(requestBodyData,\r\n actionUrl,\r\n containerSelector,\r\n function() {\r\n bgl.components.medicalconditiondvlanotified.init(componentConfiguration);\r\n });\r\n break;\r\n\r\n case actions.contactInformation:\r\n requestBodyData.personId = policyHolderId;\r\n bgl.common.loader.load(requestBodyData,\r\n actionUrl,\r\n containerSelector,\r\n function() {\r\n bgl.components.contactinformation.init(componentConfiguration);\r\n });\r\n break;\r\n\r\n case actions.contactInformationPolicy:\r\n requestBodyData.personId = policyHolderId;\r\n bgl.common.loader.load(requestBodyData,\r\n actionUrl,\r\n containerSelector,\r\n function() {\r\n bgl.components.contactinformationpolicy.init(componentConfiguration);\r\n });\r\n break;\r\n\r\n case actions.motorConvictions:\r\n bgl.common.loader.load(requestBodyData,\r\n actionUrl,\r\n containerSelector,\r\n function() {\r\n bgl.components.motorconvictions.init(componentConfiguration);\r\n });\r\n break;\r\n\r\n case actions.criminalConvictions:\r\n bgl.common.loader.load(requestBodyData,\r\n actionUrl,\r\n containerSelector,\r\n function() {\r\n bgl.components.criminalconvictions.init(componentConfiguration, false);\r\n });\r\n break;\r\n\r\n case actions.useOfOtherVehicles:\r\n bgl.common.loader.load(requestBodyData,\r\n actionUrl,\r\n containerSelector,\r\n function() {\r\n bgl.components.useofothervehicles.init(componentConfiguration);\r\n });\r\n break;\r\n\r\n case actions.maritalStatus:\r\n bgl.common.loader.load(requestBodyData,\r\n actionUrl,\r\n containerSelector,\r\n function() {\r\n bgl.components.maritalstatus.init(componentConfiguration, containerSelector);\r\n });\r\n break;\r\n\r\n case actions.deleterFrequentDriver:\r\n if (componentConfiguration.IsService && componentConfiguration.LoadEditAsARedirect) {\r\n bgl.common.utilities.redirectToUrl(actionUrl);\r\n } else {\r\n bgl.common.loader.load({\r\n componentConfiguration: componentConfiguration,\r\n driverId: link.data('driverId'),\r\n firstName: link.data('driverFirstName'),\r\n lastName: link.data('driverLastName'),\r\n },\r\n actionUrl,\r\n containerSelector,\r\n function() {\r\n bgl.components.deletefrequentdriver.init(componentConfiguration);\r\n });\r\n }\r\n break;\r\n }\r\n },\r\n });\r\n }\r\n\r\n return {\r\n init: initComponent,\r\n load: loadComponent,\r\n getPreviouslyStoredChangedUserData: getPreviouslyStoredChangedUserData,\r\n setPreviouslyStoredChangedUserData: setPreviouslyStoredChangedUserData,\r\n getAmountOfYears: getAmountOfYears,\r\n };\r\n})();\r\n\r\nbgl.components.aboutyoudriverdetails = (function() {\r\n let form;\r\n let configuration;\r\n\r\n function initComponent(componentConfiguration) {\r\n initObject(componentConfiguration);\r\n\r\n bgl.common.datastore.init(form);\r\n }\r\n\r\n function initJourney(componentConfiguration) {\r\n initObject(componentConfiguration);\r\n\r\n bgl.components.additionaldriver.initJourneyStep();\r\n\r\n bgl.common.datastore.init(form, false, true);\r\n bgl.common.datastore.setupReadAndWrite();\r\n }\r\n\r\n function initObject(componentConfiguration) {\r\n configuration = componentConfiguration;\r\n form = $('#about-you-form');\r\n\r\n bgl.common.validator.enableMaxLength();\r\n bgl.common.validator.init(form);\r\n\r\n bgl.common.date.initDateFormat($('#DateOfBirth'));\r\n\r\n form.off('submit')\r\n .on('submit',\r\n function(event) {\r\n event.preventDefault();\r\n\r\n if (bgl.common.validator.isFormValid($(event.target))) {\r\n $('#HasChanges').val(bgl.common.datastore.isDataChanged($(event.target)) === true);\r\n storeUserChangesForTagManager();\r\n bgl.common.validator.submitForm($(event.target), configuration);\r\n }\r\n });\r\n }\r\n\r\n function storeUserChangesForTagManager() {\r\n const data = bgl.components.driverdetails.common.getPreviouslyStoredChangedUserData();\r\n if ($('#IsPolicyHolder').val() === 'True') {\r\n const newDateOfBirth = $('#DateOfBirth').val();\r\n data.push(['UserAge', bgl.components.driverdetails.common.getAmountOfYears(newDateOfBirth)]);\r\n bgl.components.driverdetails.common.setPreviouslyStoredChangedUserData(data);\r\n } else {\r\n return data;\r\n }\r\n }\r\n\r\n function updateNotification(houstonMessage) {\r\n const notification = JSON.stringify({\r\n cat: 'pricechange',\r\n msg: houstonMessage,\r\n });\r\n\r\n sessionStorage.setItem('notification', notification);\r\n\r\n window.location.reload(true);\r\n }\r\n\r\n function onSuccess(configuration, data) {\r\n if (data.nextStepUrl) {\r\n bgl.components.additionaldriver.nextStep(configuration, data, form);\r\n } else {\r\n if (data.hasChanges === true) {\r\n if (data.houstonMessage) {\r\n const params = {\r\n callback: function() {\r\n updateNotification(data.houstonMessage);\r\n },\r\n };\r\n\r\n bgl.common.pubsub.emit('PollBasket', params);\r\n } else {\r\n bgl.common.pubsub.emit('PollBasket');\r\n }\r\n }\r\n\r\n bgl.common.datastore.removeSessionStorage(form);\r\n $('[data-dismiss=\"slide-panel\"]').click();\r\n }\r\n }\r\n\r\n function onError() {\r\n const journeyType = $('#JourneyType').val() - 0;\r\n\r\n switch (journeyType) {\r\n case 1:\r\n bgl.components.aboutyoudriverdetails.initJourney(configuration);\r\n break;\r\n default:\r\n bgl.components.aboutyoudriverdetails.init(configuration);\r\n break;\r\n }\r\n bgl.common.datastore.extendCollectedData(form, {isFormDirty: true});\r\n }\r\n\r\n return {\r\n init: initComponent,\r\n initJourney: initJourney,\r\n storeUserChangesForTagManager: storeUserChangesForTagManager,\r\n onSuccess: onSuccess,\r\n onError: onError,\r\n };\r\n})();\r\n\r\nbgl.components.employmentstatusbuilder = (function() {\r\n let containerId;\r\n let configuration;\r\n let form;\r\n let hasPreselectedValues;\r\n\r\n function init(componentConfiguration, containerElementId, resetDirtyForm) {\r\n initObject(componentConfiguration, containerElementId);\r\n\r\n bgl.common.datastore.init(form, resetDirtyForm);\r\n }\r\n\r\n function initJourney(componentConfiguration, containerElementId) {\r\n initObject(componentConfiguration, containerElementId);\r\n\r\n bgl.components.additionaldriver.initJourneyStep();\r\n\r\n bgl.common.datastore.init(form, false, true);\r\n bgl.common.datastore.setupReadAndWrite();\r\n\r\n hasPreselectedValues = form.find('input[type=radio]:checked').length !== 0;\r\n\r\n if (hasPreselectedValues === true) {\r\n showContinueButton();\r\n }\r\n\r\n if (hasPreselectedValues === false) {\r\n form.find('input[type=radio]')\r\n .off('click')\r\n .on('click', continueHandler);\r\n }\r\n }\r\n\r\n function initObject(componentConfiguration, containerElementId) {\r\n configuration = componentConfiguration;\r\n containerId = containerElementId;\r\n\r\n form = $('[data-component-id=\\'' + configuration.Id + '\\'] form');\r\n\r\n bgl.common.validator.init(form);\r\n bgl.common.validator.initAutocompleteSearchInputs(form);\r\n\r\n bgl.common.autocompletesearch.init(3);\r\n\r\n $('a[data-step-type=\\'previous-step\\']').one('click', function(event) {\r\n event.preventDefault();\r\n\r\n const backUrl = $(this).attr('href');\r\n\r\n const elementsArray = form.serializeArray();\r\n\r\n const model = {\r\n componentConfiguration: configuration,\r\n };\r\n\r\n $.map(elementsArray, function(item, i) {\r\n model[item['name']] = item['value'];\r\n });\r\n\r\n loadViewPage(model, backUrl);\r\n });\r\n\r\n form.off('submit').on('submit',\r\n function(event) {\r\n event.preventDefault();\r\n\r\n if (bgl.common.validator.isFormValid($(event.target))) {\r\n $('#HasChanges').val(bgl.common.datastore.isDataChanged($(event.target)) === true);\r\n\r\n if (configuration.IsService) {\r\n const mtaSuffix = bgl.common.utilities.getWindowLocation()\r\n .href.toLowerCase().includes('makechanges') ?\r\n 'start' :\r\n 'additional change';\r\n\r\n bgl.common.telemetry.logEvent(`MTA ${mtaSuffix}`,\r\n {mta_type: 'Employment status', component: configuration.Id});\r\n }\r\n\r\n bgl.common.validator.submitForm($(event.target), configuration);\r\n }\r\n });\r\n\r\n form.find('label').on('keyup', bgl.common.keyboardAccessibility.generateClickOnKeypress);\r\n }\r\n\r\n function continueHandler(event) {\r\n event.preventDefault();\r\n\r\n if ($(event.target).is(':checked')) {\r\n $(event.target).trigger('change');\r\n }\r\n\r\n form.submit();\r\n }\r\n\r\n function showContinueButton() {\r\n const continueButton = $(form.find('[type=\\'submit\\']'));\r\n continueButton.removeClass('hide');\r\n }\r\n\r\n function onSuccess(configuration, data) {\r\n if (data.needDeleteOccupation === true) {\r\n resetOccupationInfo(data.occupationStep, data.hasChanges, form);\r\n }\r\n\r\n if (data.hasChanges === true) {\r\n bgl.common.datastore.extendCollectedData(form, {isFormDirty: false});\r\n }\r\n\r\n if (data.nextStepUrl) {\r\n bgl.components.additionaldriver.nextStep(configuration, data, form);\r\n return;\r\n }\r\n\r\n if (data.componentUrl) {\r\n loadViewPage(data.content, data.componentUrl);\r\n return;\r\n }\r\n\r\n bgl.common.datastore.removeSessionStorage(form);\r\n\r\n if (configuration && configuration.IsService) {\r\n if (configuration.IsInitialChange) {\r\n if (data.hasChanges) {\r\n const params = {\r\n callback: function() {\r\n bgl.common.utilities.redirectToUrl(configuration.NextStepUrl);\r\n },\r\n };\r\n bgl.common.pubsub.emit('PollBasket', params);\r\n } else {\r\n bgl.common.contentpanel.hideSlidePanel();\r\n }\r\n } else if (data.hasChanges) {\r\n bgl.common.pubsub.emit('PollBasket');\r\n } else {\r\n bgl.common.utilities.redirectToUrl(configuration.NextStepUrl);\r\n }\r\n } else {\r\n if (data.hasChanges) {\r\n bgl.common.pubsub.emit('PollBasket');\r\n }\r\n $('[data-dismiss=\"slide-panel\"]').click();\r\n }\r\n }\r\n\r\n function loadViewPage(model, url) {\r\n const initFunc = getInitByJourneyType((model.journeyType || model.JourneyType) - 0);\r\n\r\n bgl.common.loader.load(model, url, containerId,\r\n function() {\r\n initFunc(configuration, containerId, false);\r\n });\r\n }\r\n\r\n function resetOccupationInfo(stepType, hasChanges, form) {\r\n if (hasChanges === true) {\r\n switch (stepType) {\r\n case 1:\r\n bgl.common.datastore.deleteFields(form,\r\n [\r\n 'PartTimeOccupationId', 'PartTimeOccupation',\r\n 'PartTimeBusinessCategoryId', 'PartTimeBusinessCategory',\r\n ]);\r\n break;\r\n default:\r\n bgl.common.datastore.deleteFields(form,\r\n [\r\n 'OccupationId', 'Occupation',\r\n 'BusinessCategoryId', 'BusinessCategory',\r\n ]);\r\n break;\r\n }\r\n }\r\n }\r\n\r\n function onError() {\r\n const initFunc = getInitByJourneyType($('#JourneyType').val() - 0);\r\n\r\n initFunc(configuration, containerId);\r\n bgl.common.datastore.extendCollectedData(form, {isFormDirty: true});\r\n }\r\n\r\n function getInitByJourneyType(journeyType) {\r\n switch (journeyType) {\r\n case 1:\r\n return bgl.components.employmentstatusbuilder.initJourney;\r\n default:\r\n return bgl.components.employmentstatusbuilder.init;\r\n }\r\n }\r\n\r\n return {\r\n init: init,\r\n initJourney: initJourney,\r\n onSuccess: onSuccess,\r\n onError: onError,\r\n };\r\n})();\r\n\r\nbgl.components.editaddress = (function() {\r\n let configuration;\r\n let containerId;\r\n let form;\r\n const BACK_URL_STACK_KEY = 'backUrlStack';\r\n const mileageForm = 'AnnualMileage';\r\n const overnightParkingForm = 'OvernightParking';\r\n\r\n function loadComponent(componentConfiguration, componentUrl, containerElementId) {\r\n configuration = componentConfiguration;\r\n containerId = containerElementId;\r\n\r\n bgl.common.loader.load(componentConfiguration,\r\n componentUrl,\r\n containerElementId,\r\n function() {\r\n bgl.components.editaddress.init(configuration);\r\n sessionStorage.removeItem(BACK_URL_STACK_KEY);\r\n },\r\n );\r\n }\r\n\r\n function initComponent(componentConfiguration, resetDirtyFlag) {\r\n configuration = componentConfiguration;\r\n\r\n initValidation(resetDirtyFlag);\r\n\r\n initAjaxLink();\r\n\r\n initBackButtonLink();\r\n\r\n initPostcodeFieldTrim();\r\n }\r\n\r\n function initValidation(resetDirtyFlag) {\r\n form = $('[data-component-id=\\'' + configuration.Id + '\\'] form');\r\n\r\n bgl.common.validator.init(form);\r\n bgl.common.validator.enableMaxLength();\r\n\r\n bgl.common.datastore.init(form, resetDirtyFlag, true);\r\n bgl.common.datastore.setupReadAndWrite();\r\n\r\n form.off('submit').on('submit',\r\n function(e) {\r\n e.preventDefault();\r\n\r\n form.find('.error-messagebox').removeClass('show');\r\n\r\n if (bgl.common.validator.isFormValid($(this))) {\r\n const hasChanges = bgl.common.datastore.isDataChanged($(this)) === true;\r\n $('#HasChanges').val(hasChanges);\r\n bgl.common.validator.submitForm($(this), configuration);\r\n }\r\n });\r\n\r\n subscribeToEventDismissAddressPanel();\r\n }\r\n\r\n function initAjaxLink() {\r\n $('.ajax-address-link')\r\n .off('click')\r\n .on('click',\r\n function(e) {\r\n e.preventDefault();\r\n\r\n const url = $(this).attr('href');\r\n const backButtonUrl = $(this).data('back-url');\r\n\r\n pushBackButtonUrl(backButtonUrl);\r\n loadView(url);\r\n });\r\n }\r\n\r\n function initBackButtonLink() {\r\n $('.back-button-link')\r\n .off('click')\r\n .on('click',\r\n function(e) {\r\n e.preventDefault();\r\n $(this).hide();\r\n const url = getBackButtonUrl();\r\n loadView(url);\r\n });\r\n }\r\n\r\n function initPostcodeFieldTrim() {\r\n $('#PostCode')\r\n .on('blur',\r\n function(e) {\r\n $(this).val($(this).val().trim());\r\n });\r\n }\r\n\r\n function subscribeToEventDismissAddressPanel() {\r\n $(document).off('click.address', '[data-dismiss=\"slide-panel\"]').on('click.address',\r\n '[data-dismiss=\"slide-panel\"]',\r\n function() {\r\n unSubscribeToEventDismissAddressPanel();\r\n dismissSlidePanelHandler();\r\n });\r\n\r\n $(document).off('keyup.address').on('keyup.address',\r\n function(event) {\r\n if (event.key === 'Escape') {\r\n unSubscribeToEventDismissAddressPanel();\r\n dismissSlidePanelHandler();\r\n }\r\n });\r\n\r\n $('.overlay').off('click.address').on('click.address',\r\n function() {\r\n unSubscribeToEventDismissAddressPanel();\r\n dismissSlidePanelHandler();\r\n });\r\n }\r\n\r\n function unSubscribeToEventDismissAddressPanel() {\r\n $(document).off('click.address', '[data-dismiss=\"slide-panel\"]');\r\n $(document).off('keyup.address');\r\n $('.overlay').off('click.address');\r\n }\r\n\r\n function dismissSlidePanelHandler() {\r\n cleanUp(null, {needRaisingEvent: false});\r\n }\r\n\r\n\r\n function getBackButtonUrl() {\r\n const stack = JSON.parse(sessionStorage.getItem(BACK_URL_STACK_KEY));\r\n const url = stack.pop();\r\n\r\n sessionStorage.setItem(BACK_URL_STACK_KEY, JSON.stringify(stack));\r\n\r\n return url;\r\n }\r\n\r\n function pushBackButtonUrl(url) {\r\n const stack = JSON.parse(sessionStorage.getItem(BACK_URL_STACK_KEY)) || [];\r\n\r\n stack.push(url);\r\n\r\n sessionStorage.setItem(BACK_URL_STACK_KEY, JSON.stringify(stack));\r\n }\r\n\r\n function loadView(url) {\r\n let data = bgl.common.datastore.getData(form);\r\n\r\n data.ComponentConfiguration = configuration;\r\n\r\n const resetDirtyFlag = false;\r\n\r\n if (url.indexOf('SearchAddress') !== -1) {\r\n sessionStorage.removeItem(BACK_URL_STACK_KEY);\r\n data = configuration;\r\n } else if (url.indexOf('SelectAddress') === -1) {\r\n delete data.PostCode;\r\n delete data.Home;\r\n }\r\n\r\n bgl.common.loader.load(data,\r\n url,\r\n containerId,\r\n function() {\r\n initComponent(configuration, resetDirtyFlag);\r\n });\r\n }\r\n\r\n function onSuccess(configuration, data) {\r\n pushBackButtonUrl(data.backButtonUrl);\r\n\r\n bgl.common.loader.load(data.content, data.url, containerId, function() {\r\n bgl.components.editaddress.init(configuration, data.resetDirtyFlag);\r\n });\r\n }\r\n\r\n function cleanUp() {\r\n bgl.common.datastore.removeSessionStorage(form);\r\n unSubscribeToEventDismissAddressPanel();\r\n bgl.common.datastore.removeSessionStorage(BACK_URL_STACK_KEY);\r\n\r\n bgl.common.datastore.removeSessionStorage(mileageForm);\r\n bgl.common.datastore.removeSessionStorage(overnightParkingForm);\r\n $('[data-dismiss=\"slide-panel\"]').click();\r\n }\r\n\r\n function onSuccessConfirmation(configuration, responsePayload) {\r\n const newSessionObject = $.extend(\r\n responsePayload.address,\r\n {\r\n isFormDirty: responsePayload.hasChanges,\r\n HasChanges: responsePayload.hasChanges,\r\n },\r\n );\r\n bgl.common.datastore.extendCollectedData(form, newSessionObject);\r\n pushBackButtonUrl(responsePayload.backButtonUrl);\r\n bgl.common.loader.load(configuration, responsePayload.url, containerId, function() {\r\n bgl.components.driverdetails.overnightparking.init(configuration, containerId);\r\n });\r\n }\r\n\r\n function onError(configuration) {\r\n bgl.components.editaddress.init(configuration);\r\n bgl.common.datastore.extendCollectedData(form, {isFormDirty: true});\r\n }\r\n\r\n function postAddressChange(configuration, postUrl, formData) {\r\n bgl.common.datastore.removeSessionStorage(form);\r\n unSubscribeToEventDismissAddressPanel();\r\n bgl.common.datastore.removeSessionStorage(BACK_URL_STACK_KEY);\r\n bgl.common.datastore.removeSessionStorage(mileageForm);\r\n bgl.common.datastore.removeSessionStorage(overnightParkingForm);\r\n\r\n $.post(postUrl, formData, function(response) {\r\n if (response.errorRedirectUrl !== undefined) {\r\n bgl.common.utilities.errorRedirect(response.errorRedirectUrl);\r\n return;\r\n }\r\n if (configuration && configuration.IsService) {\r\n const mtaSuffix = bgl.common.utilities.getWindowLocation().href.toLowerCase().includes('makechanges') ?\r\n 'start' :\r\n 'additional change';\r\n\r\n bgl.common.telemetry.logEvent(`MTA ${mtaSuffix}`,\r\n {mta_type: 'Edit Address', component: configuration.Id});\r\n\r\n if (configuration.IsInitialChange) {\r\n if (response.needRaisingEvent) {\r\n const params = {\r\n callback: function() {\r\n bgl.common.utilities.redirectToUrl(configuration.NextStepUrl);\r\n },\r\n };\r\n bgl.common.pubsub.emit('PollBasket', params);\r\n } else {\r\n $('[data-dismiss=\"slide-panel\"]').click();\r\n }\r\n } else {\r\n bgl.common.pubsub.emit('PollBasket');\r\n }\r\n } else {\r\n if (response.needRaisingEvent) {\r\n bgl.common.pubsub.emit('PollBasket');\r\n }\r\n\r\n $('[data-dismiss=\"slide-panel\"]').click();\r\n }\r\n });\r\n }\r\n\r\n return {\r\n init: initComponent,\r\n load: loadComponent,\r\n onSuccess: onSuccess,\r\n onSuccessConfirmation: onSuccessConfirmation,\r\n postAddressChange: postAddressChange,\r\n onError: onError,\r\n };\r\n})();\r\n\r\nbgl.components.ukresidentfiveyears = (function() {\r\n let form;\r\n let configuration;\r\n let residencyStartDateDropdowns;\r\n let fullYearMonthOptions;\r\n let currentYearMonthOptions;\r\n let firstYearMonthOptions;\r\n let monthDropdown;\r\n let yearDropdown;\r\n const HIDE_CLASS = 'hide';\r\n let hasPreselectedValues;\r\n\r\n function initComponent(componentConfiguration) {\r\n form = $('#uk-resident-five-years');\r\n\r\n bgl.common.datastore.init(form);\r\n\r\n initObject(componentConfiguration);\r\n }\r\n\r\n function initJourney(componentConfiguration) {\r\n form = $('#uk-resident-five-years');\r\n\r\n bgl.common.datastore.init(form, false, true);\r\n bgl.common.datastore.setupReadAndWrite();\r\n\r\n initObject(componentConfiguration);\r\n\r\n bgl.components.additionaldriver.initJourneyStep();\r\n }\r\n\r\n function initObject(componentConfiguration) {\r\n const currentMonth = $('#CurrentMonth').val() * 1;\r\n\r\n configuration = componentConfiguration;\r\n\r\n residencyStartDateDropdowns = form.find('#residency-start-date-dropdowns');\r\n monthDropdown = form.find('#Resident-Since-Month');\r\n yearDropdown = form.find('#Resident-Since-Year');\r\n\r\n bgl.common.validator.init(form);\r\n\r\n fullYearMonthOptions = monthDropdown.find('option');\r\n currentYearMonthOptions = fullYearMonthOptions.slice(0, currentMonth + 1);\r\n firstYearMonthOptions = fullYearMonthOptions.slice(0);\r\n firstYearMonthOptions.splice(1, currentMonth - 1);\r\n\r\n subscribeForEvents();\r\n\r\n updateMonthDropdown();\r\n\r\n form.find('label').on('keyup', bgl.common.keyboardAccessibility.generateClickOnKeypress);\r\n }\r\n\r\n function subscribeForEvents() {\r\n hasPreselectedValues = form.find('input[type=radio]:checked').length !== 0;\r\n\r\n if (hasPreselectedValues) {\r\n showContinueButton();\r\n\r\n const selectedButton = $(form.find('input[type=radio]:checked')[0]);\r\n switch (selectedButton.val().toLowerCase()) {\r\n case 'false':\r\n if (residencyStartDateDropdowns.hasClass(HIDE_CLASS)) {\r\n residencyStartDateDropdowns.removeClass(HIDE_CLASS);\r\n }\r\n break;\r\n }\r\n }\r\n\r\n form.find('input[type=radio]').off('click').on('click',\r\n function(event) {\r\n $(event.target).prop('checked', true);\r\n\r\n updateResidencyStartDateVisibility($(event.target));\r\n\r\n if (hasPreselectedValues !== true) {\r\n continueHandler(event);\r\n }\r\n });\r\n\r\n yearDropdown.on('change', updateMonthDropdown);\r\n\r\n form.off('submit')\r\n .on('submit',\r\n function(event) {\r\n event.preventDefault();\r\n\r\n if (bgl.common.validator.isFormValid($(this))) {\r\n $('#HasChanges').val(bgl.common.datastore.isDataChanged($(this)) === true);\r\n\r\n bgl.common.validator.submitForm($(this), configuration);\r\n }\r\n });\r\n }\r\n\r\n function updateResidencyStartDateVisibility(element) {\r\n const value = element.val();\r\n\r\n if (value.toLowerCase() === 'false') {\r\n if (residencyStartDateDropdowns.hasClass(HIDE_CLASS)) {\r\n residencyStartDateDropdowns.removeClass(HIDE_CLASS);\r\n }\r\n\r\n hasPreselectedValues = true;\r\n } else {\r\n if (!residencyStartDateDropdowns.hasClass(HIDE_CLASS)) {\r\n residencyStartDateDropdowns.addClass(HIDE_CLASS);\r\n }\r\n }\r\n\r\n if (hasPreselectedValues === true) {\r\n showContinueButton();\r\n }\r\n }\r\n\r\n function showContinueButton() {\r\n const continueButton = $(form.find('[type=\\'submit\\']'));\r\n continueButton.removeClass('hide');\r\n }\r\n\r\n function continueHandler(event) {\r\n event.preventDefault();\r\n\r\n if ($(event.target).is(':checked')) {\r\n $(event.target).trigger('change');\r\n }\r\n\r\n form.submit();\r\n }\r\n\r\n function updateMonthDropdown() {\r\n const months = monthDropdown;\r\n const selectedMonthValue = months.val();\r\n const currentYear = $('#CurrentYear').val();\r\n const firstYear = (currentYear - 5).toString();\r\n\r\n switch (yearDropdown.val()) {\r\n case currentYear:\r\n months.html(currentYearMonthOptions);\r\n break;\r\n case firstYear:\r\n months.html(firstYearMonthOptions);\r\n break;\r\n default:\r\n months.html(fullYearMonthOptions);\r\n break;\r\n };\r\n\r\n months.val(selectedMonthValue);\r\n\r\n // select first value if value is not selected\r\n if (!months.val()) {\r\n months.find('option:eq(0)').prop('selected', true);\r\n }\r\n }\r\n\r\n function onSuccess(configuration, data) {\r\n if (data.nextStepUrl) {\r\n if (data.hasChanges === true && data.isUkResident === true) {\r\n bgl.common.datastore.deleteFields(form,\r\n [\r\n 'UkResidentYear', 'UkResidentYearVal', 'UkResidentYearText',\r\n 'UkResidentMonth', 'UkResidentMonthVal', 'UkResidentMonthText',\r\n ]);\r\n bgl.common.datastore.extendCollectedData(form, {isFormDirty: false});\r\n }\r\n\r\n bgl.components.additionaldriver.nextStep(configuration, data, form);\r\n } else {\r\n if (data.hasChanges === true) {\r\n bgl.common.pubsub.emit('PollBasket');\r\n }\r\n bgl.common.datastore.removeSessionStorage(form);\r\n $('[data-dismiss=\"slide-panel\"]').click();\r\n }\r\n }\r\n\r\n function onError() {\r\n const journeyType = $('#JourneyType').val() - 0;\r\n\r\n switch (journeyType) {\r\n case 1:\r\n bgl.components.ukresidentfiveyears.initJourney(configuration);\r\n break;\r\n default:\r\n bgl.components.ukresidentfiveyears.init(configuration);\r\n break;\r\n }\r\n bgl.common.datastore.extendCollectedData(form, {isFormDirty: true});\r\n }\r\n\r\n return {\r\n init: initComponent,\r\n onSuccess: onSuccess,\r\n onError: onError,\r\n initJourney: initJourney,\r\n };\r\n})();\r\n\r\nbgl.components.typeoflicence = (function() {\r\n let form;\r\n let configuration;\r\n let licenceInputs;\r\n const containerId = 'SlidePanelContent';\r\n const internationalLabel = 'I';\r\n const provisionalLabel = 'P';\r\n let hasPreselectedValues;\r\n let continueButton;\r\n\r\n function ctor(componentConfiguration) {\r\n configuration = componentConfiguration;\r\n form = $('#type-of-licence');\r\n\r\n licenceInputs = form.find('#licence-section [type=radio]');\r\n continueButton = $(form.find('[type=\\'submit\\']'));\r\n\r\n bgl.common.validator.init(form);\r\n }\r\n\r\n function initComponent(componentConfiguration, resetDirtyFlag) {\r\n ctor(componentConfiguration);\r\n\r\n initObject();\r\n\r\n bgl.common.datastore.init(form, resetDirtyFlag);\r\n }\r\n\r\n function initJourney(componentConfiguration) {\r\n ctor(componentConfiguration);\r\n\r\n bgl.common.datastore.init(form, false, true);\r\n bgl.common.datastore.setupReadAndWrite();\r\n\r\n initObject();\r\n\r\n bgl.components.additionaldriver.initJourneyStep();\r\n }\r\n\r\n function initObject() {\r\n hasPreselectedValues = form.find('input[type=radio]:checked').length !== 0 ||\r\n continueButton.hasClass('hide') === false;\r\n\r\n updateCountrySectionVisibility();\r\n\r\n subscribeOnEvents();\r\n }\r\n\r\n function subscribeOnEvents() {\r\n form.off('submit')\r\n .on('submit',\r\n function(event) {\r\n event.preventDefault();\r\n\r\n if (bgl.common.validator.isFormValid($(this))) {\r\n $('#HasChanges').val(bgl.common.datastore.isDataChanged($(this)) === true);\r\n\r\n bgl.common.validator.submitForm($(this), configuration);\r\n }\r\n });\r\n\r\n licenceInputs.off('click').on('click',\r\n function(event) {\r\n updateCountrySectionVisibility();\r\n\r\n if (hasPreselectedValues !== true) {\r\n continueHandler(event);\r\n }\r\n });\r\n\r\n form.find('label').on('keyup', bgl.common.keyboardAccessibility.generateClickOnKeypress);\r\n }\r\n\r\n function updateCountrySectionVisibility() {\r\n const countriesSection = form.find('#licence-row');\r\n\r\n const checkedLicenceValue = findCheckedLicenceValue();\r\n\r\n if (checkedLicenceValue === internationalLabel) {\r\n hasPreselectedValues = true;\r\n countriesSection.removeClass('hide');\r\n } else {\r\n countriesSection.addClass('hide');\r\n }\r\n\r\n if (hasPreselectedValues === true) {\r\n showContinueButton();\r\n }\r\n }\r\n\r\n function showContinueButton() {\r\n const continueButton = $(form.find('[type=\\'submit\\']'));\r\n continueButton.removeClass('hide');\r\n }\r\n\r\n function continueHandler(event) {\r\n event.preventDefault();\r\n\r\n if ($(event.target).is(':checked')) {\r\n $(event.target).trigger('change');\r\n }\r\n\r\n form.submit();\r\n }\r\n\r\n function onSuccess(configuration, data) {\r\n const journeyType = $('#JourneyType').val() - 0;\r\n const content = JSON.parse(data.content);\r\n\r\n switch (journeyType) {\r\n case 1:\r\n bgl.common.loader.load(content,\r\n data.componentUrl,\r\n containerId,\r\n function() {\r\n bgl.components.licenceheldsince.initJourney(configuration);\r\n });\r\n break;\r\n default:\r\n const checkedLicenceValue = findCheckedLicenceValue();\r\n\r\n if (checkedLicenceValue === provisionalLabel && data.hasChanges === true) {\r\n window.sessionStorage.removeItem('DaNAddons');\r\n }\r\n\r\n bgl.common.loader.load(content,\r\n data.componentUrl,\r\n containerId,\r\n function() {\r\n bgl.components.licenceheldsince.init(configuration, false);\r\n });\r\n break;\r\n }\r\n }\r\n\r\n function onError() {\r\n const initFunc = getInitByJourneyType($('#JourneyType').val() - 0);\r\n\r\n initFunc(configuration);\r\n bgl.common.datastore.extendCollectedData(form, {isFormDirty: true});\r\n }\r\n\r\n function findCheckedLicenceValue() {\r\n return form.find('#licence-section [type=radio]:checked').val();\r\n }\r\n\r\n function getInitByJourneyType(journeyType) {\r\n switch (journeyType) {\r\n case 1:\r\n return bgl.components.typeoflicence.initJourney;\r\n default:\r\n return bgl.components.typeoflicence.init;\r\n }\r\n }\r\n\r\n return {\r\n init: initComponent,\r\n onSuccess: onSuccess,\r\n onError: onError,\r\n initJourney: initJourney,\r\n getInitByJourneyType: getInitByJourneyType,\r\n };\r\n})();\r\n\r\nbgl.components.licenceheldsince = (function() {\r\n let form;\r\n let configuration;\r\n let monthDropdown;\r\n let yearDropdown;\r\n let fullYearMonthOptions;\r\n\r\n function initComponent(componentConfiguration, resetDirtyFlag) {\r\n initObject(componentConfiguration);\r\n\r\n bgl.common.datastore.init(form, resetDirtyFlag);\r\n }\r\n\r\n function initJourney(componentConfiguration) {\r\n form = $('#licence-held-since');\r\n bgl.common.datastore.init(form, false, true);\r\n bgl.common.datastore.setupReadAndWrite();\r\n\r\n initObject(componentConfiguration);\r\n\r\n bgl.components.additionaldriver.initJourneyStep();\r\n }\r\n\r\n function initObject(componentConfiguration) {\r\n configuration = componentConfiguration;\r\n form = $('#licence-held-since');\r\n\r\n bgl.common.validator.init(form);\r\n\r\n subscribeOnEvents();\r\n\r\n updateMonthDropdown();\r\n }\r\n\r\n function subscribeOnEvents() {\r\n form.off('submit')\r\n .on('submit',\r\n function(event) {\r\n event.preventDefault();\r\n\r\n if (bgl.common.validator.isFormValid($(this))) {\r\n $('#HasChanges').val(bgl.common.datastore.isDataChanged($(this)) === true);\r\n\r\n storeUserChangesForTagManager();\r\n\r\n bgl.common.validator.submitForm($(this), configuration);\r\n }\r\n });\r\n\r\n $('a[data-step-type=\\'previous-step\\']').one('click', function(event) {\r\n event.preventDefault();\r\n\r\n const backUrl = $(this).attr('href');\r\n\r\n $(this).hide();\r\n\r\n const model = {\r\n componentConfiguration: configuration,\r\n country: $('#Country').val(),\r\n licence: $('#Licence').val(),\r\n firstStep: $('#FirstStep').val(),\r\n personId: $('#PersonId').val(),\r\n hasChanges: $('#HasChanges').val(),\r\n journeyType: $('#JourneyType').val(),\r\n firstName: $('#FirstName').val(),\r\n };\r\n\r\n const initFunc = bgl.components.typeoflicence.getInitByJourneyType(model.journeyType - 0);\r\n\r\n bgl.common.loader.load(model, backUrl, 'SlidePanelContent',\r\n function() {\r\n initFunc(configuration, false);\r\n });\r\n });\r\n\r\n monthDropdown = form.find('#Since-Month');\r\n yearDropdown = form.find('#Since-Year');\r\n\r\n fullYearMonthOptions = monthDropdown.find('option');\r\n\r\n yearDropdown.on('change', updateMonthDropdown);\r\n }\r\n\r\n function storeUserChangesForTagManager() {\r\n const data = bgl.components.driverdetails.common.getPreviouslyStoredChangedUserData();\r\n if ($('#IsPolicyHolder').val() === 'True') {\r\n const monthDropdown = $('#Since-Month').val();\r\n const yearDropdown = $('#Since-Year').val();\r\n const dateHeldSince = monthDropdown + '/' + yearDropdown;\r\n data.push(['YearsLicenceHeld', bgl.components.driverdetails.common.getAmountOfYears(dateHeldSince)]);\r\n bgl.components.driverdetails.common.setPreviouslyStoredChangedUserData(data);\r\n } else {\r\n return data;\r\n }\r\n }\r\n\r\n function updateMonthDropdown() {\r\n const months = monthDropdown;\r\n const selectedMonthValue = months.val();\r\n const currentYear = $('#CurrentYear').val() * 1;\r\n const currentMonth = $('#CurrentMonth').val() * 1;\r\n const selectedYear = yearDropdown.val() * 1;\r\n const personBirthYear = $('#PersonBirthYear').val() * 1;\r\n const personBirthMonth = $('#PersonBirthMonth').val() * 1;\r\n const adulthood = personBirthYear + 17;\r\n\r\n if (selectedYear === currentYear) {\r\n months.html(fullYearMonthOptions.slice(0, currentMonth + 1));\r\n } else if (selectedYear === adulthood) {\r\n // merge months after birth month and please select...\r\n const dropdownOptions = fullYearMonthOptions.slice(personBirthMonth);\r\n months.html($.merge([fullYearMonthOptions[0]], dropdownOptions));\r\n } else {\r\n months.html(fullYearMonthOptions);\r\n }\r\n months.val(selectedMonthValue);\r\n\r\n // select first value if value is not selected\r\n if (!months.val()) {\r\n months.find('option:eq(0)').prop('selected', true);\r\n }\r\n }\r\n\r\n function updateNotification(houstonMessage) {\r\n const notification = JSON.stringify({\r\n cat: 'pricechange',\r\n msg: houstonMessage,\r\n });\r\n\r\n sessionStorage.setItem('notification', notification);\r\n\r\n window.location.reload(true);\r\n }\r\n\r\n function onSuccess(configuration, data) {\r\n if (data.nextStepUrl) {\r\n const licence = $('#Licence').val();\r\n\r\n if (data.hasChanges === true) {\r\n if (licence === 'I') {\r\n bgl.common.datastore.deleteFields(form, ['HasDrivingLicenceNumber', 'DrivingLicenceNumber']);\r\n } else {\r\n bgl.common.datastore.deleteFields(form, ['Country', 'CountryVal', 'CountryText']);\r\n }\r\n }\r\n\r\n bgl.common.datastore.extendCollectedData(form, {isFormDirty: false});\r\n\r\n bgl.components.additionaldriver.nextStep(configuration, data, form);\r\n } else {\r\n if (data.hasChanges === true) {\r\n if (data.houstonMessage) {\r\n const params = {\r\n callback: function() {\r\n updateNotification(data.houstonMessage);\r\n },\r\n };\r\n\r\n bgl.common.pubsub.emit('PollBasket', params);\r\n } else {\r\n bgl.common.pubsub.emit('PollBasket');\r\n }\r\n }\r\n bgl.common.datastore.removeSessionStorage(form);\r\n $('[data-dismiss=\"slide-panel\"]').click();\r\n }\r\n }\r\n\r\n function onError() {\r\n const journeyType = $('#JourneyType').val() - 0;\r\n\r\n switch (journeyType) {\r\n case 1:\r\n bgl.components.licenceheldsince.initJourney(configuration);\r\n break;\r\n default:\r\n bgl.components.licenceheldsince.init(configuration);\r\n break;\r\n }\r\n bgl.common.datastore.extendCollectedData(form, {isFormDirty: true});\r\n }\r\n\r\n return {\r\n init: initComponent,\r\n onSuccess: onSuccess,\r\n storeUserChangesForTagManager: storeUserChangesForTagManager,\r\n onError: onError,\r\n initJourney: initJourney,\r\n };\r\n})();\r\n\r\nbgl.components.drivinglicencenumber = (function() {\r\n let configuration; let form; let continueButton; let hasPreselectedValues;\r\n\r\n function ctor(componentConfiguration) {\r\n configuration = componentConfiguration;\r\n\r\n form = $('[data-component-id=\\'' + configuration.Id + '\\'] form');\r\n\r\n continueButton = $(form.find('[type=\\'submit\\']'));\r\n\r\n bgl.common.validator.init(form);\r\n }\r\n\r\n function initComponent(componentConfiguration) {\r\n ctor(componentConfiguration);\r\n\r\n initObject();\r\n\r\n bgl.common.datastore.init(form);\r\n }\r\n\r\n function initJourney(componentConfiguration) {\r\n ctor(componentConfiguration);\r\n\r\n bgl.common.datastore.init(form, false, true);\r\n bgl.common.datastore.setupReadAndWrite();\r\n\r\n initObject();\r\n bgl.components.additionaldriver.initJourneyStep();\r\n }\r\n\r\n function initObject() {\r\n initValidation();\r\n\r\n initRadioButtons();\r\n }\r\n\r\n function initValidation() {\r\n form.off('submit').on('submit',\r\n function(e) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n\r\n if (bgl.common.validator.isFormValid($(this))) {\r\n $('#HasChanges').val(bgl.common.datastore.isDataChanged($(this)) === true);\r\n\r\n bgl.common.validator.submitForm($(this), configuration);\r\n }\r\n });\r\n }\r\n\r\n function initRadioButtons() {\r\n if (continueButton.hasClass('hide') === false) {\r\n hasPreselectedValues = true;\r\n } else {\r\n hasPreselectedValues = form.find('input[type=radio]:checked').length !== 0;\r\n\r\n if (hasPreselectedValues === true) {\r\n showContinueButton();\r\n setDrivingLicenceRowVisibility(\r\n form.find('input[type=\\'radio\\']:checked').val().toLowerCase() === 'true',\r\n );\r\n }\r\n }\r\n\r\n $('#has-driving-licence-number-yes').on('click',\r\n function() {\r\n setDrivingLicenceRowVisibility(true);\r\n\r\n hasPreselectedValues = true;\r\n showContinueButton();\r\n });\r\n\r\n $('#has-driving-licence-number-no').on('click',\r\n function(event) {\r\n setDrivingLicenceRowVisibility(false);\r\n\r\n if (hasPreselectedValues === false) {\r\n $(event.target).prop('checked', 'checked');\r\n continueHandler(event);\r\n }\r\n });\r\n\r\n form.find('label').on('keyup', bgl.common.keyboardAccessibility.generateClickOnKeypress);\r\n }\r\n\r\n function showContinueButton() {\r\n continueButton.removeClass('hide');\r\n }\r\n\r\n function setDrivingLicenceRowVisibility(needToShow) {\r\n const drivingLicenceRow = form.find('#driving-licence-number-row');\r\n\r\n if (needToShow === true) {\r\n drivingLicenceRow.removeClass('hide');\r\n } else {\r\n drivingLicenceRow.addClass('hide');\r\n }\r\n }\r\n\r\n function continueHandler(event) {\r\n event.preventDefault();\r\n\r\n if ($(event.target).is(':checked')) {\r\n $(event.target).trigger('change');\r\n }\r\n\r\n form.submit();\r\n }\r\n\r\n function onSuccess(configuration, data) {\r\n if (data.nextStepUrl) {\r\n if (data.hasChanges === true && data.hasDrivingLicenceNumber === false) {\r\n bgl.common.datastore.deleteFields(form, ['DrivingLicenceNumber']);\r\n }\r\n\r\n bgl.common.datastore.extendCollectedData(form, {isFormDirty: false});\r\n\r\n bgl.components.additionaldriver.nextStep(configuration, data, form);\r\n } else {\r\n if (data.hasChanges === true) {\r\n bgl.common.pubsub.emit('PollBasket');\r\n }\r\n\r\n bgl.common.datastore.removeSessionStorage(form);\r\n $('[data-dismiss=\"slide-panel\"]').click();\r\n }\r\n }\r\n\r\n function onError() {\r\n const journeyType = $('#JourneyType').val() - 0;\r\n\r\n switch (journeyType) {\r\n case 1:\r\n bgl.components.drivinglicencenumber.initJourney(configuration);\r\n break;\r\n default:\r\n bgl.components.drivinglicencenumber.init(configuration);\r\n break;\r\n }\r\n bgl.common.datastore.extendCollectedData(form, {isFormDirty: true});\r\n }\r\n\r\n return {\r\n init: initComponent,\r\n onSuccess: onSuccess,\r\n onError: onError,\r\n initJourney: initJourney,\r\n };\r\n})();\r\n\r\nbgl.components.declinedinsurance = (function() {\r\n let form;\r\n let configuration;\r\n let submitButton;\r\n\r\n function ctor(componentConfiguration) {\r\n configuration = componentConfiguration;\r\n form = $('#declined-insurance');\r\n submitButton = $(form.find('[type=\\'submit\\']'));\r\n\r\n bgl.common.validator.init(form);\r\n }\r\n\r\n function initComponent(componentConfiguration) {\r\n ctor(componentConfiguration);\r\n\r\n bgl.common.datastore.init(form);\r\n\r\n subscribeToEvents();\r\n }\r\n\r\n function initJourney(componentConfiguration) {\r\n ctor(componentConfiguration);\r\n\r\n bgl.common.datastore.init(form, false, true);\r\n bgl.common.datastore.setupReadAndWrite();\r\n\r\n subscribeToEvents();\r\n bgl.components.additionaldriver.initJourneyStep();\r\n }\r\n\r\n function subscribeToEvents() {\r\n if (submitButton.hasClass('hide') !== false) {\r\n if (form.find('input[type=radio]:checked').length === 0) {\r\n form.find('input[type=radio]')\r\n .off('keypress', generateClickOnKeypress)\r\n .on('keypress', generateClickOnKeypress)\r\n .off('click', continueHandler)\r\n .on('click', continueHandler);\r\n } else {\r\n submitButton.removeClass('hide');\r\n }\r\n }\r\n\r\n form.off('submit')\r\n .on('submit',\r\n function(event) {\r\n event.preventDefault();\r\n\r\n if (bgl.common.validator.isFormValid($(this))) {\r\n $('#HasChanges').val(bgl.common.datastore.isDataChanged($(this)) === true);\r\n\r\n bgl.common.validator.submitForm($(this), configuration);\r\n }\r\n });\r\n\r\n form.find('label').on('keyup', bgl.common.keyboardAccessibility.generateClickOnKeypress);\r\n }\r\n\r\n function generateClickOnKeypress(event) {\r\n const SPACE_KEYCODE = 32;\r\n const ENTER_KEYCODE = 13;\r\n const code = event.charCode || event.keyCode;\r\n\r\n if (code === ENTER_KEYCODE || code === SPACE_KEYCODE) {\r\n $(event.target).prop('checked', true);\r\n $(event.target).click();\r\n }\r\n }\r\n\r\n function continueHandler(event) {\r\n event.preventDefault();\r\n\r\n if ($(event.target).is(':checked')) {\r\n $(event.target).trigger('change');\r\n }\r\n\r\n form.submit();\r\n }\r\n\r\n function onSuccess(configuration, data) {\r\n if (data.nextStepUrl) {\r\n bgl.common.datastore.extendCollectedData(form, {isFormDirty: false});\r\n\r\n bgl.components.additionaldriver.nextStep(configuration, data, form);\r\n } else {\r\n if (data.hasChanges === true) {\r\n bgl.common.pubsub.emit('PollBasket');\r\n }\r\n bgl.common.datastore.removeSessionStorage(form);\r\n $('[data-dismiss=\"slide-panel\"]').click();\r\n }\r\n }\r\n\r\n function onError() {\r\n const journeyType = $('#JourneyType').val() - 0;\r\n\r\n switch (journeyType) {\r\n case 1:\r\n bgl.components.declinedinsurance.initJourney(configuration);\r\n break;\r\n default:\r\n bgl.components.declinedinsurance.init(configuration);\r\n break;\r\n }\r\n bgl.common.datastore.extendCollectedData(form, {isFormDirty: true});\r\n }\r\n\r\n return {\r\n init: initComponent,\r\n onSuccess: onSuccess,\r\n onError: onError,\r\n initJourney: initJourney,\r\n };\r\n})();\r\n\r\nbgl.components.homeowner = (function() {\r\n let form;\r\n let configuration;\r\n\r\n function initComponent(componentConfiguration) {\r\n configuration = componentConfiguration;\r\n form = $('#home-owner');\r\n\r\n bgl.common.validator.init(form);\r\n bgl.common.datastore.init(form);\r\n\r\n form.off('submit')\r\n .on('submit',\r\n function(event) {\r\n event.preventDefault();\r\n\r\n if (bgl.common.validator.isFormValid($(this))) {\r\n if (bgl.common.datastore.isDataChanged($(this)) === false) {\r\n bgl.common.datastore.removeSessionStorage($(this));\r\n $('[data-dismiss=\"slide-panel\"]').click();\r\n return;\r\n }\r\n\r\n bgl.common.validator.submitForm($(this), componentConfiguration);\r\n }\r\n });\r\n\r\n form.find('label').on('keyup', bgl.common.keyboardAccessibility.generateClickOnKeypress);\r\n }\r\n\r\n function onSuccess() {\r\n bgl.common.datastore.removeSessionStorage(form);\r\n bgl.common.pubsub.emit('PollBasket');\r\n $('[data-dismiss=\"slide-panel\"]').click();\r\n }\r\n\r\n function onError() {\r\n bgl.components.homeowner.init(configuration);\r\n bgl.common.datastore.extendCollectedData(form, {isFormDirty: true});\r\n }\r\n\r\n return {\r\n init: initComponent,\r\n onSuccess: onSuccess,\r\n onError: onError,\r\n };\r\n})();\r\n\r\nbgl.components.motorclaims = (function() {\r\n let configuration;\r\n let motorClaimList;\r\n let form;\r\n const HIDE_CLASS = 'hide';\r\n let haveMotorClaimsBeenChanged = false;\r\n let isJourneyType = false;\r\n let motorClaimItems;\r\n let hasPreselectedValues;\r\n\r\n function ctor(componentConfiguration) {\r\n configuration = componentConfiguration;\r\n isJourneyType = false;\r\n hasPreselectedValues = true;\r\n form = $('#' + componentConfiguration.Id + '-motor-claims-form');\r\n motorClaimList = $('#motor-claims-list');\r\n motorClaimItems = $('.step-form__summary-item');\r\n }\r\n\r\n function initComponent(componentConfiguration, hasChanges) {\r\n ctor(componentConfiguration);\r\n haveMotorClaimsBeenChanged = hasChanges !== undefined && hasChanges === true;\r\n subscribeForEvents();\r\n }\r\n\r\n function initJourney(componentConfiguration) {\r\n ctor(componentConfiguration);\r\n isJourneyType = true;\r\n bgl.components.additionaldriver.initJourneyStep();\r\n bgl.common.datastore.init(form, true, true);\r\n\r\n const noButton = $('#driver-has-claims-no');\r\n const isAnyClaims = motorClaimItems.length > 0;\r\n\r\n if (isAnyClaims === false) {\r\n hasPreselectedValues = false;\r\n const sessionStorageValue = readDataStoreValue(noButton);\r\n if (sessionStorageValue !== undefined) {\r\n noButton.prop('checked', true);\r\n hasPreselectedValues = true;\r\n }\r\n }\r\n\r\n bgl.common.datastore.setupWrite();\r\n subscribeForEvents();\r\n }\r\n\r\n function readDataStoreValue($element) {\r\n const journeyData = bgl.common.datastore.getData(form);\r\n const key = $element.attr('data-store');\r\n return journeyData[key];\r\n }\r\n\r\n function subscribeForEvents() {\r\n subscribeToEventShowMotorClaims();\r\n subscribeToEventDeleteMotorClaim();\r\n subscribeToEventRemoveAllMotorClaims();\r\n subscribeToEventAddMotorClaim();\r\n subscribeToEventDismissMotorClaimsPanel();\r\n form.find('label').on('keyup', bgl.common.keyboardAccessibility.generateClickOnKeypress);\r\n }\r\n\r\n function subscribeToEventDismissMotorClaimsPanel() {\r\n $(document).off('click.motorclaims', '[data-dismiss=\"slide-panel\"]')\r\n .on('click.motorclaims', '[data-dismiss=\"slide-panel\"]', function() {\r\n unSubscribeToEventDismissMotorClaimsPanel();\r\n dismissSlidePanelHandler(haveMotorClaimsBeenChanged);\r\n });\r\n\r\n $(document).off('keyup.motorclaims').on('keyup.motorclaims', function(event) {\r\n if (event.key === 'Escape') {\r\n unSubscribeToEventDismissMotorClaimsPanel();\r\n dismissSlidePanelHandler(haveMotorClaimsBeenChanged);\r\n }\r\n });\r\n\r\n $('.overlay').off('click.motorclaims').on('click.motorclaims', function() {\r\n unSubscribeToEventDismissMotorClaimsPanel();\r\n dismissSlidePanelHandler(haveMotorClaimsBeenChanged);\r\n });\r\n }\r\n\r\n function unSubscribeToEventDismissMotorClaimsPanel() {\r\n $(document).off('click.motorclaims', '[data-dismiss=\"slide-panel\"]');\r\n $(document).off('keyup.motorclaims');\r\n $('.overlay').off('click.motorclaims');\r\n }\r\n\r\n function dismissSlidePanelHandler(flag) {\r\n if (flag === true) {\r\n bgl.common.pubsub.emit('PollBasket');\r\n }\r\n }\r\n\r\n function subscribeToEventShowMotorClaims() {\r\n const radioButtons = $('input[type=\\'radio\\']');\r\n\r\n let clickFunction;\r\n\r\n if (hasPreselectedValues === true) {\r\n $('button[data-remove-all-url]').removeClass(HIDE_CLASS);\r\n\r\n clickFunction = function(key, item) {\r\n const button = $(item);\r\n\r\n button.off('change').on('change',\r\n function(event) {\r\n event.preventDefault();\r\n\r\n switch ($(this).val()) {\r\n case 'True':\r\n if (motorClaimItems.length === 0) {\r\n loadAddMotorClaims($(event.target).data('url'));\r\n } else {\r\n $('#driver-has-claims-no').attr('data-need-to-delete', 'false');\r\n if (motorClaimList.hasClass(HIDE_CLASS)) {\r\n motorClaimList.removeClass(HIDE_CLASS);\r\n }\r\n }\r\n break;\r\n case 'False':\r\n const isNeededToBeDelete = motorClaimItems.length !== 0;\r\n $('#driver-has-claims-no').attr('data-need-to-delete', isNeededToBeDelete);\r\n\r\n if (!motorClaimList.hasClass(HIDE_CLASS)) {\r\n motorClaimList.addClass(HIDE_CLASS);\r\n }\r\n break;\r\n }\r\n });\r\n };\r\n } else {\r\n clickFunction = function(key, item) {\r\n const button = $(item);\r\n\r\n button.on('change',\r\n function(event) {\r\n event.preventDefault();\r\n\r\n switch ($(this).val()) {\r\n case 'True':\r\n if (motorClaimItems.length === 0) {\r\n loadAddMotorClaims($(event.target).data('url'));\r\n }\r\n break;\r\n case 'False':\r\n if (typeof bgl.common.pubsub !== 'undefined') {\r\n bgl.common.pubsub.emit(\r\n 'fakeFormSubmit',\r\n form.attr('id') || form.attr('action') || 'unknown',\r\n );\r\n }\r\n redirectToNextJourneyStep();\r\n break;\r\n }\r\n });\r\n };\r\n }\r\n\r\n $.each(radioButtons, clickFunction);\r\n }\r\n\r\n function subscribeToEventAddMotorClaim() {\r\n $('#add-new-motor-claim').off('click').on('click',\r\n function(event) {\r\n event.preventDefault();\r\n const url = $(event.target).attr('href');\r\n loadAddMotorClaims(url);\r\n });\r\n }\r\n\r\n function subscribeToEventRemoveAllMotorClaims() {\r\n const removeAllButton = $('#remove-all-motor-claims');\r\n const noButton = $('#driver-has-claims-no');\r\n const doneButton = $('button[data-remove-all-url]');\r\n\r\n removeAllButton.off('click');\r\n removeAllButton.on('click',\r\n function(event) {\r\n event.preventDefault();\r\n noButton.click();\r\n });\r\n\r\n doneButton.off('click').on('click',\r\n function() {\r\n unSubscribeToEventDismissMotorClaimsPanel();\r\n const isNeededToDelete = noButton.attr('data-need-to-delete') === 'true';\r\n const isNoButtonChecked = noButton.is(':checked');\r\n const patchUrl = $(this).data('remove-all-url');\r\n const journeyType = $('#JourneyType').val();\r\n\r\n if (isNeededToDelete && isNoButtonChecked) {\r\n const dataToPost = $.param({\r\n __RequestVerificationToken: $('input[name=\\'__RequestVerificationToken\\']').val(),\r\n personId: $('#PersonId').val(),\r\n journeyType: journeyType,\r\n });\r\n\r\n $.ajax({\r\n url: patchUrl,\r\n type: 'POST',\r\n data: dataToPost,\r\n success: function(data, textStatus, request) {\r\n if (request.getResponseHeader('Content-Type') === 'application/json; charset=utf-8') {\r\n if (!data.isSuccess && data.errorRedirectUrl !== null) {\r\n bgl.common.utilities.errorRedirect(data.errorRedirectUrl);\r\n } else if (data.isSuccess) {\r\n (!isJourneyType) ?\r\n bgl.common.pubsub.emit('PollBasket') :\r\n redirectToNextJourneyStep(data);\r\n }\r\n }\r\n },\r\n });\r\n } else if (isJourneyType) {\r\n redirectToNextJourneyStep();\r\n } else if (haveMotorClaimsBeenChanged === true) {\r\n bgl.common.pubsub.emit('PollBasket');\r\n }\r\n\r\n if (!isJourneyType) {\r\n sessionStorage.removeItem('drivers');\r\n }\r\n });\r\n }\r\n\r\n function redirectToNextJourneyStep(data) {\r\n const dataToPost = data || {};\r\n dataToPost.nextStepUrl = form.data('next-step-url');\r\n bgl.common.datastore.extendCollectedData(form, {isFormDirty: false});\r\n bgl.components.additionaldriver.nextStep(configuration, dataToPost, form);\r\n }\r\n\r\n function subscribeToEventDeleteMotorClaim() {\r\n const deleteMotorClaimButtons = $('button[data-role=\\'delete\\']');\r\n\r\n $.each(deleteMotorClaimButtons,\r\n function(key, item) {\r\n $(item).off('click');\r\n $(item).on('click', function(event) {\r\n event.preventDefault();\r\n $(item).attr('disabled', 'disabled');\r\n\r\n const target = $(event.target);\r\n const link = target.is('button') ? target : target.parent();\r\n const token = $('input[name=\\'__RequestVerificationToken\\']').val();\r\n const patchUrl = link.attr('href');\r\n const personId = $('#PersonId').val();\r\n const journeyType = $('#JourneyType').val();\r\n\r\n const dataToPost = $.param({\r\n __RequestVerificationToken: token,\r\n motorclaimId: link.data('claim-id'),\r\n journeyType: journeyType,\r\n });\r\n\r\n const model = {\r\n componentConfiguration: configuration,\r\n personId: personId,\r\n getPersons: false,\r\n journeyType: journeyType,\r\n firstName: $('#FirstName').val(),\r\n };\r\n\r\n $.ajax({\r\n url: patchUrl,\r\n type: 'POST',\r\n data: dataToPost,\r\n success: function(data, textStatus, request) {\r\n if (request.getResponseHeader('Content-Type') === 'application/json; charset=utf-8') {\r\n if (!data.isSuccess) {\r\n bgl.common.utilities.errorRedirect(data.errorRedirectUrl);\r\n } else {\r\n bgl.common.loader.load(model,\r\n data.redirectUrl,\r\n 'SlidePanelContent',\r\n function() {\r\n if (isJourneyType === true) {\r\n if (motorClaimItems.length === 1) {\r\n const additionalDriver = JSON.parse(\r\n sessionStorage.getItem('AdditionalDriver'),\r\n );\r\n additionalDriver['HasClaims'] = 'False';\r\n sessionStorage.setItem(\r\n 'AdditionalDriver',\r\n JSON.stringify(additionalDriver),\r\n );\r\n }\r\n\r\n bgl.components.motorclaims.initJourney(configuration);\r\n } else {\r\n bgl.components.motorclaims.init(configuration, true);\r\n }\r\n });\r\n }\r\n }\r\n },\r\n });\r\n });\r\n });\r\n }\r\n\r\n function loadAddMotorClaims(url) {\r\n const model = {\r\n ComponentConfiguration: configuration,\r\n PersonId: $('#PersonId').val(),\r\n JourneyType: $('#JourneyType').val(),\r\n FirstName: $('#FirstName').val(),\r\n };\r\n\r\n bgl.common.loader.load(model,\r\n url,\r\n 'SlidePanelContent',\r\n function() {\r\n bgl.components.motorclaimbuilder.init(configuration);\r\n });\r\n }\r\n\r\n function storeDrivers(value) {\r\n sessionStorage.setItem('drivers', value);\r\n }\r\n\r\n return {\r\n init: initComponent,\r\n initJourney: initJourney,\r\n storeDrivers: storeDrivers,\r\n };\r\n})();\r\n\r\nbgl.components.motorclaimbuilder = (function() {\r\n let form;\r\n let configuration;\r\n const HIDE_CLASS = 'hide';\r\n\r\n function initComponent(componentConfiguration) {\r\n configuration = componentConfiguration;\r\n form = $('#add-motor-claim');\r\n\r\n if (form) {\r\n bgl.common.validator.init(form);\r\n bgl.common.validator.initNumberInputField($('#Claim-Amount'), 5);\r\n }\r\n\r\n subscribeForEvents();\r\n }\r\n\r\n function subscribeForEvents() {\r\n $('.step-form__button').off('click').on('click',\r\n function(event) {\r\n event.preventDefault();\r\n const link = $(event.target);\r\n selectNextStep(link);\r\n });\r\n\r\n $('.form-row__breadcrumb-link').off('click').on('click',\r\n function(event) {\r\n event.preventDefault();\r\n gotoBack($(event.target));\r\n });\r\n\r\n $('[data-step-type=\"previous-step\"]').off('click').on('click',\r\n function(event) {\r\n event.preventDefault();\r\n gotoBack($(event.target));\r\n });\r\n\r\n const claimAmountRow = $('#claim-amount-row');\r\n\r\n $('#claim-has-amount-no').on('click',\r\n function() {\r\n if (!claimAmountRow.hasClass(HIDE_CLASS)) {\r\n claimAmountRow.addClass(HIDE_CLASS);\r\n }\r\n });\r\n\r\n $('#claim-has-amount-yes').on('click',\r\n function() {\r\n if (claimAmountRow.hasClass(HIDE_CLASS)) {\r\n claimAmountRow.removeClass(HIDE_CLASS);\r\n }\r\n });\r\n\r\n if (form) {\r\n form.off('submit')\r\n .on('submit',\r\n function(event) {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n\r\n const submit = $(this).find(':submit');\r\n submit.attr('disabled', 'disabled');\r\n\r\n if (bgl.common.validator.validate(configuration, form) === false) {\r\n submit.removeAttr('disabled');\r\n }\r\n });\r\n }\r\n }\r\n\r\n function gotoBack(link) {\r\n selectNextStep(link, true);\r\n }\r\n\r\n function selectNextStep(link, isBack) {\r\n const nextStep = link.data('next-step');\r\n\r\n const currentStep = $('#motor-claim-tiles').data('current-step');\r\n\r\n if (typeof bgl.common.pubsub !== 'undefined') {\r\n bgl.common.pubsub.emit('fakeFormSubmit', currentStep);\r\n }\r\n\r\n const url = link.attr('href');\r\n\r\n if (currentStep === 'Year' && isBack === true) {\r\n loadMotorClaims(url);\r\n return;\r\n }\r\n\r\n let currentValue = {\r\n Code: link.data('code'),\r\n Value: $.trim(link.text()),\r\n BuilderStep: currentStep,\r\n };\r\n\r\n const model = {\r\n ComponentConfiguration: configuration,\r\n PersonId: $('#PersonId').val(),\r\n CurrentStep: nextStep,\r\n JourneyType: $('#JourneyType').val(),\r\n FirstName: $('#FirstName').val(),\r\n };\r\n\r\n if (nextStep === 'Driving') {\r\n model.BuilderTileItems = JSON.parse(sessionStorage.getItem('drivers'));\r\n }\r\n\r\n if (isBack) {\r\n currentValue = undefined;\r\n model.IsBackButtonClicked = true;\r\n }\r\n\r\n model.SelectedValues = getSelectedValues(currentValue);\r\n\r\n bgl.common.loader.load(model,\r\n url,\r\n 'SlidePanelContent',\r\n function() {\r\n bgl.components.motorclaimbuilder.init(configuration);\r\n });\r\n }\r\n\r\n function getSelectedValues(currentValue) {\r\n const result = [];\r\n\r\n const breadcrumbLinks = $('.form-row__breadcrumb-link') || [];\r\n\r\n $.each(breadcrumbLinks,\r\n function(idx, element) {\r\n const value = {\r\n Code: $(element).data('code'),\r\n Value: $.trim($(element).text()),\r\n BuilderStep: $(element).data('next-step'),\r\n };\r\n\r\n result.push(value);\r\n });\r\n\r\n if (currentValue !== undefined) {\r\n result.push(currentValue);\r\n }\r\n\r\n return result;\r\n }\r\n\r\n function onSuccess(configuration, data) {\r\n loadMotorClaims(data.redirectUrl);\r\n }\r\n\r\n function loadMotorClaims(url) {\r\n const model = {\r\n ComponentConfiguration: configuration,\r\n PersonId: $('#PersonId').val(),\r\n getPersons: false,\r\n JourneyType: $('#JourneyType').val(),\r\n FirstName: $('#FirstName').val(),\r\n };\r\n\r\n const initFunc = getInitByJourneyType((model.journeyType || model.JourneyType) - 0);\r\n\r\n bgl.common.loader.load(model,\r\n url,\r\n 'SlidePanelContent',\r\n function() {\r\n initFunc(configuration, true);\r\n });\r\n }\r\n\r\n function getInitByJourneyType(journeyType) {\r\n switch (journeyType) {\r\n case 1:\r\n return bgl.components.motorclaims.initJourney;\r\n default:\r\n return bgl.components.motorclaims.init;\r\n }\r\n }\r\n\r\n function onError() {\r\n bgl.components.motorclaimbuilder.init(configuration);\r\n }\r\n\r\n return {\r\n init: initComponent,\r\n onSuccess: onSuccess,\r\n onError: onError,\r\n };\r\n})();\r\n\r\nbgl.components.criminalconvictions = (function() {\r\n let form;\r\n let configuration;\r\n let criminalConvictionsContainer;\r\n let criminalConvictionAddAnotherButton;\r\n let criminalConvictionRemoveAllButton;\r\n let noButton;\r\n let yesButton;\r\n let fullYearMonthOptions;\r\n let monthDropdown;\r\n let yearDropdown;\r\n let isChanged = false;\r\n const HIDE_CLASS = 'hide';\r\n let journeyType = journeyTypes.singleEdit;\r\n let doneButton;\r\n\r\n function ctor(componentConfiguration, isChangedComponent) {\r\n configuration = componentConfiguration;\r\n isChanged = isChangedComponent;\r\n\r\n form = $('#criminal-convictions');\r\n criminalConvictionsContainer = $('#criminal-convictions-container');\r\n criminalConvictionAddAnotherButton = criminalConvictionsContainer.find('#criminal-conviction-add-another');\r\n criminalConvictionRemoveAllButton = criminalConvictionsContainer.find('#remove-all-criminal-convictions');\r\n\r\n doneButton = $('#criminal-conviction_done-button');\r\n noButton = $('#has-criminal-convictions-no');\r\n yesButton = $('#has-criminal-convictions-yes');\r\n\r\n bgl.common.validator.init(form, {ignore: ''});\r\n }\r\n\r\n function initComponent(componentConfiguration, isChangedComponent) {\r\n ctor(componentConfiguration, isChangedComponent);\r\n\r\n subscribeForEvents();\r\n }\r\n\r\n function initJourney(componentConfiguration, isChangedComponent) {\r\n ctor(componentConfiguration, isChangedComponent);\r\n\r\n bgl.components.additionaldriver.initJourneyStep();\r\n\r\n if (criminalConvictionsnCount() === 0) {\r\n const additionalDriver = bgl.common.datastore.getData(form);\r\n\r\n if (additionalDriver !== null && additionalDriver['HasCriminalConvictions'] === 'False') {\r\n noButton.prop('checked', true);\r\n }\r\n }\r\n\r\n bgl.common.datastore.init(form, true, true);\r\n bgl.common.datastore.setupWrite();\r\n\r\n subscribeForEvents();\r\n\r\n journeyType = journeyTypes.additionalDriver;\r\n }\r\n\r\n function generateClickOnKeypress(event) {\r\n const SPACE_KEYCODE = 32;\r\n const ENTER_KEYCODE = 13;\r\n const code = event.charCode || event.keyCode;\r\n\r\n if (code === ENTER_KEYCODE || code === SPACE_KEYCODE) {\r\n const forAttr = $(event.target).attr('for');\r\n\r\n if (forAttr !== null) {\r\n $('#' + forAttr).click();\r\n } else {\r\n $(this).click();\r\n }\r\n }\r\n }\r\n\r\n function subscribeToEventShowCriminalConvictions() {\r\n yesButton.off('click').on('click',\r\n function() {\r\n const hasCriminalConviction =\r\n criminalConvictionsContainer.find('.criminal-conviction-item').length > 0;\r\n if (!hasCriminalConviction) {\r\n criminalConvictionAddAnotherButton.click();\r\n } else if (criminalConvictionsContainer.hasClass(HIDE_CLASS)) {\r\n criminalConvictionsContainer.removeClass(HIDE_CLASS);\r\n }\r\n });\r\n\r\n noButton.off('click').on('click',\r\n function() {\r\n if (!criminalConvictionsContainer.hasClass(HIDE_CLASS)) {\r\n criminalConvictionsContainer.addClass(HIDE_CLASS);\r\n }\r\n });\r\n }\r\n\r\n function subscribeForEvents() {\r\n subscribeToEventShowCriminalConvictions();\r\n\r\n form.find('label').on('keyup', bgl.common.keyboardAccessibility.generateClickOnKeypress);\r\n\r\n $('button[data-role=\\'delete\\']').off('click').on('click',\r\n function(event) {\r\n event.preventDefault();\r\n $(this).attr('disabled', 'disabled');\r\n\r\n const target = $(event.target);\r\n\r\n const object = target.is('button') ? target : target.parent();\r\n\r\n const token = $('input[name=\\'__RequestVerificationToken\\']').val();\r\n const patchUrl = object.data('url');\r\n\r\n const dataToPost = {\r\n __RequestVerificationToken: token,\r\n motorCriminalConvictionId: object.data('value'),\r\n journeyType: journeyType,\r\n };\r\n\r\n const requestBodyData = {\r\n componentConfiguration: configuration,\r\n personId: $('#PersonId').val(),\r\n firstName: $('#FirstName').val(),\r\n journeyType: journeyType,\r\n };\r\n\r\n $.ajax({\r\n url: patchUrl,\r\n type: 'POST',\r\n data: dataToPost,\r\n success: function(data) {\r\n if (!data.isSuccess) {\r\n bgl.common.utilities.errorRedirect(data.errorRedirectUrl);\r\n } else {\r\n isChanged = true;\r\n bgl.common.loader.load(requestBodyData,\r\n data.redirectUrl,\r\n 'SlidePanelContent',\r\n function() {\r\n switch (journeyType) {\r\n case 1:\r\n if (criminalConvictionsnCount() === 0) {\r\n const additionalDriver = JSON.parse(\r\n sessionStorage.getItem('AdditionalDriver'),\r\n );\r\n additionalDriver['HasCriminalConvictions'] = 'False';\r\n sessionStorage.setItem('AdditionalDriver',\r\n JSON.stringify(additionalDriver));\r\n }\r\n bgl.components.criminalconvictions.initJourney(configuration);\r\n break;\r\n default:\r\n bgl.components.criminalconvictions.init(configuration, true);\r\n break;\r\n }\r\n });\r\n }\r\n },\r\n });\r\n }).off('keypress').on('keypress', generateClickOnKeypress);\r\n\r\n form.off('submit')\r\n .on('submit',\r\n function(event) {\r\n event.preventDefault();\r\n\r\n isChanged = true;\r\n\r\n bgl.common.validator.validate(configuration, form);\r\n });\r\n\r\n criminalConvictionAddAnotherButton.off('click').on('click', function(event) {\r\n event.preventDefault();\r\n\r\n bgl.components.criminalconvictions.goToWizardStep(1);\r\n }).off('keypress').on('keypress', generateClickOnKeypress);\r\n\r\n criminalConvictionRemoveAllButton.off('click').on('click', function(event) {\r\n event.preventDefault();\r\n noButton.click();\r\n }).off('keypress').on('keypress', generateClickOnKeypress);\r\n\r\n doneButton.off('click').on('click',\r\n function() {\r\n doneButton.attr('disabled', 'disabled');\r\n if (!bgl.common.validator.isFormValid(form)) {\r\n doneButton.removeAttr('disabled');\r\n return;\r\n }\r\n\r\n unSubscribeToEventDismissCriminalConvictionsPanel();\r\n const isNoButtonChecked = noButton.is(':checked');\r\n const hasCriminalConviction = criminalConvictionsContainer.find('.criminal-conviction-item').length > 0;\r\n\r\n if (isNoButtonChecked && hasCriminalConviction) {\r\n isChanged = true;\r\n\r\n bgl.common.validator.validate(configuration, form);\r\n } else if (bgl.components.additionaldriver.isAdditionalDriverJourney()) {\r\n if ((isNoButtonChecked && !hasCriminalConviction) || yesButton.is(':checked')) {\r\n isChanged = true;\r\n bgl.components.additionaldriver.createDriver(\r\n configuration,\r\n $(this).data('createDriverUrl'),\r\n form,\r\n );\r\n }\r\n } else {\r\n $('[data-dismiss=\"slide-panel\"]').click();\r\n dismissSlidePanelHandler(isChanged);\r\n }\r\n }).off('keypress').on('keypress', generateClickOnKeypress);\r\n\r\n subscribeToEventDismissCriminalConvictionsPanel();\r\n }\r\n\r\n function subscribeToEventDismissCriminalConvictionsPanel() {\r\n $(document).off('click.criminalconvictions', '[data-dismiss=\"slide-panel\"]')\r\n .on('click.criminalconvictions', '[data-dismiss=\"slide-panel\"]', function() {\r\n unSubscribeToEventDismissCriminalConvictionsPanel();\r\n dismissSlidePanelHandler(isChanged);\r\n });\r\n\r\n $(document).off('keyup.criminalconvictions').on('keyup.criminalconvictions', function(event) {\r\n if (event.key === 'Escape') {\r\n unSubscribeToEventDismissCriminalConvictionsPanel();\r\n dismissSlidePanelHandler(isChanged);\r\n }\r\n });\r\n\r\n $('.overlay').off('click.criminalconvictions').on('click.criminalconvictions', function() {\r\n unSubscribeToEventDismissCriminalConvictionsPanel();\r\n dismissSlidePanelHandler(isChanged);\r\n });\r\n }\r\n\r\n function unSubscribeToEventDismissCriminalConvictionsPanel() {\r\n $(document).off('click.criminalconvictions', '[data-dismiss=\"slide-panel\"]');\r\n $(document).off('keyup.criminalconvictions');\r\n $('.overlay').off('click.criminalconvictions');\r\n }\r\n\r\n function dismissSlidePanelHandler(flag) {\r\n if (flag === true) {\r\n bgl.common.pubsub.emit('PollBasket');\r\n }\r\n }\r\n\r\n function subscribeForEventsWizardStep1() {\r\n const formstep1 = $('#criminal-convictions-addanother-step1');\r\n bgl.common.validator.init(formstep1);\r\n\r\n formstep1.off('submit').on('submit', function(event) {\r\n event.preventDefault();\r\n\r\n $('#MonthText').val($('#Criminal-Conviction-Month option:selected').text());\r\n\r\n bgl.common.validator.validate(configuration, formstep1);\r\n });\r\n\r\n monthDropdown = formstep1.find('#Criminal-Conviction-Month');\r\n yearDropdown = formstep1.find('#Criminal-Conviction-Year');\r\n\r\n fullYearMonthOptions = monthDropdown.find('option');\r\n\r\n yearDropdown.on('change', updateMonthDropdown);\r\n\r\n $('a[data-step-type=\\'previous-step\\']').one('click', function(event) {\r\n event.preventDefault();\r\n\r\n $(this).hide();\r\n\r\n const backUrl = $(this).attr('href');\r\n const personId = $('#PersonId').val();\r\n\r\n const model = {\r\n componentConfiguration: configuration,\r\n personId: personId,\r\n firstName: $('#FirstName').val(),\r\n journeyType: journeyType,\r\n };\r\n\r\n switch (model.journeyType) {\r\n case 1:\r\n bgl.common.loader.load(model,\r\n backUrl,\r\n 'SlidePanelContent',\r\n function() {\r\n bgl.components.criminalconvictions.initJourney(configuration);\r\n });\r\n break;\r\n default:\r\n bgl.common.loader.load(model,\r\n backUrl,\r\n 'SlidePanelContent',\r\n function() {\r\n bgl.components.criminalconvictions.init(configuration, true);\r\n });\r\n break;\r\n }\r\n });\r\n }\r\n\r\n function subscribeForEventsWizardStep2() {\r\n const formStep2 = $('#criminal-convictions-addanother-step2');\r\n\r\n bgl.common.validator.init(formStep2);\r\n\r\n formStep2.off('submit').on('submit', function(event) {\r\n event.preventDefault();\r\n\r\n $('#ConvictionsTypeText').val($('#Conviction-type option:selected').text());\r\n\r\n bgl.common.validator.validate(configuration, formStep2);\r\n });\r\n\r\n subscribeBreadcrumbs();\r\n }\r\n\r\n function subscribeForEventsWizardStep3() {\r\n const formStep3 = $('#criminal-convictions-addanother-step3');\r\n\r\n bgl.common.validator.init(formStep3);\r\n\r\n formStep3.off('submit').on('submit', function(event) {\r\n event.preventDefault();\r\n const submit = $(this).find(':submit');\r\n submit.attr('disabled', 'disabled');\r\n\r\n if (bgl.common.validator.validate(configuration, formStep3) === false) {\r\n submit.removeAttr('disabled');\r\n }\r\n });\r\n\r\n subscribeBreadcrumbs();\r\n }\r\n\r\n function subscribeBreadcrumbs() {\r\n $('.criminal-conviction-back-to-first-step').off('click').on('click', function(event) {\r\n event.preventDefault();\r\n\r\n bgl.components.criminalconvictions.goToWizardStep(1);\r\n });\r\n\r\n $('.criminal-conviction-back-to-second-step').off('click').on('click', function(event) {\r\n event.preventDefault();\r\n\r\n bgl.components.criminalconvictions.goToWizardStep(\r\n 2,\r\n {\r\n Year: $('#Year').val(),\r\n Month: $('#Month').val(),\r\n MonthText: $('#MonthText').val(),\r\n },\r\n );\r\n });\r\n }\r\n\r\n function goToWizardStep(step, data) {\r\n const href = $('#UrlToWizard').val();\r\n\r\n const defaultData = getDefaultData(step);\r\n\r\n if (data !== null) {\r\n $.extend(defaultData, data);\r\n }\r\n\r\n isChanged = true;\r\n\r\n $.ajax({\r\n url: href,\r\n type: 'POST',\r\n contentType: 'application/json',\r\n data: JSON.stringify(defaultData),\r\n success: function(data) {\r\n if (typeof data.isSuccess === 'undefined') {\r\n bgl.components.criminalconvictions.updateSlidePanel(data);\r\n } else if (data.isSuccess === true) {\r\n bgl.components.criminalconvictions.updateSlidePanel(data.html);\r\n } else {\r\n bgl.common.utilities.errorRedirect(data.errorRedirectUrl);\r\n }\r\n\r\n switch (step) {\r\n case 1:\r\n bgl.components.criminalconvictions.subscribeForEventsWizardStep1();\r\n break;\r\n\r\n case 2:\r\n bgl.components.criminalconvictions.subscribeForEventsWizardStep2();\r\n break;\r\n\r\n case 3:\r\n bgl.components.criminalconvictions.subscribeForEventsWizardStep3();\r\n break;\r\n }\r\n },\r\n });\r\n }\r\n\r\n function getDefaultData(step) {\r\n const personId = $('#PersonId').val();\r\n const firstName = $('#FirstName').val();\r\n\r\n let additionalDriverData = bgl.components.additionaldriver.isAdditionalDriverJourney() ?\r\n JSON.parse(sessionStorage.getItem('AdditionalDriver')) :\r\n {};\r\n\r\n additionalDriverData = $.extend(additionalDriverData,\r\n {ComponentConfiguration: configuration, PersonId: personId, CriminalConvictionStep: step});\r\n\r\n if (firstName) {\r\n additionalDriverData.FirstName = firstName;\r\n }\r\n\r\n return additionalDriverData;\r\n }\r\n\r\n function onSuccess(configuration, data) {\r\n unSubscribeToEventDismissCriminalConvictionsPanel();\r\n if (data.nextStepUrl) {\r\n bgl.common.datastore.extendCollectedData(form, {isFormDirty: false});\r\n\r\n bgl.components.additionaldriver.createDriver(configuration, data.nextStepUrl, form);\r\n } else if (configuration.IsService) {\r\n if (configuration.IsInitialChange) {\r\n const params = {\r\n callback: function() {\r\n bgl.common.utilities.redirectToUrl(configuration.NextStepUrl);\r\n },\r\n };\r\n bgl.common.pubsub.emit('PollBasket', params);\r\n } else {\r\n bgl.common.pubsub.emit('PollBasket');\r\n }\r\n } else if (configuration.HasPageRefresh) {\r\n bgl.common.utilities.refreshPage();\r\n } else {\r\n if (isChanged) {\r\n bgl.common.pubsub.emit('PollBasket');\r\n }\r\n $('[data-dismiss=\"slide-panel\"]').click();\r\n }\r\n }\r\n\r\n function onError() {\r\n const journeyType = $('#JourneyType').val() - 0;\r\n\r\n switch (journeyType) {\r\n case 1:\r\n bgl.components.criminalconvictions.initJourney(configuration);\r\n break;\r\n default:\r\n bgl.components.criminalconvictions.init(configuration);\r\n break;\r\n }\r\n }\r\n\r\n function updateMonthDropdown() {\r\n const months = monthDropdown;\r\n const selectedMonthValue = months.val();\r\n const currentYear = $('#CurrentYear').val() * 1;\r\n const currentMonth = $('#CurrentMonth').val() * 1;\r\n const selectedYear = yearDropdown.val() * 1;\r\n const personBirthYear = $('#PersonBirthYear').val() * 1;\r\n const personBirthMonth = $('#PersonBirthMonth').val() * 1;\r\n\r\n if (selectedYear === currentYear) {\r\n months.html(fullYearMonthOptions.slice(0, currentMonth + 1));\r\n } else if (selectedYear === personBirthYear) {\r\n // merge months after birth month and please select...\r\n const dropdownOptions = fullYearMonthOptions.slice(personBirthMonth + 1);\r\n months.html($.merge([fullYearMonthOptions[0]], dropdownOptions));\r\n } else {\r\n months.html(fullYearMonthOptions);\r\n }\r\n months.val(selectedMonthValue);\r\n\r\n // select first value if value is not selected\r\n if (!months.val()) {\r\n months.find('option:eq(0)').prop('selected', true);\r\n }\r\n }\r\n\r\n function criminalconvictionsDateOnSuccess(configuration, data) {\r\n bgl.components.criminalconvictions.updateSlidePanel(data.html);\r\n bgl.components.criminalconvictions.subscribeForEventsWizardStep2();\r\n }\r\n\r\n function criminalconvictionsDateOnError() {\r\n bgl.components.criminalconvictions.subscribeForEventsWizardStep1();\r\n }\r\n\r\n function criminalconvictionsConvictionTypeOnSuccess(configuration, data) {\r\n bgl.components.criminalconvictions.updateSlidePanel(data.html);\r\n bgl.components.criminalconvictions.subscribeForEventsWizardStep3();\r\n }\r\n\r\n function criminalconvictionsConvictionTypeOnError() {\r\n bgl.components.criminalconvictions.subscribeForEventsWizardStep2();\r\n }\r\n\r\n function criminalconvictionsSentenceTypeOnSuccess(configuration, data) {\r\n bgl.components.criminalconvictions.updateSlidePanel(data.html);\r\n if (bgl.components.additionaldriver.isAdditionalDriverJourney()) {\r\n bgl.components.additionaldriver.initJourneyStep();\r\n }\r\n\r\n bgl.components.criminalconvictions.init(configuration, true);\r\n }\r\n\r\n function criminalconvictionsSentenceTypeOnError() {\r\n bgl.components.criminalconvictions.subscribeForEventsWizardStep3();\r\n }\r\n\r\n function updateSlidePanel(html) {\r\n $('#SlidePanelContent').html(html);\r\n }\r\n\r\n function criminalConvictionsnCount() {\r\n return $('#Criminal-Convictions-List .step-form__summary-item').length;\r\n }\r\n\r\n return {\r\n init: initComponent,\r\n initJourney: initJourney,\r\n onSuccess: onSuccess,\r\n onError: onError,\r\n goToWizardStep: goToWizardStep,\r\n updateSlidePanel: updateSlidePanel,\r\n criminalconvictionsDateOnSuccess: criminalconvictionsDateOnSuccess,\r\n criminalconvictionsDateOnError: criminalconvictionsDateOnError,\r\n criminalconvictionsConvictionTypeOnError: criminalconvictionsConvictionTypeOnError,\r\n criminalconvictionsConvictionTypeOnSuccess: criminalconvictionsConvictionTypeOnSuccess,\r\n criminalconvictionsSentenceTypeOnSuccess: criminalconvictionsSentenceTypeOnSuccess,\r\n criminalconvictionsSentenceTypeOnError: criminalconvictionsSentenceTypeOnError,\r\n subscribeForEventsWizardStep1: subscribeForEventsWizardStep1,\r\n subscribeForEventsWizardStep2: subscribeForEventsWizardStep2,\r\n subscribeForEventsWizardStep3: subscribeForEventsWizardStep3,\r\n };\r\n})();\r\n\r\nbgl.components.medicalcondition = (function() {\r\n let form;\r\n let configuration;\r\n const containerId = 'SlidePanelContent';\r\n let submitButton;\r\n\r\n function ctor(componentConfiguration) {\r\n configuration = componentConfiguration;\r\n form = $('#medical-condition');\r\n submitButton = $(form.find('[type=\\'submit\\']'));\r\n\r\n bgl.common.validator.init(form, configuration);\r\n }\r\n\r\n function initComponent(componentConfiguration, resetDirtyFlag) {\r\n ctor(componentConfiguration);\r\n\r\n initObject();\r\n\r\n bgl.common.datastore.init(form, resetDirtyFlag);\r\n }\r\n\r\n function initJourney(componentConfiguration) {\r\n ctor(componentConfiguration);\r\n\r\n bgl.common.datastore.init(form, false, true);\r\n bgl.common.datastore.setupReadAndWrite();\r\n\r\n initObject();\r\n\r\n bgl.components.additionaldriver.initJourneyStep();\r\n }\r\n\r\n function initObject() {\r\n subscribeForEvents();\r\n }\r\n\r\n function subscribeForEvents() {\r\n if (submitButton.hasClass('hide') === false) {\r\n $('#medical-yes').off('click')\r\n .on('click',\r\n function() {\r\n submitButton.text('Continue');\r\n });\r\n\r\n $('#medical-no').off('click')\r\n .on('click',\r\n function() {\r\n const journeyType = $('#JourneyType').val() - 0;\r\n\r\n if (journeyType === 0) {\r\n submitButton.text('Done');\r\n }\r\n });\r\n } else {\r\n if (form.find('input[type=radio]:checked').length === 0) {\r\n form.find('input[type=radio]')\r\n .off('keypress', generateClickOnKeypress)\r\n .on('keypress', generateClickOnKeypress)\r\n .off('click', continueHandler)\r\n .on('click', continueHandler);\r\n } else {\r\n submitButton.removeClass('hide');\r\n }\r\n }\r\n\r\n form.off('submit')\r\n .on('submit',\r\n function(event) {\r\n event.preventDefault();\r\n\r\n if (bgl.common.validator.isFormValid($(this))) {\r\n $('#HasChanges').val(bgl.common.datastore.isDataChanged($(this)) === true);\r\n\r\n bgl.common.validator.submitForm($(this), configuration);\r\n }\r\n });\r\n\r\n form.find('label').on('keyup', bgl.common.keyboardAccessibility.generateClickOnKeypress);\r\n }\r\n\r\n function generateClickOnKeypress(event) {\r\n const SPACE_KEYCODE = 32;\r\n const ENTER_KEYCODE = 13;\r\n const code = event.charCode || event.keyCode;\r\n\r\n if (code === ENTER_KEYCODE || code === SPACE_KEYCODE) {\r\n $(event.target).prop('checked', true);\r\n $(event.target).click();\r\n }\r\n }\r\n\r\n function continueHandler(event) {\r\n event.preventDefault();\r\n\r\n if ($(event.target).is(':checked')) {\r\n $(event.target).trigger('change');\r\n }\r\n\r\n form.submit();\r\n }\r\n\r\n function onSuccess(configuration, data) {\r\n if (data.content !== undefined) {\r\n const callbackFunc =\r\n bgl.components.medicalconditiondvlanotified.getInitByJourneyType($('#JourneyType').val() - 0);\r\n\r\n bgl.common.loader.load(data.content,\r\n data.componentUrl,\r\n containerId,\r\n function() {\r\n callbackFunc(configuration, false);\r\n });\r\n } else if (data.nextStepUrl) {\r\n bgl.common.datastore.deleteFields(form, ['MedicalConditionDvlaNotified']);\r\n bgl.common.datastore.extendCollectedData(form, {isFormDirty: false});\r\n\r\n bgl.components.additionaldriver.nextStep(configuration, data, form);\r\n } else {\r\n if (data.hasChanges === true) {\r\n bgl.common.pubsub.emit('PollBasket');\r\n }\r\n\r\n bgl.common.datastore.removeSessionStorage(form);\r\n $('[data-dismiss=\"slide-panel\"]').click();\r\n }\r\n }\r\n\r\n function onError() {\r\n const initFunc = getInitByJourneyType($('#JourneyType').val() - 0);\r\n\r\n initFunc(configuration);\r\n bgl.common.datastore.extendCollectedData(form, {isFormDirty: true});\r\n }\r\n\r\n function getInitByJourneyType(journeyType) {\r\n switch (journeyType) {\r\n case 1:\r\n return bgl.components.medicalcondition.initJourney;\r\n default:\r\n return bgl.components.medicalcondition.init;\r\n }\r\n }\r\n\r\n return {\r\n init: initComponent,\r\n initJourney: initJourney,\r\n onSuccess: onSuccess,\r\n onError: onError,\r\n getInitByJourneyType: getInitByJourneyType,\r\n };\r\n})();\r\n\r\nbgl.components.medicalconditiondvlanotified = (function() {\r\n let form;\r\n let configuration;\r\n const containerId = 'SlidePanelContent';\r\n let continueButton;\r\n\r\n function ctor(componentConfiguration) {\r\n configuration = componentConfiguration;\r\n form = $('#medical-condition-dvla-notified');\r\n continueButton = $(form.find('[type=\\'submit\\']'));\r\n\r\n bgl.common.validator.init(form);\r\n }\r\n\r\n function initComponent(componentConfiguration) {\r\n ctor(componentConfiguration);\r\n\r\n bgl.common.datastore.init(form);\r\n\r\n subscribeForEvents();\r\n }\r\n\r\n function initJourney(componentConfiguration) {\r\n ctor(componentConfiguration);\r\n\r\n bgl.common.datastore.init(form, false, true);\r\n bgl.common.datastore.setupReadAndWrite();\r\n\r\n subscribeForEvents();\r\n bgl.components.additionaldriver.initJourneyStep();\r\n }\r\n\r\n function subscribeForEvents() {\r\n if (form.find('input[type=radio]:checked').length === 0 || continueButton.hasClass('hide') === false) {\r\n form.find('input[type=radio]')\r\n .off('keypress', generateClickOnKeypress)\r\n .on('keypress', generateClickOnKeypress)\r\n .off('click', continueHandler)\r\n .on('click', continueHandler);\r\n } else {\r\n continueButton.removeClass('hide');\r\n }\r\n\r\n $('#' + configuration.Id + '-back-button')\r\n .off('click')\r\n .on('click',\r\n function(event) {\r\n event.preventDefault();\r\n\r\n const url = $(this).attr('href');\r\n\r\n const journeyType = $('#JourneyType').val() - 0;\r\n\r\n const model = {\r\n componentConfiguration: configuration,\r\n personId: $('#PersonId').val(),\r\n medicalCondition: true,\r\n firstName: $('#FirstName').val(),\r\n journeyType: journeyType,\r\n licence: $('#Licence').val(),\r\n };\r\n\r\n const callbackFunc = bgl.components.medicalcondition.getInitByJourneyType(journeyType);\r\n\r\n bgl.common.loader.load(model,\r\n url,\r\n containerId,\r\n function() {\r\n callbackFunc(configuration, false);\r\n });\r\n });\r\n\r\n form.off('submit')\r\n .on('submit',\r\n function(event) {\r\n event.preventDefault();\r\n\r\n if (bgl.common.validator.isFormValid($(this))) {\r\n $('#HasChanges').val(bgl.common.datastore.isDataChanged($(this)) === true);\r\n\r\n bgl.common.validator.submitForm($(this), configuration);\r\n }\r\n });\r\n\r\n form.find('label').on('keyup', bgl.common.keyboardAccessibility.generateClickOnKeypress);\r\n }\r\n\r\n function generateClickOnKeypress(event) {\r\n const SPACE_KEYCODE = 32;\r\n const ENTER_KEYCODE = 13;\r\n const code = event.charCode || event.keyCode;\r\n\r\n if (code === ENTER_KEYCODE || code === SPACE_KEYCODE) {\r\n $(event.target).prop('checked', true);\r\n $(event.target).click();\r\n }\r\n }\r\n\r\n function continueHandler(event) {\r\n event.preventDefault();\r\n\r\n if ($(event.target).is(':checked')) {\r\n $(event.target).trigger('change');\r\n }\r\n\r\n form.submit();\r\n }\r\n\r\n function onSuccess(configuration, data) {\r\n if (data.nextStepUrl) {\r\n bgl.common.datastore.extendCollectedData(form, {isFormDirty: false});\r\n\r\n bgl.components.additionaldriver.nextStep(configuration, data, form);\r\n } else {\r\n if (data.hasChanges === true) {\r\n bgl.common.pubsub.emit('PollBasket');\r\n }\r\n bgl.common.datastore.removeSessionStorage(form);\r\n $('[data-dismiss=\"slide-panel\"]').click();\r\n }\r\n }\r\n\r\n function onError() {\r\n const initFunc = getInitByJourneyType($('#JourneyType').val() - 0);\r\n\r\n initFunc(configuration);\r\n bgl.common.datastore.extendCollectedData(form, {isFormDirty: true});\r\n }\r\n\r\n function getInitByJourneyType(journeyType) {\r\n switch (journeyType) {\r\n case 1:\r\n return bgl.components.medicalconditiondvlanotified.initJourney;\r\n default:\r\n return bgl.components.medicalconditiondvlanotified.init;\r\n }\r\n }\r\n\r\n return {\r\n init: initComponent,\r\n initJourney: initJourney,\r\n onSuccess: onSuccess,\r\n onError: onError,\r\n getInitByJourneyType: getInitByJourneyType,\r\n };\r\n})();\r\n\r\nbgl.components.contactinformation = (function() {\r\n let configuration;\r\n let form;\r\n\r\n function initComponent(componentConfiguration) {\r\n configuration = componentConfiguration;\r\n form = $('[data-component-id=\"' + configuration.Id + '\"] form');\r\n\r\n bgl.common.validator.init(form);\r\n bgl.common.datastore.init(form);\r\n\r\n form.off('submit')\r\n .on('submit',\r\n function(event) {\r\n event.preventDefault();\r\n\r\n if (bgl.common.validator.isFormValid($(this))) {\r\n if (bgl.common.datastore.isDataChanged($(this)) === false) {\r\n bgl.common.datastore.removeSessionStorage($(this));\r\n $('[data-dismiss=\"slide-panel\"]').click();\r\n return;\r\n }\r\n bgl.common.validator.submitForm($(this), configuration);\r\n }\r\n });\r\n }\r\n\r\n function onSuccess() {\r\n bgl.common.datastore.removeSessionStorage(form);\r\n bgl.common.pubsub.emit('PollBasket', {hideNotification: true});\r\n $('[data-dismiss=\"slide-panel\"]').click();\r\n }\r\n\r\n function onError() {\r\n bgl.components.contactinformation.init(configuration);\r\n bgl.common.datastore.extendCollectedData(form, {isFormDirty: true});\r\n }\r\n\r\n return {\r\n init: initComponent,\r\n onSuccess: onSuccess,\r\n onError: onError,\r\n };\r\n})();\r\n\r\nbgl.components.contactinformationpolicy = (function() {\r\n let configuration;\r\n let form;\r\n\r\n function initComponent(componentConfiguration) {\r\n configuration = componentConfiguration;\r\n form = $('[data-component-id=\"' + configuration.Id + '\"] form');\r\n\r\n bgl.common.validator.init(form);\r\n bgl.common.datastore.init(form);\r\n\r\n form.off('submit')\r\n .on('submit',\r\n function(event) {\r\n event.preventDefault();\r\n\r\n if (bgl.common.validator.isFormValid($(this))) {\r\n if (bgl.common.datastore.isDataChanged($(this)) === false) {\r\n bgl.common.datastore.removeSessionStorage($(this));\r\n bgl.common.contentpanel.hideSlidePanel();\r\n return;\r\n }\r\n\r\n bgl.common.validator.submitForm($(this), configuration);\r\n }\r\n });\r\n }\r\n\r\n function onSuccess() {\r\n bgl.common.datastore.removeSessionStorage(form);\r\n bgl.common.pubsub.emit('PollBasket');\r\n window.location.reload(true);\r\n }\r\n\r\n function onError() {\r\n bgl.components.contactinformationpolicy.init(configuration);\r\n bgl.common.datastore.extendCollectedData(form, {isFormDirty: true});\r\n }\r\n\r\n\r\n return {\r\n init: initComponent,\r\n onSuccess: onSuccess,\r\n onError: onError,\r\n };\r\n})();\r\n\r\nbgl.components.motorconvictions = (function() {\r\n let configuration;\r\n let motorConvictionList;\r\n let form;\r\n let noButton;\r\n const HIDE_CLASS = 'hide';\r\n let journeyType = 0;\r\n let haveMotorConvictionsBeenChanged = false;\r\n let hasPreselectedValues;\r\n const haveMotorConvictionsKey = 'HaveMotorConvictions';\r\n\r\n function ctor(componentConfiguration, hasChanges) {\r\n configuration = componentConfiguration;\r\n hasPreselectedValues = true;\r\n noButton = $('#motor-convictions-radio-no');\r\n form = $('div[id=' + configuration.Id + '-motor-convictions] form');\r\n motorConvictionList = $('#motor-convictions-list');\r\n haveMotorConvictionsBeenChanged = hasChanges !== undefined && hasChanges === true;\r\n }\r\n\r\n function initComponent(componentConfiguration, hasChanges) {\r\n ctor(componentConfiguration, hasChanges);\r\n subscribeForEvents();\r\n }\r\n\r\n function initJourney(componentConfiguration, hasChanges) {\r\n journeyType = 1;\r\n ctor(componentConfiguration, hasChanges);\r\n bgl.common.datastore.init(form, true, true);\r\n bgl.components.additionaldriver.initJourneyStep();\r\n\r\n if (getMotorConvictionCount() === 0) {\r\n hasPreselectedValues = false;\r\n const additionalDriver = bgl.common.datastore.getData(form);\r\n if (additionalDriver !== null && additionalDriver[haveMotorConvictionsKey] === 'False') {\r\n noButton.prop('checked', true);\r\n hasPreselectedValues = true;\r\n }\r\n }\r\n\r\n bgl.common.datastore.setupWrite();\r\n subscribeForEvents();\r\n }\r\n\r\n function subscribeForEvents() {\r\n subscribeToEventShowMotorConvictions();\r\n subscribeToEventDeleteMotorConviction();\r\n subscribeToEventRemoveAllMotorConvictions();\r\n subscribeToEventAddMotorConviction();\r\n subscribeToEventDismissMotorConvictionPanel();\r\n subscribeToEventDoneButtonMotorConvictions();\r\n form.find('label').on('keyup', bgl.common.keyboardAccessibility.generateClickOnKeypress);\r\n }\r\n\r\n function subscribeToEventShowMotorConvictions() {\r\n const radioButtons = $('input[type=\\'radio\\']');\r\n let clickFunction;\r\n\r\n if (hasPreselectedValues === true) {\r\n $('button[data-remove-all-url]').removeClass(HIDE_CLASS);\r\n\r\n clickFunction = function(key, item) {\r\n const button = $(item);\r\n button.off('change').on('change',\r\n function(event) {\r\n event.preventDefault();\r\n const itemCount = getMotorConvictionCount();\r\n\r\n switch ($(this).val()) {\r\n case 'True':\r\n if (itemCount === 0) {\r\n loadAddMotorConvictions($(event.target).data('url'));\r\n } else {\r\n $('#motor-convictions-radio-no').attr('data-need-to-delete', 'false');\r\n if (motorConvictionList.hasClass(HIDE_CLASS)) {\r\n motorConvictionList.removeClass(HIDE_CLASS);\r\n }\r\n }\r\n break;\r\n case 'False':\r\n const isNeedToBeDeleted = itemCount !== 0;\r\n $('#motor-convictions-radio-no').attr('data-need-to-delete', isNeedToBeDeleted);\r\n\r\n if (!motorConvictionList.hasClass(HIDE_CLASS)) {\r\n motorConvictionList.addClass(HIDE_CLASS);\r\n }\r\n break;\r\n }\r\n });\r\n };\r\n } else {\r\n clickFunction = function(key, item) {\r\n const button = $(item);\r\n button.on('change',\r\n function(event) {\r\n event.preventDefault();\r\n switch ($(this).val()) {\r\n case 'True':\r\n if (getMotorConvictionCount() === 0) {\r\n loadAddMotorConvictions($(event.target).data('url'));\r\n }\r\n break;\r\n case 'False':\r\n if (typeof bgl.common.pubsub !== 'undefined') {\r\n bgl.common.pubsub.emit(\r\n 'fakeFormSubmit',\r\n form.attr('id') || form.attr('action') || 'unknown',\r\n );\r\n }\r\n redirectToNextJourneyStep();\r\n break;\r\n }\r\n });\r\n };\r\n }\r\n\r\n $.each(radioButtons, clickFunction);\r\n }\r\n\r\n function subscribeToEventAddMotorConviction() {\r\n $('#motor-convictions-add-another').off('click').on('click',\r\n function(event) {\r\n event.preventDefault();\r\n const url = $(event.target).attr('href');\r\n loadAddMotorConvictions(url);\r\n });\r\n }\r\n\r\n function subscribeToEventDismissMotorConvictionPanel() {\r\n $(document).off('click.motorconvictions', '[data-dismiss=\"slide-panel\"]').on('click.motorconvictions',\r\n '[data-dismiss=\"slide-panel\"]',\r\n function() {\r\n unSubscribeToEventDismissMotorConvictionPanel();\r\n dismissSlidePanelHandler(haveMotorConvictionsBeenChanged);\r\n });\r\n\r\n $(document).off('keyup.motorconvictions').on('keyup.motorconvictions',\r\n function(event) {\r\n if (event.key === 'Escape') {\r\n unSubscribeToEventDismissMotorConvictionPanel();\r\n dismissSlidePanelHandler(haveMotorConvictionsBeenChanged);\r\n }\r\n });\r\n\r\n $('.overlay').off('click.motorconvictions').on('click.motorconvictions',\r\n function() {\r\n unSubscribeToEventDismissMotorConvictionPanel();\r\n dismissSlidePanelHandler(haveMotorConvictionsBeenChanged);\r\n });\r\n }\r\n\r\n function unSubscribeToEventDismissMotorConvictionPanel() {\r\n $(document).off('click.motorconvictions', '[data-dismiss=\"slide-panel\"]');\r\n $(document).off('keyup.motorconvictions');\r\n $('.overlay').off('click.motorconvictions');\r\n }\r\n\r\n function dismissSlidePanelHandler(flag) {\r\n if (flag === true) {\r\n bgl.common.pubsub.emit('PollBasket');\r\n }\r\n }\r\n\r\n function subscribeToEventRemoveAllMotorConvictions() {\r\n const removeAllButton = $('#remove-all-motor-convictions');\r\n removeAllButton.off('click').on('click',\r\n function(event) {\r\n event.preventDefault();\r\n noButton.click();\r\n });\r\n }\r\n\r\n function subscribeToEventDoneButtonMotorConvictions() {\r\n const doneButton = $('button[data-remove-all-url]');\r\n\r\n doneButton.off('click').on('click',\r\n function() {\r\n unSubscribeToEventDismissMotorConvictionPanel();\r\n const isNeededToDelete = noButton.attr('data-need-to-delete') === 'true';\r\n const isNoButtonChecked = noButton.is(':checked');\r\n const patchUrl = $(this).data('remove-all-url');\r\n\r\n if (isNeededToDelete && isNoButtonChecked) {\r\n const dataToPost = $.param({\r\n __RequestVerificationToken: $('input[name=\\'__RequestVerificationToken\\']').val(),\r\n personId: $('#PersonId').val(),\r\n JourneyType: $('#JourneyType').val(),\r\n FirstName: $('#FirstName').val(),\r\n });\r\n\r\n $.ajax({\r\n url: patchUrl,\r\n type: 'POST',\r\n data: dataToPost,\r\n success: function(data, textStatus, request) {\r\n if (request.getResponseHeader('Content-Type') === 'application/json; charset=utf-8') {\r\n if (!data.isSuccess && data.errorRedirectUrl !== null) {\r\n bgl.common.utilities.errorRedirect(data.errorRedirectUrl);\r\n } else if (data.isSuccess) {\r\n if (journeyType === 1) {\r\n redirectToNextJourneyStep();\r\n } else {\r\n bgl.common.pubsub.emit('PollBasket');\r\n $('.overlay').click();\r\n }\r\n }\r\n }\r\n },\r\n });\r\n } else if (haveMotorConvictionsBeenChanged === true && journeyType === journeyTypes.singleEdit) {\r\n bgl.common.pubsub.emit('PollBasket');\r\n $('.overlay').click();\r\n } else {\r\n if (journeyType === journeyTypes.additionalDriver) {\r\n redirectToNextJourneyStep();\r\n } else {\r\n $('.overlay').click();\r\n }\r\n }\r\n });\r\n }\r\n\r\n function redirectToNextJourneyStep() {\r\n bgl.common.datastore.extendCollectedData(form, {isFormDirty: false});\r\n bgl.components.additionaldriver.nextStep(configuration,\r\n {\r\n personId: $('#PersonId').val(),\r\n nextStepUrl: form.data('next-step-url'),\r\n },\r\n form);\r\n }\r\n\r\n function subscribeToEventDeleteMotorConviction() {\r\n const deleteMotorConvictionButtons = $('button[data-role=\\'delete\\']');\r\n\r\n $.each(deleteMotorConvictionButtons,\r\n function(key, item) {\r\n $(item).off('click').on('click',\r\n function(event) {\r\n event.preventDefault();\r\n $(item).attr('disabled', 'disabled');\r\n\r\n const target = $(event.target);\r\n const link = target.is('button') ? target : target.parent();\r\n const token = $('input[name=\\'__RequestVerificationToken\\']').val();\r\n const journeyType = $('#JourneyType').val();\r\n const patchUrl = link.attr('href');\r\n const personId = $('#PersonId').val();\r\n\r\n const dataToPost = {\r\n __RequestVerificationToken: token,\r\n motorConvictionId: link.data('conviction-id'),\r\n journeyType: journeyType,\r\n };\r\n\r\n const model = {\r\n componentConfiguration: configuration,\r\n personId: personId,\r\n JourneyType: $('#JourneyType').val(),\r\n FirstName: $('#FirstName').val(),\r\n };\r\n\r\n const panelId = configuration.Id + '-motor-convictions';\r\n\r\n $.ajax({\r\n url: patchUrl,\r\n type: 'POST',\r\n data: dataToPost,\r\n success: function(data, textStatus, request) {\r\n if (request.getResponseHeader('Content-Type') === 'application/json; charset=utf-8') {\r\n if (!data.isSuccess) {\r\n bgl.common.utilities.errorRedirect(data.errorRedirectUrl);\r\n } else {\r\n bgl.common.loader.load(model,\r\n data.redirectUrl,\r\n panelId,\r\n function() {\r\n if (($('#JourneyType').val() * 1) === 1) {\r\n if (getMotorConvictionCount() === 0) {\r\n const additionalDriver = JSON.parse(\r\n sessionStorage.getItem('AdditionalDriver'),\r\n );\r\n additionalDriver[haveMotorConvictionsKey] = 'False';\r\n sessionStorage.setItem(\r\n 'AdditionalDriver',\r\n JSON.stringify(additionalDriver),\r\n );\r\n }\r\n\r\n bgl.components.motorconvictions.initJourney(configuration, true);\r\n } else {\r\n bgl.components.motorconvictions.init(configuration, true);\r\n }\r\n });\r\n }\r\n }\r\n },\r\n });\r\n });\r\n });\r\n }\r\n\r\n function loadAddMotorConvictions(url) {\r\n const model = {\r\n ComponentConfiguration: configuration,\r\n PersonId: $('#PersonId').val(),\r\n JourneyType: $('#JourneyType').val(),\r\n FirstName: $('#FirstName').val(),\r\n };\r\n\r\n const panelId = configuration.Id + '-motor-convictions';\r\n bgl.common.loader.load(model,\r\n url,\r\n panelId,\r\n function() {\r\n bgl.components.motorconvictionsbuilder.init(configuration);\r\n });\r\n }\r\n\r\n function getMotorConvictionCount() {\r\n return $('#motor-convictions-list .step-form__summary-item').length;\r\n }\r\n\r\n return {\r\n init: initComponent,\r\n initJourney: initJourney,\r\n };\r\n})();\r\n\r\nbgl.components.motorconvictionsbuilder = (function() {\r\n let form;\r\n let configuration;\r\n const HIDE_CLASS = 'hide';\r\n\r\n function initComponent(componentConfiguration) {\r\n configuration = componentConfiguration;\r\n form = $('#add-motor-conviction');\r\n\r\n if (form) {\r\n bgl.common.validator.init(form);\r\n bgl.common.validator.initNumberInputField($('#Months-Ban'), 2);\r\n bgl.common.validator.initNumberInputField($('#Fine-Amount'), 5);\r\n }\r\n\r\n subscribeForEvents();\r\n }\r\n\r\n function subscribeForEvents() {\r\n $('.step-form__button, .form-row__breadcrumb-link').off('click').on('click',\r\n function(event) {\r\n stepClick(event, false);\r\n });\r\n\r\n $('[data-step-type=\"previous-step\"]').off('click').on('click',\r\n function(event) {\r\n stepClick(event, true);\r\n });\r\n\r\n function stepClick(event, isBackButtonClicked) {\r\n event.preventDefault();\r\n const link = $(event.currentTarget);\r\n selectNextStep(link, isBackButtonClicked);\r\n }\r\n\r\n const banLengthRow = $('#ban-length-row');\r\n\r\n $('#conviction-has-ban-no').on('click',\r\n function() {\r\n if (!banLengthRow.hasClass(HIDE_CLASS)) {\r\n banLengthRow.addClass(HIDE_CLASS);\r\n }\r\n $('#Months-Ban').val('');\r\n });\r\n\r\n $('#conviction-has-ban-yes').on('click',\r\n function() {\r\n if (banLengthRow.hasClass(HIDE_CLASS)) {\r\n banLengthRow.removeClass(HIDE_CLASS);\r\n }\r\n });\r\n\r\n if (form) {\r\n form.off('submit').on('submit',\r\n function(event) {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n\r\n const submit = $(this).find(':submit');\r\n submit.attr('disabled', 'disabled');\r\n\r\n if (bgl.common.validator.validate(configuration, form) === false) {\r\n submit.removeAttr('disabled');\r\n }\r\n });\r\n }\r\n }\r\n\r\n function selectNextStep(link, isBack) {\r\n const nextStep = link.data('next-step');\r\n const currentStep = $('#motor-conviction-tiles').data('current-step');\r\n const journeyType = $('#JourneyType').val() * 1;\r\n\r\n let currentValue = {\r\n Code: link.data('code'),\r\n Value: $.trim(link.text()),\r\n BuilderStep: currentStep,\r\n };\r\n\r\n const model = {\r\n ComponentConfiguration: configuration,\r\n PersonId: $('#PersonId').val(),\r\n JourneyType: journeyType,\r\n FirstName: $('#FirstName').val(),\r\n CurrentStep: nextStep,\r\n };\r\n\r\n if (isBack) {\r\n currentValue = undefined;\r\n model.IsBackButtonClicked = true;\r\n }\r\n\r\n model.SelectedValues = getSelectedValues(currentValue);\r\n\r\n const url = link.attr('href');\r\n const panelId = configuration.Id + '-motor-convictions';\r\n\r\n if (link.data('current-step') === 'Type' && isBack === true) {\r\n bgl.common.loader.load(model,\r\n link.attr('href'),\r\n panelId,\r\n function() {\r\n if ($('#JourneyType').val() * 1 === 1) {\r\n bgl.components.motorconvictions.initJourney(configuration, true);\r\n } else {\r\n bgl.components.motorconvictions.init(configuration, true);\r\n }\r\n });\r\n return;\r\n }\r\n\r\n if (typeof bgl.common.pubsub !== 'undefined' && !isBack) {\r\n bgl.common.pubsub.emit('fakeFormSubmit', 'MotorConvictions' + currentStep);\r\n }\r\n\r\n bgl.common.loader.load(model,\r\n url,\r\n panelId,\r\n function() {\r\n bgl.components.motorconvictionsbuilder.init(configuration);\r\n });\r\n }\r\n\r\n function getSelectedValues(currentValue) {\r\n const result = [];\r\n const breadcrumbLinks = $('.form-row__breadcrumb-link') || [];\r\n\r\n $.each(breadcrumbLinks,\r\n function(idx, element) {\r\n const value = {\r\n Code: $(element).data('code'),\r\n Value: $.trim($(element).text()),\r\n BuilderStep: $(element).data('next-step'),\r\n };\r\n\r\n result.push(value);\r\n });\r\n\r\n if (currentValue !== undefined) {\r\n result.push(currentValue);\r\n }\r\n\r\n return result;\r\n }\r\n\r\n function onSuccess(configuration, data) {\r\n const panelId = configuration.Id + '-motor-convictions';\r\n const journeyType = $('#JourneyType').val() * 1;\r\n\r\n if (data.lastStep === true) {\r\n const model = {\r\n ComponentConfiguration: configuration,\r\n PersonId: $('#PersonId').val(),\r\n JourneyType: journeyType,\r\n FirstName: $('#FirstName').val(),\r\n };\r\n\r\n bgl.common.loader.load(model,\r\n data.redirectUrl,\r\n panelId,\r\n function() {\r\n if (journeyType === 1) {\r\n bgl.components.motorconvictions.initJourney(configuration, true);\r\n } else {\r\n bgl.components.motorconvictions.init(configuration, true);\r\n }\r\n });\r\n } else {\r\n const newModel = JSON.parse(data.content);\r\n\r\n configuration = newModel.ComponentConfiguration;\r\n\r\n bgl.common.loader.load(newModel,\r\n data.redirectUrl,\r\n panelId,\r\n function() {\r\n bgl.components.motorconvictionsbuilder.init(configuration);\r\n });\r\n }\r\n }\r\n\r\n function onError() {\r\n bgl.components.motorconvictionsbuilder.init(configuration);\r\n }\r\n\r\n return {\r\n init: initComponent,\r\n onSuccess: onSuccess,\r\n onError: onError,\r\n };\r\n})();\r\n\r\nbgl.components.useofothervehicles = (function() {\r\n let form;\r\n let configuration;\r\n let submitButton;\r\n\r\n function ctor(componentConfiguration) {\r\n configuration = componentConfiguration;\r\n form = $('#' + configuration.Id + '__other-vehicles-form');\r\n submitButton = $(form.find('[type=\\'submit\\']'));\r\n\r\n bgl.common.validator.init(form);\r\n }\r\n\r\n function initComponent(componentConfiguration) {\r\n const isOtherVehiclesNcd = componentConfiguration.IsOtherVehiclesNcd;\r\n\r\n ctor(componentConfiguration);\r\n\r\n bgl.common.datastore.init(form);\r\n bgl.common.datastore.setupWrite();\r\n\r\n subscribeToEvents();\r\n\r\n if (isOtherVehiclesNcd) {\r\n initElements();\r\n subscribeToEventsForNcd();\r\n }\r\n }\r\n\r\n function initJourney(componentConfiguration) {\r\n ctor(componentConfiguration);\r\n\r\n bgl.common.datastore.init(form, false, true);\r\n bgl.common.datastore.setupReadAndWrite();\r\n\r\n subscribeToEvents();\r\n bgl.components.additionaldriver.initJourneyStep();\r\n }\r\n\r\n function initElements() {\r\n form.find('#use-of-other-vehicles-radio-yes, #Other-Vehicle-Yes').each(function(index, element) {\r\n const sections = $(element).data('sections');\r\n\r\n if ($(element).prop('checked')) {\r\n $(sections).removeClass('hide');\r\n }\r\n });\r\n }\r\n\r\n function subscribeToEvents() {\r\n if (submitButton.hasClass('hide') !== false) {\r\n if (form.find('input[type=radio]:checked').length === 0) {\r\n form.find('input[type=radio]')\r\n .off('keypress', generateClickOnKeypress)\r\n .on('keypress', generateClickOnKeypress)\r\n .off('click', continueHandler)\r\n .on('click', continueHandler);\r\n } else {\r\n submitButton.removeClass('hide');\r\n }\r\n }\r\n\r\n subscribeForSubmit();\r\n }\r\n\r\n function subscribeToEventsForNcd() {\r\n form.find('#use-of-other-vehicles-radio-yes, #Other-Vehicle-Yes').on('click',\r\n function(e) {\r\n const sections = $(this).data('sections');\r\n\r\n $(sections).removeClass('hide');\r\n });\r\n\r\n form.find('#use-of-other-vehicles-radio-no, #Other-Vehicle-No').on('click',\r\n function(e) {\r\n const sections = $(this).data('sections');\r\n\r\n $(sections).addClass('hide');\r\n\r\n deleteFields(sections);\r\n });\r\n }\r\n\r\n function deleteFields(sections) {\r\n const elements = $(sections).removeClass('error').find('[data-store]');\r\n let dropdownKey;\r\n\r\n const fieldsToDelete = $.map(elements,\r\n function(element) {\r\n const elementName = $(element).attr('name');\r\n\r\n if ($(element).is('select')) {\r\n $(element).val('');\r\n dropdownKey = elementName;\r\n } else if ($(element).is('input')) {\r\n $(element).prop('checked', false);\r\n }\r\n\r\n return elementName;\r\n });\r\n\r\n if (dropdownKey) {\r\n fieldsToDelete.push(dropdownKey + 'Text', dropdownKey + 'Val');\r\n }\r\n\r\n bgl.common.datastore.deleteFields(form, fieldsToDelete);\r\n }\r\n\r\n\r\n function subscribeForSubmit() {\r\n form.off('submit')\r\n .on('submit',\r\n function(event) {\r\n event.preventDefault();\r\n\r\n if (bgl.common.validator.isFormValid(form)) {\r\n const journeyType = $('#JourneyType').val() - 0;\r\n\r\n if (!bgl.common.datastore.isDataChanged(form) &&\r\n journeyType !== journeyTypes.additionalDriver) {\r\n bgl.common.datastore.removeSessionStorage(form);\r\n $('[data-dismiss=\"slide-panel\"]').click();\r\n } else {\r\n bgl.common.validator.submitForm(form, configuration);\r\n }\r\n }\r\n });\r\n\r\n form.find('label').on('keyup', bgl.common.keyboardAccessibility.generateClickOnKeypress);\r\n }\r\n\r\n function generateClickOnKeypress(event) {\r\n const SPACE_KEYCODE = 32;\r\n const ENTER_KEYCODE = 13;\r\n const code = event.charCode || event.keyCode;\r\n\r\n if (code === ENTER_KEYCODE || code === SPACE_KEYCODE) {\r\n $(event.target).prop('checked', true);\r\n $(event.target).click();\r\n }\r\n }\r\n\r\n function continueHandler(event) {\r\n event.preventDefault();\r\n\r\n if ($(event.target).is(':checked')) {\r\n $(event.target).trigger('change');\r\n }\r\n\r\n form.submit();\r\n }\r\n\r\n\r\n function onSuccess(configuration, data) {\r\n if (data.nextStepUrl) {\r\n bgl.common.datastore.extendCollectedData(form, {isFormDirty: false});\r\n\r\n bgl.components.additionaldriver.nextStep(configuration, data, form);\r\n } else {\r\n bgl.common.datastore.removeSessionStorage(form);\r\n bgl.common.pubsub.emit('PollBasket');\r\n $('[data-dismiss=\"slide-panel\"]').click();\r\n }\r\n }\r\n\r\n function onError() {\r\n const journeyType = $('#JourneyType').val() - 0;\r\n\r\n switch (journeyType) {\r\n case (journeyTypes.additionalDriver):\r\n bgl.components.useofothervehicles.initJourney(configuration);\r\n break;\r\n default:\r\n bgl.components.useofothervehicles.init(configuration);\r\n break;\r\n }\r\n\r\n bgl.common.datastore.extendCollectedData(form, {isFormDirty: true});\r\n }\r\n\r\n return {\r\n init: initComponent,\r\n onSuccess: onSuccess,\r\n onError: onError,\r\n initJourney: initJourney,\r\n };\r\n})();\r\n\r\nbgl.components.maritalstatus = (function() {\r\n let form;\r\n let configuration;\r\n let containerId;\r\n\r\n function initComponent(componentConfiguration, containerElementId) {\r\n containerId = containerElementId;\r\n initObject(componentConfiguration);\r\n\r\n bgl.common.datastore.init(form, false, true);\r\n\r\n form.off('submit')\r\n .on('submit',\r\n function(event) {\r\n event.preventDefault();\r\n\r\n if (bgl.common.validator.isFormValid($(this))) {\r\n $('#HasChanges').val(bgl.common.datastore.isDataChanged($(this)) === true);\r\n\r\n if (configuration.IsService) {\r\n const mtaSuffix = window.location.href.toLowerCase().includes('makechanges') ?\r\n 'start' :\r\n 'additional change';\r\n\r\n bgl.common.telemetry.logEvent(`MTA ${mtaSuffix}`,\r\n {\r\n mta_type: 'Driver details Relationship status, Surname, Title',\r\n component: configuration.Id,\r\n });\r\n }\r\n\r\n bgl.common.validator.submitForm($(this), configuration);\r\n }\r\n });\r\n }\r\n\r\n function initJourney(componentConfiguration) {\r\n initObject(componentConfiguration);\r\n\r\n bgl.components.additionaldriver.initJourneyStep();\r\n\r\n bgl.common.datastore.init(form, false, true);\r\n bgl.common.datastore.setupReadAndWrite();\r\n\r\n if (form.find('input[type=radio]:checked').length === 0) {\r\n form.find('input[type=radio]')\r\n .off('keypress', generateClickOnKeypress)\r\n .on('keypress', generateClickOnKeypress)\r\n .off('click', postPerson)\r\n .on('click', postPerson);\r\n } else {\r\n const continueButton = $(form.find('[type=\\'submit\\']'));\r\n continueButton.removeClass('hide');\r\n continueButton.off('click').on('click', postPerson);\r\n }\r\n }\r\n\r\n function initSurnameStep(componentConfiguration) {\r\n initObject(componentConfiguration);\r\n\r\n bgl.common.datastore.init(form, false, true);\r\n bgl.common.datastore.setupReadAndWrite();\r\n }\r\n\r\n function initObject(componentConfiguration) {\r\n configuration = componentConfiguration;\r\n form = $('[data-component-id=\\'' + configuration.Id + '\\'] form');\r\n\r\n bgl.common.validator.init(form);\r\n\r\n $('.back-button-link').one('click', function(event) {\r\n event.preventDefault();\r\n\r\n const backUrl = $(this).attr('href');\r\n\r\n $(this).hide();\r\n\r\n const elementsArray = form.serializeArray();\r\n\r\n const model = {\r\n componentConfiguration: configuration,\r\n };\r\n\r\n $.map(elementsArray, function(item, i) {\r\n model[item['name']] = item['value'];\r\n });\r\n\r\n bgl.common.loader.load(model, backUrl, containerId,\r\n function() {\r\n initComponent(configuration, containerId);\r\n });\r\n });\r\n\r\n form.off('submit')\r\n .on('submit',\r\n function(event) {\r\n event.preventDefault();\r\n\r\n if (bgl.common.validator.isFormValid($(this))) {\r\n $('#HasChanges').val(bgl.common.datastore.isDataChanged($(this)) === true);\r\n\r\n bgl.common.validator.submitForm($(this), configuration);\r\n }\r\n });\r\n\r\n form.find('label').on('keyup', bgl.common.keyboardAccessibility.generateClickOnKeypress);\r\n }\r\n\r\n function postPerson(event) {\r\n event.preventDefault();\r\n\r\n if ($(event.target).is(':checked')) {\r\n $(event.target).trigger('change');\r\n }\r\n\r\n form.find('input[type=radio]').off();\r\n form.submit();\r\n }\r\n\r\n function generateClickOnKeypress(event) {\r\n const SPACE_KEYCODE = 32;\r\n const ENTER_KEYCODE = 13;\r\n const code = event.charCode || event.keyCode;\r\n\r\n if (code === ENTER_KEYCODE || code === SPACE_KEYCODE) {\r\n $(this).click();\r\n }\r\n }\r\n\r\n function onSuccess(configuration, data) {\r\n if (data.journeyType === 'AdditionalDriver' || data.journeyType === 'MultiStepEdit') {\r\n if (data.nextStep) {\r\n bgl.common.datastore.extendCollectedData(form, {isFormDirty: false});\r\n bgl.components.additionaldriver.nextStep(configuration, data, form);\r\n } else {\r\n bgl.components.additionaldriver.createPerson(configuration, data.nextStepUrl, form);\r\n }\r\n } else {\r\n bgl.common.loader.load(data.content, data.nextStepUrl, containerId,\r\n function() {\r\n bgl.components.maritalstatus.initNextStep(configuration, containerId);\r\n });\r\n }\r\n }\r\n\r\n function onSurnameSuccess(configuration, data) {\r\n bgl.common.datastore.removeSessionStorage(form);\r\n\r\n if (configuration.IsService) {\r\n if (data.hasChanges === true) {\r\n const params = {\r\n callback: function() {\r\n bgl.common.utilities.redirectToUrl(configuration.NextStepUrl);\r\n },\r\n };\r\n bgl.common.pubsub.emit('PollBasket', params);\r\n } else {\r\n bgl.common.contentpanel.hideSlidePanel();\r\n }\r\n } else {\r\n if (data.hasChanges === true) {\r\n bgl.common.pubsub.emit('PollBasket');\r\n }\r\n\r\n $('[data-dismiss=\"slide-panel\"]').click();\r\n }\r\n }\r\n\r\n function onError() {\r\n const journeyType = $('#JourneyType').val() - 0;\r\n\r\n switch (journeyType) {\r\n case 1:\r\n bgl.components.maritalstatus.initJourney(configuration);\r\n break;\r\n default:\r\n bgl.components.maritalstatus.init(configuration);\r\n break;\r\n }\r\n bgl.common.datastore.extendCollectedData(form, {isFormDirty: true});\r\n }\r\n\r\n function onSurnameError() {\r\n bgl.components.maritalstatus.initNextStep(configuration);\r\n bgl.common.datastore.extendCollectedData(form, {isFormDirty: true});\r\n }\r\n\r\n return {\r\n initJourney: initJourney,\r\n initNextStep: initSurnameStep,\r\n init: initComponent,\r\n onSuccess: onSuccess,\r\n onSurnameSuccess: onSurnameSuccess,\r\n onError: onError,\r\n onSurnameError: onSurnameError,\r\n };\r\n})();\r\n\r\nbgl.components.relationshipstatus = (function() {\r\n let configuration;\r\n let form;\r\n\r\n function initJourney(componentConfiguration) {\r\n configuration = componentConfiguration;\r\n\r\n form = $('#relationship-status-form');\r\n\r\n bgl.common.validator.init(form);\r\n\r\n bgl.components.additionaldriver.initJourneyStep();\r\n\r\n bgl.common.datastore.init(form, false, true);\r\n bgl.common.datastore.setupReadAndWrite();\r\n\r\n if (form.find('input[type=radio]:checked').length === 0) {\r\n form.find('input[type=radio]')\r\n .off('keypress', generateClickOnKeypress)\r\n .on('keypress', generateClickOnKeypress)\r\n .off('click', submitRelationshipStatusForm)\r\n .on('click', submitRelationshipStatusForm);\r\n } else {\r\n const continueButton = $(form.find('[type=\\'submit\\']'));\r\n continueButton.removeClass('hide');\r\n continueButton.off('click').on('click', submitRelationshipStatusForm);\r\n }\r\n\r\n form.off('submit')\r\n .on('submit',\r\n function(event) {\r\n event.preventDefault();\r\n\r\n if (bgl.common.validator.isFormValid($(this))) {\r\n bgl.common.validator.submitForm(form, configuration);\r\n }\r\n });\r\n\r\n form.find('label').on('keyup', bgl.common.keyboardAccessibility.generateClickOnKeypress);\r\n }\r\n\r\n function generateClickOnKeypress(event) {\r\n const SPACE_KEYCODE = 32;\r\n const ENTER_KEYCODE = 13;\r\n const code = event.charCode || event.keyCode;\r\n\r\n if (code === ENTER_KEYCODE || code === SPACE_KEYCODE) {\r\n $(this).click();\r\n }\r\n }\r\n\r\n function submitRelationshipStatusForm(event) {\r\n event.preventDefault();\r\n\r\n if ($(event.target).is(':checked')) {\r\n $(event.target).trigger('change');\r\n }\r\n\r\n form.find('input[type=radio]').off();\r\n form.submit();\r\n }\r\n\r\n function onSuccess(configuration, data) {\r\n if (data.nextStepUrl) {\r\n bgl.components.additionaldriver.nextStep(configuration, data, form);\r\n }\r\n }\r\n\r\n function onError(configuration) {\r\n bgl.components.relationshipstatus.initJourney(configuration);\r\n bgl.common.datastore.extendCollectedData(form, {isFormDirty: true});\r\n }\r\n\r\n return {\r\n initJourney: initJourney,\r\n onSuccess: onSuccess,\r\n onError: onError,\r\n };\r\n})();\r\n\r\nbgl.components.additionaldriver = (function() {\r\n let configuration;\r\n const containerId = 'SlidePanelContent';\r\n\r\n function initComponent(componentConfiguration) {\r\n configuration = componentConfiguration;\r\n\r\n sessionStorage.removeItem('AdditionalDriver');\r\n\r\n subscribeToEventDismissPanel();\r\n\r\n bgl.components.relationshipstatus.initJourney(configuration);\r\n }\r\n\r\n function initJourneyStep() {\r\n const backButton = $('a[data-step-type=\"previous-step-journey\"]');\r\n\r\n if (backButton.length !== 0) {\r\n backButton.off('click').one('click', function(event) {\r\n event.preventDefault();\r\n\r\n $(backButton).hide();\r\n\r\n let form = $(this).closest('form');\r\n\r\n if (!form.length) {\r\n form = $('#' + containerId).find('form');\r\n }\r\n\r\n const componentName = $(this).data('component');\r\n\r\n let data = getDataToPost(form);\r\n\r\n if (componentName === 'relationshipstatus' || componentName === 'motorclaims') {\r\n const drivers = {\r\n Drivers: JSON.parse(sessionStorage.getItem('drivers')),\r\n GetPersons: false,\r\n };\r\n\r\n data = $.extend(data, drivers);\r\n }\r\n\r\n const element = bgl.components[componentName];\r\n\r\n const callback = element.initJourney;\r\n\r\n bgl.common.loader.load(data,\r\n $(this).attr('href'),\r\n containerId,\r\n function() {\r\n callback(configuration, containerId);\r\n initJourneyStep();\r\n });\r\n });\r\n }\r\n }\r\n\r\n function getDataToPost(form) {\r\n let model = {\r\n ComponentConfiguration: configuration,\r\n JourneyType: journeyTypes.additionalDriver,\r\n PersonId: $('#PersonId').val(),\r\n FirstName: $('#FirstName').val(),\r\n };\r\n\r\n let key = 'AdditionalDriver';\r\n\r\n if (form && form.length) {\r\n key = form.data('store-key');\r\n }\r\n\r\n const collectedData = JSON.parse(sessionStorage.getItem(key));\r\n\r\n model = $.extend(model, collectedData);\r\n\r\n return model;\r\n }\r\n\r\n function expandSessionStorageWithPersonDriver(personId) {\r\n const driversData = JSON.parse(sessionStorage.getItem('AdditionalDriver'));\r\n const drivers = JSON.parse(sessionStorage.getItem('drivers'));\r\n\r\n const initials = driversData.FirstName + ' ' + driversData.LastName;\r\n const person = {Code: personId, Value: convertNameToTitleCase(initials), IsMainDriver: false};\r\n const smb = {Code: '', Value: 'Someone else driving', IsMainDriver: false};\r\n\r\n const newdrivers = drivers.filter(function(value) {\r\n return value.Code !== personId && value.Code !== '';\r\n });\r\n\r\n newdrivers.push(person);\r\n newdrivers.push(smb);\r\n\r\n sessionStorage.setItem('drivers', JSON.stringify(newdrivers));\r\n }\r\n\r\n function convertNameToTitleCase(inputStr) {\r\n if (inputStr) {\r\n inputStr = inputStr.trim().toLowerCase().split(' ');\r\n for (let i = 0; i < inputStr.length; i++) {\r\n inputStr[i] = inputStr[i].charAt(0).toUpperCase() + inputStr[i].slice(1);\r\n }\r\n return inputStr.join(' ');\r\n }\r\n\r\n return '';\r\n }\r\n\r\n function nextStep(configuration, data, form) {\r\n if (data.personId) {\r\n const dataToExtend = {PersonId: data.personId, isFormDirty: false};\r\n expandSessionStorageWithPersonDriver(data.personId);\r\n\r\n let formData = JSON.parse(sessionStorage.getItem('AdditionalDriver'));\r\n formData = $.extend(formData, dataToExtend);\r\n sessionStorage.setItem('AdditionalDriver', JSON.stringify(formData));\r\n }\r\n\r\n if (data.nextStepUrl && form) {\r\n const componentName = form.data('next-journey-component');\r\n\r\n let storedDate = getDataToPost(form);\r\n\r\n if (componentName === 'motorclaims') {\r\n const drivers = {\r\n Drivers: JSON.parse(sessionStorage.getItem('drivers')),\r\n GetPersons: false,\r\n };\r\n\r\n storedDate = $.extend(storedDate, drivers);\r\n }\r\n\r\n const element = bgl.components[componentName];\r\n\r\n const callback = element.initJourney;\r\n\r\n bgl.common.loader.load(storedDate,\r\n data.nextStepUrl,\r\n containerId,\r\n function() {\r\n callback(configuration, containerId);\r\n });\r\n } else {\r\n $('[data-dismiss=\"slide-panel\"]').click();\r\n }\r\n }\r\n\r\n function createPerson(configuration, nextUrl, form) {\r\n const dataToPost = getDataToPost();\r\n executeCreatingAction(configuration, nextUrl, form, dataToPost);\r\n }\r\n\r\n function createDriver(configuration, nextUrl, form) {\r\n const dataToPost = getDataToPost();\r\n const driverData = {\r\n ComponentConfiguration: dataToPost.ComponentConfiguration,\r\n PersonId: dataToPost.PersonId,\r\n CoverId: $('#CoverId').val(),\r\n };\r\n\r\n unSubscribeToEventDismissPanel();\r\n\r\n executeCreatingAction(configuration, nextUrl, form, driverData);\r\n }\r\n\r\n function executeCreatingAction(configuration, nextUrl, form, dataToPost) {\r\n dataToPost.__RequestVerificationToken = $('input[name=\"__RequestVerificationToken\"]').val();\r\n\r\n form.attr('action', nextUrl);\r\n\r\n bgl.common.validator.submitForm(form, configuration, dataToPost);\r\n }\r\n\r\n function subscribeToEventDismissPanel() {\r\n $(document).off('click.additionaldriver', '[data-dismiss=\"slide-panel\"]')\r\n .on('click.additionaldriver', '[data-dismiss=\"slide-panel\"]', function() {\r\n unSubscribeToEventDismissPanel();\r\n dismissSlidePanelHandler();\r\n });\r\n\r\n $(document).off('keyup.additionaldriver').on('keyup.additionaldriver', function(event) {\r\n if (event.key === 'Escape') {\r\n unSubscribeToEventDismissPanel();\r\n dismissSlidePanelHandler();\r\n }\r\n });\r\n\r\n $('.overlay').off('click.additionaldriver').on('click.additionaldriver', function() {\r\n unSubscribeToEventDismissPanel();\r\n dismissSlidePanelHandler();\r\n });\r\n }\r\n\r\n function unSubscribeToEventDismissPanel() {\r\n $(document).off('click.additionaldriver', '[data-dismiss=\"slide-panel\"]');\r\n $(document).off('keyup.additionaldriver');\r\n $('.overlay').off('click.additionaldriver');\r\n }\r\n\r\n function dismissSlidePanelHandler() {\r\n switch (configuration.JourneyType) {\r\n case journeyTypes.additionalDriver:\r\n break;\r\n\r\n case journeyTypes.multiStepEdit:\r\n bgl.common.utilities.refreshPage();\r\n break;\r\n }\r\n }\r\n\r\n function isAdditionalDriverJourney() {\r\n return $('#JourneyType').val() - 0 === journeyTypes.additionalDriver;\r\n }\r\n\r\n return {\r\n init: initComponent,\r\n initJourneyStep: initJourneyStep,\r\n nextStep: nextStep,\r\n createPerson: createPerson,\r\n createDriver: createDriver,\r\n isAdditionalDriverJourney: isAdditionalDriverJourney,\r\n };\r\n})();\r\n\r\nbgl.components.drivertabs = (function() {\r\n /* SELECTED ELEMENTS (CACHED)*/\r\n let leftArrow; let rightArrow; let tabScrollVisibleArea; let tabList; let tabContent;\r\n\r\n function init() {\r\n leftArrow = $('.named-driver-pagination__left');\r\n rightArrow = $('.named-driver-pagination__right');\r\n tabScrollVisibleArea = $('.named-driver-scroller__scroll-area');\r\n tabList = $('.named-driver-tab');\r\n tabContent = document.querySelectorAll('[data-named-driver-info]');\r\n\r\n /* ATTACH EVENT LISTENERS*/\r\n\r\n tabScrollVisibleArea.off('scroll').on('scroll',\r\n function() {\r\n bgl.components.drivertabs.showArrow();\r\n });\r\n\r\n rightArrow.off('click').on('click',\r\n function() {\r\n handleRightArrowClick();\r\n bgl.components.drivertabs.showArrow();\r\n });\r\n\r\n leftArrow.off('click').on('click',\r\n function() {\r\n handleLeftArrowClick();\r\n bgl.components.drivertabs.showArrow();\r\n });\r\n\r\n $(window).off('resize').on('resize',\r\n function() {\r\n bgl.components.drivertabs.showArrow();\r\n });\r\n\r\n tabList.each(function(index, tab) {\r\n $(tab).off('click').on('click',\r\n function() {\r\n handleTabClick($(this));\r\n bgl.components.drivertabs.showArrow();\r\n });\r\n });\r\n\r\n bgl.components.drivertabs.showArrow();\r\n }\r\n\r\n const settings = {\r\n ANIMIATE_DURATION: 300,\r\n };\r\n\r\n function deactivateTab() {\r\n const currentlyActiveTab = $('.named-driver-tab--active');\r\n $(currentlyActiveTab).removeClass('named-driver-tab--active');\r\n $(currentlyActiveTab).attr('aria-selected', 'false');\r\n }\r\n\r\n function activateTab(clickedTab) {\r\n deactivateTab();\r\n\r\n clickedTab.addClass('named-driver-tab--active');\r\n clickedTab.attr('aria-selected', 'true');\r\n clickedTab.focus();\r\n\r\n const contentIndex = $(tabList).index(clickedTab);\r\n\r\n tabContent.forEach((item) => {\r\n item.classList.add('hide');\r\n });\r\n\r\n tabContent[contentIndex].classList.remove('hide');\r\n }\r\n\r\n function getLeftmostTabIndex() {\r\n const hiddenAreaLeft = $(tabScrollVisibleArea)[0].scrollLeft;\r\n let widthAccumulator = 0;\r\n let closestToLeftIndex = 0;\r\n $(tabList).each(function(index) {\r\n if (widthAccumulator > hiddenAreaLeft) {\r\n /* return false (break) to exit .each()*/\r\n return false;\r\n }\r\n widthAccumulator += $(this)[0].offsetWidth;\r\n closestToLeftIndex = index;\r\n });\r\n\r\n return closestToLeftIndex;\r\n }\r\n\r\n function getRightmostTabIndex() {\r\n const totalScrollArea = $(tabScrollVisibleArea)[0].offsetWidth;\r\n const hiddenAreaLeft = $(tabScrollVisibleArea)[0].scrollLeft;\r\n const rootRight = totalScrollArea + hiddenAreaLeft;\r\n let widthAccumulator = 0;\r\n let closestToRightIndex = 0;\r\n $(tabList).each(function(index) {\r\n if (widthAccumulator > rootRight) {\r\n /* return false (break) to exit .each()*/\r\n return false;\r\n }\r\n widthAccumulator += $(this)[0].offsetWidth;\r\n closestToRightIndex = index;\r\n });\r\n return closestToRightIndex;\r\n }\r\n\r\n function getRightmostTabScrollPosition(tabIndex) {\r\n let accumulator = 0;\r\n $(tabList).each(function(index) {\r\n if (index > tabIndex) {\r\n /* return false (break) to exit .each()*/\r\n return false;\r\n }\r\n accumulator += $(this)[0].offsetWidth;\r\n });\r\n return accumulator;\r\n }\r\n\r\n function handleTabClick(clickedTab) {\r\n const previousActiveTabIndex = $(tabList).index($('.named-driver-tab--active'));\r\n const clickedTabIndex = $(tabList).index(clickedTab);\r\n const tabScrollerVisibleAreaWidth = $(tabScrollVisibleArea)[0].offsetWidth;\r\n const leftmostTabIndex = getLeftmostTabIndex();\r\n const rightmostTabIndex = getRightmostTabIndex();\r\n\r\n // If the tab is NOT already active\r\n if (previousActiveTabIndex !== clickedTabIndex) {\r\n activateTab(clickedTab);\r\n }\r\n\r\n // If the tab is already within the visible scroll area, nothing else to do so, exit\r\n if (clickedTabIndex > getLeftmostTabIndex && clickedTabIndex < getRightmostTabIndex) {\r\n return; // Early exit - no scroll required\r\n }\r\n\r\n let newScrollPosition;\r\n // If clicked tab is in the leftmost position, bring entire tab into view?\r\n if (clickedTabIndex === leftmostTabIndex) {\r\n newScrollPosition = $(tabList)[clickedTabIndex].offsetLeft;\r\n $(tabScrollVisibleArea).animate({scrollLeft: newScrollPosition}, settings.ANIMIATE_DURATION);\r\n return;\r\n }\r\n\r\n // If clicked tab is in the rightmost position, bring entire tab into view?\r\n if (clickedTabIndex === rightmostTabIndex) {\r\n newScrollPosition = getRightmostTabScrollPosition(rightmostTabIndex) - tabScrollerVisibleAreaWidth;\r\n $(tabScrollVisibleArea).animate({scrollLeft: newScrollPosition}, settings.ANIMIATE_DURATION);\r\n return;\r\n }\r\n }\r\n\r\n function handleLeftArrowClick() {\r\n const newIndex = getLeftmostTabIndex();\r\n const tabScrollerVisibleAreaWidth = $(tabScrollVisibleArea)[0].offsetWidth;\r\n const newPosition = getRightmostTabScrollPosition(newIndex) - tabScrollerVisibleAreaWidth;\r\n $(tabScrollVisibleArea).animate({scrollLeft: newPosition}, settings.ANIMIATE_DURATION, function() {\r\n /* offset may not change when name is too long*/\r\n if (newIndex === getLeftmostTabIndex()) {\r\n const position = getRightmostTabScrollPosition(newIndex - 1) - tabScrollerVisibleAreaWidth;\r\n $(tabScrollVisibleArea).animate({scrollLeft: position}, settings.ANIMIATE_DURATION);\r\n }\r\n });\r\n }\r\n\r\n function handleRightArrowClick() {\r\n const newIndex = getRightmostTabIndex();\r\n const tabScrollerVisibleAreaWidth = $(tabScrollVisibleArea)[0].offsetWidth;\r\n const newPosition = getRightmostTabScrollPosition(newIndex) - tabScrollerVisibleAreaWidth;\r\n $(tabScrollVisibleArea).animate({scrollLeft: newPosition}, settings.ANIMIATE_DURATION, function() {\r\n /* offset may not change when name is too long*/\r\n if (newIndex === 0 || newIndex === getRightmostTabIndex()) {\r\n const position = getRightmostTabScrollPosition(newIndex + 1) - tabScrollerVisibleAreaWidth;\r\n $(tabScrollVisibleArea).animate({scrollLeft: position}, settings.ANIMIATE_DURATION);\r\n }\r\n });\r\n }\r\n\r\n function showArrow() {\r\n const tabScrollerVisibleAreaScrollPosition = $('.named-driver-scroller__scroll-area:eq(0)').scrollLeft();\r\n const tabScrollerVisibleAreaWidth = $('.named-driver-scroller__scroll-area:eq(0)').width();\r\n const tabScrollerContentWidth = $('.named-driver-scroller__scroll-content:eq(0)').width();\r\n\r\n if (tabScrollerVisibleAreaScrollPosition > 0) {\r\n $(leftArrow).removeClass('hide');\r\n } else {\r\n $(leftArrow).addClass('hide');\r\n }\r\n\r\n if (tabScrollerVisibleAreaWidth < tabScrollerContentWidth - tabScrollerVisibleAreaScrollPosition) {\r\n $(rightArrow).removeClass('hide');\r\n } else {\r\n $(rightArrow).addClass('hide');\r\n }\r\n }\r\n\r\n function setActiveDriver(driverIndex) {\r\n $('.named-driver-tab[data-index=' + driverIndex + ']').click();\r\n }\r\n\r\n function getActiveDriver(thisObj) {\r\n return thisObj.data('index');\r\n }\r\n\r\n return {\r\n init: init,\r\n handleTabClick: handleTabClick,\r\n showArrow: showArrow,\r\n setActiveDriver: setActiveDriver,\r\n getActiveDriver: getActiveDriver,\r\n };\r\n})();\r\n\r\nif (typeof module !== 'undefined') {\r\n module.exports = bgl.components.driverdetails.common;\r\n}\r\n// eslint-disable-next-line no-var\r\nvar bgl = window.bgl || {};\r\nbgl.components = bgl.components || {};\r\nbgl.components.driverdetails = bgl.components.driverdetails || {};\r\n\r\nbgl.components.driverdetails.annualmileage = (function() {\r\n let form;\r\n let configuration;\r\n const backUrlStackKey = 'backUrlStack';\r\n let containerId;\r\n\r\n function loadComponent(componentConfiguration, componentUrl, containerElementId) {\r\n configuration = componentConfiguration;\r\n containerId = containerElementId;\r\n\r\n bgl.common.loader.load(componentConfiguration,\r\n componentUrl,\r\n containerElementId,\r\n function() {\r\n initComponent(componentConfiguration);\r\n });\r\n }\r\n\r\n function initComponent(componentConfiguration, containerElementId ) {\r\n configuration = componentConfiguration;\r\n containerId = containerElementId;\r\n\r\n form = $('#' + configuration.Id + '__annual-mileage-form');\r\n bgl.common.datastore.init(form, false, true);\r\n bgl.common.datastore.setupReadAndWrite();\r\n bgl.common.validator.enableMaxLength();\r\n bgl.common.validator.init(form);\r\n bgl.common.datastore.extendCollectedData(\r\n form,\r\n {AnnualMileage: $(`#${configuration.Id}__annual-mileage`).val()},\r\n );\r\n\r\n subscribeToEvents(configuration);\r\n initBackButtonLink();\r\n }\r\n\r\n function subscribeToEvents(configuration) {\r\n const numberBox = $('#' + configuration.Id + '__annual-mileage');\r\n\r\n calculateAverageMiles(numberBox.val());\r\n\r\n numberBox.off('keydown').on('keydown',\r\n function(e) {\r\n // 46 - DELETE\r\n // 8 - BACKSPACE\r\n // 9 - TAB\r\n // 27 - ESCAPE\r\n // 13 - ENTER\r\n if ($.inArray(e.keyCode, [46, 8, 9, 27, 13]) !== -1 ||\r\n (e.keyCode === 65 && (e.ctrlKey === true || e.metaKey === true)) ||\r\n (e.keyCode >= 35 && e.keyCode <= 40)) {\r\n return;\r\n }\r\n // Check to see if the shift key, or any other alpha character has been hit.\r\n if ((e.shiftKey || (e.keyCode < 48 || e.keyCode > 57)) && (e.keyCode < 96 || e.keyCode > 105) ||\r\n $(this).val().length === 5 ||\r\n (e.keyCode === 96 && $(this).val().length === 0)) {\r\n e.preventDefault();\r\n }\r\n });\r\n\r\n numberBox.on('keyup',\r\n function() {\r\n let val = $(this).val();\r\n while (val.substring(0, 1) === '0') {\r\n val = val.substring(1);\r\n }\r\n $(this).val(val);\r\n });\r\n\r\n numberBox.off('input').on('input',\r\n function(e) {\r\n e.preventDefault();\r\n\r\n const value = $(e.target).val();\r\n\r\n calculateAverageMiles(value);\r\n });\r\n\r\n form.off('submit').on('submit',\r\n function(event) {\r\n event.preventDefault();\r\n if (bgl.common.validator.isFormValid($(this))) {\r\n $('#HasChanges').val(bgl.common.datastore.isDataChanged($(event.target)) === true);\r\n bgl.common.validator.submitForm($(this), configuration);\r\n }\r\n });\r\n }\r\n\r\n function initBackButtonLink() {\r\n $('.back-button-link')\r\n .off('click')\r\n .on('click',\r\n function(e) {\r\n e.preventDefault();\r\n $(this).hide();\r\n const url = getBackButtonUrl();\r\n loadView(url);\r\n });\r\n }\r\n\r\n function getBackButtonUrl() {\r\n const stack = JSON.parse(sessionStorage.getItem(backUrlStackKey));\r\n const url = stack.pop();\r\n\r\n sessionStorage.setItem(backUrlStackKey, JSON.stringify(stack));\r\n\r\n return url;\r\n }\r\n\r\n function loadView(url) {\r\n bgl.common.loader.load(configuration,\r\n url,\r\n containerId,\r\n function() {\r\n bgl.components.driverdetails.overnightparking.init(configuration, containerId);\r\n });\r\n }\r\n\r\n function calculateAverageMiles(value) {\r\n const label = $('#' + configuration.Id + '__annual-mileage-label');\r\n const labelTemplateValue = $('#labelTemplate').text();\r\n\r\n if (value !== undefined && value !== '') {\r\n const averageMiles = Math.round(value / 52, 0);\r\n\r\n if (averageMiles === 0) {\r\n label.hide();\r\n } else {\r\n label.show();\r\n const text = $.parseHTML(labelTemplateValue.replace('{mileage}', averageMiles));\r\n label.html(text);\r\n }\r\n }\r\n }\r\n\r\n function onSuccess(configuration, responseData) {\r\n bgl.common.datastore.extendCollectedData(\r\n form,\r\n {isFormDirty: responseData.hasChanges, HasChanges: responseData.hasChanges},\r\n );\r\n bgl.components.editaddress.postAddressChange(configuration, responseData.redirectUrl, getData(form));\r\n }\r\n\r\n function getData(form) {\r\n const token = form.find('input[name=\"__RequestVerificationToken\"]').val();\r\n const data = bgl.common.datastore.getData(form) || {};\r\n\r\n data.Address = bgl.common.datastore.getData('Address');\r\n data.AnnualMileage = bgl.common.datastore.getData('AnnualMileage');\r\n data.VehicleOvernightParking = bgl.common.datastore.getData('OvernightParking');\r\n data.__RequestVerificationToken = token;\r\n data.ComponentConfiguration = configuration;\r\n\r\n return data;\r\n }\r\n\r\n function error(data) {\r\n }\r\n\r\n return {\r\n init: initComponent,\r\n load: loadComponent,\r\n onSuccess: onSuccess,\r\n onError: error,\r\n };\r\n})();\r\n// eslint-disable-next-line no-var\r\nvar bgl = window.bgl || {};\r\nbgl.components = bgl.components || {};\r\nbgl.components.driverdetails = bgl.components.driverdetails || {};\r\n\r\nbgl.components.driverdetails.adddriver = (function() {\r\n function initComponent(componentConfiguration) {\r\n $('[data-add-driver-button]')\r\n .on('click', function() {\r\n const requestBodyData = {\r\n ComponentConfiguration: componentConfiguration,\r\n JourneyType: 1,\r\n };\r\n\r\n const actionUrl = $(this).data('action-url');\r\n\r\n bgl.common.loader.load(requestBodyData,\r\n actionUrl,\r\n 'SlidePanelContent',\r\n function() {\r\n bgl.components.additionaldriver.init(componentConfiguration);\r\n });\r\n });\r\n }\r\n\r\n return {\r\n init: initComponent,\r\n };\r\n})();\r\n// eslint-disable-next-line no-var\r\nvar bgl = window.bgl || {};\r\nbgl.components = bgl.components || {};\r\nbgl.components.driverdetails = bgl.components.driverdetails || {};\r\n\r\nbgl.components.driverdetails.aboutyou = (function() {\r\n let form;\r\n let configuration;\r\n function loadComponent(componentConfiguration, componentUrl, containerElementId) {\r\n bgl.common.loader.load(componentConfiguration, componentUrl, containerElementId, function() {\r\n initComponent(componentConfiguration);\r\n });\r\n }\r\n\r\n function initComponent(componentConfiguration) {\r\n configuration = componentConfiguration;\r\n form = $('#about-you-form');\r\n bgl.common.datastore.init(form);\r\n bgl.common.datastore.setupReadAndWrite();\r\n bgl.common.validator.enableMaxLength();\r\n bgl.common.validator.init(form);\r\n bgl.common.date.initDateFormat($('#DateOfBirth'));\r\n form.off('submit')\r\n .on('submit',\r\n function(event) {\r\n event.preventDefault();\r\n if (bgl.common.validator.isFormValid(form)) {\r\n bgl.common.validator.submitForm(form, configuration);\r\n }\r\n });\r\n }\r\n\r\n function onSuccess(configuration, data) {\r\n location.href = configuration.NextStepUrl;\r\n }\r\n\r\n function onError() {\r\n bgl.components.driverdetails.aboutyou.init(configuration);\r\n }\r\n\r\n return {\r\n init: initComponent,\r\n load: loadComponent,\r\n onSuccess: onSuccess,\r\n onError: onError,\r\n };\r\n})();\r\n// eslint-disable-next-line no-var\r\nvar bgl = window.bgl || {};\r\nbgl.components = bgl.components || {};\r\nbgl.components.demandsandneeds = bgl.components.demandsandneeds || {};\r\n\r\nbgl.components.demandsandneeds.optionalextras = (function($) {\r\n let configuration;\r\n let basketUpdatedNotification;\r\n\r\n function initComponent(componentConfiguration) {\r\n configuration = componentConfiguration;\r\n setEventBindings();\r\n setPncdEventBindings();\r\n setMultiTierEventBindings();\r\n populateAggregatorSelections();\r\n populateIncludedAsStandardForBreakdown();\r\n populateSessionAnswers();\r\n bgl.common.accordions.init();\r\n bgl.common.tooltip.init();\r\n\r\n const grvAddon = document.querySelector('[data-guaranteed-replacement-vehicle]');\r\n\r\n if (grvAddon) {\r\n handleGoodToKnowListContent(grvAddon);\r\n }\r\n }\r\n\r\n function setEventBindings() {\r\n const addonButtons = [...document.querySelectorAll('[data-type=\"addon-yes\"], [data-type=\"addon-no\"]')];\r\n const accordionButtons = [...document.querySelectorAll('[data-accordion-button]')];\r\n\r\n addonButtons.forEach((button) => button.addEventListener('click', (event) => {\r\n const addonForm = event.target.closest('form');\r\n const addonId = addonForm.id;\r\n const breakdownTier = event.target.labels[0].dataset.tier;\r\n const isMultiTierBreakdown = breakdownTier &&\r\n !addonForm.hasAttribute('data-single-tier-breakdown');\r\n const breakdownAddon = event.target.closest('input');\r\n\r\n if (isMultiTierBreakdown) {\r\n setTierBreakdownLogic(addonForm, breakdownTier, breakdownAddon, event.target);\r\n } else {\r\n if ($(addonForm).valid() || !addonForm.querySelectorAll('input[type=\"radio\"]:checked').length > 0) {\r\n if (addonForm.querySelector('#IsAddOnSelected-error')) {\r\n addonForm.querySelector('#IsAddOnSelected-error').remove();\r\n }\r\n addonForm.classList.remove('error');\r\n addonForm.querySelector('#error-banner').classList.add('hide');\r\n }\r\n\r\n if (event.target.dataset.type === 'addon-yes') {\r\n if ((sessionStorage.getItem(`${addonId}-yes`))) {\r\n return;\r\n }\r\n\r\n disableElements(true);\r\n\r\n const addonTick = document.querySelector(`#${addonId}-no-label [data-addon-tick]`);\r\n addonTick.classList.add('hide');\r\n\r\n sessionStorage.setItem(`${addonId}SelectedAtAgg`, 'false');\r\n\r\n if (addonForm.querySelector('[data-accordion-button]')) {\r\n document.getElementById(`${addonId}SelectedIcon`).classList.toggle('hide');\r\n\r\n if (addonForm.querySelector('[data-preselected-at-agg]')) {\r\n document.getElementById(`${addonId}PreselectedAtAgg`).classList.add('hide');\r\n }\r\n }\r\n\r\n updateAddOn(addonForm, event.target, false).then(() => {\r\n sessionStorage.setItem(`${addonId}-yes`, `${addonId}-yes`);\r\n sessionStorage.removeItem(`${addonId}-no`);\r\n\r\n if (addonForm.querySelector('[data-upgrade-panel]')) {\r\n handleMultitierUpgradePanel(addonForm);\r\n }\r\n });\r\n }\r\n\r\n if (event.target.dataset.type === 'addon-no') {\r\n if (sessionStorage.getItem(`${addonId}-no`)) {\r\n return;\r\n }\r\n\r\n disableElements(true);\r\n\r\n const addonTick = document.querySelector(`#${addonId}-yes-label [data-addon-tick]`);\r\n addonTick.classList.add('hide');\r\n\r\n sessionStorage.setItem(`${addonId}-no`, `${addonId}-no`);\r\n sessionStorage.setItem(`${addonId}SelectedAtAgg`, 'false');\r\n\r\n if (addonForm.querySelector('[data-accordion-button]')) {\r\n document.getElementById(`${addonId}SelectedIcon`).classList.toggle('hide');\r\n\r\n if (addonForm.querySelector('[data-preselected-at-agg]')) {\r\n document.getElementById(`${addonId}PreselectedAtAgg`).classList.add('hide');\r\n }\r\n }\r\n\r\n if (sessionStorage.getItem(`${addonId}-yes`)) {\r\n sessionStorage.removeItem(`${addonId}-yes`);\r\n\r\n updateAddOn(addonForm, event.target, false);\r\n } else {\r\n setTimeout(function() {\r\n disableElements(false);\r\n }, 1000);\r\n }\r\n\r\n if (addonForm.querySelector('[data-upgrade-panel]')) {\r\n handleMultitierUpgradePanel(addonForm);\r\n }\r\n }\r\n }\r\n\r\n if (document.querySelector('form.error')) {\r\n scrollToFirstAddonWithError();\r\n } else {\r\n document.getElementById('microCopy').classList.remove('micro-copy--error');\r\n }\r\n }));\r\n\r\n addonButtons.forEach((button) => {\r\n button.labels[0].addEventListener('keyup', (event) => {\r\n bgl.common.keyboardAccessibility.generateClickOnKeypress(event);\r\n });\r\n });\r\n\r\n document.getElementById('ContinueButton').addEventListener('click', () => {\r\n if (validateAddons()) {\r\n bgl.components.pagereloader.poller.reloadPage(null, true, configuration.NextPageUrl);\r\n }\r\n });\r\n\r\n accordionButtons.forEach((button) => button.addEventListener('click', (event) => {\r\n const isExpanded = event.currentTarget.getAttribute('aria-expanded');\r\n const buttonText = event.currentTarget.querySelector('[data-accordion-button-text]');\r\n const ariaLabel = event.currentTarget.getAttribute('aria-label');\r\n\r\n if (isExpanded === 'true') {\r\n buttonText.innerText = 'Show Less';\r\n event.currentTarget.setAttribute('aria-label', ariaLabel.replace('more', 'less'));\r\n event.currentTarget.querySelector('[data-addon-container]')\r\n .classList.remove('addon-accordion__container--borderless');\r\n } else {\r\n buttonText.innerText = 'Show More';\r\n event.currentTarget.setAttribute('aria-label', ariaLabel.replace('less', 'more'));\r\n event.currentTarget.querySelector('[data-addon-container]')\r\n .classList.add('addon-accordion__container--borderless');\r\n }\r\n }));\r\n\r\n const carousel = document.getElementById('breakdown-carousel');\r\n if (carousel) {\r\n loadBreakdownCarouselLogic(carousel);\r\n }\r\n }\r\n\r\n function setPncdEventBindings() {\r\n const pncdAddButton = document.getElementById('NoClaimsDiscountProtection-yes');\r\n const pncdRemoveButton = document.getElementById('NoClaimsDiscountProtection-no');\r\n\r\n if (pncdAddButton && pncdRemoveButton) {\r\n pncdAddButton.addEventListener('click', () => {\r\n document.getElementById('NoClaimsDiscountProtection-heading-not-selected').classList.add('hide');\r\n document.getElementById('NoClaimsDiscountProtection-fbels-not-selected').classList.add('hide');\r\n document.getElementById('NoClaimsDiscountProtection-fbels-selected').classList.remove('hide');\r\n document.getElementById('NoClaimsDiscountProtection-heading-selected').classList.remove('hide');\r\n sessionStorage.setItem('pncdSelectedAtAGG', false);\r\n });\r\n\r\n pncdRemoveButton.addEventListener('click', () => {\r\n document.getElementById('NoClaimsDiscountProtection-heading-selected').classList.add('hide');\r\n document.getElementById('NoClaimsDiscountProtection-fbels-selected').classList.add('hide');\r\n document.getElementById('NoClaimsDiscountProtection-heading-not-selected').classList.remove('hide');\r\n document.getElementById('NoClaimsDiscountProtection-fbels-not-selected').classList.remove('hide');\r\n\r\n sessionStorage.setItem('pncdSelectedAtAGG', false);\r\n showPncdYesNoBasket();\r\n });\r\n }\r\n }\r\n\r\n function setMultiTierEventBindings() {\r\n if (document.getElementsByTagName('select').length > 0) {\r\n [...document.getElementsByTagName('select')].forEach((select) => {\r\n select.addEventListener('change', (event) => {\r\n const addonForm = event.target.closest('form');\r\n\r\n if (sessionStorage.getItem(`${addonForm.id}-yes`)) {\r\n updateAddOn(addonForm, addonForm.querySelector(`#${addonForm.id}-yes`), false);\r\n }\r\n\r\n if (addonForm.querySelector('[data-upgrade-panel]')) {\r\n handleGoodToKnowListContent(addonForm);\r\n handleMultitierUpgradePanel(addonForm);\r\n } else {\r\n handleGoodToKnowListContent(addonForm);\r\n }\r\n });\r\n });\r\n }\r\n }\r\n\r\n function handleGoodToKnowListContent(addonForm) {\r\n [...addonForm.getElementsByTagName('option')].forEach((option) => {\r\n const optionPrice = addonForm.querySelector(`#${option.value}`);\r\n const goodToKnowListContent = addonForm\r\n .querySelectorAll(`[data-good-to-know-list-item-${option.value}]`);\r\n\r\n if (option.selected) {\r\n optionPrice.classList.remove('hide');\r\n } else {\r\n optionPrice.classList.add('hide');\r\n }\r\n\r\n if (goodToKnowListContent && option.selected) {\r\n goodToKnowListContent.forEach((content) => {\r\n content.classList.remove('hide');\r\n });\r\n } else if (goodToKnowListContent) {\r\n goodToKnowListContent.forEach((content) => {\r\n content.classList.add('hide');\r\n });\r\n }\r\n });\r\n }\r\n\r\n function handleMultitierUpgradePanel(addonForm) {\r\n const select = addonForm.querySelector(`[id=SelectedCoverLevelCode]`);\r\n const options = [...select.getElementsByTagName('option')];\r\n const lastOptionValue = options[options.length - 1].value;\r\n const selectedOptionValue = options.find((option) => option.selected).value;\r\n\r\n if (selectedOptionValue == lastOptionValue || sessionStorage.getItem(`${addonForm.id}-no`)) {\r\n addonForm.querySelector('[data-upgrade-panel]').classList.add('uil-panel--transparent');\r\n\r\n [...addonForm.querySelectorAll('[data-upgrade-message]')].forEach((text) => {\r\n text.classList.add('hide');\r\n });\r\n } else if (sessionStorage.getItem(`${addonForm.id}-yes`)) {\r\n addonForm.querySelector('[data-upgrade-panel]').classList.remove('uil-panel--transparent');\r\n\r\n [...addonForm.querySelectorAll('[data-upgrade-message]')].forEach((text) => {\r\n text.classList.add('hide');\r\n if (text.getAttribute('data-upgrade-value') == selectedOptionValue) {\r\n text.classList.remove('hide');\r\n }\r\n });\r\n }\r\n }\r\n\r\n function populateSessionAnswers() {\r\n const allAddonForms = document.querySelectorAll('form');\r\n\r\n allAddonForms.forEach((addonForm) => {\r\n const addonIsBreakdown = addonForm.id.toLocaleLowerCase() === 'breakdown';\r\n const isNotSingleTierBreakdown = !addonForm.hasAttribute('data-single-tier-breakdown');\r\n\r\n let addonId = (addonIsBreakdown && isNotSingleTierBreakdown) ?\r\n addonForm.id.toLocaleLowerCase() :\r\n addonForm.id;\r\n\r\n if (sessionStorage.getItem(`${addonId}-no`)) {\r\n if (addonIsBreakdown && isNotSingleTierBreakdown) {\r\n addonForm.querySelector('[data-type=\"addon-no\"][data-breakdown-carousel]').checked = true;\r\n addonId = addonId.toLocaleLowerCase();\r\n }\r\n\r\n addonForm.querySelector('[data-type=\"addon-no\"]').checked = true;\r\n\r\n const addonNoLabelTick = addonForm.querySelector(`#${addonId}-no-label [data-addon-tick]`);\r\n if (addonNoLabelTick) {\r\n addonNoLabelTick.classList.remove('hide');\r\n }\r\n }\r\n const addOnYesButtons = [...addonForm.querySelectorAll('[data-type=\"addon-yes\"]')];\r\n\r\n if (addOnYesButtons.length == 1) {\r\n if (addOnYesButtons[0].checked) {\r\n sessionStorage.setItem(`${addonId}-yes`, `${addonId}-yes`);\r\n }\r\n } else if (addOnYesButtons.length > 1) {\r\n addOnYesButtons.forEach((button) => {\r\n if (button.checked) {\r\n const breakdownTier = button.hasAttribute('data-breakdown-carousel') ?\r\n button.parentElement.dataset.tier :\r\n button.nextElementSibling.dataset.tier;\r\n\r\n sessionStorage.setItem(`${addonId}-yes`, `${addonId}-${breakdownTier}`);\r\n }\r\n });\r\n }\r\n });\r\n\r\n if (document.getElementById('NoClaimsDiscountProtection')) {\r\n const pncdSelectedAtAGG = !document.getElementById('NoClaimsDiscountProtection-DidYouKnow-AddRemove')\r\n .classList.contains('hide');\r\n\r\n if ((!sessionStorage.getItem('pncdSelectedAtAGG') && !pncdSelectedAtAGG) ||\r\n sessionStorage.getItem('pncdSelectedAtAGG') == 'false') {\r\n showPncdYesNoBasket();\r\n }\r\n }\r\n }\r\n\r\n function populateAggregatorSelections() {\r\n const preselectedAddons = document.querySelectorAll('[data-preselected-at-agg]');\r\n\r\n preselectedAddons.forEach((addon) => {\r\n const addonFormId = addon.closest('form').id;\r\n if (sessionStorage.getItem(`${addonFormId}SelectedAtAgg`) === null) {\r\n sessionStorage.setItem(`${addonFormId}SelectedAtAgg`, 'true');\r\n }\r\n\r\n if (sessionStorage.getItem(`${addonFormId}SelectedAtAgg`) === 'false') {\r\n addon.classList.add('hide');\r\n }\r\n });\r\n }\r\n\r\n function populateIncludedAsStandardForBreakdown() {\r\n const includedAsStandardAddons = document.querySelectorAll('[data-included-as-standard]');\r\n\r\n includedAsStandardAddons.forEach((includedAddon) => {\r\n const addonForm = includedAddon.closest('form');\r\n\r\n if (addonForm.id === 'Breakdown') {\r\n [...addonForm.getElementsByTagName('label')].forEach((label) => {\r\n if (label.classList.contains('active')) {\r\n if (label.dataset.tier > 1) {\r\n sessionStorage.setItem(`${addonForm.id}IncludedAsStandard`, 'false');\r\n addonForm.querySelector('[data-included-as-standard]').classList.add('hide');\r\n } else {\r\n sessionStorage.setItem(`${addonForm.id}IncludedAsStandard`, 'true');\r\n addonForm.querySelector('[data-included-as-standard]').classList.remove('hide');\r\n }\r\n }\r\n });\r\n }\r\n });\r\n }\r\n\r\n async function updateAddOn(addon, eventTarget, isMultiTierBreakdown) {\r\n const addonForm = eventTarget.closest('form');\r\n const addonSpinner = addon.querySelector(`[for=\"${eventTarget.id}\"] [data-addon-spinner]`);\r\n addonSpinner.classList.remove('hide');\r\n\r\n if (typeof bgl.common.pubsub !== 'undefined') {\r\n bgl.common.pubsub.emit('fakeFormSubmit', addon.id || addonForm.action || 'unknown');\r\n }\r\n\r\n const select = addon.querySelector('select');\r\n\r\n if (select) select.removeAttribute('disabled');\r\n\r\n const originalFormData = new FormData(addonForm);\r\n let formData = new FormData();\r\n\r\n if (!isMultiTierBreakdown) {\r\n for (const [key, value] of originalFormData.entries()) {\r\n if (key == `${addonForm.id.toLowerCase()}-is-addon-selected`) {\r\n formData.append('IsAddonSelected', value);\r\n } else {\r\n formData.append(key, value);\r\n }\r\n }\r\n } else {\r\n formData = originalFormData;\r\n }\r\n formData.delete('radio-Tier');\r\n\r\n const dataToPost = new URLSearchParams(formData).toString();\r\n\r\n if (select) select.setAttribute('disabled', '');\r\n\r\n bgl.common.fetch.formPost(addonForm.action, {\r\n body: dataToPost,\r\n }).then(async (response) => {\r\n const responseBody = await response.json();\r\n if (!response.ok || !responseBody?.isSuccess) {\r\n updateAddonApiCallError(responseBody, responseBody, response.statusText, dataToPost);\r\n } else {\r\n basketUpdatedNotification = responseBody.houstonMessage;\r\n pollBasket(eventTarget);\r\n }\r\n }).catch((error) =>\r\n updateAddonApiCallError(null, error, error.statusText, dataToPost),\r\n );\r\n }\r\n\r\n function updateAddonApiCallError(responseBody, responseError, responseStatusText, dataPosted) {\r\n bgl.common.telemetry.logEvent(\r\n 'DemandsAndNeeds bgl.components.demandsandneeds.addons updateAddonError called',\r\n {\r\n status: responseStatusText,\r\n errorThrown: responseError,\r\n dataPosted: dataPosted,\r\n responseData: responseBody,\r\n });\r\n bgl.common.utilities.errorRedirect(configuration.ErrorRedirectUrl);\r\n }\r\n\r\n function pollBasket(eventTarget) {\r\n const params = {\r\n callback: function() {\r\n pollBasketCallback(eventTarget);\r\n },\r\n noSpinner: true,\r\n };\r\n bgl.common.pubsub.emit('PollBasket', params);\r\n }\r\n\r\n function pollBasketCallback(eventTarget) {\r\n const callback = function() {\r\n updateBasketCallback();\r\n };\r\n\r\n setTimeout(function() {\r\n disableElements(false);\r\n }, 1000);\r\n const addonTick = document.querySelector(`[for=\"${eventTarget.id}\"] [data-addon-tick]`);\r\n const addonSpinner = document.querySelector(`[for=\"${eventTarget.id}\"] [data-addon-spinner]`);\r\n const addonButtonContent = document.querySelector(`[for=\"${eventTarget.id}\"] [data-button-content]`);\r\n\r\n addonSpinner.classList.add('hide');\r\n\r\n if (addonTick) {\r\n addonTick.classList.remove('hide');\r\n }\r\n\r\n if (addonButtonContent) {\r\n addonButtonContent.classList.remove('hide');\r\n }\r\n bgl.common.pubsub.emit('UpdateBasket', callback());\r\n }\r\n\r\n function updateBasketCallback() {\r\n const callback = function() {\r\n refreshHoustonContextCallback();\r\n };\r\n bgl.common.pubsub.emit('refreshHoustonContext', callback);\r\n }\r\n\r\n function refreshHoustonContextCallback() {\r\n const isAnnual = document.getElementById('demands-and-needs-isAnnual').innerText.toLowerCase();\r\n let message;\r\n\r\n if (isAnnual === 'true') {\r\n message = basketUpdatedNotification.annual;\r\n } else {\r\n message = basketUpdatedNotification.monthly;\r\n }\r\n\r\n bgl.common.pubsub.emit('showNotification', message);\r\n basketUpdatedNotification = null;\r\n }\r\n\r\n function disableElements(disable) {\r\n const elements = document.querySelectorAll(\r\n `button:not([data-tooltip-open], [data-tooltip-close]), \r\n a, select, label, [data-tier], .shopping-basket, #Houston`,\r\n );\r\n\r\n if (disable === true) {\r\n elements.forEach((element) => {\r\n element.classList.add('disabled');\r\n element.setAttribute('disabled', disable);\r\n });\r\n } else {\r\n elements.forEach((element) => {\r\n element.classList.remove('disabled');\r\n element.removeAttribute('disabled');\r\n });\r\n };\r\n }\r\n\r\n function validateAddons() {\r\n let addonsAreValid = true;\r\n\r\n if (!configuration.SkipAddOnValidation) {\r\n [...document.querySelectorAll('form')].forEach((addonForm) => {\r\n if (addonForm.id == 'Breakdown') {\r\n if (!addonForm.querySelectorAll('input[type=\"radio\"]:checked').length > 0) {\r\n showErrorStyling(addonForm);\r\n addonsAreValid = false;\r\n }\r\n } else if (!$(addonForm).valid()) {\r\n showErrorStyling(addonForm);\r\n addonsAreValid = false;\r\n }\r\n });\r\n\r\n if (!addonsAreValid) {\r\n scrollToFirstAddonWithError();\r\n }\r\n }\r\n\r\n return addonsAreValid;\r\n }\r\n\r\n function showErrorStyling(addonForm) {\r\n const microCopy = document.getElementById('microCopy');\r\n const alert = addonForm.querySelector('#error-banner');\r\n const isSingleTierBreakdown = addonForm.hasAttribute('data-single-tier-breakdown');\r\n const breakdownCarousel = addonForm.querySelector('[data-uil-carousel]:not([hide])');\r\n\r\n if (!isSingleTierBreakdown && breakdownCarousel) {\r\n breakdownCarousel.querySelectorAll('[data-tier-select-btn]').forEach((label) => {\r\n label.classList.add('uil-radio-btn--error');\r\n });\r\n\r\n if (document.getElementById('breakdown-carousel-no-label')) {\r\n document.getElementById('breakdown-carousel-no-label').classList.add('uil-radio-btn--error');\r\n }\r\n }\r\n\r\n addonForm.classList.add('error');\r\n alert.classList.remove('hide');\r\n alert.querySelector('#error-heading').textContent =\r\n `Please select if you would like to add ${addonForm.dataset.addonName} to your policy`;\r\n\r\n if (microCopy) {\r\n microCopy.classList.add('micro-copy--error');\r\n }\r\n }\r\n\r\n function scrollToFirstAddonWithError() {\r\n let firstAddonWithError = document.querySelector('form.error');\r\n\r\n if (firstAddonWithError.id == 'Breakdown') {\r\n const carousel = document.querySelector('[data-uil-carousel-wrapper]');\r\n firstAddonWithError = isVisible(carousel) ? carousel : document.getElementById('breakdown-table');\r\n }\r\n\r\n const addonWithErrorYesBtn = firstAddonWithError.querySelector('[data-type=\"addon-yes\"]');\r\n const addonWithErrorYesBtnLabel =\r\n firstAddonWithError.querySelector(`label[for=\"${addonWithErrorYesBtn.id}\"]`);\r\n\r\n addonWithErrorYesBtnLabel.focus({preventScroll: true});\r\n addonWithErrorYesBtnLabel.scrollIntoView({behavior: 'smooth', block: 'center'});\r\n }\r\n\r\n function selectBreakdownTier(breakdownAddon, selectedTier, isBreakdownTable) {\r\n const code = selectedTier.dataset.coverLevelCode;\r\n const tierNumber = selectedTier.dataset.tier;\r\n\r\n if (breakdownAddon.querySelector('[data-included-as-standard]')) {\r\n if (tierNumber > 1) {\r\n sessionStorage.setItem(`${breakdownAddon.id}IncludedAsStandard`, 'false');\r\n breakdownAddon.querySelector('[data-included-as-standard]').classList.add('hide');\r\n } else {\r\n sessionStorage.setItem(`${breakdownAddon.id}IncludedAsStandard`, 'true');\r\n breakdownAddon.querySelector('[data-included-as-standard]').classList.remove('hide');\r\n }\r\n }\r\n\r\n document.getElementById('breakdown-code').value = code;\r\n\r\n if (isBreakdownTable && tierNumber > 0) {\r\n setBreakdownTableTierStyling(breakdownAddon, tierNumber);\r\n mirrorBreakdownChanges(isBreakdownTable, tierNumber);\r\n } else if (tierNumber == 0) {\r\n const breakdownCarouselNoButton = document.getElementById('breakdown-carousel-no');\r\n bgl.uil.carousel.deselectAll(document.querySelector('[data-uil-carousel]'));\r\n\r\n if (isBreakdownTable) {\r\n setBreakdownTableTierStyling(breakdownAddon, tierNumber);\r\n breakdownAddon.querySelector('[data-tier=\"0\"]').classList.add('active');\r\n\r\n if (breakdownCarouselNoButton) {\r\n breakdownCarouselNoButton.checked = true;\r\n document.getElementById('breakdown-carousel-no-label').classList.add('active');\r\n }\r\n } else {\r\n if (breakdownCarouselNoButton) {\r\n breakdownCarouselNoButton.checked = true;\r\n document.getElementById('breakdown-carousel-no-label').classList.add('active');\r\n }\r\n\r\n mirrorBreakdownChanges(isBreakdownTable, tierNumber);\r\n }\r\n } else {\r\n mirrorBreakdownChanges(isBreakdownTable, tierNumber);\r\n }\r\n };\r\n\r\n function showPncdYesNoBasket() {\r\n const pncdYesLabel = document.getElementById('NoClaimsDiscountProtection-yes-label');\r\n const pncdNoLabel = document.getElementById('NoClaimsDiscountProtection-no-label');\r\n const pncdYesLabelText = document.getElementById('NoClaimsDiscountProtection-yes-label-text');\r\n const pncdNoLabelText = document.getElementById('NoClaimsDiscountProtection-no-label-text');\r\n\r\n pncdYesLabelText.innerText = 'Yes';\r\n pncdYesLabel.classList.remove('full-width');\r\n pncdNoLabelText.innerText = 'No';\r\n pncdNoLabel.classList.remove('full-width');\r\n\r\n document.getElementById('NoClaimsDiscountProtection-DidYouKnow-AddRemove').classList.add('hide');\r\n document.getElementById('NoClaimsDiscountProtection-DidYouKnow-YesNo').classList.remove('hide');\r\n document.getElementById('NoClaimsDiscountProtection-basket-price').classList.remove('hide');\r\n };\r\n\r\n function mirrorBreakdownChanges(isBreakdownTable, tierNumber) {\r\n if (isBreakdownTable) {\r\n const carousel = document.querySelector('[data-uil-carousel]');\r\n\r\n bgl.uil.carousel.deselectAll(carousel);\r\n bgl.uil.carousel.selectTier(carousel, tierNumber);\r\n } else {\r\n setBreakdownTableTierStyling(document.querySelector('#breakdown-table'), tierNumber);\r\n }\r\n };\r\n\r\n function setBreakdownTableTierStyling(breakdownAddon, tierNumber) {\r\n [...breakdownAddon.querySelectorAll('.active')].forEach((activeElement) => {\r\n activeElement.classList.remove('active');\r\n });\r\n\r\n [...breakdownAddon.querySelectorAll('label[data-tier]')].forEach((tier) => {\r\n const tierText = tier.querySelector('[data-breakdown-button-text]');\r\n const tierTick = tier.querySelector('[data-addon-tick]');\r\n if (tierText.innerText === 'Selected') {\r\n tierText.innerText = 'Select';\r\n tierTick.classList.add('hide');\r\n }\r\n });\r\n\r\n const selectedTier = breakdownAddon.querySelector(`[data-tier=\"${tierNumber}\"]`);\r\n\r\n if (tierNumber > 0) {\r\n selectedTier.querySelector('[data-breakdown-button-text]').innerText = 'Selected';\r\n\r\n [...breakdownAddon.querySelectorAll('tbody tr')].forEach((tableRow) => {\r\n tableRow.querySelectorAll('td')[tierNumber - 1].classList.add('active');\r\n });\r\n }\r\n selectedTier.closest('th').classList.add('active');\r\n\r\n breakdownAddon.querySelector(`[data-tier-input=\"${tierNumber}\"]`).checked = true;\r\n }\r\n\r\n function isVisible(element) {\r\n const style = window.getComputedStyle(element);\r\n return style.display !== 'none';\r\n }\r\n\r\n function loadBreakdownCarouselLogic(carousel) {\r\n const breakdownInfoIcons = [...document.querySelectorAll('[data-breakdown-info-icon]')];\r\n breakdownInfoIcons.forEach((icon) => {\r\n icon.addEventListener('click', (event) => {\r\n event.preventDefault();\r\n const breakdownInfoTooltipId = event.currentTarget.dataset.targetTooltip;\r\n const tierCard = carousel.querySelector(`[data-tier=\"${event.currentTarget.dataset.iconTier}\"]`);\r\n const isTooltipOpen = tierCard.querySelector('[data-breakdown-tooltip]:not(.hide)');\r\n if (isTooltipOpen) {\r\n isTooltipOpen.classList.add('hide');\r\n }\r\n carousel.querySelector('#' + breakdownInfoTooltipId).classList.remove('hide');\r\n });\r\n });\r\n\r\n const breakdownInfoCloseButtons = [...document.querySelectorAll('[data-breakdown-tooltip-close]')];\r\n breakdownInfoCloseButtons.forEach((closeButton) => {\r\n closeButton.addEventListener('click', (event) => {\r\n event.preventDefault();\r\n const tooltip = event.currentTarget.closest('.uil-carousel-tooltip');\r\n tooltip.classList.add('hide');\r\n });\r\n });\r\n\r\n const breakdownCarouselNoButton = document.getElementById('breakdown-carousel-no');\r\n if (breakdownCarouselNoButton) {\r\n breakdownCarouselNoButton.addEventListener('click', (event) => {\r\n bgl.uil.carousel.deselectAll(carousel);\r\n\r\n if (document.getElementById('breakdown-basket-error')) {\r\n document.getElementById('breakdown-basket-error').remove();\r\n }\r\n\r\n document.getElementById('breakdown-no-label').classList.add('active');\r\n document.getElementById('breakdown-no').checked = true;\r\n });\r\n }\r\n }\r\n\r\n function setTierBreakdownLogic(addonForm, breakdownTier, breakdownAddon, eventTargetElement) {\r\n const addonId = addonForm.id.toLocaleLowerCase();\r\n const isBreakdownTable = breakdownAddon.getAttribute('data-breakdown-table') !== null;\r\n const isBreakdownCarousel = !isBreakdownTable;\r\n const breakdownCarouselAddonLabel = eventTargetElement.closest('label');\r\n const formattedAddonId = addonId.toLocaleLowerCase();\r\n\r\n if (addonForm.querySelectorAll('input[type=\"radio\"]:checked').length > 0) {\r\n const carouselButtons =\r\n addonForm.querySelector('[data-uil-carousel]').querySelectorAll('[data-tier-select-btn]');\r\n carouselButtons.forEach((button) => {\r\n button.classList.remove('uil-radio-btn--error');\r\n });\r\n\r\n if (document.getElementById('breakdown-carousel-no-label')) {\r\n document.getElementById('breakdown-carousel-no-label')\r\n .classList.remove('uil-radio-btn--error');\r\n }\r\n\r\n if (addonForm.querySelector('#IsAddOnSelected-error')) {\r\n addonForm.querySelector('#IsAddOnSelected-error').remove();\r\n }\r\n addonForm.classList.remove('error');\r\n addonForm.querySelector('#error-banner').classList.add('hide');\r\n }\r\n\r\n if (eventTargetElement.dataset.type === 'addon-yes') {\r\n if (sessionStorage.getItem(`${formattedAddonId}-yes`) == `${formattedAddonId}-${breakdownTier}`) {\r\n return;\r\n }\r\n\r\n disableElements(true);\r\n\r\n let breakdownTierSelectionElement = addonForm.querySelector('[data-breakdown-addon-table]');\r\n if (isBreakdownCarousel) {\r\n breakdownTierSelectionElement = addonForm.querySelector('[data-uil-carousel]');\r\n breakdownCarouselAddonLabel.querySelector('[data-button-content]').classList.add('hide');\r\n }\r\n\r\n if (isBreakdownCarousel && !breakdownCarouselAddonLabel.hasAttribute('data-active-button')) {\r\n breakdownCarouselAddonLabel.querySelector('[data-button-content]').classList.add('hide');\r\n }\r\n\r\n selectBreakdownTier(breakdownTierSelectionElement, eventTargetElement.labels[0], isBreakdownTable);\r\n\r\n const addonTick = document.querySelector(`#${formattedAddonId}-no-label [data-addon-tick]`);\r\n if (addonTick) {\r\n addonTick.classList.add('hide');\r\n }\r\n\r\n sessionStorage.setItem(`${addonId}SelectedAtAgg`, 'false');\r\n\r\n if (addonForm.querySelector('[data-accordion-button]')) {\r\n document.getElementById(`${addonId}SelectedIcon`).classList.remove('hide');\r\n\r\n if (addonForm.querySelector('[data-preselected-at-agg]')) {\r\n document.getElementById(`${addonId}PreselectedAtAgg`).classList.add('hide');\r\n }\r\n }\r\n\r\n updateAddOn(addonForm, eventTargetElement, true).then(() => {\r\n sessionStorage.setItem(`${formattedAddonId}-yes`, `${formattedAddonId}-${breakdownTier}`);\r\n sessionStorage.removeItem(`${formattedAddonId}-no`);\r\n\r\n if (addonForm.querySelector('[data-upgrade-panel]')) {\r\n handleMultitierUpgradePanel(addonForm);\r\n }\r\n });\r\n }\r\n\r\n if (eventTargetElement.dataset.type === 'addon-no') {\r\n if (sessionStorage.getItem(`${formattedAddonId}-no`)) {\r\n return;\r\n }\r\n\r\n disableElements(true);\r\n\r\n let breakdownTierSelectionElement = addonForm.querySelector('[data-breakdown-addon-table]');\r\n if (isBreakdownCarousel) {\r\n breakdownTierSelectionElement = document.querySelector('[data-uil-carousel-not-required]');\r\n }\r\n\r\n selectBreakdownTier(breakdownTierSelectionElement, eventTargetElement.labels[0], isBreakdownTable);\r\n\r\n sessionStorage.setItem(`${formattedAddonId}-no`, `${formattedAddonId}-no`);\r\n sessionStorage.setItem(`${addonId}SelectedAtAgg`, 'false');\r\n\r\n if (addonForm.querySelector('[data-accordion-button]')) {\r\n document.getElementById(`${addonId}SelectedIcon`).classList.toggle('hide');\r\n\r\n if (addonForm.querySelector('[data-preselected-at-agg]')) {\r\n document.getElementById(`${addonId}PreselectedAtAgg`).classList.add('hide');\r\n }\r\n }\r\n\r\n if (sessionStorage.getItem(`${formattedAddonId}-yes`)) {\r\n sessionStorage.removeItem(`${formattedAddonId}-yes`);\r\n if (breakdownTier > 0) {\r\n breakdownCarouselAddonLabel.querySelector('[data-button-content]').classList.add('hide');\r\n }\r\n\r\n updateAddOn(addonForm, eventTargetElement, true);\r\n } else {\r\n setTimeout(function() {\r\n disableElements(false);\r\n }, 1000);\r\n }\r\n\r\n if (addonForm.querySelector('[data-upgrade-panel]')) {\r\n handleMultitierUpgradePanel(addonForm);\r\n }\r\n }\r\n }\r\n\r\n return {\r\n init: initComponent,\r\n refreshHoustonContextCallback,\r\n disableElements,\r\n };\r\n})($);\r\n// eslint-disable-next-line no-var\r\nvar bgl = window.bgl || {};\r\nbgl.components = bgl.components || {};\r\nbgl.components.demandsandneeds = bgl.components.demandsandneeds || {};\r\n\r\nbgl.components.demandsandneeds.bundledextras = (() => {\r\n let configuration;\r\n let tableActiveAddons = [];\r\n let carouselActiveAddons = [];\r\n let isAnnual = false;\r\n let isAnyCheckboxChecked = false;\r\n let buildYourOwnAnnual = 0.00;\r\n let buildYourOwnDeposit = 0.00;\r\n let buildYourOwnInstalment = 0.00;\r\n let buildYourOwnTotalPayable = 0.00;\r\n\r\n function initComponent(componentConfiguration) {\r\n configuration = componentConfiguration;\r\n\r\n setTableEvents();\r\n setCarouselEvents();\r\n\r\n document.getElementById('ContinueButton').addEventListener('click', () => {\r\n bgl.components.pagereloader.poller.reloadPage(null, true, configuration.NextPageUrl);\r\n });\r\n }\r\n\r\n function loadComponentByCoverKey(containerSelector, options) {\r\n bgl.common.loader.load({}, options.actionUrl, containerSelector);\r\n }\r\n\r\n function setSliderButtonEvents(buttons) {\r\n const SPACE_KEYCODE = 32;\r\n const ENTER_KEYCODE = 13;\r\n\r\n buttons.forEach((button) => {\r\n button.addEventListener('click', (event) => {\r\n event.preventDefault();\r\n\r\n loadComponentByCoverKey(\r\n event.currentTarget.getAttribute('data-container'),\r\n {\r\n actionUrl: event.currentTarget.getAttribute('data-action-url'),\r\n });\r\n });\r\n\r\n button.addEventListener('keyup', (event) => {\r\n event.preventDefault();\r\n const code = event.charCode || event.keyCode;\r\n\r\n if (code === ENTER_KEYCODE || code === SPACE_KEYCODE) {\r\n event.currentTarget.click();\r\n }\r\n });\r\n });\r\n }\r\n\r\n function setTableEvents() {\r\n const table = document.querySelector('[data-uil-table]');\r\n const tierSelectButtons = table.querySelectorAll('[data-tier-select-btn]');\r\n const buildYourOwnCheckboxes = table.querySelectorAll('[data-checkbox]');\r\n tableActiveAddons = Array.from(table.querySelectorAll('[data-addon-already-selected]'));\r\n\r\n setSliderButtonEvents(table.querySelectorAll('[data-action-url]'));\r\n\r\n tierSelectButtons.forEach((button) =>\r\n button.addEventListener('click', () => {\r\n const dataTierLevel = button.getAttribute('data-tier');\r\n let addonsListToPatch = Array.from(table.querySelectorAll(\r\n `td[data-information-tier=\"${dataTierLevel}\"][data-is-selected][data-included-as-standard=\"False\"]`,\r\n ));\r\n\r\n buildYourOwnCheckboxes.forEach((checkbox) => {\r\n checkbox.setAttribute('data-is-selected', checkbox.checked);\r\n });\r\n\r\n addonsListToPatch = filteredAddonsToPatch(tableActiveAddons, addonsListToPatch, button, true);\r\n updateAddOns(button, addonsListToPatch, tableActiveAddons);\r\n }),\r\n );\r\n\r\n buildYourOwnCheckboxes.forEach((checkbox) => {\r\n checkbox.addEventListener('change', () => {\r\n checkbox.setAttribute('data-is-selected', checkbox.checked);\r\n let addonsListToPatch = Array.from(buildYourOwnCheckboxes);\r\n\r\n addonsListToPatch = filteredAddonsToPatch(tableActiveAddons, addonsListToPatch, checkbox, false);\r\n updateAddOns(checkbox, addonsListToPatch, tableActiveAddons);\r\n });\r\n });\r\n }\r\n\r\n function setCarouselEvents() {\r\n const carousel = document.querySelector('[data-uil-carousel]');\r\n const tierSelectButtons = carousel.querySelectorAll('[data-tier-select-btn]');\r\n const buildYourOwnCheckboxes = [...carousel.querySelectorAll('[data-checkbox]')];\r\n const includedAsStandardTier = carousel.querySelector('[data-included]');\r\n carouselActiveAddons = Array.from(carousel.querySelectorAll('[data-addon-already-selected]'));\r\n isAnnual = document.getElementById('IsAnnual').value == 'True';\r\n\r\n setSliderButtonEvents(carousel.querySelectorAll('[data-action-url]'));\r\n\r\n tierSelectButtons.forEach((button) =>\r\n button.addEventListener('click', () => {\r\n const dataTierLevel = button.getAttribute('data-tier');\r\n let addonsListToPatch = Array.from(carousel.querySelectorAll(\r\n `[data-information-tier=\"${dataTierLevel}\"][data-is-selected][data-included-as-standard=\"False\"]`,\r\n ));\r\n\r\n buildYourOwnCheckboxes.forEach((checkbox) => {\r\n checkbox.setAttribute('data-is-selected', checkbox.checked);\r\n });\r\n\r\n deselectAll(carousel, buildYourOwnCheckboxes);\r\n\r\n if (!button.hasAttribute('data-active-button')) {\r\n selectTier(button.getAttribute('data-tier'), carousel);\r\n }\r\n\r\n addonsListToPatch = filteredAddonsToPatch(carouselActiveAddons, addonsListToPatch, button, true);\r\n updateAddOns(button, addonsListToPatch, carouselActiveAddons);\r\n\r\n if (button.hasAttribute('data-active-button')) {\r\n buildYourOwnAnnual = buildYourOwnDeposit = buildYourOwnInstalment = buildYourOwnTotalPayable = 0.00;\r\n }\r\n }),\r\n );\r\n\r\n buildYourOwnCheckboxes.forEach((checkbox) => {\r\n checkbox.addEventListener('change', () => {\r\n checkbox.setAttribute('data-is-selected', checkbox.checked);\r\n let addonsListToPatch = Array.from(buildYourOwnCheckboxes);\r\n\r\n addonsListToPatch = filteredAddonsToPatch(carouselActiveAddons, addonsListToPatch, checkbox, false);\r\n updateAddOns(checkbox, addonsListToPatch, carouselActiveAddons);\r\n });\r\n });\r\n\r\n if (sessionStorage.getItem('IsBuildYourOwn') === null) {\r\n sessionStorage.setItem('IsBuildYourOwn', 'false');\r\n } else if (sessionStorage.getItem('IsBuildYourOwn').toLowerCase() === 'true') {\r\n checkedBuildYourOwn(JSON.parse(sessionStorage.getItem('buildYourOwnList'), carousel));\r\n }\r\n\r\n buildYourOwnCheckboxes.forEach((checkbox) => {\r\n const checkboxId = checkbox.id;\r\n const checkLabel = carousel.querySelector(`[data-label=\"${checkboxId}\"]`);\r\n\r\n if (checkbox.checked) {\r\n sessionStorage.setItem('IsBuildYourOwn', 'true');\r\n isAnyCheckboxChecked = true;\r\n }\r\n\r\n checkbox.addEventListener('change', () => {\r\n if (!document.querySelector('[data-build-carousel-add-product]').classList.contains('hide')) {\r\n toggleBuildYourOwnInfoContent();\r\n };\r\n\r\n if (checkbox.checked) {\r\n sessionStorage.setItem('IsBuildYourOwn', 'true');\r\n setSessionStorageList(checkbox);\r\n checkLabel.innerText = 'Remove';\r\n\r\n if (!carousel.querySelector('[data-tier=\"Build\"]').hasAttribute('data-active')) {\r\n deselectAll(carousel, buildYourOwnCheckboxes);\r\n }\r\n selectTier(checkbox.getAttribute('data-tier'), carousel);\r\n\r\n toggleBuildYourOwnInfoContent();\r\n\r\n if (isAnnual) {\r\n buildYourOwnAnnual += parseFloat(checkbox.getAttribute('data-annual-amount'));\r\n\r\n document.querySelector('[data-build-carousel-annual-price]')\r\n .innerText = `${buildYourOwnAnnual.toFixed(2)} /year`;\r\n } else {\r\n buildYourOwnDeposit += parseFloat(\r\n checkbox.getAttribute('data-monthly-deposit-amount'),\r\n );\r\n buildYourOwnInstalment += parseFloat(\r\n checkbox.getAttribute('data-monthly-instalment-amount'),\r\n );\r\n buildYourOwnTotalPayable += parseFloat(\r\n checkbox.getAttribute('data-monthly-total-payable-amount'),\r\n );\r\n\r\n updateBuildYourOwnTotalsContent(checkbox);\r\n }\r\n } else {\r\n checkLabel.innerText = 'Add';\r\n removeFromSessionStorage(checkbox);\r\n if (!isCheckboxChecked(buildYourOwnCheckboxes)) {\r\n deselectAll(carousel, buildYourOwnCheckboxes);\r\n checkLabel.innerText = 'Add';\r\n\r\n if (includedAsStandardTier.getAttribute('data-included').toLowerCase() === 'true') {\r\n selectTier(includedAsStandardTier.getAttribute('data-tier'), carousel);\r\n }\r\n }\r\n\r\n if (isAnnual) {\r\n const annualAmount = parseFloat(checkbox.getAttribute('data-annual-amount'));\r\n buildYourOwnAnnual -= annualAmount;\r\n\r\n document.querySelector('[data-build-carousel-annual-price]')\r\n .innerText = `${buildYourOwnAnnual.toFixed(2)} /year`;\r\n } else {\r\n buildYourOwnDeposit -= parseFloat(\r\n checkbox.getAttribute('data-monthly-deposit-amount'),\r\n );\r\n buildYourOwnInstalment -= parseFloat(\r\n checkbox.getAttribute('data-monthly-instalment-amount'),\r\n );\r\n buildYourOwnTotalPayable -= parseFloat(\r\n checkbox.getAttribute('data-monthly-total-payable-amount'),\r\n );\r\n\r\n updateBuildYourOwnTotalsContent(checkbox);\r\n }\r\n }\r\n });\r\n });\r\n\r\n if (isAnyCheckboxChecked) {\r\n const checkedCheckboxes = buildYourOwnCheckboxes.filter((checkbox) => checkbox.checked);\r\n\r\n checkedCheckboxes.forEach((checkbox) => {\r\n if (isAnnual) {\r\n buildYourOwnAnnual += parseFloat(checkbox.getAttribute('data-annual-amount'));\r\n\r\n document.querySelector('[data-build-carousel-annual-price]')\r\n .innerText = `${buildYourOwnAnnual.toFixed(2)} /year`;\r\n } else {\r\n buildYourOwnDeposit = parseFloat(checkbox.getAttribute('data-monthly-deposit-amount'));\r\n buildYourOwnInstalment = parseFloat(checkbox.getAttribute('data-monthly-instalment-amount'));\r\n buildYourOwnTotalPayable = parseFloat(checkbox.getAttribute('data-monthly-total-payable-amount'));\r\n\r\n updateBuildYourOwnTotalsContent(checkbox);\r\n }\r\n });\r\n } else {\r\n sessionStorage.setItem('IsBuildYourOwn', 'false');\r\n const activeElement = carousel.querySelectorAll('[data-active][data-tier=\"Build\"]');\r\n removeActive(activeElement);\r\n setDefaultBuildYourOwnPricingHeaderContent();\r\n\r\n const activeElements = carousel.querySelectorAll('[data-active]');\r\n if (activeElements.length == 0 &&\r\n includedAsStandardTier.getAttribute('data-included').toLowerCase() === 'true') {\r\n deselectAll(carousel, buildYourOwnCheckboxes);\r\n selectTier(includedAsStandardTier.getAttribute('data-tier'), carousel);\r\n }\r\n }\r\n }\r\n\r\n async function updateAddOns(selectElement, addonsListToPatch, activeAddons) {\r\n const addonUpdates = [];\r\n\r\n if (addonsListToPatch.length > 0) {\r\n toggleClickableElements(true);\r\n\r\n if (typeof bgl.common.pubsub !== 'undefined') {\r\n bgl.common.pubsub.emit('fakeFormSubmit', selectElement.id || selectElement.action || 'unknown');\r\n }\r\n\r\n addonsListToPatch.forEach((addon) => {\r\n const formData = buildFormData(addon, selectElement);\r\n const dataToPost = new URLSearchParams(formData).toString();\r\n\r\n addonUpdates.push(\r\n updateSingleAddon(\r\n configuration.TenantConfiguration.ApplicationPath + 'DemandsAndNeedsComponent/UpdateAddon',\r\n dataToPost,\r\n activeAddons,\r\n addon,\r\n selectElement,\r\n ),\r\n );\r\n\r\n updateSessionStorageValue(selectElement, addon);\r\n });\r\n\r\n Promise.all(addonUpdates).then((responses) => {\r\n pollBasket(responses);\r\n }).catch((error) => {\r\n updateAddonApiCallError(null, error, error.statusText, '');\r\n });\r\n }\r\n }\r\n\r\n function updateSessionStorageValue(selectElement, addon) {\r\n const addonSessionStorageKey = `${addon.getAttribute('data-cover-name').replace(/\\s/g, '')}-`;\r\n const isTheAddonSelected = isAddonSelected(selectElement, addon).toLocaleLowerCase();\r\n const isTheAddonSelectedPreviousValue = isAddonSelected(selectElement, addon, true).toLocaleLowerCase();\r\n\r\n sessionStorage.removeItem(`${addonSessionStorageKey}${isTheAddonSelectedPreviousValue}`);\r\n\r\n sessionStorage.setItem(\r\n `${addonSessionStorageKey}${isTheAddonSelected}`,\r\n `${addonSessionStorageKey}${isTheAddonSelected}`,\r\n );\r\n }\r\n\r\n function updateSingleAddon(url, dataToPost, activeAddons, patchedAddon, selectElement) {\r\n return bgl.common.fetch.formPost(url, {\r\n body: dataToPost,\r\n }).then(async (response) => {\r\n const responseBody = await response.json();\r\n if (!response.ok || !responseBody?.isSuccess) {\r\n updateAddonApiCallError(responseBody, responseBody, response.statusText, dataToPost);\r\n }\r\n\r\n updateActiveAddon(activeAddons, patchedAddon, selectElement);\r\n }).catch((error) =>\r\n updateAddonApiCallError(null, error, error.statusText, dataToPost),\r\n );\r\n }\r\n\r\n function buildFormData(addon, selectElement) {\r\n const formData = new FormData();\r\n const isTheAddonSelected = isAddonSelected(selectElement, addon);\r\n\r\n formData.append('CoverId', addon.getAttribute('data-cover-id'));\r\n formData.append('CoverName', addon.getAttribute('data-cover-name'));\r\n formData.append('SelectedCoverLevelCode', addon.getAttribute('data-selected-cover-level-code'));\r\n formData.append('IsAddonSelected', isTheAddonSelected);\r\n formData.append(\r\n '__RequestVerificationToken',\r\n document.querySelector('[name=\"__RequestVerificationToken\"]').value,\r\n );\r\n\r\n return formData;\r\n }\r\n\r\n function isAddonSelected(selectElement, addon, getPreviousValue) {\r\n const hasClickedToSelectAddon = selectElement.type === 'checkbox' ?\r\n selectElement.checked :\r\n selectElement.getAttribute('data-active-button') != null;\r\n\r\n let isTheAddonSelected = hasClickedToSelectAddon &&\r\n addon.getAttribute('data-is-selected').toLowerCase() === 'true';\r\n\r\n if (getPreviousValue) {\r\n isTheAddonSelected = !isTheAddonSelected;\r\n }\r\n\r\n if (isTheAddonSelected) {\r\n return 'Yes';\r\n } else {\r\n return 'No';\r\n }\r\n }\r\n\r\n function updateAddonApiCallError(responseBody, responseError, responseStatusText, dataPosted) {\r\n bgl.common.telemetry.logEvent(\r\n 'DemandsAndNeeds bgl.components.demandsandneeds.bundledextras updateAddonError called',\r\n {\r\n status: responseStatusText,\r\n errorThrown: responseError,\r\n dataPosted: dataPosted,\r\n responseData: responseBody,\r\n });\r\n bgl.common.utilities.errorRedirect(configuration.ErrorRedirectUrl);\r\n }\r\n\r\n function pollBasket() {\r\n const params = {\r\n callback: () => {\r\n pollBasketCallback();\r\n },\r\n noSpinner: true,\r\n };\r\n bgl.common.pubsub.emit('PollBasket', params);\r\n }\r\n\r\n function pollBasketCallback() {\r\n const callback = () => {\r\n updateBasketCallback();\r\n };\r\n bgl.common.pubsub.emit('UpdateBasket', callback());\r\n }\r\n\r\n function updateBasketCallback() {\r\n const callback = () => {\r\n refreshHoustonContextCallback();\r\n };\r\n bgl.common.pubsub.emit('refreshHoustonContext', callback);\r\n }\r\n\r\n function refreshHoustonContextCallback() {\r\n const isAnnual = document.getElementById('IsAnnual').value.toLowerCase() === 'true';\r\n\r\n bgl.common.pubsub.emit('showNotification', getNotificationMessage(isAnnual));\r\n toggleClickableElements(false);\r\n }\r\n\r\n function getNotificationMessage(isAnnual) {\r\n switch (isAnnual) {\r\n case true:\r\n return 'OK ##FIRSTNAME##, Your selection has been updated. Your new price is £##PRICE##.';\r\n case false:\r\n // eslint-disable-next-line max-len\r\n return 'OK ##FIRSTNAME##, Your selection has been added. Your new price is £##PRICE## a month with a deposit of £##DEPOSIT##.';\r\n default:\r\n return 'OK ##FIRSTNAME##, Your selection has been updated. Your new price is in your basket.';\r\n }\r\n }\r\n\r\n function filteredAddonsToPatch(activeAddons, addonsToPatch, selectElement, tierSelectButtonHasBeenClicked) {\r\n const filteredAddonsToPatch = [];\r\n\r\n addonsToPatch.forEach((patchAddon) => {\r\n const activeAddon = activeAddons.find(\r\n (activeAddon) => activeAddon.getAttribute('data-cover-id') === patchAddon.getAttribute('data-cover-id'),\r\n );\r\n\r\n if (tierSelectButtonHasBeenClicked && selectElement.getAttribute('data-active-button') == null) {\r\n if (activeAddon.getAttribute('data-addon-already-selected').toLowerCase() === 'true') {\r\n const unselectPatchAddon = patchAddon.cloneNode(true);\r\n unselectPatchAddon.setAttribute('data-is-selected', 'False');\r\n\r\n filteredAddonsToPatch.push(unselectPatchAddon);\r\n }\r\n } else if (activeAddon.getAttribute('data-addon-already-selected').toLowerCase() !==\r\n patchAddon.getAttribute('data-is-selected').toLowerCase()) {\r\n filteredAddonsToPatch.push(patchAddon);\r\n }\r\n });\r\n\r\n return filteredAddonsToPatch;\r\n }\r\n\r\n function updateActiveAddon(activeAddons, patchedAddon, selectElement) {\r\n const activeAddon = activeAddons.find((activeAddon) =>\r\n activeAddon.getAttribute('data-cover-id') === patchedAddon.getAttribute('data-cover-id'));\r\n\r\n const hasClickedToSelectAddon = selectElement.type === 'checkbox' ?\r\n selectElement.checked :\r\n selectElement.getAttribute('data-active-button') != null;\r\n\r\n const isAddonSelected = hasClickedToSelectAddon &&\r\n patchedAddon.getAttribute('data-is-selected').toLowerCase() === 'true';\r\n\r\n activeAddon.setAttribute('data-addon-already-selected', isAddonSelected);\r\n }\r\n\r\n function toggleClickableElements(makeDisabled) {\r\n const clickableElements = document.querySelectorAll('[data-disable-submit]');\r\n\r\n clickableElements.forEach((element) => {\r\n if (makeDisabled) {\r\n element.setAttribute('disabled', 'disabled');\r\n } else {\r\n element.removeAttribute('disabled');\r\n }\r\n });\r\n }\r\n\r\n function isCheckboxChecked(checkboxes) {\r\n for (let i = 0; i < checkboxes.length; i++) {\r\n const checkbox = checkboxes[i];\r\n if (checkbox.checked) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n function deselectAll(carousel, checkboxes) {\r\n const activeElement = carousel.querySelectorAll('[data-active]');\r\n const activeButton = carousel.querySelector('[data-active-button]');\r\n const activeBuildYourOwn = carousel.querySelector('[data-tier=\"Build\"]').hasAttribute('data-active');\r\n\r\n checkboxes.forEach((checkbox) => {\r\n if (checkbox.checked && activeBuildYourOwn) {\r\n const checkboxId = checkbox.id;\r\n const checkLabel = carousel.querySelector(`[data-label=\"${checkboxId}\"]`);\r\n checkbox.checked = false;\r\n\r\n if (sessionStorage.getItem('buildYourOwnList') != null) {\r\n removeFromSessionStorage(checkbox);\r\n }\r\n\r\n sessionStorage.setItem('IsBuildYourOwn', 'false');\r\n checkLabel.innerText = 'Add';\r\n }\r\n });\r\n\r\n if (activeButton != null) {\r\n removeActiveButton(activeButton);\r\n }\r\n\r\n if (activeElement != null) {\r\n removeActive(activeElement);\r\n }\r\n\r\n setDefaultBuildYourOwnPricingHeaderContent();\r\n }\r\n\r\n function setDefaultBuildYourOwnPricingHeaderContent() {\r\n document.querySelector('[data-build-carousel-add-product]').classList.remove('hide');\r\n document.querySelector('[data-build-carousel-pricing]').classList.add('hide');\r\n document.querySelector('[data-build-carousel-info-section]').classList.add('justify-content--center');\r\n\r\n if (document.querySelector('[data-build-carousel-total-payable]') != null) {\r\n document.querySelector('[data-build-carousel-total-payable]').classList.add('hide');\r\n }\r\n }\r\n\r\n function removeActiveButton(activeButton) {\r\n const activeButtonIcon = activeButton.querySelector('[data-button-icon]');\r\n activeButton.querySelector('[data-button-text-active]').classList.add('hide');\r\n activeButton.querySelector('[data-button-text-inactive]').classList.remove('hide');\r\n\r\n activeButton.removeAttribute('data-active-button');\r\n\r\n if (activeButtonIcon?.classList?.contains('ui-icon-delete')) {\r\n activeButtonIcon.classList.remove('ui-icon-delete', 'ui-icon--white');\r\n activeButtonIcon.classList.add('ui-icon-shopping-cart');\r\n }\r\n }\r\n\r\n function selectTier(dataTier, carousel) {\r\n const tierElements = carousel.querySelectorAll(`[data-tier=\"${dataTier}\"]`);\r\n\r\n tierElements.forEach((element) => {\r\n if (element.tagName.toLowerCase() == 'button') {\r\n const icon = element.querySelector('[data-button-icon]');\r\n element.querySelector('[data-button-text-active]').classList.remove('hide');\r\n element.querySelector('[data-button-text-inactive]').classList.add('hide');\r\n element.setAttribute('data-active-button', '');\r\n if (icon && icon.classList.contains('ui-icon-shopping-cart')) {\r\n icon.classList.remove('ui-icon-shopping-cart');\r\n icon.classList.add('ui-icon-delete', 'ui-icon--white');\r\n }\r\n }\r\n });\r\n }\r\n\r\n function setSessionStorageList(checkbox) {\r\n if (sessionStorage.getItem('buildYourOwnList') === null) {\r\n sessionStorage.setItem('buildYourOwnList', JSON.stringify([checkbox.id]));\r\n } else {\r\n const listOfAddons = JSON.parse(sessionStorage.getItem('buildYourOwnList'));\r\n if (!isThisInBuildYourOwn(checkbox.id)) {\r\n listOfAddons.push(checkbox.id);\r\n sessionStorage.setItem('buildYourOwnList', JSON.stringify(listOfAddons));\r\n }\r\n }\r\n }\r\n\r\n function removeFromSessionStorage(checkbox) {\r\n const listOfAddons = JSON.parse(sessionStorage.getItem('buildYourOwnList'));\r\n const index = listOfAddons.indexOf(checkbox.id);\r\n listOfAddons.splice(index, 1);\r\n sessionStorage.setItem('buildYourOwnList', JSON.stringify(listOfAddons));\r\n }\r\n\r\n function checkedBuildYourOwn(listOfBuild, carousel) {\r\n if (listOfBuild.length < 0) {\r\n listOfBuild.forEach((buildItem) => {\r\n carousel.querySelector(`#${buildItem}`).click;\r\n });\r\n }\r\n }\r\n\r\n function isThisInBuildYourOwn(checkboxId) {\r\n const listOfAddons = JSON.parse(sessionStorage.getItem('buildYourOwnList'));\r\n\r\n return listOfAddons.includes(checkboxId);\r\n }\r\n\r\n function toggleBuildYourOwnInfoContent() {\r\n document.querySelector('[data-build-carousel-add-product]').classList.add('hide');\r\n document.querySelector('[data-build-carousel-pricing]').classList.remove('hide');\r\n document.querySelector('[data-build-carousel-info-section]').classList.remove('justify-content--center');\r\n\r\n if (document.querySelector('[data-build-carousel-total-payable]') != null) {\r\n document.querySelector('[data-build-carousel-total-payable]').classList.remove('hide');\r\n }\r\n }\r\n\r\n function updateBuildYourOwnTotalsContent(checkbox) {\r\n const numberOfInstalments = checkbox.getAttribute('data-monthly-number-of-instalments');\r\n document.querySelector('[data-build-carousel-deposit]')\r\n .innerText = `${buildYourOwnDeposit.toFixed(2)}`;\r\n document.querySelector('[data-build-carousel-instalment-amount]')\r\n .innerText = `${buildYourOwnInstalment.toFixed(2)}`;\r\n document.querySelector('[data-build-carousel-number-of-instalments]')\r\n .innerText = `x ${numberOfInstalments} months`;\r\n document.querySelector('[data-build-carousel-total-payable-amount]')\r\n .innerText = `${buildYourOwnTotalPayable.toFixed(2)}`;\r\n }\r\n\r\n function removeActive(activeElement) {\r\n activeElement.forEach((element) => {\r\n element.removeAttribute('data-active');\r\n element.classList.remove('uil-carousel__card--active');\r\n element.classList.remove('uil-carousel__heading--active');\r\n element.classList.remove('active');\r\n });\r\n }\r\n\r\n return {\r\n init: initComponent,\r\n };\r\n})();\r\n// eslint-disable-next-line no-var\r\nvar bgl = window.bgl || {};\r\nbgl.components = bgl.components || {};\r\nbgl.components.demandsandneeds = bgl.components.demandsandneeds || {};\r\n\r\nbgl.components.demandsandneeds.addons = (function($) {\r\n let configuration;\r\n let validateOnEveryInput = false;\r\n let patchedYes = [];\r\n let sessionStorageData;\r\n let basketUpdatedNotification;\r\n\r\n function loadComponent(componentConfiguration, componentUrl, containerElementId) {\r\n configuration = componentConfiguration;\r\n\r\n bgl.common.loader.load(componentConfiguration,\r\n componentUrl,\r\n containerElementId,\r\n function() {\r\n initComponent(componentConfiguration);\r\n });\r\n }\r\n\r\n function initComponent(componentConfiguration) {\r\n patchedYes = [];\r\n configuration = componentConfiguration;\r\n preventDefaultFormBehaviour();\r\n setEventBindings();\r\n populatePatchedYesList();\r\n dataStoreInit();\r\n matchInputsWithSessionStorage();\r\n logClicksForLinksAndButtons();\r\n bgl.common.tooltip.init();\r\n }\r\n\r\n function setEventBindings() {\r\n setAccessibilityEventBindings();\r\n setBreakdownTableEventBindings();\r\n setInterestedEventBindings();\r\n setYesButtonEventBindings();\r\n setNextAddonEventBindings();\r\n setNoButtonEventBindings();\r\n setDisabledFormEventBindings();\r\n setContinueButtonEventBindings();\r\n setNotInterestEventBindings();\r\n setCoverLevelChangeEventBindings();\r\n onInterestedButtonClick();\r\n setPncdEventBindings();\r\n }\r\n\r\n function preventDefaultFormBehaviour(addonFormSelector) {\r\n let selector;\r\n\r\n if (addonFormSelector === undefined) {\r\n selector = $('form.addon');\r\n } else {\r\n selector = $(addonFormSelector);\r\n }\r\n\r\n selector.submit(function(e) {\r\n e.preventDefault();\r\n });\r\n }\r\n\r\n function setAccessibilityEventBindings(addonFormSelector) {\r\n generateClickOnKeyPress(addonFormSelector);\r\n }\r\n\r\n function setInterestedEventBindings() {\r\n $('.addon-interested')\r\n .on('click', function() {\r\n const addon = getAddon($(this));\r\n const addonId = addon.attr('id');\r\n sessionStorage.setItem(addonId + '-interested', addonId + '-interested');\r\n sessionStorage.removeItem(addonId + '-not-interested');\r\n if (addon.attr('id') === 'Breakdown') {\r\n uncheckBreakdownTable(addon);\r\n }\r\n\r\n setFocusToHeader(addon);\r\n revealFbels(addon);\r\n revealBasket(addon);\r\n\r\n if (validateOnEveryInput) {\r\n validateAddons();\r\n }\r\n\r\n hideDemandsAndNeedsSection(addon);\r\n },\r\n );\r\n }\r\n\r\n function setNotInterestEventBindings() {\r\n $('.addon-not-interested')\r\n .on('click',\r\n function() {\r\n const addon = getAddon($(this));\r\n const addonId = addon.attr('id');\r\n sessionStorage.setItem(addonId + '-not-interested', addonId + '-not-interested');\r\n sessionStorage.removeItem(addonId + '-interested');\r\n setAriaSelectedToTrue(addon);\r\n });\r\n }\r\n\r\n function setYesButtonEventBindings(addonFormSelector) {\r\n let selector;\r\n\r\n if (addonFormSelector === undefined) {\r\n selector = $('.addon-yes');\r\n } else {\r\n selector = $(addonFormSelector + ' .addon-yes');\r\n }\r\n\r\n selector.on('click', function(event) {\r\n setNavigationAndUpdateElementsDisabled();\r\n event.stopPropagation();\r\n const addon = getAddon($(this));\r\n const addonId = addon.attr('id');\r\n sessionStorage.setItem(addonId + '-yes', addonId + '-yes');\r\n sessionStorage.removeItem(addonId + '-no');\r\n patchedYes.push(addonId);\r\n updateAddOn(addon, $(this));\r\n const fullAddonName = addonId.replace(/([A-Z])/g, ' $1').trim();\r\n storeAddonBehaviourForTagManager(fullAddonName, 'Yes');\r\n });\r\n }\r\n\r\n function storeAddonBehaviourForTagManager(fullAddonName, addonSelected) {\r\n const data = getPreviouslyStoredAddonBehaviourData();\r\n\r\n data.push([fullAddonName, addonSelected]);\r\n\r\n setPreviouslyStoredAddonBehaviourData(data);\r\n }\r\n\r\n function getPreviouslyStoredAddonBehaviourData() {\r\n let data = [];\r\n\r\n if (sessionStorage.getItem('ChangedVehicleData') !== null) {\r\n data = JSON.parse(sessionStorage.getItem('ChangedVehicleData'));\r\n }\r\n\r\n return data;\r\n }\r\n\r\n function setPreviouslyStoredAddonBehaviourData(data) {\r\n sessionStorage.setItem('ChangedVehicleData', JSON.stringify(data));\r\n }\r\n\r\n function setNoButtonEventBindings(addonFormSelector) {\r\n let selector;\r\n\r\n if (addonFormSelector === undefined) {\r\n selector = $('.addon-no');\r\n } else {\r\n selector = $(addonFormSelector + ' .addon-no');\r\n }\r\n\r\n selector.on('click', function(event) {\r\n setNavigationAndUpdateElementsDisabled();\r\n event.stopPropagation();\r\n const addon = getAddon($(this));\r\n const addonId = addon.attr('id');\r\n const fullAddonName = addonId.replace(/([A-Z])/g, ' $1').trim();\r\n\r\n\r\n sessionStorage.setItem(addonId + '-no', addonId + '-no');\r\n sessionStorage.removeItem(addonId + '-yes');\r\n storeAddonBehaviourForTagManager(fullAddonName, 'No');\r\n const wasPatchedYes = patchedYes.indexOf(addonId) >= 0;\r\n\r\n if (wasPatchedYes) {\r\n removeFromPatchedYesList(addonId);\r\n updateAddOn(addon, $(this));\r\n } else {\r\n setNavigationAndUpdateElementsEnabled();\r\n\r\n const addonLabel = $($(this)[0].nextElementSibling);\r\n hideSpinnerShowTick(addonLabel);\r\n }\r\n });\r\n }\r\n\r\n function setNextAddonEventBindings() {\r\n $('.addon-not-interested, .addon-yes, .addon-no').on('click', function(e) {\r\n if ($(this).is(':checked')) {\r\n const currentAddon = getAddon($(this));\r\n const nextAddon = getNextAddon(currentAddon);\r\n\r\n setTabIndexZeroOnDemandsAndNeedsButtons(nextAddon);\r\n hideValidationError(currentAddon);\r\n hideValidationErrorMessage(currentAddon);\r\n revealNextAddon(currentAddon);\r\n }\r\n\r\n if (validateOnEveryInput) {\r\n validateAddons();\r\n }\r\n });\r\n }\r\n\r\n function onInterestedButtonClick() {\r\n $('.addon-interested').on('click',\r\n function(e) {\r\n if ($(this).is(':checked')) {\r\n const currentAddon = getAddon($(this));\r\n setAriaSelectedToFalse(currentAddon);\r\n }\r\n });\r\n }\r\n\r\n function setAriaSelectedToTrue(currentAddon) {\r\n const currentAddonNotInterestedLabel = getNotInterestedLabel(currentAddon);\r\n const currentAddonInterestedLabel = getInterestedLabel(currentAddon);\r\n currentAddonNotInterestedLabel.attr('aria-selected', true);\r\n currentAddonInterestedLabel.attr('aria-selected', false);\r\n }\r\n\r\n function setAriaSelectedToFalse(currentAddon) {\r\n const currentAddonNotInterestedLabel = getNotInterestedLabel(currentAddon);\r\n const currentAddonInterestedLabel = getInterestedLabel(currentAddon);\r\n currentAddonNotInterestedLabel.attr('aria-selected', false);\r\n currentAddonInterestedLabel.attr('aria-selected', true);\r\n }\r\n\r\n function getNotInterestedLabel(currentAddon) {\r\n const currentAddonNotInterestedInput = currentAddon.find('.addon-not-interested');\r\n const notInterestedInputId = currentAddonNotInterestedInput.attr('id');\r\n const currentAddonNotInterestedLabel = $('label[for=\\'' + notInterestedInputId + '\\']');\r\n return currentAddonNotInterestedLabel;\r\n }\r\n\r\n function getInterestedLabel(currentAddon) {\r\n const currentAddonInterestedInput = currentAddon.find('.addon-interested');\r\n const interestedInputId = currentAddonInterestedInput.attr('id');\r\n const currentAddonInterestedLabel = $('label[for=\\'' + interestedInputId + '\\']');\r\n return currentAddonInterestedLabel;\r\n }\r\n\r\n function setCoverLevelChangeEventBindings() {\r\n const grcCoverLevelCount = $('#grc-coverlevels-count').val();\r\n const isGrcMultiTier = grcCoverLevelCount !== undefined && grcCoverLevelCount !== '1';\r\n if (isGrcMultiTier) {\r\n onGrcGrvCoverLevelChange();\r\n }\r\n\r\n const toolCoverLevelCount = $('#toolscover-coverlevels-count').val();\r\n const isToolMultiTier = toolCoverLevelCount !== undefined && toolCoverLevelCount !== '1';\r\n if (isToolMultiTier) {\r\n onToolsCoverCoverLevelChange();\r\n }\r\n }\r\n\r\n function onGrcGrvCoverLevelChange() {\r\n $('#SelectedCoverLevelCode').off('change').on('change',\r\n function() {\r\n updateCoverLevel('GuaranteedReplacementCar-SelectedCover', $(this));\r\n displaySelectedCoverLevelPrice($(this));\r\n toggleMultiTierContent($(this));\r\n });\r\n }\r\n\r\n function onToolsCoverCoverLevelChange() {\r\n $('#SelectedToolsCoverCoverLevelCode').off('change').on('change',\r\n function() {\r\n updateCoverLevel('ToolsCover-SelectedCover', $(this));\r\n displaySelectedCoverLevelPrice($(this));\r\n });\r\n }\r\n\r\n function updateCoverLevel(sessionStorageKey, element) {\r\n const coverLevelCode = element.val();\r\n sessionStorage.setItem(sessionStorageKey, coverLevelCode);\r\n const addon = getAddon(element);\r\n const addonId = addon.attr('id');\r\n const isInPatchedYesList = patchedYes.indexOf(addonId) >= 0;\r\n if (isInPatchedYesList) {\r\n updateAddOn(addon, element, false);\r\n }\r\n }\r\n\r\n function displaySelectedCoverLevelPrice(data) {\r\n const coverLevelCodes = ('#' + $(data).attr('id') + ' option');\r\n const selectedValue = $(data).val();\r\n\r\n $(coverLevelCodes).each(function() {\r\n $('#' + $(this).val()).addClass('hide');\r\n });\r\n $('#' + selectedValue).removeClass('hide');\r\n }\r\n\r\n function toggleMultiTierContent(data) {\r\n const coverLevelCode = $(data).val();\r\n hideAllMultiTierContent();\r\n showSelectedMultiTierContent(coverLevelCode);\r\n }\r\n\r\n function hideAllMultiTierContent() {\r\n $('.multi-tier-content').addClass('hide');\r\n }\r\n\r\n function showSelectedMultiTierContent(coverLevelCode) {\r\n $('#multi-tier-content-' + coverLevelCode).removeClass('hide');\r\n }\r\n\r\n function setDisabledFormEventBindings(addonFormSelector) {\r\n let selector;\r\n\r\n if (addonFormSelector === undefined) {\r\n selector = $('form.addon');\r\n } else {\r\n selector = $(addonFormSelector + '.addon');\r\n }\r\n\r\n selector.on('click',\r\n function() {\r\n addErrorStateOnDisabledAddon($(this));\r\n });\r\n }\r\n\r\n function setBreakdownTableEventBindings() {\r\n $('[data-tier]').on('click', function(e) {\r\n setNavigationAndUpdateElementsDisabled();\r\n e.stopPropagation();\r\n const tableElement = $(this);\r\n const isActive = tableElement.hasClass('active');\r\n\r\n if (isActive) {\r\n return;\r\n }\r\n\r\n const addon = getAddon(tableElement);\r\n const code = getBreakdownCode(tableElement);\r\n const activeTierNumber = getTierNumber(tableElement);\r\n setCodeValue(addon, code);\r\n selectTier(addon, activeTierNumber);\r\n hideValidationError(addon);\r\n hideValidationErrorMessage(addon);\r\n revealNextAddon(addon);\r\n });\r\n }\r\n\r\n function setContinueButtonEventBindings() {\r\n $('#ContinueButton').on('click',\r\n function() {\r\n const isValid = validateAddons();\r\n\r\n if (isValid) {\r\n bgl.components.pagereloader.poller.reloadPage(null, true, configuration.NextPageUrl);\r\n }\r\n });\r\n }\r\n\r\n function getAllAddons() {\r\n return $('form.addon');\r\n }\r\n\r\n function getAddon(element) {\r\n return element.closest('form');\r\n }\r\n\r\n function getNextAddon(addOn) {\r\n return addOn.closest('li').next().find('form.addon');\r\n }\r\n\r\n function setFocusToHeader(addon) {\r\n addon.find('.addon-primary__title__text').focus();\r\n }\r\n\r\n function revealFbels(addon) {\r\n addon.find('.addon-main__content').removeClass('hide');\r\n }\r\n\r\n function revealBasket(addon) {\r\n addon.find('.addon-cta__basket').removeClass('hide');\r\n }\r\n\r\n function hideDemandsAndNeedsSection(addon) {\r\n addon.find('.demands-and-needs').addClass('hide');\r\n }\r\n\r\n\r\n function revealNextAddon(currentAddon) {\r\n const nextAddon = getNextAddon(currentAddon);\r\n nextAddon.find('.addon-content').removeClass('disabled');\r\n nextAddon.find('.addon-not-interested').prop('disabled', false);\r\n nextAddon.find('.addon-interested').prop('disabled', false);\r\n nextAddon.find('.addon-content').attr('aria-hidden', false);\r\n }\r\n\r\n function uncheckBreakdownTable(addon) {\r\n const tableInputs = addon.find('table').find('input');\r\n tableInputs.prop('checked', false);\r\n }\r\n\r\n function populatePatchedYesList() {\r\n const yesInputs = $('input.addon-yes');\r\n\r\n yesInputs.each(function() {\r\n const input = $(this);\r\n const addon = getAddon($(this));\r\n const addonId = addon.attr('id');\r\n const isChecked = input.is(':checked') || input.attr('checked') === 'checked';\r\n const isInPatchedYesList = patchedYes.indexOf(addonId) >= 0;\r\n\r\n if (isChecked && !isInPatchedYesList) {\r\n patchedYes.push(addonId);\r\n }\r\n });\r\n }\r\n\r\n function removeFromPatchedYesList(addonId) {\r\n const position = patchedYes.indexOf(addonId);\r\n patchedYes.splice(position, 1);\r\n }\r\n\r\n function showSpinnerHideTick(addon, addonLabel) {\r\n addon.find('[data-addon-tick]').addClass('hide');\r\n addonLabel.find('[data-addon-spinner]').removeClass('hide');\r\n }\r\n\r\n function hideSpinnerShowTick(addonLabel) {\r\n addonLabel.find('[data-addon-spinner]').addClass('hide');\r\n addonLabel.find('[data-addon-tick]').removeClass('hide');\r\n }\r\n\r\n function updateAddOn(addon, element, useSpinner = true) {\r\n const addonLabel = $(element[0].nextElementSibling);\r\n if (useSpinner) {\r\n showSpinnerHideTick(addon, addonLabel);\r\n }\r\n\r\n if (typeof bgl.common.pubsub !== 'undefined') {\r\n bgl.common.pubsub.emit('fakeFormSubmit', addon.attr('id') || addon.attr('action') || 'unknown');\r\n }\r\n setTieredDropdownElementEnabled();\r\n const dataToPost = $(addon).serialize();\r\n setTieredDropdownElementDisabled();\r\n\r\n $.ajax({\r\n url: addon.attr('action'),\r\n type: addon.attr('method'),\r\n data: dataToPost,\r\n success: function(data, textStatus, jqXhr) {\r\n updateAddonAjaxCallSuccessful(data, textStatus, jqXhr, dataToPost, addonLabel);\r\n },\r\n error: function(jqXHR, textStatus, errorThrown) {\r\n updateAddonAjaxCallError(jqXHR, textStatus, errorThrown, dataToPost, null);\r\n },\r\n });\r\n }\r\n\r\n function updateAddonAjaxCallError(jqXhr, textStatus, errorThrown, dataPosted, responseData) {\r\n bgl.common.telemetry.logEvent(\r\n 'DemandsAndNeeds bgl.components.demandsandneeds.addons updateAddonError called',\r\n {\r\n 'jqXHR': $(jqXhr).serialize(),\r\n 'status': textStatus,\r\n 'errorThrown': $(errorThrown).serialize(),\r\n 'dataPosted': dataPosted,\r\n 'responseData': $(responseData).serialize(),\r\n });\r\n setNavigationAndUpdateElementsEnabled();\r\n bgl.common.utilities.errorRedirect(configuration.ErrorRedirectUrl);\r\n }\r\n\r\n function updateAddonAjaxCallSuccessful(responseData, textStatus, jqXhr, dataPosted, addonLabel) {\r\n if (!responseData.isSuccess) {\r\n updateAddonAjaxCallError(jqXhr, textStatus, null, dataPosted, responseData);\r\n } else {\r\n basketUpdatedNotification = responseData.houstonMessage;\r\n pollBasket(addonLabel);\r\n }\r\n }\r\n\r\n function pollBasket(addonLabel) {\r\n const params = {\r\n callback: function() {\r\n pollBasketCallback(addonLabel);\r\n },\r\n noSpinner: true,\r\n };\r\n bgl.common.pubsub.emit('PollBasket', params);\r\n }\r\n\r\n function pollBasketCallback(addonLabel) {\r\n hideSpinnerShowTick(addonLabel);\r\n const callback = function() {\r\n updateBasketCallback();\r\n };\r\n bgl.common.pubsub.emit('UpdateBasket', callback());\r\n }\r\n\r\n function updateBasketCallback() {\r\n const callback = function() {\r\n refreshHoustonContextCallback();\r\n };\r\n bgl.common.pubsub.emit('refreshHoustonContext', callback);\r\n }\r\n\r\n function refreshHoustonContextCallback() {\r\n const isAnnual = $('#demands-and-needs-isAnnual').text().toLowerCase();\r\n let message;\r\n\r\n if (isAnnual === 'true') {\r\n message = basketUpdatedNotification.annual;\r\n } else {\r\n message = basketUpdatedNotification.monthly;\r\n }\r\n setNavigationAndUpdateElementsEnabled();\r\n bgl.common.pubsub.emit('showNotification', message);\r\n basketUpdatedNotification = null;\r\n }\r\n\r\n function setNavigationAndUpdateElementsEnabled() {\r\n setElementsDisabledProperty(false);\r\n }\r\n\r\n function setNavigationAndUpdateElementsDisabled() {\r\n setElementsDisabledProperty(true);\r\n }\r\n\r\n function setElementsDisabledProperty(disabled) {\r\n const elements = $('button, a, select, label, [data-tier], .shopping-basket, #Houston').not('.tooltip');\r\n setSpecifiedElementsDisabledProperty(elements, disabled);\r\n }\r\n\r\n function setTieredDropdownElementEnabled() {\r\n setSelectElementsDisabledProperty(false);\r\n }\r\n\r\n function setTieredDropdownElementDisabled() {\r\n setSelectElementsDisabledProperty(true);\r\n }\r\n\r\n function setSelectElementsDisabledProperty(disabled) {\r\n const elements = $('select');\r\n setSpecifiedElementsDisabledProperty(elements, disabled);\r\n }\r\n\r\n function setSpecifiedElementsDisabledProperty(elements, disabled) {\r\n elements.prop('disabled', disabled);\r\n\r\n if (disabled === true) {\r\n elements.addClass('disabled');\r\n } else {\r\n elements.removeClass('disabled');\r\n };\r\n }\r\n\r\n function validateAddons() {\r\n const addons = getAllAddons();\r\n\r\n validateOnEveryInput = true;\r\n let allAddonsAreValid = true;\r\n let firstInvalidAddon;\r\n\r\n addons.each(function() {\r\n const addon = $(this);\r\n const isFormValid = addon.valid();\r\n const addonContent = this.querySelectorAll('[data-type=\\'addon-content\\']');\r\n\r\n if (isFormValid) {\r\n hideValidationError(addon);\r\n } else {\r\n if (!addonContent[0].classList.contains('disabled')) {\r\n allAddonsAreValid = false;\r\n showValidationErrorStyling(addon);\r\n\r\n if (typeof firstInvalidAddon === 'undefined') {\r\n firstInvalidAddon = addon;\r\n }\r\n }\r\n }\r\n });\r\n\r\n if (!allAddonsAreValid) {\r\n showValidationErrorMessage(firstInvalidAddon);\r\n publishAddonErrors(firstInvalidAddon);\r\n } else {\r\n $('#microCopy').removeClass('micro-copy--error');\r\n }\r\n\r\n return allAddonsAreValid;\r\n }\r\n\r\n function publishAddonErrors(formContainingInvalidInputs) {\r\n const data = {\r\n form_section: formContainingInvalidInputs.attr('id'),\r\n error_details: [],\r\n };\r\n\r\n formContainingInvalidInputs.find('input.error, input.input-validation-error').each(function() {\r\n const errorDetail = {\r\n error_field: getFieldsetLegendText(this),\r\n error_message: getFormAlertText(formContainingInvalidInputs),\r\n };\r\n data.error_details.push(errorDetail);\r\n });\r\n\r\n data.error_details = deduplicateErrorDetails(data.error_details);\r\n bgl.common.pubsub.emit('formValidationFailed', data);\r\n }\r\n\r\n function deduplicateErrorDetails(errorDetails) {\r\n const uniqueErrorDetails = [];\r\n return errorDetails.filter(function(errorDetail) {\r\n return isErrorDetailInArray(uniqueErrorDetails, errorDetail) ? false : uniqueErrorDetails.push(errorDetail);\r\n });\r\n }\r\n\r\n function isErrorDetailInArray(uniqueErrorDetails, newErrorDetail) {\r\n for (let counter = 0; counter < uniqueErrorDetails.length; counter++) {\r\n const errorDetail = uniqueErrorDetails[counter];\r\n if (errorDetail.error_field === newErrorDetail.error_field &&\r\n errorDetail.error_message === newErrorDetail.error_message) {\r\n return true;\r\n }\r\n }\r\n\r\n return false;\r\n }\r\n\r\n function getFieldsetLegendText(invalidFormElement) {\r\n const legendText = getFieldsetLegendTextForMostAddons(invalidFormElement);\r\n if (legendText.length > 0) {\r\n return legendText;\r\n } else {\r\n return getFieldsetLegendTextForBreakdownAddon(invalidFormElement);\r\n }\r\n }\r\n\r\n function getFieldsetLegendTextForMostAddons(invalidFormElement) {\r\n return $(invalidFormElement).parent().find('legend').text();\r\n }\r\n\r\n function getFieldsetLegendTextForBreakdownAddon(invalidFormElement) {\r\n return $(invalidFormElement).closest('fieldset').find('legend').text();\r\n }\r\n\r\n function getFormAlertText(formContainingInvalidElement) {\r\n return $(formContainingInvalidElement).find('div.alert').text();\r\n }\r\n\r\n function showValidationErrorStyling(addon) {\r\n addon.addClass('error');\r\n addon.find('label.error').remove();\r\n }\r\n\r\n function hideValidationError(addon) {\r\n addon.removeClass('error');\r\n }\r\n\r\n function showValidationErrorMessage(addonWithError) {\r\n hideAllValidationErrorAlerts();\r\n showValidationErrorAlert(addonWithError);\r\n\r\n const microCopy = $('#microCopy');\r\n if (microCopy.length > 0 && addonWithError.length > 0) {\r\n microCopy.addClass('micro-copy--error');\r\n }\r\n }\r\n\r\n function hideAllValidationErrorAlerts() {\r\n const allAddOns = getAllAddons();\r\n\r\n allAddOns.each(function() {\r\n const addon = $(this);\r\n hideValidationErrorMessage(addon);\r\n });\r\n }\r\n\r\n function showValidationErrorAlert(addon) {\r\n const errorMessage = generateValidationErrorMessage(addon);\r\n const alert = addon.find('.alert');\r\n\r\n alert.find('.alert__heading').text(errorMessage);\r\n\r\n const currentAddonNotInterestedLabel = getNotInterestedLabel(addon);\r\n\r\n alert.removeClass('hide');\r\n scrollToElement(addon);\r\n currentAddonNotInterestedLabel.focus();\r\n }\r\n\r\n function generateValidationErrorMessage(addonWithError) {\r\n const addonName = getAddonName(addonWithError);\r\n\r\n const ctaBasketShowing = !addonWithError.find('.addon-cta__basket').hasClass('hide');\r\n if (ctaBasketShowing) {\r\n return 'Please select if you would like to add ' + addonName + ' to your policy';\r\n } else {\r\n return 'Please select if you are interested in ' + addonName;\r\n }\r\n }\r\n\r\n function getAddonName(addon) {\r\n return addon.data('addon-name');\r\n }\r\n\r\n function hideValidationErrorMessage(addon) {\r\n addon.find('.alert').addClass('hide');\r\n }\r\n\r\n function addErrorStateOnDisabledAddon(addon) {\r\n const isAddOnDisabled = addon.find($('.addon-content')).hasClass('disabled');\r\n if (isAddOnDisabled) {\r\n validateAddons();\r\n }\r\n }\r\n\r\n function scrollToElement(element) {\r\n $('html, body').animate({scrollTop: element.offset().top - 110}, 'slow');\r\n }\r\n\r\n function getBreakdownCode(tableElement) {\r\n return tableElement.data('cover-level-code');\r\n }\r\n\r\n function setCodeValue(addon, code) {\r\n const codeInput = addon.find($('input[name=\"Code\"]'));\r\n codeInput.val(code);\r\n }\r\n\r\n function getTierNumber(tableElement) {\r\n return tableElement.data('tier');\r\n }\r\n\r\n function selectTier(breakdownAddon, activeTierNumber) {\r\n makeTierActive(breakdownAddon, activeTierNumber);\r\n updateTierButtons(breakdownAddon, activeTierNumber);\r\n checkSelectedTiersRadioButton(breakdownAddon, activeTierNumber);\r\n }\r\n\r\n function makeTierActive(breakdownAddon, tierNumber) {\r\n const allTiersButtons = breakdownAddon.find('.addon-yes, .addon-no');\r\n breakdownAddon.find('.active').removeClass('active');\r\n allTiersButtons.prop('checked', false);\r\n\r\n const targetTier = getTierElements(breakdownAddon, tierNumber);\r\n\r\n if (tierNumber > 0) {\r\n targetTier.closest('th').addClass('active');\r\n breakdownAddon.find('tbody tr').each(function(i, el) {\r\n $(this).find('td').eq(tierNumber - 1).addClass('active');\r\n });\r\n } else {\r\n const notRequiredButton = breakdownAddon.find('.not-required-button');\r\n notRequiredButton.addClass('active');\r\n $('#Breakdown-no').prop('checked', true);\r\n }\r\n }\r\n\r\n function getTierElements(breakdownAddon, tierNumber) {\r\n return breakdownAddon.find('[data-Tier=\\'' + tierNumber + '\\']');\r\n }\r\n\r\n function updateTierButtons(breakdownAddon, selectedTierNumber) {\r\n const breakdownButtons = breakdownAddon.find(\r\n '.breakdown-table__button:not(.not-required-button) [data-breakdown-button-text]',\r\n );\r\n breakdownButtons.text('Select');\r\n\r\n const selectedTierButton = breakdownAddon.find(\r\n // eslint-disable-next-line max-len\r\n `.breakdown-table__button[data-tier='${selectedTierNumber}']:not(.not-required-button) [data-breakdown-button-text]`,\r\n );\r\n selectedTierButton.text('Selected');\r\n }\r\n\r\n function checkSelectedTiersRadioButton(breakdownAddon, selectedTierNumber) {\r\n const tierElements = getTierElements(breakdownAddon, selectedTierNumber);\r\n const tierInput = tierElements.find('.form-row__input--radio');\r\n tierInput.prop('checked', true);\r\n }\r\n\r\n function generateClickOnKeyPress(addonFormSelector) {\r\n let selector;\r\n\r\n if (addonFormSelector === undefined) {\r\n selector = $('label, #ContinueButton');\r\n } else {\r\n selector = $(addonFormSelector + ' label');\r\n }\r\n\r\n selector.on('keyup', function(event) {\r\n const SPACE_KEYCODE = 32;\r\n const ENTER_KEYCODE = 13;\r\n const code = event.charCode || event.keyCode;\r\n\r\n if (code === ENTER_KEYCODE || code === SPACE_KEYCODE) {\r\n if ($(this).attr('data-tier')) {\r\n $(this).click();\r\n }\r\n\r\n const forAttr = $(event.target).attr('for');\r\n\r\n if (forAttr !== null) {\r\n $('#' + forAttr).click();\r\n } else {\r\n $(this).click();\r\n }\r\n }\r\n });\r\n }\r\n\r\n function setTabIndexZeroOnDemandsAndNeedsButtons(addOn) {\r\n const labels = addOn.find('.demands-and-needs__label');\r\n labels.attr('tabindex', 0);\r\n }\r\n\r\n function matchInputsWithSessionStorage() {\r\n const allAddons = getAllAddons();\r\n allAddons.each(function() {\r\n const addon = $(this);\r\n const addonId = addon.attr('id');\r\n const sessionKeys = ['-not-interested', '-interested', '-no'];\r\n sessionKeys.forEach(function(key) {\r\n const session = sessionStorage.getItem(addonId + key);\r\n const wasPatchedYes = patchedYes.indexOf(addonId) >= 0;\r\n if (session != null && !wasPatchedYes) {\r\n addon.find('.addon-content').removeClass('disabled');\r\n addon.find('.addon-content').attr('aria-hidden', false);\r\n const button = addon.find('#' + session);\r\n button.click();\r\n if (key === '-no') {\r\n addon.find(`#${addonId}${key}-label [data-addon-tick]`).removeClass('hide');\r\n }\r\n }\r\n });\r\n });\r\n }\r\n\r\n function setPncdEventBindings() {\r\n const pncdAddButton = $('#NoClaimsDiscountProtection-yes-label');\r\n const pncdRemoveButton = $('#NoClaimsDiscountProtection-no-label');\r\n\r\n pncdAddButton.on('click', function() {\r\n togglePncdContent(true);\r\n });\r\n\r\n pncdRemoveButton.on('click', function() {\r\n setDataStoreWasPncdSelectedAtAggregatorFalse();\r\n togglePncdContent(false);\r\n showPncdYesNoBasket();\r\n });\r\n }\r\n\r\n function togglePncdContent(isPncdSelected) {\r\n if (isPncdSelected) {\r\n hidePncdNotSelectedContent();\r\n showPncdSelectedContent();\r\n } else {\r\n hidePncdSelectedContent();\r\n showPncdNotSelectedContent();\r\n }\r\n }\r\n\r\n function showPncdSelectedContent() {\r\n document.getElementById('NoClaimsDiscountProtection-heading-selected').classList.remove('hide');\r\n document.getElementById('NoClaimsDiscountProtection-fbels-selected').classList.remove('hide');\r\n }\r\n\r\n function hidePncdSelectedContent() {\r\n document.getElementById('NoClaimsDiscountProtection-heading-selected').classList.add('hide');\r\n document.getElementById('NoClaimsDiscountProtection-fbels-selected').classList.add('hide');\r\n }\r\n\r\n function showPncdNotSelectedContent() {\r\n document.getElementById('NoClaimsDiscountProtection-heading-not-selected').classList.remove('hide');\r\n document.getElementById('NoClaimsDiscountProtection-fbels-not-selected').classList.remove('hide');\r\n }\r\n\r\n function hidePncdNotSelectedContent() {\r\n document.getElementById('NoClaimsDiscountProtection-heading-not-selected').classList.add('hide');\r\n document.getElementById('NoClaimsDiscountProtection-fbels-not-selected').classList.add('hide');\r\n }\r\n\r\n function showPncdYesNoBasket() {\r\n changePncdBasketButtonsToYesNoVariation();\r\n showPncdBasketPrice();\r\n changePncdDidYouKnowTextToYesNoVariation();\r\n }\r\n\r\n function changePncdBasketButtonsToYesNoVariation() {\r\n const addButtonLabelText = document.getElementById('NoClaimsDiscountProtection-yes-label-text');\r\n const addButtonLabel = document.getElementById('NoClaimsDiscountProtection-yes-label');\r\n const removeButtonLabelText = document.getElementById('NoClaimsDiscountProtection-no-label-text');\r\n const removeButtonLabel = document.getElementById('NoClaimsDiscountProtection-no-label');\r\n\r\n addButtonLabelText.textContent = 'Yes';\r\n removeButtonLabelText.textContent = 'No';\r\n addButtonLabel.classList.remove('full-width');\r\n removeButtonLabel.classList.remove('full-width');\r\n }\r\n\r\n function showPncdBasketPrice() {\r\n const price = document.getElementById('NoClaimsDiscountProtection-basket-price');\r\n price.classList.remove('hide');\r\n }\r\n\r\n function changePncdDidYouKnowTextToYesNoVariation() {\r\n const addRemoveDidYouKnowText = document.getElementById('NoClaimsDiscountProtection-DidYouKnow-AddRemove');\r\n const yesNoDidYouKnowText = document.getElementById('NoClaimsDiscountProtection-DidYouKnow-YesNo');\r\n addRemoveDidYouKnowText.classList.add('hide');\r\n yesNoDidYouKnowText.classList.remove('hide');\r\n }\r\n\r\n function dataStoreInit() {\r\n const dataLoadedFromSessionStorage = sessionStorage.getItem('DemandsAndNeeds');\r\n\r\n if (dataLoadedFromSessionStorage != null) {\r\n sessionStorageData = JSON.parse(dataLoadedFromSessionStorage);\r\n } else {\r\n sessionStorageData = {wasPncdSelectedAtAggregator: wasPncdSelectedAtAggregator()};\r\n writeToDataStore();\r\n }\r\n\r\n if (!sessionStorageData.wasPncdSelectedAtAggregator) {\r\n showPncdYesNoBasket();\r\n }\r\n }\r\n\r\n function wasPncdSelectedAtAggregator() {\r\n let result = false;\r\n\r\n const addRemoveVariationShown = !$('#NoClaimsDiscountProtection-DidYouKnow-AddRemove').hasClass('hide');\r\n if (addRemoveVariationShown) {\r\n result = true;\r\n }\r\n\r\n return result;\r\n }\r\n\r\n function setDataStoreWasPncdSelectedAtAggregatorFalse() {\r\n sessionStorageData.wasPncdSelectedAtAggregator = false;\r\n writeToDataStore();\r\n }\r\n\r\n function writeToDataStore() {\r\n const data = JSON.stringify(sessionStorageData);\r\n sessionStorage.setItem('DemandsAndNeeds', data);\r\n }\r\n\r\n function logClicksForLinksAndButtons(element) {\r\n $(`button, \r\n a, \r\n label[role=\\'button\\'], \r\n label[role=\\'tab\\'], \r\n td.breakdown-table__body-item, \r\n th.breakdown-table__header-item`).click(function() {\r\n const timeNow = new Date().toLocaleTimeString();\r\n let id = this.id;\r\n if (id === '') {\r\n id = $(this).attr('data-testid');\r\n }\r\n if (id === undefined) {\r\n id = $(this).text();\r\n }\r\n bgl.common.telemetry.logEvent(id + ' clicked - ' + timeNow);\r\n });\r\n }\r\n\r\n return {\r\n init: initComponent,\r\n load: loadComponent,\r\n publishAddonErrors: publishAddonErrors,\r\n refreshHoustonContextCallback: refreshHoustonContextCallback,\r\n };\r\n})($);\r\n// eslint-disable-next-line no-var\r\nvar bgl = window.bgl || {};\r\nbgl.components = bgl.components || {};\r\n\r\nconst bglDatePickerViewOption = 0;\r\nconst mvtBglDatePickerViewOption = 1;\r\n\r\nbgl.components.coverrange = (function() {\r\n let configuration;\r\n\r\n function init(componentConfiguration) {\r\n configuration = componentConfiguration;\r\n\r\n if (configuration.JourneyType === 'MultiStepEdit') {\r\n if (configuration.ViewOptions.PartialDatePicker === bglDatePickerViewOption ||\r\n configuration.ViewOptions.PartialDatePicker === mvtBglDatePickerViewOption) {\r\n bgl.components.bgldatepicker.init(configuration);\r\n } else {\r\n bgl.components.datepicker.init(configuration);\r\n }\r\n } else {\r\n initEvents();\r\n }\r\n }\r\n\r\n function initEvents() {\r\n $('.cover-range__button, .start-date_edit-button, .cover-range-widget__button, [data-edit-icon]')\r\n .off()\r\n .on('click',\r\n function(e) {\r\n e.preventDefault();\r\n\r\n const $this = $(this);\r\n const container = $this.data('container');\r\n const url = $this.data('url');\r\n\r\n bgl.common.loader.load(configuration,\r\n url,\r\n container,\r\n function() {\r\n if (configuration.ViewOptions.PartialDatePicker === 0) {\r\n bgl.components.bgldatepicker.init(configuration);\r\n } else {\r\n bgl.components.datepicker.init(configuration);\r\n }\r\n });\r\n });\r\n }\r\n return {\r\n init: init,\r\n };\r\n})();\r\n\r\nbgl.components.policycoverrange = (function() {\r\n function init() {\r\n const progress = $('.cover-range__bar').data('bar-progress') + '%';\r\n $('.cover-range__bar').css('width', progress);\r\n }\r\n\r\n return {\r\n init: init,\r\n };\r\n})();\r\n\r\n\r\nbgl.components.datepicker = (function() {\r\n const months = [\r\n 'January',\r\n 'February',\r\n 'March',\r\n 'April',\r\n 'May',\r\n 'June',\r\n 'July',\r\n 'August',\r\n 'September',\r\n 'October',\r\n 'November',\r\n 'December',\r\n ];\r\n\r\n let datepicker;\r\n let selectedDate;\r\n let configuration;\r\n let form;\r\n let today;\r\n const dateFormat = 'dd/mm/yy';\r\n\r\n function init(componentConfiguration) {\r\n configuration = componentConfiguration;\r\n form = $('#' + configuration.Id + '_form-cover-range');\r\n bgl.common.datastore.init(form);\r\n\r\n bgl.common.validator.init(form);\r\n\r\n today = configuration.DateToday ? new Date(configuration.DateToday) : new Date();\r\n const tomorrow = new Date(today.getTime());\r\n tomorrow.setDate(tomorrow.getDate() + 1);\r\n\r\n $('.date-picker__sub-button--today').on('click',\r\n function(e) {\r\n e.preventDefault();\r\n datepicker.datepicker('setDate', today);\r\n updateSelectedDate(getFormattedValue(today), configuration.IsService);\r\n });\r\n\r\n $('.date-picker__sub-button--tomorrow').on('click',\r\n function(e) {\r\n e.preventDefault();\r\n datepicker.datepicker('setDate', tomorrow);\r\n updateSelectedDate(getFormattedValue(tomorrow), configuration.IsService);\r\n });\r\n\r\n datepicker = $('#datepicker');\r\n selectedDate = new Date(datepicker.data('selected-date'));\r\n const earliestDate = new Date(datepicker.data('earliest-date'));\r\n const latestDate = new Date(datepicker.data('latest-date'));\r\n\r\n datepicker.datepicker({\r\n selectOtherMonths: false,\r\n minDate: earliestDate,\r\n maxDate: latestDate,\r\n defaultDate: selectedDate,\r\n showOtherMonths: false,\r\n dateFormat: dateFormat,\r\n onChangeMonthYear: function(year, month, inst) {\r\n setTimeout(function() {\r\n $(`.ui-datepicker-prev:not(.ui-state-disabled), \r\n .ui-datepicker-next:not(.ui-state-disabled)`).attr('href', '#');\r\n $('.ui-datepicker-calendar tbody a').first().focus();\r\n $('.ui-datepicker-calendar tbody a').each(function() {\r\n $(this).attr(\r\n 'aria-label',\r\n toOrdinalString(parseInt(this.text)) + ' ' + getMonthString(month - 1),\r\n );\r\n });\r\n });\r\n },\r\n onSelect: function(dateText, inst) {\r\n inst.inline = false;\r\n updateSelectedDate(dateText, configuration.IsService);\r\n },\r\n });\r\n\r\n $('#' + configuration.Id + '_form-cover-range button').prop('disabled', false);\r\n\r\n $('.ui-datepicker-calendar tbody a').each(function() {\r\n $(this).attr(\r\n 'aria-label',\r\n toOrdinalString(parseInt(this.text)) +' ' + getMonthString(selectedDate.getMonth()),\r\n );\r\n });\r\n $('.ui-datepicker-prev:not(.ui-state-disabled), .ui-datepicker-next:not(.ui-state-disabled)').attr('href', '#');\r\n\r\n updateSelectedDate(getFormattedValue(selectedDate), configuration.IsService);\r\n setBackButtonUrl(configuration);\r\n\r\n form.off('submit')\r\n .on('submit',\r\n function(event) {\r\n event.preventDefault();\r\n\r\n if (!bgl.common.datastore.isDataChanged(form)) {\r\n if (configuration.JourneyType === 'MultiStepEdit') {\r\n onSuccess();\r\n } else {\r\n $('[data-dismiss=\"slide-panel\"]').click();\r\n bgl.common.datastore.removeSessionStorage(form);\r\n return;\r\n }\r\n }\r\n bgl.common.validator.submitForm(form, configuration);\r\n });\r\n }\r\n\r\n function getMonthString(num) {\r\n const month = months[num];\r\n if (month) return month;\r\n\r\n return 'Invalid month';\r\n }\r\n\r\n function updateSelectedDate(dateText, isService) {\r\n $('#SelectedEffectiveDate').val(dateText + ' 00:00:00');\r\n\r\n const dateTime = $.datepicker.parseDate(dateFormat, dateText);\r\n const isFuture = dateTime > today;\r\n let text = '';\r\n\r\n if (isService === true) {\r\n text = isFuture ? 'Cover will start at 00:01 hours' : 'Cover will start with immediate effect';\r\n\r\n const selectedEffectiveDateMessage = isFuture ?\r\n `Your changes are effective from ${dateText} at 00:01 hours.` :\r\n 'Your changes are effective immediately.';\r\n sessionStorage.setItem('selectedEffectiveDateMessage', selectedEffectiveDateMessage);\r\n } else {\r\n text = isFuture ?\r\n 'Cover will start at 00:01 hours' :\r\n 'Cover will start as soon as you purchase your policy';\r\n }\r\n\r\n $('#datePickerSubText').html(text);\r\n $('.date-picker__selected-day').html(dateTime.getDate());\r\n $('.date-picker__selected-month').html(getMonthString(dateTime.getMonth()) + ' ' + dateTime.getFullYear());\r\n\r\n $('.ui-datepicker-calendar .ui-datepicker-current-day a').removeAttr('aria-current');\r\n $('.ui-datepicker-calendar .ui-datepicker-current-day')\r\n .removeClass('ui-datepicker-current-day')\r\n .children()\r\n .removeClass('ui-state-active');\r\n $('.ui-datepicker-calendar tbody a').each(function() {\r\n if ($(this).text() == dateTime.getDate()) {\r\n $(this).addClass('ui-state-active');\r\n $(this).parent().addClass('ui-datepicker-current-day');\r\n $(this).attr('aria-current', 'date');\r\n }\r\n });\r\n }\r\n\r\n function getFormattedValue(date) {\r\n return $.datepicker.formatDate(dateFormat, date);\r\n }\r\n\r\n function toOrdinalString(n) {\r\n return n + (['st', 'nd', 'rd'][((n + 90) % 100 - 10) % 10 - 1] || 'th');\r\n }\r\n\r\n function setBackButtonUrl(configuration) {\r\n if (configuration.JourneyType === 'MultiStepEdit') {\r\n const sessionData = JSON.parse(sessionStorage.getItem(configuration.DataStoreKey));\r\n if (sessionData != null && sessionData.selectedCoverFlag === 'Comprehensive') {\r\n $('#back-button-link').attr('href', configuration.CoverExcessesBackUrl);\r\n }\r\n }\r\n }\r\n\r\n function onSuccess() {\r\n if (configuration.JourneyType === 'MultiStepEdit') {\r\n if (configuration.IsService) {\r\n const options = {\r\n redirectUrl: configuration.NextStepUrl,\r\n hideNotification: true,\r\n spinnerName: 'serviceSpinner',\r\n };\r\n bgl.common.pubsub.emit('PollBasket', options);\r\n } else {\r\n bgl.common.utilities.redirectToUrl(configuration.NextStepUrl);\r\n }\r\n } else {\r\n $('[data-dismiss=\"slide-panel\"]').click();\r\n bgl.common.pubsub.emit('PollBasket');\r\n }\r\n bgl.common.datastore.removeSessionStorage(form);\r\n }\r\n\r\n function onError(configuration) {\r\n bgl.components.datepicker.init(configuration);\r\n bgl.common.datastore.extendCollectedData(form, {isFormDirty: true});\r\n }\r\n\r\n return {\r\n init: init,\r\n onSuccess: onSuccess,\r\n onError: onError,\r\n };\r\n})();\r\n\r\nbgl.components.bgldatepicker = (function() {\r\n let configuration;\r\n let today;\r\n let tomorrow;\r\n let calendarSection;\r\n let form;\r\n const dateFormat = 'dd/mm/yy';\r\n let calendarTabsCount;\r\n\r\n function init(componentConfiguration) {\r\n configuration = componentConfiguration;\r\n form = $('#' + configuration.Id + '_form-cover-range');\r\n let selectedDate;\r\n\r\n calendarSection = $('#calendar-dates');\r\n calendarTabsCount = $('.calendar-v2-month-year').length;\r\n\r\n bgl.common.datastore.init(form);\r\n bgl.common.validator.init(form);\r\n\r\n form.off('submit')\r\n .on('submit',\r\n function(event) {\r\n event.preventDefault();\r\n\r\n if (!bgl.common.datastore.isDataChanged(form)) {\r\n if (configuration.JourneyType === 'MultiStepEdit') {\r\n onSuccess();\r\n } else {\r\n $('[data-dismiss=\"slide-panel\"]').click();\r\n bgl.common.datastore.removeSessionStorage(form);\r\n return;\r\n }\r\n }\r\n bgl.common.validator.submitForm(form, configuration);\r\n });\r\n\r\n const datePickerUserSessionData = sessionStorage.getItem('selectedEffectiveDateByUser');\r\n if (datePickerUserSessionData) {\r\n selectedDate = new Date(datePickerUserSessionData);\r\n } else {\r\n selectedDate = new Date($('.date-picker-v2').data('selected-date'));\r\n }\r\n\r\n selectDate($('[data-date=\\'' + getFormattedValue(selectedDate) + '\\']')[0]);\r\n today = new Date(configuration.DateToday);\r\n tomorrow = new Date(today.getTime());\r\n tomorrow.setDate(tomorrow.getDate() + 1);\r\n\r\n $('.date-picker-v2__sub-button--today').on('click', function(e) {\r\n e.preventDefault();\r\n showMonthByIndex(0);\r\n selectDate($('[data-date=\\'' + getFormattedValue(today) + '\\']')[0]);\r\n });\r\n\r\n $('.date-picker-v2__sub-button--tomorrow').on('click', function(e) {\r\n e.preventDefault();\r\n const monthIndex = tomorrow.getDate() === 1 ? 1 : 0;\r\n showMonthByIndex(monthIndex);\r\n selectDate($('[data-date=\\'' + getFormattedValue(tomorrow) + '\\']')[0]);\r\n });\r\n\r\n updateSelectedDate(getFormattedValue(selectedDate), configuration.IsService);\r\n\r\n calendarSection.on('click', onClick);\r\n calendarSection.on('keydown', onKeydown);\r\n\r\n subscribeHeaderNavigationButtons();\r\n setBackButtonUrl(configuration);\r\n }\r\n\r\n function getMonthString(num) {\r\n const months = [\r\n 'January', 'February', 'March', 'April',\r\n 'May', 'June', 'July', 'August',\r\n 'September', 'October', 'November', 'December',\r\n ];\r\n\r\n const month = months[num];\r\n if (month) return month;\r\n\r\n return 'Invalid month';\r\n }\r\n\r\n function updateSelectedDate(dateText, isService) {\r\n document.getElementById('SelectedEffectiveDate').value = `${dateText} 00:00:00`;\r\n const dateTime = $.datepicker.parseDate(dateFormat, dateText);\r\n const isFuture = dateTime > today;\r\n let text = '';\r\n\r\n if (isService === true) {\r\n text = isFuture ? 'Cover will start at 00:01 hours' : 'Cover will start with immediate effect';\r\n\r\n const selectedEffectiveDateMessage = isFuture ?\r\n `Your changes are effective from ${dateText} at 00:01 hours.` :\r\n 'Your changes are effective immediately.';\r\n sessionStorage.setItem('selectedEffectiveDateMessage', selectedEffectiveDateMessage);\r\n\r\n if (isFuture) {\r\n sessionStorage.setItem('selectedEffectiveDateByUser', dateTime);\r\n }\r\n } else {\r\n text = isFuture ?\r\n 'Cover will start at 00:01 hours' :\r\n 'Cover will start as soon as you purchase your policy';\r\n }\r\n\r\n document.getElementById('datePickerSubText').innerHTML = text;\r\n $('.date-picker-v2__selected-day').html(dateTime.getDate());\r\n $('.date-picker-v2__selected-month').html(getMonthString(dateTime.getMonth()) + ' ' + dateTime.getFullYear());\r\n }\r\n\r\n function getFormattedValue(date) {\r\n return $.datepicker.formatDate(dateFormat, date);\r\n }\r\n\r\n function setBackButtonUrl(configuration) {\r\n if (configuration.JourneyType === 'MultiStepEdit') {\r\n const sessionData = JSON.parse(sessionStorage.getItem(configuration.DataStoreKey));\r\n if (sessionData != null && sessionData.selectedCoverFlag === 'Comprehensive') {\r\n $('#back-button-link').attr('href', configuration.CoverExcessesBackUrl);\r\n }\r\n }\r\n }\r\n\r\n function selectDate(date) {\r\n const selection = calendarSection.find('[aria-current=\"date\"]');\r\n\r\n if (selection) {\r\n selection.removeAttr('aria-current');\r\n selection.removeClass('calendar-v2-item--active');\r\n selection.attr('tabindex', '-1');\r\n }\r\n\r\n const selectedDate = $(date);\r\n selectedDate.attr('aria-current', 'date');\r\n selectedDate.addClass('calendar-v2-item--active');\r\n selectedDate.removeAttr('tabindex');\r\n\r\n const selected = selectedDate.data('date');\r\n\r\n if (selected) {\r\n updateSelectedDate(selected, configuration.IsService);\r\n }\r\n }\r\n\r\n function onKeydown(event) {\r\n let parent;\r\n let next;\r\n let row;\r\n let index;\r\n\r\n const target = event.target;\r\n const key = event.key.replace('Arrow', '');\r\n\r\n if ($(target).hasClass('calendar-v2-item') && key.match(/Up|Down|Left|Right|Home|End|PageUp|PageDown/)) {\r\n switch (key) {\r\n case 'Right':\r\n if (target === getLastDate()) {\r\n if (!showNextMonth()) return;\r\n next = getFirstDate();\r\n } else {\r\n next = target.nextElementSibling || target.parentElement.nextElementSibling.firstElementChild;\r\n }\r\n\r\n break;\r\n\r\n case 'Left':\r\n if (target === getFirstDate()) {\r\n if (!showPreviousMonth()) return;\r\n next = getLastDate();\r\n } else {\r\n next = target.previousElementSibling ||\r\n target.parentElement.previousElementSibling.lastElementChild;\r\n }\r\n\r\n break;\r\n\r\n case 'Up':\r\n if (target === getFirstDate()) {\r\n showPreviousMonth();\r\n next = getLastDate();\r\n } else {\r\n parent = target.parentElement;\r\n index = getIndexInCollection(parent.children, target);\r\n row = parent.previousElementSibling;\r\n\r\n if (row) {\r\n next = row.children.item(index);\r\n }\r\n }\r\n\r\n break;\r\n\r\n case 'Down':\r\n if (target === getLastDate()) {\r\n showNextMonth();\r\n next = getFirstDate();\r\n } else {\r\n parent = target.parentElement;\r\n index = getIndexInCollection(parent.children, target);\r\n row = parent.nextElementSibling;\r\n\r\n if (row) {\r\n next = row.children.item(index);\r\n }\r\n }\r\n\r\n break;\r\n\r\n case 'Home':\r\n next = getFirstDate();\r\n break;\r\n\r\n case 'End':\r\n next = getLastDate();\r\n break;\r\n\r\n case 'PageUp':\r\n case 'PageDown':\r\n if (key === 'PageUp') {\r\n showPreviousMonth();\r\n next = getFirstDate();\r\n } else {\r\n showNextMonth();\r\n next = getLastDate();\r\n }\r\n\r\n break;\r\n }\r\n\r\n event.preventDefault();\r\n\r\n if (next) {\r\n $(next).focus();\r\n }\r\n }\r\n }\r\n\r\n function getIndexInCollection(collection, element) {\r\n for (let i = 0; i < collection.length; i++) {\r\n if (collection[i] === element) {\r\n return i;\r\n }\r\n }\r\n\r\n return -1;\r\n }\r\n\r\n function getFirstDate() {\r\n return $('.calendar-month-dates').not('.hide').find('button').first()[0];\r\n }\r\n\r\n function getLastDate() {\r\n return $('.calendar-month-dates').not('.hide').find('button').last()[0];\r\n }\r\n\r\n function showMonthByIndex(index) {\r\n const monthsSections = $('[data-month-index]');\r\n monthsSections.not('.hide').addClass('hide');\r\n\r\n $('[data-month-index=\\'' + index + '\\']').removeClass('hide');\r\n subscribeHeaderNavigationButtons();\r\n }\r\n\r\n function showPreviousMonth() {\r\n let currentMonth = $('[data-month-index]').not('.hide').data('month-index');\r\n if (currentMonth === 0) {\r\n return false;\r\n }\r\n\r\n --currentMonth;\r\n showMonthByIndex(currentMonth);\r\n return true;\r\n }\r\n\r\n function showNextMonth() {\r\n let currentMonth = $('[data-month-index]').not('.hide').data('month-index');\r\n if (currentMonth + 1 >= calendarTabsCount) {\r\n return false;\r\n }\r\n\r\n ++currentMonth;\r\n showMonthByIndex(currentMonth);\r\n return true;\r\n }\r\n\r\n function subscribeHeaderNavigationButtons() {\r\n const currentMonth = $('[data-month-index]').not('.hide');\r\n\r\n const previousButton = currentMonth.find('.previous').not('.disabled');\r\n previousButton.off('click')\r\n .on('click',\r\n function(event) {\r\n event.preventDefault();\r\n if (!showPreviousMonth()) {\r\n return;\r\n }\r\n const next = getLastDate();\r\n $(next).focus();\r\n });\r\n\r\n const nextButton = currentMonth.find('.next').not('.disabled');\r\n nextButton.off('click')\r\n .on('click',\r\n function(event) {\r\n event.preventDefault();\r\n if (!showNextMonth()) {\r\n return;\r\n }\r\n const next = getFirstDate();\r\n $(next).focus();\r\n });\r\n }\r\n\r\n function onClick(event) {\r\n const target = event.target;\r\n\r\n if ($(target).hasClass('calendar-v2-item--unavailable')) {\r\n return;\r\n } else {\r\n selectDate(target);\r\n }\r\n }\r\n\r\n function onSuccess() {\r\n if (configuration.JourneyType === 'MultiStepEdit') {\r\n if (configuration.IsService) {\r\n const options = {\r\n redirectUrl: configuration.NextStepUrl,\r\n hideNotification: true,\r\n spinnerName: 'serviceSpinner',\r\n };\r\n bgl.common.pubsub.emit('PollBasket', options);\r\n } else {\r\n bgl.common.utilities.redirectToUrl(configuration.NextStepUrl);\r\n }\r\n } else {\r\n $('[data-dismiss=\"slide-panel\"]').click();\r\n bgl.common.pubsub.emit('PollBasket');\r\n }\r\n bgl.common.datastore.removeSessionStorage(form);\r\n }\r\n\r\n function onError(configuration) {\r\n bgl.components.bgldatepicker.init(configuration);\r\n bgl.common.datastore.extendCollectedData(form, {isFormDirty: true});\r\n }\r\n\r\n return {\r\n init: init,\r\n onSuccess: onSuccess,\r\n onError: onError,\r\n };\r\n})();\r\n\r\nif (typeof module !== 'undefined') {\r\n module.exports = bgl.components.coverrange;\r\n}\r\n// eslint-disable-next-line no-var\r\nvar bgl = window.bgl || {};\r\nbgl.components = bgl.components || {};\r\nbgl.components.coverdetails = bgl.components.coverdetails || {};\r\n\r\nbgl.components.coverdetails.yearsbusinessestablished = (function() {\r\n let configuration;\r\n let container;\r\n let form;\r\n\r\n function loadComponent(componentConfiguration, componentUrl, containerElementId) {\r\n configuration = componentConfiguration;\r\n\r\n bgl.common.loader.load(componentConfiguration,\r\n componentUrl,\r\n containerElementId,\r\n function() {\r\n initComponent(componentConfiguration, containerElementId);\r\n });\r\n }\r\n\r\n function initComponent(componentConfiguration, containerId) {\r\n configuration = componentConfiguration;\r\n container = containerId;\r\n form = $('[data-component-id=\\'' + configuration.Id + '\\'] form');\r\n\r\n bgl.common.datastore.init(form);\r\n bgl.common.datastore.setupReadAndWrite();\r\n bgl.common.validator.enableMaxLength();\r\n bgl.common.validator.init(form);\r\n\r\n subscribeToEvents();\r\n }\r\n\r\n function subscribeToEvents() {\r\n const continueButton = $(form.find('[type=\\'submit\\']'));\r\n continueButton.off('click').on('click', continueHandler);\r\n\r\n form.off('submit')\r\n .on('submit',\r\n function(event) {\r\n event.preventDefault();\r\n\r\n setDataHasChangedFlagForQuestionSet();\r\n\r\n if (bgl.common.validator.isFormValid(form)) {\r\n bgl.common.validator.submitForm(form, configuration);\r\n }\r\n\r\n bgl.components.coverdetails.carriageofdangerousgoods.load();\r\n });\r\n\r\n form.find('label').on('keyup', bgl.common.keyboardAccessibility.generateClickOnKeypress);\r\n\r\n if (!isMultiStepEdit()) {\r\n form.find('#yearsBusinessEstablishedBackBtn').off('click').one('click',\r\n function(event) {\r\n event.preventDefault();\r\n\r\n const vehicleUseComponentActionUrl = $(this).attr('href');\r\n const model = bgl.common.datastore.getData(form);\r\n model.ComponentConfiguration = configuration;\r\n\r\n bgl.components.vehicleusage.load(model, vehicleUseComponentActionUrl, container);\r\n });\r\n }\r\n }\r\n\r\n function continueHandler(event) {\r\n event.preventDefault();\r\n\r\n form.submit();\r\n }\r\n\r\n function isMultiStepEdit() {\r\n const coverDetailsCommon = bgl.components.coverdetails.common;\r\n return configuration.JourneyType === coverDetailsCommon.journeyTypes.multiStepEdit;\r\n }\r\n\r\n function onSuccess(result) {\r\n if (isMultiStepEdit()) {\r\n location.href = configuration.NextStepUrl;\r\n } else {\r\n const dangerousGoodsComponentActionUrl = $('#continueButton').data('action-url');\r\n\r\n bgl.components.coverdetails.carriageofdangerousgoods.load(\r\n configuration,\r\n dangerousGoodsComponentActionUrl,\r\n container,\r\n );\r\n }\r\n }\r\n\r\n function onError() {\r\n initComponent(configuration);\r\n }\r\n\r\n function setDataHasChangedFlagForQuestionSet() {\r\n const vehicleUseSessionData = JSON.parse(sessionStorage.getItem('CoverDetailsVehicleUse'));\r\n const dataHasChanged = vehicleUseSessionData['DataHasChanged'] === 'True';\r\n\r\n if (dataHasChanged || bgl.common.datastore.isDataChanged(form)) {\r\n vehicleUseSessionData.DataHasChanged = 'True';\r\n sessionStorage.setItem('CoverDetailsVehicleUse', JSON.stringify(vehicleUseSessionData));\r\n }\r\n }\r\n\r\n return {\r\n init: initComponent,\r\n load: loadComponent,\r\n onSuccess: onSuccess,\r\n onError: onError,\r\n };\r\n})();\r\n// eslint-disable-next-line no-var\r\nvar bgl = window.bgl || {};\r\nbgl.components = bgl.components || {};\r\nbgl.components.coverdetails = bgl.components.coverdetails || {};\r\n\r\nbgl.components.coverdetails.vehicleusage = (function() {\r\n let configuration;\r\n let isVan;\r\n let form;\r\n const carriageOfOwnGoods = '21';\r\n const haulage = '22';\r\n\r\n function loadComponent(componentConfiguration, componentUrl, containerElementId) {\r\n configuration = componentConfiguration;\r\n\r\n bgl.common.loader.load(componentConfiguration,\r\n componentUrl,\r\n containerElementId,\r\n function() {\r\n initComponent(componentConfiguration);\r\n });\r\n }\r\n\r\n function initComponent(componentConfiguration) {\r\n configuration = componentConfiguration;\r\n isVan = $('#IsVan').val();\r\n form = $('[data-component-id=\"' + configuration.Id + '\"] form');\r\n\r\n bgl.common.datastore.init(form);\r\n bgl.common.datastore.setupReadAndWrite();\r\n bgl.common.validator.init(form);\r\n\r\n subscribeToEvents();\r\n\r\n form.find('label').on('keyup', bgl.common.keyboardAccessibility.generateClickOnKeypress);\r\n }\r\n\r\n function subscribeToEvents() {\r\n if (form.find('input[type=radio]:checked').length === 0) {\r\n form.find('input[type=radio]')\r\n .off('keypress', generateClickOnKeypress)\r\n .on('keypress', generateClickOnKeypress)\r\n .off('click', continueHandler)\r\n .on('click', function(event) {\r\n $(this).focusout();\r\n submitForm();\r\n });\r\n } else {\r\n const continueButton = $(form.find('[type=\"submit\"]'));\r\n continueButton.removeClass('hide');\r\n continueButton.off('click').on('click', continueHandler);\r\n }\r\n\r\n form.off('submit')\r\n .on('submit',\r\n function(event) {\r\n event.preventDefault();\r\n\r\n setDataHasChangedFlagForQuestionSet();\r\n\r\n if (isVan === 'True') {\r\n vanNavigation();\r\n } else {\r\n if (bgl.common.validator.isFormValid(form)) {\r\n bgl.common.validator.submitForm(form, configuration);\r\n }\r\n }\r\n });\r\n }\r\n\r\n function submitForm() {\r\n form.submit();\r\n }\r\n\r\n function onSuccess(componentConfiguration) {\r\n location.href = componentConfiguration.NextStepUrl;\r\n }\r\n\r\n function generateClickOnKeypress(event) {\r\n const code = event.charCode || event.keyCode;\r\n if (code === 13 || code === 32) {\r\n $(this).click();\r\n }\r\n }\r\n\r\n function continueHandler(event, element) {\r\n event.preventDefault();\r\n\r\n if (bgl.common.datastore.isDataChanged(form)) {\r\n submitForm();\r\n } else {\r\n if (isVan === 'True') {\r\n vanNavigation();\r\n } else {\r\n location.href = configuration.NextStepUrl;\r\n }\r\n }\r\n }\r\n\r\n function vanNavigation() {\r\n const vehicleUsage = $('input[name=ClassOfUseCode]:checked', '#vehicle-usage').val();\r\n if (typeof bgl.common.pubsub !== 'undefined') {\r\n bgl.common.pubsub.emit('fakeFormSubmit', 'VehicleUsage');\r\n }\r\n if (vehicleUsage === carriageOfOwnGoods || vehicleUsage === haulage) {\r\n bgl.common.utilities.redirectToUrl(configuration.YearsBusinessEstablishedUrl);\r\n } else {\r\n bgl.common.utilities.redirectToUrl(configuration.CarriageOfDangerousGoodsUrl);\r\n }\r\n }\r\n\r\n function setDataHasChangedFlagForQuestionSet() {\r\n const vehicleUseSessionData = JSON.parse(sessionStorage.getItem('CoverDetailsVehicleUse'));\r\n\r\n if (bgl.common.datastore.isDataChanged(form)) {\r\n vehicleUseSessionData.DataHasChanged = 'True';\r\n sessionStorage.setItem('CoverDetailsVehicleUse', JSON.stringify(vehicleUseSessionData));\r\n }\r\n }\r\n\r\n return {\r\n init: initComponent,\r\n load: loadComponent,\r\n onSuccess: onSuccess,\r\n };\r\n})();\r\n// eslint-disable-next-line no-var\r\nvar bgl = window.bgl || {};\r\nbgl.components = bgl.components || {};\r\nbgl.components.coverdetails = bgl.components.coverdetails || {};\r\n\r\nbgl.components.coverdetails.sameaddress = (function() {\r\n let form;\r\n let configuration;\r\n let container;\r\n let registerKeeper;\r\n let continueButton;\r\n const SPACE_KEYCODE = 32;\r\n const ENTER_KEYCODE = 13;\r\n\r\n function initComponent(componentConfiguration, containerId) {\r\n initElements(componentConfiguration, containerId);\r\n\r\n registerKeeper.redirectIfSessionStorageIsNotFound(form, componentConfiguration.ParentJourneyUrl);\r\n\r\n subscribeForEvents();\r\n\r\n registerKeeper.updateHeading(form);\r\n\r\n registerKeeper.displaySubmitButton(form);\r\n }\r\n\r\n function loadComponent(config, url, containerId) {\r\n bgl.common.loader.load(config,\r\n url,\r\n containerId,\r\n function() {\r\n initComponent(config, containerId);\r\n });\r\n }\r\n\r\n function onMultiStepEditSuccess(configuration, data) {\r\n registerKeeper.clearOtherOptionFields(form);\r\n\r\n const registeredKeeperData = {RegisteredKeeperId: data.registeredKeeperId};\r\n\r\n bgl.common.datastore.extendCollectedData(form, registeredKeeperData);\r\n bgl.common.utilities.redirectToUrl(configuration.NextStepUrl);\r\n }\r\n\r\n function onSuccess(configuration, data) {\r\n registerKeeper.clearOtherOptionFields(form);\r\n bgl.components.coverdetails.registeredkeeper.load(configuration, data.nextUrl, container, true);\r\n }\r\n\r\n function onError() {\r\n initComponent(configuration);\r\n }\r\n\r\n function initElements(componentConfiguration, containerId) {\r\n configuration = componentConfiguration;\r\n form = $('#same-address-form');\r\n continueButton = $('#continueButton');\r\n container = containerId;\r\n registerKeeper = bgl.components.coverdetails.registeredkeeper;\r\n }\r\n\r\n function subscribeForEvents() {\r\n bgl.common.validator.init(form);\r\n bgl.common.datastore.init(form);\r\n bgl.common.datastore.setupReadAndWrite();\r\n\r\n $('input[type=\"radio\"]')\r\n .off('click')\r\n .off('keypress')\r\n .on({\r\n 'keypress': function(e) {\r\n if (e.keyCode === ENTER_KEYCODE || e.keyCode === SPACE_KEYCODE) {\r\n $(this).click();\r\n }\r\n },\r\n 'click': function(event) {\r\n registerKeeper.submitForm(form);\r\n },\r\n });\r\n\r\n form.off('submit')\r\n .on('submit',\r\n function(event) {\r\n event.preventDefault();\r\n\r\n continueButton.attr('disabled', true);\r\n if (bgl.common.validator.isFormValid(form)) {\r\n const hasOwnData = form.data('hasOwnData');\r\n\r\n bgl.common.validator.submitForm(form, configuration, hasOwnData ? getStoredData() : null);\r\n } else {\r\n continueButton.attr('disabled', false);\r\n }\r\n });\r\n\r\n form.find('.back-button-link').off('click').one('click',\r\n function(event) {\r\n event.preventDefault();\r\n\r\n const url = $(this).attr('href');\r\n\r\n bgl.components.coverdetails.maritalstatus.load(configuration, url, container);\r\n });\r\n\r\n form.find('label').on('keyup', bgl.common.keyboardAccessibility.generateClickOnKeypress);\r\n }\r\n\r\n function getStoredData() {\r\n const data = getDataToPost();\r\n const formData = form.serialize();\r\n\r\n return formData + '&' + $.param(data);\r\n }\r\n\r\n function getDataToPost() {\r\n const data = bgl.common.datastore.getData(form);\r\n const config = {ComponentConfiguration: configuration};\r\n\r\n $.extend(data, config);\r\n\r\n return data;\r\n }\r\n\r\n return {\r\n init: initComponent,\r\n load: loadComponent,\r\n onSuccess: onSuccess,\r\n onMultiStepEditSuccess: onMultiStepEditSuccess,\r\n onError: onError,\r\n };\r\n})();\r\n// eslint-disable-next-line no-var\r\nvar bgl = window.bgl || {};\r\nbgl.components = bgl.components || {};\r\nbgl.components.coverdetails = bgl.components.coverdetails || {};\r\n\r\nbgl.components.coverdetails.relationshipstatus = (function() {\r\n let form;\r\n let configuration;\r\n let container;\r\n let registerKeeper;\r\n const SPACE_KEYCODE = 32;\r\n const ENTER_KEYCODE = 13;\r\n\r\n function initComponent(componentConfiguration, containerId) {\r\n initElements(componentConfiguration, containerId);\r\n\r\n subscribeForEvents();\r\n\r\n registerKeeper.displaySubmitButton(form);\r\n }\r\n\r\n function loadComponent(config, url, containerId) {\r\n bgl.common.loader.load(config,\r\n url,\r\n containerId,\r\n function() {\r\n initComponent(config, containerId);\r\n });\r\n }\r\n\r\n function initElements(componentConfiguration, containerId) {\r\n configuration = componentConfiguration;\r\n form = $('#relationship-status-form');\r\n container = containerId;\r\n registerKeeper = bgl.components.coverdetails.registeredkeeper;\r\n }\r\n\r\n function subscribeForEvents() {\r\n bgl.common.validator.init(form);\r\n bgl.common.datastore.init(form);\r\n bgl.common.datastore.setupReadAndWrite();\r\n\r\n form.find('input[type=\"radio\"]')\r\n .off('click')\r\n .off('keypress')\r\n .on({\r\n 'keypress': function(e) {\r\n if (e.keyCode === ENTER_KEYCODE || e.keyCode === SPACE_KEYCODE) {\r\n $(this).click();\r\n }\r\n },\r\n 'click': function(event) {\r\n registerKeeper.submitForm(form);\r\n },\r\n });\r\n\r\n form.off('submit')\r\n .on('submit',\r\n function(event) {\r\n event.preventDefault();\r\n if (bgl.common.validator.isFormValid(form)) {\r\n bgl.common.validator.submitForm(form, configuration);\r\n }\r\n });\r\n\r\n form.find('.back-button-link').off('click').one('click',\r\n function(event) {\r\n event.preventDefault();\r\n\r\n const url = $(this).attr('href');\r\n\r\n bgl.components.coverdetails.registeredkeeper.load(configuration, url, container);\r\n });\r\n\r\n form.find('label').on('keyup', bgl.common.keyboardAccessibility.generateClickOnKeypress);\r\n }\r\n\r\n function onMultiStepEditSuccess(configuration, data) {\r\n bgl.common.utilities.redirectToUrl(configuration.NextStepUrl);\r\n }\r\n\r\n function onSuccess(configuration, data) {\r\n bgl.components.coverdetails.aboutyou.load(configuration, data.nextUrl, container);\r\n }\r\n\r\n function onError() {\r\n initComponent(configuration, container);\r\n }\r\n\r\n return {\r\n init: initComponent,\r\n load: loadComponent,\r\n onSuccess: onSuccess,\r\n onMultiStepEditSuccess: onMultiStepEditSuccess,\r\n onError: onError,\r\n };\r\n})();\r\n// eslint-disable-next-line no-var\r\nvar bgl = window.bgl || {};\r\nbgl.components = bgl.components || {};\r\nbgl.components.coverdetails = bgl.components.coverdetails || {};\r\n\r\nbgl.components.coverdetails.registeredkeeper = (function() {\r\n let form;\r\n let configuration;\r\n let container;\r\n let continueButton;\r\n let typeInput;\r\n let triggerPollBasket;\r\n let companyKeeper;\r\n let coverDetailsCommon;\r\n const HIDDEN_CLASS = 'hide';\r\n const SPACE_KEYCODE = 32;\r\n const ENTER_KEYCODE = 13;\r\n\r\n function initComponent(componentConfiguration, containerId, callPollBasket) {\r\n initElements(componentConfiguration, containerId, callPollBasket);\r\n\r\n showCompanyName();\r\n\r\n subscribeForEvents();\r\n\r\n displaySubmitButton(form);\r\n }\r\n\r\n function loadComponent(config, url, containerId, callPollBasket) {\r\n bgl.common.loader.load(configuration,\r\n url,\r\n container,\r\n function() {\r\n initComponent(config, containerId, callPollBasket);\r\n });\r\n }\r\n\r\n function onSuccess(configuration, data) {\r\n if (data.nextUrl) {\r\n bgl.components.coverdetails.relationshipstatus.load(configuration, data.nextUrl, container);\r\n } else {\r\n closeSlidePanelAndTriggerUnderwriting(true);\r\n }\r\n\r\n clearOtherOptionFields(form);\r\n }\r\n\r\n function onMultiStepEditSuccess(configuration, data) {\r\n const url = data.nextUrl || configuration.NextStepUrl;\r\n\r\n bgl.common.utilities.redirectToUrl(url);\r\n\r\n clearOtherOptionFields(form);\r\n }\r\n\r\n function onError() {\r\n continueButton.removeAttr('disabled');\r\n bgl.components.coverdetails.registeredkeeper.init(configuration);\r\n }\r\n\r\n function clearOtherOptionFields(componentForm) {\r\n const fieldsToRemove = [\r\n 'Title', 'DateOfBirth', 'LastName', 'HasSameAddress',\r\n 'FirstName', 'RelationshipStatusCode', 'MaritalStatusCode',\r\n ];\r\n\r\n bgl.common.datastore.deleteFields(componentForm, fieldsToRemove);\r\n }\r\n\r\n function redirectIfSessionStorageIsNotFound(componentForm, parentJourneyUrl) {\r\n const data = bgl.common.datastore.getData(componentForm);\r\n\r\n if (!data || !data['RelationshipStatusCode']) {\r\n bgl.common.utilities.redirectToUrl(parentJourneyUrl);\r\n }\r\n }\r\n\r\n function initElements(componentConfiguration, containerId, callPollBasket) {\r\n configuration = componentConfiguration;\r\n form = $('#' + configuration.Id + '_form-registered-keeper');\r\n continueButton = form.find('#ContinueButton');\r\n container = containerId;\r\n coverDetailsCommon = bgl.components.coverdetails.common;\r\n typeInput = form.find('#Type');\r\n companyKeeper = form.find('#company-keeper');\r\n triggerPollBasket = callPollBasket;\r\n }\r\n\r\n function subscribeForEvents() {\r\n bgl.common.validator.init(form);\r\n bgl.common.validator.enableMaxLength();\r\n bgl.common.datastore.init(form);\r\n bgl.common.datastore.setupReadAndWrite();\r\n\r\n form.off('submit')\r\n .on('submit',\r\n function(event) {\r\n event.preventDefault();\r\n\r\n continueButton.attr('disabled', true);\r\n\r\n if (!bgl.common.validator.isFormValid(form)) {\r\n continueButton.removeAttr('disabled');\r\n return;\r\n }\r\n\r\n const isSingleEdit = configuration.JourneyType === coverDetailsCommon.journeyTypes.singleEdit;\r\n\r\n if (isSingleEdit && !bgl.common.datastore.isDataChanged(form)) {\r\n closeSlidePanelAndTriggerUnderwriting(triggerPollBasket);\r\n return;\r\n }\r\n\r\n bgl.common.validator.submitForm(form, configuration);\r\n });\r\n\r\n form.find('input[type=\"radio\"]')\r\n .off('click')\r\n .off('keypress')\r\n .on({\r\n 'keypress': function(e) {\r\n if (e.keyCode === ENTER_KEYCODE || e.keyCode === SPACE_KEYCODE) {\r\n $(this).click();\r\n }\r\n },\r\n 'click': function(event) {\r\n const keeperType = $(this).attr('data-keeper-type');\r\n registerKeeperOptionClickHandler(keeperType);\r\n },\r\n });\r\n\r\n form.find('label').on('keyup', bgl.common.keyboardAccessibility.generateClickOnKeypress);\r\n }\r\n\r\n function updateContinueButtonValue() {\r\n if (configuration.JourneyType !== coverDetailsCommon.journeyTypes.multiStepEdit) {\r\n continueButton.val('Done');\r\n }\r\n }\r\n\r\n function showCompanyName() {\r\n const data = bgl.common.datastore.getData(form);\r\n\r\n if (data) {\r\n switch (data.RegisteredKeeperId) {\r\n case 'company':\r\n companyKeeper.removeClass(HIDDEN_CLASS);\r\n typeInput.val('O');\r\n break;\r\n case 'soleTrader':\r\n companyKeeper.removeClass(HIDDEN_CLASS);\r\n typeInput.val('B');\r\n break;\r\n case 'partnership':\r\n companyKeeper.removeClass(HIDDEN_CLASS);\r\n typeInput.val('A');\r\n break;\r\n }\r\n }\r\n }\r\n\r\n function registerKeeperOptionClickHandler(keeperType) {\r\n const companyName = $('#CompanyName');\r\n\r\n switch (keeperType) {\r\n case 'P':\r\n companyKeeper.addClass(HIDDEN_CLASS);\r\n companyName.val('').focusout();\r\n typeInput.val('P');\r\n form.change();\r\n updateContinueButtonValue();\r\n submitForm(form);\r\n break;\r\n\r\n case 'O':\r\n companyKeeper.removeClass(HIDDEN_CLASS);\r\n typeInput.val('O');\r\n companyName.val('').focusout();\r\n continueButton.removeClass(HIDDEN_CLASS);\r\n updateContinueButtonValue();\r\n break;\r\n\r\n case 'B':\r\n companyKeeper.removeClass(HIDDEN_CLASS);\r\n typeInput.val('B');\r\n companyName.val('').focusout();\r\n continueButton.removeClass(HIDDEN_CLASS);\r\n updateContinueButtonValue();\r\n break;\r\n\r\n case 'A':\r\n companyKeeper.removeClass(HIDDEN_CLASS);\r\n typeInput.val('A');\r\n companyName.val('').focusout();\r\n continueButton.removeClass(HIDDEN_CLASS);\r\n updateContinueButtonValue();\r\n break;\r\n\r\n case 'Other':\r\n companyKeeper.addClass(HIDDEN_CLASS);\r\n companyName.val('');\r\n typeInput.val('Other');\r\n continueButton.val('Continue');\r\n submitForm(form);\r\n break;\r\n }\r\n }\r\n\r\n function submitForm(form) {\r\n const submitButton = form.find(':submit');\r\n\r\n if (submitButton.hasClass(HIDDEN_CLASS)) {\r\n form.change().submit();\r\n }\r\n }\r\n\r\n function displaySubmitButton(form) {\r\n if (form.find('[type=\\'radio\\']:checked').length) {\r\n form.find(':submit').removeClass(HIDDEN_CLASS);\r\n }\r\n }\r\n\r\n function updateHeading(form) {\r\n const data = bgl.common.datastore.getData(form);\r\n\r\n if (data) {\r\n const heading = form.find('#heading');\r\n const text = heading.html();\r\n\r\n heading.html(text.replace('{FirstName}', data.FirstName));\r\n }\r\n }\r\n\r\n function closeSlidePanelAndTriggerUnderwriting(triggerPollBasket) {\r\n bgl.common.datastore.removeSessionStorage(form);\r\n $('[data-dismiss=\"slide-panel\"]').click();\r\n\r\n if (triggerPollBasket) {\r\n bgl.common.pubsub.emit('PollBasket');\r\n }\r\n }\r\n\r\n return {\r\n init: initComponent,\r\n load: loadComponent,\r\n onSuccess: onSuccess,\r\n onMultiStepEditSuccess: onMultiStepEditSuccess,\r\n onError: onError,\r\n displaySubmitButton: displaySubmitButton,\r\n submitForm: submitForm,\r\n updateHeading: updateHeading,\r\n clearOtherOptionFields: clearOtherOptionFields,\r\n redirectIfSessionStorageIsNotFound: redirectIfSessionStorageIsNotFound,\r\n };\r\n})();\r\n// eslint-disable-next-line no-var\r\nvar bgl = window.bgl || {};\r\nbgl.components = bgl.components || {};\r\nbgl.components.coverdetails = bgl.components.coverdetails || {};\r\n\r\nbgl.components.coverdetails.productvariants = (function() {\r\n const SPACE_KEYCODE = 32;\r\n const ENTER_KEYCODE = 13;\r\n let configuration;\r\n let table;\r\n\r\n function initComponent(componentConfiguration) {\r\n configuration = componentConfiguration;\r\n table = $('#ProductVariantsTable');\r\n onSelected();\r\n initHelperLink();\r\n eventListener();\r\n\r\n if (configuration.RowBuilder === 1) {\r\n updateAprRowClasses();\r\n updateAddonLinks();\r\n }\r\n updateAriaLabelsOnPrice();\r\n }\r\n\r\n function initHelperLink() {\r\n const links = $('#' + configuration.Id).find('.tooltip');\r\n links.off('keyup');\r\n links.off('click');\r\n links.on({\r\n 'keyup': function(event) {\r\n const code = event.charCode || event.keyCode;\r\n const link = $(this);\r\n\r\n if (code === ENTER_KEYCODE || code === SPACE_KEYCODE) {\r\n link.click();\r\n }\r\n },\r\n 'click': function(event) {\r\n event.preventDefault();\r\n const link = $(this);\r\n bgl.components.coverdetails.common.load(\r\n configuration,\r\n link.data('content-url'),\r\n link.data('container'),\r\n );\r\n },\r\n });\r\n }\r\n\r\n function eventListener() {\r\n bgl.common.pubsub.on('switchPaymentType',\r\n function() {\r\n switchPaymentType();\r\n });\r\n }\r\n\r\n function updateAriaLabelsOnPrice() {\r\n document.querySelectorAll('[data-price-type=\"annual\"]')\r\n .forEach((a) => a.setAttribute('aria-hidden', isMonthly()));\r\n document.querySelectorAll('[data-price-type=\"monthly\"]')\r\n .forEach((m) => m.setAttribute('aria-hidden', !isMonthly()));\r\n }\r\n\r\n function switchPaymentType() {\r\n const priceMonthly = document.querySelectorAll('[data-payment-type=\"Monthly\"]');\r\n const priceAnnual = document.querySelectorAll('[data-payment-type=\"Annual\"]');\r\n\r\n if (isMonthly() === false) {\r\n priceMonthly.forEach((p) => p.classList.remove('hide'));\r\n priceAnnual.forEach((p) => p.classList.add('hide'));\r\n } else {\r\n priceMonthly.forEach((p) => p.classList.add('hide'));\r\n priceAnnual.forEach((p) => p.classList.remove('hide'));\r\n }\r\n updateAprRowClasses();\r\n updateAriaLabelsOnPrice();\r\n\r\n if (configuration.RowBuilder === 1) {\r\n updateAddonLinks();\r\n }\r\n }\r\n\r\n function onSelected() {\r\n table.find('button').off('click').on('click',\r\n function(e) {\r\n e.stopPropagation();\r\n\r\n if (!$(this).hasClass('active')) {\r\n const tier = $(this).data('tier');\r\n\r\n setButtonText('Select');\r\n table.find('.active').removeClass('active').addClass('ui-state-disabled');\r\n table.find('[data-tier=' + tier + ']').addClass('active');\r\n $(this).text('Selecting');\r\n\r\n $('#VariantCode').val($(this).data('variant-code'));\r\n $('#Description').val($(this).data('variant-description'));\r\n const form = $('#' + configuration.Id + '__form');\r\n\r\n bgl.common.validator.submitForm(form, configuration);\r\n setLinksDisabled(true);\r\n }\r\n });\r\n }\r\n\r\n function setButtonText(text) {\r\n table.find('.active:button').text(text);\r\n }\r\n\r\n function successCallback(houstonMessage) {\r\n const notification = JSON.stringify({\r\n cat: 'pricechange',\r\n msg: houstonMessage,\r\n });\r\n sessionStorage.setItem('notification', notification);\r\n window.location.reload(true);\r\n setButtonText('Selected');\r\n }\r\n\r\n function onSuccess(configuration, data) {\r\n if (data.houstonMessage) {\r\n const params = {\r\n callback: function() {\r\n successCallback(data.houstonMessage);\r\n },\r\n spinnerName: 'addonSpinner',\r\n };\r\n\r\n bgl.common.pubsub.emit('PollBasket', params);\r\n } else {\r\n bgl.common.pubsub.emit('PollBasket');\r\n }\r\n }\r\n\r\n function setLinksDisabled(disabled) {\r\n const elements = $('button, a, select, input, label, [data-tier], .shopping-basket, #Houston').not('.tooltip');\r\n elements.prop('disabled', disabled);\r\n\r\n if (disabled === true) {\r\n elements.addClass('disabled');\r\n } else {\r\n elements.removeClass('disabled');\r\n };\r\n }\r\n\r\n function isMonthly() {\r\n const annualElement = document.querySelectorAll('[data-payment-type=\"Annual\"]');\r\n return annualElement[0].classList.contains('hide');\r\n }\r\n\r\n function updateAprRowClasses() {\r\n if (isMonthly()) {\r\n $('#apr-table-row').removeClass('hide');\r\n } else {\r\n $('#apr-table-row').addClass('hide');\r\n }\r\n }\r\n\r\n function updateAddonLinks() {\r\n const isPremier = $('[data-tier=\"2\"]').hasClass('active');\r\n const addonLinks = $('.tooltip');\r\n\r\n addonLinks.each(function(i, element) {\r\n const coverKey = $(element).attr('data-cover-key');\r\n let contentUrl;\r\n if (isPremier) {\r\n contentUrl = configuration.CoverFeaturePriority[coverKey].ContentUrlPremier;\r\n } else {\r\n contentUrl = configuration.CoverFeaturePriority[coverKey].ContentUrl;\r\n }\r\n\r\n $(element).attr('data-content-url', contentUrl);\r\n });\r\n }\r\n\r\n function onError() {\r\n setLinksDisabled(false);\r\n bgl.components.coverdetails.productvariants.init(configuration);\r\n }\r\n\r\n return {\r\n init: initComponent,\r\n onSuccess: onSuccess,\r\n onError: onError,\r\n };\r\n})();\r\n/* eslint-disable indent */\r\n// eslint-disable-next-line no-var\r\nvar bgl = window.bgl || {};\r\nbgl.components = bgl.components || {};\r\nbgl.components.coverdetails = bgl.components.coverdetails || {};\r\n\r\nbgl.components.coverdetails.policybenefits = (function() {\r\n let configuration;\r\n\r\n function initComponent(componentConfiguration) {\r\n configuration = componentConfiguration;\r\n subscribeToPolicyBenefitsEvents();\r\n }\r\n function subscribeToPolicyBenefitsEvents() {\r\n const policyBenefitsButton = document.getElementById(`${configuration.Id}PolicyBenefitsButton`);\r\n const expandableSectionContainer = document.getElementById(`${configuration.Id}ExpandableSection`);\r\n\r\n if (policyBenefitsButton) {\r\n policyBenefitsButton.addEventListener('click', (e) => {\r\n if (expandableSectionContainer.getAttribute('data-expanded').toLowerCase() == 'true') {\r\n expandableSectionContainer.classList.add('hide');\r\n expandableSectionContainer.setAttribute('data-expanded', 'false');\r\n policyBenefitsButton.setAttribute('aria-expanded', 'false');\r\n policyBenefitsButton.innerText = 'View all features';\r\n } else {\r\n expandableSectionContainer.classList.remove('hide');\r\n expandableSectionContainer.setAttribute('data-expanded', 'true');\r\n policyBenefitsButton.setAttribute('aria-expanded', 'true');\r\n policyBenefitsButton.innerText = 'View less features';\r\n }\r\n });\r\n }\r\n }\r\n\r\n return {\r\n init: initComponent,\r\n };\r\n})();\r\n// eslint-disable-next-line no-var\r\nvar bgl = window.bgl || {};\r\nbgl.components = bgl.components || {};\r\nbgl.components.coverdetails = bgl.components.coverdetails || {};\r\n\r\nbgl.components.coverdetails.othervehicles = (function() {\r\n let form;\r\n let configuration;\r\n let continueButton;\r\n\r\n function initComponent(componentConfiguration) {\r\n const isNcdQuestionRemoved = componentConfiguration.IsNcdQuestionRemoved;\r\n\r\n configuration = componentConfiguration;\r\n form = $('#' + configuration.Id + '__other-vehicles-form');\r\n continueButton = $('#Continue-Button');\r\n\r\n bgl.common.datastore.init(form);\r\n bgl.common.datastore.setupReadAndWrite();\r\n bgl.common.validator.init(form);\r\n\r\n if (!isNcdQuestionRemoved) {\r\n subscribeForEvents();\r\n initElements();\r\n } else {\r\n initWithoutNcdQuestion();\r\n }\r\n\r\n form.find('label').on('keyup', bgl.common.keyboardAccessibility.generateClickOnKeypress);\r\n }\r\n\r\n function initWithoutNcdQuestion() {\r\n showContinue();\r\n\r\n form.find('#Vehicle-Use-Yes, #Vehicle-Use-No').on('click',\r\n function(e) {\r\n if (continueButton.hasClass('hide')) {\r\n form.change().submit();\r\n }\r\n });\r\n\r\n subscribeForSubmit();\r\n }\r\n\r\n function initElements() {\r\n form.find('#Vehicle-Use-Yes, #Other-Vehicle-Yes').each(function(index, element) {\r\n const sections = $(element).data('sections');\r\n\r\n if ($(element).prop('checked')) {\r\n $(sections).removeClass('hide');\r\n }\r\n });\r\n\r\n showContinue();\r\n }\r\n\r\n function showContinue() {\r\n if (form.find('input[type=\\'radio\\']:checked').length) {\r\n continueButton.removeClass('hide');\r\n }\r\n }\r\n\r\n function subscribeForEvents() {\r\n form.find('#Vehicle-Use-Yes, #Other-Vehicle-Yes').on('click',\r\n function(e) {\r\n const sections = $(this).data('sections');\r\n\r\n $(sections).removeClass('hide');\r\n });\r\n\r\n form.find('#Vehicle-Use-No, #Other-Vehicle-No').on('click',\r\n function(e) {\r\n const sections = $(this).data('sections');\r\n\r\n $(sections).addClass('hide');\r\n\r\n deleteFields(sections);\r\n\r\n if (continueButton.hasClass('hide')) {\r\n form.change().submit();\r\n }\r\n });\r\n\r\n subscribeForSubmit();\r\n }\r\n\r\n function subscribeForSubmit() {\r\n form.off('submit').on('submit',\r\n function(event) {\r\n event.preventDefault();\r\n\r\n if (bgl.common.validator.isFormValid(form)) {\r\n if (bgl.common.datastore.isDataChanged(form)) {\r\n const data = getStoredData();\r\n\r\n bgl.common.validator.submitForm(form, configuration, data);\r\n } else {\r\n onSuccess();\r\n }\r\n }\r\n });\r\n }\r\n\r\n function deleteFields(sections) {\r\n const elements = $(sections).removeClass('error').find('[data-store]');\r\n let dropdownKey;\r\n\r\n const fieldsToDelete = $.map(elements,\r\n function(element) {\r\n const elementName = $(element).attr('name');\r\n\r\n if ($(element).is('select')) {\r\n $(element).val('');\r\n dropdownKey = elementName;\r\n } else if ($(element).is('input')) {\r\n $(element).prop('checked', false);\r\n }\r\n\r\n return elementName;\r\n });\r\n\r\n if (dropdownKey) {\r\n fieldsToDelete.push(dropdownKey + 'Text', dropdownKey + 'Val');\r\n }\r\n\r\n bgl.common.datastore.deleteFields(form, fieldsToDelete);\r\n }\r\n\r\n function getStoredData() {\r\n const data = bgl.common.datastore.getData(form) || {};\r\n const formData = form.serialize();\r\n\r\n return formData + '&' + $.param(data);\r\n }\r\n\r\n function onSuccess() {\r\n bgl.common.utilities.redirectToUrl(configuration.NextStepUrl);\r\n }\r\n\r\n function onError() {\r\n initComponent(configuration);\r\n }\r\n\r\n return {\r\n init: initComponent,\r\n onSuccess: onSuccess,\r\n onError: onError,\r\n };\r\n})();\r\n// eslint-disable-next-line no-var\r\nvar bgl = window.bgl || {};\r\nbgl.components = bgl.components || {};\r\nbgl.components.coverdetails = bgl.components.coverdetails || {};\r\n\r\nbgl.components.coverdetails.ncdyears = (function() {\r\n let configuration;\r\n let form;\r\n\r\n function loadComponent(componentConfiguration, componentUrl, containerElementId) {\r\n configuration = componentConfiguration;\r\n\r\n bgl.common.loader.load(componentConfiguration,\r\n componentUrl,\r\n containerElementId,\r\n function() {\r\n initComponent(componentConfiguration);\r\n });\r\n }\r\n\r\n function initComponent(componentConfiguration) {\r\n configuration = componentConfiguration;\r\n form = $('[data-component-id=\\'' + configuration.Id + '\\'] form');\r\n\r\n bgl.common.datastore.init(form, false);\r\n bgl.common.datastore.setupReadAndWrite();\r\n bgl.common.validator.init(form);\r\n\r\n subscribeToEvents();\r\n }\r\n\r\n function subscribeToEvents() {\r\n if (form.find('input[type=radio]:checked').length === 0) {\r\n form.find('input[type=radio]')\r\n .off('keypress', generateClickOnKeypress)\r\n .on('keypress', generateClickOnKeypress)\r\n .off('click', continueHandler)\r\n .on('click', function(event) {\r\n $(this).focusout();\r\n form.change();\r\n continueHandler(event);\r\n });\r\n } else {\r\n const continueButton = $(form.find('[type=\\'submit\\']'));\r\n continueButton.removeClass('hide');\r\n continueButton.off('click').on('click', continueHandler);\r\n }\r\n\r\n form.find('label').on('keyup', bgl.common.keyboardAccessibility.generateClickOnKeypress);\r\n\r\n const ncdYearsSessionData = JSON.parse(sessionStorage.getItem('NcdYears'));\r\n const isVan = ncdYearsSessionData['IsVan'];\r\n\r\n if (isVan === 'True') {\r\n $('#noclaimsdiscountyearsbackbtn').attr('href', configuration.CarriageOfDangerousGoodsUrl);\r\n }\r\n }\r\n\r\n function generateClickOnKeypress(event) {\r\n const code = event.charCode || event.keyCode;\r\n if (code === 13 || code === 32) {\r\n $(this).click();\r\n }\r\n }\r\n\r\n function continueHandler(event, element) {\r\n event.preventDefault();\r\n const submitButton = form.find(':submit');\r\n submitButton.attr('disabled', 'disabled');\r\n\r\n if (bgl.common.validator.isFormValid(form)) {\r\n $('#HasChanges').val(bgl.common.datastore.isDataChanged(form) === true);\r\n bgl.common.validator.submitForm(form, configuration);\r\n } else {\r\n submitButton.removeAttr('disabled');\r\n }\r\n }\r\n\r\n function onSuccess(configuration, data) {\r\n bgl.common.datastore.extendCollectedData(form, {isFormDirty: false});\r\n\r\n if (data.isNeedToDeleteNcdSource === true && configuration.DataStoreKeyForNcdSourcePage) {\r\n bgl.common.datastore.deleteFields(configuration.DataStoreKeyForNcdSourcePage, ['NcdSourceCode']);\r\n }\r\n\r\n bgl.common.utilities.redirectToUrl(data.nextPageUrl);\r\n }\r\n\r\n function onError() {\r\n bgl.components.coverdetails.ncdyears.init(configuration);\r\n }\r\n\r\n return {\r\n init: initComponent,\r\n load: loadComponent,\r\n onSuccess: onSuccess,\r\n onError: onError,\r\n };\r\n})();\r\n// eslint-disable-next-line no-var\r\nvar bgl = window.bgl || {};\r\nbgl.components = bgl.components || {};\r\nbgl.components.coverdetails = bgl.components.coverdetails || {};\r\n\r\nbgl.components.coverdetails.ncdsource = (function() {\r\n let configuration;\r\n let form;\r\n\r\n function initComponent(componentConfiguration) {\r\n configuration = componentConfiguration;\r\n form = $('#ncd-source-form');\r\n\r\n bgl.common.datastore.init(form);\r\n bgl.common.datastore.setupReadAndWrite();\r\n bgl.common.validator.init(form);\r\n\r\n subscribeToEvents();\r\n }\r\n\r\n function subscribeToEvents() {\r\n form.off('submit').on('submit',\r\n function(event) {\r\n event.preventDefault();\r\n\r\n if (bgl.common.validator.isFormValid(form)) {\r\n if (bgl.common.datastore.isDataChanged(form)) {\r\n bgl.common.validator.submitForm(form, configuration);\r\n } else {\r\n onSuccess();\r\n }\r\n }\r\n });\r\n }\r\n\r\n function onSuccess() {\r\n bgl.common.utilities.redirectToUrl(configuration.NextStepUrl);\r\n }\r\n\r\n function onError() {\r\n bgl.components.coverdetails.ncdsource(configuration);\r\n }\r\n\r\n return {\r\n init: initComponent,\r\n onSuccess: onSuccess,\r\n onError: onError,\r\n };\r\n})();\r\n// eslint-disable-next-line no-var\r\nvar bgl = window.bgl || {};\r\nbgl.components = bgl.components || {};\r\nbgl.components.coverdetails = bgl.components.coverdetails || {};\r\n\r\nbgl.components.coverdetails.maritalstatus = (function() {\r\n let form;\r\n let configuration;\r\n let container;\r\n let registerKeeper;\r\n const SPACE_KEYCODE = 32;\r\n const ENTER_KEYCODE = 13;\r\n\r\n function initComponent(componentConfiguration, containerId) {\r\n initElements(componentConfiguration, containerId);\r\n\r\n registerKeeper.redirectIfSessionStorageIsNotFound(form, componentConfiguration.ParentJourneyUrl);\r\n\r\n subscribeForEvents();\r\n\r\n registerKeeper.updateHeading(form);\r\n\r\n registerKeeper.displaySubmitButton(form);\r\n }\r\n\r\n function loadComponent(config, url, containerId) {\r\n bgl.common.loader.load(config,\r\n url,\r\n containerId,\r\n function() {\r\n initComponent(config, containerId);\r\n });\r\n }\r\n\r\n function onMultiStepEditSuccess(configuration, data) {\r\n bgl.common.utilities.redirectToUrl(configuration.NextStepUrl);\r\n }\r\n\r\n function onSuccess(configuration, data) {\r\n bgl.components.coverdetails.sameaddress.load(configuration, data.nextUrl, container);\r\n }\r\n\r\n function onError() {\r\n initComponent(configuration, container);\r\n }\r\n\r\n function initElements(componentConfiguration, containerId) {\r\n configuration = componentConfiguration;\r\n container = containerId;\r\n form = $('#marital-status-form');\r\n registerKeeper = bgl.components.coverdetails.registeredkeeper;\r\n }\r\n\r\n function subscribeForEvents() {\r\n bgl.common.validator.init(form);\r\n bgl.common.datastore.init(form);\r\n bgl.common.datastore.setupReadAndWrite();\r\n\r\n form.off('submit')\r\n .on('submit',\r\n function(event) {\r\n event.preventDefault();\r\n if (bgl.common.validator.isFormValid(form)) {\r\n bgl.common.validator.submitForm(form, configuration);\r\n }\r\n });\r\n\r\n $('[id$=marital-status]')\r\n .off('click')\r\n .off('keypress')\r\n .on({\r\n 'keypress': function(e) {\r\n if (e.keyCode === ENTER_KEYCODE || e.keyCode === SPACE_KEYCODE) {\r\n $(this).click();\r\n }\r\n },\r\n 'click': function(event) {\r\n registerKeeper.submitForm(form);\r\n },\r\n });\r\n\r\n form.find('.back-button-link').off('click').one('click',\r\n function(event) {\r\n event.preventDefault();\r\n\r\n const url = $(this).attr('href');\r\n\r\n bgl.components.coverdetails.aboutyou.load(configuration, url, container);\r\n });\r\n\r\n form.find('label').on('keyup', bgl.common.keyboardAccessibility.generateClickOnKeypress);\r\n }\r\n\r\n return {\r\n init: initComponent,\r\n load: loadComponent,\r\n onSuccess: onSuccess,\r\n onMultiStepEditSuccess: onMultiStepEditSuccess,\r\n onError: onError,\r\n };\r\n})();\r\n// eslint-disable-next-line no-var\r\nvar bgl = window.bgl || {};\r\nbgl.components = bgl.components || {};\r\nbgl.components.coverdetails = bgl.components.coverdetails || {};\r\n\r\nbgl.components.coverdetails.maindriver = (function() {\r\n let configuration;\r\n let form;\r\n\r\n function loadComponent(componentConfiguration, componentUrl, containerElementId) {\r\n configuration = componentConfiguration;\r\n\r\n bgl.common.loader.load(componentConfiguration,\r\n componentUrl,\r\n containerElementId,\r\n function() {\r\n initComponent(componentConfiguration);\r\n });\r\n }\r\n\r\n function initComponent(componentConfiguration) {\r\n configuration = componentConfiguration;\r\n form = $('#main-driver');\r\n\r\n bgl.common.validator.init(form);\r\n bgl.common.datastore.init(form);\r\n bgl.common.datastore.setupReadAndWrite();\r\n if (form.find('input[type=radio]:checked').length === 0) {\r\n form.find('input[type=radio]')\r\n .off('keypress', generateClickOnKeypress)\r\n .on('keypress', generateClickOnKeypress)\r\n .off('click', continueHandler)\r\n .on('click',\r\n function(event) {\r\n $(this).focusout();\r\n submitForm();\r\n });\r\n } else {\r\n const continueButton = $(form.find('[type=\\'submit\\']'));\r\n continueButton.removeClass('hide');\r\n continueButton.off('click').on('click', continueHandler);\r\n }\r\n\r\n form.off('submit')\r\n .on('submit',\r\n function(event) {\r\n event.preventDefault();\r\n if (bgl.common.validator.isFormValid(form)) {\r\n bgl.common.validator.submitForm(form, configuration);\r\n }\r\n });\r\n\r\n form.find('label').on('keyup', bgl.common.keyboardAccessibility.generateClickOnKeypress);\r\n }\r\n\r\n function submitForm() {\r\n form.submit();\r\n }\r\n\r\n function generateClickOnKeypress(event) {\r\n const code = event.charCode || event.keyCode;\r\n if (code === 13 || code === 32) {\r\n $(this).click();\r\n }\r\n }\r\n\r\n function onSuccess(componentConfiguration) {\r\n location.href = componentConfiguration.NextStepUrl;\r\n }\r\n\r\n function continueHandler(event, element) {\r\n event.preventDefault();\r\n if (bgl.common.datastore.isDataChanged(form)) {\r\n submitForm();\r\n }\r\n location.href = configuration.NextStepUrl;\r\n }\r\n\r\n return {\r\n init: initComponent,\r\n load: loadComponent,\r\n onSuccess: onSuccess,\r\n };\r\n})();\r\n// eslint-disable-next-line no-var\r\nvar bgl = window.bgl || {};\r\nbgl.components = bgl.components || {};\r\nbgl.components.coverdetails = bgl.components.coverdetails || {};\r\n\r\nbgl.components.coverdetails.features = (function() {\r\n let configuration;\r\n\r\n function initComponent(componentConfiguration) {\r\n configuration = componentConfiguration;\r\n subscribeToDesktopFeaturesEvents();\r\n subscribeToMobileFeaturesEvents();\r\n }\r\n\r\n function subscribeToDesktopFeaturesEvents() {\r\n const featureBannerButton = document.getElementById(`${configuration.Id}_feature-banner-button`);\r\n const featureCardContainer = document.getElementById(`${configuration.Id}-card-container`);\r\n\r\n featureBannerButton.onclick = function() {\r\n if (featureCardContainer.classList.contains('is-active')) {\r\n featureCardContainer.classList.remove('is-active');\r\n featureBannerButton.setAttribute('aria-expanded', 'false');\r\n featureBannerButton.innerText = 'View more features';\r\n } else {\r\n featureCardContainer.classList.add('is-active');\r\n featureBannerButton.setAttribute('aria-expanded', 'true');\r\n featureBannerButton.innerText = 'View less features';\r\n }\r\n };\r\n }\r\n\r\n function subscribeToMobileFeaturesEvents() {\r\n const featureListToggleButton = document.getElementById(`${configuration.Id}-toggle-button`);\r\n const featureList = document.getElementById('policy-feature-list');\r\n const featureListIcon = document.getElementById('policy-feature-list-icon');\r\n\r\n featureListToggleButton.onclick = function() {\r\n if (featureList.classList.contains('hide')) {\r\n featureListToggleButton.setAttribute('aria-expanded', 'true');\r\n featureList.classList.remove('hide');\r\n featureListIcon.style.transform = 'rotate(180deg)';\r\n featureListToggleButton.innerText = 'Show me less features';\r\n } else {\r\n featureListToggleButton.setAttribute('aria-expanded', 'false');\r\n featureList.classList.add('hide');\r\n featureListIcon.style.transform = 'rotate(0deg)';\r\n featureListToggleButton.innerText = 'Show me even more features';\r\n }\r\n };\r\n }\r\n\r\n return {\r\n init: initComponent,\r\n };\r\n})();\r\n// eslint-disable-next-line no-var\r\nvar bgl = window.bgl || {};\r\nbgl.components = bgl.components || {};\r\nbgl.components.coverdetails = bgl.components.coverdetails || {};\r\n\r\nbgl.components.coverdetails.coverpanelrenewal = (() => {\r\n const initComponent = () => {\r\n const featureButtons = document.querySelectorAll('[data-renewals-included-panel] button');\r\n const seeMoreButton = document.querySelector('[data-see-more-features]');\r\n\r\n if (featureButtons.length < 6) {\r\n seeMoreButton.classList.toggle('hide');\r\n }\r\n\r\n const excessFeatureButtonsArray = [...featureButtons].slice(6);\r\n excessFeatureButtonsArray.forEach((featureButton) => {\r\n featureButton.classList.toggle('hide');\r\n });\r\n\r\n seeMoreButton.addEventListener('click', () => {\r\n excessFeatureButtonsArray.forEach((featureButton) => {\r\n featureButton.classList.toggle('hide');\r\n });\r\n\r\n featureButtons[6].focus();\r\n seeMoreButton.querySelector('i').classList.toggle('cover-details-panel--open');\r\n const buttonText = seeMoreButton.querySelector('span');\r\n buttonText.innerText = buttonText.innerText.toLowerCase() === 'see more features' ?\r\n 'show less features' :\r\n 'see more features';\r\n });\r\n };\r\n\r\n return {\r\n init: initComponent,\r\n };\r\n})();\r\n// eslint-disable-next-line no-var\r\nvar bgl = window.bgl || {};\r\nbgl.components = bgl.components || {};\r\nbgl.components.coverdetails = bgl.components.coverdetails || {};\r\n\r\nbgl.components.coverdetails.coverlevel = (function() {\r\n let configuration; let form;\r\n let selectedCoverFlag;\r\n let sessionData;\r\n\r\n function initComponent(componentConfiguration) {\r\n configuration = componentConfiguration;\r\n\r\n initValidation();\r\n\r\n toggleCoverLevelText();\r\n\r\n $('#BtnSubmit').off('click').on('click',\r\n function() {\r\n sessionData = bgl.common.datastore.getData(configuration.DataStoreKey);\r\n if (!sessionData.selectedCoverFlag && !sessionData.CoverLevelCode) {\r\n $('#validation-message').show();\r\n return false;\r\n } else {\r\n submitForm();\r\n }\r\n });\r\n\r\n form.find('label').on('keyup', bgl.common.keyboardAccessibility.generateClickOnKeypress);\r\n }\r\n\r\n function toggleCoverLevelText() {\r\n $('.cover-level').off('click').on('click',\r\n function() {\r\n $('#validation-message').hide();\r\n $('.cover-level').attr('checked', 'checked');\r\n selectedCoverFlag = $(this).data('coverlevel');\r\n $('#feature-header-cover-level').text(selectedCoverFlag);\r\n $('#feature-question-box-cover-level').text(selectedCoverFlag);\r\n sessionData = JSON.parse(sessionStorage.getItem(configuration.DataStoreKey));\r\n sessionData.selectedCoverFlag = selectedCoverFlag;\r\n sessionStorage.setItem(configuration.DataStoreKey, JSON.stringify(sessionData));\r\n });\r\n }\r\n\r\n function initValidation() {\r\n form = $('[data-component-id=\\'' + configuration.Id + '\\'] form');\r\n\r\n bgl.common.datastore.init(form);\r\n bgl.common.datastore.setupReadAndWrite();\r\n bgl.common.validator.init(form);\r\n\r\n form.off('submit').on('submit',\r\n function(e) {\r\n e.preventDefault();\r\n\r\n bgl.common.validator.validate(configuration, $(this));\r\n });\r\n }\r\n\r\n function submitForm() {\r\n form.submit();\r\n }\r\n\r\n function onSuccess() {\r\n if (sessionData.selectedCoverFlag === 'Comprehensive') {\r\n window.location.href = configuration.NextStepUrl;\r\n } else {\r\n window.location.href = configuration.CoverLevelUrl;\r\n }\r\n }\r\n\r\n return {\r\n init: initComponent,\r\n onSuccess: onSuccess,\r\n };\r\n})();\r\n// eslint-disable-next-line no-var\r\nvar bgl = window.bgl || {};\r\nbgl.components = bgl.components || {};\r\nbgl.components.coverdetails = bgl.components.coverdetails || {};\r\nbgl.components.coverdetails.coverexcesses = (function() {\r\n let configuration;\r\n let form;\r\n\r\n function loadComponent(data, componentUrl, containerElementId) {\r\n configuration = data.ComponentConfiguration;\r\n\r\n bgl.common.loader.load(data,\r\n componentUrl,\r\n containerElementId,\r\n function() {\r\n initComponent(configuration);\r\n });\r\n }\r\n\r\n function initComponent(componentConfiguration) {\r\n configuration = componentConfiguration;\r\n form = $('#CoverExcess');\r\n bgl.common.validator.init(form);\r\n bgl.common.datastore.init(form);\r\n bgl.common.datastore.setupReadAndWrite();\r\n if (form.find('input[type=radio]:checked').length === 0) {\r\n form.find('input[type=radio]')\r\n .off('keypress', generateClickOnKeypress)\r\n .on('keypress', generateClickOnKeypress)\r\n .off('click', continueHandler)\r\n .on('click', function(event) {\r\n $(this).focusout();\r\n submitForm();\r\n });\r\n } else {\r\n const continueButton = $(form.find('[type=\\'submit\\']'));\r\n continueButton.removeClass('hide');\r\n continueButton.off('click').on('click', continueHandler);\r\n }\r\n\r\n form.off('submit')\r\n .on('submit',\r\n function(event) {\r\n event.preventDefault();\r\n if (bgl.common.validator.isFormValid(form)) {\r\n bgl.common.validator.submitForm(form, configuration);\r\n }\r\n });\r\n\r\n form.find('label').on('keyup', bgl.common.keyboardAccessibility.generateClickOnKeypress);\r\n }\r\n\r\n function submitForm() {\r\n form.submit();\r\n }\r\n\r\n function generateClickOnKeypress(event) {\r\n const code = event.charCode || event.keyCode;\r\n if (code === 13 || code === 32) {\r\n $(this).click();\r\n }\r\n }\r\n\r\n function onSuccess() {\r\n location.href = configuration.NextStepUrl;\r\n }\r\n\r\n function continueHandler(event, element) {\r\n event.preventDefault();\r\n if (bgl.common.datastore.isDataChanged(form)) {\r\n submitForm();\r\n }\r\n location.href = configuration.NextStepUrl;\r\n }\r\n\r\n return {\r\n init: initComponent,\r\n load: loadComponent,\r\n onSuccess: onSuccess,\r\n };\r\n})();\r\n// eslint-disable-next-line no-var\r\nvar bgl = window.bgl || {};\r\nbgl.components = bgl.components || {};\r\nbgl.components.coverdetails = bgl.components.coverdetails || {};\r\n\r\nbgl.components.coverdetails.cardcoverlevel = (function() {\r\n function initComponent(componentConfiguration) {\r\n const coverLevel = document.getElementById(`${componentConfiguration.Id}_cover-level_link`);\r\n const coverId = coverLevel.getAttribute('data-cover-id');\r\n const actionUrl = coverLevel.getAttribute('data-action-url');\r\n const containerId = coverLevel.getAttribute('data-container');\r\n\r\n coverLevel.addEventListener('click', () => {\r\n bgl.common.loader.load({componentConfiguration, CoverId: coverId},\r\n actionUrl,\r\n containerId,\r\n () => {\r\n document.getElementById('BtnSubmit').addEventListener('click', () => {\r\n document.querySelector('[data-dismiss=\"slide-panel\"]').click();\r\n });\r\n });\r\n });\r\n }\r\n\r\n return {\r\n init: initComponent,\r\n };\r\n})();\r\n\r\nbgl.components.coverdetails.cardcoverexcess = (function() {\r\n function initComponent(componentConfiguration) {\r\n const coverExcess = document.getElementById(`${componentConfiguration.Id}_cover-excess_link`);\r\n const coverId = coverExcess.getAttribute('data-cover-id');\r\n const actionUrl = coverExcess.getAttribute('data-action-url');\r\n const containerId = coverExcess.getAttribute('data-container');\r\n\r\n coverExcess.addEventListener('click', () => {\r\n bgl.common.loader.load({componentConfiguration, CoverId: coverId},\r\n actionUrl,\r\n containerId,\r\n () => {\r\n const excessBar = document.getElementById(`${componentConfiguration.Id}__excess-bar-two`);\r\n const compulsoryAmount = parseInt(\r\n document.getElementById(`${componentConfiguration.Id}__compulsory-excess_amount`).textContent,\r\n );\r\n const totalAmount = parseInt(\r\n document.getElementById(`${componentConfiguration.Id}__total-excess_amount`).textContent,\r\n );\r\n const totalAmountPercentage = calculateExcessBarPercentage(compulsoryAmount, totalAmount);\r\n excessBar.setAttribute('style', `height:${totalAmountPercentage}`);\r\n bgl.common.accordions.init();\r\n document.getElementById(`${componentConfiguration.Id}_submit-button`)\r\n .addEventListener('click', () => {\r\n document.querySelector('[data-dismiss=\"slide-panel\"]').click();\r\n });\r\n });\r\n });\r\n }\r\n\r\n function calculateExcessBarPercentage(compulsoryAmount, totalAmount) {\r\n return ((totalAmount - compulsoryAmount) * 100 / totalAmount).toFixed(0) + '%';\r\n };\r\n\r\n return {\r\n init: initComponent,\r\n calculateExcessBar: calculateExcessBarPercentage,\r\n };\r\n})();\r\n\r\nbgl.components.coverdetails.cardcoverncd = (function() {\r\n function initComponent(componentConfiguration) {\r\n const coverNCD= document.getElementById(`${componentConfiguration.Id}_cover-ncd_link`);\r\n const coverId = coverNCD.getAttribute('data-cover-id');\r\n const actionUrl = coverNCD.getAttribute('data-action-url');\r\n const containerId = coverNCD.getAttribute('data-container');\r\n\r\n coverNCD.addEventListener('click', () => {\r\n bgl.common.loader.load({componentConfiguration, CoverId: coverId},\r\n actionUrl,\r\n containerId,\r\n () => {\r\n bgl.common.accordions.init();\r\n document.getElementById(`${componentConfiguration.Id}_submit-button`)\r\n .addEventListener('click', () => {\r\n document.querySelector('[data-dismiss=\"slide-panel\"]').click();\r\n });\r\n });\r\n });\r\n }\r\n\r\n return {\r\n init: initComponent,\r\n };\r\n})();\r\n// eslint-disable-next-line no-var\r\nvar bgl = window.bgl || {};\r\nbgl.components = bgl.components || {};\r\nbgl.components.coverdetails = bgl.components.coverdetails || {};\r\n\r\nbgl.components.coverdetails.conditionalbanner = (function() {\r\n function initComponent(componentConfiguration) {\r\n componentConfiguration.AccordionIds.forEach((accordionId) => {\r\n const accordion = document.getElementById(accordionId);\r\n if (accordion != null) {\r\n bgl.uil.accordion.init(accordionId);\r\n }\r\n });\r\n }\r\n\r\n return {\r\n init: initComponent,\r\n };\r\n})();\r\n// eslint-disable-next-line no-var\r\nvar bgl = window.bgl || {};\r\nbgl.components = bgl.components || {};\r\nbgl.components.coverdetails = bgl.components.coverdetails || {};\r\n\r\nconst coverKeys = {\r\n totalExcess: 'total-excess',\r\n coverLevel: 'cover-level',\r\n courtesyVehicle: 'courtesy-vehicle',\r\n legalProtection: 'legal-protection',\r\n uninsuredDriverPromise: 'uninsured-driver-promise',\r\n vandalismPromise: 'vandalism-promise',\r\n windscreenCover: 'windscreen-cover',\r\n driveOtherVehicles: 'drive-other-vehicles',\r\n childSeatCover: 'child-seat-cover',\r\n personalAccident: 'personal-accident',\r\n personalBelongings: 'personal-belongings',\r\n emergencyTransportAndAccommodation: 'emergency-transport-and-accommodation',\r\n emergencyTransport: 'emergency-transport',\r\n transferHome: 'transfer-home',\r\n drivingAbroad: 'driving-abroad',\r\n medicalExpenses: 'medical-expenses',\r\n audioEquipment: 'audio-equipment',\r\n replacementLocks: 'replacement-locks',\r\n annualMileage: 'annual-mileage',\r\n noClaimsDiscount: 'ncd',\r\n vehicleUsage: 'vehicle-usage',\r\n mainDriver: 'main-driver',\r\n registeredKeeper: 'registered-keeper',\r\n breakdown: 'breakdown',\r\n guaranteedReplacementVehicle: 'guaranteed-replacement-vehicle',\r\n keyCover: 'key-cover',\r\n toolsCover: 'tools-cover',\r\n misfuellingCover: 'misfuelling-cover',\r\n claimsGuarantee: 'claims-guarantee',\r\n emissionsFree: 'emissions-free',\r\n digitalPolicy: 'digital-policy',\r\n};\r\n\r\nconst sessionStorageConstants = {\r\n IsPncdTriggerPageRedirectionKey: 'PncdTriggerPageRedirection',\r\n IsPriceProtectionTriggerPageRedirectionKey: 'PriceProtectionTriggerPageRedirection',\r\n CoverDetailsPncdAddonIsYesClicked: 'CoverDetailsPncdAddonIsYesClicked',\r\n CoverDetailsPriceProtectionAddonIsYesClicked: 'CoverDetailsPriceProtectionAddonIsYesClicked',\r\n};\r\n\r\nconst SPACE_KEYCODE = 32;\r\nconst ENTER_KEYCODE = 13;\r\nconst ESCAPE_KEYCODE = 27;\r\n\r\nbgl.components.coverdetails.common = (function() {\r\n let component;\r\n\r\n const journeyTypes = {\r\n singleEdit: 0,\r\n additionalDriver: 1,\r\n multiStepEdit: 2,\r\n };\r\n\r\n function loadComponent(componentConfiguration, componentUrl, containerElementId) {\r\n bgl.common.loader.load(componentConfiguration,\r\n componentUrl,\r\n containerElementId,\r\n function() {\r\n bgl.components.coverdetails.common.init(componentConfiguration);\r\n });\r\n }\r\n\r\n function initComponent(componentConfiguration) {\r\n component = $('#' + componentConfiguration.Id);\r\n const links = component.find('[data-action-url]');\r\n\r\n links.off();\r\n links.on({\r\n 'keyup': function(event) {\r\n const code = event.charCode || event.keyCode;\r\n\r\n if (code === ENTER_KEYCODE || code === SPACE_KEYCODE) {\r\n $(this).click();\r\n }\r\n },\r\n 'click': function(event) {\r\n event.preventDefault();\r\n const link = $(this);\r\n const actionUrl = link.data('action-url');\r\n\r\n if (componentConfiguration.IsService && componentConfiguration.LoadEditAsARedirect) {\r\n bgl.common.utilities.redirectToUrl(actionUrl);\r\n } else {\r\n loadComponentByCoverKey(link.data('cover-key'),\r\n link.data('container'),\r\n componentConfiguration,\r\n actionUrl,\r\n {\r\n coverId: link.data('cover-id'),\r\n coverText: link.data('cover-text'),\r\n contentUrl: link.data('content-url'),\r\n });\r\n }\r\n },\r\n });\r\n }\r\n\r\n function loadComponentByCoverKey(key, containerSelector, configuration, actionUrl, options) {\r\n if (configuration.CoverFeaturePriority !== undefined &&\r\n key in configuration.CoverFeaturePriority &&\r\n configuration.CoverFeaturePriority[key].ViewName &&\r\n configuration.CoverFeaturePriority[key].ViewName.toLowerCase() === 'none') {\r\n $('#' + containerSelector).empty();\r\n return;\r\n }\r\n\r\n switch (key) {\r\n case coverKeys.totalExcess:\r\n bgl.components.excesses.load(\r\n {ComponentConfiguration: configuration, CoverId: options.coverId},\r\n actionUrl,\r\n containerSelector);\r\n break;\r\n\r\n case coverKeys.coverLevel:\r\n bgl.components.coverlevel.load(\r\n {ComponentConfiguration: configuration, CoverId: options.coverId},\r\n actionUrl,\r\n containerSelector);\r\n break;\r\n\r\n case coverKeys.noClaimsDiscount:\r\n bgl.components.noclaimsdiscount.load(\r\n {ComponentConfiguration: configuration, CoverId: options.coverId},\r\n actionUrl,\r\n containerSelector);\r\n break;\r\n\r\n case coverKeys.vehicleUsage:\r\n bgl.components.vehicleusage.load(\r\n {ComponentConfiguration: configuration, CoverId: options.coverId, ClassOfUse: options.coverText},\r\n actionUrl,\r\n containerSelector);\r\n break;\r\n\r\n case coverKeys.annualMileage:\r\n bgl.components.annualmileage.load(\r\n {ComponentConfiguration: configuration, CoverId: options.coverId},\r\n actionUrl,\r\n containerSelector);\r\n break;\r\n\r\n case coverKeys.mainDriver:\r\n bgl.components.maindriver.load(\r\n {ComponentConfiguration: configuration, CoverId: options.coverId},\r\n actionUrl,\r\n containerSelector);\r\n break;\r\n case coverKeys.registeredKeeper:\r\n bgl.common.loader.load(configuration,\r\n actionUrl,\r\n containerSelector,\r\n function() {\r\n bgl.components.coverdetails.registeredkeeper.init(configuration, containerSelector);\r\n });\r\n break;\r\n\r\n case coverKeys.legalProtection:\r\n case coverKeys.courtesyVehicle:\r\n case coverKeys.uninsuredDriverPromise:\r\n case coverKeys.vandalismPromise:\r\n case coverKeys.windscreenCover:\r\n case coverKeys.driveOtherVehicles:\r\n case coverKeys.childSeatCover:\r\n case coverKeys.personalAccident:\r\n case coverKeys.personalBelongings:\r\n case coverKeys.emergencyTransportAndAccommodation:\r\n case coverKeys.emergencyTransport:\r\n case coverKeys.transferHome:\r\n case coverKeys.drivingAbroad:\r\n case coverKeys.medicalExpenses:\r\n case coverKeys.audioEquipment:\r\n case coverKeys.replacementLocks:\r\n case coverKeys.breakdown:\r\n case coverKeys.keyCover:\r\n case coverKeys.toolsCover:\r\n case coverKeys.guaranteedReplacementVehicle:\r\n case coverKeys.misfuellingCover:\r\n case coverKeys.claimsGuarantee:\r\n case coverKeys.emissionsFree:\r\n case coverKeys.digitalPolicy:\r\n bgl.common.loader.load({}, options.contentUrl, containerSelector);\r\n break;\r\n default:\r\n $('#' + containerSelector).empty();\r\n break;\r\n }\r\n }\r\n\r\n function onAddonBackButtonClick() {\r\n onAddonBackButtonClickOrKeyUp();\r\n }\r\n\r\n function onAddonBackButtonClickOrKeyUp() {\r\n const component = $('[data-cover-details-addon-back-button]');\r\n\r\n component.off();\r\n component.on({\r\n 'keyup': function(event) {\r\n const code = event.charCode || event.keyCode;\r\n if (code === ENTER_KEYCODE || code === SPACE_KEYCODE) {\r\n $(this).click();\r\n }\r\n },\r\n 'click': function(event) {\r\n event.preventDefault();\r\n if (this.getAttribute('data-cover-details-addon-back-button') === 'review') {\r\n reviewBackButtonClickHandler($(this));\r\n } else {\r\n backButtonClickHandler();\r\n }\r\n },\r\n });\r\n }\r\n\r\n function backButtonClickHandler() {\r\n const previousAddon = $('#previous-addon').val();\r\n if (previousAddon) {\r\n const previousAddonSelected = sessionStorage.getItem(('SelectedAddon').concat(previousAddon));\r\n if (previousAddonSelected !== null) {\r\n bgl.common.utilities.redirectToUrl(previousAddonSelected);\r\n } else {\r\n bgl.common.utilities.redirectToUrl(previousAddon);\r\n }\r\n } else {\r\n const previousStepUrl = $('#previous-stepUrl').val();\r\n bgl.common.utilities.redirectToUrl(previousStepUrl);\r\n }\r\n }\r\n\r\n function reviewBackButtonClickHandler($this) {\r\n const reviewBackBtnUrl = $this.attr('href');\r\n\r\n const index = reviewBackBtnUrl.lastIndexOf('/');\r\n\r\n const pageUrl = reviewBackBtnUrl.substring(index + 1, reviewBackBtnUrl.length);\r\n\r\n const previousAddonSelected = sessionStorage.getItem(('SelectedAddon').concat(pageUrl));\r\n\r\n if (previousAddonSelected) {\r\n const detailUrl = reviewBackBtnUrl.replace(pageUrl, previousAddonSelected);\r\n\r\n bgl.common.utilities.redirectToUrl(detailUrl);\r\n } else {\r\n bgl.common.utilities.redirectToUrl(reviewBackBtnUrl);\r\n }\r\n }\r\n\r\n function setNextAction(configuration, isDataChanges) {\r\n if (configuration.IsService) {\r\n if (configuration.IsInitialChange) {\r\n if (isDataChanges) {\r\n mtaChange(configuration);\r\n } else {\r\n bgl.common.contentpanel.hideSlidePanel();\r\n }\r\n } else if (isDataChanges) {\r\n bgl.common.pubsub.emit('PollBasket');\r\n } else {\r\n window.location.href = configuration.NextStepUrl;\r\n }\r\n } else {\r\n $('[data-dismiss=\"slide-panel\"]').click();\r\n }\r\n }\r\n\r\n return {\r\n init: initComponent,\r\n load: loadComponent,\r\n journeyTypes: journeyTypes,\r\n onAddonBackButtonClick: onAddonBackButtonClick,\r\n setNextAction: setNextAction,\r\n };\r\n\r\n function mtaChange(configuration) {\r\n bgl.common.pubsub.emit('PollBasket', getParams(configuration));\r\n }\r\n\r\n function getParams(configuration) {\r\n return configuration.IsInitialChange ?\r\n {callback: () => bgl.common.utilities.redirectToUrl(configuration.NextStepUrl)} :\r\n null;\r\n }\r\n})();\r\n\r\nbgl.components.coverlevel = (function() {\r\n let configuration;\r\n let form;\r\n\r\n function loadComponent(data, componentUrl, containerElementId) {\r\n configuration = data.ComponentConfiguration;\r\n\r\n\r\n bgl.common.loader.load(data,\r\n componentUrl,\r\n containerElementId,\r\n function() {\r\n bgl.components.coverlevel.init(configuration);\r\n });\r\n }\r\n\r\n function initComponent(componentConfiguration) {\r\n configuration = componentConfiguration;\r\n if (configuration.IsSummary) {\r\n $('#BtnSubmit').off('click').on('click', this.onSuccess);\r\n } else {\r\n initValidation();\r\n initDynamicText();\r\n }\r\n }\r\n\r\n function initDynamicText() {\r\n $('.cover-level').on('click',\r\n function() {\r\n const text = $(this).text().trim();\r\n\r\n $('#feature-header-cover-level').text(text);\r\n $('#feature-question-box-cover-level').text(text);\r\n });\r\n }\r\n\r\n function initValidation() {\r\n form = $('[data-component-id=\\'' + configuration.Id + '\\'] form');\r\n\r\n bgl.common.datastore.init(form);\r\n\r\n bgl.common.validator.init(form);\r\n\r\n\r\n $('#BtnSubmit').off('click').on('click',\r\n function() {\r\n form.submit();\r\n });\r\n\r\n form.on('submit',\r\n function(e) {\r\n e.preventDefault();\r\n\r\n if (configuration.IsService) {\r\n const mtaSuffix = bgl.common.utilities.getWindowLocation()\r\n .href.toLowerCase().includes('makechanges') ?\r\n 'start' :\r\n 'additional change';\r\n\r\n bgl.common.telemetry.logEvent(`MTA ${mtaSuffix}`,\r\n {mta_type: 'Cover level', component: configuration.Id});\r\n }\r\n\r\n if (!bgl.common.datastore.isDataChanged(form)) {\r\n bgl.components.coverdetails.common.setNextAction(configuration, false);\r\n bgl.common.datastore.removeSessionStorage(form);\r\n return;\r\n }\r\n\r\n storeCoverDetailsChangesForTagManager();\r\n\r\n bgl.common.validator.validate(configuration, $(this));\r\n });\r\n\r\n form.find('label').on('keyup', bgl.common.keyboardAccessibility.generateClickOnKeypress);\r\n }\r\n\r\n function storeCoverDetailsChangesForTagManager() {\r\n const data = getPreviouslyStoredChangedCoverDetailsData();\r\n const coverLevel = getCoverLevelListValue();\r\n\r\n if (coverLevel) {\r\n data.push(['CoverLevel', coverLevel]);\r\n setPreviouslyStoredChangedCoverDetailsData(data);\r\n }\r\n }\r\n\r\n function getCoverLevelListValue() {\r\n const checkedCoverLevelButtonId = $('input[name=CoverLevelCode]:checked').attr('id');\r\n const valueForCheckedCoverLevelButton = $(`label[for=\"${checkedCoverLevelButtonId}\"] p`).html();\r\n\r\n return valueForCheckedCoverLevelButton;\r\n }\r\n\r\n function getPreviouslyStoredChangedCoverDetailsData() {\r\n let data = [];\r\n\r\n if (sessionStorage.getItem('ChangedVehicleData') !== null) {\r\n data = JSON.parse(sessionStorage.getItem('ChangedVehicleData'));\r\n }\r\n\r\n return data;\r\n }\r\n\r\n function setPreviouslyStoredChangedCoverDetailsData(data) {\r\n sessionStorage.setItem('ChangedVehicleData', JSON.stringify(data));\r\n }\r\n\r\n function successCallback(message) {\r\n const notification = JSON.stringify({\r\n cat: 'pricechange',\r\n msg: message,\r\n });\r\n\r\n sessionStorage.setItem('notification', notification);\r\n window.location.reload(true);\r\n }\r\n\r\n function onSuccess(config, response) {\r\n if (configuration.IsSummary === true) {\r\n $('[data-dismiss=\"slide-panel\"]').click();\r\n return;\r\n }\r\n const isDataChanges = bgl.common.datastore.isDataChanged(form);\r\n bgl.common.datastore.removeSessionStorage(form);\r\n\r\n bgl.components.coverdetails.common.setNextAction(configuration, isDataChanges);\r\n\r\n if (!configuration.IsService) {\r\n if (response.houstonMessage) {\r\n const params = {\r\n callback: function() {\r\n successCallback(response.houstonMessage);\r\n },\r\n };\r\n\r\n bgl.common.pubsub.emit('PollBasket', params);\r\n } else {\r\n bgl.common.pubsub.emit('PollBasket');\r\n }\r\n\r\n if (isDataChanges === true) {\r\n bgl.common.pubsub.emit('PollBasket');\r\n bgl.common.utilities.redirectToUrl(configuration.NextStepUrl);\r\n }\r\n }\r\n }\r\n\r\n return {\r\n init: initComponent,\r\n load: loadComponent,\r\n storeCoverDetailsChangesForTagManager: storeCoverDetailsChangesForTagManager,\r\n onSuccess: onSuccess,\r\n };\r\n})();\r\n\r\nbgl.components.excesses = (function() {\r\n let configuration;\r\n let container;\r\n let excessBar;\r\n let form;\r\n let customSelectControl;\r\n\r\n function loadComponent(data, componentUrl, containerElementId) {\r\n configuration = data.ComponentConfiguration;\r\n\r\n bgl.common.loader.load(data,\r\n componentUrl,\r\n containerElementId,\r\n function() {\r\n initComponent(configuration, containerElementId);\r\n });\r\n }\r\n\r\n function initComponent(componentConfiguration, containerElementId) {\r\n configuration = componentConfiguration;\r\n\r\n container = $('#' + containerElementId);\r\n excessBar = container.find('.bar-graph__bar--two');\r\n\r\n updateExcessesBar();\r\n\r\n initSubmitForm();\r\n\r\n bgl.common.accordions.init();\r\n\r\n initCustomSelect();\r\n }\r\n\r\n function initCustomSelect() {\r\n customSelectControl = $('.excess-bar__button-wrapper');\r\n\r\n $('.slide-panel').on('click', function() {\r\n bgl.common.customselect.closeOptions(customSelectControl, toggleCustomSelectButtonText);\r\n }); ;\r\n\r\n bgl.common.customselect.getButton(customSelectControl).on('click', function(event) {\r\n event.stopPropagation();\r\n bgl.common.customselect.toggleOptions(customSelectControl, toggleCustomSelectButtonText);\r\n });\r\n\r\n bgl.common.customselect.getContainer(customSelectControl).on('click keydown keypress keyup', function(event) {\r\n event.stopPropagation();\r\n });\r\n\r\n bgl.common.customselect.getItems(customSelectControl).each(function() {\r\n $(this).on('click', function(event) {\r\n const activeElement = $(event.target);\r\n bgl.common.customselect.selectItem(activeElement, selectExcess);\r\n bgl.common.customselect.closeOptions(customSelectControl, toggleCustomSelectButtonText);\r\n });\r\n\r\n $(this).on('keydown', function(event) {\r\n bgl.common.customselect.navigate(event, customSelectControl, toggleCustomSelectButtonText);\r\n });\r\n\r\n $(this).on('keyup', function(event) {\r\n if (event.keyCode === ESCAPE_KEYCODE) {\r\n bgl.common.customselect.closeOptions(customSelectControl, toggleCustomSelectButtonText);\r\n }\r\n });\r\n });\r\n }\r\n\r\n function initSubmitForm() {\r\n const submitButton = $('#' + configuration.Id + '_submit-button');\r\n form = $('#' + configuration.Id + '__cover_excesses-form');\r\n bgl.common.datastore.init(form);\r\n\r\n submitButton\r\n .off('click')\r\n .on('click',\r\n function(e) {\r\n e.preventDefault();\r\n\r\n const isEditable = submitButton.data('isEditable') === 'True';\r\n\r\n if (!isEditable || !bgl.common.datastore.isDataChanged(form)) {\r\n $('[data-dismiss=\"slide-panel\"]').click();\r\n bgl.common.datastore.removeSessionStorage(form);\r\n } else {\r\n bgl.common.validator.submitForm($(form), configuration);\r\n }\r\n });\r\n\r\n form.find('label').on('keyup', bgl.common.keyboardAccessibility.generateClickOnKeypress);\r\n }\r\n\r\n function updateExcessesBar() {\r\n const compulsoryAmount = parseInt(container.find('.compulsory-excess-amount').data('value'));\r\n const totalAmount = parseInt(container.find('.total-excess-amount').data('value'));\r\n\r\n excessBar.css(\r\n 'height',\r\n totalAmount ? (((totalAmount - compulsoryAmount) * 100 / totalAmount).toFixed(0) + '%') : '50%',\r\n );\r\n }\r\n\r\n function toggleCustomSelectButtonText() {\r\n const buttonText = bgl.common.customselect.isOpen(customSelectControl) ? 'Cancel' : 'Edit';\r\n bgl.common.customselect.getButton(customSelectControl).text(buttonText);\r\n }\r\n\r\n function selectExcess() {\r\n const selectedItem = bgl.common.customselect.getSelectedItem(customSelectControl);\r\n const voluntaryExcessAmount = parseInt(selectedItem.data('value'));\r\n const compulsoryExcessAmount = parseInt(container.find('.compulsory-excess-amount').text());\r\n const totalExcessAmount = voluntaryExcessAmount + compulsoryExcessAmount;\r\n const totalExcess = container.find('.total-excess-amount');\r\n\r\n totalExcess.data('value', totalExcessAmount).text(totalExcessAmount);\r\n\r\n container.find('.voluntary-excess-amount').text(voluntaryExcessAmount);\r\n container.find('#Amount').val(voluntaryExcessAmount);\r\n\r\n updateExcessesBar();\r\n }\r\n\r\n function onSuccess() {\r\n $('[data-dismiss=\"slide-panel\"]').click();\r\n bgl.common.datastore.removeSessionStorage(form);\r\n\r\n bgl.common.utilities.startUnderwritingPolling();\r\n }\r\n\r\n return {\r\n init: initComponent,\r\n load: loadComponent,\r\n onSuccess: onSuccess,\r\n };\r\n})();\r\n\r\nbgl.components.noclaimsdiscount = (function() {\r\n let configuration;\r\n let ncdYears;\r\n let form;\r\n\r\n function initValidation() {\r\n form = $('[data-component-id=\\'' + configuration.Id + '\\'] form');\r\n\r\n bgl.common.validator.init(form);\r\n bgl.common.datastore.init(form);\r\n\r\n form.off('submit')\r\n .on('submit',\r\n function(e) {\r\n e.preventDefault();\r\n\r\n if (!bgl.common.datastore.isDataChanged(form)) {\r\n $('[data-dismiss=\"slide-panel\"]').click();\r\n bgl.common.datastore.removeSessionStorage(form);\r\n return;\r\n }\r\n storeUserChangesForTagManager();\r\n bgl.common.validator.validate(configuration, $(this));\r\n });\r\n\r\n form.find('label').on('keyup', bgl.common.keyboardAccessibility.generateClickOnKeypress);\r\n }\r\n\r\n function storeUserChangesForTagManager() {\r\n const data = getPreviouslyStoredChangedUserData();\r\n const ncdYearsRadioButtons = document.querySelectorAll('input[name=\"NcdYears\"]');\r\n let ncdYearsValue;\r\n for (const radioButton of ncdYearsRadioButtons) {\r\n if (radioButton.checked) {\r\n ncdYearsValue = radioButton.value;\r\n break;\r\n }\r\n }\r\n data.push(['NcdYears', ncdYearsValue]);\r\n sessionStorage.setItem('ChangedUserData', JSON.stringify(data));\r\n }\r\n\r\n function getPreviouslyStoredChangedUserData() {\r\n let data = [];\r\n\r\n if (sessionStorage.getItem('ChangedUserData') !== null) {\r\n data = JSON.parse(sessionStorage.getItem('ChangedUserData'));\r\n }\r\n\r\n return data;\r\n }\r\n\r\n function subscribeForEvents() {\r\n if (!configuration.IsService) {\r\n initValidation();\r\n } else {\r\n document.querySelectorAll('input[type=\"submit\"]').forEach((element) => {\r\n element.addEventListener('click', (event) => {\r\n event.preventDefault();\r\n document.querySelector('[data-dismiss=\"slide-panel\"]').click();\r\n });\r\n });\r\n }\r\n bgl.hiddensubmit.init();\r\n bgl.common.accordions.init();\r\n }\r\n\r\n function load(data, componentUrl, containerElementId) {\r\n configuration = data.ComponentConfiguration;\r\n bgl.common.loader.load(data,\r\n componentUrl,\r\n containerElementId,\r\n function() {\r\n init(configuration);\r\n });\r\n }\r\n\r\n function init(componentConfiguration) {\r\n configuration = componentConfiguration;\r\n subscribeForEvents();\r\n }\r\n\r\n function successCallback(message) {\r\n const notification = JSON.stringify({\r\n cat: 'pricechange',\r\n msg: message,\r\n });\r\n\r\n sessionStorage.setItem('notification', notification);\r\n window.location.reload(true);\r\n }\r\n\r\n function onSuccess(configuration, data) {\r\n if (!configuration.IsService) {\r\n if (ncdYears <= 3) {\r\n sessionStorage.removeItem(sessionStorageConstants.CoverDetailsPncdAddonIsYesClicked);\r\n sessionStorage.removeItem(sessionStorageConstants.CoverDetailsPriceProtectionAddonIsYesClicked);\r\n }\r\n\r\n if (data.houstonMessage) {\r\n const params = {\r\n callback: function() {\r\n successCallback(data.houstonMessage);\r\n },\r\n };\r\n\r\n bgl.common.pubsub.emit('PollBasket', params);\r\n } else {\r\n bgl.common.pubsub.emit('PollBasket');\r\n }\r\n\r\n bgl.common.datastore.removeSessionStorage(form);\r\n }\r\n document.querySelector('[data-dismiss=\"slide-panel\"]').click();\r\n }\r\n\r\n function onError() {\r\n bgl.components.noclaimsdiscount.init(configuration);\r\n bgl.common.datastore.extendCollectedData(form, {isFormDirty: true});\r\n }\r\n\r\n return {\r\n init,\r\n load,\r\n storeUserChangesForTagManager,\r\n onSuccess,\r\n onError,\r\n };\r\n})();\r\n\r\nbgl.components.annualmileage = (function() {\r\n let configuration;\r\n let form;\r\n\r\n function loadComponent(model, componentUrl, containerElementId) {\r\n configuration = model.ComponentConfiguration;\r\n\r\n bgl.common.loader.load(model,\r\n componentUrl,\r\n containerElementId,\r\n function() {\r\n bgl.components.annualmileage.init(configuration);\r\n });\r\n }\r\n\r\n function initComponent(componentConfiguration) {\r\n configuration = componentConfiguration;\r\n subscribeToEvents(componentConfiguration);\r\n }\r\n\r\n function subscribeToEvents(configuration) {\r\n form = $('#' + configuration.Id + '__annual-mileage-form');\r\n\r\n bgl.common.validator.init(form);\r\n bgl.common.datastore.init(form);\r\n\r\n form.off('submit').on('submit',\r\n function(e) {\r\n e.preventDefault();\r\n\r\n if (configuration.IsService) {\r\n const mtaSuffix = bgl.common.utilities.getWindowLocation()\r\n .href.toLowerCase().includes('makechanges') ?\r\n 'start' :\r\n 'additional change';\r\n\r\n bgl.common.telemetry.logEvent(`MTA ${mtaSuffix}`,\r\n {mta_type: 'Annual mileage', component: configuration.Id});\r\n }\r\n\r\n if (!bgl.common.datastore.isDataChanged(form)) {\r\n bgl.components.coverdetails.common.setNextAction(configuration, false);\r\n bgl.common.datastore.removeSessionStorage(form);\r\n return;\r\n }\r\n\r\n bgl.common.validator.validate(configuration, form);\r\n });\r\n\r\n form.find('label').on('keyup', bgl.common.keyboardAccessibility.generateClickOnKeypress);\r\n\r\n const numberBox = $('#' + configuration.Id + '__annual-mileage');\r\n\r\n calculateAverageMiles(numberBox.val());\r\n\r\n numberBox.off('keydown').on('keydown',\r\n function(e) {\r\n if ($.inArray(e.keyCode, [46, 8, 9, 27, 13]) !== -1 ||\r\n (e.keyCode === 65 && (e.ctrlKey === true || e.metaKey === true)) ||\r\n (e.keyCode >= 35 && e.keyCode <= 40)) {\r\n return;\r\n }\r\n if ((e.shiftKey || (e.keyCode < 48 || e.keyCode > 57)) && (e.keyCode < 96 || e.keyCode > 105) ||\r\n $(this).val().length === 5 ||\r\n (e.keyCode === 96 && $(this).val().length === 0)) {\r\n e.preventDefault();\r\n }\r\n });\r\n\r\n numberBox.off('keyup').on('keyup',\r\n function() {\r\n let val = $(this).val();\r\n while (val.substring(0, 1) === '0') {\r\n val = val.substring(1);\r\n }\r\n $(this).val(val);\r\n });\r\n\r\n numberBox.off('input').on('input',\r\n function(e) {\r\n e.preventDefault();\r\n\r\n const value = $(e.target).val();\r\n\r\n calculateAverageMiles(value);\r\n });\r\n }\r\n\r\n function calculateAverageMiles(value) {\r\n const label = $('#' + configuration.Id + '__annual-mileage-label');\r\n const labelTemplateValue = $('#labelTemplate').val();\r\n\r\n if (value !== undefined && value !== '') {\r\n const averageMiles = Math.round(value / 52, 0);\r\n\r\n if (averageMiles === 0) {\r\n label.hide();\r\n } else {\r\n label.show();\r\n const text = $.parseHTML(labelTemplateValue.replace('{mileage}', averageMiles));\r\n label.html(text);\r\n }\r\n }\r\n }\r\n\r\n function onSuccess() {\r\n const isDataChanges = bgl.common.datastore.isDataChanged(form);\r\n bgl.common.datastore.removeSessionStorage(form);\r\n\r\n bgl.components.coverdetails.common.setNextAction(configuration, isDataChanges);\r\n\r\n if (!configuration.IsService) {\r\n bgl.common.utilities.startUnderwritingPolling();\r\n }\r\n }\r\n\r\n function onError(componentConfiguration, error) {\r\n subscribeToEvents(componentConfiguration);\r\n }\r\n\r\n return {\r\n init: initComponent,\r\n load: loadComponent,\r\n onSuccess: onSuccess,\r\n onError: onError,\r\n };\r\n})();\r\n\r\nbgl.components.vehicleusage = (function() {\r\n let configuration;\r\n let containerId;\r\n let isVan;\r\n let form;\r\n const carriageOfOwnGoods = '21';\r\n const haulage = '22';\r\n\r\n function loadComponent(componentConfiguration, componentUrl, containerElementId) {\r\n configuration = componentConfiguration;\r\n containerId = containerElementId;\r\n\r\n bgl.common.loader.load(componentConfiguration,\r\n componentUrl,\r\n containerElementId,\r\n function() {\r\n initComponent(componentConfiguration);\r\n });\r\n }\r\n\r\n function initComponent(componentConfiguration) {\r\n configuration = componentConfiguration;\r\n isVan = $('#IsVan').val();\r\n form = $('#vehicle-usage');\r\n\r\n bgl.common.datastore.init(form);\r\n bgl.common.datastore.setupReadAndWrite();\r\n bgl.common.validator.init(form);\r\n\r\n subscribeToEvents();\r\n }\r\n\r\n function subscribeToEvents() {\r\n form.off('submit')\r\n .on('submit',\r\n function(e) {\r\n e.preventDefault();\r\n\r\n if (configuration.IsService) {\r\n const mtaSuffix = bgl.common.utilities.getWindowLocation()\r\n .href.toLowerCase().includes('makechanges') ?\r\n 'start' :\r\n 'additional change';\r\n\r\n bgl.common.telemetry.logEvent(`MTA ${mtaSuffix}`,\r\n {mta_type: 'Vehicle usage', component: configuration.Id});\r\n }\r\n setDataHasChangedFlagForQuestionSet();\r\n\r\n if (isVan === 'True') {\r\n vanNavigation();\r\n return;\r\n } else {\r\n if (!bgl.common.datastore.isDataChanged(form)) {\r\n bgl.components.coverdetails.common.setNextAction(configuration.ComponentConfiguration,\r\n false);\r\n bgl.common.datastore.removeSessionStorage(form);\r\n return;\r\n } else {\r\n bgl.common.validator.validate(configuration, form);\r\n }\r\n }\r\n });\r\n\r\n form.find('label').on('keyup', bgl.common.keyboardAccessibility.generateClickOnKeypress);\r\n }\r\n\r\n function onSuccess(configuration, data) {\r\n const isDataChanges = bgl.common.datastore.isDataChanged(form);\r\n bgl.common.datastore.removeSessionStorage(form);\r\n\r\n bgl.components.coverdetails.common.setNextAction(configuration.ComponentConfiguration, isDataChanges);\r\n\r\n if (!configuration.ComponentConfiguration.IsService) {\r\n bgl.common.utilities.startUnderwritingPolling();\r\n }\r\n }\r\n\r\n function vanNavigation() {\r\n const vehicleUsage = $('input[name=ClassOfUseCode]:checked', '#vehicle-usage').val();\r\n if (typeof bgl.common.pubsub !== 'undefined') {\r\n bgl.common.pubsub.emit('fakeFormSubmit', 'VehicleUsage');\r\n }\r\n if (vehicleUsage === carriageOfOwnGoods || vehicleUsage === haulage) {\r\n const yearsEstablishedActionUrl = $('#vehicleUseSubmitBtn').data('years-established-action-url');\r\n bgl.components.coverdetails.yearsbusinessestablished.load(\r\n configuration.ComponentConfiguration,\r\n yearsEstablishedActionUrl,\r\n containerId,\r\n );\r\n } else {\r\n const dangerousGoodsActionUrl = $('#vehicleUseSubmitBtn').data('dangerous-goods-action-url');\r\n bgl.components.coverdetails.carriageofdangerousgoods.load(\r\n configuration.ComponentConfiguration,\r\n dangerousGoodsActionUrl,\r\n containerId,\r\n );\r\n }\r\n }\r\n\r\n function onError() {\r\n bgl.components.vehicleusage.init(configuration);\r\n }\r\n\r\n function setDataHasChangedFlagForQuestionSet() {\r\n const vehicleUseSessionData = JSON.parse(sessionStorage.getItem('CoverDetailsVehicleUse'));\r\n\r\n if (bgl.common.datastore.isDataChanged(form)) {\r\n vehicleUseSessionData.DataHasChanged = 'True';\r\n sessionStorage.setItem('CoverDetailsVehicleUse', JSON.stringify(vehicleUseSessionData));\r\n }\r\n }\r\n\r\n return {\r\n init: initComponent,\r\n load: loadComponent,\r\n onSuccess: onSuccess,\r\n onError: onError,\r\n };\r\n})();\r\n\r\nbgl.components.maindriver = (function() {\r\n let configuration;\r\n let form;\r\n\r\n function loadComponent(componentConfiguration, componentUrl, containerElementId) {\r\n configuration = componentConfiguration;\r\n\r\n bgl.common.loader.load(componentConfiguration,\r\n componentUrl,\r\n containerElementId,\r\n function() {\r\n initComponent(componentConfiguration);\r\n });\r\n }\r\n\r\n function initComponent(componentConfiguration) {\r\n configuration = componentConfiguration;\r\n form = $('#main-driver');\r\n\r\n bgl.common.validator.init(form);\r\n bgl.common.datastore.init(form);\r\n\r\n subscribeToEvents();\r\n }\r\n\r\n function subscribeToEvents() {\r\n form.off('submit')\r\n .on('submit',\r\n function(event) {\r\n event.preventDefault();\r\n\r\n if (!bgl.common.datastore.isDataChanged(form)) {\r\n $('[data-dismiss=\"slide-panel\"]').click();\r\n bgl.common.datastore.removeSessionStorage(form);\r\n return;\r\n }\r\n\r\n bgl.common.validator.validate(configuration, form);\r\n });\r\n\r\n form.find('label').on('keyup', bgl.common.keyboardAccessibility.generateClickOnKeypress);\r\n }\r\n\r\n function successCallback(houstonMessage) {\r\n const notification = JSON.stringify({\r\n cat: 'pricechange',\r\n msg: houstonMessage,\r\n });\r\n sessionStorage.setItem('notification', notification);\r\n window.location.reload(true);\r\n }\r\n\r\n function onSuccess(configuration, data) {\r\n bgl.common.utilities.setUrlHashValue('main');\r\n\r\n if (data.houstonMessage) {\r\n const params = {\r\n callback: function() {\r\n successCallback(data.houstonMessage);\r\n },\r\n };\r\n\r\n bgl.common.pubsub.emit('PollBasket', params);\r\n } else {\r\n bgl.common.pubsub.emit('PollBasket');\r\n }\r\n\r\n $('[data-dismiss=\"slide-panel\"]').click();\r\n bgl.common.datastore.removeSessionStorage(form);\r\n }\r\n\r\n function onError() {\r\n bgl.components.maindriver.init(configuration);\r\n }\r\n\r\n return {\r\n init: initComponent,\r\n load: loadComponent,\r\n onSuccess: onSuccess,\r\n onError: onError,\r\n };\r\n})();\r\n\r\nif (typeof module !== 'undefined') {\r\n module.exports = bgl.components.coverdetails.common;\r\n}\r\n// eslint-disable-next-line no-var\r\nvar bgl = window.bgl || {};\r\nbgl.components = bgl.components || {};\r\nbgl.components.coverdetails = bgl.components.coverdetails || {};\r\n\r\nbgl.components.coverdetails.carriageofdangerousgoods = (function() {\r\n let form;\r\n let configuration;\r\n let container;\r\n const SPACE_KEYCODE = 32;\r\n const ENTER_KEYCODE = 13;\r\n\r\n const socialDpClassOfUseCode = '05';\r\n\r\n function loadComponent(config, url, containerId) {\r\n bgl.common.loader.load(config,\r\n url,\r\n containerId,\r\n function() {\r\n initComponent(config, containerId);\r\n });\r\n }\r\n\r\n function initComponent(componentConfiguration, containerId) {\r\n initElements(componentConfiguration, containerId);\r\n\r\n subscribeForEvents();\r\n }\r\n\r\n function onSuccess(componentConfiguration, data) {\r\n if (isMultiStepEdit()) {\r\n location.href = configuration.NextStepUrl;\r\n } else {\r\n bgl.common.datastore.removeSessionStorage(form);\r\n bgl.common.pubsub.emit('PollBasket');\r\n }\r\n }\r\n\r\n function onError() {\r\n initComponent(configuration);\r\n }\r\n\r\n function initElements(componentConfiguration, containerId) {\r\n configuration = componentConfiguration;\r\n form = $('#carriage-of-dangerous-goods-form');\r\n container = containerId;\r\n\r\n bgl.common.validator.init(form);\r\n bgl.common.datastore.init(form);\r\n bgl.common.datastore.setupReadAndWrite();\r\n }\r\n\r\n function subscribeForEvents() {\r\n let vehicleUseSessionData = JSON.parse(sessionStorage.getItem('CoverDetailsVehicleUse'));\r\n let continueButton = $('#continueButton');\r\n\r\n if (form.find('input[type=radio]:checked').length === 0) {\r\n form.find('input[type=radio]')\r\n .off('keypress')\r\n .off('click', continueHandler)\r\n .on({\r\n 'keypress': function(e) {\r\n if (e.keyCode === ENTER_KEYCODE || e.keyCode === SPACE_KEYCODE) {\r\n $(this).click();\r\n }\r\n },\r\n 'click': function(event) {\r\n $(this).focusout();\r\n submitForm(form);\r\n },\r\n });\r\n } else {\r\n continueButton = $(form.find('[type=\\'submit\\']'));\r\n continueButton.removeClass('hide');\r\n continueButton.off('click').on('click', () => {\r\n submitForm(form);\r\n });\r\n }\r\n\r\n form.off('submit')\r\n .on('submit',\r\n function(event) {\r\n event.preventDefault();\r\n\r\n setDataHasChangedFlagForQuestionSet(vehicleUseSessionData);\r\n\r\n continueButton.attr('disabled', true);\r\n if (bgl.common.validator.isFormValid(form)) {\r\n let model = configuration;\r\n\r\n if (!isMultiStepEdit()) {\r\n vehicleUseSessionData = JSON.parse(sessionStorage.getItem('CoverDetailsVehicleUse'));\r\n\r\n if (vehicleUseSessionData['DataHasChanged'] !== 'True') {\r\n if (configuration.IsService) {\r\n bgl.common.contentpanel.hideSlidePanel();\r\n } else {\r\n $('[data-dismiss=\"slide-panel\"]').click();\r\n }\r\n\r\n bgl.common.datastore.removeSessionStorage(form);\r\n return;\r\n }\r\n\r\n model = bgl.common.datastore.getData(form);\r\n model.ComponentConfiguration = configuration;\r\n }\r\n\r\n const formData = getStoredData();\r\n\r\n bgl.common.validator.submitForm(form, model, formData);\r\n } else {\r\n continueButton.attr('disabled', false);\r\n }\r\n });\r\n\r\n form.find('label').on('keyup', bgl.common.keyboardAccessibility.generateClickOnKeypress);\r\n\r\n form.find('#carriageOfDangerousGoodsBackBtn').off('click').one('click',\r\n function(event) {\r\n event.preventDefault();\r\n const classOfUseCode = vehicleUseSessionData['ClassOfUseCode'];\r\n let componentActionUrl = $(this).attr('href');\r\n\r\n if (isMultiStepEdit()) {\r\n if (classOfUseCode !== socialDpClassOfUseCode) {\r\n componentActionUrl = $(this).data('years-business-established-action-url');\r\n }\r\n\r\n location.href = componentActionUrl;\r\n } else {\r\n if (classOfUseCode !== socialDpClassOfUseCode) {\r\n componentActionUrl = $(this).data('years-business-established-action-url');\r\n\r\n bgl.components.coverdetails.yearsbusinessestablished.load(configuration,\r\n componentActionUrl,\r\n container);\r\n } else {\r\n const model = bgl.common.datastore.getData(form);\r\n model.ComponentConfiguration = configuration;\r\n\r\n bgl.components.vehicleusage.load(model,\r\n componentActionUrl,\r\n container);\r\n }\r\n }\r\n });\r\n }\r\n\r\n function submitForm(form) {\r\n const submitButton = form.find(':submit');\r\n\r\n if (submitButton.hasClass('hide')) {\r\n form.change().submit();\r\n }\r\n }\r\n\r\n function continueHandler(event) {\r\n event.preventDefault();\r\n\r\n form.submit();\r\n }\r\n\r\n function isMultiStepEdit() {\r\n const coverDetailsCommon = bgl.components.coverdetails.common;\r\n return configuration.JourneyType === coverDetailsCommon.journeyTypes.multiStepEdit;\r\n }\r\n\r\n function getStoredData() {\r\n const data = getDataToPost();\r\n const formData = form.serialize();\r\n\r\n return formData + '&' + $.param(data);\r\n }\r\n\r\n function getDataToPost() {\r\n const data = bgl.common.datastore.getData(form);\r\n const config = {ComponentConfiguration: configuration};\r\n\r\n $.extend(data, config);\r\n\r\n return data;\r\n }\r\n\r\n function setDataHasChangedFlagForQuestionSet(vehicleUseSessionData) {\r\n const dataHasChanged = vehicleUseSessionData['DataHasChanged'] === 'True';\r\n\r\n if (dataHasChanged || bgl.common.datastore.isDataChanged(form)) {\r\n vehicleUseSessionData.DataHasChanged = 'True';\r\n sessionStorage.setItem('CoverDetailsVehicleUse', JSON.stringify(vehicleUseSessionData));\r\n }\r\n }\r\n\r\n return {\r\n init: initComponent,\r\n load: loadComponent,\r\n onSuccess: onSuccess,\r\n onError: onError,\r\n };\r\n})();\r\n// eslint-disable-next-line no-var\r\nvar bgl = window.bgl || {};\r\nbgl.components = bgl.components || {};\r\nbgl.components.coverdetails = bgl.components.coverdetails || {};\r\n\r\nbgl.components.coverdetails.annualmileage = (function() {\r\n let form;\r\n let configuration;\r\n\r\n function loadComponent(componentConfiguration, componentUrl, containerElementId) {\r\n configuration = componentConfiguration;\r\n\r\n bgl.common.loader.load(componentConfiguration,\r\n componentUrl,\r\n containerElementId,\r\n function() {\r\n initComponent(componentConfiguration);\r\n });\r\n }\r\n\r\n function initComponent(componentConfiguration) {\r\n configuration = componentConfiguration;\r\n form = $('#' + configuration.Id + '__annual-mileage-form');\r\n bgl.common.datastore.init(form);\r\n bgl.common.datastore.setupReadAndWrite();\r\n bgl.common.validator.enableMaxLength();\r\n bgl.common.validator.init(form);\r\n subscribeToEvents(configuration);\r\n }\r\n\r\n function subscribeToEvents(configuration) {\r\n const numberBox = $('#' + configuration.Id + '__annual-mileage');\r\n const continueButtonLink = $('#ContinueButton');\r\n\r\n calculateAverageMiles(numberBox.val());\r\n\r\n numberBox.off('keydown').on('keydown',\r\n function(e) {\r\n if ($.inArray(e.keyCode, [46, 8, 9, 27, 13]) !== -1 ||\r\n\t\t\t\t\t(e.keyCode === 65 && (e.ctrlKey === true || e.metaKey === true)) ||\r\n\t\t\t\t\t(e.keyCode >= 35 && e.keyCode <= 40)) {\r\n return;\r\n }\r\n if ((e.shiftKey || (e.keyCode < 48 || e.keyCode > 57)) && (e.keyCode < 96 || e.keyCode > 105) ||\r\n\t\t\t\t\t$(this).val().length === 5 ||\r\n\t\t\t\t\t(e.keyCode === 96 && $(this).val().length === 0)) {\r\n e.preventDefault();\r\n }\r\n });\r\n\r\n numberBox.on('keyup',\r\n function() {\r\n let val = $(this).val();\r\n while (val.substring(0, 1) === '0') {\r\n val = val.substring(1);\r\n }\r\n $(this).val(val);\r\n });\r\n\r\n numberBox.off('input').on('input',\r\n function(e) {\r\n e.preventDefault();\r\n\r\n const value = $(e.target).val();\r\n\r\n calculateAverageMiles(value);\r\n });\r\n\r\n continueButtonLink.off('click').on('click',\r\n function(e) {\r\n e.preventDefault();\r\n if (bgl.common.validator.isFormValid(form)) {\r\n bgl.common.validator.submitForm(form, configuration);\r\n }\r\n });\r\n\r\n form.off('submit')\r\n .on('submit',\r\n function(event) {\r\n event.preventDefault();\r\n if (bgl.common.validator.isFormValid(form)) {\r\n bgl.common.validator.submitForm(form, configuration);\r\n }\r\n });\r\n }\r\n\r\n function calculateAverageMiles(value) {\r\n const label = $('#' + configuration.Id + '__annual-mileage-label');\r\n const labelTemplateValue = $('#labelTemplate').val();\r\n\r\n if (value !== undefined && value !== '') {\r\n const averageMiles = Math.round(value / 52, 0);\r\n\r\n if (averageMiles === 0) {\r\n label.hide();\r\n } else {\r\n label.show();\r\n const text = $.parseHTML(labelTemplateValue.replace('{mileage}', averageMiles));\r\n label.html(text);\r\n }\r\n }\r\n }\r\n\r\n function onSuccess(componentConfiguration) {\r\n location.href = componentConfiguration.NextStepUrl;\r\n }\r\n return {\r\n init: initComponent,\r\n load: loadComponent,\r\n onSuccess: onSuccess,\r\n };\r\n})();\r\n// eslint-disable-next-line no-var\r\nvar bgl = window.bgl || {};\r\nbgl.components = bgl.components || {};\r\nbgl.components.coverdetails = bgl.components.coverdetails || {};\r\n\r\nbgl.components.coverdetails.aboutyou = (function() {\r\n let form;\r\n let configuration;\r\n let registerKeeper;\r\n let container;\r\n\r\n function initComponent(componentConfiguration, containerId) {\r\n initElements(componentConfiguration, containerId);\r\n\r\n registerKeeper.redirectIfSessionStorageIsNotFound(form, componentConfiguration.ParentJourneyUrl);\r\n\r\n subscribeForEvents();\r\n\r\n updateHeading();\r\n\r\n registerKeeper.displaySubmitButton(form);\r\n }\r\n\r\n function loadComponent(config, url, containerId) {\r\n bgl.common.loader.load(config,\r\n url,\r\n containerId,\r\n function() {\r\n initComponent(config, containerId);\r\n });\r\n }\r\n\r\n function onSuccess(configuration, data) {\r\n bgl.components.coverdetails.maritalstatus.load(configuration, data.nextUrl, container);\r\n }\r\n\r\n function onMultiStepEditSuccess() {\r\n bgl.common.utilities.redirectToUrl(configuration.NextStepUrl);\r\n }\r\n\r\n function onError() {\r\n initComponent(configuration, container);\r\n }\r\n\r\n function initElements(componentConfiguration, containerId) {\r\n configuration = componentConfiguration;\r\n form = $('#about-you-form');\r\n container = containerId;\r\n\r\n registerKeeper = bgl.components.coverdetails.registeredkeeper;\r\n }\r\n\r\n function subscribeForEvents() {\r\n bgl.common.datastore.init(form);\r\n bgl.common.datastore.setupReadAndWrite();\r\n bgl.common.validator.init(form);\r\n bgl.common.validator.enableMaxLength();\r\n bgl.common.date.initDateFormat($('#DateOfBirth'));\r\n\r\n form.off('submit')\r\n .on('submit',\r\n function(event) {\r\n event.preventDefault();\r\n if (bgl.common.validator.isFormValid(form)) {\r\n bgl.common.validator.submitForm(form, configuration);\r\n }\r\n });\r\n\r\n form.find('.back-button-link').off('click').one('click',\r\n function(event) {\r\n event.preventDefault();\r\n\r\n const url = $(this).attr('href');\r\n\r\n bgl.components.coverdetails.relationshipstatus.load(configuration, url, container);\r\n });\r\n }\r\n\r\n function updateHeading() {\r\n const data = bgl.common.datastore.getData(form);\r\n\r\n if (data) {\r\n const heading = getHeading(data.RelationshipStatusCode);\r\n const header = form.find('#heading');\r\n\r\n header.html(header.html().replace('{FirstName}', heading));\r\n }\r\n }\r\n\r\n function getHeading(code) {\r\n switch (code) {\r\n case 'J':\r\n case 'W':\r\n return 'partner';\r\n case 'S':\r\n return 'spouse';\r\n }\r\n\r\n return 'registered keeper';\r\n }\r\n\r\n return {\r\n init: initComponent,\r\n load: loadComponent,\r\n onSuccess: onSuccess,\r\n onMultiStepEditSuccess: onMultiStepEditSuccess,\r\n onError: onError,\r\n };\r\n})();\r\n// eslint-disable-next-line no-var\r\nvar bgl = window.bgl || {};\r\nbgl.components = bgl.components || {};\r\nbgl.components.additionaldetails = bgl.components.additionaldetails || {};\r\n\r\nbgl.components.additionaldetails.paymentsregularityhiddenemailtel = (() => {\r\n let configuration;\r\n let form;\r\n\r\n function initComponent(componentConfiguration) {\r\n setCommonVariables(componentConfiguration);\r\n updateHiddenInputsWithSessionValues(configuration.SecondaryDataStoreKey);\r\n setUpDataStore();\r\n setUpKeyboardNavigationForAccessibility();\r\n setUpFormValidation(form);\r\n setUpFormSubmissionEvents();\r\n }\r\n\r\n function setCommonVariables(componentConfiguration) {\r\n configuration = componentConfiguration;\r\n form = $('#payments-regularity-form');\r\n }\r\n\r\n function updateHiddenInputsWithSessionValues(dataStoreKey) {\r\n const sessionStorageData = getSessionStorageData(dataStoreKey);\r\n const hiddenInputs = getHiddenInputs();\r\n updateInputValues(hiddenInputs, sessionStorageData);\r\n }\r\n\r\n function getSessionStorageData(key) {\r\n return JSON.parse(sessionStorage.getItem(key));\r\n }\r\n\r\n function getHiddenInputs() {\r\n return $('.hidden-input');\r\n }\r\n\r\n function updateInputValues(inputs, data) {\r\n inputs.each(function() {\r\n const input = $(this);\r\n const key = getDataStoreAttribute(input);\r\n const newInputValue = data[key];\r\n updateInputValue(input, newInputValue);\r\n });\r\n }\r\n\r\n function getDataStoreAttribute(element) {\r\n return element.data('store');\r\n }\r\n\r\n function updateInputValue(inputElement, value) {\r\n inputElement.val(value);\r\n }\r\n\r\n function setUpDataStore() {\r\n bgl.common.datastore.init(form, false, true);\r\n bgl.common.datastore.setupReadAndWrite();\r\n }\r\n\r\n function setUpKeyboardNavigationForAccessibility() {\r\n form.find('label').on('keyup',\r\n bgl.common.keyboardAccessibility.generateClickOnKeypress);\r\n }\r\n\r\n function setUpFormValidation(form) {\r\n bgl.common.validator.init(form);\r\n }\r\n\r\n function setUpFormSubmissionEvents() {\r\n form.off('submit').on('submit', function(event) {\r\n event.preventDefault();\r\n logToAppInsights({message: 'Form submission requested'});\r\n if (bgl.common.validator.isFormValid(form)) {\r\n logToAppInsights({message: 'Form validation passed'});\r\n const data = getDataForFormSubmission();\r\n logToAppInsights({message: 'Submitting form'});\r\n bgl.common.validator.submitForm(form, configuration, data);\r\n } else {\r\n logToAppInsights({message: 'Form validation failed'});\r\n logToAppInsights({message: 'Form not submitted'});\r\n }\r\n });\r\n }\r\n\r\n function getDataForFormSubmission() {\r\n const data = bgl.common.datastore.getData(form);\r\n data.__RequestVerificationToken = getRequestVerificationTokenValue();\r\n data.ComponentConfiguration = configuration;\r\n\r\n return data;\r\n }\r\n\r\n function getRequestVerificationTokenValue() {\r\n return $('input[name=\"__RequestVerificationToken\"]').val();\r\n }\r\n\r\n function onSuccess() {\r\n logToAppInsights({message: 'Form submission successful'});\r\n const options = {\r\n callback: function() {\r\n bgl.common.utilities.redirectToUrl(configuration.NextPageUrl);\r\n },\r\n hideNotification: true,\r\n };\r\n\r\n sessionStorage.clear();\r\n bgl.common.pubsub.emit('PollBasket', options);\r\n }\r\n\r\n function onError() {\r\n bgl.components.additionaldetails\r\n .paymentsregularityhiddenemailtel\r\n .init(configuration);\r\n logToAppInsights({message: 'Form submission error'});\r\n }\r\n\r\n function logToAppInsights(props) {\r\n bgl.common.telemetry.logEvent(\r\n 'paymentsSchedule MVT Submission Event',\r\n {properties: JSON.stringify(props)});\r\n }\r\n\r\n return {\r\n init: initComponent,\r\n onSuccess: onSuccess,\r\n onError: onError,\r\n };\r\n})();\r\n// eslint-disable-next-line no-var\r\nvar bgl = window.bgl || {};\r\nbgl.components = bgl.components || {};\r\nbgl.components.additionaldetails = bgl.components.additionaldetails || {};\r\n\r\nbgl.components.additionaldetails.paymentsregularity = (function() {\r\n function initComponent() {\r\n const formId = 'payments-regularity-form';\r\n const form = $('#' + formId);\r\n const radioButtons = $('#payments-preference-monthly,#payments-preference-annually');\r\n const continueButton = $('#payments-regularity-continue-button');\r\n\r\n bgl.common.datastore.init(form, false, true);\r\n bgl.common.datastore.setupReadAndWrite();\r\n\r\n let redirectForwardSelector;\r\n if (radioButtons.is(':checked')) {\r\n continueButton.removeClass('hide');\r\n redirectForwardSelector = continueButton;\r\n } else {\r\n redirectForwardSelector = radioButtons;\r\n }\r\n\r\n redirectForwardSelector.on('click', function() {\r\n if (bgl.common.pubsub !== 'undefined') {\r\n bgl.common.pubsub.emit('fakeFormSubmit', formId);\r\n }\r\n bgl.common.utilities.redirectToUrl(continueButton.data('next-step-url'));\r\n });\r\n\r\n form.find('label').on('keyup',\r\n bgl.common.keyboardAccessibility.generateClickOnKeypress);\r\n }\r\n\r\n return {\r\n init: initComponent,\r\n };\r\n})();\r\n// eslint-disable-next-line no-var\r\nvar bgl = window.bgl || {};\r\nbgl.components = bgl.components || {};\r\nbgl.components.additionaldetails = bgl.components.additionaldetails || {};\r\n\r\nbgl.components.additionaldetails.common = (function() {\r\n let configuration;\r\n let form;\r\n let monthValidation;\r\n let yearValidation;\r\n let monthDropdown;\r\n let yearDropdown;\r\n let fullYearMonthOptions;\r\n let currentYearMonthOptions;\r\n let currentMonth;\r\n let sectionLabel;\r\n const errorClass = 'error';\r\n\r\n function loadComponent(componentConfiguration,\r\n componentUrl,\r\n containerElementId) {\r\n configuration = componentConfiguration;\r\n\r\n bgl.common.loader.load(componentConfiguration,\r\n componentUrl,\r\n containerElementId,\r\n function() {\r\n bgl.components.additionaldetails.common.init(componentConfiguration);\r\n bgl.components.additionaldetails.vehicleusage.init(componentConfiguration);\r\n });\r\n }\r\n\r\n function initComponent(componentConfiguration) {\r\n configuration = componentConfiguration;\r\n form = $('#' + componentConfiguration.Id + '-form-additional-details');\r\n monthValidation = $('#Month-Section');\r\n yearValidation = $('#Year-Section');\r\n monthDropdown = form.find('#Month');\r\n yearDropdown = form.find('#Year');\r\n sectionLabel = $('#Additional-Input-Purchase-Section');\r\n\r\n bgl.common.validator.init(form, {\r\n onfocusout: resetValidation,\r\n onclick: resetValidation,\r\n });\r\n\r\n subscribeToEvents();\r\n almostThereButtonSubmit();\r\n\r\n if (yearDropdown.length > 0) {\r\n const currentDate = new Date();\r\n currentMonth = currentDate.getMonth() + 1;\r\n fullYearMonthOptions = monthDropdown.find('option');\r\n currentYearMonthOptions = fullYearMonthOptions.slice(0, currentMonth + 1);\r\n updateMonthDropdown();\r\n }\r\n\r\n if (document.querySelector('[data-datepicker]') != null) {\r\n bgl.uil.datepicker.init();\r\n }\r\n }\r\n\r\n function resetValidation(element) {\r\n bgl.common.validator.resetValidationState($(element));\r\n purchaseSectionValidationMessage();\r\n }\r\n\r\n function almostThereButtonSubmit() {\r\n $('#almost-there-button').on('click',\r\n function() {\r\n form.submit();\r\n });\r\n }\r\n function makeEmailsLowerCase() {\r\n const emailToValidate = document.querySelector('[data-emailvalidate]');\r\n const emailConfirm = document.querySelector('[data-emailconfirm]');\r\n\r\n if (emailConfirm != null) {\r\n emailToValidate.value = emailToValidate.value.toLowerCase();\r\n emailConfirm.value = emailConfirm.value.toLowerCase();\r\n }\r\n }\r\n\r\n function subscribeToEvents() {\r\n form.off('submit').on('submit',\r\n function(event) {\r\n event.preventDefault();\r\n updateRegistrationValue($('#Additional-Input-Registration'));\r\n makeEmailsLowerCase();\r\n bgl.common.validator.validate(configuration, $(this));\r\n purchaseSectionValidationMessage();\r\n });\r\n\r\n $('#Additional-Input-Registration').off('input').on('input',\r\n function() {\r\n const start = this.selectionStart;\r\n const end = this.selectionEnd;\r\n\r\n this.value = this.value.toUpperCase();\r\n\r\n this.setSelectionRange(start, end);\r\n });\r\n\r\n $('#AdditionalBackButton').off('click').on('click',\r\n function() {\r\n const options = {\r\n callback: function() {\r\n window.location = configuration.PreviousPageUrl;\r\n },\r\n };\r\n bgl.common.pubsub.emit('PollBasket', options);\r\n });\r\n\r\n const submitButton = document\r\n .getElementById(`${configuration.Id}SubmitButton`);\r\n if (submitButton != null) {\r\n submitButton.addEventListener('click', () => {\r\n sessionStorage.setItem('HasEdittedFieldsOnAdditionalDetails', 'true');\r\n });\r\n }\r\n\r\n yearDropdown.on('change', updateMonthDropdown);\r\n\r\n form.find('label').on('keyup',\r\n bgl.common.keyboardAccessibility.generateClickOnKeypress);\r\n }\r\n\r\n function purchaseSectionValidationMessage() {\r\n if (monthValidation.hasClass(errorClass) &&\r\n yearValidation.hasClass(errorClass)) {\r\n sectionLabel.addClass(errorClass);\r\n } else {\r\n sectionLabel.removeClass(errorClass);\r\n }\r\n }\r\n\r\n function updateRegistrationValue(inputField) {\r\n if (inputField.length !== 0) {\r\n inputField.val(inputField.val().replace(/\\s+/gi, ''));\r\n }\r\n }\r\n\r\n function onSuccess(configuration, data) {\r\n bgl.common.pubsub.emit('PollBasket',\r\n {\r\n callback: function() {\r\n bgl.components.pagereloader.poller.reloadPage(null, false, data.redirectUrl);\r\n },\r\n });\r\n }\r\n\r\n function onError(configuration) {\r\n const params = {\r\n callback: bgl.common.overlay.hide,\r\n spinnerName: 'addonSpinner',\r\n };\r\n\r\n bgl.common.pubsub.emit('PollBasket', params);\r\n bgl.components.additionaldetails.common.init(configuration);\r\n }\r\n\r\n function updateMonthDropdown() {\r\n const months = monthDropdown;\r\n const selectedMonthValue = months.val();\r\n const currentYear = $(yearDropdown).find('option:eq(1)').val();\r\n\r\n if (yearDropdown.val() == currentYear) {\r\n months.html(currentYearMonthOptions);\r\n } else {\r\n months.html(fullYearMonthOptions);\r\n }\r\n\r\n months.val(selectedMonthValue);\r\n\r\n // select first value if value is not selected\r\n if (!months.val()) {\r\n months.find('option:eq(0)').prop('selected', true);\r\n }\r\n }\r\n\r\n return {\r\n init: initComponent,\r\n load: loadComponent,\r\n onSuccess: onSuccess,\r\n onError: onError,\r\n };\r\n})();\r\n\r\nbgl.components.additionaldetails.vehicleusage = (function() {\r\n function initComponent() {\r\n const usageButtons = document.querySelectorAll('[data-usagebtn]');\r\n usageButtons.forEach(function(button) {\r\n button.addEventListener('change', function() {\r\n toggleHelpText(button.getAttribute('data-usagebtn'));\r\n });\r\n });\r\n\r\n const initialCheckedUsageButton = document.querySelector('[data-usagebtn]:checked');\r\n if (initialCheckedUsageButton) {\r\n toggleHelpText(initialCheckedUsageButton.getAttribute('data-usagebtn'));\r\n }\r\n }\r\n\r\n function toggleHelpText(selectedItemCode) {\r\n const usageHelpTexts = document.querySelectorAll('[data-usagehelptext]');\r\n usageHelpTexts.forEach(function(text) {\r\n text.classList.add('hide');\r\n });\r\n\r\n if (selectedItemCode) {\r\n const selectedHelpText = document.querySelector(`[data-usagehelptext=\"${selectedItemCode}\"]`);\r\n if (selectedHelpText) {\r\n selectedHelpText.classList.remove('hide');\r\n }\r\n }\r\n }\r\n\r\n return {\r\n init: initComponent,\r\n };\r\n})();\r\n\r\nif (typeof module !== 'undefined') {\r\n module.exports = bgl.components.additionaldetails.common;\r\n}\r\n// eslint-disable-next-line no-var\r\nvar bgl = window.bgl || {};\r\nbgl.components = bgl.components || {};\r\nbgl.components.additionaldetails = bgl.components.additionaldetails || {};\r\n\r\nbgl.components.additionaldetails.andfinally = (function() {\r\n let form;\r\n let configuration;\r\n\r\n function initComponent(componentConfiguration) {\r\n configuration = componentConfiguration;\r\n form = $('#and-finally-form');\r\n\r\n bgl.common.validator.init(form);\r\n\r\n bgl.common.datastore.init(form, false, true);\r\n bgl.common.datastore.setupReadAndWrite();\r\n\r\n subscribeForEvents();\r\n }\r\n\r\n function subscribeForEvents() {\r\n form.off('submit')\r\n .on('submit',\r\n function(event) {\r\n event.preventDefault();\r\n\r\n if (bgl.common.validator.isFormValid(form)) {\r\n const data = bgl.common.datastore.getData(form) || {};\r\n data.__RequestVerificationToken = document\r\n .querySelector('input[name=\"__RequestVerificationToken\"]')\r\n .value;\r\n data.ComponentConfiguration = configuration;\r\n\r\n bgl.common.validator.submitForm(form, configuration, data);\r\n }\r\n });\r\n }\r\n\r\n function onSuccess() {\r\n const options = {\r\n callback: function() {\r\n window.location.href = configuration.NextPageUrl;\r\n },\r\n hideNotification: true,\r\n };\r\n\r\n sessionStorage.clear();\r\n bgl.common.pubsub.emit('PollBasket', options);\r\n }\r\n\r\n function onError() {\r\n bgl.components.additionaldetails.andfinally.init(configuration);\r\n }\r\n\r\n return {\r\n init: initComponent,\r\n onSuccess: onSuccess,\r\n onError: onError,\r\n };\r\n})();\r\n// eslint-disable-next-line no-var\r\nvar bgl = window.bgl || {};\r\nbgl.components = bgl.components || {};\r\nbgl.components.takepayment = bgl.components.takepayment || {};\r\n\r\nbgl.components.takepayment.singlepagepaymentsummary = (() => {\r\n let componentConfig;\r\n\r\n function initComponent(componentConfiguration) {\r\n sessionStorage.setItem('SinglePagePaymentJourney', 'True');\r\n const hasEdittedFieldsOnAdditionalDetails = 'HasEdittedFieldsOnAdditionalDetails';\r\n sessionStorage.setItem('SinglePagePaymentJourney', 'True');\r\n bgl.common.validator.enableMaxLength();\r\n componentConfig = componentConfiguration;\r\n setupImportantInformationLinks();\r\n\r\n if (sessionStorage.getItem(hasEdittedFieldsOnAdditionalDetails) &&\r\n sessionStorage.getItem(hasEdittedFieldsOnAdditionalDetails).toLowerCase() === 'true') {\r\n showHoustonNotification();\r\n sessionStorage.removeItem(hasEdittedFieldsOnAdditionalDetails);\r\n }\r\n\r\n bgl.components.takepayment.documentloader.init(componentConfig);\r\n\r\n if (document.querySelector('[payment-switch-link]') != null) {\r\n document.querySelector('[payment-switch-link]').addEventListener('click', switchPaymentType);\r\n }\r\n\r\n const trustpilotWidget = document.getElementById('trustpilot-widget');\r\n if (trustpilotWidget != null) {\r\n try {\r\n window.Trustpilot.loadFromElement(trustpilotWidget);\r\n } catch {\r\n onError(null, 'Failed to load trustpilot', 'Fail to load from element', null);\r\n }\r\n }\r\n\r\n const expandingPanelButtons = document.querySelectorAll('[data-expandingPanel-button]');\r\n\r\n expandingPanelButtons.forEach(function(button) {\r\n button.addEventListener('click', (e) => {\r\n expandingPanelButtonClicked(e.currentTarget);\r\n });\r\n });\r\n\r\n if (document.getElementById('IsMonthlyPayment').value.toLowerCase() == 'true') {\r\n bgl.uil.datepicker.init();\r\n bgl.components.takepayment.singlepagepaymentmonthlyinstalment.init(componentConfiguration);\r\n } else {\r\n bgl.components.takepayment.singlepagepaymentannual.init(componentConfiguration);\r\n }\r\n\r\n const previouslyCompletedExpandingPanelStep = sessionStorage\r\n .getItem('TakePaymentSinglePagePaymentCompletedExpandingPanelStep');\r\n\r\n for (let i = 1; i <= previouslyCompletedExpandingPanelStep; i++) {\r\n const currentExpandingPanel = document.querySelector('[data-expandingPanel-step=\"' + i + '\"]');\r\n const currentExpandingPanelPill = currentExpandingPanel.querySelector('[data-step-pill]');\r\n\r\n if (!currentExpandingPanelPill.classList.contains('uil-pill--success')) {\r\n currentExpandingPanelPill.classList.add('uil-pill--success');\r\n }\r\n\r\n const currentHeaderStep = document.querySelector('[data-header-step=\"' + i + '\"]');\r\n updateHeaderStep(currentHeaderStep);\r\n }\r\n\r\n document.getElementById('pay-now-button').addEventListener('click', () => {\r\n const readConfirmCheckbox = document.getElementById('read-confirm-checkbox');\r\n if (readConfirmCheckbox.checked) {\r\n if (document.getElementById('IsMonthlyPayment').value.toLowerCase() === 'true') {\r\n bgl.components.takepayment.singlepagepaymentmonthlyinstalment\r\n .commitInstalmentAndDepositPaymentsAndBasket(componentConfig);\r\n } else {\r\n bgl.components.takepayment.singlepagepaymentannual.commitPaymentAndBasket(false, componentConfig);\r\n }\r\n } else {\r\n readConfirmCheckbox.classList.add('error');\r\n document.getElementById('read-confirm-error').classList.remove('hide');\r\n }\r\n });\r\n\r\n document.getElementById('read-confirm-checkbox').addEventListener('click', () => {\r\n const readConfirmCheckbox = document.getElementById('read-confirm-checkbox');\r\n if (readConfirmCheckbox.checked) {\r\n readConfirmCheckbox.classList.remove('error');\r\n document.getElementById('read-confirm-error').classList.add('hide');\r\n }\r\n });\r\n }\r\n\r\n function toggleExpandingPanelVisibility(button) {\r\n const isAriaExpanded = button.getAttribute('aria-expanded');\r\n const targetContentId= button.getAttribute('aria-controls');\r\n const selectedContent = document.getElementById(targetContentId);\r\n\r\n button.setAttribute(\r\n 'aria-expanded',\r\n isAriaExpanded === 'true' ? 'false' : 'true');\r\n\r\n selectedContent.classList.toggle('hide');\r\n selectedContent.setAttribute(\r\n 'aria-hidden',\r\n isAriaExpanded === 'true' ? 'true' : 'false');\r\n }\r\n\r\n function completePaymentStepAndContinue(currentExpandingPanel, nextExpandingPanel) {\r\n updateExpandingPanelNavigation(currentExpandingPanel);\r\n const currentExpandingPanelButton = currentExpandingPanel.querySelector('[data-expandingPanel-button]');\r\n const nextExpandingPanelButton = nextExpandingPanel.querySelector('[data-expandingPanel-button]');\r\n toggleExpandingPanelVisibility(currentExpandingPanelButton);\r\n toggleExpandingPanelVisibility(nextExpandingPanelButton);\r\n updateExpandingPanelAccessibilityText(currentExpandingPanel, nextExpandingPanel);\r\n\r\n sessionStorage\r\n .setItem('TakePaymentSinglePagePaymentCompletedExpandingPanelStep',\r\n currentExpandingPanel.dataset.expandingpanelStep);\r\n }\r\n\r\n function updateExpandingPanelAccessibilityText(currentExpandingPanel, nextExpandingPanel) {\r\n const currentPanelPill = currentExpandingPanel.querySelector('[data-step-pill]');\r\n const currentPanelPillSpan = currentPanelPill.querySelector('span');\r\n const currentPanelPillSpanContent = currentPanelPillSpan.textContent;\r\n const nextPanelPill = nextExpandingPanel.querySelector('[data-step-pill]');\r\n const nextPanelPillSpan = nextPanelPill.querySelector('span');\r\n const nextPanelPillContent = nextPanelPillSpan.textContent;\r\n\r\n\r\n if (currentPanelPillSpanContent.includes('Open')) {\r\n currentPanelPillSpan.textContent = currentPanelPillSpanContent.replace('Open', 'Closed and complete');\r\n }\r\n\r\n if (nextPanelPillContent.includes('Closed')) {\r\n const textToReplace = nextPanelPillContent.includes('Closed and complete') ?\r\n 'Closed and complete' : 'Closed';\r\n nextPanelPillSpan.textContent = nextPanelPillContent.replace(textToReplace, 'Open');\r\n }\r\n }\r\n\r\n function updateExpandingPanelNavigation(currentExpandingPanel) {\r\n const currentExpandingPanelPill = currentExpandingPanel.querySelector('[data-step-pill]');\r\n const currentExpandingPanelButton = currentExpandingPanel.querySelector('[data-expandingPanel-button]');\r\n\r\n if (!currentExpandingPanelPill.classList.contains('uil-pill--success')) {\r\n currentExpandingPanelPill.classList.add('uil-pill--success');\r\n }\r\n\r\n currentExpandingPanelButton.classList.remove('hide');\r\n }\r\n\r\n function updateHeaderStep(currentHeaderStep) {\r\n currentHeaderStep.classList.add('uil-step-icon--success');\r\n }\r\n\r\n function expandingPanelButtonClicked(targetExpandingPanelButton) {\r\n const targetExpandingPanel = targetExpandingPanelButton.closest('[data-expandingPanel]');\r\n\r\n if (targetExpandingPanel.id === 'TakePaymentExpandingPanelCardPayment') {\r\n const isMonthlyPayment = document.getElementById('IsMonthlyPayment').value.toLowerCase() == 'true';\r\n if (isMonthlyPayment) {\r\n bgl.components.takepayment.singlepagepaymentmonthlydeposit.init(componentConfig);\r\n } else {\r\n bgl.components.takepayment.singlepagepaymentannual.init(componentConfig);\r\n }\r\n }\r\n\r\n const targetExpandingPanelButtonStep = targetExpandingPanel.dataset.expandingpanelStep;\r\n const visibleExpandingPanelButtons = document.querySelectorAll('[data-expandingPanel-button]:not(.hide)');\r\n\r\n for (let i = visibleExpandingPanelButtons.length; i >= targetExpandingPanelButtonStep; i--) {\r\n visibleExpandingPanelButtons[i - 1].classList.add('hide');\r\n }\r\n\r\n const currentExpandingPanelButton = document\r\n .querySelectorAll('[data-expandingPanel-button][aria-expanded=\"true\"]')[0];\r\n const currentExpandingPanel = currentExpandingPanelButton.closest('[data-expandingPanel]');\r\n\r\n toggleExpandingPanelVisibility(currentExpandingPanelButton);\r\n toggleExpandingPanelVisibility(targetExpandingPanelButton);\r\n updateExpandingPanelAccessibilityText(currentExpandingPanel, targetExpandingPanel);\r\n }\r\n\r\n async function switchPaymentType() {\r\n const paymentSwitchLinkId = document.querySelector('[payment-switch-link]')\r\n .getAttribute('id');\r\n const data = {\r\n __RequestVerificationToken: document.querySelector('input[name=\"__RequestVerificationToken\"]').value,\r\n paymentSwitchId: document.querySelector('[payment-switch-link]')\r\n .getAttribute('data-payment-switch-id'),\r\n };\r\n const dataToPost = new URLSearchParams(data).toString();\r\n\r\n bgl.common.fetch.formPost(\r\n componentConfig.TenantConfiguration.ApplicationPath + 'TakePaymentComponentSinglePage/PaymentSwitch',\r\n {body: dataToPost},\r\n ).then(async (response) => {\r\n const responseBody = await response.json();\r\n if (!response.ok || !responseBody?.isSuccess) {\r\n window.location.href = responseBody.errorRedirectUrl;\r\n } else {\r\n bgl.common.pubsub.emit('switchPaymentType', paymentSwitchLinkId === 'monthly-switch-link');\r\n sessionStorage.removeItem('TakePaymentSinglePagePaymentCompletedExpandingPanelStep');\r\n if (paymentSwitchLinkId === 'monthly-switch-link') {\r\n document.getElementById('IsMonthlyPayment').value = 'True';\r\n bgl.common.pubsub.emit('showNotification',\r\n document.getElementById('monthly-notification-message').value);\r\n window.location.reload(true);\r\n } else if (paymentSwitchLinkId === 'annual-switch-link') {\r\n document.getElementById('IsMonthlyPayment').value = 'False';\r\n bgl.common.pubsub.emit('showNotification',\r\n document.getElementById('annual-notification-message').value);\r\n window.location.reload(true);\r\n }\r\n }\r\n }).catch(() => {\r\n appInsights.trackTrace({message: 'Switch payment type failed'});\r\n });\r\n }\r\n function onError(responseBody, responseError, responseStatusText, dataPosted) {\r\n if (window.appInsights) {\r\n bgl.common.telemetry.logEvent(\r\n 'SinglePagePaymentSummary bgl.components.takePayment.responseBody',\r\n {\r\n status: responseStatusText,\r\n errorThrown: responseError,\r\n dataPosted: dataPosted,\r\n responseData: responseBody,\r\n },\r\n );\r\n }\r\n }\r\n\r\n function showHoustonNotification() {\r\n const isMonthlyPayment = document.getElementById('IsMonthlyPayment').value;\r\n if (isMonthlyPayment.toLowerCase() === 'true') {\r\n bgl.common.pubsub.emit(\r\n 'showNotification',\r\n 'OK ##FIRSTNAME##, your new price is £##PRICE## a month with a deposit of £##DEPOSIT##. ' +\r\n 'The underwriter for your policy is ##UNDERWRITER##.',\r\n );\r\n } else {\r\n bgl.common.pubsub.emit(\r\n 'showNotification',\r\n 'OK ##FIRSTNAME##, your new price is £##PRICE##. The underwriter for your policy is ##UNDERWRITER##.',\r\n );\r\n }\r\n }\r\n\r\n function setupImportantInformationLinks() {\r\n const legalInformationLinks = document.querySelectorAll('[data-legal-information]');\r\n legalInformationLinks.forEach(function(link) {\r\n link.addEventListener('click', function(event) {\r\n event.preventDefault();\r\n bgl.common.loader.load({}, this.dataset.actionUrl, this.dataset.container);\r\n });\r\n });\r\n }\r\n\r\n return {\r\n init: initComponent,\r\n completePaymentStepAndContinue: completePaymentStepAndContinue,\r\n updateHeaderStep: updateHeaderStep,\r\n onError: onError,\r\n switchPaymentType: switchPaymentType,\r\n expandingPanelButtonClicked: expandingPanelButtonClicked,\r\n };\r\n})();\r\n\r\nif (typeof module !== 'undefined') {\r\n module.exports = bgl.components.takepayment.singlepagepaymentsummary;\r\n}\r\n// eslint-disable-next-line no-var\r\nvar bgl = window.bgl || {};\r\nbgl.components = bgl.components || {};\r\nbgl.components.takepayment = bgl.components.takepayment || {};\r\n\r\nbgl.components.takepayment.singlepagepaymentmonthlyinstalment = (() => {\r\n let componentConfig;\r\n let redirectInterval;\r\n let redirectTick = 0;\r\n let isPaymentSuccessful = false;\r\n\r\n function loadComponent(componentConfiguration, componentUrl, containerElementId, callback) {\r\n componentConfiguration.CardSessionData = getSecureSessionData();\r\n componentConfiguration.CreditInformationUrl = sessionStorage.getItem('credit-information');\r\n bgl.common.loader.load(componentConfiguration,\r\n componentUrl,\r\n containerElementId,\r\n function() {\r\n initComponent(componentConfiguration);\r\n if (typeof callback === 'function') {\r\n callback();\r\n }\r\n });\r\n }\r\n\r\n function initComponent(componentConfiguration) {\r\n componentConfig = componentConfiguration;\r\n\r\n sortCodeAutoTab();\r\n initDirectDebit();\r\n populateBankAccountDetails();\r\n initCommon(componentConfiguration);\r\n\r\n const datepicker = document.querySelector('[data-datepicker]');\r\n if (datepicker != null) {\r\n bgl.uil.datepicker.init();\r\n datepicker.addEventListener('change', (e) => {\r\n if (datepicker.checkValidity()) {\r\n sessionStorage.setItem('MonthlyInstalmentPaymentDate', e.target.value);\r\n postChangePaymentDateToApi(sessionStorage.getItem('MonthlyInstalmentPaymentDate'));\r\n }\r\n });\r\n }\r\n\r\n $('#direct-debit-details').on('click', function() {\r\n waitForSlidePanelToLoad();\r\n });\r\n\r\n $(`#importantInfo-payments-instalments,\r\n #importantInfo-bottom, \r\n #intermediary-services-contract-summary-slider-link, \r\n #intermediary-services-contract-summary-slider-link-read-confirm`).off('click').on('click', (event) => {\r\n event.preventDefault();\r\n const link = $(event.currentTarget);\r\n bgl.common.loader.load({}, link.data('action-url'), link.data('container'));\r\n });\r\n\r\n $('#Monthly-Pay-Now-Button').on('click',\r\n function() {\r\n if (!$('#Read-Confirm-Checkbox').prop('checked')) {\r\n $('#Read-Confirm-Checkbox').addClass('error');\r\n $('#Read-Confirm-Error').removeClass('hide');\r\n } else {\r\n commitInstalmentAndDepositPaymentsAndBasket(componentConfig);\r\n }\r\n });\r\n\r\n $('#Read-Confirm-Checkbox').on('click',\r\n function() {\r\n if ($('#Read-Confirm-Checkbox').prop('checked')) {\r\n $('#Read-Confirm-Checkbox').removeClass('error');\r\n $('#Read-Confirm-Error').addClass('hide');\r\n }\r\n });\r\n }\r\n\r\n function checkAiComplete(componentConfig) {\r\n if (sessionStorage.getItem('AI_sentBuffer') === '[]' || redirectTick >= 25) {\r\n clearInterval(redirectInterval);\r\n if (isPaymentSuccessful) {\r\n bgl.common.utilities.redirectToUrl(componentConfig.PaymentSuccessfulUrl);\r\n } else {\r\n bgl.common.utilities.redirectToUrl(sessionStorage.getItem('PaymentProcessedRedirectUrl'));\r\n }\r\n }\r\n redirectTick += 1;\r\n }\r\n\r\n function commitInstalmentAndDepositPaymentsAndBasket(componentConfig) {\r\n const requestVerificationToken = $('input[name=\"__RequestVerificationToken\"]').val();\r\n\r\n const dataToPost = {\r\n __RequestVerificationToken: requestVerificationToken,\r\n commitData: getCommitCardData(),\r\n };\r\n\r\n $('body').html(bgl.common.spinner.getSpinnerBody('Processing your payment!',\r\n 'Please do not hit the back button or refresh the page'));\r\n\r\n const urlPrefix = componentConfig.TenantConfiguration.ApplicationPath !== null ?\r\n componentConfig.TenantConfiguration.ApplicationPath : '/';\r\n\r\n $.ajax({\r\n url: urlPrefix + 'TakePaymentComponentSinglePage/CommitMultiplePaymentBasket',\r\n type: 'POST',\r\n cache: false,\r\n dataType: 'json',\r\n data: dataToPost,\r\n success: function(result) {\r\n if (result.isSuccess === false) {\r\n bgl.common.utilities.redirectToUrl(result.errorRedirectUrl);\r\n return;\r\n }\r\n if (result.PaymentSuccessful === true) {\r\n if (typeof bgl.common.pubsub !== 'undefined') {\r\n bgl.common.pubsub.emit('fakeFormSubmit', 'PaymentSuccessful');\r\n }\r\n dataLayerPushPaymentSuccessful();\r\n bgl.common.telemetry.logEvent(\r\n 'PaymentSuccessful',\r\n {'PolicyId': result.PolicyId});\r\n isPaymentSuccessful = true;\r\n }\r\n sessionStorage.setItem('PaymentProcessedRedirectUrl', result.RedirectUrl);\r\n if (result.PolicyId) {\r\n const stringValue = result.PolicyId + '';\r\n let length = stringValue.indexOf('-');\r\n length = length > 0 ? length : stringValue.length;\r\n sessionStorage.setItem('PaymentProcessedPolicyId', stringValue.substring(0, length));\r\n sessionStorage.setItem('Authorization', result.Authorization);\r\n }\r\n },\r\n complete: function() {\r\n redirectInterval = setInterval(checkAiComplete, 200, componentConfig);\r\n },\r\n });\r\n }\r\n\r\n function getCommitCardData() {\r\n const model = {};\r\n const directDebitNumber = sessionStorage.getItem('MonthlyInstalmentDetails1');\r\n const directDebitCode = sessionStorage.getItem('MonthlyInstalmentDetails2');\r\n model.TodaysPaymentCard = getDepositCardData();\r\n model.ContinuousPaymentCard = getInstalmentCardData();\r\n model.ContinuousPaymentDirectDebit = getInstalmentDirectDebitData();\r\n model.PaymentType = sessionStorage.getItem('MonthlyInstalmentPaymentType');\r\n model.UseContinuousPaymentCardForTodaysPayment = sessionStorage.getItem('UseMonthlyInstalmentCard');\r\n if (!directDebitNumber && !directDebitCode) {\r\n bgl.common.telemetry.logEvent('MonthlyInstallmentDetails', {'Status': 'Not available'});\r\n } else {\r\n model.DirectDebitNumber = directDebitNumber;\r\n model.DirectDebitCode = directDebitCode;\r\n }\r\n model.PaymentDeclinedUrl = componentConfig.PaymentDeclinedUrl;\r\n model.ComponentConfiguration = componentConfig;\r\n return model;\r\n }\r\n\r\n function getDepositCardData() {\r\n const model = {};\r\n model.SelectedPersonIdText = sessionStorage.getItem('MonthlyDepositSelectedPersonIdText');\r\n model.CardCaptureUri = sessionStorage.getItem('MonthlyDepositCardCaptureUri');\r\n model.SecureSessionId = sessionStorage.getItem('MonthlyDepositSecureSessionId');\r\n model.SelectedPersonIdVal = sessionStorage.getItem('MonthlyDepositSelectedPersonIdVal');\r\n return model;\r\n }\r\n\r\n function getInstalmentCardData() {\r\n const model = {};\r\n model.SelectedPersonIdText = sessionStorage.getItem('MonthlyInstalmentCardSelectedPersonIdText');\r\n model.SecureSessionId = sessionStorage.getItem('MonthlyInstalmentSecureSessionId');\r\n model.SelectedPersonIdVal = sessionStorage.getItem('MonthlyInstalmentCardSelectedPersonIdVal');\r\n return model;\r\n }\r\n\r\n function getInstalmentDirectDebitData() {\r\n const model = {};\r\n model.SelectedPersonIdText = sessionStorage.getItem('MonthlyInstalmentDirectDebitSelectedPersonIdText');\r\n model.SelectedPersonIdVal = sessionStorage.getItem('MonthlyInstalmentDirectDebitSelectedPersonIdVal');\r\n return model;\r\n }\r\n\r\n function dataLayerPushPaymentSuccessful() {\r\n if (typeof dataLayer !== 'undefined') {\r\n dataLayer.push({\r\n 'event': 'TEVirtualPageview',\r\n 'virtualPageURL': 'Payment/Successful',\r\n 'virtualPageTitle': 'Payment Successful',\r\n });\r\n }\r\n }\r\n\r\n function waitForSlidePanelToLoad() {\r\n window.setTimeout(function() {\r\n if ($('#SlidePanel').hasClass('active')) {\r\n const directDebitDetails = $('#direct-debit-info').html();\r\n $('#SlidePanelContent').html(directDebitDetails);\r\n } else {\r\n waitForSlidePanelToLoad();\r\n }\r\n }, 100);\r\n }\r\n\r\n function initCommon(componentConfiguration) {\r\n const accessible = componentConfiguration.ViewOptions.MonthlyInstalment === 2;\r\n if (accessible) {\r\n setupAriaLabeltoDates();\r\n }\r\n bgl.common.datastore.setupReadAndWrite();\r\n forceMonthlyPaymentMethodStoreAndSetPaymentDate();\r\n }\r\n\r\n function initDirectDebit() {\r\n sessionStorage.setItem('MonthlyInstalmentPaymentType', 'DirectDebit');\r\n bgl.common.validator.enableMaxLength();\r\n bgl.common.validator.init($('#Direct-Debit-Form'),\r\n {\r\n onfocusout: function(element) {\r\n checkSortcodeValidation(element);\r\n checkAccountNumberValidation(element);\r\n },\r\n hasSubmit: false,\r\n });\r\n\r\n $('#Direct-Debit-Authorise-Row label').on('click',\r\n function() {\r\n $('#' + $(this).attr('for')).click().focusout();\r\n });\r\n\r\n $('#Direct-Debit-Continue-Button').on('click',\r\n function(event) {\r\n event.preventDefault();\r\n const formIsValid = $('#Direct-Debit-Form').valid();\r\n if (formIsValid) {\r\n validateBankAccountAndSortCode(function() {\r\n saveDataToSessionStorage();\r\n completeDirectDebitStepAndContinue();\r\n });\r\n } else {\r\n checkSortcodeValidation($('#SortCodePart1'));\r\n getValidationMessages();\r\n scrollToFirstFieldWithErrorAndFocus();\r\n }\r\n\r\n return formIsValid;\r\n });\r\n\r\n $('input[type=radio][name=monthly-payment]').on('change', function() {\r\n if (this.value == 'DirectDebit') {\r\n $('#Direct-Debit-Continue-Button').removeClass('hide');\r\n } else {\r\n $('#Direct-Debit-Continue-Button').addClass('hide');\r\n }\r\n });\r\n }\r\n\r\n function getValidationMessages() {\r\n if ($('.form-row').hasClass('error')) {\r\n const data = {\r\n form_section: getFormSectionName($(this)),\r\n error_details: [],\r\n };\r\n\r\n $('.error').find('.form-row__validation-text').each(function() {\r\n addError(data, $(this).attr('data-valmsg-for'), $(this).text().trim());\r\n });\r\n\r\n const sortcodeValiationElement = $('#sortcode-validation-text');\r\n if (sortcodeValiationElement.length == 1 && !sortcodeValiationElement.hasClass('hide')) {\r\n addError(\r\n data,\r\n $('#form-row-sortcode1 fieldset legend').text().trim(),\r\n $('#sortcode-validation-text').text().trim(),\r\n );\r\n }\r\n\r\n const sortcodeApiValidationElement = $('#sortcode-api-validation-message');\r\n if (sortcodeApiValidationElement.length == 1 && !sortcodeApiValidationElement.hasClass('hide')) {\r\n addError(\r\n data,\r\n $('#form-row-sortcode1 fieldset legend').text().trim(),\r\n $('#sortcode-api-validation-message').text().trim(),\r\n );\r\n }\r\n\r\n bgl.common.pubsub.emit('formValidationFailed', data);\r\n }\r\n }\r\n\r\n function addError(data, field, message) {\r\n const errorDetail = {\r\n error_field: field,\r\n error_message: message,\r\n };\r\n data.error_details.push(errorDetail);\r\n }\r\n\r\n function getFormSectionName() {\r\n const formRow = '.form-row__validation-text';\r\n if ($(formRow).parents().find('.step-form__section-title').text().length === 0) {\r\n return $(formRow).closest('form').find('h1').text();\r\n } else {\r\n return $(formRow).closest('form').find('.step-form__section-title').text();\r\n }\r\n }\r\n\r\n function scrollToFirstFieldWithErrorAndFocus() {\r\n const firstRequiredField = $('.error,.sort-code__input--error').first();\r\n $('html,body').animate({scrollTop: firstRequiredField.offset().top}, 'slow');\r\n\r\n if (firstRequiredField.length) {\r\n const invalidInputElem = firstRequiredField.find('input, select, textarea')\r\n .addBack('input, select, textarea')[0];\r\n if (invalidInputElem !== undefined) {\r\n invalidInputElem.focus();\r\n }\r\n }\r\n }\r\n\r\n function checkAccountNumberValidation(element) {\r\n let isValid = false;\r\n\r\n if ($(element).hasClass('form-row__input account-number sort-code__input--error')) {\r\n $('#account-number-validation-message').addClass('hide');\r\n }\r\n if ($(element).hasClass('form-row__input account-number')) {\r\n isValid = $('#direct-debit-account-number').valid();\r\n }\r\n if (isValid) {\r\n removeAccountErrorStyle();\r\n }\r\n }\r\n\r\n function checkSortcodeValidation(element) {\r\n removeApiValidationErrorMessage(element);\r\n validateIndividualSortCodeInput(element);\r\n clearValidationErrorStylingWhenAllSortCodeInputsAreValid();\r\n }\r\n\r\n function removeApiValidationErrorMessage(element) {\r\n if ($(element).hasClass('form-row__input--sort-code') &&\r\n !$('#sortcode-api-validation-message').hasClass('hide')) {\r\n removeSortCodeErrorStyle();\r\n }\r\n }\r\n\r\n function validateIndividualSortCodeInput(element) {\r\n if ($(element).valid()) {\r\n removeIndividualSortCodeErrorStyle(element);\r\n } else {\r\n addIndividualSortCodeErrorStyle(element);\r\n }\r\n $('#form-row-sortcode1').removeClass('error');\r\n }\r\n\r\n function clearValidationErrorStylingWhenAllSortCodeInputsAreValid() {\r\n const allSortCodeInputsValid = checkAllSortCodeInputsAreValid();\r\n if (allSortCodeInputsValid) {\r\n $('#SortCodeLabel').removeClass('sort-code__label--error');\r\n $('#sortcode-validation-text').addClass('hide');\r\n }\r\n }\r\n\r\n function checkAllSortCodeInputsAreValid() {\r\n let allSortCodeInputsValid = true;\r\n\r\n $('.form-row__input--sort-code').each(function() {\r\n if ($(this).hasClass('sort-code__input--error')) {\r\n allSortCodeInputsValid = false;\r\n }\r\n });\r\n\r\n return allSortCodeInputsValid;\r\n }\r\n\r\n function setupAriaLabeltoDates() {\r\n const selectList = document.getElementById('Direct-Debit-Payment-Date-Label');\r\n const selectCreditCardList = document.getElementById('Credit-Card-Payment-Date-Label');\r\n selectList.setAttribute('aria-label', 'Please Select preferred first instalment date from given list');\r\n selectCreditCardList.setAttribute(\r\n 'aria-label',\r\n 'Please Select preferred first instalment date from given list',\r\n );\r\n }\r\n\r\n function sortCodeKeyUpEvent(event, currentSortCodePart, nextSortCodePart) {\r\n const TAB_KEYCODE = 9;\r\n const SHIFT_KEYCODE = 16;\r\n const LEFT_ARROW_KEYCODE = 37;\r\n const UP_ARROW_KEYCODE = 38;\r\n const RIGHT_ARROW_KEYCODE = 39;\r\n const DOWN_ARROW_KEYCODE = 40;\r\n\r\n const currentLength = $(currentSortCodePart).val().length;\r\n if (currentLength === 2 &&\r\n event.which !== TAB_KEYCODE &&\r\n event.which !== SHIFT_KEYCODE &&\r\n event.which !== LEFT_ARROW_KEYCODE &&\r\n event.which !== UP_ARROW_KEYCODE &&\r\n event.which !== RIGHT_ARROW_KEYCODE &&\r\n event.which !== DOWN_ARROW_KEYCODE) {\r\n $(nextSortCodePart).focus().select();\r\n }\r\n }\r\n\r\n function sortCodeAutoTab() {\r\n const container1 = document.getElementById('SortCodePart1');\r\n const container2 = document.getElementById('SortCodePart2');\r\n\r\n container1.onkeyup = function(e) {\r\n sortCodeKeyUpEvent(e, '#SortCodePart1', '#SortCodePart2');\r\n };\r\n\r\n container2.onkeyup = function(e) {\r\n sortCodeKeyUpEvent(e, '#SortCodePart2', '#SortCodePart3');\r\n };\r\n }\r\n\r\n function postChangePaymentDateToApi(nominatedDate) {\r\n const dataToPost = {\r\n __RequestVerificationToken: $('input[name=\"__RequestVerificationToken\"]').val(),\r\n nominatedDate: formatDate(nominatedDate),\r\n };\r\n\r\n $.ajax({\r\n url: componentConfig.TenantConfiguration.ApplicationPath +\r\n 'TakePaymentComponentSinglePage/ChangePaymentDate',\r\n type: 'POST',\r\n cache: false,\r\n dataType: 'json',\r\n data: dataToPost,\r\n success: function(result) {\r\n if (result.isSuccess === false) {\r\n bgl.common.utilities.redirectToUrl(result.errorRedirectUrl);\r\n return true;\r\n }\r\n return true;\r\n },\r\n });\r\n }\r\n\r\n function formatDate(nominatedDate) {\r\n const date = new Date(nominatedDate);\r\n\r\n const day = date.getDate();\r\n const month = date.getMonth() + 1;\r\n const year = date.getFullYear();\r\n\r\n const formattedDay = day < 10 ? '0' + day : day;\r\n const formattedMonth = month < 10 ? '0' + month : month;\r\n\r\n return `${formattedDay}-${formattedMonth}-${year}`;\r\n }\r\n\r\n function forceMonthlyPaymentMethodStoreAndSetPaymentDate() {\r\n $('.monthly-radio__label').on('click',\r\n function() {\r\n $('#' + $(this).attr('for')).click().focusout();\r\n $('#Direct-Debit-Payment-Date, #Credit-Card-Payment-Date')\r\n .val(sessionStorage.getItem('MonthlyInstalmentPaymentDate'));\r\n });\r\n }\r\n\r\n\r\n function getSecureSessionData() {\r\n return {\r\n 'Name': sessionStorage.getItem('MonthlyInstalmentCardSelectedPersonIdText'),\r\n 'SecureSessionId': sessionStorage.getItem('MonthlyInstalmentSecureSessionId'),\r\n 'SelectedPersonId': sessionStorage.getItem('MonthlyInstalmentCardSelectedPersonIdVal'),\r\n 'ThreeDSecureUri': sessionStorage.getItem('MonthlyInstalmentThreeDSecureUri'),\r\n };\r\n }\r\n\r\n function saveDataToSessionStorage() {\r\n const model = {\r\n sortCode: document.getElementById('SortCodePart1').value +\r\n document.getElementById('SortCodePart2').value +\r\n document.getElementById('SortCodePart3').value,\r\n accountNumber: document.getElementById('direct-debit-account-number').value,\r\n };\r\n\r\n const dataToPost = {\r\n __RequestVerificationToken: document.querySelector('input[name=\"__RequestVerificationToken\"]').value,\r\n BankAccountAndSortCodeModel: model,\r\n encryptData: true,\r\n };\r\n\r\n $.ajax({\r\n url: componentConfig.TenantConfiguration.ApplicationPath +\r\n 'TakePaymentComponentSinglePage/AccountDetailsCryptography',\r\n type: 'POST',\r\n cache: false,\r\n dataType: 'json',\r\n data: dataToPost,\r\n success: function(result) {\r\n if (!result.isSuccess) {\r\n bgl.common.telemetry.logEvent('MonthlyInstalmentDetails', {'Status': result.message});\r\n bgl.common.utilities.redirectToUrl(result.errorRedirectUrl);\r\n return false;\r\n }\r\n\r\n sessionStorage.setItem('MonthlyInstalmentDetails1', result.accountNumber);\r\n sessionStorage.setItem('MonthlyInstalmentDetails2', result.sortCode);\r\n\r\n if (sessionStorage.getItem('CardDetailsAlreadyEnteredMonthly') !== null &&\r\n sessionStorage.getItem('CardDetailsAlreadyEnteredMonthly').toLowerCase() == 'true') {\r\n bgl.components.takepayment.readonlycarddetails\r\n .load(\r\n componentConfig,\r\n componentConfig.TenantConfiguration.ApplicationPath +\r\n 'TakePaymentComponentSinglePage/ReadOnlyCardDetails',\r\n 'TakePaymentExpandingPanelCardPaymentContent',\r\n );\r\n } else {\r\n bgl.components.takepayment.singlepagepaymentmonthlydeposit.init(componentConfig);\r\n }\r\n\r\n return true;\r\n },\r\n });\r\n }\r\n\r\n function completeDirectDebitStepAndContinue() {\r\n const currentExpandingPanel = document.getElementById('TakePaymentExpandingPanelDirectDebit');\r\n const nextExpandingPanel = document.getElementById('TakePaymentExpandingPanelCardPayment');\r\n const currentHeaderStep = document.getElementById('TakePaymentHeaderDirectDebit');\r\n\r\n bgl.components.takepayment.singlepagepaymentsummary.completePaymentStepAndContinue(\r\n currentExpandingPanel,\r\n nextExpandingPanel,\r\n );\r\n\r\n bgl.components.takepayment.singlepagepaymentsummary.updateHeaderStep(\r\n currentHeaderStep,\r\n );\r\n\r\n currentExpandingPanel.scrollIntoView(true);\r\n }\r\n\r\n function populateBankAccountDetails() {\r\n const bankAccountNumberEn = sessionStorage.getItem('MonthlyInstalmentDetails1');\r\n const sortCodeEn = sessionStorage.getItem('MonthlyInstalmentDetails2');\r\n if (bankAccountNumberEn != null || sortCodeEn != null) {\r\n const model = {\r\n sortCode: sortCodeEn,\r\n accountNumber: bankAccountNumberEn,\r\n };\r\n const dataToPost = {\r\n __RequestVerificationToken: document.querySelector('input[name=\"__RequestVerificationToken\"]').value,\r\n BankAccountAndSortCodeModel: model,\r\n encryptData: false,\r\n };\r\n\r\n $.ajax({\r\n url: componentConfig.TenantConfiguration.ApplicationPath +\r\n 'TakePaymentComponentSinglePage/AccountDetailsCryptography',\r\n type: 'POST',\r\n cache: false,\r\n dataType: 'json',\r\n data: dataToPost,\r\n success: function(result) {\r\n if (!result.isSuccess) {\r\n bgl.common.utilities.redirectToUrl(result.errorRedirectUrl);\r\n return false;\r\n }\r\n document.getElementById('direct-debit-account-number').value = result.accountNumber;\r\n const sortCode = result.sortCode;\r\n document.getElementById('SortCodePart1').value = sortCode.substring(0, 2);\r\n document.getElementById('SortCodePart2').value = sortCode.substring(2, 4);\r\n document.getElementById('SortCodePart3').value = sortCode.substring(4, 6);\r\n return true;\r\n },\r\n });\r\n }\r\n return false;\r\n }\r\n\r\n function validateBankAccountAndSortCode(saveDataToSessionStorageCallBack) {\r\n const dataToPost = {\r\n __RequestVerificationToken: document.querySelector('input[name=\"__RequestVerificationToken\"]').value,\r\n sortCode: document.getElementById('SortCodePart1').value +\r\n document.getElementById('SortCodePart2').value +\r\n document.getElementById('SortCodePart3').value,\r\n accountNumber: document.getElementById('direct-debit-account-number').value,\r\n };\r\n $.ajax({\r\n url: componentConfig.TenantConfiguration.ApplicationPath +\r\n 'TakePaymentComponentSinglePage/PostAccountNumberAndSortCode',\r\n type: 'POST',\r\n cache: false,\r\n dataType: 'json',\r\n data: dataToPost,\r\n success: function(result) {\r\n if (!result.isSuccess) {\r\n bgl.common.telemetry.logEvent('MonthlyInstalmentDetailsStatus', {'message': result.message});\r\n bgl.common.utilities.redirectToUrl(result.errorRedirectUrl);\r\n return false;\r\n }\r\n\r\n switch (result.Result) {\r\n case 'Validated':\r\n if (typeof bgl.common.pubsub !== 'undefined') {\r\n bgl.common.pubsub.emit(\r\n 'fakeFormSubmit',\r\n $('#Direct-Debit-Form').attr('id') ||\r\n $('#Direct-Debit-Form').attr('action') ||\r\n 'unknown',\r\n );\r\n }\r\n removeSortCodeErrorStyle();\r\n removeAccountErrorStyle();\r\n saveDataToSessionStorageCallBack();\r\n return true;\r\n case 'no values submitted':\r\n case 'sort code or account number invalid':\r\n addAccountErrorStyle();\r\n addSortCodeErrorStyle();\r\n break;\r\n case 'sortCode invalid':\r\n addSortCodeErrorStyle();\r\n break;\r\n case 'accountNumber invalid':\r\n addAccountErrorStyle();\r\n break;\r\n }\r\n\r\n scrollToFirstFieldWithErrorAndFocus();\r\n return false;\r\n },\r\n });\r\n }\r\n\r\n function removeSortCodeErrorStyle() {\r\n $('#sortcode-api-validation-message').addClass('hide');\r\n $('#SortCodeLabel').removeClass('sort-code__label--error');\r\n $('#sortcode-api-validation-message').removeClass('sort-code__span--error');\r\n $('#SortCodePart1,#SortCodePart2,#SortCodePart3').removeClass('sort-code__input--error');\r\n $('#sort-code-input-1, #sort-code-input-2, #sort-code-input-3').removeClass('error');\r\n cleanAriaDescribedBy('#sort-code-input-1');\r\n }\r\n\r\n function addSortCodeErrorStyle() {\r\n $('#sortcode-api-validation-message').removeClass('hide');\r\n $('#SortCodeLabel').addClass('sort-code__label--error');\r\n $('#sortcode-api-validation-message').addClass('sort-code__span--error');\r\n $('#SortCodePart1,#SortCodePart2,#SortCodePart3').addClass('sort-code__input--error');\r\n $('#sort-code-input-1, #sort-code-input-2, #sort-code-input-3').addClass('error');\r\n\r\n cleanAriaDescribedBy($('#SortCodePart1,#SortCodePart2,#SortCodePart3'));\r\n $('#SortCodePart1,#SortCodePart2,#SortCodePart3').attr('aria-describedby', 'sortcode-api-validation-message');\r\n }\r\n\r\n function removeIndividualSortCodeErrorStyle(element) {\r\n $(element).removeClass('sort-code__input--error');\r\n cleanAriaDescribedBy(element);\r\n }\r\n\r\n function addIndividualSortCodeErrorStyle(element) {\r\n $('#SortCodeLabel').addClass('sort-code__label--error');\r\n $('#sortcode-validation-text').removeClass('hide');\r\n $(element).addClass('sort-code__input--error');\r\n\r\n cleanAriaDescribedBy(element);\r\n\r\n if ($(element).hasClass('form-row__input account-number sort-code__input--error')) {\r\n element.setAttribute('aria-describedby', 'direct-debit-account-number-error');\r\n } else if ($(element)\r\n .hasClass('form-row__input form-row__input--radio form-row__input--hidden sort-code__input--error')) {\r\n element.setAttribute('aria-describedby', 'DirectDebitData.CanAuthorise-error');\r\n } else {\r\n $(element).attr('aria-describedby', 'sortcode-validation-text');\r\n }\r\n }\r\n\r\n function addAccountErrorStyle() {\r\n $('#account-number-validation-message').removeClass('hide');\r\n $('#AccountNumberLabel').addClass('sort-code__label--error');\r\n $('#account-number-validation-message').addClass('sort-code__span--error');\r\n $('#direct-debit-account-number').addClass('sort-code__input--error');\r\n $('#account-number-input').addClass('error');\r\n\r\n cleanAriaDescribedBy($('#account-number-input'));\r\n $('#direct-debit-account-number').attr('aria-describedby', 'account-number-validation-message');\r\n }\r\n\r\n function removeAccountErrorStyle() {\r\n $('#account-number-validation-message').addClass('hide');\r\n $('#AccountNumberLabel').removeClass('sort-code__label--error');\r\n $('#account-number-validation-message').removeClass('sort-code__span--error');\r\n $('#direct-debit-account-number').removeClass('sort-code__input--error');\r\n $('#account-number-input').removeClass('error');\r\n cleanAriaDescribedBy('#account-number-input');\r\n }\r\n\r\n function cleanAriaDescribedBy(element) {\r\n if ($(element).attr('aria-describedby')) {\r\n $(element).removeAttr('aria-describedby');\r\n }\r\n }\r\n\r\n return {\r\n init: initComponent,\r\n load: loadComponent,\r\n getValidationMessages: getValidationMessages,\r\n commitInstalmentAndDepositPaymentsAndBasket: commitInstalmentAndDepositPaymentsAndBasket,\r\n };\r\n})();\r\n// eslint-disable-next-line no-var\r\nvar bgl = window.bgl || {};\r\nbgl.components = bgl.components || {};\r\nbgl.components.takepayment = bgl.components.takepayment || {};\r\n\r\nbgl.components.takepayment.singlepagepaymentmonthlydeposit = (function() {\r\n let componentConfiguration;\r\n let hideElementsWhen3DSecureIsDisplayedTimeout;\r\n\r\n function loadComponent(componentConfiguration, componentUrl, containerElementId, requestedEditCard) {\r\n componentConfiguration.CardSessionData = getSecureSessionData();\r\n bgl.common.loader.load(componentConfiguration,\r\n componentUrl,\r\n containerElementId,\r\n function() {\r\n initComponent(componentConfiguration, requestedEditCard);\r\n });\r\n }\r\n\r\n function initComponent(configuration, requestedEditCard = false) {\r\n componentConfiguration = configuration;\r\n\r\n if (sessionStorage.getItem('CardDetailsAlreadyEnteredMonthly') !== null &&\r\n sessionStorage.getItem('CardDetailsAlreadyEnteredMonthly').toLowerCase() == 'true' &&\r\n !requestedEditCard) {\r\n componentConfiguration.CardSessionData = getSecureSessionData();\r\n\r\n bgl.components.takepayment.readonlycarddetails.load(\r\n componentConfiguration,\r\n componentConfiguration.TenantConfiguration.ApplicationPath +\r\n 'TakePaymentComponentSinglePage/ReadOnlyCardDetails',\r\n 'TakePaymentExpandingPanelCardPaymentContent',\r\n );\r\n } else {\r\n bgl.common.datastore.setupReadAndWrite();\r\n\r\n loadIframe();\r\n\r\n setVisibilityOfCardholderNameOther();\r\n\r\n setCardInformation();\r\n\r\n bgl.common.validator.enableMaxLength();\r\n\r\n bgl.common.validator.init($('#MonthlyDepositPaymentForm'),\r\n {\r\n onkeyup: function(element) {\r\n validateElementAndToggleIframe(element);\r\n },\r\n hasSubmit: false,\r\n });\r\n\r\n $('#PersonListData_SelectedPersonId').change(\r\n function() {\r\n if ($('#PersonListData_SelectedPersonId').find(':selected').text() === 'Other') {\r\n $('#CardholderNameRow').removeClass('hide');\r\n $('#Card-Capture-Iframe').addClass('hide');\r\n sessionStorage.setItem('MonthlyDepositSelectedPersonIdText', '');\r\n $('#CardholderName').val('');\r\n $('#CardholderName').focus();\r\n } else {\r\n $('#CardholderNameRow').addClass('hide');\r\n $('#Card-Capture-Iframe').removeClass('hide');\r\n }\r\n\r\n initCardCapture();\r\n });\r\n\r\n if ($('#PersonListData_SelectedPersonId').find(':selected').text() === 'Other') {\r\n validateElementAndToggleIframe($('#MonthlyDepositPaymentForm'));\r\n }\r\n\r\n setupHowToPayButtons();\r\n\r\n $('#Card-Capture-Iframe').on('load', function() {\r\n hideElementsWhen3DSecureIsDisplayed();\r\n });\r\n }\r\n }\r\n\r\n\r\n function initCardCapture() {\r\n sessionStorage.removeItem('MonthlyDepositCardCaptureUri');\r\n sessionStorage.removeItem('MonthlyDepositSecureSessionId');\r\n sessionStorage.removeItem('MonthlyDepositThreeDSecureUri');\r\n\r\n if (hideElementsWhen3DSecureIsDisplayedTimeout) {\r\n clearTimeout(hideElementsWhen3DSecureIsDisplayedTimeout);\r\n }\r\n\r\n bgl.components.takepayment.cardcaptureiframe.clearIframe();\r\n\r\n componentConfiguration.CardSessionData = {'SelectedPersonId': $('#PersonListData_SelectedPersonId').val()};\r\n\r\n const dataToPost = {\r\n __RequestVerificationToken: $('input[name=\\'__RequestVerificationToken\\']').val(),\r\n configuration: componentConfiguration,\r\n };\r\n\r\n $.ajax({\r\n url: componentConfiguration.TenantConfiguration.ApplicationPath +\r\n 'TakePaymentComponentSinglePage/InitialiseMonthlyCardCapture',\r\n type: 'POST',\r\n data: dataToPost,\r\n success: function(data) {\r\n sessionStorage.setItem('MonthlyDepositCardCaptureUri', data.cardCaptureUri);\r\n sessionStorage.setItem('MonthlyDepositSecureSessionId', data.secureSessionId);\r\n sessionStorage.setItem('MonthlyDepositThreeDSecureUri', data.threeDSecureUri);\r\n\r\n loadIframe();\r\n },\r\n });\r\n }\r\n\r\n function loadIframe() {\r\n const cardSessionData = getSecureSessionData();\r\n bgl.components.takepayment.cardcaptureiframe.loadIframe(\r\n 'Card-Capture-Iframe',\r\n cardSessionData.CardCaptureUri,\r\n cardSessionData.SecureSessionId,\r\n cardSessionData.ThreeDSecureUri);\r\n }\r\n\r\n function validateElementAndToggleIframe(element) {\r\n const valid = $(element).valid();\r\n if (valid === true) {\r\n $('#Card-Capture-Iframe').removeClass('hide');\r\n } else {\r\n $('#Card-Capture-Iframe').addClass('hide');\r\n }\r\n }\r\n\r\n function hideElementsWhen3DSecureIsDisplayed() {\r\n if ($('#Card-Capture-Iframe').contents().find('#continue').length === 0) {\r\n $('#MonthlyDepositCardholderNameFormRow').hide();\r\n $('#CardholderNameRow').hide();\r\n $('#today-payment-section').hide();\r\n return;\r\n }\r\n\r\n hideElementsWhen3DSecureIsDisplayedTimeout = setTimeout(function() {\r\n hideElementsWhen3DSecureIsDisplayed();\r\n }, 1000);\r\n }\r\n\r\n function setupHowToPayButtons() {\r\n setUseMonthlyInstalmentCard('false');\r\n\r\n $('#deposit-new-card').on('click',\r\n function() {\r\n $('#deposit-iframe-section').removeClass('hide');\r\n if ($('#PersonListData_SelectedPersonId').find(':selected').text() === 'Other') {\r\n validateElementAndToggleIframe($('#MonthlyDepositPaymentForm'));\r\n }\r\n });\r\n\r\n $('#deposit-instalment-card, #deposit-card-icons-instalment-card').on('click',\r\n function() {\r\n setUseMonthlyInstalmentCard('true');\r\n const actionUrl = $(this).data('action-url');\r\n bgl.common.utilities.redirectToUrl(actionUrl);\r\n });\r\n\r\n addCardTypeClassToCardBox();\r\n\r\n addCardTypeForCardIconsClassToCardBox();\r\n\r\n if (instalmentsPaidByDirectDebit()) {\r\n $('#today-payment-section, #deposit-new-card').addClass('hide');\r\n $('#deposit-iframe-section').removeClass('hide');\r\n }\r\n }\r\n\r\n function setUseMonthlyInstalmentCard(value) {\r\n sessionStorage.setItem('UseMonthlyInstalmentCard', value);\r\n }\r\n\r\n function addCardTypeClassToCardBox() {\r\n $('#deposit-instalment-card').addClass('payment-card--' + sessionStorage.getItem('MonthlyInstalmentCardType'));\r\n }\r\n\r\n function addCardTypeForCardIconsClassToCardBox() {\r\n $('#deposit-card-icons-instalment-card')\r\n .find('.payment-card__type')\r\n .addClass('payment-card-new--' + sessionStorage.getItem('MonthlyInstalmentCardType'));\r\n }\r\n\r\n function instalmentsPaidByDirectDebit() {\r\n return sessionStorage.getItem('MonthlyInstalmentPaymentType') === 'DirectDebit';\r\n }\r\n\r\n function getSecureSessionData() {\r\n return {\r\n 'Name': sessionStorage.getItem('MonthlyDepositSelectedPersonIdText'),\r\n 'CardCaptureUri': sessionStorage.getItem('MonthlyDepositCardCaptureUri'),\r\n 'SecureSessionId': sessionStorage.getItem('MonthlyDepositSecureSessionId'),\r\n 'SelectedPersonId': sessionStorage.getItem('MonthlyDepositSelectedPersonIdVal'),\r\n 'ThreeDSecureUri': sessionStorage.getItem('MonthlyDepositThreeDSecureUri'),\r\n };\r\n }\r\n\r\n function setVisibilityOfCardholderNameOther() {\r\n if ($('#PersonListData_SelectedPersonId').find(':selected').text() === 'Other') {\r\n $('#CardholderNameRow').removeClass('hide');\r\n $('#CardholderName').focus();\r\n }\r\n }\r\n\r\n function setCardInformation() {\r\n $('#card-info-date').text('Expires: ' + sessionStorage.getItem('MonthlyInstalmentCardExpiry'));\r\n $('#card-info-name').text(sessionStorage.getItem('MonthlyDepositSelectedPersonIdText'));\r\n }\r\n\r\n return {\r\n init: initComponent,\r\n load: loadComponent,\r\n };\r\n})();\r\n// eslint-disable-next-line no-var\r\nvar bgl = window.bgl || {};\r\nbgl.components = bgl.components || {};\r\nbgl.components.takepayment = bgl.components.takepayment || {};\r\n\r\nbgl.components.takepayment.singlepagepaymentcardcapturecompleted = (() => {\r\n function initComponent(redirectUrl) {\r\n if (redirectUrl.toLowerCase().includes('decline') || redirectUrl.toLowerCase().includes('unsuccessful')) {\r\n /* iframe stores monthly/annual sessions separately. Both are cleared in payment declined.\r\n CardDetailsAlreadyEntered must also be cleared for both */\r\n if (sessionStorage.getItem('CardDetailsAlreadyEnteredMonthly')) {\r\n sessionStorage.removeItem('CardDetailsAlreadyEnteredMonthly');\r\n }\r\n\r\n if (sessionStorage.getItem('CardDetailsAlreadyEnteredAnnual')) {\r\n sessionStorage.removeItem('CardDetailsAlreadyEnteredAnnual');\r\n }\r\n\r\n bgl.common.utilities.redirectToUrl(redirectUrl);\r\n } else {\r\n const paymentFrequency = document.getElementById('IsMonthlyPayment').value.toLowerCase() ==\r\n 'true' ? 'Monthly' : 'Annual';\r\n sessionStorage.setItem(`CardDetailsAlreadyEntered${paymentFrequency}`, true);\r\n\r\n const currentExpandingPanel = document.getElementById('TakePaymentExpandingPanelCardPayment');\r\n const nextExpandingPanel = document.getElementById('TakePaymentExpandingPanelLegal');\r\n const currentHeaderStep = document.getElementById('TakePaymentHeaderCardPayment');\r\n\r\n bgl.components.takepayment.singlepagepaymentsummary.completePaymentStepAndContinue(\r\n currentExpandingPanel,\r\n nextExpandingPanel,\r\n );\r\n\r\n bgl.components.takepayment.singlepagepaymentsummary.updateHeaderStep(currentHeaderStep);\r\n }\r\n }\r\n\r\n return {\r\n init: initComponent,\r\n };\r\n})();\r\n\r\nif (typeof module !== 'undefined') {\r\n module.exports = bgl.components.takepayment.singlepagepaymentsummary;\r\n}\r\n// eslint-disable-next-line no-var\r\nvar bgl = window.bgl || {};\r\nbgl.components = bgl.components || {};\r\nbgl.components.takepayment = bgl.components.takepayment || {};\r\n\r\nbgl.components.takepayment.singlepagepaymentannual = (() => {\r\n let componentConfiguration;\r\n let redirectInterval;\r\n let redirectTick = 0;\r\n let isPaymentSuccessful = false;\r\n let hideElementsWhen3DSecureIsDisplayedTimeout;\r\n\r\n function loadComponent(componentConfiguration, componentUrl, containerElementId, requestedEditCard) {\r\n componentConfiguration.CardSessionData = getSecureSessionData();\r\n\r\n bgl.common.loader.load(componentConfiguration,\r\n componentUrl,\r\n containerElementId,\r\n function() {\r\n initComponent(componentConfiguration, requestedEditCard);\r\n });\r\n }\r\n\r\n function initComponent(configuration, requestedEditCard = false) {\r\n componentConfiguration = configuration;\r\n\r\n if (sessionStorage.getItem('CardDetailsAlreadyEnteredAnnual') !== null &&\r\n sessionStorage.getItem('CardDetailsAlreadyEnteredAnnual').toLowerCase() == 'true' &&\r\n !requestedEditCard) {\r\n componentConfiguration.CardSessionData = getSecureSessionData();\r\n\r\n bgl.components.takepayment.readonlycarddetails.load(\r\n componentConfiguration,\r\n componentConfiguration.TenantConfiguration.ApplicationPath +\r\n 'TakePaymentComponentSinglePage/ReadOnlyCardDetails',\r\n 'TakePaymentExpandingPanelCardPaymentContent',\r\n );\r\n } else {\r\n bgl.common.datastore.setupReadAndWrite();\r\n\r\n loadIframe();\r\n\r\n setVisibilityOfCardholderNameOther();\r\n\r\n bgl.common.validator.enableMaxLength();\r\n\r\n $('#AnnualPaymentForm').off('submit').on('submit',\r\n function(e) {\r\n e.preventDefault();\r\n });\r\n\r\n bgl.common.validator.init($('#AnnualPaymentForm'),\r\n {\r\n onkeyup: function(element) {\r\n validateElementAndToggleIframe(element);\r\n },\r\n hasSubmit: false,\r\n });\r\n\r\n $('#Card-Capture-Iframe').on('load',\r\n function() {\r\n hideElementsWhen3DSecureIsDisplayed();\r\n });\r\n\r\n $('#PersonListData_SelectedPersonId').change(\r\n function() {\r\n if (isOtherSelected()) {\r\n $('#CardholderNameRow').removeClass('hide');\r\n $('#Card-Capture-Iframe').addClass('hide');\r\n sessionStorage.setItem('AnnualSelectedPersonIdText', '');\r\n $('#CardholderName').val('');\r\n $('#CardholderName').focus();\r\n } else {\r\n $('#CardholderNameRow').addClass('hide');\r\n $('#Card-Capture-Iframe').removeClass('hide');\r\n }\r\n\r\n initCardCapture();\r\n });\r\n\r\n if (isOtherSelected()) {\r\n validateElementAndToggleIframe($('#AnnualPaymentForm'));\r\n }\r\n }\r\n }\r\n\r\n function initCardCapture() {\r\n sessionStorage.removeItem('AnnualCardCaptureUri');\r\n sessionStorage.removeItem('AnnualSecureSessionId');\r\n sessionStorage.removeItem('AnnualThreeDSecureUri');\r\n\r\n if (hideElementsWhen3DSecureIsDisplayedTimeout) {\r\n clearTimeout(hideElementsWhen3DSecureIsDisplayedTimeout);\r\n }\r\n\r\n bgl.components.takepayment.cardcaptureiframe.clearIframe();\r\n\r\n componentConfiguration.CardSessionData = {'SelectedPersonId': $('#PersonListData_SelectedPersonId').val()};\r\n\r\n const dataToPost = {\r\n __RequestVerificationToken: $('input[name=\\'__RequestVerificationToken\\']').val(),\r\n configuration: componentConfiguration,\r\n };\r\n\r\n $.ajax({\r\n url: componentConfiguration.TenantConfiguration.ApplicationPath +\r\n 'TakePaymentComponentSinglePage/InitialiseAnnualCardCapture',\r\n type: 'POST',\r\n data: dataToPost,\r\n success: function(data) {\r\n sessionStorage.setItem('AnnualCardCaptureUri', data.cardCaptureUri);\r\n sessionStorage.setItem('AnnualSecureSessionId', data.secureSessionId);\r\n sessionStorage.setItem('AnnualThreeDSecureUri', data.threeDSecureUri);\r\n\r\n loadIframe();\r\n },\r\n });\r\n }\r\n\r\n function loadIframe() {\r\n const cardSessionData = getSecureSessionData();\r\n bgl.components.takepayment.cardcaptureiframe.loadIframe(\r\n 'Card-Capture-Iframe',\r\n cardSessionData.CardCaptureUri,\r\n cardSessionData.SecureSessionId,\r\n cardSessionData.ThreeDSecureUri);\r\n }\r\n\r\n function validateElementAndToggleIframe(element) {\r\n const valid = $(element).valid();\r\n if (valid === true) {\r\n $('#Card-Capture-Iframe').removeClass('hide');\r\n } else {\r\n $('#Card-Capture-Iframe').addClass('hide');\r\n }\r\n }\r\n\r\n function isOtherSelected() {\r\n return $('#PersonListData_SelectedPersonId').find(':selected').text() === 'Other';\r\n }\r\n\r\n function getSecureSessionData() {\r\n return {\r\n 'Name': sessionStorage.getItem('AnnualSelectedPersonIdText'),\r\n 'CardCaptureUri': sessionStorage.getItem('AnnualCardCaptureUri'),\r\n 'SecureSessionId': sessionStorage.getItem('AnnualSecureSessionId'),\r\n 'SelectedPersonId': sessionStorage.getItem('AnnualSelectedPersonIdVal'),\r\n 'ThreeDSecureUri': sessionStorage.getItem('AnnualThreeDSecureUri'),\r\n };\r\n }\r\n\r\n function setVisibilityOfCardholderNameOther() {\r\n if ($('#PersonListData_SelectedPersonId').find(':selected').text() === 'Other') {\r\n $('#CardholderNameRow').removeClass('hide');\r\n $('#CardholderName').focus();\r\n }\r\n }\r\n\r\n function hideElementsWhen3DSecureIsDisplayed() {\r\n if ($('#Card-Capture-Iframe').contents().find('#continue').length === 0) {\r\n $('#AnnualCardholderNameFormRow').hide();\r\n $('#CardholderNameRow').hide();\r\n return;\r\n }\r\n\r\n hideElementsWhen3DSecureIsDisplayedTimeout = setTimeout(function() {\r\n hideElementsWhen3DSecureIsDisplayed();\r\n }, 1000);\r\n }\r\n\r\n function checkAiComplete(componentConfig) {\r\n if (sessionStorage.getItem('AI_sentBuffer') === '[]' || redirectTick >= 25) {\r\n clearInterval(redirectInterval);\r\n if (isPaymentSuccessful) {\r\n bgl.common.utilities.redirectToUrl(componentConfig.PaymentSuccessfulUrl);\r\n } else {\r\n bgl.common.utilities.redirectToUrl(sessionStorage.getItem('PaymentProcessedRedirectUrl'));\r\n }\r\n }\r\n redirectTick += 1;\r\n }\r\n\r\n function commitPaymentAndBasket(commitMultiplePayment, componentConfig) {\r\n const postMethod = commitMultiplePayment ? 'CommitMultiplePaymentBasket' : 'CommitSinglePaymentBasket';\r\n\r\n const dataToPost = {\r\n __RequestVerificationToken: document.querySelector('input[name=\"__RequestVerificationToken\"]').value,\r\n commitData: commitMultiplePayment ?\r\n getCommitMultiplePaymentData(componentConfig) :\r\n getCommitCardData(componentConfig),\r\n };\r\n\r\n $('body').html(bgl.common.spinner.getSpinnerBody('Processing your payment!',\r\n 'Please do not hit the back button or refresh the page'));\r\n\r\n const urlPrefix = componentConfig.TenantConfiguration.ApplicationPath !== null ?\r\n componentConfig.TenantConfiguration.ApplicationPath :\r\n '/';\r\n\r\n $.ajax({\r\n url: urlPrefix + 'TakePaymentComponentSinglePage/' + postMethod,\r\n type: 'POST',\r\n cache: false,\r\n dataType: 'json',\r\n data: dataToPost,\r\n success: function(result) {\r\n if (result.isSuccess === false) {\r\n bgl.common.utilities.redirectToUrl(result.errorRedirectUrl);\r\n return;\r\n }\r\n if (result.PaymentSuccessful === true) {\r\n if (typeof bgl.common.pubsub !== 'undefined') {\r\n bgl.common.pubsub.emit('fakeFormSubmit', 'PaymentSuccessful');\r\n }\r\n dataLayerPushPaymentSuccessful();\r\n bgl.common.telemetry.logEvent(\r\n 'PaymentSuccessful',\r\n {'PolicyId': result.PolicyId});\r\n isPaymentSuccessful = true;\r\n\r\n if (result.PolicyId) {\r\n const stringValue = result.PolicyId + '';\r\n let length = stringValue.indexOf('-');\r\n length = length > 0 ? length : stringValue.length;\r\n sessionStorage.setItem('PaymentProcessedPolicyId', stringValue.substring(0, length));\r\n sessionStorage.setItem('Authorization', result.Authorization);\r\n }\r\n }\r\n sessionStorage.setItem('PaymentProcessedRedirectUrl', result.RedirectUrl);\r\n },\r\n complete: function() {\r\n redirectInterval = setInterval(checkAiComplete, 200, componentConfig);\r\n },\r\n });\r\n }\r\n\r\n function getCommitMultiplePaymentData(componentConfig) {\r\n const model = {};\r\n model.TodaysPaymentCard = getTodaysPaymentCardData();\r\n model.ContinuousPaymentCard = getContinuousPaymentCardData();\r\n model.ContinuousPaymentDirectDebit = getDirectDebitData();\r\n model.PaymentType = sessionStorage.getItem('ContinuousPaymentPaymentType');\r\n model.PaymentDeclinedUrl = componentConfig.PaymentDeclinedUrl;\r\n model.ComponentConfiguration = componentConfig;\r\n return model;\r\n }\r\n\r\n function getCommitCardData(componentConfig) {\r\n const model = {};\r\n model.TodaysPaymentCard = getTodaysPaymentCardData();\r\n model.PaymentDeclinedUrl = componentConfig.PaymentDeclinedUrl;\r\n model.ComponentConfiguration = componentConfig;\r\n return model;\r\n }\r\n\r\n function getTodaysPaymentCardData() {\r\n const model = {};\r\n model.SelectedPersonIdText = sessionStorage.getItem('AnnualSelectedPersonIdText');\r\n model.CardCaptureUri = sessionStorage.getItem('AnnualCardCaptureUri');\r\n model.SecureSessionId = sessionStorage.getItem('AnnualSecureSessionId');\r\n model.SelectedPersonIdVal = sessionStorage.getItem('AnnualSelectedPersonIdVal');\r\n return model;\r\n }\r\n\r\n function dataLayerPushPaymentSuccessful() {\r\n if (typeof dataLayer !== 'undefined') {\r\n dataLayer.push({\r\n 'event': 'TEVirtualPageview',\r\n 'virtualPageURL': 'Payment/Successful',\r\n 'virtualPageTitle': 'Payment Successful',\r\n });\r\n }\r\n }\r\n\r\n function getContinuousPaymentCardData() {\r\n const model = {};\r\n model.SelectedPersonIdText = sessionStorage.getItem('ContinuousPaymentCardSelectedPersonIdText');\r\n model.CardCaptureUri = sessionStorage.getItem('ContinuousPaymentCardCaptureUri');\r\n model.SecureSessionId = sessionStorage.getItem('ContinuousPaymentCardSecureSessionId');\r\n model.SelectedPersonIdVal = sessionStorage.getItem('ContinuousPaymentCardSelectedPersonIdVal');\r\n return model;\r\n }\r\n\r\n function getDirectDebitData() {\r\n const model = {};\r\n model.SelectedPersonIdText = sessionStorage.getItem('ContinuousPaymentDirectDebitSelectedPersonIdText');\r\n model.SelectedPersonIdVal = sessionStorage.getItem('ContinuousPaymentDirectDebitSelectedPersonIdVal');\r\n model.AccountNumber = sessionStorage.getItem('ContinuousPaymentDirectDebitAccountNumber');\r\n model.SortCode = buildSortCode();\r\n return model;\r\n }\r\n\r\n function buildSortCode() {\r\n if (sessionStorage.getItem('ContinuousPaymentDirectDebitSortCodePart1') !== null &&\r\n sessionStorage.getItem('ContinuousPaymentDirectDebitSortCodePart2') !== null &&\r\n sessionStorage.getItem('ContinuousPaymentDirectDebitSortCodePart3') !== null) {\r\n return sessionStorage.getItem('ContinuousPaymentDirectDebitSortCodePart1') +\r\n sessionStorage.getItem('ContinuousPaymentDirectDebitSortCodePart2') +\r\n sessionStorage.getItem('ContinuousPaymentDirectDebitSortCodePart3');\r\n }\r\n\r\n return null;\r\n }\r\n\r\n return {\r\n init: initComponent,\r\n load: loadComponent,\r\n commitPaymentAndBasket: commitPaymentAndBasket,\r\n };\r\n})();\r\n// eslint-disable-next-line no-var\r\nvar bgl = window.bgl || {};\r\nbgl.components = bgl.components || {};\r\nbgl.components.takepayment = bgl.components.takepayment || {};\r\n\r\nbgl.components.takepayment.readonlycarddetails = (() => {\r\n function loadComponent(componentConfiguration, componentUrl, containerElementId) {\r\n componentConfiguration.CardSessionData = getSecureSessionData();\r\n\r\n bgl.common.loader.load(componentConfiguration,\r\n componentUrl,\r\n containerElementId,\r\n function() {\r\n initComponent(componentConfiguration);\r\n });\r\n }\r\n\r\n function initComponent(componentConfiguration) {\r\n document.getElementById('EditCardDetailsLink').addEventListener('click', (event) => {\r\n event.preventDefault();\r\n\r\n if (document.getElementById('IsMonthlyPayment').value.toLowerCase() == 'true') {\r\n bgl.components.takepayment.singlepagepaymentmonthlydeposit.load(\r\n componentConfiguration,\r\n componentConfiguration.TenantConfiguration.ApplicationPath +\r\n 'TakePaymentComponentSinglePage/CardCapture',\r\n 'TakePaymentExpandingPanelCardPaymentContent',\r\n true,\r\n );\r\n } else {\r\n bgl.components.takepayment.singlepagepaymentannual.load(\r\n componentConfiguration,\r\n componentConfiguration.TenantConfiguration.ApplicationPath +\r\n 'TakePaymentComponentSinglePage/CardCapture',\r\n 'TakePaymentExpandingPanelCardPaymentContent',\r\n true,\r\n );\r\n }\r\n });\r\n\r\n document.getElementById('ConfirmCardDetailsButton').addEventListener('click', (e) => {\r\n e.preventDefault();\r\n const currentExpandingPanel = document.getElementById('TakePaymentExpandingPanelCardPayment');\r\n const nextExpandingPanel = document.getElementById('TakePaymentExpandingPanelLegal');\r\n const currentHeaderStep = document.getElementById('TakePaymentHeaderCardPayment');\r\n\r\n bgl.components.takepayment.singlepagepaymentsummary.completePaymentStepAndContinue(\r\n currentExpandingPanel,\r\n nextExpandingPanel,\r\n );\r\n\r\n bgl.components.takepayment.singlepagepaymentsummary.updateHeaderStep(\r\n currentHeaderStep,\r\n );\r\n });\r\n }\r\n\r\n function getSecureSessionData() {\r\n if (document.getElementById('IsMonthlyPayment').value.toLowerCase() == 'true') {\r\n if (sessionStorage.getItem('UseMonthlyInstalmentCard') !== null &&\r\n sessionStorage.getItem('UseMonthlyInstalmentCard').toLowerCase() == 'true') {\r\n return {\r\n 'Name': sessionStorage.getItem('MonthlyInstalmentCardSelectedPersonIdText'),\r\n 'SecureSessionId': sessionStorage.getItem('MonthlyInstalmentSecureSessionId'),\r\n };\r\n }\r\n return {\r\n 'Name': sessionStorage.getItem('MonthlyDepositSelectedPersonIdText'),\r\n 'CardCaptureUri': sessionStorage.getItem('MonthlyDepositCardCaptureUri'),\r\n 'SecureSessionId': sessionStorage.getItem('MonthlyDepositSecureSessionId'),\r\n };\r\n } else {\r\n return {\r\n 'Name': sessionStorage.getItem('AnnualSelectedPersonIdText'),\r\n 'CardCaptureUri': sessionStorage.getItem('AnnualCardCaptureUri'),\r\n 'SecureSessionId': sessionStorage.getItem('AnnualSecureSessionId'),\r\n 'SelectedPersonId': sessionStorage.getItem('AnnualSelectedPersonIdVal'),\r\n 'ThreeDSecureUri': sessionStorage.getItem('AnnualThreeDSecureUri'),\r\n };\r\n }\r\n }\r\n\r\n return {\r\n init: initComponent,\r\n load: loadComponent,\r\n };\r\n})();\r\n"],"names":["_slicedToArray","arr","i","_arrayWithHoles","_iterableToArrayLimit","_unsupportedIterableToArray","_nonIterableRest","TypeError","r","l","t","Symbol","iterator","e","n","u","a","f","o","call","next","Object","done","push","value","length","Array","isArray","_createForOfIteratorHelper","allowArrayLike","it","F","s","_e","err","normalCompletion","didErr","step","_e2","_regeneratorRuntime","bgl","window","uil","tabs","buttons","content","clickTab","event","forEach","button","setAttribute","currentTarget","contentItem","hasAttribute","classList","add","currentTargetId","concat","getAttribute","selectedContent","document","getElementById","remove","init","element","_toConsumableArray","querySelectorAll","addEventListener","table","checkboxes","isAnnual","isAnyCheckboxChecked","buildYourOwnAnnual","buildYourOwnDeposit","buildYourOwnInstalment","buildYourOwnTotalPayable","deselectAll","activeCol","activeButton","querySelector","activeBuildYourOwn","checkbox","checked","checkboxId","id","checkLabel","sessionStorage","getItem","removeFromSessionStorage","setItem","innerText","activeButtonIcon","activeButtonText","removeAttribute","removeActiveButton","removeActiveCol","setDefaultBuildYourOwnPricingHeaderContent","column","selectTier","dataTier","tagName","toLowerCase","listOfAddons","JSON","parse","index","indexOf","splice","stringify","updateBuildYourOwnTotalsContent","numberOfInstalments","toFixed","includedAsStandardTier","contains","includes","isThisInBuildYourOwn","setSessionStorageList","parseFloat","isCheckboxChecked","annualAmount","filter","datepicker","checkValidity","carousel","navIsClicked","activeElement","removeActive","navItems","carouselNavItems","item","preventDefault","controlId","tierCard","navItem","scrollTo","offsetLeft","setTimeout","carouselNav","scrollLeft","itemWidth","offsetWidth","checkSwipe","activeTierCard","displayActiveTierInViewport","basetabs","idName","getButtonsAndContent","accordion","clickAccordion","isAriaExpanded","closest","contents","collapseAllAccordionContent","toggle","elementId","trigger","policyoverviewlink","policyOverviewLink","common","utilities","redirectToUrl","introtour","steps","storageKey","tourDriver","localStorage","stepsInvite","handleResize","func","wait","_this","timeout","this","clearTimeout","apply","debounce","isActive","stepsConfiguration","getVisibleSteps","setConfig","refresh","popoverClass","showProgress","progressText","showButtons","nextBtnText","prevBtnText","doneBtnText","onHighlighted","options","onCloseClick","destroy","onDestroyStarted","setupTourLinkClickEvents","helpLink","click","launchTour","drive","activeStep","state","activeIndex","total","config","active","progressBarId","progressBar","footer","progress","createElement","prepend","getProgessBar","style","width","updateProgressBar","innerHTML","startAgainLink","changeProgressLink","stepsAll","selector","getComputedStyle","offsetParent","position","display","visibility","isElementVisible","popover","title","description","side","align","resourceBasePath","introTourDriver","welcomeMessage","key","animate","overlayColor","overlayOpacity","stagePadding","stageRadius","allowClose","showMeAroundButton","exploreMyselfButton","initiallySelectedRadioButton","confirmDialogue","handleRadioButtonClick","hiddensubmit","target","fieldset","radioButton","events","BglDateFormat","pubsub","on","eventName","fn","off","emit","data","clear","getEventCount","loader","makeAjaxCall","$","ajax","url","componentUrl","type","contentType","componentConfiguration","success","textStatus","request","getResponseHeader","isSuccess","redirectUrl","beforePageRedirectCallback","errorRedirect","errorRedirectUrl","htmlChangingFunction","containerElementId","callback","error","console","log","load","html","subCall","sliderGTMPageURL","sliderGTMPageTitle","CurrentStep","currentStep","EditActionKey","dataLayer","location","pathname","replace","split","pop","virtualPageURL","virtualPageTitle","logToGA","loadAndReplace","replaceWith","modal","show","el","backdrop","addClass","attr","body","className","appendTo","hide","stopPropagation","removeClass","popupConfiguration","invoke","$relatedTarget","$popupContainer","requestData","loadModalContent","find","validator","errorClass","hasSubmit","enterKeyCode","escKeyCode","tabKeyCode","backspaceKeyCode","deleteKeyCode","endKeyCode","downArrowKeyCode","numpadZeroKeyCode","numpadNineKeyCode","zeroKeyCode","nineKeyCode","letterAInLowerKeyCode","initFormValidator","form","optionsParameters","extend","setupCustomValidationRules","unobtrusive","validate","settings","onsubmit","onkeyup","onfocusout","onfocusin","onclick","focusInvalid","cleanUp","highlight","highlightElement","unhighlight","unhighlighElement","ignore","undefined","setRequireAtLeastOneOfGroupValidation","setValidationOfDateToFormat","setRequiredIfValidation","validateForm","configuration","isValidForm","isFormValid","submitComponentForm","getFormValidator","valid","scrollToTheFirstInvalidInput","getValidationMessages","hasClass","form_section","getFormSectionName","error_details","each","errorDetail","error_field","error_message","text","formRow","parents","enableMaxLength","maxLength","parentRow","cleanAriaDescribedbyAttribute","currentAriaDescribedBy","newAriaDescribedBy","elementID","trim","join","removeAttr","requestBodyData","dataToPost","serialize","param","ComponentConfiguration","onSuccess","onError","responseText","callFormEvent","$error","$component","Id","$invalidForm","invalidInputs","inputName","message","htmlMessage","parseHTML","showErrors","onEventName","eval","addRequireAtLeastOneOfGroupMethod","params","controlType","prop","val","addMethod","adapters","rules","number","messages","addRequiredIfValidationMethod","parameters","targetValue","toString","control","actualValue","methods","required","dependentproperty","targetvalue","validateDateFormat","regex","separator","RegExp","test","adata","day","parseInt","month","year","xdata","Date","getFullYear","getMonth","getDate","initAutocompleteSearchInputs","autocompleteSearchInputs","input","validateAutocompleteSearchInputs","resetValidationState","hiddenItemInputId","headerHeight","invalidInput","first","header","inputTopPosition","offset","top","slidePanelId","contentpanel","getSlidePanelId","getSlidePanelContentId","height","css","scrollTop","invalidInputElem","focus","initNumberInputField","component","isZeroAvailable","inArray","keyCode","ctrlKey","metaKey","shiftKey","substring","validatePage","buttonId","components","submitForm","globalIdentifier","funcName","funcParams","object","len","setIdentifier","indentifier","startUnderwritingPolling","getWindowLocation","getUrlHashValue","hash","setUrlHashValue","href","refreshPage","reload","toBase64","str","btoa","unescape","encodeURIComponent","fromBase64","decodeURIComponent","escape","atob","getUrlQueryString","parameterName","results","exec","search","cookie","setCookie","name","expires","d","setTime","getTime","toUTCString","updatedCookie","propName","propValue","deleteCookieByNameAndPath","path","getCookie","matches","match","deleteCookie","setCookieAsync","cookieKey","cookieValue","updateCookieUrl","onFailure","getUrlForCookieAsync","slides","changeSlide","direction","slidesCount","activeSlideNumber","tab","slide","merge","opt","ctrls","basePath","append","createCarouselBlock","start","originalEvent","touches","pageX","distance","end","one","spinner","getSpinnerBody","titleText","bodyText","accordions","$accordionButtons","getAccordionBody","$element","accordionClickHandler","$accordionButton","$accordionBody","isExpanded","isAccordionExpanded","isVisible","subscribeForEvents","slidePanelElement","slidePanelContentObserver","MutationObserver","setFocus","removeItem","confirmation","showBackdrop","slidePanelContent","observe","childList","subtree","empty","disconnect","focusHolder","setFocusToElementById","autoFocusElement","hideSlidePanel","getFirstTabbableElement","getLastTabbableElement","last","openPanelByAction","linkId","containerId","ready","setFocusedElementId","which","firstTabbable","lastTabbable","houstonButton","is","focusIsWithinLastRadioGroup","openPanelByClick","link","loadAndDisplaySidePanel","autocompletesearch","autocompleteMinLength","TAB_KEYCODE","ENTER_KEYCODE","ARROW_UP_KEYCODE","ARROW_DOWN_KEYCODE","activeClass","parent","inputKeyUpHandler","code","charCode","selectedItem","autocomplete","selectOption","hiddenFieldForItemId","getHiddenFieldForItemId","label","symbolsCountToTriggerSearch","inputs","inputId","parentElement","span","role","prepareDOM","minLength","source","response","enteredData","map","searchOptionItems","Value","Key","makeAjaxRequest","ui","activeItem","menu","highlightActiveElement","select","_renderItem","ul","overrideItemsDrawing","datastore","dataStoreAttributeName","dropdownTextSuffix","dropdownValueSuffix","setupRead","$dropdown","dataStoreVal","dataStoreItem","readDataStoreValue","isRadioButton","isDatePicker","focusout","defaultValue","writeDataStoreValue","writeDataStoreDropDownValue","setupWrite","change","suffix","elementValue","journeyKey","getJourneyKey","keyOfValue","journeyData","textKey","valueKey","dropdownText","dropdownValue","getFormKey","_typeof","getModelFromSessionStorage","buildJson","isDirty","hasOwnProperty","isFormDirty","expandDataWithHiddenFields","formData","not","resetDirtyFlag","setupReadAndWrite","needToResetDirtyFlag","mergeFormsByKey","collectedData","subscribeForChange","removeSessionStorage","jQuery","String","isDataChanged","sessionStorageData","formHiddenData","isHiddenFieldsChanged","extendCollectedData","deleteFields","fieldNameList","getData","overlay","overlayId","getOverlay","showSpinner","overlayHTML","arguments","focusKey","removeFocused","setFocusedElement","focusedElement","setFocusToElement","focusOveride","lastFocusedOn","tabulation","keydown","elem","headerTop","elemTop","isElementUnderHeader","scrollY","helptext","toggleClass","fadeToggle","date","formattedDate","prototype","removeAllCharactersApartFromDigitsAndForwardSlashes","addFowardSlashBetweenDayAndMonth","appendSingleDigitDayWithZero","appendSingleDigitMonthWithZero","addForwardSlashBetweenMonthAndYear","preventMoreThanFourYearDigits","generateFormattedDate","initDateFormat","$input","customselect","openOptions","container","selected","getSelectedItem","getItems","closeOptions","toggleOptions","navigate","closeCallback","listItems","siblings","addBack","itemIndex","moveToNextItem","moveToPrevItem","focusableElements","focusNextElement","selectItem","getButton","getContainer","isOpen","selectTab","navTabs","leftArrow","rightArrow","tabContainer","selectedTab","selectedTabContent","tabButtons","tabContent","stopImmediatePropagation","scrollIntoView","behavior","block","inline","tabItems","tabItem","keyboardAccessibility","generateClickOnKeypress","forAttr","timeoutCounter","timer","minutesBeforeSessionExpires","sessionTimeoutRedirectUrl","fullKeepAlivePath","modalPopup","sessionDuration","hiddenAttribute","oneMinute","keepAlivePath","setupVariables","popup","applicationPath","sessionTimeoutRedirect","timeoutDurationMins","setupButtonClick","extendSession","decrementCountdown","clearInterval","telemetry","logTrace","startCountdown","setInterval","fetch","then","headers","scrollLimit","tooltip","tooltips","formPost","action","configureBaseOptions","Error","method","configureFormPostOptions","exception","Promise","resolve","reject","Response","status","statusText","logEvent","customData","appInsights","trackEvent","properties","flush","severityLevel","trackTrace","logException","trackException","welcomequotepaymentoptions","welcomeQuoteSchedule","selectPaymentOption","dataset","paySchedule","x","radio","module","exports","virtualassistant","notificationTimeout","autoCleared","defaultNotificationSettings","autoClose","initComponent","_JSON$parse","showNotification","getFormattedNotification","ContactDataUrl","ContactInformationUrl","refreshContext","clearSession","setUpWebchat","setUpVirtualAssistant","token","__RequestVerificationToken","contextData","getContextData","VaContext","ApplicationPath","showEnhancedNotification","showNotificationFromLocalStore","twilioSessionToken","flex","session","tokenPayload","today","expiration","isTokenValid","isWebchatOpen","showVaCloseButton","resetFocus","externalInvocationElements","from","addVirtualAssistantEventListener","showVaOpenButton","IsWebChatEnabled","webchatContext","invocationPoint","_twilioWebchat","toggleChatVisibility","get","showFormattedNotification","stopNotificationTimeout","handleButtonClick","_setUpWebchat","_asyncToGenerator","mark","_callee","wrap","_context","prev","stop","_x","_x2","_handleButtonClick","_callee2","isWebChat","_window$_twilioWebcha","_callee2$","_context2","sendEscalationMessage","t0","finish","notificationContext","IsMonthly","monthly","annual","context","notificationMessage","msg","contextDataReplacer","replacement","NotificationContext","Price","toTitleCase","FirstName","Email","Underwriter","Deposit","createContextDataReplacer","replaceAll","showNotificationTimeout","notificationSettings","notificationButtonIsFocused","displayEnhancedNotification","shownMessageContainerId","hiddenMessageContainerId","enhancedMessageHtml","splitName","titleCaseName","charAt","toUpperCase","substr","ex","notification","vehicledetails","vehiclebodytype","doneButton","radioButtons","loadComponent","model","subscribeToDoneEvents","subscribeToRadioButtonEvents","subscribeToBackButtonEvents","hasValue","submit","JourneyType","journeyTypesVehicleDetails","MultiStepEdit","containerSelector","journeyType","LookupEdit","numberofseats","hasChanges","subscribeToEvents","vehicleDetails","changesInSessionStorage","currentVehicleChanges","getPreviouslyStoredChangedVehicleData","VehicleValue","getCurrentVehicleChanges","setPreviouslyStoredChangedVehicleData","purchasedate","subscribe","SingleEdit","lookup","postVehicle","slidePanelContentKey","journeyTypes","searching","inputField","selectionStart","selectionEnd","setSelectionRange","vehicleObj","vehicleId","VehicleId","stepbuilder","summary","searchingResult","resetSearchedData","DataStoreKey","componentContent","needToResetSearchedData","foundData","dataStoreKey","Registration","Year","deleteFieldsFromModel","RegistrationNumber","SecurityDeviceCode","HasRightHandDrive","HasTrackingDevice","searchingCriteria","keys","commonInit","saveVehicleLookupJourney","assumedDataSection","assumedDataSummarySection","linkButton","vehicleObject","modifications","Modifications","Model","Manufacturer","VehicleType","IsService","importantinformation","needToRefreshPage","stepType","dataContainerQuoteType","vehicleConfirmationQuoteType","vehicleDataContainer","vehicleBuilderValues","isBackButtonClicked","quoteType","subscribeDropdownOnChange","dropdown","confirmButton","changeStep","editButton","StepOptionItem","isBreadcrumbLinkClicked","onInit","removeData","ComponentUrl","legendText","children","HasValue","purchaseDateDropdowns","hasPreselectedValues","monthDropdown","yearDropdown","fullYearMonthOptions","currentYearMonthOptions","HIDE_CLASS","showSubmitButton","updateMonthDropdown","months","selectedMonthValue","currentYear","initializeVariables","singleEdit","storeVehicleChangesForTagManager","getVehicleAge","Age","registration","mtaSuffix","mta_type","backUrl","currentMonth","slice","IsVehiclePurchased","nextStepUrl","overnightparking","NextStepUrl","isChecked","modificationCheckButton","isChanged","deleteModificationButtons","unSubscribeToEventDismissVehicleModificationsPanel","getModificationButtonCheckedState","listContainer","loadAddModification","continueButton","subscribeToEventShowModification","removeAllButton","noButton","clickHandler","isModified","isNoButtonChecked","subscribeToEventRemoveAllModifications","modificationCode","modificationTypeCode","modification","SelectedModificationCode","SelectedModificationTypeCode","generateInputModel","patchUrl","modificationId","productType","subscribeToEventDismissVehicleModificationsPanel","initializeLookupEdit","dismissSlidePanelHandler","flag","list","vehicleDetailsKeys","vehicleModifications","currentContainerId","addmodification","componentModel","componentId","loadModificationTypeView","loadModificationView","backButton","saveButton","breadcrumbButtons","modificationButtons","getElementsByTagName","checkedButton","SelectedModificationTypeDescription","hasDuplicate","mod","SelectedModificationCodeDescription","globalContainerId","loadVehicleContent","requiredField","PurchasedDateUrl","NumberOfSeatsUrl","VehicleBodyTypeUrl","ModificationsUrl","EditValueUrl","SearchSummaryUrl","storeKey","initPage","pageContainerId","HasChanges","post","hasRegistrationNumber","VehicleRegistrationNumber","isInitialChange","IsInitialChange","getParams","overnightParking","dateOfPurchase","assumedData","vehicleSpecification","registrationNumber","vanBodyType","numberOfSeats","vehicleValue","yesButton","section","keyup","actionUrl","LoadEditAsARedirect","editActionKey","vehicleType","editassumeddata","registrationnumber","loadComponentByActionKey","triggerKey","vehicleOvernightParking","getSelectedOvernightParkingValue","checkedRadioButtonId","currentData","dataForValidate","IsRegistrationNumberChange","registrationnumberinformation","mtaChange","immobilizer","trackingDevice","rightHandDrive","getImmobilizerValue","getTrackingDeviceCheckedState","getRightHandDriveCheckedState","thirdpartymarketingpreferences","thirdpartyupdatepolicy","componentEndpoint","TenantConfiguration","thirdpartyupdate","initialSelection","validationTriggered","questions","showValidation","isRadioButtonChecked","removeClassFromElementIfItExists","addClassToElementIfItExists","elementSelector","radioButtonSelector","getMarketingPreferencesConsent","Post","getConsent","Sms","DeviceMessaging","Telephone","marketingPreference","SPACE_KEYCODE","generateClickOnKeyPressForLabels","preferencesToSubmit","dataHasChanged","areAllQuestionsAnswered","methodPath","nextPageUrl","MarketingPreferences","BrandCode","buildDataToPost","dataType","complete","submitPreferences","listItemsInErrorState","offsetHeight","currentYPosition","scroll","scrollToListItemWithError","onNextClick","allLabels","elementFor","termsandconds","legalmodal","isRead","modalContent","dismissOrShowError","modalFooter","errorText","fadeOut","accordionButton","accordionContent","closeButton","heightOfTheScrollingContent","heightOfTheElementContainingScrollingContent","amountToScroll","amountCurrentlyScrolled","scrollHeight","innerHeight","scrollEventBindings","takepayment","updatepaymentmethodcomplete","slidePanelContainer","dataActionUrl","LayoutOption","addpaymentmethodconfirmation","paymentmethods","RedirectUrl","PaymentMethodAllDoneUrl","paymentstatus","refundsummary","componentConfig","cancellationConfirmationCheckbox","urlPrefix","cache","result","commitRefund","cancellations","policycreationpending","policyNumber","signOutData","RequestVerificationToken","policychangedate","UpdatePaymentDateState","dismissElement","dismissElements","toOrdinalString","intMonth","initSlidePanel","datePicker","minDate","earliestDate","maxDate","latestDate","defaultDate","selectedDate","selectOtherMonths","dateFormat","showOtherMonths","onChangeMonthYear","inst","onSelect","nominatedDate","nominatedDateField","textContent","disabled","selectedDay","backElement","backElements","$form","paymenttransactions","parentNode","paymentsummarywithpurchaseinformation","paymentType","switchForm","monthlyAnnualRadioButtons","preventFormSubmission","setPaymentTypeWhenPaymentTypeChanges","postPaymentTypeWhenPaymentTypeChanges","documentloader","setupPaymentSummaryForm","isMonthly","switchCostBreakdownContent","switchPolicyFeaturesContent","paymentsummarycondensed","hasEdittedFieldsOnAdditionalDetails","monthlyinstalment","addMicroCopy","insertAdjacentHTML","getElementsByClassName","trustpilotWidget","Trustpilot","loadFromElement","_unused","_submitForm","_callee4","paymentSwitchLinkId","_context4","paymentSwitchId","URLSearchParams","abrupt","_ref","_callee3","responseBody","_callee3$","_context3","json","sent","ok","responseCode","_x3","responseError","responseStatusText","dataPosted","errorThrown","responseData","paymentsummary","HasEdittedFieldsOnAdditionalDetails","paymentsuccessful","requestVerificationToken","poll","interval","pollUrl","policyId","authorization","PolicyId","Authorization","manageSessionData","PolicyCreated","Status","emitManageSessionStorageOnPaymentSuccessful","PolicyCreationPendingUrl","ErrorRedirectUrl","emitGTMUpdate","timeoutDuration","waitForPolicyToBeCreated","newPaymentMethodType","nominatedAccountId","viewOptions","PaymentStatusUrl","commitAndUpdatePaymentMethod","paymentemail","paymentdetailsdisplay","paymentdeclined","oneoffpaymentsummary","payNowButton","commitData","CommitCardData","SecureSessionId","SelectedPersonIdVal","SelectedPersonIdText","commitOneOffPayment","CardSessionData","Name","CardCaptureUri","oneoffpaymentalldone","oneoffpayment","hideElementsWhen3DSecureIsDisplayedTimeout","loadIframe","validateElementAndToggleIframe","hideElementsWhen3DSecureIsDisplayed","cardcaptureiframe","clearIframe","SelectedPersonId","cardCaptureUri","secureSessionId","threeDSecureUri","initCardCapture","cardSessionData","getSecureSessionData","ThreeDSecureUri","mtatakepayment","takePaymentForm","additionalDetailsForm","agreementCheckboxTicked","monthDropdownHtml","regField","option","outerHTML","agreementCheckbox","preventScroll","PaymentAllDoneUrl","PaymentDeclinedUrl","onAdditionalDetailsSuccess","hideNotification","onAdditionalDetailsError","mtaquote","monthlyinstalmentsummary","CreditInformationUrl","container1","container2","sortCodeKeyUpEvent","checkSortcodeValidation","isValid","removeAccountErrorStyle","checkAccountNumberValidation","saveDataToSessionStorageCallBack","formIsValid","saveDataToSessionStorage","sortCode","accountNumber","Result","removeSortCodeErrorStyle","addAccountErrorStyle","addSortCodeErrorStyle","scrollToFirstFieldWithErrorAndFocus","bankAccountNumberEn","sortCodeEn","BankAccountAndSortCodeModel","encryptData","populateBankAccountDetails","accessible","ViewOptions","MonthlyInstalment","selectList","selectCreditCardList","postChangePaymentDateToApi","_doKeyDown","_hideDatepicker","appendOffscreenMonthText","handleNextClicks","handlePrevClicks","monthDayYearText","keyVent","dateCurrent","getCurrentDate","setHighlightState","closeCalendar","positionDateCursorToFirstSelectableDate","dateLink","td","prevTd","prevDateLink","currentRow","previousRow","prevRowDates","prevRowDate","prevLink","trs","lastRowTdLinks","lastDate","updateHeaderElements","previousMonth","handlePrevious","previousDay","nextTd","nextDateLink","nextRow","nextRowFirstDate","nextMon","firstDate","nextMonth","handleNext","nextDay","cont","rowContext","rowTds","rowLinks","targetIndex","prevRow","parallel","linkCheck","newRows","lastRow","lastRowTds","tdParallelIndex","newParallel","newCheck","secondLastRow","targetTd","upHandler","nextLink","targetRow","targetCells","cellIndex","nextWeekTd","nextWeekCheck","nextMonthTrs","firstParallel","firstCheck","secondRow","secondRowTd","secondCheck","downHandler","moveOneMonth","firstOfMonth","$daysOfMonth","lastDay","datePickHandler","dayNamesShort","beforeShow","dpDiv","initCommon","waitForSlidePanelToLoad","directDebitDetails","addError","sortcodeValiationElement","sortcodeApiValidationElement","field","firstRequiredField","timeoutId","allSortCodeInputsValid","removeApiValidationErrorMessage","cleanAriaDescribedBy","removeIndividualSortCodeErrorStyle","addIndividualSortCodeErrorStyle","validateIndividualSortCodeInput","rowStart","columnStart","foundColumnStart","cursorStart","rowIndex","$tds","isNumeric","currentSortCodePart","nextSortCodePart","MonthlyDepositUrl","currentDate","dir","ENABLED_SELECTOR","$currentCells","currentIdx","$newCells","newTd","newAnchor","prepHighlightState","cleanUps","clean","removeChild","datePickDiv","dates","currentTds","currentIndex","dayIndex","daySpan","monthName","dateText","cage","newHighlight","prevHighlight","isNext","monthIndex","adjacentIndex","buttonText","firstToCap","monthlydepositsummary","redirectInterval","redirectTick","maxRedirectWait","isPaymentSuccessful","prevAll","getCommitCardData","PaymentSuccessful","stringValue","checkAiComplete","commitInstalmentAndDepositPaymentsAndBasket","PaymentSuccessfulUrl","RedirectUrlAfterFailedPayment","directDebitNumber","directDebitCode","TodaysPaymentCard","getDepositCardData","ContinuousPaymentCard","getInstalmentCardData","ContinuousPaymentDirectDebit","getInstalmentDirectDebitData","PaymentType","UseContinuousPaymentCardForTodaysPayment","DirectDebitNumber","DirectDebitCode","monthlydeposit","setUseMonthlyInstalmentCard","mergedpaymentsummary","paymentContentUrl","creditagreementacceptanceservice","iframeName","iframe","onload","onerror","MTACancelUrl","authenticationsignout","navigateTo","nextPage","timeoutTime","theTimeRightNow","hasTimeoutOccured","tagProcessingDone","signOutUrl","twoSeconds","annualsummary","isSecondPaymentMethodRequired","commitPaymentAndBasket","continuousPaymentPaymentType","directDebitIsSelectedAndValid","getTodaysPaymentSessionData","ContinuousPaymentCardSessionData","getContinuousPaymentCardSecureSessionData","commitMultiplePayment","postMethod","getCommitMultiplePaymentData","getTodaysPaymentCardData","getContinuousPaymentCardData","AccountNumber","SortCode","buildSortCode","getDirectDebitData","continuousPaymentCardEdit","ContinuousPaymentCardEdit","isOtherSelected","alldone","policyFieldId","accountHolderName","visibleAccountNumber","cardHolderName","addDirectDebitViewModel","getCommitDirectDebitData","cleanUpSessionStorage","logPaymentMethodChange","commitBasketCallback","accountId","commitCreditCardViewModel","getCommitCreditCardData","newPaymentMethod","commitDirectDebitData","CommitDirectDebitData","addpaymentmethod","getInvalidAccountNumberOrSortCodeMessages","PaymentMethodCancelUrl","sortcodeValidationElement","accountNumberValidationElement","sortCodeApiValidationElement","digitalData","page_data","user_data","journey_data","application_data","insurance_data","my_account","policy_data","policy_change","policy_cancellation_questions","tagmanager","logFormSubmission","formLoadTime","detail","form_title","form_page","page_title","page_url","time_to_complete","calculateTimeTaken","dispatchEvent","CustomEvent","setChangedVehicleDataItems","changedItemArray","vehicle_details","vehicle_make","vehicle_model","vehicle_age","vehicle_overnight_parking","vehicle_value","checkForStartedTimeAndUpdateDigitalData","application_started","checkForQuoteSavedAndUpdateDigitalData","application_saved","checkForQuoteRetrievedAndUpdateDigitalData","retrieved_quote","checkForPaymentSuccessfulAndUpdateDigitalData","application_ordered","checkForApplicationOrderedTimeAndUpdateDigitalData","checkForPaymentUnsuccessfulAndUpdateDigitalData","application_failed_payment","orderStartTime","orderEndTime","application_time_to_order","storeTimeTakenInDigitalData","quoteStartTime","quoteEndTime","application_time_to_quote","checkForQuotedTimeAndUpdateDigitalData","application_quoted","checkForUnableToQuoteAndUpdateDigitalData","application_failed_order","user_id","quote_failed","startTime","endTime","duration","seconds","Math","floor","minutes","hours","pathArray","paymentChange","page_path","page_previous_url","referrer","newUrl","URL","page_previous_path","setReferrerProperties","timestamp","page_categories","javascript_errors","line","detail_updated","quote_updated","changedVehicleData","getChangedPolicyData","isEmptyObject","vehicle_changed","payment_method_changes","payment_method_selected","cancellationReason","cancellationDate","policy_cancellation","why","cancellation_question","cancellation_answer","when","setCancellationDetails","getAppStartTime","storeApplicationStartedTIme","getAppQuotedTime","storeApplicationQuotedTimeAndOrderStartTime","applicationOrderedTime","storeApplicationOrderedTime","clickedItem","getPreviouslyStoredClickedItemsInHeader","setPreviouslyStoredClickedItemsInHeader","storeClicksInNavigationBarForTagManager","getPreviouslyStoredClickedItemsInFooter","setPreviouslyStoredClickedItemsInFooter","storeClicksInFooterForTagManager","getPreviouslyStoredClickedSlidePanels","setPreviouslyStoredClickedSlidePanels","storeClicksOnSlidePanelForTagManager","megamenu_clicked","megamenu_item_clicked","footer_clicked","footer_item_clicked","page_body_item_clicked","paperless_status","setClickedItemsInDigitalData","clickedLink","clickedSlidePanel","testName","variation","_satellite","track","testType","trackMvtRunning","staticbasketbutton","updateBasket","switchPaymentType","basketPanel","staticbasket","slidePanel","ContinueButtonText","mutations","setPositionOfHoustonInSlider","attributes","attributeFilter","houstonContainer","retrievequote","errorMessageBox","recaptcha","populateToken","addHiddenInputToForm","tokenInput","formCssSelector","appendChild","src","head","script","siteKey","addScriptToHead","grecaptcha","execute","pagereloader","policydocumentinterim","documentUrlElement","handleDocumentDownload","downloadCookieName","downloadingInProgressContent","downloadCompleteContent","checkForDownloadCompleted","showDownloadedContentIfDocumentDownloaded","cookieName","hasDocumentDownloaded","poller","pollBasket","notificationObj","cat","removeNotificationFromSessionStorage","isSpinnerVisible","hideSpinnerOnInitialAttempt","noSpinner","spinnerName","IsSuccess","statusCode","goToUnderwritingTimeOutPage","goToUnableToQuoteOnlinePage","reloadPage","goToErrorPage","spinnerHtml","isDocumentReady","deletebasket","attemptToContinue","getUrlParameter","toLocaleLowerCase","startPage","goToSuccessPage","outofhours","close","optionalextras","navigation","pathName","pagesWithAsyncComponents","pagesWithoutBackAction","isPagesWithoutBackAction","initBackButtonFromOopsPage","listOfPagesWithoutBackAction","listOfPagesWithAsyncComponents","showBackButtonOnOopsPage","failedAction","backLink","hideBackButtonValue","pageAction","marketingpreferencesadd","thirdparty","addMarketingPreferencesToSessionStorage","preferences","email","getPreferenceValue","deviceMessaging","sms","telephone","preference","setPreference","CustomerAccountId","callAuthenticationSignOut","submitThirdPartyMarketingPreferences","NextPageLink","navigateToNextPage","BackLink","navigateToPreviousPage","onBackClick","initMarketingPrefsEvent","waitForPartnerIntegration","marketingpreferences","submitOptOutAll","radioButtonList","IsContactTileSelected","variant","houston","houstonButtonState","brand","livePersonBrand","journey","journeySection","getPage","Brand","LivePersonBrand","Journey","JourneySection","setState","IsVaEnabled","_window$_twilioWebCha","_twilioWebChat","VAUserInitials","Initials","contextItems","BGLActualPageName","lastIndexOf","InvocationPoint","WebSessionID","QuoteNo","PolicyNo","ArrayOfProducts","BGLProduct","Product","BGLSeqNumber","CoverLevel","ProductStatus","ProductVariant","livePersonContextItems","LivePersonContext","ActionName","Ctype","CustomerName","Section","SessionId","VaStatus","buildLivePersonEngagementAttributes","NinaVars","forceReprocessContextItems","BGLContextItems","BGLBrand","domain","acceptableTlds","tld","hostname","parts","getRootDomain","expirationDate","setDate","cookiePolicyCheck","preprod","warn","typeAnimations","animations","animation","OAnimation","MozAnimation","WebkitAnimation","whichAnimationEvent","handleLoad","_window$_twilioWebCha2","setInvocationPoint","IsVapEnabled","setInvocationForVap","tokens","security","authentication","getAccessAndIdentityTokens","vapAccessToken","accessToken","vapIdentityToken","identityToken","AuthRedirectUrl","authUrl","getAuthenticationRequestUrl","ClientId","AuthorizationEndpoint","Tid","div","newState","messagesToAnnounce","conversationLog","lastAgentMessage","userMessages","previousMessagesAnnouncement","detach","nextAll","prependTo","handleReadyStateClick","livePersonContext","livePersonTag","buildAttributes","gtmContainerId","gtmApplicationPath","googletagmanager","w","g","o1","o2","j","dl","async","insertBefore","gtmStartWithOneTrust","eCommmerceData","monthlyLink","dynamicbasket","closeBasketPanel","addHideClassTo","elements","removeHideClassFrom","monthlyPrices","annualPrices","driverdetails","ukresidentfiveyears","residencyStartDateDropdowns","firstYearMonthOptions","showContinueButton","firstYear","initObject","updateResidencyStartDateVisibility","continueHandler","isUkResident","nextDtsPageUrl","typeoflicence","licenceInputs","internationalLabel","updateCountrySectionVisibility","countriesSection","selectedEmploymentStatus","EmploymentStatusId","StatusCodesToAskOccupation","PreviousBusinessTypePageUrl","isInternationalType","searchaddress","BACK_URL_STACK_KEY","pushBackButtonUrl","loadView","stack","getBackButtonUrlFromStack","PreviousStepUrl","setElementFocusIfIsOnPage","quoteId","customerFirstName","customerAccountId","AddressId","PostCode","Home","addressId","postcode","home","backButtonUrl","onSuccessConfirmation","scrolltoelement","time","driverHeaderAccordionButton","$this","elementToScroll","containerRef","editaddress","getBackButtonUrl","OvernightParkingCode","nextUrl","annualmileage","hasConvictions","motorconvictions","motorConvictionList","goToNextStep","getMotorConvictions","setSessionStorageValue","yourDetails","getConvictionsFromStorageAndSetNoButton","HasConvictions","deleteMotorConvictionButtons","isNeedToBeDeleted","subscribeToEventShowMotorConvictions","motorConvictionId","PersonId","motorconvictionsbuilder","loadAddMotorConvictions","isNeededToDelete","personId","resetButtons","haveMotorConvictionsBeenChanged","unSubscribeToEventDismissMotorConvictionPannel","stepClick","isBack","nextStep","currentValue","Code","BuilderStep","IsBackButtonClicked","SelectedValues","breadcrumbLinks","idx","getSelectedValues","selectNextStep","banLengthRow","lastStep","newModel","hasClaims","motorclaims","motorClaimList","addNewClaim","getMotorClaims","deleteMotorClaimButtons","isNeededToBeDelete","motorclaimId","subscribeToEventRemoveAllMotorClaims","motorclaimbuilder","loadAddMotorClaims","HasClaims","unSubscribeToEventDismissMotorClaimsPanel","gotoBack","claimAmountRow","medicalconditiondvlanotified","medicalcondition","Licence","LicenceDatePageUrl","hasDvlaNotified","maritalstatus","licenceheldsince","selectedYear","personBirthYear","personBirthMonth","adulthood","dropdownOptions","needUpdatePerson","ViewName","informationsource","informationSourceSelectedResponse","brandCodeNames","toggleBrandCodeSection","brandCodeSection","endsWith","originalString","searchString","lastIndex","homeowner","homeOwnerYes","homeOwnerNo","showDropDown","showContinue","continueHandlerWithHomeInsuranceDueRemoval","hideDropdown","MarketingQuestion","subscribeForRadioButtonsClick","employmentstatus","resetOccupationInfo","grep","elementsArray","serializeArray","needDeleteOccupation","occupationStep","isDataProvided","drivinglicencenumber","setDrivingLicenceRowVisibility","needToShow","drivingLicenceRow","initRadioButtons","hasDrivingLicenceNumber","driverbubbles","subscribeDriver","tabName","tabIndex","openAccordion","additionaldriver","subscribeAddDriverButton","subscribeMainDriver","subscribeNamedDrivers","deletefrequentdriver","driverId","deleteFrequentDriver","declinedinsurance","ctor","MedicalCondition","DvlaNotifiedPageUrl","criminalconvictions","criminalConvictionsContainer","criminalConvictionAddAnotherButton","criminalConvictionRemoveAllButton","unSubscribeToEventDismissCriminalConvictionsPanel","subscribeBreadcrumbs","goToWizardStep","Month","MonthText","criminalConvictionsCount","isChangedComponent","motorCriminalConvictionId","hasCriminalConviction","HasCriminalConvictions","defaultData","firstName","CriminalConvictionStep","getDefaultData","updateSlidePanel","subscribeForEventsWizardStep1","subscribeForEventsWizardStep2","subscribeForEventsWizardStep3","criminalconvictionsDateOnSuccess","criminalconvictionsDateOnError","criminalconvictionsConvictionTypeOnError","criminalconvictionsConvictionTypeOnSuccess","criminalconvictionsSentenceTypeOnSuccess","criminalconvictionsSentenceTypeOnError","formstep1","formStep2","formStep3","additionalDriver","multiStepEdit","actions","aboutYou","employmentStatus","existencePartTimeOccupation","address","ukResidentFiveYears","drivingLicenceNumber","homeOwner","typeOfLicence","licenceHeldSince","motorClaims","declinedInsurance","criminalConvictions","medicalCondition","medicalConditionDvlaNotified","contactInformation","contactInformationPolicy","motorConvictions","useOfOtherVehicles","maritalStatus","deleterFrequentDriver","policyHolderId","contactinformationpolicy","setupChangeTelephoneEventBinder","isPolicyHolder","aboutyoudriverdetails","employmentstatusbuilder","firstStep","contactinformation","useofothervehicles","lastName","subscribeEditLinks","drivertabs","selectedDriver","setActiveDriver","getActiveDriver","showArrow","subscribeDriverCarousel","getPreviouslyStoredChangedUserData","setPreviouslyStoredChangedUserData","getAmountOfYears","dateEntered","reverse","dateToday","fullDateEntered","storeUserChangesForTagManager","newDateOfBirth","initJourney","initJourneyStep","houstonMessage","loadViewPage","initFunc","getInitByJourneyType","resetDirtyForm","mileageForm","overnightParkingForm","unSubscribeToEventDismissAddressPanel","initValidation","responsePayload","newSessionObject","postAddressChange","postUrl","needRaisingEvent","findCheckedLicenceValue","country","licence","dateHeldSince","submitButton","motorClaimItems","haveMotorClaimsBeenChanged","isJourneyType","clickFunction","redirectToNextJourneyStep","subscribeToEventShowMotorClaims","getPersons","storeDrivers","BuilderTileItems","loadMotorClaims","criminalConvictionsnCount","isAdditionalDriverJourney","createDriver","HasPageRefresh","additionalDriverData","callbackFunc","haveMotorConvictionsKey","itemCount","getMotorConvictionCount","panelId","unSubscribeToEventDismissMotorConvictionPanel","subscribeToEventDoneButtonMotorConvictions","isOtherVehiclesNcd","IsOtherVehiclesNcd","sections","dropdownKey","fieldsToDelete","elementName","postPerson","initNextStep","createPerson","onSurnameSuccess","onSurnameError","relationshipstatus","submitRelationshipStatusForm","getDataToPost","convertNameToTitleCase","inputStr","executeCreatingAction","unSubscribeToEventDismissPanel","componentName","drivers","Drivers","GetPersons","dataToExtend","driversData","initials","LastName","person","IsMainDriver","newdrivers","expandSessionStorageWithPersonDriver","storedDate","driverData","CoverId","tabScrollVisibleArea","tabList","ANIMIATE_DURATION","activateTab","clickedTab","currentlyActiveTab","contentIndex","getLeftmostTabIndex","hiddenAreaLeft","widthAccumulator","closestToLeftIndex","getRightmostTabIndex","rootRight","closestToRightIndex","getRightmostTabScrollPosition","accumulator","handleTabClick","newScrollPosition","previousActiveTabIndex","clickedTabIndex","tabScrollerVisibleAreaWidth","leftmostTabIndex","rightmostTabIndex","newIndex","newPosition","tabScrollerVisibleAreaScrollPosition","tabScrollerContentWidth","driverIndex","thisObj","backUrlStackKey","AnnualMileage","numberBox","calculateAverageMiles","labelTemplateValue","averageMiles","round","Address","VehicleOvernightParking","adddriver","aboutyou","demandsandneeds","basketUpdatedNotification","handleGoodToKnowListContent","addonForm","optionPrice","goodToKnowListContent","handleMultitierUpgradePanel","lastOptionValue","selectedOptionValue","updateAddOn","_x4","_x5","_x6","_updateAddOn","_callee6","addon","eventTarget","isMultiTierBreakdown","originalFormData","_iterator","_step","_step$value","_callee6$","_context6","FormData","entries","_ref2","_callee5","_context5","updateAddonApiCallError","_x7","refreshHoustonContextCallback","updateBasketCallback","disableElements","addonTick","addonSpinner","addonButtonContent","pollBasketCallback","disable","showErrorStyling","microCopy","alert","isSingleTierBreakdown","breakdownCarousel","addonName","scrollToFirstAddonWithError","firstAddonWithError","addonWithErrorYesBtn","addonWithErrorYesBtnLabel","selectBreakdownTier","breakdownAddon","selectedTier","isBreakdownTable","coverLevelCode","tierNumber","tier","setBreakdownTableTierStyling","mirrorBreakdownChanges","breakdownCarouselNoButton","showPncdYesNoBasket","pncdYesLabel","pncdNoLabel","pncdYesLabelText","pncdNoLabelText","tierText","tierTick","tableRow","pncdAddButton","pncdRemoveButton","addonButtons","accordionButtons","addonId","breakdownTier","labels","eventTargetElement","isBreakdownCarousel","breakdownCarouselAddonLabel","formattedAddonId","breakdownTierSelectionElement","setTierBreakdownLogic","addonsAreValid","SkipAddOnValidation","validateAddons","NextPageUrl","ariaLabel","icon","breakdownInfoTooltipId","targetTooltip","isTooltipOpen","iconTier","loadBreakdownCarouselLogic","setEventBindings","addonFormId","includedAddon","addonIsBreakdown","isNotSingleTierBreakdown","addonNoLabelTick","addOnYesButtons","nextElementSibling","pncdSelectedAtAGG","populateSessionAnswers","grvAddon","bundledextras","tableActiveAddons","carouselActiveAddons","setSliderButtonEvents","updateAddOns","_x8","_x9","_x10","_updateAddOns","_callee8","selectElement","addonsListToPatch","activeAddons","addonUpdates","_context8","toggleClickableElements","buildFormData","updateSingleAddon","updateSessionStorageValue","all","responses","getNotificationMessage","addonSessionStorageKey","isTheAddonSelected","isAddonSelected","isTheAddonSelectedPreviousValue","patchedAddon","_ref3","_callee7","_context7","updateActiveAddon","_x11","getPreviousValue","filteredAddonsToPatch","addonsToPatch","tierSelectButtonHasBeenClicked","patchAddon","activeAddon","unselectPatchAddon","cloneNode","makeDisabled","_activeButtonIcon$cla","toggleBuildYourOwnInfoContent","tierSelectButtons","buildYourOwnCheckboxes","dataTierLevel","listOfBuild","buildItem","checkedBuildYourOwn","setCarouselEvents","addons","validateOnEveryInput","patchedYes","addonFormSelector","preventDefaultFormBehaviour","generateClickOnKeyPress","setNavigationAndUpdateElementsDisabled","tableElement","getAddon","getBreakdownCode","activeTierNumber","getTierNumber","codeInput","setCodeValue","allTiersButtons","targetTier","getTierElements","eq","makeTierActive","selectedTierNumber","breakdownButtons","selectedTierButton","updateTierButtons","tierElements","checkSelectedTiersRadioButton","hideValidationError","hideValidationErrorMessage","revealNextAddon","tableInputs","uncheckBreakdownTable","setFocusToHeader","revealFbels","revealBasket","hideDemandsAndNeedsSection","storeAddonBehaviourForTagManager","setYesButtonEventBindings","currentAddon","nextAddon","getNextAddon","fullAddonName","removeFromPatchedYesList","setNavigationAndUpdateElementsEnabled","hideSpinnerShowTick","setNoButtonEventBindings","setDisabledFormEventBindings","currentAddonNotInterestedLabel","currentAddonInterestedLabel","getNotInterestedLabel","getInterestedLabel","grcCoverLevelCount","updateCoverLevel","displaySelectedCoverLevelPrice","showSelectedMultiTierContent","toolCoverLevelCount","setCoverLevelChangeEventBindings","setAriaSelectedToFalse","togglePncdContent","wasPncdSelectedAtAggregator","writeToDataStore","isInPatchedYesList","dataLoadedFromSessionStorage","dataStoreInit","getAllAddons","wasPatchedYes","timeNow","toLocaleTimeString","addonSelected","getPreviouslyStoredAddonBehaviourData","setPreviouslyStoredAddonBehaviourData","notInterestedInputId","interestedInputId","sessionStorageKey","coverLevelCodes","selectedValue","addOn","addonLabel","useSpinner","showSpinnerHideTick","setSelectElementsDisabledProperty","jqXhr","updateAddonAjaxCallError","updateAddonAjaxCallSuccessful","jqXHR","setElementsDisabledProperty","setSpecifiedElementsDisabledProperty","firstInvalidAddon","allAddonsAreValid","addonContent","showValidationErrorStyling","addonWithError","errorMessage","getAddonName","ctaBasketShowing","generateValidationErrorMessage","showValidationErrorAlert","showValidationErrorMessage","publishAddonErrors","formContainingInvalidInputs","errorDetails","uniqueErrorDetails","formContainingInvalidElement","getFieldsetLegendText","newErrorDetail","counter","isErrorDetailInArray","invalidFormElement","getFieldsetLegendTextForMostAddons","getFieldsetLegendTextForBreakdownAddon","isPncdSelected","addButtonLabelText","addButtonLabel","removeButtonLabelText","removeButtonLabel","addRemoveDidYouKnowText","yesNoDidYouKnowText","bglDatePickerViewOption","mvtBglDatePickerViewOption","coverrange","PartialDatePicker","bgldatepicker","policycoverrange","getMonthString","num","updateSelectedDate","isService","dateTime","parseDate","isFuture","selectedEffectiveDateMessage","getFormattedValue","formatDate","DateToday","tomorrow","sessionData","selectedCoverFlag","CoverExcessesBackUrl","setBackButtonUrl","calendarSection","calendarTabsCount","selectDate","selection","onKeydown","row","getLastDate","showNextMonth","getFirstDate","firstElementChild","showPreviousMonth","previousElementSibling","lastElementChild","getIndexInCollection","collection","showMonthByIndex","subscribeHeaderNavigationButtons","onClick","datePickerUserSessionData","coverdetails","yearsbusinessestablished","vehicleUseSessionData","DataHasChanged","carriageofdangerousgoods","isMultiStepEdit","vehicleUseComponentActionUrl","vehicleusage","coverDetailsCommon","dangerousGoodsComponentActionUrl","isVan","carriageOfOwnGoods","haulage","vanNavigation","vehicleUsage","YearsBusinessEstablishedUrl","CarriageOfDangerousGoodsUrl","sameaddress","registerKeeper","registeredkeeper","initElements","redirectIfSessionStorageIsNotFound","ParentJourneyUrl","keypress","hasOwnData","updateHeading","displaySubmitButton","clearOtherOptionFields","onMultiStepEditSuccess","registeredKeeperData","RegisteredKeeperId","registeredKeeperId","typeInput","triggerPollBasket","companyKeeper","HIDDEN_CLASS","callPollBasket","showCompanyName","closeSlidePanelAndTriggerUnderwriting","keeperType","companyName","updateContinueButtonValue","registerKeeperOptionClickHandler","componentForm","heading","parentJourneyUrl","productvariants","updateAriaLabelsOnPrice","m","setButtonText","setLinksDisabled","updateAprRowClasses","updateAddonLinks","isPremier","contentUrl","coverKey","CoverFeaturePriority","ContentUrlPremier","ContentUrl","links","priceMonthly","priceAnnual","p","RowBuilder","policybenefits","policyBenefitsButton","expandableSectionContainer","othervehicles","isNcdQuestionRemoved","IsNcdQuestionRemoved","subscribeForSubmit","getStoredData","ncdyears","isNeedToDeleteNcdSource","DataStoreKeyForNcdSourcePage","ncdsource","maindriver","features","featureBannerButton","featureCardContainer","featureListToggleButton","featureList","featureListIcon","transform","coverpanelrenewal","featureButtons","seeMoreButton","excessFeatureButtonsArray","featureButton","coverlevel","CoverLevelCode","CoverLevelUrl","coverexcesses","cardcoverlevel","coverLevel","coverId","cardcoverexcess","calculateExcessBarPercentage","compulsoryAmount","totalAmount","coverExcess","excessBar","totalAmountPercentage","calculateExcessBar","cardcoverncd","coverNCD","conditionalbanner","AccordionIds","accordionId","coverKeys","totalExcess","courtesyVehicle","legalProtection","uninsuredDriverPromise","vandalismPromise","windscreenCover","driveOtherVehicles","childSeatCover","personalAccident","personalBelongings","emergencyTransportAndAccommodation","emergencyTransport","transferHome","drivingAbroad","medicalExpenses","audioEquipment","replacementLocks","annualMileage","noClaimsDiscount","mainDriver","registeredKeeper","breakdown","guaranteedReplacementVehicle","keyCover","toolsCover","misfuellingCover","claimsGuarantee","emissionsFree","digitalPolicy","ESCAPE_KEYCODE","excesses","noclaimsdiscount","ClassOfUse","coverText","loadComponentByCoverKey","onAddonBackButtonClick","reviewBackBtnUrl","pageUrl","previousAddonSelected","detailUrl","reviewBackButtonClickHandler","previousAddon","previousStepUrl","backButtonClickHandler","onAddonBackButtonClickOrKeyUp","setNextAction","isDataChanges","storeCoverDetailsChangesForTagManager","checkedCoverLevelButtonId","getPreviouslyStoredChangedCoverDetailsData","setPreviouslyStoredChangedCoverDetailsData","IsSummary","customSelectControl","updateExcessesBar","toggleCustomSelectButtonText","selectExcess","voluntaryExcessAmount","totalExcessAmount","ncdYearsValue","_step2","_iterator2","yearsEstablishedActionUrl","dangerousGoodsActionUrl","socialDpClassOfUseCode","setDataHasChangedFlagForQuestionSet","classOfUseCode","componentActionUrl","continueButtonLink","getHeading","RelationshipStatusCode","additionaldetails","paymentsregularityhiddenemailtel","logToAppInsights","props","setCommonVariables","SecondaryDataStoreKey","newInputValue","setUpFormValidation","getDataForFormSubmission","paymentsregularity","redirectForwardSelector","formId","monthValidation","yearValidation","sectionLabel","resetValidation","purchaseSectionValidationMessage","emailToValidate","emailConfirm","PreviousPageUrl","toggleHelpText","selectedItemCode","selectedHelpText","initialCheckedUsageButton","andfinally","singlepagepaymentsummary","toggleExpandingPanelVisibility","targetContentId","updateExpandingPanelAccessibilityText","currentExpandingPanel","nextExpandingPanel","currentPanelPillSpan","currentPanelPillSpanContent","nextPanelPillSpan","nextPanelPillContent","textToReplace","updateHeaderStep","currentHeaderStep","expandingPanelButtonClicked","targetExpandingPanelButton","targetExpandingPanel","singlepagepaymentmonthlydeposit","singlepagepaymentannual","targetExpandingPanelButtonStep","expandingpanelStep","visibleExpandingPanelButtons","currentExpandingPanelButton","_switchPaymentType","_callee10","_callee10$","_context10","_ref4","_callee9","_callee9$","_context9","_x12","_unused2","singlepagepaymentmonthlyinstalment","previouslyCompletedExpandingPanelStep","currentExpandingPanelPill","readConfirmCheckbox","completePaymentStepAndContinue","updateExpandingPanelNavigation","nextExpandingPanelButton","readonlycarddetails","formattedMonth","requestedEditCard","singlepagepaymentcardcapturecompleted","paymentFrequency"],"mappings":"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"}