PageSourceSearch

https://www.moodyradio.org/globalassets/scripts/js/form-utils.min.js?v=11062025_1435

js moodyradio.org collected 2026-10-09 23:20:18 UTC 6,390 bytes, 1 lines download raw bytes

1const hasForm=document.querySelectorAll("form.EPiServerForms").length>0;let webexId=JSON.parse(localStorage.getItem("ajs_user_id")),modifiedForms={},dataLayer=window.dataLayer||[];const isFormReadyPromise=initFormUtils();function debounce(e,t=200){let o;return(...r)=>{clearTimeout(o),o=setTimeout((()=>{e(...r)}),t)}}async function postData(e,t=3e3){const o=setInterval((()=>e()),100);setTimeout((()=>(clearInterval(o),!1)),t)}function isValidEmail(e){return/[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?/i.test(e)}function getParameter(e,t){e=e.replace(/[\[]/,"\\[").replace(/[\]]/,"\\]");let o=new RegExp(`[\\?&]${e}=([^&#]*)`).exec(t);return null==o?"":o[1]}function getAllParameters(e){const t={},o=e.split("?")[1];if(!o)return t;const r=o.split("&");for(const e of r){const[o,r]=e.split("=");o&&r&&(t[o]=r)}return t}function getParameterByName(e){return getParameter(e,window.location.search)}function getParameterValues(){let e={};return["utm_source","utm_medium","utm_campaign","utm_content","utm_term"].forEach((t=>{const o=getParameterByName(t);o&&(e[t]=o)})),e}function removeHeaderFooterLinks(){document.querySelectorAll("header a, footer a").forEach((e=>{e.removeAttribute("target"),e.removeAttribute("href"),e.style.cursor="default",e.style.color="inherit",e.addEventListener("click",(function(e){return e.stopImmediatePropagation(),e.preventDefault(),!1}),!0),e.setAttribute("tabindex","-1")}))}function isFormSetup(){return"function"==typeof window.$$epiforms&&void 0!==window.epi&&("interactive"===document.readyState||"complete"===document.readyState)}function trackFormModified(){$$epiforms(document).ready((()=>{$$epiforms(".EPiServerForms").each(((e,t)=>{const o=debounce((()=>{return e=t.id,modifiedForms[e]=!0;var e}));$$epiforms(`#${t.id}.EPiServerForms`).on("input",o)})),$$epiforms(".EPiServerForms").on("formsSubmitted",(function(e){!function(e,t){if(e)return dataLayer.push({event:"epi_form_submit",form:t,event_category:"form",event_label:"passed validation"}),delete modifiedForms[t],!0;console.debug("Form submission unsuccessful. Nothing pushed to the dataLayer")}(e.isSuccess,e.target.id)}))}))}function onPageUnload(){0!==Object.keys(modifiedForms).length&&Object.keys(modifiedForms).forEach((e=>{let t={event:"form_abandonment",category:"Form Abandonment",action:"abandoned",form:e,url:window.location.hostname+window.location.pathname};isValidEmail(webexId)?t.email=webexId:t.userId=webexId,dataLayer.push(t)}))}function trackEmailModified(){let e=[];$$epiforms(".EPiServerForms").map(((e,t)=>t.id)).get().forEach((t=>{Object.entries(epi.EPiServer.Forms[t].ElementsInfo).forEach((t=>{t[1].friendlyName.toLowerCase().includes("email")&&e.push(t[0])}))})),e.forEach((e=>{const t=debounce(saveEmailFromField);$$epiforms(`[name=${e}]`).on("input",t)}))}async function trackSubscriptionsToAdd(){await isFormReadyPromise?$$epiforms(".EPiServerForms").each(((e,t)=>{const o=epi.EPiServer.Forms[`${t.id}`].ElementsInfo,r=Object.entries(o).find((([e,t])=>"subscriptionstoadd"===t.friendlyName.toLowerCase().trim()))?.[0];if(!r)return void console.warn("No subscriptionToAdd field found");const n=Object.keys(o).filter((e=>o[e].friendlyName.toLowerCase().includes("subscribeto"))).map((e=>`#${t.id} input[name="${e}"][type="checkbox"],#${t.id} input[name="${e}"][type="radio"]`)).join(","),i=$$epiforms(n),a=$$epiforms(`#${t.id} input[name="${r}"]`);function s(){const e=i.filter(((e,t)=>t.checked)).map(((e,t)=>t.value)).get().join("")||"";a.val(e).trigger("change")}i.on("input change",s),s()})):console.error("$$epiforms did not load. Cannot empty form fields.")}function saveEmailFromField(e){const t=e.target.value;return!!isValidEmail(t)&&(webexId=t,!0)}async function emptyFormFieldValue(e){if(!await isFormReadyPromise)return void console.error("$$epiforms did not load. Cannot empty form fields.");let t=$$epiforms(e);t?t.val("").trigger("change"):console.error("Cannot find the field to be cleared")}async function setFormFieldValue(e,t){if(!await isFormReadyPromise)return void console.error("$$epiforms did not load. Cannot set form fields.");let o=$$epiforms(e);o?o.val(t).trigger("change"):console.error("Cannot find the field to be updated.")}async function setDefaultUtmParameterValues(){const e=getParameterValues();await updateInputFields(e)}async function updateInputFields(e){if(!await isFormReadyPromise)return console.error("$$epiforms did not load. Cannot set form fields."),!1;Object.keys(e).forEach((function(t){const o=e[t];if(o){Array.from(document.querySelectorAll("label")).filter((e=>e.textContent.trim().replaceAll(" ","").toLowerCase()===t.replace("_","").toLowerCase())).forEac
1h((function(e){const r=e.textContent;e.textContent=`${t} (${o})`;const n=e.nextElementSibling;n&&"input"===n.tagName.toLowerCase()&&"text"===n.type&&(n.value=o,console.debug({name:r,currentvalue:n.value,queryvalue:o}))}))}}))}async function redirectOnFormSubmit(e,{additionalUtms:t=!1,formId:o=null,overrideUtms:r=!1}={}){if(!await isFormReadyPromise)return void console.error("$$epiforms did not load. Cannot setup form submission events.");$$epiforms(o?`#formContainer_${o} .EPiServerForms`:".EPiServerForms").on("formsSubmitted",(o=>{const n=function(e,{additionalUtms:t,overrideUtms:o}){let r=e.split(/[?#]/)[0]||window.location.href,n=e.split(/[#]/)[1]||"",i={};const a=getAllParameters(e),s=getParameterValues();return t&&["v","def","os","em","app"].forEach((e=>{const t=getParameterByName(e);t&&(s[e]=t)})),i=o?{...a,...s}:{...s,...a},Object.keys(i).length>0&&(r+="?",Object.keys(i).forEach((e=>r+=`${e}=${i[e]}&`)),r=r.slice(0,-1)),n&&(r+=`#${n}`),r}(e,{additionalUtms:t,overrideUtms:r});o.isSuccess&&window.setTimeout((()=>{window.location.href=n}),100)}))}function ensureEpiFormLoaded(){return new Promise(((e,t)=>{if(isFormSetup())return void e();const o=setInterval((()=>{isFormSetup()&&(clearInterval(o),clearTimeout(r),e()),console.debug("awaiting $$epiforms")}),100),r=setTimeout((()=>{clearInterval(o),t()}),1e4)}))}async function initFormUtils(){if(!hasForm)return console.debug("No forms on the page. Skipping form utils."),!1;try{return await ensureEpiFormLoaded(),trackFormModified(),trackEmailModified(),!0}catch(e){return console.error("$$epiforms did not load on a page with forms.",e),!1}}window.addEventListener("beforeunload",onPageUnload);

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.