{"version":3,"file":"Static/dist/NewsletterSignupForm.js","mappings":"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","sources":["webpack://static/./Static/js/Utility/Extensions/StringExtensions.js","webpack://static/webpack/bootstrap","webpack://static/webpack/runtime/define property getters","webpack://static/webpack/runtime/hasOwnProperty shorthand","webpack://static/./Static/js/Organization/Organization.js","webpack://static/./Static/js/Utility/FormHelpers.js","webpack://static/./Static/js/Forms/NewsletterSignupForm.js"],"sourcesContent":["String.prototype.parseURL = function () {\r\n let path = \"\", query = \"\", hash = \"\", url = this, params;\r\n if (url.indexOf(\"#\") > 0) {\r\n hash = url.substring(url.indexOf(\"#\") + 1);\r\n url = url.substring(0, url.indexOf(\"#\"));\r\n }\r\n if (url.indexOf(\"?\") > 0) {\r\n path = url.substring(0, url.indexOf(\"?\"));\r\n query = url.substring(url.indexOf(\"?\") + 1);\r\n params = query.split('&');\r\n } else\r\n path = url;\r\n return {\r\n getHost: function () {\r\n let hostexp = /\\/\\/([\\w.-]*)/;\r\n let match = hostexp.exec(path);\r\n if (match != null && match.length > 1)\r\n return match[1];\r\n return \"\";\r\n },\r\n getPath: function () {\r\n let pathexp = /\\/\\/[\\w.-]*(?:\\/([^?]*))/;\r\n let match = pathexp.exec(path);\r\n if (match != null && match.length > 1)\r\n return match[1];\r\n return \"\";\r\n },\r\n getHash: function () {\r\n return hash;\r\n },\r\n getParams: function () {\r\n return params\r\n },\r\n getQuery: function () {\r\n return query;\r\n },\r\n setHash: function (value) {\r\n if (query.length > 0)\r\n query = \"?\" + query;\r\n if (value.length > 0)\r\n query = query + \"#\" + value;\r\n return path + query;\r\n },\r\n setParam: function (name, value) {\r\n if (!params) {\r\n params = new Array();\r\n }\r\n params.push(name + '=' + value);\r\n for (let i = 0; i < params.length; i++) {\r\n if (query.length > 0)\r\n query += \"&\";\r\n query += params[i];\r\n }\r\n if (query.length > 0)\r\n query = \"?\" + query;\r\n if (hash.length > 0)\r\n query = query + \"#\" + hash;\r\n return path + query;\r\n },\r\n insertParam: function (name, value, index) {\r\n if (!params) {\r\n params = new Array();\r\n }\r\n\r\n let newParam = name + '=' + value;\r\n\r\n if (index <= 0)\r\n params.unshift(newParam);\r\n else if (index >= params.length)\r\n params.push(newParam);\r\n else\r\n params.splice(index, 0, name + '=' + value);\r\n\r\n query = \"\";\r\n for (let i = 0; i < params.length; i++) {\r\n if (query.length > 0)\r\n query += \"&\";\r\n query += params[i];\r\n }\r\n if (query.length > 0)\r\n query = \"?\" + query;\r\n if (hash.length > 0)\r\n query = query + \"#\" + hash;\r\n return path + query;\r\n },\r\n getParam: function (name) {\r\n if (params) {\r\n for (let i = 0; i < params.length; i++) {\r\n let pair = params[i].split('=');\r\n if (decodeURIComponent(pair[0]) == name)\r\n return decodeURIComponent(pair[1]);\r\n }\r\n }\r\n console.log('Query variable %s not found', name);\r\n },\r\n hasParam: function (name) {\r\n if (params) {\r\n for (let i = 0; i < params.length; i++) {\r\n let pair = params[i].split('=');\r\n if (decodeURIComponent(pair[0]) == name)\r\n return true;\r\n }\r\n }\r\n console.log('Query variable %s not found', name);\r\n },\r\n removeParam: function (name) {\r\n query = \"\";\r\n if (params) {\r\n let newparams = new Array();\r\n for (let i = 0; i < params.length; i++) {\r\n let pair = params[i].split('=');\r\n if (decodeURIComponent(pair[0]) != name)\r\n newparams.push(params[i]);\r\n }\r\n params = newparams;\r\n for (let i = 0; i < params.length; i++) {\r\n if (query.length > 0)\r\n query += \"&\";\r\n query += params[i];\r\n }\r\n }\r\n if (query.length > 0)\r\n query = \"?\" + query;\r\n if (hash.length > 0)\r\n query = query + \"#\" + hash;\r\n return path + query;\r\n },\r\n deduplicateParams: function (order = 'FIFO') {\r\n query = \"\";\r\n if (params) {\r\n let newparams = new Array();\r\n if (order.toLowerCase() === 'lifo') {\r\n for (let i = params.length - 1; i >= 0; i--) {\r\n let pair = params[i].split('=');\r\n if (!newparams.find(p => p.startsWith(pair[0] + '=')))\r\n newparams.push(params[i]);\r\n }\r\n }\r\n if (order.toLowerCase() === 'fifo') {\r\n for (let i = 0; i < params.length; i++) {\r\n let pair = params[i].split('=');\r\n if (!newparams.find(p => p.startsWith(pair[0] + '=')))\r\n newparams.push(params[i]);\r\n }\r\n }\r\n params = newparams;\r\n for (let i = 0; i < params.length; i++) {\r\n if (query.length > 0)\r\n query += \"&\";\r\n query += params[i];\r\n }\r\n if (query.length > 0)\r\n query = \"?\" + query;\r\n if (hash.length > 0)\r\n query = query + \"#\" + hash;\r\n return path + query;\r\n }\r\n },\r\n reconstitute: function () {\r\n return `https://${this.getHost()}/${this.getPath()}${this.getQuery()}`;\r\n }\r\n }\r\n}\r\n\r\nString.prototype.Cleanse = function () {\r\n return this.replace(/[^\\w\\.@!? ,/:+()'´_#*-]/gi, \" \");\r\n}\r\n\r\nString.prototype.isNullOrWhitespace = function () {\r\n if (!this)\r\n return true;\r\n if (typeof this === 'string') {\r\n let trimmed = this.trim();\r\n let len = trimmed.length;\r\n if (len == 0)\r\n return true;\r\n else\r\n return false;\r\n }\r\n\r\n return false;\r\n}","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","class Office {\r\n constructor(number, active, isHhc, address, suite, city, stateProvince, postalCode, country, latitude, longitude, phone, created, modified) {\r\n this.Number = number;\r\n this.Active = active;\r\n this.IsHhc = isHhc;\r\n this.Address = address;\r\n this.Suite = suite;\r\n this.City = city;\r\n this.StateProvince = stateProvince;\r\n this.PostalCode = postalCode;\r\n this.Country = country;\r\n this.Latitude = latitude;\r\n this.Longitude = longitude;\r\n this.Phone = phone;\r\n this.Created = created;\r\n this.Modified = modified;\r\n }\r\n\r\n getFormattedPhoneNumber() {\r\n return this.formatPhoneNumber(this.Phone);\r\n }\r\n\r\n formatPhoneNumber(phoneNumber) {\r\n const cleaned = ('' + phoneNumber).replace(/\\D/g, '');\r\n const match = cleaned.match(/^(\\d{3})(\\d{3})(\\d{4})$/);\r\n\r\n if (match) {\r\n return '(' + match[1] + ') ' + match[2] + '-' + match[3];\r\n }\r\n\r\n return null;\r\n }\r\n}\r\n\r\nclass Attribute {\r\n constructor(typeName, value, number, created, modified, category) {\r\n this.TypeName = typeName;\r\n this.Value = value;\r\n this.Number = number;\r\n this.Created = created;\r\n this.Modified = modified;\r\n this.Category = category;\r\n }\r\n}\r\n\r\nclass Organization {\r\n constructor(data) {\r\n this.Number = data.Number;\r\n this.Region = data.Region;\r\n this.Status = data.Status;\r\n this.Active = data.Active;\r\n this.Type = data.Type;\r\n this.Created = data.Created;\r\n this.Modified = data.Modified;\r\n this.Canonical = data.Canonical.replace(`www.`, window.settings.env + `.`);\r\n\r\n if (Array.isArray(data.Offices)) {\r\n this.offices = data.Offices.map(officeData => new Office(officeData.Number, officeData.Active, officeData.IsHhc, officeData.Address, officeData.Suite, officeData.City, officeData.StateProvince, officeData.PostalCode, officeData.Country, officeData.Latitude, officeData.Longitude, officeData.Phone, officeData.Created, officeData.Modified));\r\n } else {\r\n this.offices = [];\r\n }\r\n\r\n if (Array.isArray(data.Attributes)) {\r\n this.attributes = data.Attributes.map(attrData => new Attribute(attrData.TypeName, attrData.Value, attrData.Number, attrData.Created, attrData.Modified, attrData.Category));\r\n } else {\r\n this.attributes = [];\r\n }\r\n\r\n this.CarePlatform = this.getAttributeByName('MigratedToCarePlatform');\r\n }\r\n getAttributeByName(typeName) {\r\n const attribute = this.attributes.find(attr => attr.TypeName === typeName);\r\n return attribute ? attribute.Value : \"\";\r\n }\r\n}\r\n\r\nexport { Office, Attribute, Organization };\r\n","import { Organization } from '/Static/js/Organization/Organization.js';\r\nimport \"/Static/js/Utility/Extensions/StringExtensions.js\";\r\n\r\nexport class FormHelpers {\r\n constructor() {\r\n }\r\n\r\n // Clear out the Drop Down list\r\n // stopDeletingAt - default will remove all elements\r\n clearDropDown(dropDown, stopDeletingAt=-1) {\r\n for (let i = dropDown.length; i > stopDeletingAt; i--) {\r\n dropDown.remove(i);\r\n }\r\n }\r\n\r\n // Reset the Form Validation Styles for each Input/Select field\r\n clearFieldValidation(elementList) {\r\n if (elementList !== null) {\r\n elementList.forEach((input) => {\r\n input.classList.remove(\"is-invalid\");\r\n input.classList.remove(\"is-valid\");\r\n });\r\n }\r\n }\r\n\r\n clearFormGroupValidation(hiscForm, formGroupSelector) {\r\n const formHelper = new FormHelpers();\r\n formHelper.clearFieldValidation(hiscForm.querySelectorAll(formGroupSelector + \" .form-control\"));\r\n formHelper.clearValidationMessages(hiscForm.querySelectorAll(formGroupSelector + \" .invalid-feedback\"));\r\n }\r\n\r\n // Reset the Form Validation Messages for each Input/Select field\r\n clearValidationMessages(elementList) {\r\n if (elementList !== null) {\r\n elementList.forEach((errorMessage) => {\r\n errorMessage.style.display = \"none\";\r\n errorMessage.textContent = \"\";\r\n });\r\n }\r\n }\r\n\r\n // Convert Form Data to json string - (Handles multi-select)\r\n ConvertFormDataToJson(hiscFormData) {\r\n const object = {};\r\n hiscFormData.forEach((value, key) => {\r\n if (!Reflect.has(object, key)) {\r\n object[key] = value;\r\n return;\r\n }\r\n if (!Array.isArray(object[key])) {\r\n object[key] = [object[key]];\r\n }\r\n object[key].push(value);\r\n });\r\n\r\n return JSON.stringify(object);\r\n }\r\n\r\n focusOnFirstError(theForm, scroll = true) {\r\n // Grab the first element in the form that is set to .is-invalid\r\n const firstError = theForm.querySelector(\".is-invalid\");\r\n if (typeof firstError !== \"undefined\" && firstError !== null) {\r\n let focusDelay = scroll ? 350 : 5;\r\n \r\n // Set the focus of the field before we start positioning\r\n setTimeout(function () {\r\n firstError.focus();\r\n }, focusDelay);\r\n\r\n if (!scroll)\r\n return;\r\n\r\n const firstErrorPosition = firstError.getBoundingClientRect().top;\r\n\r\n // accomodate header height if it exists\r\n let headerHeight = 0;\r\n const header = document.querySelector(\"header\");\r\n if (header) {\r\n headerHeight = header.offsetHeight + header.getBoundingClientRect().top;\r\n }\r\n\r\n const scrollPosition = firstErrorPosition - headerHeight - 40; // give it 40px of room to look nice\r\n window.scrollBy({ top: scrollPosition, left: 0, behavior: \"smooth\" });\r\n }\r\n }\r\n\r\n async gtmTrackFormSubmission(gtmEvent, franchiseNumber, jobId, formId, formIntent, submissionResult) { \r\n try {\r\n if (franchiseNumber === null) franchiseNumber = \"\";\r\n if (jobId === null) jobId = \"\";\r\n\r\n let payload = {\r\n 'franchise_number': franchiseNumber,\r\n 'job_id': jobId,\r\n 'form_id': formId,\r\n 'form_submission_intent': formIntent,\r\n 'form_submission_result': submissionResult,\r\n 'page_url': window.location.href,\r\n 'event': gtmEvent\r\n };\r\n\r\n // Fire dataLayer.push(payload)\r\n if (window.settings.gtm_enabled) {\r\n window.dataLayer.push(payload);\r\n }\r\n if (window.settings.segment_enabled) {\r\n await analytics.track(payload.event, payload);\r\n\r\n if (payload.eventCallback) {\r\n payload.eventCallback();\r\n }\r\n }\r\n } catch (e) { console.log(`gtm error (${submissionResult})`, e); }\r\n }\r\n\r\n isValidEmail(email) {\r\n const emailClean = email?.replace(/\\s+/g, ''); // Remove white spaces\r\n if (!emailClean || (emailClean.length < 6 && emailClean.length > 256)) return false; // Check length for a valid Email (white space removed)\r\n\r\n // Check regex for a valid Email Address\r\n const regex_email = /^(?![_.-])((?![_.-][_.-])[a-zA-Z\\d_.+-]){0,63}[a-zA-Z\\d]@((?!-)((?!--)[a-zA-Z\\d-]){0,63}[a-zA-Z\\d]\\.){1,2}([a-zA-Z]{2,14}\\.)?[a-zA-Z]{2,14}$/;\r\n if (regex_email.test(emailClean)) {\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n isValidPhone(phoneNumber) {\r\n const phoneNumberClean = phoneNumber?.replace(/\\s+/g, ''); // Remove white spaces\r\n if (!phoneNumberClean || phoneNumberClean.length < 10) return false; // Check length for a valid Postal Code (white space removed)\r\n\r\n // Check regex for a valid Phone Number\r\n const regex_phone = /^[\\+]?[(]?[0-9]{3}[)]?[-\\s\\.]?[0-9]{3}[-\\s\\.]?[0-9]{4}$/;\r\n if (regex_phone.test(phoneNumberClean)) {\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n isValidPostalCode(postalCode) {\r\n const postalCodeClean = postalCode?.replace(/\\s+/g, ''); // remove white spaces\r\n if (!postalCodeClean || (postalCodeClean.length < 5 && postalCodeClean.length > 6)) return false; // Check length for a valid Postal Code (white space removed)\r\n\r\n const usPostalCodeRegex = /^[0-9]{5}$/;\r\n const caPostalCodeRegex = /^[A-Za-z]\\d[A-Za-z][ -]?\\d[A-Za-z]\\d$/;\r\n\r\n // Check regex for a valid Postal Code\r\n if (usPostalCodeRegex.test(postalCodeClean) || caPostalCodeRegex.test(postalCodeClean)) {\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n // Mark a Input Field as Invalid - to show that it didn't pass validation\r\n markInputFieldInvalid(fieldGroup, errorMessage) {\r\n const field = fieldGroup.querySelector(\"input\");\r\n field.classList.add(\"is-invalid\");\r\n const errorMessageContainer = fieldGroup.querySelector(\".invalid-feedback\");\r\n errorMessageContainer.textContent = errorMessage;\r\n errorMessageContainer.style.display = \"block\";\r\n }\r\n\r\n // Mark a Input Field as Invalid - to show that it didn't pass validation\r\n markTextAreaFieldInvalid(fieldGroup, errorMessage) {\r\n const field = fieldGroup.querySelector(\"textarea\");\r\n field.classList.add(\"is-invalid\");\r\n const errorMessageContainer = fieldGroup.querySelector(\".invalid-feedback\");\r\n errorMessageContainer.textContent = errorMessage;\r\n errorMessageContainer.style.display = \"block\";\r\n }\r\n\r\n // Mark a Select Field as Invalid - to show that it didn't pass validation\r\n markSelectFieldInvalid(fieldGroup, errorMessage) {\r\n const field = fieldGroup.querySelector(\"select\");\r\n field.classList.add(\"is-invalid\");\r\n const errorMessageContainer = fieldGroup.querySelector(\".invalid-feedback\");\r\n errorMessageContainer.textContent = errorMessage;\r\n errorMessageContainer.style.display = \"block\";\r\n }\r\n\r\n // Mark a Radio Input Fields as Invalid - to show that it didn't pass validation\r\n markRadioFieldInvalid(fieldGroup, errorMessage) {\r\n fieldGroup.querySelectorAll(\"input\").forEach(field => {\r\n field.classList.add(\"is-invalid\");\r\n })\r\n const errorMessageContainer = fieldGroup.querySelector(\".invalid-feedback\");\r\n errorMessageContainer.textContent = errorMessage;\r\n errorMessageContainer.style.display = \"block\";\r\n }\r\n\r\n // Mark a Radio Input Fields as Valid - (clear invalid classes)\r\n markRadioFieldValid(fieldGroup) {\r\n fieldGroup.querySelectorAll(\"input\").forEach(field => {\r\n field.classList.remove(\"is-invalid\");\r\n })\r\n const errorMessageContainer = fieldGroup.querySelector(\".invalid-feedback\");\r\n errorMessageContainer.textContent = \"\";\r\n errorMessageContainer.style.display = \"none\";\r\n }\r\n\r\n // Process the form errors and mark fields invalid and set error messages\r\n processFormErrors(theForm, errorList) {\r\n for (let i = 0; i < errorList.length; i++) {\r\n const errObj = errorList[i];\r\n\r\n let fieldSelector = errObj.source;\r\n if (fieldSelector === \"PostalCode\") fieldSelector = \"Zip_Code\";\r\n if (fieldSelector === \"Phone\") fieldSelector = \"Phone_Number\";\r\n\r\n const formFieldGroup = theForm.querySelector(\".\" + fieldSelector +\"-group\");\r\n if (formFieldGroup !== null) {\r\n const formField = formFieldGroup.querySelector(\".\" + fieldSelector + \"-field\");\r\n if (formField !== null) {\r\n // Set Bootstrap Error Style on Field\r\n formField.classList.add(\"is-invalid\");\r\n\r\n // Set Text & Bootstrap Style on Error Message Feedback\r\n const errorMessage = formFieldGroup.querySelector(\".invalid-feedback\");\r\n //errorMessage.classList.add(\"invalid-feedback\");\r\n errorMessage.style.display = \"block\";\r\n errorMessage.textContent = errObj.detail;\r\n }\r\n }\r\n }\r\n }\r\n\r\n updateInternalErrorMsg(errorContainer, franchiseName, franchiseUrl, franchisePhone) {\r\n const locationLink = errorContainer.querySelector(\"a.location-url\");\r\n if (locationLink != null) {\r\n locationLink.setAttribute(\"href\", franchiseUrl);\r\n locationLink.innerHTML = franchiseName;\r\n }\r\n\r\n const phoneLink = errorContainer.querySelector(\"a.location-phone\");\r\n if (phoneLink != null) {\r\n phoneLink.innerHTML = franchisePhone;\r\n phoneLink.setAttribute(\"href\", `tel:${franchisePhone}`);\r\n }\r\n }\r\n\r\n setCookie(name, value, maxAgeSeconds) {\r\n const maxAgeSegment = `; max-age=${maxAgeSeconds}`;\r\n document.cookie = encodeURI(name) + \"=\" + encodeURI(value) + maxAgeSegment;\r\n }\r\n\r\n getCookie(cname) {\r\n const name = cname + \"=\";\r\n const decodedCookie = decodeURIComponent(document.cookie);\r\n const ca = decodedCookie.split(\";\");\r\n for (let i = 0; i < ca.length; i++) {\r\n let c = ca[i];\r\n while (c.charAt(0) === \" \") {\r\n c = c.substring(1);\r\n }\r\n if (c.indexOf(name) === 0) {\r\n return c.substring(name.length, c.length);\r\n }\r\n }\r\n return \"\";\r\n }\r\n\r\n disableFormButton(theButton) {\r\n theButton.disabled = true;\r\n }\r\n\r\n enableFormButton(theButton) {\r\n theButton.disabled = false;\r\n }\r\n\r\n // Show a Form Group, using Bootstrap Styles\r\n showFormGroup(formGroup) {\r\n if (formGroup !== null) {\r\n formGroup.classList.remove(\"d-none\");\r\n formGroup.classList.add(\"d-block\");\r\n }\r\n }\r\n\r\n // Hide a Form Group, using Bootstrap Styles\r\n hideFormGroup(formGroup) {\r\n if (formGroup !== null) {\r\n formGroup.classList.remove(\"d-block\");\r\n formGroup.classList.add(\"d-none\");\r\n }\r\n }\r\n\r\n async getFranchiseLocationOptions(geoLocationSearch, forceProximitySearch = false, withJobsOnly = false) {\r\n let options = [];\r\n\r\n if (window.postalResults && window.postalResults.filter(x => x.code === geoLocationSearch).length > 0) {\r\n let cachedResults = window.postalResults.filter(x => x.code === geoLocationSearch)[0].results;\r\n options = this.getLocationOptionsFromResultsArray(cachedResults);\r\n return options;\r\n }\r\n\r\n const url = `/api/data/getLocations?forceProximitySearch=${forceProximitySearch}&geoSearchTerm=${geoLocationSearch}${withJobsOnly ? '&withJobsOnly=true' : ''}`;\r\n const config = {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json; charset=utf-8'\r\n }\r\n };\r\n\r\n await fetch(url, config)\r\n .then(response => {\r\n if (response.status >= 200 && response.status < 400) {\r\n return response;\r\n } else {\r\n throw new Error('Network response was not ok.');\r\n }\r\n })\r\n .then(response => response.json())\r\n .then(searchResults => {\r\n options = this.getLocationOptionsFromResultsArray(searchResults);\r\n\r\n window.postalResults = window.postalResults ?? [];\r\n window.postalResults.push(\r\n {\r\n \"code\": geoLocationSearch,\r\n \"results\": searchResults\r\n });\r\n })\r\n .catch(error => {\r\n console.log(error);\r\n })\r\n\r\n return options;\r\n }\r\n\r\n getLocationOptionsFromResultsArray(searchResults) {\r\n let options = [];\r\n\r\n if (!Array.isArray(searchResults))\r\n return options;\r\n\r\n searchResults.forEach((result) => {\r\n const organization = new Organization(result);\r\n const option = document.createElement(\"option\");\r\n option.text = organization.getAttributeByName('Name');\r\n option.value = organization.Number;\r\n option.setAttribute(\"data-franchise-phone\", organization.offices[0].Phone);\r\n option.setAttribute(\"data-franchise-name\", organization.getAttributeByName('Name'));\r\n option.setAttribute(\"data-franchise-url\", \"/location/\" + organization.Number);\r\n option.setAttribute(\"data-franchise-migrated\", organization.CarePlatform);\r\n option.dataset.Organization = JSON.stringify(result);\r\n\r\n options.push(option);\r\n });\r\n\r\n return options;\r\n }\r\n\r\n async getJobsForFranchise(franchiseNum) {\r\n let jobs = [];\r\n\r\n if (window.franchiseJobs && window.franchiseJobs[franchiseNum]) {\r\n return window.franchiseJobs[franchiseNum];\r\n }\r\n\r\n window.franchiseJobs = window.franchiseJobs ?? [];\r\n\r\n const url = `/api/data/getJobsByFranchise?franchiseNum=${franchiseNum}`;\r\n const config = {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json; charset=utf-8'\r\n }\r\n };\r\n\r\n await fetch(url, config)\r\n .then(response => {\r\n if (response.status >= 200 && response.status < 400) {\r\n return response;\r\n } else {\r\n throw new Error('Network response was not ok.');\r\n }\r\n })\r\n .then(response => response.json())\r\n .then(jobResults => {\r\n window.franchiseJobs[franchiseNum] = jobResults;\r\n })\r\n .catch(error => {\r\n console.log(error);\r\n });\r\n\r\n return window.franchiseJobs[franchiseNum] ?? [];\r\n }\r\n}","import { FormHelpers } from \"../Utility/FormHelpers.js\";\r\n\r\nclass NewsletterSignupForm {\r\n hasSubmitted = false;\r\n\r\n constructor() {\r\n console.log(\"NewsletterSignupForm.js is running\");\r\n // Find the Form\r\n this.frmNewsletterSignupFormSelector = \".newsletter-signup-form\";\r\n this.frmNewsletterSignupForm = document.querySelector(this.frmNewsletterSignupFormSelector);\r\n this.newsletterSignupForm = this.frmNewsletterSignupForm;\r\n\r\n if (!this.frmNewsletterSignupForm) {\r\n return;\r\n }\r\n\r\n this.formHelper = new FormHelpers();\r\n\r\n // Get the Unique Form ID\r\n this.formId = this.frmNewsletterSignupForm.getAttribute(\"data-form-id\");\r\n \r\n // Setup Selectors\r\n this.allFormFields = this.frmNewsletterSignupForm.querySelectorAll(\".form-control\");\r\n\r\n this.submitButton = this.frmNewsletterSignupForm.querySelector(\".newsletter-signup-form-button\");\r\n this.buttonSpinner = this.frmNewsletterSignupForm.querySelector(\".spinner\");\r\n\r\n this.grpFirstName = this.frmNewsletterSignupForm.querySelector(\".firstName-group\");\r\n this.fieldFirstName = this.grpFirstName.querySelector(\"input\");\r\n\r\n this.grpLastName = this.frmNewsletterSignupForm.querySelector(\".lastName-group\");\r\n this.fieldLastName = this.grpLastName.querySelector(\"input\");\r\n\r\n this.grpEmail = this.frmNewsletterSignupForm.querySelector(\".email-group\");\r\n this.fieldEmail = this.grpEmail.querySelector(\"input\");\r\n\r\n this.grpCountry = this.frmNewsletterSignupForm.querySelector(\".country-group\");\r\n this.fieldCountry = this.grpCountry.querySelector(\"select\");\r\n\r\n this.grpCaringConnections = this.frmNewsletterSignupForm.querySelector(\".caringConnections-group\");\r\n this.fieldCaringConnections = this.grpCaringConnections?.querySelectorAll(\"input\");\r\n\r\n this.grpSeniorCareInsights = this.frmNewsletterSignupForm.querySelector(\".seniorCareInsights-group\");\r\n this.fieldSeniorCareInsights = this.grpSeniorCareInsights?.querySelectorAll(\"input\");\r\n\r\n this.grpAlzheimersReflections = this.frmNewsletterSignupForm.querySelector(\".alzheimersReflections-group\");\r\n this.fieldAlzheimersReflections = this.grpAlzheimersReflections?.querySelectorAll(\"input\");\r\n\r\n this.grpFranDevAdvantage = this.frmNewsletterSignupForm.querySelector(\".franDevAdvantage-group\");\r\n this.fieldFranDevAdvantage = this.grpFranDevAdvantage?.querySelectorAll(\"input\");\r\n\r\n ////////////////////////////////////////////////////////\r\n // Listeners to clear Field Validatin once the user attempts to correct the error\r\n this.allFormFields.forEach((field) => {\r\n let fieldGroup = field.parentNode;\r\n field.addEventListener('input', () => {\r\n this.formHelper.clearFieldValidation([field]);\r\n this.formHelper.clearValidationMessages(fieldGroup.querySelectorAll(\".invalid-feedback\"));\r\n });\r\n });\r\n\r\n ////////////////////////////////////////////////////////\r\n // Form Submission\r\n ////////////////////////////////////////////////////////\r\n this.submitButton.addEventListener(\"click\", (ev) => { ev.preventDefault(); this.formHelper.disableFormButton(this.submitButton); });\r\n this.submitButton.addEventListener(\"click\", (ev) => this.submitForm(ev), { once: true }); \r\n }\r\n\r\n // Validate the Form prior to submission\r\n validateForm_ClientSide() {\r\n let validSubmission = true;\r\n\r\n // Reset the Form Validation Styles for each Input/Select field\r\n this.formHelper.clearFieldValidation(this.allFormFields);\r\n this.formHelper.clearFieldValidation(this.frmNewsletterSignupForm.querySelectorAll(\".form-check\"));\r\n\r\n // Reset the Form Validation Text & Styles for each Error Message\r\n this.formHelper.clearValidationMessages(this.frmNewsletterSignupForm.querySelectorAll(\".invalid-feedback\"));\r\n\r\n if (this.fieldFirstName.value.trim() === \"\") {\r\n this.formHelper.markInputFieldInvalid(this.grpFirstName, \"Missing Required First Name.\");\r\n validSubmission = false;\r\n }\r\n if (this.fieldLastName.value.trim() === \"\") {\r\n this.formHelper.markInputFieldInvalid(this.grpLastName, \"Missing Required Last Name.\");\r\n validSubmission = false;\r\n }\r\n if (!this.formHelper.isValidEmail(this.fieldEmail.value)) {\r\n this.formHelper.markInputFieldInvalid(this.grpEmail, \"Please enter a valid email address.\");\r\n validSubmission = false;\r\n }\r\n\r\n // Reset the Form Validation Text & Styles for each Error Message\r\n if (validSubmission == false || this.frmNewsletterSignupForm.querySelectorAll(\".form-group .is-invalid\").length > 0) {\r\n console.log(\"Found a Validation Error\");\r\n this.formHelper.focusOnFirstError(this.frmNewsletterSignupForm);\r\n this.gtmTrackNewsletterSubmission(\"newsletter-signup-form-submit\", this.frmNewsletterSignupForm.id,\r\n this.formIntent.trim(), this.fieldCountry.value, \"validation-error\");\r\n }\r\n\r\n return validSubmission;\r\n }\r\n\r\n async submitForm(ev) {\r\n // Prevent the normal Form Submission Process\r\n ev.preventDefault();\r\n\r\n // GTM DataLayer variable Setup\r\n window.dataLayer = window.dataLayer || [];\r\n\r\n // Disable the button and show the spinner\r\n this.formHelper.disableFormButton(this.submitButton);\r\n\r\n // Get the Intent of the Form\r\n this.formIntent = \"\";\r\n if (this.fieldCaringConnections !== undefined\r\n && typeof this.fieldCaringConnections !== 'undefined'\r\n && this.fieldCaringConnections !== null\r\n && this.fieldCaringConnections.checked)\r\n this.formIntent += \"CaringConnections\";\r\n\r\n if (this.fieldSeniorCareInsights !== undefined\r\n && typeof this.fieldSeniorCareInsights !== 'undefined'\r\n && this.fieldSeniorCareInsights !== null\r\n && this.fieldSeniorCareInsights.checked)\r\n this.formIntent += \" SeniorCareInsights\";\r\n\r\n if (this.fieldAlzheimersReflections !== undefined\r\n && typeof this.fieldAlzheimersReflections !== 'undefined'\r\n && this.fieldAlzheimersReflections !== null\r\n && this.fieldAlzheimersReflections.checked)\r\n this.formIntent += \" AlzheimersReflections\";\r\n\r\n if (this.fieldFranDevAdvantage !== undefined\r\n && typeof this.fieldFranDevAdvantage !== 'undefined'\r\n && this.fieldFranDevAdvantage !== null\r\n && this.fieldFranDevAdvantage.checked)\r\n this.formIntent += \" FranDevAdvantage\";\r\n\r\n // Client Side validation on the Form prior to submission\r\n if (!this.validateForm_ClientSide()) {\r\n // Invalid Submission, return the user to the form to correct the errors\r\n this.formHelper.enableFormButton(this.submitButton, this.buttonSpinner);\r\n this.submitButton.addEventListener(\"click\", (ev) => this.submitForm(ev), { once: true });\r\n return;\r\n }\r\n \r\n // Obtain Form details & data\r\n var hiscFormData = new FormData(this.frmNewsletterSignupForm);\r\n const json = this.ConvertNewsletterSignupFormToJson(hiscFormData); //, token\r\n\r\n // Perform the Form submission logic\r\n await fetch(\"/api/data/newsletterSignup\", {\r\n method: \"POST\",\r\n headers: {\r\n \"Content-Type\": \"application/json; charset=utf-8\"\r\n },\r\n body: json\r\n })\r\n .then(response => {\r\n if (!response.ok) {\r\n throw new Error(`HTTP error! Status: ${response.status}`);\r\n }\r\n return response.json();\r\n })\r\n .then(async (parsedResult) => {\r\n if (!parsedResult.isError) {\r\n await this.handleSubmissionSuccess(parsedResult);\r\n } else {\r\n await this.handleSubmissionError(parsedResult);\r\n }\r\n })\r\n .then(() => {\r\n // Mark form as validated and focus on the first error\r\n this.frmNewsletterSignupForm.classList.add(\"was-validated\");\r\n this.formHelper.focusOnFirstError(this.frmNewsletterSignupForm);\r\n\r\n let cookie = false;// this.formHelper.getCookie(\"submission-\" + this.formId);\r\n if (cookie || this.hasSubmitted) {\r\n return;\r\n }\r\n\r\n // Re-Enable the button and hide the spinner\r\n this.formHelper.enableFormButton(this.submitButton, this.buttonSpinner);\r\n this.submitButton.addEventListener(\"click\", (ev) => this.submitForm(ev), { once: true });\r\n });\r\n }; \r\n\r\n async handleSubmissionSuccess(parsedResult) {\r\n let parsedMessage = parsedResult.message.toLowerCase()\r\n this.hasSubmitted = true;\r\n\r\n // Set submitted trigger to true\r\n this.formHelper.setCookie(\"submission-\" + this.formId, \"true\", 450);\r\n\r\n let hiscThankYouPage = \"#\";\r\n if (this.frmNewsletterSignupForm.getAttribute(\"data-result-page\")\r\n && this.frmNewsletterSignupForm.getAttribute(\"data-result-page\") !== \"\") {\r\n hiscThankYouPage = this.frmNewsletterSignupForm.getAttribute(\"data-result-page\");\r\n }\r\n\r\n let submissionResult = 'success';\r\n\r\n // Track Career Lead success in Content Recommendations\r\n if (typeof _iaq !== 'undefined') {\r\n try {\r\n _iaq.push(['goal', 'NewsletterSignup']);\r\n _iaq.push(['track', 'convert']);\r\n } catch (e) {\r\n console.log(\"_iaq error on employment success\", e);\r\n }\r\n }\r\n else {\r\n console.log(\"_iaq doesn't exist\");\r\n }\r\n\r\n try {\r\n let payload = {\r\n 'form_id': this.frmNewsletterSignupForm.id,\r\n 'form_submission_intent': this.formIntent?.trim(),\r\n 'form_newsletter_edition': this.fieldCountry.value,\r\n 'form_submission_result': submissionResult,\r\n 'page_url': window.location.href,\r\n 'event': 'newsletter-signup-form-submit',\r\n 'eventCallback': function () {\r\n window.location.href = (hiscThankYouPage); // Redirect the user to the full job application\r\n }\r\n };\r\n // Fire dataLayer.push(payload)\r\n if (window.settings.gtm_enabled) {\r\n window.dataLayer.push(payload);\r\n }\r\n if (window.settings.segment_enabled) {\r\n await analytics.track(payload.event, payload);\r\n\r\n if (payload.eventCallback) {\r\n payload.eventCallback();\r\n }\r\n }\r\n } catch (e) {\r\n console.log(\"gtm error\");\r\n window.location.href = (hiscThankYouPage); // Redirect the user to the full job application\r\n }\r\n };\r\n\r\n async handleSubmissionError(parsedResult) {\r\n const parsedMessage = parsedResult.message.toLowerCase();\r\n let submissionResult;\r\n\r\n // A Server Error Occurred\r\n if (parsedMessage.includes(\"internalerror\") || parsedMessage.includes(\"failed\")) {\r\n console.log(\"Internal Errors\", parsedResult);\r\n\r\n submissionResult = \"server-error\";\r\n\r\n let formFields = this.frmNewsletterSignupForm.querySelector(\".form-box\");\r\n formFields.style.display = \"block\";\r\n\r\n let requiredMsg = this.frmNewsletterSignupForm.querySelector(\".form-fields-required\");\r\n requiredMsg.style.display = \"none\";\r\n\r\n let errorBlock = this.frmNewsletterSignupForm.querySelector(\".newsletter-signup-form-error\");\r\n errorBlock.style.display = \"block\";\r\n }\r\n // Validation Errors Found\r\n else {\r\n console.log(\"Valid Errors\", parsedResult);\r\n submissionResult = \"validation-error\";\r\n this.formHelper.processFormErrors(this.frmNewsletterSignupForm, parsedResult.Errors);\r\n }\r\n\r\n await this.gtmTrackNewsletterSubmission('newsletter-signup-form-submit', this.frmNewsletterSignupForm.id,\r\n this.formIntent.trim(), this.fieldCountry.value, submissionResult);\r\n }\r\n\r\n // Convert Form Data to json string - Specific to Newsletter Signup Forms\r\n ConvertNewsletterSignupFormToJson(hiscFormData) {\r\n const object = {};\r\n object[\"firstName\"] = hiscFormData.get(\"firstName\");\r\n object[\"lastName\"] = hiscFormData.get(\"lastName\");\r\n object[\"email\"] = hiscFormData.get(\"email\");\r\n object[\"country\"] = hiscFormData.get(\"country\");\r\n object[\"alzheimersReflections\"] = (hiscFormData.get(\"alzheimersReflections\") !== null) ? true : false;\r\n object[\"caringConnections\"] = (hiscFormData.get(\"caringConnections\") !== null) ? true : false;\r\n object[\"seniorCareInsights\"] = (hiscFormData.get(\"seniorCareInsights\") !== null) ? true : false;\r\n object[\"franDevAdvantage\"] = (hiscFormData.get(\"franDevAdvantage\") !== null) ? true : false;\r\n\r\n return JSON.stringify(object);\r\n }\r\n\r\n async gtmTrackNewsletterSubmission(gtmEvent, formId, formIntent, formEdition, submissionResult, franchiseNumber = \"\") {\r\n try {\r\n let payload = {\r\n 'franchise_number': franchiseNumber,\r\n 'form_id': formId,\r\n 'form_submission_intent': formIntent,\r\n 'form_submission_result': submissionResult,\r\n 'form_newsletter_edition': formEdition,\r\n 'page_url': window.location.href,\r\n 'event': gtmEvent\r\n };\r\n // Fire dataLayer.push(payload)\r\n if (window.settings.gtm_enabled) {\r\n window.dataLayer.push(payload);\r\n }\r\n if (window.settings.segment_enabled) {\r\n await analytics.track(payload.event, payload);\r\n\r\n if (payload.eventCallback) {\r\n payload.eventCallback();\r\n }\r\n }\r\n } catch (e) { console.log(`gtm error (${submissionResult})`, e); }\r\n }\r\n\r\n ExistsOnPage() {\r\n return this.newsletterSignupForm !== undefined\r\n && typeof this.newsletterSignupForm !== 'undefined'\r\n && this.newsletterSignupForm !== null;\r\n }\r\n}\r\n\r\nexport default new NewsletterSignupForm();"],"names":["String","prototype","parseURL","params","path","query","hash","url","this","indexOf","substring","split","getHost","match","exec","length","getPath","getHash","getParams","getQuery","setHash","value","setParam","name","Array","push","i","insertParam","index","newParam","unshift","splice","getParam","pair","decodeURIComponent","console","log","hasParam","removeParam","newparams","deduplicateParams","order","toLowerCase","find","p","startsWith","reconstitute","Cleanse","replace","isNullOrWhitespace","trim","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","exports","module","__webpack_modules__","d","definition","key","o","Object","defineProperty","enumerable","get","obj","prop","hasOwnProperty","call","Office","constructor","number","active","isHhc","address","suite","city","stateProvince","postalCode","country","latitude","longitude","phone","created","modified","Number","Active","IsHhc","Address","Suite","City","StateProvince","PostalCode","Country","Latitude","Longitude","Phone","Created","Modified","getFormattedPhoneNumber","formatPhoneNumber","phoneNumber","Attribute","typeName","category","TypeName","Value","Category","Organization","data","Region","Status","Type","Canonical","window","settings","env","isArray","Offices","offices","map","officeData","Attributes","attributes","attrData","CarePlatform","getAttributeByName","attribute","attr","FormHelpers","clearDropDown","dropDown","stopDeletingAt","remove","clearFieldValidation","elementList","forEach","input","classList","clearFormGroupValidation","hiscForm","formGroupSelector","formHelper","querySelectorAll","clearValidationMessages","errorMessage","style","display","textContent","ConvertFormDataToJson","hiscFormData","object","Reflect","has","JSON","stringify","focusOnFirstError","theForm","scroll","firstError","querySelector","setTimeout","focus","firstErrorPosition","getBoundingClientRect","top","headerHeight","header","document","offsetHeight","scrollPosition","scrollBy","left","behavior","async","gtmEvent","franchiseNumber","jobId","formId","formIntent","submissionResult","payload","location","href","gtm_enabled","dataLayer","segment_enabled","analytics","track","event","eventCallback","e","isValidEmail","email","emailClean","test","isValidPhone","phoneNumberClean","isValidPostalCode","postalCodeClean","markInputFieldInvalid","fieldGroup","add","errorMessageContainer","markTextAreaFieldInvalid","markSelectFieldInvalid","markRadioFieldInvalid","field","markRadioFieldValid","processFormErrors","errorList","errObj","fieldSelector","source","formFieldGroup","formField","detail","updateInternalErrorMsg","errorContainer","franchiseName","franchiseUrl","franchisePhone","locationLink","setAttribute","innerHTML","phoneLink","setCookie","maxAgeSeconds","maxAgeSegment","cookie","encodeURI","getCookie","cname","ca","c","charAt","disableFormButton","theButton","disabled","enableFormButton","showFormGroup","formGroup","hideFormGroup","geoLocationSearch","forceProximitySearch","withJobsOnly","options","postalResults","filter","x","code","cachedResults","results","getLocationOptionsFromResultsArray","fetch","method","headers","then","response","status","Error","json","searchResults","catch","error","result","organization","option","createElement","text","dataset","franchiseNum","franchiseJobs","jobResults","hasSubmitted","frmNewsletterSignupFormSelector","frmNewsletterSignupForm","newsletterSignupForm","getAttribute","allFormFields","submitButton","buttonSpinner","grpFirstName","fieldFirstName","grpLastName","fieldLastName","grpEmail","fieldEmail","grpCountry","fieldCountry","grpCaringConnections","fieldCaringConnections","grpSeniorCareInsights","fieldSeniorCareInsights","grpAlzheimersReflections","fieldAlzheimersReflections","grpFranDevAdvantage","fieldFranDevAdvantage","parentNode","addEventListener","ev","preventDefault","submitForm","once","validateForm_ClientSide","validSubmission","gtmTrackNewsletterSubmission","id","checked","FormData","ConvertNewsletterSignupFormToJson","body","ok","parsedResult","isError","handleSubmissionError","handleSubmissionSuccess","message","hiscThankYouPage","_iaq","parsedMessage","includes","Errors","formEdition","ExistsOnPage"],"sourceRoot":""}