{"version":3,"file":"Static/dist/ServiceLeadForm.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/ServiceLeadForm.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 \"/Static/js/Utility/FormHelpers.js\";\r\nimport { Organization } from '/Static/js/Organization/Organization.js';\r\nimport \"/Static/js/Utility/Extensions/StringExtensions.js\";\r\n\r\nclass ServiceLeadForm {\r\n    hasSubmitted = false;\r\n\r\n    constructor() {\r\n        window.HasLoaded = window.HasLoaded ?? [];\r\n\r\n        if (window.HasLoaded.ServiceLeadForm)\r\n            return;\r\n\r\n        window.HasLoaded.ServiceLeadForm = true;\r\n\r\n        if (!this.gatherFormElements())\r\n            return;\r\n\r\n        this.formHelper = new FormHelpers();\r\n\r\n        // Get the Unique Form ID\r\n        this.formId = this.frmServiceLead.getAttribute(\"data-form-id\");\r\n\r\n        let queryParams = new URLSearchParams(window.location.search);\r\n\r\n        // Set the default Timeout for the forms\r\n        // Requested by PHD to delay submission to give time for SA360's conversion tracking to fire.\r\n        this.defaultTimeout = 1200;\r\n        if (window.location.hostname.endsWith(\".ca\")) this.defaultTimeout = 2000;\r\n\r\n\r\n        ////////////////////////////////////////////////////////\r\n        // Listeners to clear Field Validation 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                //this.tryEnableSubmitButton();\r\n            });\r\n        });\r\n\r\n        // Setup form after page load\r\n        this.makeFormUIAdjustments(queryParams);\r\n\r\n        ////////////////////////////\r\n        // Handle valid Postal Codes, searching for Franchise Locations\r\n        // Note: The Postal Code Input only appears on Corporate Pages\r\n        // TODO - This is causing the validation error to trigger too quickly, adjust\r\n        ///////////////////////  => {\r\n        this.fieldPostalCode.addEventListener(\"input\", async (ev) => {\r\n            // Check if the postal code was the same as the last search\r\n            if (this.fieldPostalCode.dataset.lastPostal === this.fieldPostalCode.value) {\r\n                this.formHelper.showFormGroup(this.grpFranchiseLocation);\r\n            } else if (this.formHelper.isValidPostalCode(this.fieldPostalCode.value) // Check a valid Postal Code\r\n                   && this.fieldPostalCode.dataset.lastPostal !== this.fieldPostalCode.value) {\r\n\r\n                this.fieldPostalCode.dataset.lastPostal = this.fieldPostalCode.value;\r\n\r\n                // Update the Franchise Locations Drop Down\r\n                await this.updateFranchiseLocationsDropDown();\r\n\r\n                // Clear the form validation\r\n                this.formHelper.clearFormGroupValidation(this.frmServiceLead, ServiceLeadForm.grpFranchiseLocationSelector);\r\n            } else { // We don't have a valid Postal Code, make sure the Franchise Location drop down is hidden.\r\n                this.formHelper.hideFormGroup(this.grpFranchiseLocation);\r\n            }\r\n\r\n            // Reset the Legal Language\r\n            this.resetLegalLanguage();\r\n        });\r\n\r\n        this.fieldPhone.addEventListener('keydown', (e) => {\r\n            let raw = this.fieldPhone.value;\r\n\r\n            const numeric = raw.replaceAll(/[^\\d]/g, '');\r\n\r\n\r\n            var keyCode = e.keyCode;\r\n            switch (keyCode) {\r\n                case 8:\r\n                    e.preventDefault();\r\n                    e.stopPropagation();\r\n                    raw = numeric.slice(0, -1);\r\n                    break;\r\n                default:\r\n                    break;\r\n            }\r\n\r\n            const mask = \"(###) ###-####\";\r\n            let formattedNumber = this.numericStringMask(raw, mask);\r\n            this.fieldPhone.value = formattedNumber;\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    numericStringMask(raw, mask) {\r\n        try {\r\n            var x = raw.replace(/\\D/g, '').match(/(\\d{0,3})(\\d{0,3})(\\d{0,4})/);\r\n            return !x[2] ? x[1] : '(' + x[1] + ') ' + x[2] + (x[3] ? '-' + x[3] : '');\r\n        } catch (ex) {\r\n            return raw;\r\n        }\r\n    }\r\n\r\n    gatherFormElements() {\r\n        // Find the Form\r\n        this.frmServiceLead = document.querySelector(ServiceLeadForm.frmServiceLeadFormSelector);\r\n        if (!this.frmServiceLead)\r\n            return null;\r\n\r\n        // Setup Selectors\r\n        this.allFormFields = this.frmServiceLead.querySelectorAll(ServiceLeadForm.formControlsSelector);\r\n\r\n        this.submitButton = this.frmServiceLead.querySelector(ServiceLeadForm.submitButtonSelector);\r\n        this.buttonSpinner = this.frmServiceLead.querySelector(ServiceLeadForm.spinnerSelector);\r\n\r\n        this.errorDupe = this.frmServiceLead.querySelector(ServiceLeadForm.errorDupeSelector);\r\n        this.errorServer = this.frmServiceLead.querySelector(ServiceLeadForm.errorServerSelector);\r\n\r\n        this.grpFranchiseLocation = this.frmServiceLead.querySelector(ServiceLeadForm.grpFranchiseLocationSelector);\r\n        this.dropDownFranchiseLocation = this.grpFranchiseLocation.querySelector(\"select\");\r\n\r\n        this.grpFirstName = this.frmServiceLead.querySelector(ServiceLeadForm.firstNameGroupSelector);\r\n        this.fieldFirstName = this.grpFirstName.querySelector(\"input\");\r\n\r\n        this.grpLastName = this.frmServiceLead.querySelector(ServiceLeadForm.lastNameGroupSelector);\r\n        this.fieldLastName = this.grpLastName.querySelector(\"input\");\r\n\r\n        this.grpEmail = this.frmServiceLead.querySelector(ServiceLeadForm.emailGroupSelector);\r\n        this.fieldEmail = this.grpEmail.querySelector(\"input\");\r\n\r\n        this.grpPhone = this.frmServiceLead.querySelector(ServiceLeadForm.phoneGroupSelector);\r\n        this.fieldPhone = this.grpPhone.querySelector(\"input\");\r\n\r\n        this.grpPostalCode = this.frmServiceLead.querySelector(ServiceLeadForm.postalGroupSelector);\r\n        this.fieldPostalCode = this.grpPostalCode.querySelector(\"input\");\r\n        this.labelPostalCode = this.grpPostalCode.querySelector(\"label\");\r\n\r\n        this.grpOptInContact = this.frmServiceLead.querySelector(ServiceLeadForm.optinContactGroupSelector);\r\n        this.fieldOptInContact = this.grpOptInContact.querySelector(\"input\");\r\n\r\n        this.grpOptInSms = this.frmServiceLead.querySelector(ServiceLeadForm.optinSmsGroupSelector);\r\n        this.fieldOptInSms = this.grpOptInSms.querySelector(\"input\");\r\n\r\n        this.serviceLegalLanguage = this.frmServiceLead.querySelector(ServiceLeadForm.legalDisclaimerSelector);\r\n\r\n        this.successMessage = document.querySelector(ServiceLeadForm.successSelector);\r\n\r\n        return true;\r\n    }\r\n\r\n    tryEnableSubmitButton() {\r\n        setTimeout(() => {\r\n            let isBlank =\r\n                this.fieldFirstName.value.isNullOrWhitespace()\r\n                || this.fieldLastName.value.isNullOrWhitespace()\r\n                || this.fieldEmail.value.isNullOrWhitespace()\r\n                || this.fieldPhone.value.isNullOrWhitespace()\r\n                || this.fieldPostalCode.value.isNullOrWhitespace()\r\n                || this.dropDownFranchiseLocation.selectedIndex == 0\r\n                || this.grpFranchiseLocation.classList.contains('d-none');\r\n\r\n            if (isBlank)\r\n                this.submitButton.disabled = true;\r\n            else\r\n                this.submitButton.disabled = false;\r\n        }, 5);\r\n    }\r\n\r\n    async makeFormUIAdjustments(queryParams) {\r\n        ////////////////////////////////////////////////////////\r\n        // Form & UI Adjustments once Window is fully loaded \r\n        /////////////////////////////////////////////////////////////////////////////////\r\n        // Sent to page with franchise id, reset Selected Franchise\r\n        if (queryParams.has(\"fid\")) {\r\n            // Get the Franchise Details from the Franchise Number\r\n            let fid = queryParams.get('fid');\r\n\r\n            if (!queryParams.has('zip')) {\r\n                await fetch(`/api/organization/getSingle/?orgNumber=${fid}`)\r\n                .then(response => {\r\n                    if (response.ok) {\r\n                        return response.json();\r\n                    } else {\r\n                        throw new Error(`HTTP Error Status: ${response.status}`);\r\n                    }\r\n                })\r\n                .then(async (currentFranchise) => {\r\n                    // Set the Postal Code as the Franchise Office's Postal Code\r\n                    this.fieldPostalCode.value = currentFranchise.Offices[0].PostalCode;\r\n\r\n                    // Set the Inquiry Type\r\n                    this.setInquiryType(\"service\");\r\n\r\n                    // Update the Franchise Locations Drop Down\r\n                    await this.updateFranchiseLocationsDropDown(fid);\r\n\r\n                    // Reset the Legal Language\r\n                    this.resetLegalLanguage();\r\n                })\r\n                .catch(error => {\r\n                    console.log(error);\r\n                });\r\n            }\r\n            else {\r\n                // Set the Postal Code as the Franchise Office's Postal Code\r\n                this.fieldPostalCode.value = queryParams.get(\"zip\");\r\n\r\n                // Set the Inquiry Type\r\n                this.setInquiryType(\"service\");\r\n\r\n                // Update the Franchise Locations Drop Down\r\n                let fid = queryParams.get(\"fid\");\r\n                await this.updateFranchiseLocationsDropDown(fid);\r\n\r\n                // Reset the Legal Language\r\n                this.resetLegalLanguage();\r\n            }\r\n        }\r\n\r\n        ///////////////////////////////////////////////////////////////////\r\n        // Adjust the form when a visitor uses the back button, set the drop downs back up \r\n        if (this.formHelper.isValidPostalCode(this.fieldPostalCode.value)) {\r\n            // Update the Franchise Locations Drop Down\r\n            await this.updateFranchiseLocationsDropDown();\r\n        } else {\r\n            // We don't have a valid Postal Code, make sure the Franchise Location drop down is hidden.\r\n            this.formHelper.hideFormGroup(this.grpFranchiseLocation);\r\n        }\r\n\r\n        // Set the Inquiry Type\r\n        this.setInquiryType(\"service\");\r\n    }\r\n\r\n    setInquiryType(type) {\r\n        // Force a Postal Code Search\r\n        this.fieldPostalCode.dispatchEvent(new Event(\"input\"));\r\n    }\r\n\r\n    // Validate the Form prior to submission\r\n    async 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\r\n        // Reset the Form Validation Text & Styles for each Error Message\r\n        this.formHelper.clearValidationMessages(this.frmServiceLead.querySelectorAll(\".invalid-feedback\"));\r\n\r\n        ////////////////////////////////////////////////////////////////////////\r\n        // Start: Special Field Validation for Drop Down Menus\r\n        if (this.dropDownFranchiseLocation !== null &&\r\n            this.dropDownFranchiseLocation.selectedIndex < 1) {\r\n            this.formHelper.markSelectFieldInvalid(this.grpFranchiseLocation, \"Please choose a Home Instead Location.\");\r\n            validSubmission = false;\r\n        }\r\n        if (!this.formHelper.isValidPostalCode(this.fieldPostalCode.value)) {\r\n            this.formHelper.markInputFieldInvalid(this.grpPostalCode, \"Please enter a valid Postal Code.\");\r\n            validSubmission = false;\r\n        }\r\n        // If no Franchise Location is selected, then show an error (The zero index is \"Please Select a Location\")\r\n        if (this.dropDownFranchiseLocation.selectedIndex < 1) {\r\n            this.formHelper.markInputFieldInvalid(this.grpPostalCode, \"Sorry, but there were no locations found for your search. Try to double-check the postal code for typos.\");\r\n            validSubmission = false;\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.isValidPhone(this.fieldPhone.value)) {\r\n            this.formHelper.markInputFieldInvalid(this.grpPhone, \"Please Enter your Phone Number.\");\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        if (this.fieldOptInContact.required && !this.fieldOptInContact.checked) {\r\n            this.formHelper.markInputFieldInvalid(this.grpOptInContact, \"Agreement required.\");\r\n            validSubmission = false;\r\n        }\r\n        if (this.fieldOptInSms.required && !this.fieldOptInSms.checked) {\r\n            this.formHelper.markInputFieldInvalid(this.grpOptInSms, \"Agreement required.\");\r\n            validSubmission = false;\r\n        }\r\n\r\n        let formIntent = \"service\";\r\n        let eventName = \"service-lead-form-submit\";\r\n\r\n        // Reset the Form Validation Text & Styles for each Error Message\r\n        if (validSubmission == false || this.frmServiceLead.querySelectorAll(\".form-group .is-invalid\").length > 0) {\r\n            console.log(\"Found a Validation Error\");\r\n            this.formHelper.focusOnFirstError(this.frmServiceLead, false);\r\n            await this.formHelper.gtmTrackFormSubmission(eventName, this.dropDownFranchiseLocation.value,\r\n                null, this.frmServiceLead.id, formIntent, \"validation-error\");\r\n        }\r\n\r\n        return validSubmission;\r\n    }\r\n\r\n    // Reset the Legal Language\r\n    resetLegalLanguage() {\r\n        this.formHelper.showFormGroup(this.serviceLegalLanguage);\r\n    }\r\n\r\n    redirectToThankYouPage(redirectPage) {\r\n        setTimeout(() => {\r\n            console.log(\"Redirecting to Thank You Page\");\r\n            window.location.href = redirectPage;\r\n        }, this.defaultTimeout);\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        let franchiseLocationWasDisabled = this.dropDownFranchiseLocation.disabled;\r\n        if (franchiseLocationWasDisabled == true)\r\n            this.dropDownFranchiseLocation.disabled = false;\r\n\r\n        // Obtain Form details & data\r\n        let hiscFormData = new FormData(this.frmServiceLead);\r\n\r\n        if (franchiseLocationWasDisabled == true)\r\n            this.dropDownFranchiseLocation.disabled = true;\r\n\r\n        // Add the OptIn values to the FormData\r\n        //hiscFormData.set(\"OptInEmail\", (hiscFormData.get(\"OptIn\") == \"on\") ? true : false);\r\n        //hiscFormData.set(\"OptInSms\", (hiscFormData.get(\"OptIn\") == \"on\") ? true : false);\r\n\r\n        let isValid = await this.validateForm_ClientSide();\r\n\r\n        // Client Side validation on the Form prior to submission\r\n        if (!isValid) {\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        // Get the Form Data as a JSON object\r\n        const json = this.formHelper.ConvertFormDataToJson(hiscFormData);\r\n\r\n        ////////////////////////////////////////////\r\n        // Process a Care Submission\r\n        await fetch(\"/api/data/careLead\", {\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.handleServiceLeadSuccess(parsedResult);\r\n            } else {\r\n                await this.handleServiceLeadError(parsedResult);\r\n            }\r\n        })\r\n        .catch(async (error) => {\r\n            console.log(\"An Exception Occurred: \", error);\r\n            await this.formHelper.gtmTrackFormSubmission(\"service-lead-form-submit\", this.dropDownFranchiseLocation.value,\r\n                null, this.frmServiceLead.id, \"service\", \"exception-error\");\r\n        })\r\n        .then(() => {\r\n            // Mark form as validated and focus on the first error\r\n            this.frmServiceLead.classList.add(\"was-validated\");\r\n            this.formHelper.focusOnFirstError(this.frmServiceLead, false);\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 handleServiceLeadSuccess(parsedResult) {\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        // Track Service Lead success in Content Recommendations\r\n        if (typeof _iaq !== 'undefined') {\r\n            try {\r\n                _iaq.push(['goal', 'ServiceInquiry']);\r\n                _iaq.push(['track', 'convert']);\r\n            } catch (e) {\r\n                console.log(\"_iaq error on success\", e);\r\n            }\r\n        }\r\n        else {\r\n            console.log(\"_iaq doesn't exist\");\r\n        }\r\n\r\n        // Track Service Lead success in Optimizely Experiments\r\n        try {\r\n            window['optimizely'] = window['optimizely'] || [];\r\n            window['optimizely'].push({\r\n                type: \"event\",\r\n                eventName: \"service_lead_success\"\r\n            });\r\n        } catch (e) {\r\n            console.log(\"OptiExp error on Serivce Lead success\", e);\r\n        }\r\n\r\n        // Determine the Thank You Page for Care Submissions\r\n        let thankYouPage = this.frmServiceLead.getAttribute(\"data-result-page\");\r\n        thankYouPage = thankYouPage || `/location/${this.dropDownFranchiseLocation.value}/thank-you`;\r\n\r\n        this.frmServiceLead.classList.add('d-none');\r\n        this.frmServiceLead.classList.remove('d-flex');\r\n        this.successMessage.classList.add('d-flex');\r\n        this.successMessage.classList.remove('d-none');\r\n\r\n        // Track Service Lead success in Google Tag manager\r\n        try {\r\n            let payload = {\r\n                'franchise_number': this.dropDownFranchiseLocation.value,\r\n                'form_id': this.frmServiceLead.id,\r\n                'form_submission_intent': \"service\",\r\n                'form_submission_result': \"success\",\r\n                'page_url': window.location.href,\r\n                'event': \"service-lead-form-submit\",\r\n                'lang': this.submitButton.closest(`[lang]`).getAttribute('lang'),\r\n                'eventCallback': () => {\r\n                    //this.redirectToThankYouPage(thankYouPage);\r\n                }\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 (success)\", e);\r\n            //this.redirectToThankYouPage(thankYouPage);\r\n        }\r\n\r\n        document.dispatchEvent(new CustomEvent(\"service-lead-success\", {\r\n            bubbles: true,\r\n            detail: {\r\n                sf_id: parsedResult.ID\r\n            }\r\n        }));\r\n    }\r\n\r\n    async handleServiceLeadError(parsedResult) {\r\n        const parsedMessage = parsedResult.message.toLowerCase();\r\n        const isErrorDueToDuplicate = parsedMessage.includes(\"duplicate\");\r\n        const isErrorInternal = parsedMessage.includes(\"fail\");\r\n        let submissionResult;\r\n\r\n        // A Duplicate Lead or Server Error occurred\r\n        if (isErrorDueToDuplicate || isErrorInternal) {\r\n            if (isErrorDueToDuplicate)\r\n                this.hasSubmitted = true;\r\n\r\n            submissionResult = isErrorDueToDuplicate ? \"duplicate\" : \"server-error\";\r\n\r\n            let requiredMsg = this.frmServiceLead.querySelector(\".form-fields-required\");\r\n            requiredMsg.style.display = \"none\";\r\n\r\n            let errorBlockClass = isErrorDueToDuplicate ? ServiceLeadForm.errorDupeSelector : ServiceLeadForm.errorServerSelector;\r\n            let errorBlock = this.frmServiceLead.querySelector(errorBlockClass);\r\n            errorBlock.classList.remove('d-none');\r\n        }\r\n        // Validation Error occurred\r\n        else {\r\n            submissionResult = \"validation-error\";\r\n            this.formHelper.processFormErrors(this.frmServiceLead, parsedResult.Errors);\r\n        }\r\n\r\n        // Track the Error result in GTM\r\n        await this.formHelper.gtmTrackFormSubmission(\"service-lead-form-submit\", this.dropDownFranchiseLocation.value,\r\n            null, this.frmServiceLead.id, \"service\", submissionResult);\r\n    }\r\n\r\n    // Update the Franchise Location Dropdown\r\n    async updateFranchiseLocationsDropDown(franNumPreselect = \"\") {\r\n        const maxResults = 15;\r\n\r\n        // Franchise Location Drop Down\r\n        this.formHelper.clearDropDown(this.dropDownFranchiseLocation, 0);\r\n\r\n        // On a Corporate Page, allow for a Location Search\r\n        let options = await this.formHelper.getFranchiseLocationOptions(this.fieldPostalCode.value, true);\r\n\r\n        const numRecords = options.length > maxResults ? maxResults : options.length;\r\n\r\n        for (let i = 0; i < numRecords; i++)\r\n            this.dropDownFranchiseLocation.add(options[i]);\r\n\r\n        // Show the Franchise Location drop down\r\n        this.formHelper.showFormGroup(this.grpFranchiseLocation);\r\n\r\n        if (options.length > 0) {\r\n            // Select the First Franchise Location Option\r\n            if (franNumPreselect !== \"\") {\r\n                this.dropDownFranchiseLocation.value = franNumPreselect;\r\n            }\r\n            else {\r\n                this.dropDownFranchiseLocation.selectedIndex = 1;\r\n            }\r\n\r\n            this.dropDownFranchiseLocation.dispatchEvent(new Event(\"change\"));\r\n\r\n            // Set the Internal Error Messages in case we need them\r\n            let thisOrg = new Organization(JSON.parse(this.dropDownFranchiseLocation.options[this.dropDownFranchiseLocation.selectedIndex].dataset.Organization));\r\n            this.formHelper.updateInternalErrorMsg(this.errorDupe, thisOrg.getAttributeByName('Name'),\r\n                \"/location/\" + thisOrg.Number, thisOrg.offices[0].Phone);\r\n            this.formHelper.updateInternalErrorMsg(this.errorServer, thisOrg.getAttributeByName('Name'),\r\n                \"/location/\" + thisOrg.Number, thisOrg.offices[0].Phone);\r\n\r\n            if (options.length == 1) {\r\n                this.dropDownFranchiseLocation.disabled = true;\r\n                this.grpFranchiseLocation.classList.add('d-none');\r\n            }\r\n            else {\r\n                this.dropDownFranchiseLocation.disabled = false;\r\n                this.grpFranchiseLocation.classList.remove('d-none');\r\n           }\r\n        } else {\r\n            // Handle the No Franchise Found issue\r\n            this.formHelper.markInputFieldInvalid(this.grpPostalCode, \"Sorry, but there were no locations found for your search. Try to double-check the postal code for typos.\");\r\n        }\r\n\r\n        //this.tryEnableSubmitButton();\r\n    }\r\n    \r\n    async getData(url = '') {\r\n        const config = {\r\n            method: 'GET',\r\n            mode: 'cors',\r\n            cache: 'no-cache',\r\n            credentials: 'same-origin',\r\n            headers: { \"Content-Type\": \"application/json; charset=utf-8\" },\r\n            redirect: 'follow',\r\n            referrerPolicy: 'no-referrer'\r\n        };\r\n\r\n        const response = await fetch(url, config);\r\n\r\n        return response.json();\r\n    }\r\n\r\n    ExistsOnPage() {\r\n        return typeof this.frmServiceLead !== 'undefined' && this.frmServiceLead !== undefined && this.frmServiceLead !== null;\r\n    }\r\n\r\n    static frmServiceLeadFormSelector = \".service-lead-form\";\r\n    static errorDupeSelector = \".service-lead-form-duplicate\";\r\n    static errorServerSelector = \".service-lead-form-error\";\r\n    static grpFranchiseLocationSelector = \".FranchiseNumber-group\";\r\n    static formControlsSelector = \".form-control\";\r\n    static submitButtonSelector = \".service-lead-form-button\";\r\n    static spinnerSelector = \".spinner\";\r\n    static firstNameGroupSelector = \".FirstName-group\";\r\n    static lastNameGroupSelector = \".LastName-group\";\r\n    static emailGroupSelector = \".Email-group\";\r\n    static phoneGroupSelector = \".Phone-group\";\r\n    static postalGroupSelector = \".PostalCode-group\";\r\n    static legalDisclaimerSelector = \".service-legal-disclaimer\";\r\n    static successSelector = \".service-lead-form-success\";\r\n    static optinContactGroupSelector = \".OptInEmail-group\";\r\n    static optinSmsGroupSelector = \".OptInSms-group\";\r\n}\r\nexport default new ServiceLeadForm();"],"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","ServiceLeadForm","hasSubmitted","HasLoaded","gatherFormElements","frmServiceLead","getAttribute","queryParams","URLSearchParams","search","defaultTimeout","hostname","endsWith","allFormFields","parentNode","addEventListener","makeFormUIAdjustments","fieldPostalCode","lastPostal","grpFranchiseLocation","updateFranchiseLocationsDropDown","grpFranchiseLocationSelector","resetLegalLanguage","fieldPhone","raw","numeric","replaceAll","keyCode","preventDefault","stopPropagation","slice","formattedNumber","numericStringMask","submitButton","ev","submitForm","once","mask","ex","frmServiceLeadFormSelector","formControlsSelector","submitButtonSelector","buttonSpinner","spinnerSelector","errorDupe","errorDupeSelector","errorServer","errorServerSelector","dropDownFranchiseLocation","grpFirstName","firstNameGroupSelector","fieldFirstName","grpLastName","lastNameGroupSelector","fieldLastName","grpEmail","emailGroupSelector","fieldEmail","grpPhone","phoneGroupSelector","grpPostalCode","postalGroupSelector","labelPostalCode","grpOptInContact","optinContactGroupSelector","fieldOptInContact","grpOptInSms","optinSmsGroupSelector","fieldOptInSms","serviceLegalLanguage","legalDisclaimerSelector","successMessage","successSelector","tryEnableSubmitButton","isBlank","selectedIndex","contains","fid","setInquiryType","ok","currentFranchise","type","dispatchEvent","Event","validSubmission","required","checked","gtmTrackFormSubmission","id","redirectToThankYouPage","redirectPage","franchiseLocationWasDisabled","FormData","validateForm_ClientSide","body","parsedResult","isError","handleServiceLeadError","handleServiceLeadSuccess","_iaq","eventName","thankYouPage","closest","CustomEvent","bubbles","sf_id","ID","parsedMessage","message","isErrorDueToDuplicate","includes","isErrorInternal","errorBlockClass","Errors","franNumPreselect","getFranchiseLocationOptions","numRecords","thisOrg","parse","mode","cache","credentials","redirect","referrerPolicy","ExistsOnPage","static"],"sourceRoot":""}