{"version":3,"sources":["Content/js/clamp-ellipsis.js","Content/js/contact-form.js","Content/js/communication-preferences-form.js","Content/js/donation-block.js","Content/js/donation-form.js","Content/js/downloadable-content-module.js","Content/js/lived-experience-form.js","Content/js/member-form.js","Content/js/phone-number.js","Content/js/share-module.js"],"names":["document","addEventListener","conditionFeature","querySelectorAll","length","Array","prototype","forEach","call","item","index","$clamp","clamp","useNativeClamp","cardShortDescription","_createForOfIteratorHelper","o","allowArrayLike","it","Symbol","iterator","isArray","_unsupportedIterableToArray","i","F","s","n","done","value","e","_e","f","TypeError","err","normalCompletion","didErr","step","next","_e2","minLen","_arrayLikeToArray","Object","toString","slice","constructor","name","from","test","arr","len","arr2","buildContactForm","base","reset","subscriptionMethodsToSubmit","subscriptionMethodsContainer","querySelector","countryIdInput","fetchCountries","onSuccess","request","XMLHttpRequest","open","onload","status","JSON","parse","responseText","send","fetchSubscriptionsDeliveryMethods","focusOnEl","el","focusTarget","tagName","button","focus","scrollPosition","window","pageYOffset","getBoundingClientRect","top","elements","elHeight","clientHeight","topHeight","scroll","scrollTop","validateForm","form","data","FormData","errorsContainer","requiredFields","innerHTML","_step","_iterator","entry","indexOf","input","field","parentNode","errorEl","setAttribute","classList","remove","getAttribute","push","type","listHtml","label","add","concat","id","dataset","html","error","createContact","_step2","dataString","_iterator2","setRequestHeader","response","createSubscriptions","contactId","_step3","_iterator3","createSubscription","deliveryMethodId","populateCountries","countries","options","option","countryId","populateSubscriptionsDeliveryMethods","methods","toLowerCase","watchForm","fieldset","removeAttribute","preventDefault","postBeforeSubmit","method","submit","notification","init","_step4","_iterator4","theForm","clientWidth","popupButton","popupContent","activePopupButton","modal","tingle","stickyFooter","closeMethods","closeLabel","cssClass","beforeOpen","popupTitle","title","onOpen","phoneNumber","onClose","setContent","communicationPreferencesForm","steps","introText","setTimeout","console","log","removeChild","event","donationModules","currentModule","donationAmountMenuRadios","selectedDonationType","donationAmountMenuRadio","donation","changeDonationValue","activeSelectedDonationType","symbolAttribute","symbol","undefined","changeDonationType","urlDonationSingle","maxDonationAmount","donationModule","radio","_this","this","isOtherAmountDonation","contains","donationImgEl","donationCopyEl","donationButtonEl","donationValueEls","donationRadioValue","donationRadioCopy","donationRadioImg","donationCampaign","updateValue","src","validity","valid","Math","floor","blur","select","selectedAmount","donationQuerySymbol","donationUrl","buildDonationForm","initButtons","stOneOffButton","getElementById","gcRegularButton","spinner","submitForm","style","display","updateButtons","donationIsOneOff","isDonationReasonError","selected","getDonationFrequency","donationFrequencyValue","donationFrequency","checked","donationAmount","donationAmountCustom","donationAmountCustomRadio","donationReason","subFields","subField","subInput","required","requiredWhen","split","errorLink","oneOffAmounts","regularAmounts","frequencyInput","setNote","setvalue","isDecimal","amount","string","note","isCustomAmount","parseFloat","toFixed","nextSteps","step2","yOffset","y","scrollTo","behavior","setGiftAidAmounts","oldAmount","newAmount","rounded","dcModules","loadMoreBtn","downloadableContent","loadMore","rowsShown","btn","rows","rowsToShow","row","livedExperienceForm","userEligible","useNotEligible","buildModal","close","requiresExplanation","eligible","inputs","_toConsumableArray","_arrayWithoutHoles","_iterableToArray","_nonIterableSpread","iter","memberForm","back","giftAid","giftAidToggle","fieldsetType","fieldsetFrequency","fieldsetDonation","fieldsetPaymentMonthly","fieldsetPaymentAnnual","inputType","inputFrequency","inputDonationOther","inputGiftAid","clearDonation","inputDonation","loading","$step","$wagedPrice","$unwagedPrice","$monthlyPrice","$annualPrice","$frequency","$donationOptions","$donationOptionOne","$donationOptionTwo","$donationOptionThree","$donationOptionFour","$frequencyPrice","$donationPrice","$totalPrice","$giftAidPrice","$giftAid","$paymentMethod","stepId","parseInt","toStep","updateStep","history","ignorePushState","viewingStep","url","URL","location","pushState","_event$state","state","prepareForm","wagedPrice","unwagedPrice","capitalize","word","loweredCase","toUpperCase","frequency","filter","dispatchEvent","Event","wagedMonthlyPrice","wagedAnnualPrice","hidden","resetDonations","setFrequencyPrice","setPaymentOptions","setDonationOptions","isInvalid","isNaN","resetDonationOther","updateDonationPrice","resetDonation","paymentMethod","updateFrequencyPrice","donationOptionsHtml","updateTotalPrice","prices","updateGiftAidPrice","formatPrice","str","price","pence","phoneInput","watchingPhoneNumber","phoneMask","phone","replace","showShareIcons","currentElement","currentElementList","pageTitle","navigator","share","nativeShareCta","href","sharers","icon","to","subject","currentElementListContent","listItemContent","join","Sharer","shareModules","currentShareModules"],"mappings":"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","file":"scriptsBundleTertiary.js","sourcesContent":["(function () {\r\n document.addEventListener(\"DOMContentLoaded\", function () {\r\n let conditionFeature = document.querySelectorAll(\".condition-feature-card p.short-intro\");\r\n if (conditionFeature.length > 0) {\r\n Array.prototype.forEach.call(conditionFeature, function (item, index) {\r\n $clamp(item, { clamp: 3, useNativeClamp: false });\r\n });\r\n }\r\n \r\n let cardShortDescription = document.querySelectorAll(\".card p.short-intro\");\r\n if (cardShortDescription.length > 0) {\r\n Array.prototype.forEach.call(cardShortDescription, function (item, index) {\r\n $clamp(item, { clamp: 3, useNativeClamp: false });\r\n });\r\n }\r\n });\r\n})();","const buildContactForm = (base, reset) => {\r\n\tbase = base || document\r\n\r\n\tlet subscriptionMethodsToSubmit = [];\r\n\tconst subscriptionMethodsContainer = base.querySelector('.js-contact-form-subscriptions-delivery-methods');\r\n\tconst countryIdInput = base.querySelector('.js-countryId-input');\r\n\r\n\tconst fetchCountries = (onSuccess) => {\r\n\t\tconst request = new XMLHttpRequest();\r\n\t request.open('GET', '/umbraco/api/Countries/Get', true);\r\n\r\n\t request.onload = () => {\r\n\t if (request.status >= 200 && request.status < 400) {\r\n\t return onSuccess(JSON.parse(request.responseText));\r\n\t }\r\n\t }\r\n\r\n\t request.send();\r\n\t}\r\n\r\n\tconst fetchSubscriptionsDeliveryMethods = (onSuccess) => {\r\n\t\tconst request = new XMLHttpRequest();\r\n\t request.open('GET', '/umbraco/api/Subscriptions/GetDeliveryMethods', true);\r\n\r\n\t request.onload = () => {\r\n\t if (request.status >= 200 && request.status < 400) {\r\n\t return onSuccess(JSON.parse(request.responseText));\r\n\t }\r\n\t }\r\n\r\n\t request.send();\r\n\t}\r\n\r\n\tconst focusOnErrors = (errorsContainer) => {\r\n\t\tconst button = errorsContainer.querySelector('button');\r\n\r\n\t\tif (button) {\r\n\t\t\tbutton.focus();\r\n\t\t}\r\n\r\n\t\tif (base === document) {\r\n\t\t\tconst scrollPosition = window.pageYOffset + errorsContainer.getBoundingClientRect().top;\r\n\t\t\tconst topEl = document.querySelector('.navigation-bar-holder');\r\n\t\t\tconst topHeight = scrollPosition - (topEl.clientHeight + 30);\r\n\r\n\t\t\twindow.scroll(0, topHeight);\r\n\r\n\t\t} else {\r\n\t\t\tbase.scrollTop = 0;\r\n\t\t}\r\n\t}\r\n\r\n\tconst focusOnEl = (el) => {\r\n\t\tlet focusTarget;\r\n\r\n\t\tif (el.tagName === 'INPUT' || el.tagName === 'SELECT') {\r\n\t\t\tfocusTarget = el;\r\n\t\t} else {\r\n\t\t\tconst button = el.querySelector('button');\r\n\r\n\t\t\tif (button) {\r\n\t\t\t\tfocusTarget = button;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (focusTarget) {\r\n\t\t\tfocusTarget.focus();\r\n\t\t}\r\n\r\n\t\tif (base === document) {\r\n\t\t\tconst scrollPosition = window.pageYOffset + el.getBoundingClientRect().top;\r\n\t\t\t\r\n\t\t\tconst elements = [\r\n\t\t\t\tdocument.querySelector('.navigation-bar-holder'),\r\n\t\t\t\tdocument.querySelector('.condition-sub-nav')\r\n\t\t\t];\r\n\r\n\t\t\tlet elHeight = 0;\r\n\r\n\t\t\telements.forEach(el => {\r\n\t\t\t\tif (el) {\r\n\t\t\t\t\telHeight += el.clientHeight;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tconst topHeight = scrollPosition - (elHeight + 30);\r\n\t\t\t\r\n\t\t\twindow.scroll(0, topHeight);\r\n\t\t} else {\r\n\t\t\tbase.scrollTop = 0;\r\n\t\t}\r\n\t}\r\n\r\n\tconst validateForm = (form, onSuccess) => {\r\n\t\tconst data = new FormData(form);\r\n\t\tconst errorsContainer = form.querySelector('.js-contact-form-errors');\r\n\t\tlet requiredFields = [];\r\n\r\n\t\terrorsContainer.innerHTML = null;\r\n\r\n\t\tfor (let entry of data) {\r\n\t\t\tif (entry[0].indexOf('contact-') !== 0) {\r\n\t\t\t\tconst input = form.querySelector('#contact-' + entry[0]);\r\n\r\n\t\t\t\tif (input) {\r\n\t\t\t\t\tconst field = input.parentNode;\r\n\t\t\t\t\tconst errorEl = field.querySelector('.js-contact-form-input-error');\r\n\r\n\t\t\t\t\tinput.setAttribute('aria-invalid', false);\r\n\t\t\t\t\tfield.classList.remove('field--error');\r\n\r\n\t\t\t\t\tif (errorEl) {\r\n\t\t\t\t\t\terrorEl.innerHTML = null;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (input.getAttribute('aria-required') === 'true' && input.value === '') {\r\n\t\t\t\t\t\trequiredFields.push({\r\n\t\t\t\t\t\t\tinput: input,\r\n\t\t\t\t\t\t\ttype: 'required'\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t\tinput.setAttribute('aria-invalid', true);\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tif (input.type === 'email' && !/^\\w+([\\.-]?\\w+)*@\\w+([\\.-]?\\w+)*(\\.\\w{2,3})+$/.test(input.value)) {\r\n\t\t\t\t\t\t\trequiredFields.push({\r\n\t\t\t\t\t\t\t\tinput: input,\r\n\t\t\t\t\t\t\t\ttype: 'invalid'\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\tinput.setAttribute('aria-invalid', true);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (requiredFields.length > 0) {\r\n\t\t\tlet listHtml = ''\r\n\r\n\t\t\trequiredFields.forEach(item => {\r\n\t\t\t\tconst field = item.input.parentNode;\r\n\t\t\t\tconst label = field.querySelector('label')\r\n\t\t\t\tconst errorEl = field.querySelector('.js-contact-form-input-error');\r\n\r\n\t\t\t\tfield.classList.add('field--error');\r\n\r\n\t\t\t\tif (label) {\r\n\t\t\t\t\tlistHtml += `
  • `\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (errorEl) {\r\n\t\t\t\t\terrorEl.innerHTML = `${label.dataset.label ? label.dataset.label : label.innerHTML} is ${item.type}`\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tlet html = `

    Please fix the following errors before submitting.

    `;\r\n\r\n\t\t\tif (listHtml !== '') {\r\n\t\t\t\thtml += ``;\r\n\t\t\t}\r\n\r\n\t\t\terrorsContainer.innerHTML = html;\r\n\r\n\t\t\tfocusOnEl(errorsContainer);\r\n\r\n\t\t\tform.querySelectorAll('.js-contact-form-error').forEach(error => {\r\n\t\t\t\terror.addEventListener('click', () => {\r\n\t\t\t\t\tconst input = form.querySelector('#' + error.dataset.input);\r\n\r\n\t\t\t\t\tif (input) {\r\n\t\t\t\t\t\tinput.focus();\r\n\t\t\t\t\t\tfocusOnEl(input);\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t});\r\n\t\t} else {\r\n\t\t\tonSuccess(data)\r\n\t\t}\r\n\t}\r\n\r\n\tconst createContact = (data, onSuccess) => {\r\n\t\tconst request = new XMLHttpRequest();\r\n\t request.open('POST', '/umbraco/api/Contacts/Create', true);\r\n\r\n\t let dataString = ''\r\n\r\n\t for (let entry of data) {\r\n\t \tif (entry[0].indexOf('contact-') !== 0) {\r\n\t\t\t\tdataString += entry[0] + '=' + entry[1] + '&'\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tdataString = dataString.slice(0, -1);\r\n\r\n\t\trequest.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');\r\n\r\n\t request.onload = () => {\r\n\t if (request.status >= 200 && request.status < 400) {\r\n\t const response = JSON.parse(request.response);\r\n\t if (response && subscriptionMethodsContainer) {\r\n\t \tcreateSubscriptions(response.contactId, data, onSuccess);\r\n\t } else {\r\n\t \tonSuccess();\r\n\t }\r\n\t }\r\n\t }\r\n\r\n\t request.send(dataString);\r\n\t}\r\n\r\n\tconst createSubscriptions = (contactId, data, onSuccess) => {\r\n\t\tsubscriptionMethodsToSubmit = [];\r\n\r\n\t for (let entry of data) {\r\n\t \tif (entry[0].indexOf('contact-') === 0) {\r\n\t \t\tsubscriptionMethodsToSubmit.push(entry[1]);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (subscriptionMethodsToSubmit.length > 0) {\r\n\t\t\tcreateSubscription(contactId, 0, onSuccess);\r\n\t\t} else {\r\n\t\t\tonSuccess();\r\n\t\t}\r\n\t}\r\n\r\n\tconst createSubscription = (contactId, index, onSuccess) => {\r\n\t\tconst request = new XMLHttpRequest();\r\n\t request.open('POST', '/umbraco/api/Subscriptions/Create', true);\r\n\r\n\t const deliveryMethodId = subscriptionMethodsToSubmit[index];\r\n\r\n\t // let dataString = 'contactId=3be69c44-4cc2-ed11-b597-6045bd0d4896&deliveryMethodId=883f44b5-2152-e911-a85e-000d3a290633'\r\n\t let dataString = `contactId=${contactId}&deliveryMethodId=${deliveryMethodId}`;\r\n\r\n\t\trequest.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');\r\n\r\n\t request.onload = () => {\r\n\t if (request.status >= 200 && request.status < 400) {\r\n\t\t if (index < subscriptionMethodsToSubmit.length - 1) {\r\n\t\t \tcreateSubscription(contactId, index + 1, onSuccess);\r\n\t\t } else {\r\n\t\t \tonSuccess();\r\n\t\t }\r\n\t }\r\n\t }\r\n\r\n\t request.send(dataString);\r\n\t}\r\n\r\n\tconst populateCountries = (countries) => {\r\n\t\tlet options = '';\r\n\r\n\t\tcountries.forEach(option => {\r\n\t\t\toptions += ``;\r\n\t\t})\r\n\r\n\t\tif (countryIdInput && options !== '') {\r\n\t\t\tcountryIdInput.innerHTML = options;\r\n\t\t}\r\n\t}\r\n\r\n\tconst populateSubscriptionsDeliveryMethods = (methods) => {\r\n\t\tlet options = '';\r\n\r\n\t\tmethods.forEach(option => {\r\n\t\t\toptions += `
    \r\n \r\n \r\n\t\t\t\t\t\"\"\r\n\t\t\t\t\r\n \r\n
    `;\r\n\t\t})\r\n\r\n\t\tif (subscriptionMethodsContainer && options !== '') {\r\n\t\t\tsubscriptionMethodsContainer.innerHTML = options;\r\n\t\t}\r\n\t}\r\n\r\n\tconst watchForm = () => {\r\n\t\tconst form = base.querySelector('.js-contact-form');\r\n\t\tconst fieldset = form.querySelector('fieldset');\r\n\t\tconst button = document.querySelectorAll('.js-contact-form-start');\r\n\r\n\t\tif (form) {\r\n\t\t\tfieldset.removeAttribute('disabled');\r\n\t\t\tform.addEventListener('submit', (e) => {\r\n\t\t\t\te.preventDefault();\r\n\t\t\t\tvalidateForm(form, (data) => {\r\n\t\t\t\t\tif (form.dataset.postBeforeSubmit === 'true') {\r\n\t\t\t\t\t\tform.method = 'post';\r\n\r\n\t\t\t\t\t\tform.submit();\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tfieldset.setAttribute('disabled', true);\r\n\r\n\t\t\t\t\t\tcreateContact(data, () => {\r\n\t\t\t\t\t\t\tfieldset.removeAttribute('disabled');\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\tconst notification = form.querySelector('.js-contact-form-notification');\r\n\r\n\t\t\t\t\t\t\tif (notification) {\r\n\t\t\t\t\t\t\t\tnotification.innerHTML = 'Submission Complete';\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t});\r\n\r\n\t\t\tbutton.forEach(el => {\r\n\t\t\t\tel.addEventListener('click', () => {\r\n\t\t\t\t\tconst input = form.querySelector('input, select, textarea');\r\n\r\n\t\t\t\t\tif (input) {\r\n\t\t\t\t\t\tinput.focus();\r\n\t\t\t\t\t\tfocusOnEl(input);\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tconst init = () => {\r\n\t\tif (reset) {\r\n\t\t\tconst form = base.querySelector('.js-contact-form');\r\n\t\t\t\r\n\t\t\tif (form) {\r\n\t\t\t\tconst data = new FormData(form);\r\n\r\n\t\t\t\tfor (let entry of data) {\r\n\t\t\t\t\tif (entry[0].indexOf('contact-') !== 0) {\r\n\t\t\t\t\t\tconst input = form.querySelector('#contact-' + entry[0]);\r\n\t\t\t\t\t\tconst field = input.parentNode;\r\n\t\t\t\t\t\tconst errorEl = field.querySelector('.js-contact-form-input-error');\r\n\r\n\t\t\t\t\t\tinput.value = null;\r\n\t\t\t\t\t\tinput.setAttribute('aria-invalid', false);\r\n\t\t\t\t\t\tfield.classList.remove('field--error');\r\n\r\n\t\t\t\t\t\tif (errorEl) {\r\n\t\t\t\t\t\t\terrorEl.innerHTML = null;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\t\t\t\r\n\t\t\t\tconst errorsContainer = form.querySelector('.js-contact-form-errors')\r\n\t\t\t\terrorsContainer.innerHTML = null;\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tif (countryIdInput) {\r\n\t\t\t\tfetchCountries(countries => {\r\n\t\t\t\t\tif (subscriptionMethodsContainer) {\r\n\t\t\t\t\t\tfetchSubscriptionsDeliveryMethods(methods => {\r\n\t\t\t\t\t\t\tpopulateCountries(countries);\r\n\t\t\t\t\t\t\tpopulateSubscriptionsDeliveryMethods(methods);\r\n\t\t\t\t\t\t\twatchForm();\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tpopulateCountries(countries);\r\n\t\t\t\t\t\twatchForm();\r\n\t\t\t\t\t}\r\n\t\t\t\t\t\r\n\t\t\t\t\t// const request = new XMLHttpRequest();\r\n\t\t\t\t // request.open('GET', '/umbraco/api/memberships/getpaymentfrequencies', true);\r\n\r\n\t\t\t\t // request.onload = () => {\r\n\t\t\t\t // if (request.status >= 200 && request.status < 400) {\r\n\t\t\t\t // // return onSuccess(JSON.parse(request.responseText));\r\n\t\t\t\t // }\r\n\t\t\t\t // }\r\n\r\n\t\t\t\t // request.send();\r\n\t\t\t\t\t\r\n\t\t\t\t\t// const request2 = new XMLHttpRequest();\r\n\t\t\t\t // request2.open('GET', '/umbraco/api/PaymentMethods/Get', true);\r\n\r\n\t\t\t\t // request2.onload = () => {\r\n\t\t\t\t // if (request.status >= 200 && request.status < 400) {\r\n\t\t\t\t // // return onSuccess(JSON.parse(request.responseText));\r\n\t\t\t\t // }\r\n\t\t\t\t // }\r\n\r\n\t\t\t\t // request2.send();\r\n\t\t\t\t\t\r\n\t\t\t\t\t// const request4 = new XMLHttpRequest();\r\n\t\t\t\t // request4.open('GET', '/umbraco/api/PaymentProcessors/Get', true);\r\n\r\n\t\t\t\t // request4.onload = () => {\r\n\t\t\t\t // if (request.status >= 200 && request.status < 400) {\r\n\t\t\t\t // // return onSuccess(JSON.parse(request.responseText));\r\n\t\t\t\t // }\r\n\t\t\t\t // }\r\n\r\n\t\t\t\t // request4.send();\r\n\t\t\t\t\t\r\n\t\t\t\t\t// const request5 = new XMLHttpRequest();\r\n\t\t\t\t // request5.open('GET', '/umbraco/api/Memberships/GetPriceLists', true);\r\n\r\n\t\t\t\t // request5.onload = () => {\r\n\t\t\t\t // if (request.status >= 200 && request.status < 400) {\r\n\t\t\t\t // // return onSuccess(JSON.parse(request.responseText));\r\n\t\t\t\t // }\r\n\t\t\t\t // }\r\n\r\n\t\t\t\t // request5.send();\r\n\t\t\t\t})\r\n\t\t\t} else {\r\n\t\t\t\twatchForm();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tinit();\r\n}\r\n\r\nconst theForm = document.querySelector('.js-contact-form')\r\n\r\nif (theForm && theForm.clientWidth > 0) {\r\n\tbuildContactForm()\r\n} else {\r\n\tconst popupButton = document.querySelectorAll('.js-contact-form-popup');\r\n\tconst popupContent = document.querySelector('.js-contact-form-popup-content');\r\n\r\n\tif (popupButton && popupContent) {\r\n\t\tlet activePopupButton;\r\n\t\t\r\n\t\tconst modal = new tingle.modal({\r\n\t\t stickyFooter: false,\r\n\t\t closeMethods: ['overlay', 'button', 'escape'],\r\n\t\t closeLabel: \"Close\",\r\n \t\tcssClass: ['tingle-modal--full-mobile'],\r\n\t\t beforeOpen: () => {\r\n\t\t \tconst popupTitle = document.querySelector('.tingle-modal .js-contact-form-popup-title')\r\n\r\n\t\t \tif (popupTitle) {\r\n\t\t \t\tpopupTitle.innerHTML = activePopupButton.dataset.title;\r\n\t\t \t}\r\n\t\t },\r\n\t\t onOpen: () => {\r\n\t\t buildContactForm(document.querySelector('.tingle-modal'));\r\n\t\t phoneNumber();\r\n\t\t },\r\n\t\t onClose: () => {\r\n\t\t buildContactForm(document.querySelector('.tingle-modal'), true);\r\n\t\t }\r\n\t\t});\r\n\r\n\t\t// set content\r\n\t\tmodal.setContent(document.querySelector('.js-contact-form-popup-content').innerHTML);\r\n\r\n\t\tpopupButton.forEach(button => {\r\n\t\t\tbutton.addEventListener('click', () => {\r\n\t\t\t\tactivePopupButton = button\r\n\t\t\t\tmodal.open();\r\n\t\t\t});\r\n\t\t});\r\n\t}\r\n}","const communicationPreferencesForm = () => {\r\n\tconst form = document.querySelector('.js-communication-preferences-form');\r\n\r\n\tif (form) {\r\n\t\tconst fieldset = form.querySelector('fieldset');\r\n\t\tconst steps = form.querySelectorAll('[data-step]');\r\n\t\tconst introText = form.querySelector('.intro__text');\r\n\r\n\t\tfieldset.removeAttribute('disabled');\r\n\t\t\r\n\t\tform.addEventListener('submit', (e) => {\r\n\t\t\te.preventDefault()\r\n\r\n\t\t\tconst data = new FormData(form);\r\n\r\n\t\t\tfieldset.setAttribute('disabled', true);\r\n\r\n\t\t\tsetTimeout(() => {\r\n\t\t\t\tfieldset.removeAttribute('disabled');\t\t\t\t\r\n\t\t\t}, 1000);\r\n\r\n\t\t\tconsole.log(data)\r\n\r\n\t\t\tif (introText) {\r\n\t\t\t\tintroText.parentNode.removeChild(introText);\r\n\t\t\t}\r\n\r\n\t\t\tsteps.forEach((step, i) => {\r\n\t\t\t\tif (i === 0) {\r\n\t\t\t\t\tstep.classList.add('is-d-none')\r\n\t\t\t\t}\r\n\t\t\t\tif (i === 1) {\r\n\t\t\t\t\tstep.classList.remove('is-d-none')\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t});\r\n\t}\r\n}\r\n\r\ncommunicationPreferencesForm()","(function () {\r\n document.addEventListener(\"DOMContentLoaded\", (event) => {\r\n const donationModules = document.querySelectorAll(\".donation-block\");\r\n\r\n Array.prototype.forEach.call(donationModules, (el, i) => {\r\n const currentModule = el;\r\n const donationAmountMenuRadios = currentModule.querySelectorAll(\".donation-amount-menu input[type='radio']\");\r\n const selectedDonationType = currentModule.querySelector(\".donation--campaign\");\r\n\r\n Array.prototype.forEach.call(donationAmountMenuRadios, (el, i) => {\r\n const donationAmountMenuRadio = el;\r\n\r\n donationAmountMenuRadio.addEventListener(\"change\", () => {\r\n donation.changeDonationValue(currentModule, donationAmountMenuRadio);\r\n });\r\n });\r\n\r\n if (selectedDonationType) {\r\n selectedDonationType.addEventListener(\"change\", () => {\r\n const activeSelectedDonationType = selectedDonationType.querySelector('option:checked');\r\n const symbolAttribute = activeSelectedDonationType.getAttribute('data-symbol');\r\n const symbol = symbolAttribute !== undefined && symbolAttribute !== null ? symbolAttribute : \"?\";\r\n donation.changeDonationType(currentModule, selectedDonationType, symbol);\r\n });\r\n }\r\n });\r\n });\r\n\r\n const donation = {\r\n data: {\r\n urlDonationSingle: \"https://my.rethink.org/donorhub/No_Fuss_donation.aspx\",\r\n maxDonationAmount: 9999\r\n },\r\n changeDonationValue: function (donationModule, radio) {\r\n const isOtherAmountDonation = radio.classList.contains(\"other-radio\");\r\n const donationImgEl = donationModule.querySelector(\".donation--img\");\r\n const donationCopyEl = donationModule.querySelector(\".donation--copy\");\r\n const donationButtonEl = donationModule.querySelector(\".donate-btn-wrapper a\");\r\n const donationValueEls = donationModule.querySelectorAll(\".donation--value\");\r\n let donationRadioValue = radio.value;\r\n const donationRadioCopy = radio.getAttribute(\"data-text\");\r\n const donationRadioImg = radio.getAttribute(\"data-img\");\r\n const donationCampaign = document.querySelector('.donation--campaign option:checked');\r\n const symbolAttribute = donationCampaign.getAttribute('data-symbol');\r\n const symbol = symbolAttribute !== undefined && symbolAttribute !== null ? symbolAttribute : \"?\";\r\n\r\n this.updateValue(donationModule, donationButtonEl, donationValueEls, donationRadioValue, symbol);\r\n\r\n //is-single (not multi)\r\n if (!donationModule.classList.contains(\"is-multi\")) {\r\n donationCopyEl.innerHTML = donationRadioCopy;\r\n }\r\n\r\n //is-multi\r\n if (donationModule.classList.contains(\"is-multi\")) {\r\n donationImgEl.src = donationRadioImg;\r\n donationCopyEl.innerHTML = donationRadioCopy;\r\n }\r\n\r\n if (isOtherAmountDonation) {\r\n const input = donationModule.querySelector(\".other-input\");\r\n input.classList.remove(\"is-d-none\");\r\n input.focus();\r\n\r\n input.addEventListener(\"keyup\", (event) => {\r\n if (input.value > this.data.maxDonationAmount) {\r\n donationRadioValue = this.data.maxDonationAmount;\r\n input.value = donationRadioValue;\r\n } else {\r\n if (!input.validity.valid) {\r\n input.value = donationRadioValue;\r\n } else {\r\n donationRadioValue = Math.floor(input.value);\r\n this.updateValue(donationModule, donationButtonEl, donationValueEls, donationRadioValue, symbol);\r\n }\r\n }\r\n });\r\n\r\n } else {\r\n const input = donationModule.querySelector(\".other-input\");\r\n input.classList.add(\"is-d-none\");\r\n input.blur();\r\n }\r\n },\r\n changeDonationType: function (donationModule, select, symbol) {\r\n const donationButtonEl = donationModule.querySelector(\".donate-btn-wrapper a\");\r\n const selectedAmount = donationModule.querySelector(\".donation-amount-menu input[type='radio']:checked\");\r\n donationButtonEl.setAttribute(\"href\", `${select.value}${symbol}amount=${selectedAmount.value}`);\r\n },\r\n updateValue: function (donationModule, donationButtonEl, donationValueEls, donationRadioValue, donationQuerySymbol) {\r\n if (!donationModule.classList.contains(\"is-multi\")) {\r\n donationButtonEl.setAttribute(\"href\", `${this.data.urlDonationSingle}${donationQuerySymbol}amount=${donationRadioValue}`);\r\n } else {\r\n const donationUrl = donationModule.querySelector(\".donation--campaign\");\r\n donationButtonEl.setAttribute(\"href\", `${donationUrl.value}${donationQuerySymbol}amount=${donationRadioValue}`);\r\n }\r\n\r\n Array.prototype.forEach.call(donationValueEls, (el, i) => {\r\n el.innerHTML = donationRadioValue;\r\n });\r\n }\r\n };\r\n})();","const buildDonationForm = () => {\r\n\tconst countryIdInput = document.querySelector('.js-countryId-input');\r\n\t//let scrollTimeoutId = undefined;\r\n\r\n\tconst fetchCountries = (onSuccess) => {\r\n\t\tconst request = new XMLHttpRequest();\r\n\t request.open('GET', '/umbraco/api/Countries/Get', true);\r\n\r\n\t request.onload = () => {\r\n\t if (request.status >= 200 && request.status < 400) {\r\n\t return onSuccess(JSON.parse(request.responseText));\r\n\t }\r\n\t }\r\n\r\n\t request.send();\r\n\t}\r\n\r\n\tconst initButtons = () => {\t\t\r\n\t\tconst stOneOffButton = document.getElementById(\"st-oneoff-payment-button\");\r\n\t\tconst gcRegularButton = document.getElementById(\"gc-regular-payment-button\");\r\n\r\n\t\tconst form = document.querySelector('.js-donation-form');\r\n\t\tconst fieldset = form.querySelector('fieldset');\r\n\t\tconst spinner = document.querySelector('.donation__spinner');\r\n\r\n\t\tconst submitForm = () => {\r\n\t\t\tvalidateForm(form, (data) => {\r\n\t\t\t\t//fieldset.setAttribute('disabled', true);\r\n\r\n\t\t\t\t/*processForm(data, () => {\r\n\t\t\t\t\tfieldset.removeAttribute('disabled');\r\n\t\t\t\t}, () => {\r\n\t\t\t\t\tfieldset.removeAttribute('disabled');\r\n\t\t\t\t});*/\r\n\t\t\t\tspinner.style.display = 'block';\r\n\t\t\t\tform.submit();\r\n\t\t\t})\r\n\t\t}\r\n\r\n\t\tstOneOffButton.addEventListener('click', (e) => {\r\n\t\t\te.preventDefault();\r\n\t\t\tsubmitForm();\r\n\t\t});\r\n\t\tgcRegularButton.addEventListener('click', (e) => {\r\n\t\t\te.preventDefault();\r\n\t\t\tsubmitForm();\r\n\t\t});\r\n\t}\r\n\r\n\tconst updateButtons = () => {\r\n\t\tconst stOneOffButton = document.getElementById(\"st-oneoff-payment-button\");\r\n\t\tconst gcRegularButton = document.getElementById(\"gc-regular-payment-button\");\r\n\r\n\t\tif (window.donationIsOneOff) {\r\n\t\t\tstOneOffButton.style.display = 'block';\r\n\t\t\tgcRegularButton.style.display = 'none';\r\n\t\t} else {\r\n\t\t\tstOneOffButton.style.display = 'none';\r\n\t\t\tgcRegularButton.style.display = 'block';\r\n }\r\n\t}\r\n\t\r\n\tconst focusOnEl = (el) => {\r\n\t\tlet focusTarget;\r\n\r\n\t\tif (el.tagName === 'INPUT' || el.tagName === 'SELECT') {\r\n\t\t\tfocusTarget = el;\r\n\t\t} else {\r\n\t\t\tconst button = el.querySelector('button');\r\n\r\n\t\t\tif (button) {\r\n\t\t\t\tfocusTarget = button;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (focusTarget) {\r\n\t\t\tfocusTarget.focus();\r\n\t\t}\r\n\r\n\t\tconst scrollPosition = window.pageYOffset + el.getBoundingClientRect().top;\r\n\t\t\r\n\t\tconst elements = [\r\n\t\t\tdocument.querySelector('.navigation-bar-holder'),\r\n\t\t\tdocument.querySelector('.condition-sub-nav')\r\n\t\t];\r\n\r\n\t\tlet elHeight = 0;\r\n\r\n\t\telements.forEach(el => {\r\n\t\t\tif (el) {\r\n\t\t\t\telHeight += el.clientHeight;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tconst topHeight = scrollPosition - (elHeight + 30);\r\n\t\t\r\n\t\twindow.scroll(0, topHeight);\r\n\t}\r\n\r\n\tconst validateForm = (form, onSuccess) => {\r\n\t\tconst data = new FormData(form);\r\n\t\tconst errorsContainer = form.querySelector('.js-donation-form-errors');\r\n\t\tlet requiredFields = [];\r\n\r\n\t\terrorsContainer.innerHTML = null;\r\n\r\n\t\tfor (let entry of data) {\r\n\t\t\tif (entry[0].indexOf('donation-') !== 0) {\r\n\t\t\t\tconst input = form.querySelector('#contact-' + entry[0]);\r\n\t\t\t\tif (input == null) {\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\t\t\t\t//console.log(entry);\r\n\t\t\t\tconst field = input.parentNode;\r\n\t\t\t\tconst errorEl = field.querySelector('.js-donation-form-input-error');\r\n\r\n\t\t\t\tinput.setAttribute('aria-invalid', false);\r\n\t\t\t\tfield.classList.remove('field--error');\r\n\r\n\t\t\t\tif (errorEl) {\r\n\t\t\t\t\terrorEl.innerHTML = null;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (input.getAttribute('aria-required') === 'true' && (input.value === '' || input.value === '-1')) {\r\n\t\t\t\t\trequiredFields.push({\r\n\t\t\t\t\t\tinput: input,\r\n\t\t\t\t\t\ttype: 'required'\r\n\t\t\t\t\t});\r\n\t\t\t\t\tinput.setAttribute('aria-invalid', true);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tif (input.type === 'email' && !/^\\w+([\\.-]?\\w+)*@\\w+([\\.-]?\\w+)*(\\.\\w{2,3})+$/.test(input.value)) {\r\n\t\t\t\t\t\trequiredFields.push({\r\n\t\t\t\t\t\t\tinput: input,\r\n\t\t\t\t\t\t\ttype: 'invalid'\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t\tinput.setAttribute('aria-invalid', true);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (input.type === 'select') {\r\n\t\t\t\t\t\t//console.log('select');\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (requiredFields.length > 0) {\r\n\t\t\tlet listHtml = '';\r\n\t\t\tlet isDonationReasonError = false;\r\n\r\n\t\t\trequiredFields.forEach(item => {\r\n\t\t\t\tconst field = item.input.parentNode;\r\n\t\t\t\tconst label = field.querySelector('label')\r\n\t\t\t\tconst errorEl = field.querySelector('.js-donation-form-input-error');\r\n\r\n\t\t\t\tfield.classList.add('field--error');\r\n\r\n\t\t\t\tif (label) {\r\n\t\t\t\t\tlistHtml += `
  • `\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (errorEl) {\r\n\t\t\t\t\terrorEl.innerHTML = `${label.dataset.label ? label.dataset.label : label.innerHTML} is ${item.type}`\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (item.input.id === 'contact-in-memory-of' || item.input.id === 'contact-collection-reason') {\r\n\t\t\t\t\tisDonationReasonError = true;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tlet html = `

    Please fix the following errors before submitting.

    `;\r\n\r\n\t\t\tif (listHtml !== '') {\r\n\t\t\t\thtml += ``;\r\n\t\t\t}\r\n\r\n\t\t\terrorsContainer.innerHTML = html;\r\n\r\n\r\n\t\t\tif (isDonationReasonError) {\r\n\t\t\t\tfocusOnEl(document.querySelector('#donation-step-2'))\r\n\t\t\t} else {\r\n\t\t\t\tfocusOnEl(errorsContainer);\r\n\t\t\t}\t\t\t\r\n\r\n\t\t\tform.querySelectorAll('.js-donation-form-error').forEach(error => {\r\n\t\t\t\terror.addEventListener('click', () => {\r\n\t\t\t\t\tconst input = form.querySelector('#' + error.dataset.input);\r\n\r\n\t\t\t\t\tif (input) {\r\n\t\t\t\t\t\tinput.focus();\r\n\t\t\t\t\t\tfocusOnEl(input);\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t});\r\n\t\t} else {\r\n\t\t\tonSuccess(data)\r\n\t\t}\r\n\t}\r\n\r\n\tconst populateCountries = (countries) => {\r\n\t\tlet options = '';\r\n\t\t\t\t\r\n\t\tcountries.forEach(option => {\r\n\t\t\tconst selected = option.name === 'United Kingdom' ? 'selected=selected' : '';\r\n\t\t\toptions += ``;\r\n\t\t})\r\n\r\n\t\tif (countryIdInput && options !== '') {\r\n\t\t\tcountryIdInput.innerHTML = options;\r\n\t\t}\r\n\t}\r\n\r\n\tconst getDonationFrequency = () => {\r\n\t\tconst donationFrequency = document.querySelectorAll('[name=\"donation-frequency\"]');\r\n\r\n\t\tlet donationFrequencyValue;\r\n\r\n\t\tdonationFrequency.forEach(input => {\r\n\t\t\tif (input.checked) {\r\n\t\t\t\tdonationFrequencyValue = input.value;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn donationFrequencyValue;\r\n\t}\r\n\r\n\tconst watchForm = () => {\r\n\t\tconst form = document.querySelector('.js-donation-form');\r\n\t\tconst fieldset = form.querySelector('fieldset');\r\n\r\n\t\tif (form) {\r\n\t\t\tconst donationFrequency = document.querySelectorAll('[name=\"donation-frequency\"]');\r\n\t\t\tconst donationAmount = document.querySelectorAll('[name=\"donation-amount\"]');\r\n\t\t\tconst donationAmountCustom = document.querySelector('[name=\"donation-amount-custom\"]');\r\n const donationAmountCustomRadio = document.querySelector('[id=\"donation-amount-custom-radio\"]');\r\n const donationReason = document.querySelectorAll('[name=\"donation-reason\"]'); \r\n\r\n\t\t\t//fieldset.removeAttribute('disabled');\r\n\r\n\t\t\tdonationReason.forEach(input => {\r\n\t\t\t\tinput.addEventListener('change', () => {\r\n\t\t\t\t\tconst subFields = form.querySelectorAll('[data-required-when^=\"donation-reason=\"]');\r\n\r\n\t\t\t\t\tsubFields.forEach(subField => {\r\n\t\t\t\t\t\tconst subInput = subField.querySelector('input, select, textarea');\r\n\t\t\t\t\t\tlet required = subField.dataset.requiredWhen.split('=');\r\n\r\n\t\t\t\t\t\tif (required[1] === input.value) {\r\n\t\t\t\t\t\t\tsubField.parentNode.classList.remove('is-d-none');\r\n\t\t\t\t\t\t\tsubField.classList.add('field--required');\r\n\r\n\t\t\t\t\t\t\tif (subInput) {\r\n\t\t\t\t\t\t\t\t//subInput.value = subInput.tagName === 'SELECT' ? -1 : null;\r\n\t\t\t\t\t\t\t\tsubInput.setAttribute('aria-required', true);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tsubField.parentNode.classList.add('is-d-none');\r\n\t\t\t\t\t\t\tsubField.classList.remove('field--required');\r\n\t\t\t\t\t\t\tsubField.classList.remove('field--error');\r\n\r\n\t\t\t\t\t\t\tconst errorEl = subField.querySelector('.js-donation-form-input-error');\r\n\t\t\t\t\t\t\tconst errorLink = form.querySelector(`.js-donation-form-error[data-input=\"${subInput.id}\"]`);\r\n\r\n\t\t\t\t\t\t\tif (subInput) {\r\n\t\t\t\t\t\t\t\t//subInput.value = subInput.tagName === 'SELECT' ? -1 : null;\r\n\t\t\t\t\t\t\t\tsubInput.setAttribute('aria-required', false);\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\tif (errorEl) {\r\n\t\t\t\t\t\t\t\terrorEl.innerHTML = '';\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\tif (errorLink) {\r\n\t\t\t\t\t\t\t\terrorLink.parentNode.removeChild(errorLink);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t});\r\n\t\t\t});\r\n\r\n\t\t\tconst oneOffAmounts = document.querySelectorAll('.donation-amount-one-off');\r\n\t\t\tconst regularAmounts = document.querySelectorAll('.donation-amount-regular');\r\n\r\n\t\t\tdonationFrequency.forEach(frequencyInput => {\r\n\t\t\t\tfrequencyInput.addEventListener('change', () => {\r\n\t\t\t\t\tif (donationAmountCustom.value !== '') {\r\n\t\t\t\t\t\tsetNote(donationAmountCustom.dataset[`note${frequencyInput.value}`])\r\n\t\t\t\t\t\tsetvalue(donationAmountCustom.value, true);\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tdonationAmount.forEach(input => {\r\n\t\t\t\t\t\t\t//if (input.checked) {\r\n\t\t\t\t\t\t\t//\tsetNote(input.dataset[`note`])\r\n\t\t\t\t\t\t\t//\tsetvalue(input.value, false);\r\n\t\t\t\t\t\t\t//}\r\n\t\t\t\t\t\t\tinput.checked = false;\r\n\t\t\t\t\t\t\tsetNote('')\r\n\t\t\t\t\t\t\tsetvalue(0, false);\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\r\n if (frequencyInput.value == 'OneOff') {\r\n\t\t\t\t\t\twindow.donationIsOneOff = true;\r\n\r\n\t\t\t\t\t\tregularAmounts.forEach((e) => {\r\n\t\t\t\t\t\t\te.classList.add('is-d-none');\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t\toneOffAmounts.forEach((e) => {\r\n\t\t\t\t\t\t\te.classList.remove('is-d-none');\r\n\t\t\t\t\t\t})\r\n\r\n } else {\r\n\t\t\t\t\t\twindow.donationIsOneOff = false;\r\n\r\n\t\t\t\t\t\toneOffAmounts.forEach((e) => {\r\n\t\t\t\t\t\t\te.classList.add('is-d-none');\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t\tregularAmounts.forEach((e) => {\r\n\t\t\t\t\t\t\te.classList.remove('is-d-none');\r\n\t\t\t\t\t\t})\r\n }\r\n\t\t\t\t\t\r\n\t\t\t\t\tupdateButtons();\r\n\t\t\t\t});\r\n\t\t\t});\r\n\r\n\t\t\tdonationAmount.forEach(input => {\r\n\t\t\t\tif (input.checked) {\r\n\t\t\t\t\tsetNote(input.dataset[`note`])\r\n\t\t\t\t\tsetvalue(input.value, false);\r\n\t\t\t\t}\r\n\t\t\t\tinput.addEventListener('change', () => {\t\t\t\t\t\r\n\t\t\t\t\tsetNote(input.dataset[`note`])\r\n setvalue(input.value, false);\r\n donationAmountCustom.value = '';\r\n\t\t\t\t});\r\n\t\t\t});\r\n\r\n\t\t\tdonationAmountCustom.addEventListener('input', () => {\r\n\r\n\t\t\t\tsetNote(donationAmountCustom.dataset[`note${getDonationFrequency()}`])\r\n\t\t\t\tsetvalue(donationAmountCustom.value, true);\r\n\r\n\t\t\t\tif (donationAmountCustom.value === '' || donationAmountCustom.value === '0' || !isDecimal(donationAmountCustom.value)) {\r\n\t\t\t\t\tdonationAmountCustom.value = '';\r\n\r\n\t\t\t\t\tlet amount = null;\r\n\t\t\t\t\tif (window.donationIsOneOff) {\r\n\t\t\t\t\t\tamount = oneOffAmounts[0];\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tamount = regularAmounts[0];\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t//Restore to first fixed amount if nothing is checked\r\n\t\t\t\t\t//let input = donationAmount[0];\r\n\r\n\t\t\t\t\t//donationAmount.forEach(currentInput => {\r\n\t\t\t\t\t//\tif (currentInput.id != donationAmountCustomRadio.id && currentInput.checked) {\r\n\t\t\t\t\t//\t\tinput = currentInput;\r\n\t\t\t\t\t//\t}\r\n\t\t\t\t\t//});\r\n\r\n\t\t\t\t\tconst input = amount.querySelector('input');\r\n\t\t\t\t\tinput.checked = true;\r\n\t\t\t\t\tsetNote(input.dataset[`note`])\r\n\t\t\t\t\tsetvalue(input.value, false);\r\n\t\t\t\t}\r\n else {\r\n donationAmountCustomRadio.checked = true;\r\n }\r\n });\r\n\t\t}\r\n\t}\r\n\r\n\tconst isDecimal = (string) => {\r\n\t\treturn /^\\d*\\.?\\d*$/.test(string);\r\n\t}\r\n\r\n\tconst setNote = (note) => {\r\n\t\tconst el = document.querySelector('.js-donation-note');\r\n\r\n\t\tif (el) {\r\n\t\t\tel.innerHTML = note || el.dataset.default;\r\n\t\t}\r\n\t}\r\n\r\n\tconst setvalue = (value, isCustomAmount) => {\r\n\t\t// Round number to two decimal points\r\n\t\tvalue = parseFloat(value).toFixed(2);\r\n\r\n\t\twindow.donationAmount = value;\r\n\r\n\t\tconst el = document.querySelector('.js-donation-value');\r\n\t\tconst nextSteps = document.querySelector('.js-donation-next-steps');\r\n\r\n\t\tif (nextSteps) {\r\n\t\t\tif (value && nextSteps.classList.contains('is-d-none')) {\r\n\t\t\t\tnextSteps.classList.remove('is-d-none');\r\n\t\t\t} else if (!value && !nextSteps.classList.contains('is-d-none')) {\r\n\t\t\t\tnextSteps.classList.add('is-d-none');\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (el) {\r\n\t\t\tif (value == 0) {\r\n\t\t\t\tel.innerHTML = el.dataset.default;\r\n\t\t\t} else {\r\n\t\t\t\tel.innerHTML = value ? `You are donating £${value}` : el.dataset.default;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (!isCustomAmount && value > 0) {\r\n\t\t\tconst step2 = document.querySelector('#donation-step-2');\r\n\t\t\tconst yOffset = -220;\r\n\t\t\tconst y = step2.getBoundingClientRect().top + window.pageYOffset + yOffset;\r\n\t\t\twindow.scrollTo({ top: y, behavior: 'smooth' });\r\n\t\t}\r\n\t\t\t\t\t\r\n\t\tsetGiftAidAmounts(value);\r\n\t\tupdateButtons();\t\t\r\n\t}\r\n\r\n\tconst setGiftAidAmounts = (value) => {\r\n\t\tconst oldAmount = document.querySelector('.gift-aid-dynamic-oldamt');\r\n\t\tconst newAmount = document.querySelector('.gift-aid-dynamic-newamt');\r\n\r\n\t\tvalue = parseFloat(value);\r\n\r\n\t\tif (value <= 0) {\r\n\t\t\toldAmount.innerHTML = \"1.00\";\r\n\t\t\tnewAmount.innerHTML = \"1.25\";\r\n\t\t} else {\r\n\t\t\tconst rounded = Math.floor(value);\r\n\t\t\toldAmount.innerHTML = value.toFixed(2);\r\n\t\t\tnewAmount.innerHTML = (value + (rounded * 0.25)).toFixed(2);\r\n\t\t}\r\n\t}\r\n\r\n\tconst init = () => {\r\n\t\tinitButtons();\r\n\t\tif (countryIdInput) {\r\n\t\t\tfetchCountries(countries => {\r\n\t\t\t\tpopulateCountries(countries);\r\n\t\t\t\twatchForm();\r\n\t\t\t})\r\n\t\t} else {\r\n\t\t\twatchForm();\r\n\t\t}\r\n\t}\r\n\r\n\tinit();\r\n}\r\n\r\nconst theForm = document.querySelector('.js-donation-form')\r\n\r\nif (theForm) {\r\n\tbuildDonationForm()\r\n}","(function () {\r\n document.addEventListener(\"DOMContentLoaded\", (event) => {\r\n let dcModules = document.querySelectorAll(\".downloadable-content-module\");\r\n\r\n Array.prototype.forEach.call(dcModules, () => {\r\n let loadMoreBtn = document.querySelector(\".downloadable-content-loadmore-btn\");\r\n\r\n if (loadMoreBtn) {\r\n loadMoreBtn.addEventListener(\"click\", () => {\r\n downloadableContent.loadMore(loadMoreBtn);\r\n });\r\n } \r\n });\r\n });\r\n\r\n const downloadableContent = {\r\n data: {\r\n rowsShown: 1\r\n },\r\n loadMore: function (btn) {\r\n this.data.rowsShown++;\r\n\r\n let rows = document.querySelectorAll(\".downloadable-content-module .row\");\r\n let rowsToShow = Array.prototype.slice.call(rows, 0, this.data.rowsShown);\r\n\r\n Array.prototype.forEach.call(rowsToShow, (row) => {\r\n row.classList.remove(\"is-d-none\");\r\n });\r\n \r\n if (rowsToShow.length === rows.length) {\r\n btn.classList.add(\"is-d-none\");\r\n }\r\n }\r\n }\r\n})();","const livedExperienceForm = () => {\r\n const form = document.querySelector('.js-lived-experience-form');\r\n let modal;\r\n\r\n const userEligible = () => {\r\n form.method = 'post';\r\n\r\n form.submit();\r\n }\r\n\r\n const useNotEligible = () => {\r\n modal.open();\r\n }\r\n\r\n const buildModal = () => {\r\n modal = new tingle.modal({\r\n stickyFooter: false,\r\n closeMethods: ['overlay', 'button', 'escape'],\r\n closeLabel: \"Close\",\r\n onOpen: () => {\r\n const close = document.querySelector('.tingle-modal .js-lived-experience-form-close');\r\n\r\n if (close) {\r\n close.addEventListener('click', () => {\r\n modal.close();\r\n });\r\n }\r\n },\r\n });\r\n\r\n // set content\r\n modal.setContent(document.querySelector('.js-lived-experience-form-popup-content').innerHTML);\r\n }\r\n\r\n const focusOnEl = (el) => {\r\n let focusTarget;\r\n\r\n if (el.tagName === 'INPUT' || el.tagName === 'SELECT') {\r\n focusTarget = el;\r\n } else {\r\n const button = el.querySelector('button');\r\n\r\n if (button) {\r\n focusTarget = button;\r\n }\r\n }\r\n\r\n if (focusTarget) {\r\n focusTarget.focus();\r\n }\r\n\r\n const scrollPosition = window.pageYOffset + el.getBoundingClientRect().top;\r\n\r\n const elements = [\r\n document.querySelector('.navigation-bar-holder'),\r\n document.querySelector('.condition-sub-nav')\r\n ];\r\n\r\n let elHeight = 0;\r\n\r\n elements.forEach(el => {\r\n if (el) {\r\n elHeight += el.clientHeight;\r\n }\r\n });\r\n\r\n const topHeight = scrollPosition - (elHeight + 30);\r\n\r\n window.scroll(0, topHeight);\r\n }\r\n\r\n if (form) {\r\n buildModal();\r\n form.addEventListener('submit', (e) => {\r\n e.preventDefault()\r\n\r\n const data = new FormData(form);\r\n const errorsContainer = form.querySelector('.js-lived-experience-form-errors');\r\n let requiredFields = [];\r\n\r\n let options = [];\r\n let requiresExplanation = false;\r\n let eligible = true;\r\n\r\n const inputs = form.querySelectorAll('input, textarea');\r\n\r\n errorsContainer.innerHTML = null;\r\n\r\n inputs.forEach(input => {\r\n const field = input.parentNode;\r\n const errorEl = field.querySelector('.js-lived-experience-form-input-error');\r\n\r\n input.setAttribute('aria-invalid', false);\r\n field.classList.remove('field--error');\r\n\r\n if (errorEl) {\r\n errorEl.innerHTML = null;\r\n }\r\n });\r\n\r\n for (let entry of data) {\r\n if (entry[0] === 'lived-experience[]') {\r\n options.push(entry);\r\n\r\n if (entry[1] === 'I am severely affected by mental illness but do not fit in the categories above (please briefly explain)') {\r\n requiresExplanation = true;\r\n }\r\n\r\n if (entry[1] === 'None of the above apply to me') {\r\n eligible = false;\r\n }\r\n }\r\n if (entry[0] === 'explanation') {\r\n if (entry[1] === '' && requiresExplanation) {\r\n const input = form.querySelector('#lived-experience-' + entry[0]);\r\n requiredFields.push({\r\n input: input,\r\n type: 'required'\r\n });\r\n input.setAttribute('aria-invalid', true);\r\n }\r\n }\r\n }\r\n\r\n if (options.length === 0) {\r\n requiredFields.push({\r\n input: 'ALL',\r\n type: 'required'\r\n });\r\n }\r\n\r\n if (requiredFields.length > 0) {\r\n let listHtml = ''\r\n\r\n requiredFields.forEach(item => {\r\n if (item.input === 'ALL') {\r\n listHtml += `
  • `;\r\n } else {\r\n const field = item.input.parentNode;\r\n const label = field.querySelector('label')\r\n const errorEl = field.querySelector('.js-lived-experience-form-input-error');\r\n\r\n field.classList.add('field--error');\r\n\r\n if (label) {\r\n listHtml += `
  • `\r\n }\r\n\r\n if (errorEl) {\r\n errorEl.innerHTML = `${label.dataset.label ? label.dataset.label : label.innerHTML} is ${item.type}`\r\n }\r\n }\r\n });\r\n\r\n let html = `

    Please fix the following errors before submitting.

    `;\r\n\r\n if (listHtml !== '') {\r\n html += ``;\r\n }\r\n\r\n errorsContainer.innerHTML = html;\r\n\r\n focusOnEl(errorsContainer);\r\n\r\n form.querySelectorAll('.js-lived-experience-form-error').forEach(error => {\r\n error.addEventListener('click', () => {\r\n const input = form.querySelector('#' + error.dataset.input);\r\n\r\n if (input) {\r\n input.focus();\r\n focusOnEl(input);\r\n }\r\n });\r\n });\r\n } else {\r\n if (eligible) {\r\n userEligible();\r\n } else {\r\n useNotEligible();\r\n }\r\n }\r\n\r\n });\r\n }\r\n}\r\n\r\nlivedExperienceForm()","const memberForm = () => {\r\n\tconst form = document.querySelector('.js-member-form');\r\n\r\n\tif (form) {\r\n\t\tconst button = form.querySelectorAll('[data-to-step]')\r\n\t\tconst back = form.querySelector('.js-member-form-back')\r\n\t\tconst giftAid = form.querySelector('.js-member-form-giftaid')\r\n\t\tconst giftAidToggle = form.querySelector('.js-member-form-giftaid-toggle')\r\n\t\tconst fieldsetType = form.querySelector('#member-form-type')\r\n\t\tconst fieldsetFrequency = form.querySelector('#member-form-frequency')\r\n\t\tconst fieldsetDonation = form.querySelector('#member-form-donation')\r\n\t\tconst fieldsetPaymentMonthly = form.querySelector('#member-form-payment-monthly')\r\n\t\tconst fieldsetPaymentAnnual = form.querySelector('#member-form-payment-annual')\r\n\t\tconst inputType = form.querySelectorAll('[name=\"member-form-type\"]')\r\n\t\tconst inputFrequency = form.querySelectorAll('[name=\"member-form-frequency\"]')\r\n\t\tconst inputDonationOther = form.querySelector('[name=\"member-form-donation-other\"]')\r\n\t\tconst inputGiftAid = form.querySelector('[name=\"member-form-gift-aid\"]')\r\n\t\tconst clearDonation = form.querySelector('.js-member-form-donation-option-clear')\r\n\t\tconst submit = form.querySelectorAll('.js-submit-form')\r\n\t\tlet inputDonation = form.querySelectorAll('[name=\"member-form-donation\"]')\r\n\t\tconst loading = form.querySelector('.js-member-form-loading')\r\n\r\n\t\tconst $step = form.querySelector('.js-member-form-step')\r\n\t\tconst $wagedPrice = form.querySelector('.js-member-form-waged-price')\r\n\t\tconst $unwagedPrice = form.querySelector('.js-member-form-unwaged-price')\r\n\t\tconst $monthlyPrice = form.querySelector('.js-member-form-monthly-price')\r\n\t\tconst $annualPrice = form.querySelector('.js-member-form-annual-price')\r\n\t\tconst $frequency = form.querySelectorAll('.js-member-form-frequency')\r\n\t\tconst $donationOptions = form.querySelectorAll('.js-member-form-donation-options')\r\n\t\tconst $donationOptionOne = form.querySelectorAll('.js-member-form-donation-option-one')\r\n\t\tconst $donationOptionTwo = form.querySelectorAll('.js-member-form-donation-option-two')\r\n\t\tconst $donationOptionThree = form.querySelectorAll('.js-member-form-donation-option-three')\r\n\t\tconst $donationOptionFour = form.querySelectorAll('.js-member-form-donation-option-four')\r\n\t\tconst $frequencyPrice = form.querySelectorAll('.js-member-form-frequency-price')\r\n\t\tconst $donationPrice = form.querySelectorAll('.js-member-form-donation-price')\r\n\t\tconst $totalPrice = form.querySelectorAll('.js-member-form-total-price')\r\n\t\tconst $giftAidPrice = form.querySelectorAll('.js-member-form-gift-aid-price')\r\n\t\tconst $giftAid = form.querySelector('.js-member-form-gift-aid')\r\n\t\tconst $paymentMethod = form.querySelector('.js-member-form-payment-method');\r\n\t\tconst countryIdInput = form.querySelector('.js-countryId-input');\r\n\r\n\t\tconst validateForm = (form, onSuccess) => {\r\n\t\t\tconst data = new FormData(form);\r\n\t\t\tconst errorsContainer = form.querySelector('.js-member-form-errors');\r\n\t\t\tlet requiredFields = [];\r\n\r\n\t\t\terrorsContainer.innerHTML = null;\r\n\r\n\t\t\tfor (let entry of data) {\r\n\t\t\t\tif (entry[0].indexOf('member-form-') !== 0) {\r\n\t\t\t\t\tconst input = form.querySelector('#member-form-contact-' + entry[0]);\r\n\r\n\t\t\t\t\tif (input) {\r\n\t\t\t\t\t\tconst field = input.parentNode;\r\n\t\t\t\t\t\tconst errorEl = field.querySelector('.js-member-form-input-error');\r\n\r\n\t\t\t\t\t\tinput.setAttribute('aria-invalid', false);\r\n\t\t\t\t\t\tfield.classList.remove('field--error');\r\n\r\n\t\t\t\t\t\tif (errorEl) {\r\n\t\t\t\t\t\t\terrorEl.innerHTML = null;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif (input.getAttribute('aria-required') === 'true' && input.value === '') {\r\n\t\t\t\t\t\t\trequiredFields.push({\r\n\t\t\t\t\t\t\t\tinput: input,\r\n\t\t\t\t\t\t\t\ttype: 'required'\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\tinput.setAttribute('aria-invalid', true);\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tif (input.type === 'email' && !/^\\w+([\\.-]?\\w+)*@\\w+([\\.-]?\\w+)*(\\.\\w{2,3})+$/.test(input.value)) {\r\n\t\t\t\t\t\t\t\trequiredFields.push({\r\n\t\t\t\t\t\t\t\t\tinput: input,\r\n\t\t\t\t\t\t\t\t\ttype: 'invalid'\r\n\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\tinput.setAttribute('aria-invalid', true);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif (requiredFields.length > 0) {\r\n\t\t\t\tlet listHtml = ''\r\n\r\n\t\t\t\trequiredFields.forEach(item => {\r\n\t\t\t\t\tconst field = item.input.parentNode;\r\n\t\t\t\t\tconst label = field.querySelector('label')\r\n\t\t\t\t\tconst errorEl = field.querySelector('.js-member-form-input-error');\r\n\r\n\t\t\t\t\tfield.classList.add('field--error');\r\n\r\n\t\t\t\t\tif (label) {\r\n\t\t\t\t\t\tlistHtml += `
  • `\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (errorEl) {\r\n\t\t\t\t\t\terrorEl.innerHTML = `${label.dataset.label ? label.dataset.label : label.innerHTML} is ${item.type}`\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t\tlet html = `

    Please fix the following errors before submitting.

    `;\r\n\r\n\t\t\t\tif (listHtml !== '') {\r\n\t\t\t\t\thtml += ``;\r\n\t\t\t\t}\r\n\r\n\t\t\t\terrorsContainer.innerHTML = html;\r\n\r\n\t\t\t\tfocusOnEl(errorsContainer);\r\n\r\n\t\t\t\tform.querySelectorAll('.js-member-form-error').forEach(error => {\r\n\t\t\t\t\terror.addEventListener('click', () => {\r\n\t\t\t\t\t\tconst input = form.querySelector('#' + error.dataset.input);\r\n\r\n\t\t\t\t\t\tif (input) {\r\n\t\t\t\t\t\t\tinput.focus();\r\n\t\t\t\t\t\t\tfocusOnEl(input);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t});\r\n\t\t\t} else {\r\n\t\t\t\tonSuccess(data)\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tconst focusOnEl = (el) => {\r\n\t\t\tlet focusTarget;\r\n\r\n\t\t\tif (el.tagName === 'INPUT' || el.tagName === 'SELECT') {\r\n\t\t\t\tfocusTarget = el;\r\n\t\t\t} else {\r\n\t\t\t\tconst button = el.querySelector('button');\r\n\r\n\t\t\t\tif (button) {\r\n\t\t\t\t\tfocusTarget = button;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif (focusTarget) {\r\n\t\t\t\tfocusTarget.focus();\r\n\t\t\t}\r\n\r\n\t\t\tconst scrollPosition = window.pageYOffset + el.getBoundingClientRect().top;\r\n\t\t\t\r\n\t\t\tconst elements = [\r\n\t\t\t\tdocument.querySelector('.navigation-bar-holder'),\r\n\t\t\t\tdocument.querySelector('.condition-sub-nav')\r\n\t\t\t];\r\n\r\n\t\t\tlet elHeight = 0;\r\n\r\n\t\t\telements.forEach(el => {\r\n\t\t\t\tif (el) {\r\n\t\t\t\t\telHeight += el.clientHeight;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tconst topHeight = scrollPosition - (elHeight + 30);\r\n\t\t\t\r\n\t\t\twindow.scroll(0, topHeight);\r\n\t\t}\r\n\r\n\t\tbutton.forEach((el) => {\r\n\t\t\tel.addEventListener('click', () => {\r\n\t\t\t\tconst stepId = parseInt(el.dataset.toStep)\r\n\r\n\t\t\t\tif (stepId === 5) {\r\n\t\t\t\t\tvalidateForm(form, (data) => {\r\n\t\t\t\t\t\tupdateStep(stepId)\r\n\t\t\t\t\t})\r\n\t\t\t\t} else if (stepId > 0) {\r\n\t\t\t\t\tupdateStep(stepId)\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t})\r\n\r\n\t\tback.addEventListener('click', () => {\r\n\t\t\thistory.back()\r\n\t\t})\r\n\r\n\t\tconst updateStep = (stepId, ignorePushState) => {\r\n\t\t\t// Update the dataset of the component\r\n\t\t\tform.dataset.viewingStep = stepId\r\n\r\n\t\t\t// Update the html of the $step element\r\n\t\t\tif ($step) {\r\n\t\t\t\t$step.innerHTML = stepId\r\n\t\t\t}\r\n\r\n\t\t\twindow.scroll(0, 0);\r\n\t\t\tform.querySelector(`[data-step=\"${stepId}\"]`).focus()\r\n\r\n\t\t\tif (!ignorePushState) {\r\n\t\t\t\tconst url = new URL(location);\r\n\t\t\t\thistory.pushState({\r\n\t\t\t\t\tstep: stepId\r\n\t\t\t\t}, '', url);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\taddEventListener('popstate', (event) => {\r\n\t\t\tconst step = event?.state?.step\r\n\t\t\t\r\n\t\t\tif (step) {\r\n\t\t\t\tupdateStep(step, true)\r\n\t\t\t}\r\n\t\t})\r\n\r\n\t\tconst prepareForm = () => {\r\n\t\t\tif (fieldsetType) {\r\n\t\t\t\t// Update the html of the $wagedPrice element\r\n\t\t\t\tif ($wagedPrice) {\r\n\t\t\t\t\t$wagedPrice.innerHTML = fieldsetType.dataset.wagedPrice\r\n\t\t\t\t}\r\n\t\t\t\t// Update the html of the $unwagedPrice element\r\n\t\t\t\tif ($unwagedPrice) {\r\n\t\t\t\t\t$unwagedPrice.innerHTML = fieldsetType.dataset.unwagedPrice\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tconst capitalize = (word) => {\r\n\t\t\tconst loweredCase = word.toLowerCase()\r\n\r\n\t\t\treturn word[0].toUpperCase() + loweredCase.slice(1)\r\n\t\t}\r\n\r\n\t\tconst watchForm = () => {\r\n\t\t\tconst button = document.querySelector('[data-to-step=\"2\"]')\r\n\r\n\t\t\t// Type input changes\r\n\t\t\tinputType.forEach((el) => {\r\n\t\t\t\tel.addEventListener('change', () => {\r\n\t\t\t\t\tif (el.value === 'waged') {\r\n\r\n\t\t\t\t\t\t// If it's a waged type:\r\n\t\t\t\t\t\t// - Disable the button\r\n\t\t\t\t\t\t// - Show the frequency fieldset\r\n\r\n\t\t\t\t\t\tif (button) {\r\n\t\t\t\t\t\t\tbutton.setAttribute('disabled', true)\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tif (fieldsetFrequency) {\r\n\t\t\t\t\t\t\tfieldsetFrequency.removeAttribute('hidden')\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tconst frequency = [...inputFrequency].filter((el) => {\r\n\t\t\t\t\t\t\treturn el.checked\r\n\t\t\t\t\t\t})\r\n\r\n\t\t\t\t\t\tif (frequency.length === 1) {\r\n\t\t\t\t\t\t\tfrequency[0].checked = false\r\n\t\t\t\t\t\t\tfrequency[0].dispatchEvent(new Event('change'))\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif (fieldsetFrequency) {\r\n\t\t\t\t\t\t\t// Update the html of the $monthlyPrice element\r\n\t\t\t\t\t\t\tif ($monthlyPrice) {\r\n\t\t\t\t\t\t\t\t$monthlyPrice.innerHTML = fieldsetFrequency.dataset.wagedMonthlyPrice\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t// Update the html of the $annualPrice element\r\n\t\t\t\t\t\t\tif ($annualPrice) {\r\n\t\t\t\t\t\t\t\t$annualPrice.innerHTML = fieldsetFrequency.dataset.wagedAnnualPrice\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t// If it's not a waged type:\r\n\t\t\t\t\t\t// - Enable the button\r\n\t\t\t\t\t\t// - Hide the frequency fieldset\r\n\t\t\t\t\t\t// - Uncheck the frequency input (if it was checked)\r\n\r\n\t\t\t\t\t\tif (button) {\r\n\t\t\t\t\t\t\tbutton.removeAttribute('disabled')\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tif (fieldsetFrequency) {\r\n\t\t\t\t\t\t\tfieldsetFrequency.hidden = true\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tconst frequency = [...inputFrequency].filter((el) => {\r\n\t\t\t\t\t\t\treturn el.value === 'annual'\r\n\t\t\t\t\t\t})\r\n\r\n\t\t\t\t\t\tif (frequency.length === 1) {\r\n\t\t\t\t\t\t\tfrequency[0].checked = true\r\n\t\t\t\t\t\t\tfrequency[0].dispatchEvent(new Event('change'))\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tresetDonations()\r\n\t\t\t\t})\r\n\t\t\t})\r\n\r\n\t\t\t// Frequency input changes\r\n\t\t\tinputFrequency.forEach((el) => {\r\n\t\t\t\tel.addEventListener('change', () => {\r\n\r\n\t\t\t\t\tconst value = el.value\r\n\r\n\t\t\t\t\t$frequency.forEach((el) => {\r\n\t\t\t\t\t\tel.innerHTML = value\r\n\t\t\t\t\t})\r\n\t\t\t\t\t\r\n\t\t\t\t\t// Enable the button\r\n\t\t\t\t\tif (button && el.checked) {\r\n\t\t\t\t\t\tbutton.removeAttribute('disabled')\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tresetDonations()\r\n\t\t\t\t\tsetFrequencyPrice(value)\r\n\t\t\t\t\tsetPaymentOptions(value)\r\n\t\t\t\t\tsetDonationOptions(value)\r\n\t\t\t\t})\r\n\t\t\t})\r\n\r\n\t\t\tclearDonation.addEventListener('click', resetDonations)\r\n\r\n\t\t\tinputDonationOther.addEventListener('input', () => {\r\n\t\t\t\tconst value = parseFloat(inputDonationOther.value)\r\n\t\t\t\tconst isInvalid = isNaN(value) || (!isNaN(value) && value < 0)\r\n\r\n\t\t\t\tif (isInvalid) {\r\n\t\t\t\t\tresetDonationOther()\r\n\t\t\t\t\tupdateDonationPrice(0)\r\n\t\t\t\t\tclearDonation.setAttribute('disabled', true)\r\n\t\t\t\t} else {\r\n\t\t\t\t\tresetDonation()\r\n\t\t\t\t\tupdateDonationPrice(inputDonationOther.value)\r\n\t\t\t\t\tclearDonation.removeAttribute('disabled')\r\n\t\t\t\t}\r\n\t\t\t})\r\n\r\n\t\t\tgiftAidToggle.addEventListener('click', () => {\r\n\t\t\t\tif (giftAid.classList.contains('member-form__gift-aid--active')) {\r\n\t\t\t\t\tgiftAid.classList.remove('member-form__gift-aid--active')\r\n\t\t\t\t\tgiftAidToggle.setAttribute('aria-label', 'Expand')\r\n\t\t\t\t} else {\r\n\t\t\t\t\tgiftAid.classList.add('member-form__gift-aid--active')\r\n\t\t\t\t\tgiftAidToggle.setAttribute('aria-label', 'Collapse')\r\n\t\t\t\t}\r\n\t\t\t})\r\n\r\n\t\t\tinputGiftAid.addEventListener('change', () => {\r\n\t\t\t\t$giftAid.value = inputGiftAid.checked\r\n\t\t\t})\r\n\r\n\t\t\tsubmit.forEach((el) => {\r\n\t\t\t\tel.addEventListener('click', () => {\r\n\t\t\t\t\t$paymentMethod.value = el.dataset.paymentMethod\r\n\t\t\t\t\tloading.removeAttribute('hidden')\r\n\t\t\t\t\tform.submit()\r\n\t\t\t\t})\r\n\t\t\t})\r\n\t\t}\r\n\r\n\t\tconst setFrequencyPrice = (frequency) => {\r\n\t\t\tconst type = [...inputType].filter((el) => {\r\n\t\t\t\treturn el.checked\r\n\t\t\t})\r\n\r\n\t\t\tif (type.length === 1) {\r\n\t\t\t\tif (type[0].value === 'waged') {\r\n\t\t\t\t\tupdateFrequencyPrice(fieldsetFrequency.dataset[`waged${capitalize(frequency)}Price`])\r\n\t\t\t\t} else if (frequency === 'annual') {\r\n\t\t\t\t\tupdateFrequencyPrice(fieldsetFrequency.dataset[`unwaged${capitalize(frequency)}Price`])\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tconst setPaymentOptions = (frequency) => {\r\n\t\t\tif (frequency === 'monthly') {\r\n\t\t\t\tif (fieldsetPaymentMonthly) {\r\n\t\t\t\t\tfieldsetPaymentMonthly.removeAttribute('hidden')\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (fieldsetPaymentAnnual) {\r\n\t\t\t\t\tfieldsetPaymentAnnual.hidden = true\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tif (fieldsetPaymentMonthly) {\r\n\t\t\t\t\tfieldsetPaymentMonthly.hidden = true\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (fieldsetPaymentAnnual) {\r\n\t\t\t\t\tfieldsetPaymentAnnual.removeAttribute('hidden')\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tconst setDonationOptions = (frequency) => {\r\n\t\t\tvar options = fieldsetDonation.dataset[`${frequency}PriceOptions`].split(',');\r\n\r\n\t\t\tif (fieldsetDonation) {\r\n\t\t\t\tvar donationOptionsHtml = \"\";\r\n\t\t\t\tvar index = 1;\r\n\r\n\t\t\t\toptions.forEach((el) => {\r\n\t\t\t\t\tdonationOptionsHtml += `
    `\r\n\t\t\t\t\tindex++;\r\n\t\t\t\t})\r\n\r\n\t\t\t\t$donationOptions.forEach((el) => {\r\n\t\t\t\t\tel.innerHTML = donationOptionsHtml;\r\n\t\t\t\t})\r\n\r\n\t\t\t\tinputDonation = form.querySelectorAll('[name=\"member-form-donation\"]');\r\n\t\t\t\t\r\n\t\t\t\tinputDonation.forEach((el) => {\r\n\t\t\t\t\tel.addEventListener('change', () => {\r\n\t\r\n\t\t\t\t\t\tif (el.checked) {\r\n\t\t\t\t\t\t\tclearDonation.removeAttribute('disabled')\r\n\t\t\t\t\t\t\tresetDonationOther()\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tclearDonation.setAttribute('disabled', true)\r\n\t\t\t\t\t\t}\r\n\t\r\n\t\t\t\t\t\tupdateDonationPrice(el.checked ? el.value : 0)\r\n\t\t\t\t\t})\r\n\t\t\t\t})\r\n\r\n\t\t\t\t// Update the html of the $donationOptionOne element\r\n\t\t\t\t$donationOptionOne.forEach((el) => {\r\n\t\t\t\t\tif (el.tagName === 'INPUT') {\r\n\t\t\t\t\t\tel.value = options[0]\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tel.innerHTML = options[0]\r\n\t\t\t\t\t}\r\n\t\t\t\t})\r\n\t\t\t\t// Update the html of the $donationOptionTwo element\r\n\t\t\t\t$donationOptionTwo.forEach((el) => {\r\n\t\t\t\t\tif (el.tagName === 'INPUT') {\r\n\t\t\t\t\t\tel.value = options[1]\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tel.innerHTML = options[1]\r\n\t\t\t\t\t}\r\n\t\t\t\t})\r\n\t\t\t\t// Update the html of the $donationOptionThree element\r\n\t\t\t\t$donationOptionThree.forEach((el) => {\r\n\t\t\t\t\tif (el.tagName === 'INPUT') {\r\n\t\t\t\t\t\tel.value = options[2]\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tel.innerHTML = options[2]\r\n\t\t\t\t\t}\r\n\t\t\t\t})\r\n\t\t\t\t// Update the html of the $donationOptionFour element\r\n\t\t\t\t$donationOptionFour.forEach((el) => {\r\n\t\t\t\t\tif (el.tagName === 'INPUT') {\r\n\t\t\t\t\t\tel.value = options[3]\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tel.innerHTML = options[3]\r\n\t\t\t\t\t}\r\n\t\t\t\t})\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tconst updateDonationPrice = (value) => {\r\n\t\t\t$donationPrice.forEach((el) => {\r\n\t\t\t\tif (el.tagName === 'INPUT') {\r\n\t\t\t\t\tel.value = value\r\n\t\t\t\t} else {\r\n\t\t\t\t\tel.innerHTML = value\r\n\t\t\t\t}\r\n\t\t\t})\r\n\r\n\t\t\tupdateTotalPrice()\r\n\t\t}\r\n\r\n\t\tconst updateFrequencyPrice = (value) => {\r\n\t\t\t$frequencyPrice.forEach((el) => {\r\n\t\t\t\tif (el.tagName === 'INPUT') {\r\n\t\t\t\t\tel.value = value\r\n\t\t\t\t} else {\r\n\t\t\t\t\tel.innerHTML = value\r\n\t\t\t\t}\r\n\t\t\t})\r\n\r\n\t\t\tupdateTotalPrice()\r\n\t\t}\r\n\r\n\t\tconst updateTotalPrice = () => {\r\n\t\t\tlet value = 0\r\n\r\n\t\t\tconst prices = [...$frequencyPrice, ...$donationPrice].filter((el) => {\r\n\t\t\t\treturn el.tagName === 'INPUT'\r\n\t\t\t})\r\n\r\n\t\t\tprices.forEach((el) => {\r\n\t\t\t\tvalue += parseInt(el.value * 100) / 100\r\n\t\t\t})\r\n\r\n\t\t\t$totalPrice.forEach((el) => {\r\n\t\t\t\tif (el.tagName === 'INPUT') {\r\n\t\t\t\t\tel.value = value\r\n\t\t\t\t} else {\r\n\t\t\t\t\tel.innerHTML = value\r\n\t\t\t\t}\r\n\t\t\t})\r\n\r\n\t\t\tupdateGiftAidPrice(formatPrice(value * 1.25))\r\n\t\t}\r\n\r\n\t\tconst formatPrice = (value) => {\r\n\t\t\tconst str = value.toString().split('.')\r\n\t\t\tlet price = `${str[0]}`\r\n\r\n\t\t\tif (str.length > 1) {\r\n\t\t\t\tlet pence = str[1].slice(0, 2)\r\n\r\n\t\t\t\tif (pence.length === 1) {\r\n\t\t\t\t\tpence += 0\r\n\t\t\t\t}\r\n\r\n\t\t\t\tprice += `.${pence}`\r\n\t\t\t} else {\r\n\t\t\t\tprice += `.00`\r\n\t\t\t}\r\n\r\n\t\t\treturn price\r\n\t\t}\r\n\r\n\t\tconst updateGiftAidPrice = (value) => {\t\t\t\r\n\t\t\t$giftAidPrice.forEach((el) => {\r\n\t\t\t\tif (el.tagName === 'INPUT') {\r\n\t\t\t\t\tel.value = value\r\n\t\t\t\t} else {\r\n\t\t\t\t\tel.innerHTML = value\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t}\r\n\r\n\t\tconst resetDonation = () => {\r\n\t\t\tconst donation = [...inputDonation].filter((el) => {\r\n\t\t\t\treturn el.checked\r\n\t\t\t})\r\n\r\n\t\t\tif (donation.length === 1) {\r\n\t\t\t\tdonation[0].checked = false\r\n\t\t\t\tdonation[0].dispatchEvent(new Event('change'))\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tconst resetDonationOther = () => {\r\n\t\t\tinputDonationOther.value = ''\r\n\t\t}\r\n\r\n\t\tconst resetDonations = () => {\r\n\t\t\tresetDonation()\r\n\t\t\tresetDonationOther()\r\n\t\t\tclearDonation.setAttribute('disabled', true)\r\n\t\t\tupdateDonationPrice(0)\r\n\t\t}\r\n\r\n\t\tconst fetchCountries = (onSuccess) => {\r\n\t\t\tconst request = new XMLHttpRequest();\r\n\t\t\trequest.open('GET', '/umbraco/api/Countries/Get', true);\r\n\t \r\n\t\t\trequest.onload = () => {\r\n\t\t\t\tif (request.status >= 200 && request.status < 400) {\r\n\t\t\t\t\treturn onSuccess(JSON.parse(request.responseText));\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t \r\n\t\t\trequest.send();\r\n\t\t}\r\n\t \r\n\t\tconst populateCountries = (countries) => {\r\n\t\t\tlet options = '';\r\n\t \r\n\t\t\tcountries.forEach(option => {\r\n\t\t\t\tconst selected = option.name === 'United Kingdom' ? 'selected=selected' : '';\r\n\t\t\t\toptions += ``;\r\n\t\t\t})\r\n\t \r\n\t\t\tif (countryIdInput && options !== '') {\r\n\t\t\t\tcountryIdInput.innerHTML = options;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (countryIdInput) {\r\n\t\t\tfetchCountries((countries) => {\r\n\t\t\t\tpopulateCountries(countries)\r\n\t\t\t})\r\n\t\t}\r\n\r\n\t\tprepareForm()\r\n\t\twatchForm()\r\n\t\tupdateStep(1)\r\n\t}\r\n};\r\n\r\nmemberForm()","const phoneNumber = () => {\r\n\tconst phoneInput = document.querySelectorAll('.js-phone-number');\r\n\r\n\tphoneInput.forEach(input => {\r\n\t\tif (!input.dataset.watchingPhoneNumber) {\r\n\t\t\tinput.dataset.watchingPhoneNumber = true;\r\n\r\n\t\t\tinput.addEventListener('input', () => {\r\n\t\t\t\tinput.value = phoneMask(input.value);\r\n\t\t\t});\r\n\r\n\t\t\tinput.addEventListener('paste', () => {\r\n\t\t\t\tinput.value = phoneMask(input.value);\r\n\t\t\t});\r\n\t\t}\r\n\t});\r\n\r\n\tconst phoneMask = (phone) => {\r\n\t\treturn phone.replace(/\\D/g, '')\r\n\t\t\t.replace(/^(\\d)/, '($1')\r\n\t\t\t.replace(/^(\\(\\d{5})(\\d)/, '$1) $2')\r\n\t\t\t.replace(/(\\d{6})(\\d{1,5})/, '$1')\r\n\t}\r\n};\r\n\r\nphoneNumber();","(function () {\r\n document.addEventListener(\"DOMContentLoaded\", function (event) {\r\n var shareModules = document.querySelectorAll(\".share-module\");\r\n Array.prototype.forEach.call(shareModules, function (el, i) {\r\n var currentShareModules = shareModules[i];\r\n showShareIcons(currentShareModules);\r\n });\r\n\r\n });\r\n\r\n function showShareIcons(currentElement) {\r\n var currentElementList = currentElement.querySelector('.share-module--links');\r\n var pageTitle = document.title;\r\n\r\n currentElement.classList.remove('is-d-none');\r\n\r\n if (navigator.share) {\r\n currentElementList.innerHTML = '
  • ';\r\n var nativeShareCta = currentElementList.querySelector('.native-share-cta');\r\n\r\n nativeShareCta.addEventListener(\"click\", function () {\r\n navigator.share({\r\n title: pageTitle,\r\n url: window.location.href\r\n });\r\n });\r\n\r\n } else {\r\n var sharers = [\r\n {\r\n name: 'facebook',\r\n url: window.location.href,\r\n title: pageTitle,\r\n icon: 'facebook',\r\n to: '',\r\n subject: ''\r\n },\r\n {\r\n name: 'twitter',\r\n url: window.location.href,\r\n title: pageTitle,\r\n icon: 'twitter',\r\n to: '',\r\n subject: ''\r\n },\r\n {\r\n name: 'linkedin',\r\n url: window.location.href,\r\n title: pageTitle,\r\n icon: 'linkedin-square',\r\n to: '',\r\n subject: ''\r\n },\r\n {\r\n name: 'whatsapp',\r\n url: window.location.href,\r\n title: pageTitle,\r\n icon: 'whatsapp',\r\n to: '',\r\n subject: ''\r\n },\r\n {\r\n name: 'email',\r\n url: window.location.href,\r\n title: pageTitle,\r\n icon: 'email',\r\n to: ' ',\r\n subject: ''\r\n }\r\n ];\r\n\r\n var currentElementListContent = [];\r\n\r\n Array.prototype.forEach.call(sharers, function (el, i) {\r\n var listItemContent = `
  • \r\n \r\n \r\n \r\n
  • `;\r\n currentElementListContent.push(listItemContent);\r\n });\r\n currentElementList.innerHTML = currentElementListContent.join(' ');\r\n window.Sharer.init();\r\n }\r\n }\r\n})();\r\n"],"sourceRoot":"/source/"}