{"version":3,"sources":["form-processor-cti.js"],"names":["checkFetchStatus","response","r","getAllResponseHeaders","setRequestHeader","self","fetch","e","n","Promise","t","s","XMLHttpRequest","o","u","i","resolve","method","onload","clone","headers","keys","push","toLowerCase","a","ok","status","statusText","url","responseURL","text","responseText","json","JSON","parse","blob","Blob","entries","has","onerror","withCredentials","credentials","c","send","body","console","formFields","formId","first_name","concat","last_name","email","title","city","state","zip","phone","generateEmarsysUrl","company","inp_3","split","inp_13","inp_2718","inp_2726","inp_17833","inp_18500","inp_22127","inp_22196","message","inp_2723","validateOnBlur","theForm","addEventListener","sfForms","field","add","formSetting","this","querySelector","preventDefault","classList","isFormValid","submit","_step","_iterator","_createForOfIteratorHelper","querySelectorAll","_loop","value","type","x","test","remove","re","trim","done","err","f","_step2","_iterator2","emarsysFormId","readCookie","encodeURIComponent","document","indexOf","nameEQ","sourceUrl","facebookLead","_step3","bingLead","clientID","initialFields","name","oid","ca","cookie","length","recordType","lead_source","charAt","substring","decodeURIComponent","referringUrl","00N1T00000AXeke","00N1T00000AXel8","window","href","00N1T00000AXef3","00N1T00000AXef2","00N1T00000AXfJP","FormData","00N1T00000AXfJU","slice","formMsg","formRawData","key","_objectSpread","_iterator3","_step3$value","_slicedToArray","_i","_Object$entries","Object","_Object$entries$_i","append","URLSearchParams","emarsysUrl","formActionUrl","retURL","submitBtn","onformdata","formData","_step4","_iterator4","_step4$value","set","then","action","data","catch","error","sendToSFWithReturn","submitToEmarsysIframe","innerHTML","iFrame","emarsysIframe","setAttribute","appendChild","sendToSFWithoutReturn","inlineMessage","errors"],"mappings":"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","file":"form-processor-cti.js","sourcesContent":["// fetch polyfill for older browser, the minimum needed\nself.fetch ||\n (self.fetch = function (e, n) {\n return (\n (n = n || {}),\n new Promise(function (t, s) {\n var r = new XMLHttpRequest(),\n o = [],\n u = [],\n i = {},\n a = function () {\n return {\n ok: 2 == ((r.status / 100) | 0),\n statusText: r.statusText,\n status: r.status,\n url: r.responseURL,\n text: function () {\n return Promise.resolve(r.responseText);\n },\n json: function () {\n return Promise.resolve(JSON.parse(r.responseText));\n },\n blob: function () {\n return Promise.resolve(new Blob([r.response]));\n },\n clone: a,\n headers: {\n keys: function () {\n return o;\n },\n entries: function () {\n return u;\n },\n get: function (e) {\n return i[e.toLowerCase()];\n },\n has: function (e) {\n return e.toLowerCase() in i;\n },\n },\n };\n };\n for (var c in (r.open(n.method || \"get\", e, !0),\n (r.onload = function () {\n r\n .getAllResponseHeaders()\n .replace(/^(.*?):[^\\S\\n]*([\\s\\S]*?)$/gm, function (e, n, t) {\n o.push((n = n.toLowerCase())),\n u.push([n, t]),\n (i[n] = i[n] ? i[n] + \",\" + t : t);\n }),\n t(a());\n }),\n (r.onerror = s),\n (r.withCredentials = \"include\" == n.credentials),\n n.headers))\n r.setRequestHeader(c, n.headers[c]);\n r.send(n.body || null);\n })\n );\n });\n// to check for fetch response...\nfunction checkFetchStatus(response) {\n if (response.status !== 200) {\n console.log(\n \"Looks like there was a problem. Status Code: \" + response.status\n );\n return response.json();\n }\n return response.json();\n // if (response.ok) {\n // \treturn response.json();\n // }\n // throw response;\n}\n\nconst generateEmarsysUrl = (formFields, formId) => {\n const emarsysFormId = `f=${formId}&`,\n inp_1 = formFields.first_name ? `inp_1=${formFields.first_name}&` : \"\",\n inp_2 = formFields.last_name ? `inp_2=${formFields.last_name}&` : \"\",\n inp_3 = formFields.email ? `inp_3=${formFields.email}&` : \"\",\n inp_9 = formFields.title ? `inp_9=${formFields.title}&` : \"\",\n inp_11 = formFields.city ? `inp_11=${formFields.city}&` : \"\",\n inp_12 = formFields.state ? `inp_12=${formFields.state}&` : \"\",\n inp_13 = formFields.zip ? `inp_13=${formFields.zip}&` : \"\",\n inp_15 = formFields.phone ? `inp_15=${formFields.phone}&` : \"\",\n inp_18 = formFields.company ? `inp_18=${formFields.company}&` : \"\",\n // referring URL\n inp_2718 = formFields[\"00N1T00000AXeke\"]\n ? `inp_2718=${formFields[\"00N1T00000AXeke\"]}&`\n : \"\",\n // source URL\n inp_2721 = formFields[\"00N1T00000AXel8\"]\n ? `inp_2721=${formFields[\"00N1T00000AXel8\"].split('#')[0]}&`\n : \"\",\n // source domain\n inp_2726 = formFields[\"00N1T00000AXel3\"]\n ? `inp_2726=${formFields[\"00N1T00000AXel3\"]}&`\n : \"\",\n // gclid\n inp_2728 = formFields[\"00N1T00000AXef3\"]\n ? `inp_2728=${formFields[\"00N1T00000AXef3\"]}&`\n : \"\",\n // facebook lead\n inp_17833 = formFields[\"00N1T00000AXef2\"]\n ? `inp_17833=${formFields[\"00N1T00000AXef2\"]}&`\n : \"\",\n // bing lead\n inp_17832 = formFields[\"00N1T00000AXfJP\"]\n ? `inp_17832=${formFields[\"00N1T00000AXfJP\"]}&`\n : \"\",\n // clientID\n inp_18500 = formFields[\"00N1T00000AXfJU\"]\n ? `inp_18500=${formFields[\"00N1T00000AXfJU\"]}&`\n : \"\",\n // training needs or message\n inp_22194 = formFields[\"00N1T00000Axl4O\"]\n ? `inp_22194=${formFields[\"00N1T00000Axl4O\"]}&`\n : \"\",\n // message\n inp_22127 = formFields.message ? `inp_22127=${formFields.message}&` : \"\",\n // language\n inp_22195 = formFields[\"00N1T00000Aaegz\"]\n ? `inp_22195=${formFields[\"00N1T00000Aaegz\"]}&`\n : \"\",\n // submission form industry state\n inp_22196 = formFields[\"00N1T00000Aaegp\"]\n ? `inp_22196=${formFields[\"00N1T00000Aaegp\"]}&`\n : \"\",\n // exam type\n inp_23427 = formFields[\"00N1T00000Aaegu\"]\n ? `inp_23427=${formFields[\"00N1T00000Aaegu\"]}&`\n : \"\",\n // web_form\n inp_2722 = formFields[\"web_form\"]\n ? `inp_2722=${formFields[\"web_form\"]}&`\n : \"\",\n // Lead Source\n inp_2723 = formFields[\"lead_source\"]\n ? `inp_2723=${formFields[\"lead_source\"]}&`\n : \"\",\n // lead_status\n inp_2725 = formFields[\"status\"] ? `inp_2725=${formFields[\"status\"]}&` : \"\";\n\n const emarsysFormUrl =\n \"https://link.theuniversityplatform.com/u/register.php?CID=817427910&p=2&a=r&SID=&el=&llid=&counted=&c=&optin=y&\" +\n emarsysFormId +\n inp_1 +\n inp_2 +\n inp_3 +\n inp_9 +\n inp_11 +\n inp_12 +\n inp_13 +\n inp_15 +\n inp_18 +\n inp_2718 +\n inp_2721 +\n inp_2726 +\n inp_2728 +\n inp_17833 +\n inp_17832 +\n inp_18500 +\n inp_22194 +\n inp_22127 +\n inp_22195 +\n inp_22196 +\n inp_23427 +\n inp_2722 +\n inp_2723 +\n inp_2725;\n\n return emarsysFormUrl;\n};\n\nconst sfForms = {\n init: function (formSetting) {\n const { theForm } = formSetting;\n if (!theForm) {\n return;\n }\n this.validateOnBlur(theForm);\n\n // listening for click on the submit button\n const submitBtn = theForm.querySelector(\"button[type=submit]\");\n submitBtn.addEventListener(\n \"click\",\n function (e) {\n e.preventDefault();\n const isFormValid = sfForms.isFormValid(theForm);\n if (!isFormValid) {\n alert(\"The highlighted field/s are required.\");\n return false;\n } else {\n sfForms.submit(formSetting);\n }\n },\n true\n );\n },\n\n validateOnBlur: function (theForm) {\n if (!theForm) {\n return false;\n }\n // realtime form fields validation using blur event\n const fields = theForm.querySelectorAll(\".required\");\n for (let field of fields) {\n const type = field.type;\n if (type === \"email\") {\n field.addEventListener(\n \"blur\",\n function (e) {\n const x = field.value;\n const re =\n /^(([^<>()\\[\\]\\\\.,;:\\s@']+(\\.[^<>()\\[\\]\\\\.,;:\\s@']+)*)|('.+'))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\n if (!re.test(x)) {\n field.classList.add(\"is-invalid\");\n } else {\n field.classList.remove(\"is-invalid\");\n }\n },\n true\n );\n } else if (type === \"tel\") {\n field.addEventListener(\n \"blur\",\n function (e) {\n const x = field.value;\n const re = /[(]?\\d{3}[)]?\\s?-?\\s?\\d{3}\\s?-?\\s?\\d{4}/;\n if (!re.test(x)) {\n field.classList.add(\"is-invalid\");\n } else {\n field.classList.remove(\"is-invalid\");\n }\n },\n true\n );\n } else {\n field.addEventListener(\n \"blur\",\n function (e) {\n const x = field.value;\n if (!x || x.trim() == \"\") {\n field.classList.add(\"is-invalid\");\n } else {\n field.classList.remove(\"is-invalid\");\n }\n },\n true\n );\n }\n }\n },\n\n isFormValid: function (theForm) {\n if (!theForm) {\n return false;\n }\n // form fields validation during submission\n const fields = theForm.querySelectorAll(\".required\");\n let isFormValid = true;\n for (let field of fields) {\n const type = field.type;\n if (type === \"email\") {\n const x = field.value;\n const re =\n /^(([^<>()\\[\\]\\\\.,;:\\s@']+(\\.[^<>()\\[\\]\\\\.,;:\\s@']+)*)|('.+'))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\n if (!re.test(x)) {\n field.classList.add(\"is-invalid\");\n isFormValid = false;\n } else {\n field.classList.remove(\"is-invalid\");\n }\n } else if (type === \"tel\") {\n const x = field.value;\n const re = /[(]?\\d{3}[)]?\\s?-?\\s?\\d{3}\\s?-?\\s?\\d{4}/;\n if (!re.test(x)) {\n field.classList.add(\"is-invalid\");\n isFormValid = false;\n } else {\n field.classList.remove(\"is-invalid\");\n }\n } else {\n const x = field.value;\n if (!x || x.trim() == \"\") {\n field.classList.add(\"is-invalid\");\n isFormValid = false;\n } else {\n field.classList.remove(\"is-invalid\");\n }\n }\n }\n return isFormValid;\n },\n\n submit: function (formSetting) {\n const { theForm, emarsysFormId } = formSetting;\n const submitBtn = theForm.querySelector(\"button[type=submit]\");\n\n const readCookie = (name) => {\n let nameEQ = encodeURIComponent(name) + \"=\";\n let ca = document.cookie.split(\";\");\n for (let i = 0; i < ca.length; i++) {\n let c = ca[i];\n while (c.charAt(0) == \" \") c = c.substring(1, c.length);\n if (c.indexOf(nameEQ) == 0)\n return decodeURIComponent(c.substring(nameEQ.length, c.length));\n }\n return null;\n };\n\n const referringUrl = document.referrer || \"\";\n const sourceUrl = window.location.href || \"\";\n const sourceDomain = \"https://\" + window.location.host || \"\";\n const adwordsLead = readCookie(\"adwordsLead\") || \"\";\n const facebookLead = readCookie(\"facebookLead\") || \"\";\n const bingLead = readCookie(\"bingLead\") || \"\";\n const clientID = readCookie(\"_ga\")\n ? readCookie(\"_ga\").split(\".\").slice(2).join(\".\")\n : \"\";\n\n // global hidden form fields\n const initialFields = {\n oid: \"00D500000007hH8\", // SF organization ID\n status: \"New\",\n lead_source: \"Academy Website Form\",\n recordType: \"0121T000000AUqV\", // Academy value\n \"00N1T00000AXeke\": referringUrl,\n \"00N1T00000AXel8\": sourceUrl,\n \"00N1T00000AXel3\": sourceDomain,\n \"00N1T00000AXef3\": adwordsLead, // this is the gclid value saved the cookie\n \"00N1T00000AXef2\": facebookLead,\n \"00N1T00000AXfJP\": bingLead,\n \"00N1T00000AXfJU\": clientID,\n };\n\n const formMsg = theForm.querySelector(\".form-msg\");\n const formRawData = new FormData(theForm);\n\n // add key value pairs to existing formFields from formRawData\n const formFields = { ...initialFields };\n for (let [key, value] of formRawData) {\n formFields[key] = value;\n }\n\n // add initianFields to formRawData\n for (let [key, value] of Object.entries(initialFields)) {\n formRawData.append(key, value);\n }\n\n // form data for submission\n const formData = new URLSearchParams(formRawData);\n\n const formActionUrl =\n \"https://webto.salesforce.com/servlet/servlet.WebToLead?encoding=UTF-8\";\n\n // submit form to Emarsys via iframe\n const submitToEmarsysIframe = () => {\n const emarsysUrl = generateEmarsysUrl(formFields, emarsysFormId) || \"\";\n const emarsysIframe = document.querySelector(\"#emarsys-iframe\");\n // create hidden iFrame to send data to Emarsys\n if (emarsysIframe) {\n emarsysIframe.remove();\n }\n const iFrame = document.createElement(\"iframe\");\n iFrame.setAttribute(\"id\", \"emarsys-iframe\");\n iFrame.setAttribute(\"src\", emarsysUrl);\n iFrame.setAttribute(\"width\", \"0\");\n iFrame.setAttribute(\"height\", \"0\");\n iFrame.setAttribute(\n \"style\",\n \"margin: 0; padding: 0; width: 0; height: 0; opacity: 0;\"\n );\n document.body.appendChild(iFrame);\n };\n\n // send form to Saleforce without return URL, then submit the form to Emarsys\n const sendToSFWithoutReturn = () => {\n submitBtn.innerHTML = \"Submitting...\";\n fetch(formActionUrl, {\n method: \"POST\",\n mode: \"no-cors\",\n body: formData,\n })\n .then((response) => response.text())\n .then((data) => {\n if (data.status !== \"error\") {\n submitToEmarsysIframe();\n\n // show form success message\n formMsg.classList.remove(\"alert\", \"alert-danger\");\n formMsg.classList.add(\"alert\", \"alert-success\");\n formMsg.innerHTML =\n data.inlineMessage || \"Form submission successful.\";\n theForm.reset();\n submitBtn.innerHTML = \"Submit\";\n } else if (data.status === \"error\") {\n console.error(\"Error:\", data);\n console.error(\"Errors:\", data.errors);\n // show form error message\n formMsg.classList.remove(\"alert\", \"alert-success\");\n formMsg.classList.add(\"alert\", \"alert-danger\");\n formMsg.innerHTML = `${data.errors[0].message}`;\n }\n })\n .catch((error) => {\n console.error(\"Error:\", error);\n });\n };\n\n function sendToSFWithReturn() {\n submitBtn.innerHTML = \"Submitting...\";\n // listen to onformdata event that is fired when the form is submitted\n // we use this to modify the form data before it get submitted to SF\n theForm.onformdata = (e) => {\n const formData = e.formData;\n // modifies the form data to add the rest of the data needed\n for (let [key, value] of formRawData) {\n // set or update form fields wth values\n formData.set(key, value);\n }\n };\n\n // submit to Emarsys via fetching the page then submit form to SF\n const emarsysUrl = generateEmarsysUrl(formFields, emarsysFormId) || \"\";\n fetch(emarsysUrl, {\n method: \"POST\",\n mode: \"no-cors\",\n })\n .then((response) => response.text())\n .then((data) => {\n theForm.action = formActionUrl;\n theForm.submit();\n submitBtn.innerHTML = \"Submit\";\n })\n .catch((error) => {\n console.error(\"Error:\", error);\n console.error(\"Error:\", error.data);\n });\n }\n\n if (formFields.retURL !== \"\") {\n sendToSFWithReturn();\n } else {\n sendToSFWithoutReturn();\n }\n },\n};\n"]}