{"version":3,"file":"student-budget-calculator.min.js","names":["cnfsdStudentBudgetCalc","totalIncome","totalExpenditure","firstMap","timescaleSet","timescale","totalIncomeSpan","document","querySelectorAll","totalExpenditureSpan","totalRemainingSpan","totalRemainingOpposite","totalRemainingTerm","radios","sections","totalVals","isNotEmptyOrNull","variable","handleRadioInputs","forEach","radio","addEventListener","validateRadios","value","querySelector","classList","remove","text","innerHTML","amount","val","parseInt","getAttribute","tscale","timeTextOpposites","timeTextOpposite","updateTimescales","calculateVals","updateHTMLVals","pushGAEvent","handleButtons","button","event","section","closest","preventDefault","id","toggleSection","scrollCalcTop","contains","addCategory","focus","add","newCategory","questionGroup","newElement","createElement","uniqueIDModifier","Math","floor","random","categoryId","replace","inputPlaceHolderText","getElementById","inputPlaceHolderTextValue","template","appendChild","handleTextInputs","AddCategoryFragment","addNewCategory","downloadLink","breakdownSections","breakdownHolder","breakdownHTML","dataset","heading","question","label","formatter","format","populateHiddenResults","async","pdfOptions","margin","filename","image","type","quality","html2canvas","scale","jsPDF","unit","orientation","element","html2pdf","generatePDF","backlink","input","inputVal","inputId","parseFloat","set","mapToUpdate","find","item","map","updateVals","keyCode","indexOf","regex","keyed","String","fromCharCode","charCode","which","test","validateTextboxes","radioButton","checked","screen1","screen2","progressTitle","progressCount","progressIndicator","progressTitle1","progressTitle2","toggle","progressTitle2Content","progressTitle1Content","scrollIntoView","behavior","block","inline","values","innermap","totalincome","totalexpenditure","totalremaining","style","color","remainingOpposite","remainingTerm","Intl","NumberFormat","currency","inputType","validation","dataLayer","alert","payload","continueValidation","continueValidationErrors","collateErrorMessages","elementId","formId","form","push","error","errorMessage","init","sectionId","index","Map"],"sources":["student-budget-calculator/student-budget-calculator.js"],"mappings":"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","sourcesContent":["\r\n\r\n\r\nconst cnfsdStudentBudgetCalc = (function () {\r\n // Define your variables\r\n let totalIncome;\r\n let totalExpenditure;\r\n let timescaleSet = false;\r\n let timescale = '';\r\n let firstMap;\r\n const totalIncomeSpan = document.querySelectorAll('.total-income');\r\n const totalExpenditureSpan = document.querySelectorAll('.total-expenditure');\r\n const totalRemainingSpan = document.querySelectorAll('.total-remaining');\r\n const totalRemainingOpposite = document.querySelectorAll('.total-remaining--opposite');\r\n const totalRemainingTerm = document.querySelectorAll('.total-remaining__per-term');\r\n const radios = document.querySelectorAll('#income input[type=\"radio\"]');\r\n const sections = document.querySelectorAll('.student-budget-calculator form');\r\n const totalVals = [];\r\n\r\n function isNotEmptyOrNull(variable) {\r\n return variable !== null && variable !== undefined && variable !== \"\";\r\n }\r\n \r\n\r\n function setupMaps() {\r\n // Set up a map for the values in each section based on the section ID\r\n sections.forEach((sectionId, index) => {\r\n let map = `${sectionId.id}`;\r\n map = new Map();\r\n if (index > 0) {\r\n map.id = sectionId.id;\r\n totalVals.push({ id: map.id, map: map });\r\n } else {\r\n map.id = sectionId.id;\r\n firstMap = map;\r\n }\r\n })\r\n }\r\n\r\n // Event handlers\r\n function handleRadioInputs() {\r\n radios.forEach(radio => {\r\n radio.addEventListener('change', () => {\r\n validateRadios();\r\n timescale = radio.value;\r\n updateTimescales();\r\n calculateVals();\r\n updateHTMLVals(totalIncome, totalExpenditure);\r\n pushGAEvent(radio);\r\n });\r\n });\r\n }\r\n\r\n function handleButtons() {\r\n const buttons = document.querySelectorAll('.student-budget-calculator button');\r\n buttons.forEach(button => {\r\n button.addEventListener('click', event => {\r\n const section = button.closest('form');\r\n event.preventDefault();\r\n\r\n if (button.id === 'budgetCalc-continue') {\r\n if (!timescaleSet) {\r\n validateRadios();\r\n pushGAEvent(button, 'continue', false);\r\n } else {\r\n toggleSection();\r\n scrollCalcTop();\r\n pushGAEvent(button, 'continue', true);\r\n }\r\n }\r\n\r\n if (button.classList.contains('btn__add-category') || button.classList.contains('btn__new-category')) {\r\n addNewCategory(button, section);\r\n if(button.classList.contains('btn__add-category')) {\r\n pushGAEvent(button, 'addCategory', false);\r\n } else {\r\n pushGAEvent(button, 'newCategory', false);\r\n }\r\n }\r\n });\r\n });\r\n\r\n const downloadLink = document.querySelector('#budgetCalc-download-budget');\r\n downloadLink.addEventListener('click', event => {\r\n event.preventDefault();\r\n populateHiddenResults();\r\n generatePDF();\r\n pushGAEvent(downloadLink, 'download', false);\r\n });\r\n\r\n const backlinks = document.querySelectorAll('.edit-previous');\r\n backlinks.forEach(backlink => {\r\n backlink.addEventListener('click', event => {\r\n event.preventDefault();\r\n toggleSection();\r\n scrollCalcTop();\r\n });\r\n })\r\n }\r\n\r\n function handleTextInputs() {\r\n const inputs = document.querySelectorAll('.student-budget-calculator input[type=\"text\"]');\r\n inputs.forEach(input => {\r\n const section = input.closest('form').id;\r\n input.addEventListener('keyup', () => {\r\n updateVals(input, section);\r\n calculateVals();\r\n updateHTMLVals(totalIncome, totalExpenditure);\r\n });\r\n input.addEventListener('keypress', event => {\r\n validateTextboxes(input, event);\r\n });\r\n\r\n input.addEventListener('focusout', () => {\r\n pushGAEvent(input);\r\n });\r\n });\r\n }\r\n\r\n function validateTextboxes(input, event) {\r\n if (input.classList.contains('calculation-val')) {\r\n if ((event.keyCode >= 48 && event.keyCode <= 57) ||\r\n (event.keyCode >= 37 && event.keyCode <= 39) ||\r\n event.keyCode === 63234 || event.keyCode === 63235 ||\r\n event.keyCode === 8 || event.keyCode === 45 || event.keyCode === 189) {\r\n return true;\r\n } else if (event.keyCode === 46 && input.value.indexOf('.', 0) === -1) {\r\n return true;\r\n } else {\r\n event.preventDefault();\r\n return false;\r\n }\r\n } else {\r\n const regex = /^[\\w\\s]+$/;\r\n const keyed = String.fromCharCode(!event.charCode ? event.which : event.charCode);\r\n const isValid = regex.test(keyed);\r\n if (!isValid) {\r\n event.preventDefault();\r\n return false;\r\n }\r\n }\r\n }\r\n\r\n function validateRadios() {\r\n timescaleSet = false;\r\n for (const radioButton of radios) {\r\n if (radioButton.checked) {\r\n timescaleSet = true;\r\n break;\r\n }\r\n }\r\n if (!timescaleSet) {\r\n radios[0].closest('.field-group').classList.add('field-group--error');\r\n } else {\r\n radios[0].closest('.field-group').classList.remove('field-group--error');\r\n }\r\n return timescaleSet;\r\n }\r\n\r\n function toggleSection() {\r\n const screen1 = document.querySelector('.student-budget-calculator__screen-1');\r\n const screen2 = document.querySelector('.student-budget-calculator__screen-2');\r\n const progressTitle = document.querySelector('.student-budget-calculator__progress--title');\r\n const progressCount = document.querySelector('.student-budget-calculator__progress--count');\r\n const progressIndicator = document.querySelector('.student-budget-calculator__progress--indicator');\r\n const progressTitle1 = document.querySelector('#student-budget-calculator__progress-title-1');\r\n const progressTitle2 = document.querySelector('#student-budget-calculator__progress-title-2');\r\n\r\n screen1.classList.toggle('display-none');\r\n screen2.classList.toggle('display-none');\r\n progressIndicator.classList.toggle('complete');\r\n\r\n if (screen1.classList.contains('display-none')) {\r\n if (isNotEmptyOrNull(progressTitle2)) {\r\n const progressTitle2Content = progressTitle2.innerHTML;\r\n progressTitle.innerHTML = progressTitle2Content;\r\n }\r\n progressCount.innerHTML = `2`;\r\n } else {\r\n if (isNotEmptyOrNull(progressTitle1)) {\r\n const progressTitle1Content = progressTitle1.innerHTML;\r\n progressTitle.innerHTML = progressTitle1Content;\r\n }\r\n progressCount.innerHTML = `1`;\r\n }\r\n }\r\n\r\n function scrollCalcTop() {\r\n let top = document.querySelector('.student-budget-calculator__progress');\r\n top.scrollIntoView({ behavior: \"smooth\", block: \"start\", inline: \"nearest\" });\r\n }\r\n\r\n function updateTimescales() {\r\n const visibleTimescale = document.querySelector('.visible-timescale');\r\n visibleTimescale.classList.remove('display-none');\r\n const timeText = document.querySelectorAll('.transform-timescale');\r\n timeText.forEach(text => {\r\n text.innerHTML = timescale;\r\n });\r\n const amounts = document.querySelectorAll('.transform-amount');\r\n amounts.forEach(amount => {\r\n const val = parseInt(amount.getAttribute('data-amount'));\r\n const tscale = amount.getAttribute('data-timescale');\r\n if (tscale === timescale) {\r\n amount.innerHTML = `£${val}`;\r\n return;\r\n } else if (tscale === 'week' && timescale === 'month') {\r\n amount.innerHTML = `£${parseInt((val * 52) / 12)}`;\r\n } else {\r\n amount.innerHTML = `£${parseInt((val * 12) / 52)}`;\r\n }\r\n });\r\n\r\n const timeTextOpposites = document.querySelectorAll('.transform-timescale__Opposite');\r\n if (timescale === 'week') {\r\n timeTextOpposites.forEach(timeTextOpposite => {\r\n timeTextOpposite.innerHTML = 'month';\r\n })\r\n } else {\r\n timeTextOpposites.forEach(timeTextOpposite => {\r\n timeTextOpposite.innerHTML = 'week';\r\n })\r\n }\r\n }\r\n\r\n function addNewCategory(button, section) {\r\n const addCategory = section.querySelector('.add-category') || '';\r\n if (button.classList.contains('btn__add-category')) {\r\n addCategory.classList.remove('display-none');\r\n addCategory.querySelector('input[type=\"text\"]').focus();\r\n button.classList.add('display-none');\r\n }\r\n if (button.classList.contains('btn__new-category')) {\r\n const newCategory = addCategory.querySelector('input[type=\"text\"]').value;\r\n if (newCategory === null || newCategory === '') {\r\n return;\r\n } else {\r\n addCategory.classList.add('display-none');\r\n AddCategoryFragment(section, newCategory);\r\n addCategory.querySelector('input[type=\"text\"]').value = '';\r\n section.querySelector('.btn__add-category').classList.remove('display-none');\r\n }\r\n }\r\n }\r\n\r\n function AddCategoryFragment(section, newCategory) {\r\n const questionGroup = section.querySelector('.question-group');\r\n const newElement = document.createElement('fieldset');\r\n newElement.classList.add('field-group', 'field-group--small', 'field-group--horizontal', 'user-created-input');\r\n const uniqueIDModifier = Math.floor(Math.random() * 10000);\r\n const categoryId = newCategory.replace(/\\s/g, '');\r\n const inputPlaceHolderText = document.getElementById('student-budget-calculator__input-placeholder');\r\n let inputPlaceHolderTextValue;\r\n inputPlaceHolderTextValue = isNotEmptyOrNull(inputPlaceHolderText.innerHTML) ? inputPlaceHolderText.innerHTML : 0;\r\n\r\n const template = `\r\n
\r\n ${label}\r\n ${value}\r\n
\r\n `;\r\n }\r\n });\r\n\r\n breakdownHTML += `