{"version":3,"file":"life-insurance-widget.min.js","names":["_lifeInsCalc","numberInputs","chosenCoverQuestions","formPageOneValid","formIsValid","inputsValid","childrenQuestionRadioSelected","childrenQuestionSelectsValid","isChildrenQuestionPicked","form","document","getElementById","formPageOne","formPageTwo","formPageThree","formPageOneBtn","formPageTwoBackBtn","startAgainBtn","querySelector","progressBar","childrenRadios","Array","prototype","slice","call","querySelectorAll","stepNumber","formPageOneCheckboxes","addEventListener","e","preventDefault","checkForEmptyTextBoxes","checkchildrenQuestionRadioSelected","textContent","concat","runCalculation","togglePage","forEach","input","value","labelId","getAttribute","errorLocation","nextElementSibling","className","errorMessageText","parentElement","classList","add","errorDiv","createErrorState","insertAdjacentElement","checkbox","handlePageOneCheckboxes","checked","handleShowQuestions","removeErrorMessage","reset","radio","showChildrenExtaInfo","_this","target","tagName","parent","errorMessage","removeChild","mortgageField","debtField","earnField","funeralField","howManyChildren","selects","mortgageValue","debtValue","earnValue","funeralValue","childrenUniValue","childrenValueTotal","select","childrenValue","toLocaleString","shouldSkip","length","isNaN","childNum","id","toString","error","chosenCheckbox","alreadyChosen","indexOf","push","index","splice","childrenCount","childrenQuestionWrapper","labelText","i","innerHTML","insertAdjacentHTML","generateSelectHtml","count","text","fieldValidationDiv","createElement","setAttribute","errorText","appendChild","test","key","remove","clearAllErrors","errorClass","toggleClass","el","toggle","from","to","step","stepNum","elem","question"],"sources":["life-insurance/life-insurance-widget.js"],"mappings":"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","ignoreList":[],"sourcesContent":["const _lifeInsCalc = (function () {\r\n\tlet chosenCoverQuestions = [];\r\n\tlet formPageOneValid = false;\r\n\tlet formIsValid = false;\r\n\tlet inputsValid = false;\r\n\tlet childrenQuestionRadioSelected = false;\r\n\tlet childrenQuestionSelectsValid = true;\r\n\tlet isChildrenQuestionPicked = false;\r\n\tlet numberInputs;\r\n\tconst form = document.getElementById('life-insurance-calculator');\r\n\tconst formPageOne = document.getElementById('form-page-one');\r\n\tconst formPageTwo = document.getElementById('form-page-two');\r\n\tconst formPageThree = document.getElementById('form-page-three');\r\n\tconst formPageOneBtn = document.getElementById('form-page-one--action');\r\n\tconst formPageTwoBackBtn = document.getElementById('back-button');\r\n\tconst startAgainBtn = document.querySelector('#form-page-three button');\r\n\tconst progressBar = document.querySelector('.life-insurance-calculator-container .background-bar');\r\n\tconst childrenRadios = Array.prototype.slice.call(\r\n\t\tdocument.querySelectorAll('.life-insurance-calculator-container input[name=\"children-question\"]'),\r\n\t\t0\r\n\t);\r\n\tconst stepNumber = document.getElementById('progress-indicator__step-number');\r\n\tconst formPageOneCheckboxes = Array.prototype.slice.call(\r\n\t\tdocument.querySelectorAll('.life-insurance-calculator-container #form-page-one input[type=\"checkbox\"]'),\r\n\t\t0\r\n\t);\r\n\r\n\t/* Start Event Listeners */\r\n\tform.addEventListener('submit', function (e) {\r\n\t\te.preventDefault();\r\n\t\tcheckForEmptyTextBoxes();\r\n\t\tisChildrenQuestionPicked && checkchildrenQuestionRadioSelected();\r\n\t\tformIsValid = inputsValid && childrenQuestionRadioSelected && childrenQuestionSelectsValid;\r\n\r\n\t\tif (isChildrenQuestionPicked) {\r\n\t\t\tformIsValid = inputsValid && childrenQuestionRadioSelected && childrenQuestionSelectsValid;\r\n\t\t} else {\r\n\t\t\tformIsValid = inputsValid;\r\n\t\t}\r\n\r\n\t\tif (formIsValid) {\r\n\t\t\tdocument.getElementById('result').textContent = '\\xA3'.concat(runCalculation());\r\n\t\t\ttogglePage(formPageTwo, formPageThree, 'step-three', '3');\r\n\t\t} else {\r\n\t\t\t// Number field validation\r\n\t\t\tif (!inputsValid) {\r\n\t\t\t\tnumberInputs &&\r\n\t\t\t\t\tnumberInputs.forEach(function (input) {\r\n\t\t\t\t\t\tif (input.value !== '') return;\r\n\r\n\t\t\t\t\t\tconst labelId = input.getAttribute('aria-labelledby');\r\n\t\t\t\t\t\tconst label = document.getElementById(labelId);\r\n\t\t\t\t\t\tlet errorLocation = label.nextElementSibling;\r\n\r\n\t\t\t\t\t\tif (errorLocation.className === 'tooltip' || errorLocation.className === 'expanded-help')\r\n\t\t\t\t\t\t\terrorLocation = errorLocation.nextElementSibling;\r\n\r\n\t\t\t\t\t\tconst errorExists = errorLocation.className === 'field-validation-error' ? true : false;\r\n\t\t\t\t\t\tif (errorExists) return; // Create and add error message to DOM\r\n\r\n\t\t\t\t\t\tinput.parentElement.classList.add('error');\r\n\r\n\t\t\t\t\t\tlet errorMessageText;\r\n\t\t\t\t\t\tswitch (labelId) {\r\n\t\t\t\t\t\t\tcase 'mortgage-label':\r\n\t\t\t\t\t\t\t\terrorMessageText = 'Enter how much is left to pay on your mortgage';\r\n\t\t\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\t\tcase 'debt-label':\r\n\t\t\t\t\t\t\t\terrorMessageText = 'Enter how much debt you have left to pay';\r\n\t\t\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\t\tcase 'earn-label':\r\n\t\t\t\t\t\t\t\terrorMessageText = 'Enter how much you earn per month after tax';\r\n\t\t\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\t\tcase 'funeral-label':\r\n\t\t\t\t\t\t\t\terrorMessageText = 'Enter how much you want to put towards your funeral';\r\n\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tconst errorDiv = createErrorState(errorMessageText);\r\n\t\t\t\t\t\terrorLocation.insertAdjacentElement('beforebegin', errorDiv);\r\n\t\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\t// Children radio button validation\r\n\t\t\tif (isChildrenQuestionPicked && !childrenQuestionRadioSelected) {\r\n\t\t\t\tconst errorLocation = document.querySelector('#children-question .tooltip').nextElementSibling;\r\n\t\t\t\tconst errorExists = errorLocation.className === 'field-validation-error' ? true : false;\r\n\t\t\t\tif (errorExists) return; // Create and add error message to DOM\r\n\r\n\t\t\t\tconst errorDiv = createErrorState('Select how many children you have');\r\n\t\t\t\terrorLocation.insertAdjacentElement('beforebegin', errorDiv);\r\n\t\t\t}\r\n\t\t}\r\n\t});\r\n\r\n\tformPageOneCheckboxes.forEach(function (checkbox) {\r\n\t\treturn checkbox.addEventListener('change', function (e) {\r\n\t\t\treturn handlePageOneCheckboxes(e);\r\n\t\t});\r\n\t});\r\n\r\n\tformPageOneBtn.addEventListener('click', function (e) {\r\n\t\te.preventDefault();\r\n\r\n\t\tformPageOneCheckboxes.forEach(function (checkbox) {\r\n\t\t\tif (checkbox.checked) formPageOneValid = true;\r\n\t\t\tif (checkbox.getAttribute('id') === 'checkbox-children' && checkbox.checked)\r\n\t\t\t\tisChildrenQuestionPicked = true;\r\n\t\t});\r\n\r\n\t\tif (formPageOneValid) {\r\n\t\t\thandleShowQuestions();\r\n\t\t\ttogglePage(formPageOne, formPageTwo, 'step-two', '2');\r\n\t\t\tnumberInputs = Array.prototype.slice.call(\r\n\t\t\t\tdocument.querySelectorAll(\r\n\t\t\t\t\t'.life-insurance-calculator-container input[type=\"number\"]:not([aria-hidden=\"true\"])'\r\n\t\t\t\t),\r\n\t\t\t\t0\r\n\t\t\t);\r\n\t\t\tnumberInputs &&\r\n\t\t\t\tnumberInputs.forEach(function (input) {\r\n\t\t\t\t\treturn input.addEventListener('keyup', function (e) {\r\n\t\t\t\t\t\treturn removeErrorMessage(e, input);\r\n\t\t\t\t\t});\r\n\t\t\t\t});\r\n\t\t} else {\r\n\t\t\tconst errorMessage = document.querySelector('#form-page-one .field-validation-error');\r\n\r\n\t\t\tif (errorMessage === null) {\r\n\t\t\t\tconst errorDiv = createErrorState('Select what you want your life insurance to cover');\r\n\t\t\t\tconst errorLocation = document.querySelector('.life-insurance-calculator-container .tooltip');\r\n\t\t\t\terrorLocation.insertAdjacentElement('afterend', errorDiv);\r\n\t\t\t}\r\n\t\t}\r\n\t});\r\n\tformPageTwoBackBtn.addEventListener('click', function (e) {\r\n\t\te.preventDefault();\r\n\t\thandleShowQuestions();\r\n\t\treset();\r\n\t\ttogglePage(formPageTwo, formPageOne, 'step-one', '1');\r\n\t});\r\n\tstartAgainBtn.addEventListener('click', function (e) {\r\n\t\te.preventDefault();\r\n\t\thandleShowQuestions();\r\n\t\treset();\r\n\t\ttogglePage(formPageThree, formPageOne, 'step-one', '1');\r\n\t});\r\n\tchildrenRadios.forEach(function (radio) {\r\n\t\treturn radio.addEventListener('change', function (e) {\r\n\t\t\treturn showChildrenExtaInfo(e);\r\n\t\t});\r\n\t});\r\n\tdocument.addEventListener('change', function (e) {\r\n\t\tconst _this = e.target;\r\n\r\n\t\tif (_this && _this.tagName === 'SELECT') {\r\n\t\t\tconst parent = _this.parentElement;\r\n\t\t\tconst errorMessage = parent.querySelector('.field-validation-error');\r\n\r\n\t\t\tif (errorMessage !== null) {\r\n\t\t\t\tparent.removeChild(errorMessage);\r\n\t\t\t}\r\n\t\t}\r\n\t});\r\n\t/* End Event Listeners */\r\n\r\n\tconst runCalculation = () => {\r\n\t\tconst mortgageField = document.getElementById('input-shell--number__mortgage');\r\n\t\tconst debtField = document.getElementById('input-shell--number__debt');\r\n\t\tconst earnField = document.getElementById('input-shell--number__earn');\r\n\t\tconst funeralField = document.getElementById('input-shell--number__funeral');\r\n\t\tconst howManyChildren = document.querySelector(\r\n\t\t\t'.life-insurance-calculator-container input[type=\"radio\"]:checked'\r\n\t\t);\r\n\t\tconst selects = Array.prototype.slice.call(\r\n\t\t\tdocument.querySelectorAll('.life-insurance-calculator-container select'),\r\n\t\t\t0\r\n\t\t);\r\n\t\tconst mortgageValue = mortgageField === null ? 0 : mortgageField.value * 1;\r\n\t\tconst debtValue = debtField === null ? 0 : debtField.value * 1;\r\n\t\tconst earnValue = earnField === null ? 0 : earnField.value * 12 * 4;\r\n\t\tconst funeralValue = funeralField === null ? 0 : funeralField.value * 1;\r\n\t\tconst childrenUniValue = howManyChildren === null ? 0 : howManyChildren.value * 51000;\r\n\t\tlet childrenValueTotal = 0;\r\n\t\tselects.forEach(function (select) {\r\n\t\t\tconst childrenValue = select.value * 6000;\r\n\t\t\tchildrenValueTotal += childrenValue;\r\n\t\t});\r\n\t\tconst total = (\r\n\t\t\tmortgageValue +\r\n\t\t\tdebtValue +\r\n\t\t\tearnValue +\r\n\t\t\tfuneralValue +\r\n\t\t\tchildrenUniValue +\r\n\t\t\tchildrenValueTotal\r\n\t\t).toLocaleString();\r\n\t\treturn total;\r\n\t};\r\n\r\n\tconst checkForEmptyTextBoxes = function checkForEmptyTextBoxes(e) {\r\n\t\tlet shouldSkip = false;\r\n\r\n\t\tif (!numberInputs || !numberInputs.length) {\r\n\t\t\t// No number inputs are needed to be filled by the user\r\n\t\t\tinputsValid = true;\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tnumberInputs &&\r\n\t\t\tnumberInputs.forEach(function (input) {\r\n\t\t\t\tif (shouldSkip) return;\r\n\r\n\t\t\t\tif (input.value === '' || isNaN(input.value)) {\r\n\t\t\t\t\tinputsValid = false;\r\n\t\t\t\t\tshouldSkip = true;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tinputsValid = true;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t};\r\n\r\n\tconst checkchildrenQuestionRadioSelected = () => {\r\n\t\tconst checkedRadio = document.querySelector('.life-insurance-calculator-container input[type=\"radio\"]:checked');\r\n\t\tif (checkedRadio !== null) childrenQuestionRadioSelected = true; // A radio button has been selected\r\n\t\t// Check all selects have a value\r\n\r\n\t\tArray.prototype.slice\r\n\t\t\t.call(document.querySelectorAll('.life-insurance-calculator-container select'), 0)\r\n\t\t\t.forEach(function (select) {\r\n\t\t\t\tif (select.value === 'Select an option') {\r\n\t\t\t\t\t// Check that there is no error already\r\n\t\t\t\t\tconst parent = select.parentElement;\r\n\t\t\t\t\tconst isError = parent.querySelector('.field-validation-error') !== null;\r\n\r\n\t\t\t\t\tif (isError) {\r\n\t\t\t\t\t\tchildrenQuestionSelectsValid = false;\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t} // Create error message and add to dom\r\n\r\n\t\t\t\t\tlet childNum;\r\n\r\n\t\t\t\t\tswitch (select.id.toString().slice(-1)) {\r\n\t\t\t\t\t\tcase '1':\r\n\t\t\t\t\t\t\tchildNum = 'first';\r\n\t\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\tcase '2':\r\n\t\t\t\t\t\t\tchildNum = 'second';\r\n\t\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\tcase '3':\r\n\t\t\t\t\t\t\tchildNum = 'third';\r\n\t\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\tcase '4':\r\n\t\t\t\t\t\t\tchildNum = 'fourth';\r\n\t\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\tcase '5':\r\n\t\t\t\t\t\t\tchildNum = 'fifth';\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tconst errorMessageText = 'Select how old your '.concat(childNum, ' child is from the list');\r\n\t\t\t\t\tconst error = createErrorState(errorMessageText);\r\n\t\t\t\t\tselect.insertAdjacentElement('beforebegin', error);\r\n\t\t\t\t\tchildrenQuestionSelectsValid = false;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tchildrenQuestionSelectsValid = true;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t};\r\n\r\n\tconst handlePageOneCheckboxes = e => {\r\n\t\t// Remove error message on click\r\n\t\tconst errorMessage = document.querySelector('#form-page-one .field-validation-error');\r\n\t\tif (errorMessage !== null) errorMessage.parentElement.removeChild(errorMessage);\r\n\t\tconst checkbox = e.target;\r\n\t\tconst checked = checkbox.checked;\r\n\t\tconst chosenCheckbox = checkbox.value;\r\n\t\tconst alreadyChosen = chosenCoverQuestions.indexOf(chosenCheckbox) >= 0;\r\n\r\n\t\tif (checked && !alreadyChosen) {\r\n\t\t\tchosenCoverQuestions.push(chosenCheckbox);\r\n\t\t} else if (!checked && alreadyChosen) {\r\n\t\t\tconst index = chosenCoverQuestions.indexOf(chosenCheckbox);\r\n\t\t\tchosenCoverQuestions.splice(index, 1);\r\n\t\t}\r\n\t};\r\n\r\n\tconst showChildrenExtaInfo = e => {\r\n\t\t// Remove any errors\r\n\t\tconst errorMessage = document.querySelector('#children-question .field-validation-error');\r\n\r\n\t\tif (errorMessage !== null) {\r\n\t\t\tconst parent = errorMessage.parentElement;\r\n\t\t\tparent.removeChild(errorMessage);\r\n\t\t}\r\n\r\n\t\tconst childrenCount = e.target.value;\r\n\t\tconst childrenQuestionWrapper = document.querySelector(\r\n\t\t\t'.life-insurance-calculator-container .children-question__extra-info'\r\n\t\t);\r\n\t\tlet i = 1;\r\n\t\tlet labelText;\r\n\t\tchildrenQuestionWrapper.innerHTML = '';\r\n\r\n\t\twhile (i <= childrenCount) {\r\n\t\t\tswitch (i) {\r\n\t\t\t\tcase 2:\r\n\t\t\t\t\tlabelText = 'second';\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase 3:\r\n\t\t\t\t\tlabelText = 'third';\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase 4:\r\n\t\t\t\t\tlabelText = 'fourth';\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase 5:\r\n\t\t\t\t\tlabelText = 'fifth';\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tdefault:\r\n\t\t\t\t\tlabelText = 'first';\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\tchildrenQuestionWrapper.insertAdjacentHTML('beforeend', generateSelectHtml(labelText, i));\r\n\t\t\ti++;\r\n\t\t}\r\n\t};\r\n\r\n\tconst generateSelectHtml = (labelText, count) => {\r\n\t\treturn '
\\n \\n \\n
'\r\n\t\t\t);\r\n\t};\r\n\r\n\tconst createErrorState = text => {\r\n\t\tconst fieldValidationDiv = document.createElement('div');\r\n\t\tfieldValidationDiv.setAttribute('class', 'field-validation-error');\r\n\t\tconst errorText = document.createElement('span');\r\n\t\terrorText.textContent = text;\r\n\t\tfieldValidationDiv.appendChild(errorText);\r\n\t\treturn fieldValidationDiv;\r\n\t};\r\n\r\n\tconst removeErrorMessage = (e, input) => {\r\n\t\tconst isNumber = /^[0-9]$/i.test(e.key);\r\n\r\n\t\tif (isNumber) {\r\n\t\t\tconst labelId = input.getAttribute('aria-labelledby');\r\n\t\t\tconst parent = document.getElementById(labelId).parentElement;\r\n\t\t\tconst errorMessage = parent.querySelector('.field-validation-error');\r\n\t\t\tif (errorMessage === null) return;\r\n\t\t\tinput.parentElement.classList.remove('error');\r\n\t\t\terrorMessage.parentElement.removeChild(errorMessage);\r\n\t\t}\r\n\t}; // Completely resets the app to the default starting state\r\n\r\n\tconst reset = () => {\r\n\t\tchosenCoverQuestions = [];\r\n\t\tclearAllErrors();\r\n\t\tformPageOneCheckboxes.length > 0 &&\r\n\t\t\tformPageOneCheckboxes.forEach(function (checkbox) {\r\n\t\t\t\treturn (checkbox.checked = false);\r\n\t\t\t});\r\n\t\tchildrenRadios.length > 0 &&\r\n\t\t\tchildrenRadios.forEach(function (radio) {\r\n\t\t\t\treturn (radio.checked = false);\r\n\t\t\t});\r\n\t\tnumberInputs &&\r\n\t\t\tnumberInputs.length > 0 &&\r\n\t\t\tnumberInputs.forEach(function (input) {\r\n\t\t\t\treturn (input.value = '');\r\n\t\t\t});\r\n\t\tdocument.querySelector('.life-insurance-calculator-container .children-question__extra-info').innerHTML = '';\r\n\t\tformPageOneValid = false;\r\n\t\tinputsValid = false;\r\n\t\tisChildrenQuestionPicked = false;\r\n\t\tchildrenQuestionRadioSelected = false;\r\n\t\tchildrenQuestionSelectsValid = true;\r\n\t\tformIsValid = false;\r\n\t};\r\n\r\n\tconst clearAllErrors = () => {\r\n\t\tArray.prototype.slice\r\n\t\t\t.call(document.querySelectorAll('.life-insurance-calculator-container .field-validation-error'), 0)\r\n\t\t\t.forEach(function (error) {\r\n\t\t\t\terror.parentElement.removeChild(error);\r\n\t\t\t});\r\n\t\tArray.prototype.slice\r\n\t\t\t.call(document.querySelectorAll('.life-insurance-calculator-container .error'), 0)\r\n\t\t\t.forEach(function (errorClass) {\r\n\t\t\t\treturn errorClass.classList.remove('error');\r\n\t\t\t});\r\n\t};\r\n\r\n\tconst toggleClass = (el, className) => {\r\n\t\tel.classList.toggle(className);\r\n\t};\r\n\r\n\tconst togglePage = (from, to, step, stepNum) => {\r\n\t\tstepNumber.innerHTML = stepNum;\r\n\t\tprogressBar.className = 'background-bar '.concat(step);\r\n\t\t[from, to].forEach(function (elem) {\r\n\t\t\treturn toggleClass(elem, 'visuallyhidden');\r\n\t\t});\r\n\t};\r\n\r\n\tconst handleShowQuestions = () => {\r\n\t\tchosenCoverQuestions.forEach(function (question) {\r\n\t\t\tconst id = document.querySelector('.life-insurance-calculator-container #'.concat(question, '-question'));\r\n\t\t\tconst input = document.querySelector(\r\n\t\t\t\t'.life-insurance-calculator-container #'.concat(question, '-question input')\r\n\t\t\t);\r\n\t\t\tid.getAttribute('aria-hidden') === 'true'\r\n\t\t\t\t? id.setAttribute('aria-hidden', 'false')\r\n\t\t\t\t: id.setAttribute('aria-hidden', 'true');\r\n\t\t\tinput.getAttribute('aria-hidden') === 'true'\r\n\t\t\t\t? input.setAttribute('aria-hidden', 'false')\r\n\t\t\t\t: input.setAttribute('aria-hidden', 'true');\r\n\t\t\ttoggleClass(id, 'visuallyhidden');\r\n\t\t});\r\n\t};\r\n})();\r\n"]}