{"version":3,"file":"../student-account-registration.js","names":["$","$form","$secondaryPhoneNumber","$primaryAddressContainer","$primaryLatitude","find","$primaryLongitude","$primaryMelissaAddressKey","$allFormInputs","$primaryAddressValidatedOverride","$firstName","$intendedUses","$loadingIndicator","$submitBtn","addressVerifyUrl","window","location","origin","addressAutoCompleteUrl","verifyPrimaryAddressModalTitle","serverValidationMessages","addedBeforeUnloadEventHandler","primaryAddressValidated","areAddressesSame","addressA","addressB","undefined","Error","addressLine1","addressLine2","city","county","postalCode","stateProvince","doesMelissaDataResultHaveError","melissaDataResult","_melissaDataResult$re","_melissaDataResult$re2","resultCode","startsWith","validatePrimaryAddress","val","hasInvalidInputs","each","el","_$this$attr","_$form$data$settings$","$this","inputName","attr","rules","data","settings","validationRule","required","validationRuleType","_typeof","isInputRequired","isInputDirty","valid","address","getAddressFromForm","prop","blockUI","showValidationModalForAddressIfNeededAsync","newAddress","setAddressFormSection","codedAddress","then","catch","error","console","finally","isMelissaAddressVerificationResponse","result","determineMelissaVerificationActionV2","verificationResponse","currentAddress","response","hasErrors","hasRecommendations","requiresUserConfirmation","recommendedAddress","_verificationResponse","_verificationResponse2","hasInvalidCodes","CodedAddresses","some","x","_x$melissaDataResults","_x$melissaDataResults2","melissaDataResults","customErrorMessages","AE09","AE08","combinedErrorMessage","filter","map","reduce","previousValue","currentValue","concat","description","join","isValidAddress","_x$melissaDataResults3","_x$melissaDataResults4","_x$melissaDataResults5","_x$melissaDataResults6","_x$melissaDataResults7","_x$melissaDataResults8","_x$melissaDataResults9","_x$melissaDataResults10","countryName","y","validCodedAddress","changesThatCanBeAutoApplied","hasRecommendedAddressesThatRequireUserConfirmation","includes","length","showAddressRecommendationsAsync","title","recommendedAddresses","enteredAddress","onSelectedAddressFn","onSelectedUserEnteredAddressFn","_enteredAddress$addre","_enteredAddress$addre2","_enteredAddress$city","_enteredAddress$state","_enteredAddress$posta","resolve","reject","$templateEl","templateHtml","html","$modal","$modalSuggestions","$submitModalBtn","$userEnteredAddress","$lastFocusedInput","Promise","_resolve","_reject","text","$noResultsMessage","$suggestedAddressesContainer","validAddresses","_x$melissaDataResults11","_x$melissaDataResults12","_x$melissaDataResults13","_x$melissaDataResults14","_x$melissaDataResults15","_x$melissaDataResults16","_x$melissaDataResults17","_x$melissaDataResults18","_x$melissaDataResults19","_x$melissaDataResults20","addClass","removeClass","i","suggestedAddress","addressLine1ChangedClass","addressLine2ChangedClass","cityChangedClass","stateChangedClass","postalCodeChangedClass","countyChangedClass","viewModel","suggestedAddressId","country","longitude","latitude","melissaAddressKey","newHtml","bindViewModelToHtml","append","modal","backdrop","show","keyboard","onModalHidden","evt","off","onModalSetAddress","_$lastFocusedInput$2","$selectedAddress","is","_$lastFocusedInput$","focus","one","$addressContainer","$addressLine1El","$addressLine2El","$postalCodeEl","$cityEl","$countyEl","$stateEl","$country","$melissaAddressKey","$longitude","$latitude","trim","_address$addressLine","_address$addressLine2","_address$postalCode","_address$city","_address$stateProvinc","_address$county","_address$country","_address$melissaAddre","_address$latitude","_address$longitude","_ref","_address$melissaAddre2","$addressLine1","$addressLine2","$postalCode","$city","$state","$county","$addressValidationOverride","validateAddressAsync","request","Request","method","body","JSON","stringify","headers","fetch","r","ok","json","responseContent","_response$ok","_response","onAutoUpdateAddressFn","_address$addressLine3","_address$addressLine4","_address$city2","_address$county2","_address$postalCode2","_address$stateProvinc2","nextAction","showError","titleHtml","conditionallyValidatePrimaryAddressAsync","userEnteredAddress","autoCompleteAddressAsync","abortSignal","signal","_response$ok2","_response2","jQuery","validator","addMethod","value","element","postalCodeRegex","optional","test","isOptional","url","URL","protocol","_unused","faxRegex","params","elementName","serverErrorMessage","indexOf","parents","removeAttr","prototype","focusInvalid","errorList","trigger","e","firstName","lastName","expectedFullName","fullName","replace","toLowerCase","signature","normalizedSignature","_params$positivePatte","positivePattern","regex","RegExp","exec","$element","$dropdownContainer","warn","$selectedOption","children","alphaAndDashPeriodPattern","alphaNumericPatternAndSpace","alphaNumericPatternAndPoundDotSpace","alphaNumericAndAmpersandPeriodDashPattern","emailPattern","addressPattern","$validator","validate","onfocusout","onkeyup","event","defaults","call","FirstName","maxlength","sp_server_message","sp_positive_pattern","LastName","EmailAddress","email","ConfirmEmailAddress","equalTo","PrimaryPhoneNumber","sp_primaryphonenumber","primaryphonenumber","PrimaryPhoneType","SecondaryPhoneNumber","sp_secondaryphonenumber","secondaryphonenumber","SecondaryPhoneType","TextMessageOptIn","PrimaryAddressLine1","PrimaryAddressLine2","PrimaryPostalCode","sp_postal_code","PrimaryCity","PrimaryState","PrimaryCounty","PrimaryAddressIsResidential","Website","Fax","sp_fax","CollegeAttendedIfsKey","sp_datalist","DegreeIfsKey","SubscribeToEducationAndEvents","SubscribeToNews","AdditionalQuestions","AgreementFullName","sp_includesfirstnamelastname","errorElement","errorClass","messages","BusinessName","LicenseCertificateNumber","sp_fullname","errorPlacement","$errorEl","$inputEl","$validationContainer","closest","appendTo","parent","highlight","validClass","$phoneTypeContainer","isIntendedUse","unhighlight","success","$label","invalidHandler","_iterator","_createForOfIteratorHelper","_step","s","n","done","errorEntry","$parent","err","f","generateCreateAccountRequest","_$primaryMelissaAddre","_$primaryMelissaAddre2","primaryMelissaAddressKey","toString","primaryValidationOverride","formData","$el","type","isCheckbox","isRadio","isChecked","useOptionValue","dropDownContainerSelector","$selectedOpt","first","urlSearchParams","URLSearchParams","registerRequest","formatStringToPhoneNumber","validRegex","numberCount","substring","_data$titleClass","_data$timeoutMS","$toastContainer","toastTemplateEl","toastCloneEl","content","cloneNode","toastTitleEl","querySelector","toastBodyEl","dismissButtonEl","innerHTML","classList","add","titleClass","bodyHtml","_data$bodyClass","bodyClass","remove","appendChild","autoDismissTimeoutMS","timeoutMS","bootstrapToast","bootstrap","Toast","animation","autohide","delay","addEventListener","once","passive","isModelStateError","obj","Object","keys","every","key","Array","isArray","blocking","$elements","htmlCopy","viewModelKeys","_iterator2","matchAll","_step2","matchArr","htmlKey","expression","fnBinder","Function","replacementHtml","onLeaveAttempt","hasChanges","preventDefault","returnValue","on","radioGroupName","$allRelatedRadios","selectedIndex","index","shiftKey","stopImmediatePropagation","_address$addressLine5","_address$postalCode3","$addressSection","nextEl","target","matches","hasMinimumRequiredFields","missingCityStateCounty","completeAddress","_nextEl","$input","originalEvent","clipboardData","getData","_$targetEl$attr","$targetEl","elName","removeEventListener","registrationFormSubmit","encounteredError","form","serverValidationMessagesKeys","_i","_serverValidationMess","setTimeout","signupObj","dataLayer","push","assign","jsonError","_jsonError$AgreementF","_jsonError$AgreementF2","hasMelissaAddressValidationError","_$primaryMelissaAddre3","_$primaryMelissaAddre4","errorKey","errorValueArr","errorValueHtml","$formInputEl","document","ready","collegeInput","collegeDataList","collegeCurrentFocus","degreeInput","degreeDataList","degreeCurrentFocus","hide","handleInput","input","dataList","currentFocus","css","addActive","$dropdown","toUpperCase","optionText","toggle","which","options","eq","scrollTop","position","top","click","option"],"sources":["student-account-registration.js"],"sourcesContent":["//This is using jquery-validation plug in\r\n//https://jqueryvalidation.org/\r\n\r\n// @ts-check\r\n//#region Typedefs\r\n\r\n/**\r\n * @typedef {Object} CodeAddress\r\n * @property {string|null} addressLine1\r\n * @property {string|null} addressLine2\r\n * @property {string|null} city\r\n * @property {string|null} stateProvince\r\n * @property {string|null} county\r\n * @property {string|null} postalCode\r\n * @property {string|null} countryName\r\n * @property {string|null} country\r\n * @property {string|null} plus4\r\n * @property {string|null} latitude\r\n * @property {string|null} longitude\r\n * @property {string|null} melissaAddressKey\r\n * @property {string|null} addressTypeCode\r\n * @property {string|null} [resultCode]\r\n * @property {string|null} [resultCodes]\r\n * @property {MelissaDataResult[]} melissaDataResults\r\n */\r\n\r\n/**\r\n * @typedef {Object} MelissaAddressVerificationResponse\r\n * @property {number} AddressValid\r\n * @property {boolean} IsUnitedStatesAddress\r\n * @property {CodeAddress[]} CodedAddresses\r\n */\r\n\r\n/**\r\n * @typedef {MelissaAddressVerificationResponse} AddressVerificationResponse\r\n */\r\n\r\n/**\r\n * @typedef {Object} MelissaVerificationAction\r\n * @property {boolean} hasErrors\r\n * @property {boolean} hasRecommendations\r\n * @property {boolean} requiresUserConfirmation\r\n * @property {string} error\r\n * @property {CodeAddress|null} recommendedAddress\r\n */\r\n\r\n/**\r\n * @typedef {Object} MelissaDataResult\r\n * @property {string} resultCode\r\n * @property {string} description\r\n */\r\n\r\n/**\r\n * @typedef {Object} AddressVerificationRequest\r\n * @property {string} addressLine1\r\n * @property {string|null} addressLine2\r\n * @property {string|null} city\r\n * @property {string|null} stateProvince\r\n * @property {string|null} county\r\n * @property {string} postalCode\r\n */\r\n\r\n//#endregion\r\n$(function () {\r\n //#region Constants\r\n\r\n const $form = $(\"#studentRegistrationForm\");\r\n const $secondaryPhoneNumber = $(\"#SecondaryPhoneNumber\");\r\n const $primaryAddressContainer = $(\".primary-addres-container\");\r\n const $primaryLatitude = $primaryAddressContainer.find(\".latitude\");\r\n const $primaryLongitude = $primaryAddressContainer.find(\".longitude\");\r\n const $primaryMelissaAddressKey = $primaryAddressContainer.find(\".melissa-address-key\");\r\n const $allFormInputs = $form.find(\"input,select,textarea\");\r\n const $primaryAddressValidatedOverride = $(\"#PrimaryAddressValidationOverride\");\r\n const $firstName = $(\"#FirstName\");\r\n const $intendedUses = $(\"[name='IntendedUse']\");\r\n const $loadingIndicator = $('#loading-indicator');\r\n const $submitBtn = $('#AgreeSubmitBtn');\r\n\r\n const addressVerifyUrl = window.location.origin + \"/customers/address-verify\";\r\n const addressAutoCompleteUrl = window.location.origin + \"/customers/address-autocomplete\";\r\n\r\n const verifyPrimaryAddressModalTitle = \"Verify Home Shipping Address\";\r\n\r\n // Used for storing error messages from the server. Are cleared out on the\r\n // corresponding inputs change event.\r\n const serverValidationMessages = {};\r\n\r\n // Indicates if the beforeunoad event was already added.\r\n let addedBeforeUnloadEventHandler = false;\r\n\r\n // Track if the address have been validated.\r\n let primaryAddressValidated = false;\r\n\r\n //#endregion\r\n\r\n //#region Address Validation\r\n\r\n /**\r\n * Checks if two addresses are functionally identical.\r\n * @param {CodeAddress} addressA \r\n * @param {CodeAddress} addressB \r\n */\r\n function areAddressesSame(addressA, addressB) {\r\n if (addressA === null || addressA === undefined) {\r\n throw new Error(\"The argument \\\"addressA\\\" cannot be null/undefined.\");\r\n } else if (addressB === null || addressB === undefined) {\r\n throw new Error(\"The argument \\\"addressB\\\" cannot be null/undefined.\");\r\n }\r\n\r\n return addressA.addressLine1 === addressB.addressLine1\r\n && addressA.addressLine2 === addressB.addressLine2\r\n && addressA.city == addressB.city\r\n && addressA.county === addressB.county\r\n && addressA.postalCode === addressB.postalCode\r\n && addressA.stateProvince === addressB.stateProvince;\r\n }\r\n\r\n /**\r\n * Checks if the address has any error messages.\r\n * @param {MelissaDataResult} [melissaDataResult] \r\n * @returns {boolean} Returns true if the address is not considered valid\r\n * by Melissa.\r\n */\r\n function doesMelissaDataResultHaveError(melissaDataResult) {\r\n return (melissaDataResult?.resultCode.startsWith(\"GE\") ?? false)\r\n || (melissaDataResult?.resultCode.startsWith(\"AE\") ?? false);\r\n }\r\n\r\n /**\r\n * Event handler for the primary address.\r\n * @returns {void}\r\n */\r\n function validatePrimaryAddress() {\r\n // Mark the address as invalid.\r\n primaryAddressValidated = false;\r\n $primaryMelissaAddressKey.val(\"\");\r\n $primaryLatitude.val(\"\");\r\n $primaryLongitude.val(\"\");\r\n\r\n // Check for any invalid elements in the address.\r\n let hasInvalidInputs = false;\r\n\r\n $primaryAddressContainer.find(\"input,select\").each(function (el) {\r\n const $this = $(this);\r\n const inputName = $this.attr(\"name\") ?? \"\";\r\n const rules = $form.data(\"validator\").settings.rules[inputName] ?? {};\r\n const validationRule = \"required\" in rules ? rules.required : false;\r\n const validationRuleType = typeof (validationRule);\r\n let isInputRequired = false;\r\n\r\n if (validationRuleType === \"function\") {\r\n isInputRequired = validationRule(this);\r\n } else if (validationRuleType === \"boolean\") {\r\n isInputRequired = validationRule;\r\n }\r\n\r\n const isInputDirty = $this.attr(\"data-dirty\") === \"true\";\r\n\r\n // If the input has not yet been touched by the user and is\r\n // required then do not yet perform validation.\r\n if (!isInputDirty && isInputRequired) {\r\n hasInvalidInputs = true;\r\n return;\r\n }\r\n\r\n // @ts-ignore\r\n if (!$(this).valid()) {\r\n hasInvalidInputs = true;\r\n }\r\n });\r\n\r\n if (hasInvalidInputs) {\r\n return;\r\n }\r\n\r\n const address = getAddressFromForm($primaryAddressContainer);\r\n $primaryAddressValidatedOverride.prop(\"checked\", false);\r\n\r\n // Block the UI and show suggestions (if any).\r\n blockUI(true);\r\n\r\n showValidationModalForAddressIfNeededAsync(\r\n verifyPrimaryAddressModalTitle,\r\n address,\r\n newAddress => setAddressFormSection($primaryAddressContainer, newAddress),\r\n () => $primaryAddressValidatedOverride.prop(\"checked\", true),\r\n codedAddress => {\r\n setAddressFormSection($primaryAddressContainer, codedAddress);\r\n $primaryAddressValidatedOverride.prop(\"checked\", false);\r\n }\r\n )\r\n .then(() => primaryAddressValidated = true)\r\n .catch(error => {\r\n primaryAddressValidated = false;\r\n $primaryMelissaAddressKey.val(\"\");\r\n $primaryLatitude.val(\"\");\r\n $primaryLongitude.val(\"\");\r\n\r\n if (error !== \"dismissed\") {\r\n console.error(error);\r\n }\r\n })\r\n .finally(() => blockUI(false));\r\n }\r\n\r\n /**\r\n * Checks if the argument 'data' matches the AddressVerification interface.\r\n * @param {any} data \r\n * @returns {data is MelissaAddressVerificationResponse}\r\n */\r\n function isMelissaAddressVerificationResponse (data) {\r\n if (data === null || data === undefined) {\r\n return false;\r\n }\r\n\r\n const result = \"IsUnitedStatesAddress\" in data\r\n && \"AddressValid\" in data\r\n && \"CodedAddresses\" in data\r\n // && (data.CodedAddresses.length === 0 || data.CodedAddresses.every(x => isCodedAddress(x)));\r\n ;\r\n\r\n return result;\r\n }\r\n\r\n /**\r\n * Determines what the next step should be based on a\r\n * AddressVerificationResponse.\r\n * @param {AddressVerificationResponse} verificationResponse \r\n * @param {CodeAddress} currentAddress\r\n * @returns {MelissaVerificationAction}\r\n */\r\n function determineMelissaVerificationActionV2 (verificationResponse, currentAddress) {\r\n /** @type {MelissaVerificationAction} */\r\n const response = {\r\n hasErrors: false,\r\n hasRecommendations: false,\r\n requiresUserConfirmation: false,\r\n error: \"\",\r\n recommendedAddress: null,\r\n };\r\n\r\n if (isMelissaAddressVerificationResponse(verificationResponse)) {\r\n // Address was validated but detected some issues.\r\n let hasInvalidCodes = verificationResponse.CodedAddresses.some(\r\n x => x.melissaDataResults?.some(\r\n doesMelissaDataResultHaveError\r\n ) ?? false\r\n );\r\n\r\n // If there is an error, display set the error message.\r\n if (\r\n hasInvalidCodes\r\n && (verificationResponse['message'] === null || verificationResponse['message'] === undefined)\r\n ) {\r\n // Need to handle AE09 differently. When those occur, should\r\n // show the message the folloing message:\r\n // \"The street address was verified but the suite/apartment number is missing or invalid.\"\r\n const customErrorMessages = {\r\n AE09: \"The street address was verified but the suite/apartment number is missing or invalid.\",\r\n AE08: \"The street address was verified but the suite/apartment number is missing or invalid.\",\r\n };\r\n\r\n if (verificationResponse.CodedAddresses === null || verificationResponse.CodedAddresses === undefined) {\r\n throw new Error(\"The property \\\"CodedAddresses\\\" cannot be null/undefined.\");\r\n }\r\n\r\n // @ts-ignore\r\n const combinedErrorMessage = verificationResponse.CodedAddresses\r\n // @ts-ignore\r\n .filter(x => x.melissaDataResults.some(doesMelissaDataResultHaveError))\r\n .map(x => x.melissaDataResults)\r\n // @ts-ignore\r\n .reduce((previousValue, currentValue) => previousValue.concat(currentValue), [])\r\n .filter(doesMelissaDataResultHaveError)\r\n .map(x => {\r\n if (x.resultCode in customErrorMessages) {\r\n return customErrorMessages[x.resultCode];\r\n } else {\r\n return x.description;\r\n }\r\n })\r\n .join(\"
\");\r\n\r\n verificationResponse['message'] = combinedErrorMessage;\r\n }\r\n\r\n /**\r\n * Checks if a CodeAddress is valid.\r\n * @param {CodeAddress} x\r\n * @returns {boolean}\r\n */\r\n const isValidAddress = x => x.addressLine1 !== null\r\n && x.stateProvince !== null\r\n && x.city !== null\r\n && x.postalCode !== null\r\n && x.countryName !== null\r\n // && !x.melissaDataResults.some(y => y.resultCode.startsWith(\"AE\")) // I guess we need to allow Address Errors (AE) now...\r\n // @ts-ignore\r\n && !x.melissaDataResults.some(y => y.resultCode.startsWith(\"GE\"))\r\n && (\r\n (x.melissaDataResults?.some(y => y.resultCode === \"AS01\") ?? false)\r\n || (x.melissaDataResults?.some(y => y.resultCode === \"AS02\") ?? false)\r\n || (x.melissaDataResults?.some(y => y.resultCode === \"AS03\") ?? false)\r\n || (x.melissaDataResults?.some(y => y.resultCode === \"GS01\") ?? false)\r\n );\r\n\r\n // Determine if should error or show address suggestions.\r\n /** @type {CodeAddress[]} */\r\n const validCodedAddress = verificationResponse.CodedAddresses?.filter(isValidAddress) ?? [];\r\n\r\n // The following result codes can be auto-applied without\r\n // user confirmation(however all other ACXX codes require\r\n // user confirmation):\r\n const changesThatCanBeAutoApplied = [\r\n \"AC09\",\r\n \"AC11\",\r\n \"AC13\",\r\n \"AC14\",\r\n \"AC15\",\r\n \"AC16\",\r\n \"AC17\",\r\n \"AC19\",\r\n \"AC22\",\r\n ];\r\n\r\n const hasRecommendedAddressesThatRequireUserConfirmation = validCodedAddress.some(\r\n // @ts-ignore\r\n x => x.melissaDataResults\r\n .filter(y => y.resultCode.startsWith(\"AC\"))\r\n .some(y => y.resultCode.startsWith(\"AC\") && !changesThatCanBeAutoApplied.includes(y.resultCode))\r\n );\r\n\r\n response.requiresUserConfirmation = hasRecommendedAddressesThatRequireUserConfirmation;\r\n\r\n if (hasInvalidCodes) {\r\n response.hasErrors = true;\r\n response.error = verificationResponse['message'];\r\n }\r\n\r\n if (validCodedAddress.length > 0) {\r\n response.recommendedAddress = currentAddress;\r\n } else {\r\n response.error = \"Unable to validate address.\";\r\n response.hasErrors = true;\r\n response.hasRecommendations = false;\r\n response.recommendedAddress = null;\r\n response.requiresUserConfirmation = true;\r\n }\r\n } else {\r\n throw new Error(\"Unknown response, not implemented\");\r\n }\r\n\r\n return response;\r\n }\r\n\r\n /**\r\n * Shows a modal for the recommended addresses.\r\n * @param {string} title\r\n * @param {CodeAddress[]} recommendedAddresses \r\n * @param {CodeAddress} enteredAddress\r\n * @param {(arg0: CodeAddress) => void} onSelectedAddressFn\r\n * @param {(arg0: CodeAddress) => void} onSelectedUserEnteredAddressFn\r\n * @returns {Promise}\r\n */\r\n function showAddressRecommendationsAsync(\r\n title,\r\n recommendedAddresses,\r\n enteredAddress,\r\n onSelectedAddressFn,\r\n onSelectedUserEnteredAddressFn\r\n ) {\r\n if (title === null || title === undefined) {\r\n throw new Error(\"The argument\\\"title\\\" cannot be null/undefined.\");\r\n } else if (recommendedAddresses === null || recommendedAddresses === undefined) {\r\n throw new Error(\"The argument \\\"recommendedAddresses\\\" cannot be null/undefined.\");\r\n } else if (enteredAddress === null || enteredAddress === undefined) {\r\n throw new Error(\"The argument \\\"enteredAddress\\\" cannot be null/undefined.\");\r\n } else if (onSelectedAddressFn === null || onSelectedAddressFn === undefined) {\r\n throw new Error(\"The argument \\\"onSelectedAddressFn\\\" cannot be null/undefined.\");\r\n }\r\n\r\n let resolve = null;\r\n let reject = null;\r\n\r\n let $templateEl = $(\"#address-suggestion-template\");\r\n let templateHtml = $templateEl.html();\r\n let $modal = $(\"#address-suggestions-modal\");\r\n let $modalSuggestions = $modal.find(\".suggested-addresses\");\r\n let $submitModalBtn = $modal.find(\".set-suggested-address\");\r\n let $userEnteredAddress = $modal.find(\"#user-entered-address\");\r\n\r\n // Remember the currently focused input.\r\n const $lastFocusedInput = $(\":focus\");\r\n\r\n // Always default to the user entered address.\r\n $userEnteredAddress.prop(\"checked\", true);\r\n\r\n let result = new Promise((_resolve, _reject) => {\r\n resolve = _resolve;\r\n reject = _reject;\r\n });\r\n\r\n // Set the user entered address.\r\n $modal.find(\".modal-title\").text(title);\r\n $modal.find(\"#user-entered-address-line-1\").text(enteredAddress.addressLine1 ?? \"\");\r\n $modal.find(\"#user-entered-address-line-2\").text(enteredAddress.addressLine2 ?? \"\");\r\n $modal.find(\"#user-entered-city\").text(enteredAddress.city ?? \"\");\r\n $modal.find(\"#user-entered-state\").text(enteredAddress.stateProvince ?? \"\");\r\n $modal.find(\"#user-entered-postal-code\").text(enteredAddress.postalCode ?? \"\");\r\n\r\n const $noResultsMessage = $modal.find(\".no-suggested-addresses\");\r\n const $suggestedAddressesContainer = $(\".suggested-addresses-container\");\r\n\r\n // Clear out the previous suggestions.\r\n $modalSuggestions.html(\"\");\r\n\r\n const validAddresses = recommendedAddresses.filter(\r\n x => !(x.melissaDataResults?.some(x => x.resultCode.startsWith(\"GE\")) ?? false)\r\n && (\r\n // x.melissaDataResults.some(x => x.resultCode === \"AE02\")\r\n (x.melissaDataResults?.some(y => y.resultCode === \"AS01\") ?? false)\r\n || (x.melissaDataResults?.some(y => y.resultCode === \"AS02\") ?? false)\r\n || (x.melissaDataResults?.some(y => y.resultCode === \"AS03\") ?? false)\r\n || (x.melissaDataResults?.some(y => y.resultCode === \"GS01\") ?? false)\r\n )\r\n // Do not show the same address.\r\n && !areAddressesSame(x, enteredAddress)\r\n );\r\n\r\n if (validAddresses.length > 0) {\r\n $noResultsMessage.addClass(\"d-none\");\r\n $suggestedAddressesContainer.removeClass(\"d-none\");\r\n\r\n for (let i = 0; i < validAddresses.length; i++) {\r\n let suggestedAddress = recommendedAddresses[i];\r\n\r\n const addressLine1ChangedClass = suggestedAddress.addressLine1 !== enteredAddress.addressLine1 ? \"text-warning\" : \"\";\r\n const addressLine2ChangedClass = suggestedAddress.addressLine2 !== enteredAddress.addressLine2 ? \"text-warning\" : \"\";\r\n const cityChangedClass = suggestedAddress.city !== enteredAddress.city ? \"text-warning\" : \"\";\r\n const stateChangedClass = suggestedAddress.stateProvince !== enteredAddress.stateProvince ? \"text-warning\" : \"\";\r\n const postalCodeChangedClass = suggestedAddress.postalCode !== enteredAddress.postalCode ? \"text-warning\" : \"\";\r\n const countyChangedClass = suggestedAddress.county !== enteredAddress.county;\r\n\r\n let viewModel = {\r\n suggestedAddressId: \"suggested-address-\" + (i + 1),\r\n addressLine1: suggestedAddress.addressLine1,\r\n addressLine1ChangedClass,\r\n addressLine2: suggestedAddress.addressLine2,\r\n addressLine2ChangedClass,\r\n city: suggestedAddress.city,\r\n cityChangedClass,\r\n stateProvince: suggestedAddress.stateProvince,\r\n stateChangedClass,\r\n postalCode: suggestedAddress.postalCode,\r\n postalCodeChangedClass,\r\n county: suggestedAddress.county,\r\n countyChangedClass,\r\n country: suggestedAddress.country,\r\n longitude: suggestedAddress.longitude,\r\n latitude: suggestedAddress.latitude,\r\n melissaAddressKey: suggestedAddress.melissaAddressKey,\r\n };\r\n\r\n let newHtml = bindViewModelToHtml(viewModel, templateHtml);\r\n $modal.find(\".suggested-addresses\").append(newHtml);\r\n }\r\n } else {\r\n $noResultsMessage.removeClass(\"d-none\");\r\n $suggestedAddressesContainer.addClass(\"d-none\");\r\n }\r\n\r\n $modal.modal({\r\n backdrop: true,\r\n // @ts-ignore\r\n show: true,\r\n keyboard: true,\r\n });\r\n\r\n $modal.modal(\"show\");\r\n\r\n function onModalHidden(evt) {\r\n $submitModalBtn.off(\"click\", onModalSetAddress);\r\n reject(\"dismissed\");\r\n }\r\n\r\n function onModalSetAddress(evt) {\r\n $modal.off(\"hide.bs.modal\", onModalHidden);\r\n $modal.modal(\"hide\");\r\n\r\n const $selectedAddress = $modal.find(\"[name='SuggestedAddress']:checked\");\r\n\r\n const addressLine1 = $selectedAddress.attr(\"data-address-line-1\");\r\n const addressLine2 = $selectedAddress.attr(\"data-address-line-2\");\r\n const city = $selectedAddress.attr(\"data-city\");\r\n const county = $selectedAddress.attr(\"data-county\");\r\n const postalCode = $selectedAddress.attr('data-postal-code');\r\n const stateProvince = $selectedAddress.attr(\"data-state-province\");\r\n const country = $selectedAddress.attr(\"data-country\");\r\n const melissaAddressKey = $selectedAddress.attr(\"data-melissa-address-key\");\r\n const latitude = $selectedAddress.attr(\"data-latitude\");\r\n const longitude = $selectedAddress.attr(\"data-longitude\");\r\n\r\n /** @type {CodeAddress} */\r\n const address = {\r\n // @ts-ignore\r\n addressLine1,\r\n // @ts-ignore\r\n addressLine2,\r\n // @ts-ignore\r\n city,\r\n // @ts-ignore\r\n county,\r\n // @ts-ignore\r\n postalCode,\r\n // @ts-ignore\r\n stateProvince,\r\n // @ts-ignore\r\n country,\r\n // @ts-ignore\r\n melissaAddressKey,\r\n // @ts-ignore\r\n latitude,\r\n // @ts-ignore\r\n longitude,\r\n };\r\n\r\n // Short circuit if they are selecting the user entered address.\r\n if ($userEnteredAddress.is(\":checked\")) {\r\n onSelectedUserEnteredAddressFn(address);\r\n resolve();\r\n $lastFocusedInput[0]?.focus();\r\n return;\r\n }\r\n\r\n onSelectedAddressFn(address);\r\n resolve();\r\n $lastFocusedInput[0]?.focus();\r\n }\r\n\r\n $modal.one(\"hide.bs.modal\", onModalHidden);\r\n $submitModalBtn.one(\"click\", onModalSetAddress);\r\n\r\n return result;\r\n }\r\n\r\n /**\r\n * Retrieves the user entered address.\r\n * @param {JQuery} $addressContainer \r\n * @returns {CodeAddress}\r\n */\r\n function getAddressFromForm($addressContainer) {\r\n const $addressLine1El = $addressContainer.find(\".address-line-1\");\r\n const $addressLine2El = $addressContainer.find(\".address-line-2\");\r\n const $postalCodeEl = $addressContainer.find(\".postal-code\");\r\n const $cityEl = $addressContainer.find(\".city\");\r\n const $countyEl = $addressContainer.find(\".county\");\r\n const $stateEl = $addressContainer.find(\".state\");\r\n const $country = $addressContainer.find(\".country\");\r\n const $melissaAddressKey = $addressContainer.find(\".melissa-address-key\");\r\n const $longitude = $addressContainer.find(\".longitude\");\r\n const $latitude = $addressContainer.find(\".latitude\");\r\n\r\n return {\r\n // @ts-ignore\r\n addressLine1: $addressLine1El.val().trim(),\r\n // @ts-ignore\r\n addressLine2: $addressLine2El.val().trim(),\r\n // @ts-ignore\r\n postalCode: $postalCodeEl.val().trim(),\r\n // @ts-ignore\r\n city: $cityEl.val().trim(),\r\n // @ts-ignore\r\n county: $countyEl.val().trim(),\r\n // @ts-ignore\r\n stateProvince: $stateEl.val().trim(),\r\n // @ts-ignore\r\n country: $country.val().trim(),\r\n // @ts-ignore\r\n melissaAddressKey: $melissaAddressKey.val().trim(),\r\n // @ts-ignore\r\n longitude: $longitude.val(),\r\n // @ts-ignore\r\n latitude: $latitude.val(),\r\n };\r\n }\r\n\r\n /**\r\n * Updates an address section with the address.\r\n * @param {JQuery} $addressContainer\r\n * @param {CodeAddress} address\r\n * @returns {void}\r\n */\r\n function setAddressFormSection($addressContainer, address) {\r\n const $addressLine1 = $addressContainer.find(\".address-line-1\");\r\n const $addressLine2 = $addressContainer.find(\".address-line-2\");\r\n const $postalCode = $addressContainer.find(\".postal-code\");\r\n const $city = $addressContainer.find(\".city\");\r\n const $state = $addressContainer.find(\".state\");\r\n const $county = $addressContainer.find(\".county\");\r\n const $country = $addressContainer.find(\".country\");\r\n const $melissaAddressKey = $addressContainer.find(\".melissa-address-key\");\r\n const $latitude = $addressContainer.find(\".latitude\");\r\n const $longitude = $addressContainer.find(\".longitude\");\r\n const $addressValidationOverride = $addressContainer.find(\".address-validation-override\");\r\n\r\n $addressLine1.val(address.addressLine1 ?? \"\");\r\n $addressLine1.attr(\"data-dirty\", \"true\");\r\n $addressLine2.val(address.addressLine2 ?? \"\");\r\n $addressLine2.attr(\"data-dirty\", \"true\");\r\n $postalCode.val(address.postalCode ?? \"\");\r\n $postalCode.attr(\"data-dirty\", \"true\");\r\n $city.val(address.city ?? \"\");\r\n $city.attr(\"data-dirty\", \"true\");\r\n $state.val(address.stateProvince ?? \"\");\r\n $state.attr(\"data-dirty\", \"true\");\r\n $county.val(address.county ?? \"\");\r\n $county.attr(\"data-dirty\", \"true\");\r\n $country.val(address.country ?? \"\");\r\n $country.attr(\"data-dirty\", \"true\");\r\n $melissaAddressKey.val(address.melissaAddressKey ?? \"\");\r\n $melissaAddressKey.attr(\"data-dirty\", \"true\");\r\n $latitude.val(address.latitude ?? \"\");\r\n $latitude.attr(\"data-dirty\", \"true\");\r\n $longitude.val(address.longitude ?? \"\");\r\n $longitude.attr(\"data-dirty\", \"true\");\r\n $addressValidationOverride.prop(\"checked\", false);\r\n\r\n // If for some reason the melissaAddressKey is null/empty then set the\r\n // validation override to true.\r\n if ((address.melissaAddressKey ?? \"\")?.trim() === \"\") {\r\n $addressValidationOverride.prop(\"checked\", true);\r\n }\r\n\r\n // @ts-ignore\r\n $addressLine1.valid();\r\n // @ts-ignore\r\n $addressLine2.valid();\r\n // @ts-ignore\r\n $postalCode.valid();\r\n // @ts-ignore\r\n $city.valid();\r\n // @ts-ignore\r\n $state.valid();\r\n // @ts-ignore\r\n $county.valid();\r\n // @ts-ignore\r\n $country.valid();\r\n }\r\n\r\n /**\r\n * Makes the server request for validating the request.\r\n * @param {AddressVerificationRequest} address \r\n * @returns {Promise}\r\n */\r\n function validateAddressAsync(address) {\r\n if (address === null || address === undefined) {\r\n throw new Error(\"The argument \\\"address\\\" cannot be null/undefined.\");\r\n }\r\n\r\n var request = new Request(addressVerifyUrl, {\r\n method: \"POST\",\r\n body: JSON.stringify(address),\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n },\r\n });\r\n\r\n /** @type {Response|null} */\r\n let response = null;\r\n\r\n return fetch(request)\r\n .then(r => {\r\n response = r;\r\n\r\n if (response.ok) {\r\n return response.json();\r\n } else {\r\n return response.text();\r\n }\r\n })\r\n .then(responseContent => {\r\n if (response?.ok ?? false) {\r\n return responseContent;\r\n } else {\r\n throw new Error(responseContent);\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Makes the request for validating an address then shows a modal with the\r\n * suggested addresses if any. If no suggested addresses resolves\r\n * immediately. NOTE: This is a generic function for validating the primary\r\n * and secondary addresses. You probably want to use one of those methods\r\n * instead.\r\n * @param {string} title\r\n * @param {CodeAddress} address\r\n * @param {(arg0: CodeAddress) => void} onSelectedAddressFn\r\n * @param {(arg0: CodeAddress) => void} onSelectedUserEnteredAddressFn\r\n * @param {(arg0: CodeAddress) => void} onAutoUpdateAddressFn\r\n * @returns {Promise}\r\n * @see {@link conditionallyValidatePrimaryAddressAsync}\r\n * @see {@link conditionallyValidateSecondaryAddressAsync}\r\n */\r\n function showValidationModalForAddressIfNeededAsync(\r\n title,\r\n address,\r\n onSelectedAddressFn,\r\n onSelectedUserEnteredAddressFn,\r\n onAutoUpdateAddressFn\r\n ) {\r\n return validateAddressAsync({\r\n addressLine1: address.addressLine1 ?? \"\",\r\n addressLine2: address.addressLine2 ?? \"\",\r\n city: address.city ?? \"\",\r\n county: address.county ?? \"\",\r\n postalCode: address.postalCode ?? \"\",\r\n stateProvince: address.stateProvince ?? \"\",\r\n })\r\n .then(response => {\r\n const nextAction = determineMelissaVerificationActionV2(response, address);\r\n\r\n // If there are errors or the address requires user input, display the\r\n // melissa modal and wait for the users response.\r\n if ((nextAction.hasErrors || nextAction.requiresUserConfirmation)) {\r\n return showAddressRecommendationsAsync(\r\n title,\r\n response.CodedAddresses,\r\n address,\r\n onSelectedAddressFn,\r\n onSelectedUserEnteredAddressFn\r\n );\r\n } else {\r\n // If reaching this step then the address is valid and no\r\n // user action is needed.\r\n onAutoUpdateAddressFn(response.CodedAddresses[0]);\r\n return Promise.resolve();\r\n }\r\n })\r\n .catch(error => {\r\n if (error === \"dismissed\") {\r\n throw error;\r\n } else {\r\n showError({titleHtml: \"Failed to validate the address.\"});\r\n console.error(error);\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * A function which conditionally shows suggested addresses modal for the\r\n * primary address. Will not show the modal if the address was already\r\n * validated and has not changed since last validation.\r\n * @returns {Promise}\r\n */\r\n function conditionallyValidatePrimaryAddressAsync() {\r\n // Make sure the primary address was validated.\r\n if (primaryAddressValidated) {\r\n return Promise.resolve(true);\r\n }\r\n\r\n let userEnteredAddress = getAddressFromForm($primaryAddressContainer);\r\n $primaryAddressValidatedOverride.prop(\"checked\", false);\r\n\r\n return showValidationModalForAddressIfNeededAsync(\r\n verifyPrimaryAddressModalTitle,\r\n userEnteredAddress,\r\n newAddress => setAddressFormSection($primaryAddressContainer, newAddress),\r\n () => $primaryAddressValidatedOverride.prop(\"checked\", true),\r\n codedAddress => {\r\n setAddressFormSection($primaryAddressContainer, codedAddress);\r\n $primaryAddressValidatedOverride.prop(\"checked\", false);\r\n }\r\n )\r\n .then(() => primaryAddressValidated = true)\r\n .catch(error => {\r\n // Short circuit if the user dismisses the modal or some other\r\n // error.\r\n primaryAddressValidated = false;\r\n $primaryMelissaAddressKey.val(\"\");\r\n $primaryLatitude.val(\"\");\r\n $primaryLongitude.val(\"\");\r\n\r\n throw error;\r\n });\r\n }\r\n\r\n /**\r\n * Makes the server request for autocompleting the address.\r\n * @param {AddressAutofillRequest} address \r\n * @param {AbortSignal|null} abortSignal\r\n * @returns {Promise}\r\n */\r\n function autoCompleteAddressAsync(address, abortSignal) {\r\n if (address === null || address === undefined) {\r\n throw new Error(\"The argument \\\"address\\\" cannot be null/undefined.\");\r\n }\r\n\r\n let request = new Request(addressAutoCompleteUrl, {\r\n method: \"POST\",\r\n body: JSON.stringify(address),\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n },\r\n signal: abortSignal,\r\n });\r\n\r\n /** @type {Response|null} */\r\n let response = null;\r\n\r\n return fetch(request)\r\n .then(r => {\r\n response = r;\r\n\r\n if (response.ok) {\r\n return response.json();\r\n } else {\r\n return response.text();\r\n }\r\n })\r\n .then(responseContent => {\r\n if (response?.ok ?? false) {\r\n return responseContent;\r\n } else {\r\n throw new Error(responseContent);\r\n }\r\n });\r\n }\r\n\r\n //#endregion\r\n\r\n //#region Form Validation\r\n //This is using jquery-validation plug in\r\n //https://jqueryvalidation.org/\r\n\r\n // @ts-ignore\r\n jQuery.validator.addMethod(\"sp_postal_code\", function (value, element) {\r\n const postalCodeRegex = /^[0-9]{5,5}$/gi;\r\n return this.optional(element) || postalCodeRegex.test(value);\r\n }, \"Please enter a valid Zip Code\");\r\n\r\n // @ts-ignore\r\n jQuery.validator.addMethod(\"sp_url\", function (value, element) {\r\n const isOptional = this.optional(element);\r\n\r\n if (!isOptional) {\r\n return isOptional;\r\n }\r\n\r\n let url;\r\n\r\n try {\r\n url = new URL(value);\r\n\r\n return url.protocol === \"http:\" || url.protocol === \"https:\";\r\n } catch {\r\n return false;\r\n }\r\n }, \"Please enter a valid Zip Code\");\r\n\r\n // @ts-ignore\r\n jQuery.validator.addMethod(\"sp_fax\", function (value, element) {\r\n const faxRegex = /^[0-9]{3}-[0-9]{3}-[0-9]{4}$/gi;\r\n return this.optional(element) || faxRegex.test(value);\r\n }, \"Fax is not valid\");\r\n\r\n // @ts-ignore\r\n jQuery.validator.addMethod(\"sp_server_message\", function (value, element, params) {\r\n const elementName = $(element).attr(\"name\");\r\n // @ts-ignore\r\n return !(elementName in serverValidationMessages);\r\n }, function (params, element) {\r\n const elementName = $(element).attr(\"name\");\r\n let serverErrorMessage = serverValidationMessages[elementName];\r\n\r\n if (serverErrorMessage.indexOf(\"{{\") > 0 && serverErrorMessage.indexOf(\"}}\") > 0) {\r\n serverErrorMessage = bindViewModelToHtml($(element).data(), serverErrorMessage);\r\n }\r\n\r\n return serverErrorMessage || \"Unknown server error.\";\r\n });\r\n\r\n // NOTE: False shows the validation, true does not\r\n // @ts-ignore\r\n jQuery.validator.addMethod(\"sp_primaryphonenumber\", function (value, element, params) {\r\n if (this.optional(element) == true) {\r\n return true;\r\n }\r\n //If the value is empty or an empty string, disable Primary Phone Type inputs\r\n if (value.trim().length <= 0) {\r\n $(element).val($(element).val().trim());\r\n $(element).parents('.js-primary-phone-number').find('.phone-types input').attr('disabled', 'disabled')\r\n return false;\r\n }\r\n //Otherwise, show the inputs\r\n $(element).parents('.js-primary-phone-number').find('.phone-types input').removeAttr('disabled')\r\n return true;\r\n });\r\n\r\n // NOTE: False shows the validation, true does not\r\n // @ts-ignore\r\n jQuery.validator.addMethod(\"sp_secondaryphonenumber\", function (value, element, params) {\r\n\r\n //If the value is empty or an empty string, disable Primary Phone Type inputs\r\n if (value.trim().length <= 0) {\r\n $(element).val($(element).val().trim());\r\n $(element).parents('.js-secondary-phone-number').find('.phone-types input').attr('disabled', 'disabled')\r\n return true;\r\n }\r\n //Otherwise, show the inputs\r\n $(element).parents('.js-secondary-phone-number').find('.phone-types input').removeAttr('disabled')\r\n return true;\r\n });\r\n\r\n // Override the focusInvalid method on the $validator object so that it\r\n // scrolls to the FIRST invalid element and not the last.\r\n // Original Source: https://github.com/jquery-validation/jquery-validation/blob/7ba6372c04705a8b90101deec1b0561f12a02518/src/core.js#L607\r\n // @ts-ignore\r\n jQuery.validator.prototype.focusInvalid = function () {\r\n if (this.settings.focusInvalid) {\r\n try {\r\n $(this.errorList.length && this.errorList[0].element || [])\r\n .filter(\":visible\")\r\n .trigger(\"focus\")\r\n\r\n // Manually trigger focusin event; without it, focusin handler isn't called, findLastActive won't have anything to find\r\n .trigger(\"focusin\");\r\n } catch (e) {\r\n\r\n // Ignore IE throwing errors when focusing hidden elements\r\n }\r\n }\r\n };\r\n\r\n // NOTE: Requires the parameters \"firstName\" and \"lastName\".\r\n // @ts-ignore\r\n jQuery.validator.addMethod(\"sp_fullname\", function (value, element, params) {\r\n if (this.optional(element)) {\r\n return true;\r\n }\r\n\r\n const firstName = $(params.firstName).val();\r\n const lastName = $(params.lastName).val();\r\n const expectedFullName = `${firstName} ${lastName}`;\r\n\r\n return value === expectedFullName;\r\n }, \"The name entered should match the applicant's name\");\r\n\r\n\r\n // NOTE: Requires the parameters \"firstName\" and \"lastName\".\r\n // @ts-ignore\r\n jQuery.validator.addMethod(\"sp_includesfirstnamelastname\", function (value, element, params) {\r\n if (this.optional(element)) {\r\n return true;\r\n }\r\n const firstName = $(params.firstName).val();\r\n const lastName = $(params.lastName).val();\r\n const fullName = `${firstName} ${lastName}`.replace(/\\s+/g, \" \").toLowerCase();\r\n // @ts-ignore\r\n const signature = $(\"#AgreementFullName\").val().trim();\r\n\r\n // Normalize the signature value for comparison\r\n const normalizedSignature = signature.replace(/\\s+/g, \" \").toLowerCase();\r\n\r\n return normalizedSignature === fullName;\r\n }, \"The name entered should match the applicant's name\");\r\n // This will mark the element as invalid if the pattern does not match.\r\n // NOTE: Requires the parameters \"positivePattern\".\r\n // @ts-ignore\r\n jQuery.validator.addMethod(\"sp_positive_pattern\", function (value, element, params) {\r\n if (this.optional(element)) {\r\n return true;\r\n }\r\n\r\n if ((params.positivePattern ?? \"\") === \"\") {\r\n return false;\r\n }\r\n\r\n const regex = new RegExp(params.positivePattern, \"gim\");\r\n const result = regex.exec(value);\r\n\r\n return result !== null;\r\n }, \"Invalid characters.\");\r\n\r\n // @ts-ignore\r\n jQuery.validator.addMethod(\"sp_datalist\", function (value, element, params) {\r\n const $element = $(element);\r\n const $dropdownContainer = $($element.attr(\"data-sp-dropdown\"));\r\n\r\n if ($dropdownContainer.length === 0) {\r\n // Error, failed to identify the dropdown container.\r\n console.warn(\"Failed to identify the dropdown container for the element\", element);\r\n return false;\r\n }\r\n\r\n const $selectedOption = $dropdownContainer.children(\".active\");\r\n\r\n if ($selectedOption.length === 0) {\r\n return false;\r\n }\r\n\r\n const result = $selectedOption.text() === $element.val();\r\n\r\n // False shows the validation, true does not\r\n return result;\r\n }, \"Select a record from the list.\");\r\n\r\n const alphaAndDashPeriodPattern = \"^[a-z-\\\\.'\\\\s]*$\";\r\n const alphaNumericPatternAndSpace = \"^[a-z0-9\\\\s]*$\";\r\n const alphaNumericPatternAndPoundDotSpace = \"^[a-z0-9#!&$%^<>\\\\.?'~\\\\s\\\\/\\\\\\\\-]*$\";\r\n const alphaNumericAndAmpersandPeriodDashPattern = \"^[a-z0-9-_\\\\.&\\\\s']*$\";\r\n const emailPattern = \"^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}$\";\r\n const addressPattern = \"^[a-z0-9-_\\\\.&\\\\s'/#]*$\";\r\n\r\n // @ts-ignore\r\n const $validator = $form.validate({\r\n onfocusout: function (element) {\r\n // @ts-ignore\r\n $(element).valid();\r\n },\r\n onkeyup: function (element, event) {\r\n if ($(element).is(\".no-validate-on-key-down\")) {\r\n return;\r\n }\r\n\r\n // @ts-ignore\r\n $.validator.defaults.onkeyup.call(this, element, event);\r\n },\r\n rules: {\r\n // Account Holder Details\r\n FirstName: {\r\n required: true,\r\n maxlength: 35,\r\n sp_server_message: true,\r\n sp_positive_pattern: {\r\n positivePattern: alphaAndDashPeriodPattern,\r\n },\r\n },\r\n LastName: {\r\n required: true,\r\n maxlength: 35,\r\n sp_server_message: true,\r\n sp_positive_pattern: {\r\n positivePattern: alphaAndDashPeriodPattern,\r\n },\r\n },\r\n EmailAddress: {\r\n required: true,\r\n email: true,\r\n sp_positive_pattern: {\r\n positivePattern: emailPattern,\r\n },\r\n sp_server_message: true,\r\n },\r\n ConfirmEmailAddress: {\r\n equalTo: \"#EmailAddress\",\r\n sp_server_message: true,\r\n },\r\n PrimaryPhoneNumber: {\r\n required: element => {\r\n if ($(element).val().length <= 0) {\r\n $(element).parents('.js-primary-phone-number').find('.phone-types input').attr('disabled', 'disabled').prop('checked', false);\r\n }\r\n return true\r\n },\r\n sp_server_message: true,\r\n sp_primaryphonenumber: {\r\n primaryphonenumber: \"#PrimaryPhoneNumber\",\r\n },\r\n },\r\n PrimaryPhoneType: {\r\n required: true,\r\n sp_server_message: true,\r\n },\r\n SecondaryPhoneNumber: {\r\n required: element => {\r\n if ($(element).val().length <= 0) {\r\n $(element).parents('.js-secondary-phone-number').find('.phone-types input').attr('disabled', 'disabled').prop('checked', false);\r\n }\r\n return false;\r\n },\r\n sp_server_message: true,\r\n sp_secondaryphonenumber: {\r\n secondaryphonenumber: \"#SecondaryPhoneNumber\",\r\n },\r\n },\r\n SecondaryPhoneType: {\r\n required: element => {\r\n // @ts-ignore\r\n return $secondaryPhoneNumber.val().trim().length > 0;\r\n },\r\n sp_server_message: true,\r\n \r\n },\r\n TextMessageOptIn: {\r\n sp_server_message: true,\r\n },\r\n\r\n // Primary Shipping Address\r\n PrimaryAddressLine1: {\r\n required: true,\r\n sp_server_message: true,\r\n sp_positive_pattern: {\r\n positivePattern: addressPattern,\r\n },\r\n },\r\n PrimaryAddressLine2: {\r\n sp_server_message: true,\r\n sp_positive_pattern: {\r\n positivePattern: addressPattern,\r\n },\r\n },\r\n PrimaryPostalCode: {\r\n required: true,\r\n maxlength: 5,\r\n sp_postal_code: true,\r\n sp_server_message: true,\r\n },\r\n PrimaryCity: {\r\n required: true,\r\n sp_server_message: true,\r\n sp_positive_pattern: {\r\n positivePattern: alphaNumericPatternAndSpace,\r\n },\r\n },\r\n PrimaryState: {\r\n required: true,\r\n sp_server_message: true,\r\n },\r\n PrimaryCounty: {\r\n required: true,\r\n sp_server_message: true,\r\n sp_positive_pattern: {\r\n positivePattern: alphaNumericPatternAndSpace,\r\n },\r\n },\r\n PrimaryAddressIsResidential: {\r\n sp_server_message: true,\r\n },\r\n Website: {\r\n url: true,\r\n sp_server_message: true,\r\n },\r\n Fax: {\r\n sp_fax: true,\r\n sp_server_message: true,\r\n },\r\n\r\n CollegeAttendedIfsKey: {\r\n sp_datalist: true,\r\n sp_server_message: true,\r\n },\r\n DegreeIfsKey: {\r\n sp_datalist: true,\r\n sp_server_message: true,\r\n },\r\n\r\n // Communications\r\n SubscribeToEducationAndEvents: {\r\n sp_server_message: true,\r\n },\r\n SubscribeToNews: {\r\n sp_server_message: true,\r\n },\r\n AdditionalQuestions: {\r\n sp_server_message: true,\r\n },\r\n\r\n // Agreement\r\n AgreementFullName: {\r\n required: true,\r\n sp_includesfirstnamelastname: {\r\n firstName: \"#FirstName\",\r\n lastName: \"#LastName\",\r\n },\r\n sp_server_message: true,\r\n },\r\n },\r\n errorElement: \"label\",\r\n errorClass: \"alert-msg\",\r\n messages: {\r\n FirstName: {\r\n required: \"First name is required\",\r\n },\r\n LastName: {\r\n required: \"Last name is required\",\r\n },\r\n BusinessName: {\r\n required: \"Business Name is required\",\r\n },\r\n EmailAddress: {\r\n required: \"Email is required\",\r\n email: \"Please enter a valid email address\",\r\n sp_positive_pattern: \"Please enter a valid email address\",\r\n },\r\n ConfirmEmailAddress: {\r\n required: \"Email confirmation is required\",\r\n equalTo: \"Email entry does not match\",\r\n },\r\n PrimaryAddressLine1: {\r\n required: \"Street address is required\",\r\n },\r\n PrimaryPostalCode: {\r\n required: \"Zip code is required\",\r\n sp_postal_code: \"Please enter a valid Zip Code\",\r\n },\r\n PrimaryCity: {\r\n required: \"City is required\",\r\n },\r\n PrimaryState: {\r\n required: \"State is required\",\r\n },\r\n PrimaryCounty: {\r\n required: \"County is required\",\r\n },\r\n PrimaryPhoneNumber: {\r\n required: \"Phone Number is required\",\r\n },\r\n PrimaryPhoneType: {\r\n required: \"Selection is required\",\r\n },\r\n SecondaryPhoneType: {\r\n required: \"Selection is required\",\r\n },\r\n Website: {\r\n url: \"Website is not valid\",\r\n },\r\n Fax: {\r\n sp_fax: \"Fax is not valid\",\r\n },\r\n CollegeAttendedIfsKey: {\r\n required: \"College is required\",\r\n sp_datalist: \"College is required\",\r\n },\r\n DegreeIfsKey: {\r\n required: \"Degree is required\",\r\n sp_datalist: \"Degree is required\",\r\n },\r\n LicenseCertificateNumber: {\r\n required: \"License/Certificate Number is required\",\r\n },\r\n AgreementFullName: {\r\n required: \"Full name is required\",\r\n sp_fullname: \"The name entered should match the applicant's name\",\r\n },\r\n },\r\n errorPlacement: function ($errorEl, $inputEl) {\r\n if ($inputEl.is(\"[type='radio']\")) {\r\n const $validationContainer = $inputEl.closest(\".custom-sp-label-wrapper\").find(\".validation\");\r\n $errorEl.appendTo($validationContainer);\r\n } else {\r\n $errorEl.appendTo($inputEl.parent());\r\n }\r\n },\r\n highlight: function (element, errorClass, validClass) {\r\n const $element = $(element);\r\n const $phoneTypeContainer = $element.closest(\".phone-types\");\r\n const isIntendedUse = $element.is(\"[name='IntendedUse']\");\r\n\r\n if ($phoneTypeContainer.length > 0) {\r\n if ((errorClass ?? \"\").length > 0) {\r\n $phoneTypeContainer.addClass(errorClass);\r\n }\r\n\r\n if ((validClass ?? \"\").length > 0) {\r\n $phoneTypeContainer.removeClass(validClass);\r\n }\r\n } else {\r\n if ((errorClass ?? \"\").length > 0) {\r\n $element.addClass(errorClass);\r\n }\r\n\r\n if ((validClass ?? \"\").length > 0) {\r\n $element.removeClass(validClass);\r\n }\r\n }\r\n\r\n if (isIntendedUse) {\r\n if ((errorClass ?? \"\").length > 0) {\r\n $intendedUses.addClass(errorClass);\r\n }\r\n\r\n if ((validClass ?? \"\").length > 0) {\r\n $intendedUses.removeClass(validClass);\r\n }\r\n }\r\n },\r\n unhighlight: function (element, errorClass, validClass) {\r\n const $element = $(element);\r\n const $phoneTypeContainer = $element.closest(\".phone-types\");\r\n const isIntendedUse = $element.is(\"[name='IntendedUse']\");\r\n\r\n if ($phoneTypeContainer.length > 0) {\r\n if ((errorClass ?? \"\").length > 0) {\r\n $phoneTypeContainer.removeClass(errorClass);\r\n }\r\n\r\n if ((validClass ?? \"\").length > 0) {\r\n $phoneTypeContainer.addClass(validClass);\r\n }\r\n } else {\r\n if ((errorClass ?? \"\").length > 0) {\r\n $element.removeClass(errorClass);\r\n }\r\n\r\n if ((validClass ?? \"\").length > 0) {\r\n $element.addClass(validClass);\r\n }\r\n }\r\n\r\n if (isIntendedUse) {\r\n if ((errorClass ?? \"\").length > 0) {\r\n $intendedUses.removeClass(errorClass);\r\n }\r\n\r\n if ((validClass ?? \"\").length > 0) {\r\n $intendedUses.addClass(validClass);\r\n }\r\n }\r\n },\r\n success: function ($label) {\r\n // Helper for removing the error class from the custom\r\n // radio container.\r\n $label\r\n .closest(\".custom-sp-label-wrapper\")\r\n .find(\".labelled-container.error\")\r\n .removeClass(\"error\");\r\n },\r\n invalidHandler: function (event, validator) {\r\n // Helper for adding the error class to the \r\n // radio container.\r\n for (let errorEntry of validator.errorList) {\r\n var $parent = $(errorEntry.element).closest(\".labelled-container\");\r\n\r\n if ($parent.length === 0) {\r\n continue;\r\n }\r\n\r\n $parent.addClass(validator.settings.errorClass);\r\n }\r\n },\r\n });\r\n\r\n //#endregion\r\n\r\n //#region Misc\r\n\r\n /**\r\n * @returns {Request}\r\n */\r\n function generateCreateAccountRequest() {\r\n // If the melissaAddressKey is null/empty then ensure the validation\r\n // override is true.\r\n const primaryMelissaAddressKey = ($primaryMelissaAddressKey.val()?.toString() ?? \"\").trim();\r\n const primaryValidationOverride = $primaryAddressValidatedOverride.prop(\"checked\");\r\n\r\n if (primaryMelissaAddressKey === \"\" && !primaryValidationOverride) {\r\n $primaryAddressValidatedOverride.prop(\"checked\", true);\r\n }\r\n\r\n // This is a work around for the following code:\r\n // \"const urlSearchParams = new URLSearchParams(new FormData($form[0]));\"\r\n // Not sure why the inner form data is empty.\r\n const formData = {};\r\n\r\n $form.find(\"[name]\").each(function () {\r\n const $el = $(this);\r\n const type = $el.attr(\"type\");\r\n const isCheckbox = type === \"checkbox\";\r\n const isRadio = type === \"radio\";\r\n const isChecked = $el.is(\":checked\");\r\n const useOptionValue = $el.is(\".js-datalist\");\r\n\r\n if (useOptionValue) {\r\n const dropDownContainerSelector = $el.attr(\"data-sp-dropdown\");\r\n const $selectedOpt = $(dropDownContainerSelector).children(\".active\").first();\r\n const value = $selectedOpt.attr(\"value\");\r\n formData[$el.attr(\"name\")] = value;\r\n } else if (isCheckbox && isChecked) {\r\n formData[$el.attr(\"name\")] = $el.val();\r\n } else if (isRadio && isChecked) {\r\n formData[$el.attr(\"name\")] = $el.val();\r\n } else if (!isCheckbox && !isRadio) {\r\n formData[$el.attr(\"name\")] = $el.val();\r\n }\r\n });\r\n\r\n // @ts-ignore\r\n const urlSearchParams = new URLSearchParams(formData);\r\n // End work around.\r\n\r\n // @ts-ignore\r\n const registerRequest = new Request($form.attr(\"action\"), {\r\n method: \"POST\",\r\n body: urlSearchParams,\r\n });\r\n\r\n return registerRequest;\r\n }\r\n\r\n /**\r\n * Tries to format the value into a phone number.\r\n * @param {string} value \r\n * @returns {string}\r\n */\r\n function formatStringToPhoneNumber(value) {\r\n const validRegex = /^\\d{3}-\\d{3}-\\d{4}$/g;\r\n const result = validRegex.exec(value);\r\n\r\n // If already in a valid format, short circuit.\r\n if (result !== null) {\r\n return value;\r\n }\r\n\r\n // Remove all non-numbers.\r\n value = value.replace(/\\D/g, \"\");\r\n let numberCount = value.length;\r\n\r\n // If there are more than 10 numbers, take the last 10.\r\n if (numberCount > 10) {\r\n value = value.substring(value.length - 10, value.length);\r\n numberCount = 10;\r\n }\r\n\r\n // Insert dashes at appropriate places.\r\n if (numberCount > 6) {\r\n // Need two dashes.\r\n value = value.substring(0, 3)\r\n + \"-\"\r\n + value.substring(3, 6)\r\n + \"-\"\r\n + value.substring(6, value.length);\r\n } else if (numberCount > 3) {\r\n // Need one dash.\r\n value = value.substring(0, 3)\r\n + \"-\"\r\n + value.substring(3, 6);\r\n }\r\n\r\n return value;\r\n }\r\n\r\n /**\r\n * Displays a toast error message that automatically closes in 30 seconds.\r\n * @param {object} data\r\n * @param {string} data.titleHtml\r\n * @param {string} [data.titleClass] Defaults to \"text-danger\".\r\n * @param {string} [data.bodyHtml] Defaults to empty.\r\n * @param {string} [data.bodyClass] Defaults to \"text-danger\".\r\n * @param {number} [data.timeoutMS] Defaults to 30 seconds. Pass in 0 for\r\n * it to never timeout.\r\n * @returns {void}\r\n */\r\n function showError(data) {\r\n if (data === null || data === undefined) {\r\n throw new Error(\"The argument \\\"data\\\" cannot be null/undefind.\");\r\n }\r\n\r\n const $toastContainer = $(\"#GeneralErrorToastContainer\");\r\n\r\n if ($toastContainer.length === 0) {\r\n throw new Error(\"Failed to locate the #GeneralErrorToastContainer.\");\r\n }\r\n\r\n /** @type {HTMLTemplateElement} */\r\n // @ts-ignore\r\n const toastTemplateEl = $(\"#GeneralErrorToastTemplate\")[0];\r\n\r\n /** @type {HTMLDivElement} */\r\n // @ts-ignore\r\n let toastCloneEl = toastTemplateEl.content.cloneNode(true);\r\n\r\n const toastTitleEl = toastCloneEl.querySelector(\".toast-title\");\r\n const toastBodyEl = toastCloneEl.querySelector(\".toast-body\");\r\n const dismissButtonEl = toastCloneEl.querySelector(\"[data-bs-dismiss='toast']\");\r\n\r\n if (toastTitleEl === null || toastTitleEl === undefined) {\r\n throw new Error(\"Failed to locate the toast-title element.\");\r\n } else if (toastBodyEl === null || toastBodyEl === undefined) {\r\n throw new Error(\"Failed to locate the toast-body element.\");\r\n } else if (dismissButtonEl === null || dismissButtonEl === undefined) {\r\n throw new Error(\"Failed to locate the element matching the selector \\\"[data-bs-dismiss='toast']\\\".\");\r\n }\r\n\r\n toastTitleEl.innerHTML = data.titleHtml;\r\n toastTitleEl.classList.add(data.titleClass ?? \"text-danger\");\r\n\r\n if (data.bodyHtml) {\r\n toastBodyEl.innerHTML = data.bodyHtml;\r\n toastBodyEl.classList.add(data.bodyClass ?? \"text-danger\");\r\n } else {\r\n toastBodyEl.remove();\r\n }\r\n\r\n // Insert the toast.\r\n $toastContainer[0].appendChild(toastCloneEl);\r\n\r\n // @ts-ignore\r\n toastCloneEl = $toastContainer.children(\":last-child\")[0];\r\n\r\n // Default to 30 hide to seconds.\r\n const autoDismissTimeoutMS = data?.timeoutMS ?? 30000;\r\n\r\n // Initialize the Bootstrap Toast.\r\n const bootstrapToast = new bootstrap.Toast(toastCloneEl, {\r\n animation: true,\r\n autohide: autoDismissTimeoutMS > 0,\r\n delay: autoDismissTimeoutMS,\r\n });\r\n\r\n bootstrapToast.show();\r\n\r\n // Remove the toast element once hidden.\r\n toastCloneEl.addEventListener(\r\n \"hidden.bs.toast\",\r\n () => toastCloneEl.remove(),\r\n { once: true, passive: true, }\r\n );\r\n }\r\n\r\n /**\r\n * Checks if the response is a ModelState response.\r\n * @param {*} obj \r\n * @returns {obj is {[key: string]: string[]}}\r\n */\r\n function isModelStateError(obj) {\r\n return obj !== null\r\n && obj !== undefined\r\n && Object.keys(obj).every(key => Array.isArray(obj[key]));\r\n }\r\n\r\n /**\r\n * Used for disabling user input.\r\n * @param {boolean} blocking True to disable elements, false to enable user\r\n * interaction.\r\n */\r\n function blockUI(blocking) {\r\n if (blocking === null || blocking === undefined) {\r\n throw new Error(\"The argument \\\"blocking\\\" cannot be null/undefined.\");\r\n }\r\n\r\n if (blocking) {\r\n $submitBtn.addClass('disabled');\r\n $loadingIndicator.removeClass('d-none');\r\n\r\n const $elements = $(\"#studentRegistrationForm input:not([disabled]),#studentRegistrationForm button:not([disabled]),#studentRegistrationForm select:not([disabled]),#studentRegistrationForm textarea:not([disabled])\");\r\n\r\n $elements\r\n .prop(\"disabled\", true)\r\n .addClass(\"disabled\")\r\n .attr(\"data-unblock\", \"true\");\r\n } else {\r\n $submitBtn.removeClass('disabled');\r\n $loadingIndicator.addClass('d-none');\r\n\r\n const $elements = $(\"#studentRegistrationForm *[data-unblock]\");\r\n\r\n $elements\r\n .prop(\"disabled\", false)\r\n .removeClass(\"disabled\")\r\n .removeAttr(\"data-unblock\");\r\n }\r\n }\r\n\r\n /**\r\n * Populates the template.\r\n * @param {object} viewModel Must be an object, cannot be a primitive (like\r\n * a string).\r\n * @param {string} html \r\n * @returns {string}\r\n */\r\n function bindViewModelToHtml(viewModel, html) {\r\n let htmlCopy = html;\r\n const regex = /{{(.*?)}}/gi;\r\n const viewModelKeys = Object.keys(viewModel);\r\n\r\n for (let matchArr of html.matchAll(regex)) {\r\n const htmlKey = matchArr[0];\r\n const expression = \"return this.\" + matchArr[1];\r\n const fnBinder = new Function(expression);\r\n const replacementHtml = fnBinder.call(viewModel);\r\n\r\n while (htmlCopy.includes(htmlKey)) {\r\n htmlCopy = htmlCopy.replace(htmlKey, replacementHtml);\r\n }\r\n }\r\n\r\n return htmlCopy;\r\n }\r\n\r\n function onLeaveAttempt(evt) {\r\n var hasChanges = false;\r\n\r\n $form.find(\"input,textarea,select\").each(function () {\r\n const $inputEl = $(this);\r\n\r\n // @ts-ignore\r\n if ($inputEl.val().toString().trim() !== \"\") {\r\n hasChanges = true;\r\n }\r\n });\r\n\r\n if (hasChanges) {\r\n // NOTE: Currently the beforeunload event ONLY allows for a\r\n // browser specific message to be displayed when navigating away.\r\n // So no custom modals yet.\r\n evt.preventDefault();\r\n return (evt.returnValue = \"\");\r\n }\r\n }\r\n\r\n //#endregion\r\n\r\n //#region Event Handlers\r\n\r\n // Focus the first name input on document ready.\r\n $firstName[0].focus();\r\n\r\n // Allow tabbing thru individual radio buttons.\r\n $(\"input[type='radio']\").on(\"keydown\", function (evt) {\r\n if (evt.key !== \"Tab\") {\r\n return;\r\n }\r\n\r\n const $this = $(this);\r\n const radioGroupName = $this.attr(\"name\");\r\n const $allRelatedRadios = $(`input[type='radio'][name='${radioGroupName}']`);\r\n const selectedIndex = $allRelatedRadios.index($this);\r\n\r\n // If on the first radio element and navigating backwards short\r\n // circuit.\r\n if (selectedIndex === 0 && evt.shiftKey) {\r\n return;\r\n }\r\n // If on the last radio element and navigating forwards short circuit.\r\n else if ((selectedIndex === ($allRelatedRadios.length - 1)) && !evt.shiftKey) {\r\n return;\r\n }\r\n\r\n evt.stopImmediatePropagation();\r\n evt.preventDefault();\r\n\r\n if (evt.shiftKey) {\r\n // Navigating backwards.\r\n $allRelatedRadios[selectedIndex - 1].focus();\r\n } else {\r\n // Navigating forwards.\r\n $allRelatedRadios[selectedIndex + 1].focus();\r\n }\r\n });\r\n\r\n // On the user entering the address-line 1 and postal code, auto-complete\r\n // the address.\r\n // NOTE: SHOULD ONLY auto-complete if any of the city/state/county inputs\r\n // are empty.\r\n $(\"#PrimaryAddressLine1,#PrimaryPostalCode\").on(\"change\", function (evt) {\r\n const $addressSection = $(this).closest(\".address-container\");\r\n const address = getAddressFromForm($addressSection);\r\n\r\n /** @type {HTMLElement|null} */\r\n let nextEl = null;\r\n\r\n if (evt.target.matches(\".address-line-1\")) {\r\n nextEl = $addressSection.find(\".address-line-2\")[0];\r\n } else if (evt.target.matches(\".postal-code\")) {\r\n nextEl = $addressSection.find(\".city\")[0];\r\n } else {\r\n throw new Error(\"Unable to determine next focusable element.\");\r\n }\r\n\r\n const hasMinimumRequiredFields = address.addressLine1 !== \"\"\r\n && address.postalCode !== \"\";\r\n\r\n if (!hasMinimumRequiredFields) {\r\n return;\r\n }\r\n\r\n const missingCityStateCounty = address.city === \"\"\r\n || address.county === \"\"\r\n || address.stateProvince === \"\";\r\n\r\n // If all of the city/state/county/addressLine1/addressLine2 inputs are\r\n // entered then just validate the address and short-circuit.\r\n if (!missingCityStateCounty) {\r\n validatePrimaryAddress();\r\n return;\r\n }\r\n\r\n blockUI(true);\r\n\r\n autoCompleteAddressAsync(\r\n {\r\n addressLine1: address.addressLine1 ?? \"\",\r\n addressLine2: address.addressLine2,\r\n postalCode: address.postalCode ?? \"\",\r\n city: address.city,\r\n stateProvince: address.stateProvince,\r\n county: address.county,\r\n },\r\n null\r\n )\r\n .then(completeAddress => {\r\n setAddressFormSection($addressSection, completeAddress);\r\n validatePrimaryAddress();\r\n })\r\n .catch(error => {\r\n showError({ titleHtml: \"Error autocompleting the address.\" });\r\n console.error(error);\r\n })\r\n .finally(() => {\r\n blockUI(false);\r\n nextEl?.focus();\r\n });\r\n });\r\n\r\n // This is for marking which inputs have been touched by the user.\r\n $allFormInputs.one(\"focusin\", function (evt) {\r\n const $this = $(this);\r\n $this.attr(\"data-dirty\", \"true\");\r\n });\r\n\r\n // Insert a dash based on the length of the string for the phone elements.\r\n $(\"input[type='tel']\").on(\"keydown\", function (evt) {\r\n var $input = $(this);\r\n // @ts-ignore\r\n var val = $input.val().trim();\r\n\r\n if (evt.key === \"Backspace\" || evt.key === \"Delete\" || evt.key === \"-\") {\r\n return;\r\n }\r\n\r\n if (val.length === 3) {\r\n val += \"-\";\r\n } else if (val.length === 7) {\r\n val += \"-\";\r\n }\r\n\r\n $input.val(val);\r\n });\r\n\r\n // Try and format the phone-number value after the value changes.\r\n $(\"input[type='tel']\").on(\"change\", function (evt) {\r\n const $this = $(this);\r\n\r\n /** @type {string} */\r\n // @ts-ignore\r\n let value = $this.val();\r\n\r\n value = formatStringToPhoneNumber(value);\r\n $this.val(value);\r\n });\r\n\r\n // Try and format the phone-number value after pasting content.\r\n $(\"input[type='tel']\").on(\"paste\", function (evt) {\r\n evt.preventDefault();\r\n evt.stopImmediatePropagation();\r\n\r\n const $this = $(this);\r\n\r\n /** @type {string} */\r\n // @ts-ignore\r\n let value = evt.originalEvent.clipboardData.getData(\"text\");\r\n\r\n value = formatStringToPhoneNumber(value);\r\n $this.val(value);\r\n });\r\n\r\n // This clears out any stored server validation messages whenever any of\r\n // the inputs change.\r\n $form.find(\"input,select,textarea\").on(\"change\", function (evt) {\r\n var $targetEl = $(evt.target);\r\n var elName = $targetEl.attr(\"name\") ?? \"\";\r\n\r\n if (elName in serverValidationMessages) {\r\n delete serverValidationMessages[elName];\r\n }\r\n });\r\n\r\n // Perform address validation after the user has entered last required\r\n // primary address input. Ignore the address-line-1 and postal code so it\r\n // does not conflict with the auto-complete handler.\r\n $primaryAddressContainer.find(\"input:not(#PrimaryAddressIsResidential):not(.address-line-1):not(.postal-code),select\").on(\"change\", function (evt) {\r\n validatePrimaryAddress();\r\n });\r\n\r\n // Handler for if the user tries to navigate away while they have changes.\r\n $allFormInputs.on(\"change\", function (evt) {\r\n const hasChanges = $allFormInputs.filter(function (index, element) {\r\n // @ts-ignore\r\n return $(element).val().toString().trim() !== \"\";\r\n }).length > 0;\r\n\r\n if (hasChanges && !addedBeforeUnloadEventHandler) {\r\n window.addEventListener(\"beforeunload\", onLeaveAttempt);\r\n addedBeforeUnloadEventHandler = true;\r\n } else if (!hasChanges && addedBeforeUnloadEventHandler) {\r\n window.removeEventListener(\"beforeunload\", onLeaveAttempt);\r\n addedBeforeUnloadEventHandler = false;\r\n }\r\n });\r\n\r\n // The submit handler for the form. Short circuits on any form errors.\r\n // NOTE: This is called by recaptcha after the user clicks the form submit\r\n // button.\r\n // @ts-ignore\r\n window.registrationFormSubmit = function () {\r\n let encounteredError = false;\r\n\r\n // If any client errors short circuit.\r\n if (!$validator.form()) {\r\n $validator.focusInvalid();\r\n return;\r\n }\r\n\r\n const serverValidationMessagesKeys = Object.keys(serverValidationMessages);\r\n\r\n // Clear out all server validation messages.\r\n for (let key of serverValidationMessagesKeys) {\r\n delete serverValidationMessages[key];\r\n }\r\n\r\n blockUI(true);\r\n\r\n setTimeout(() => {\r\n conditionallyValidatePrimaryAddressAsync()\r\n .then(() => fetch(generateCreateAccountRequest()))\r\n .then(response => {\r\n if (response.ok) {\r\n // Emit the GA4 event.\r\n var signupObj = {\r\n event: \"sign_up\",\r\n method: \"HCP\"\r\n }\r\n\r\n window.dataLayer = window.dataLayer || [];\r\n // @ts-ignore\r\n window.dataLayer.push(signupObj);\r\n\r\n // Remove the beforeunload handler if it was added.\r\n if (addedBeforeUnloadEventHandler) {\r\n window.removeEventListener(\"beforeunload\", onLeaveAttempt);\r\n }\r\n\r\n // Navigate to the new location.\r\n window.location.assign(response.url);\r\n return;\r\n }\r\n\r\n // Handle the error.\r\n encounteredError = true;\r\n return response.json();\r\n })\r\n .then(jsonError => {\r\n // This block is for parsing any ModelState errors returned\r\n // from the server.\r\n if (!encounteredError) {\r\n return;\r\n }\r\n\r\n // First check if there are any keys in the response. If zero\r\n // keys in the response object then display a generic error\r\n // message.\r\n if (isModelStateError(jsonError)) {\r\n // Check if the error is with Melissa data validation.\r\n const hasMelissaAddressValidationError = jsonError[\"AgreementFullName\"]\r\n ?.some(x => x === 'Melissa Data validation is required.') ?? false;\r\n\r\n if (hasMelissaAddressValidationError) {\r\n const primaryMelissaAddressKey = ($primaryMelissaAddressKey.val()?.toString() ?? \"\").trim();\r\n const primaryValidationOverride = $primaryAddressValidatedOverride.prop(\"checked\");\r\n\r\n if (primaryMelissaAddressKey === \"\" && !primaryValidationOverride) {\r\n // Issue was with the primary address.\r\n primaryAddressValidated = false;\r\n $primaryMelissaAddressKey.val(\"\");\r\n $primaryLatitude.val(\"\");\r\n $primaryLongitude.val(\"\");\r\n serverValidationMessages[\"PrimaryAddressLine1\"] = \"Unable to determine if address is deliverable.\";\r\n }\r\n } else {\r\n for (let errorKey in jsonError) {\r\n const errorValueArr = jsonError[errorKey];\r\n const errorValueHtml = errorValueArr.join(\"
\");\r\n serverValidationMessages[errorKey] = errorValueHtml;\r\n \r\n // Re-run the validator for that element.\r\n const $formInputEl = $(`#${errorKey}`);\r\n \r\n if ($formInputEl.length > 0) {\r\n // @ts-ignore\r\n $formInputEl.valid();\r\n }\r\n }\r\n }\r\n } else {\r\n serverValidationMessages[\"AgreementFullName\"] = \"Error occurred. Please reload the page and try again.\";\r\n\r\n // Re-run the validator for that element.\r\n const $formInputEl = $(`#AgreementFullName`);\r\n\r\n if ($formInputEl.length > 0) {\r\n // @ts-ignore\r\n $formInputEl.valid();\r\n }\r\n }\r\n\r\n // Have zero clue why wrapping this in a timeout gets\r\n // sp_server_message to work...\r\n setTimeout(() => {\r\n $validator.form();\r\n $validator.focusInvalid();\r\n }, 1);\r\n })\r\n .catch(error => {\r\n // Only log the error if it is not a dismiss error.\r\n if (error !== null && error !== undefined && error !== \"dismiss\") {\r\n console.error(error);\r\n }\r\n })\r\n .finally(() => blockUI(false));\r\n }, 1)\r\n }\r\n\r\n //#endregion\r\n\r\n\r\n $(document).ready(function () {\r\n var collegeInput = $('#CollegeAttendedIfsKey');\r\n var collegeDataList = $('#collegeList');\r\n var collegeCurrentFocus = -1;\r\n\r\n var degreeInput = $('#DegreeIfsKey');\r\n var degreeDataList = $('#degreeOptionsList');\r\n var degreeCurrentFocus = -1;\r\n\r\n collegeDataList.hide();\r\n degreeDataList.hide();\r\n\r\n function handleInput(input, dataList, currentFocus) {\r\n input.on('focus', function () {\r\n dataList.css('display', 'block');\r\n });\r\n\r\n input.on('blur', function () {\r\n setTimeout(function () {\r\n dataList.css('display', 'none');\r\n }, 200);\r\n });\r\n\r\n dataList.on('click', '[value]', function () {\r\n input.val($(this).text());\r\n addActive($(this));\r\n dataList.css('display', 'none');\r\n // @ts-ignore\r\n $(input).valid()\r\n });\r\n\r\n input.on('click', function () {\r\n const $dropdown = $($(this).attr(\"data-sp-dropdown\"));\r\n $dropdown.show();\r\n });\r\n\r\n input.on('input', function () {\r\n currentFocus = -1;\r\n var text = input.val().toUpperCase();\r\n dataList.children('[value]').each(function () {\r\n var optionText = $(this).text().toUpperCase();\r\n $(this).toggle(optionText.indexOf(text) > -1);\r\n });\r\n });\r\n\r\n input.on('keydown', function (e) {\r\n var key = e.which || 0;\r\n if (key == 40 || key == 38) {\r\n e.preventDefault();\r\n currentFocus += key == 40 ? 1 : -1;\r\n var options = dataList.children('[value]');\r\n currentFocus = (currentFocus + options.length) % options.length;\r\n addActive(options.eq(currentFocus));\r\n dataList.scrollTop(dataList.scrollTop() + options.eq(currentFocus).position().top);\r\n } else if (key == 13 && currentFocus > -1) {\r\n e.preventDefault();\r\n dataList.children('[value]').eq(currentFocus).click();\r\n }\r\n });\r\n }\r\n\r\n handleInput(collegeInput, collegeDataList, collegeCurrentFocus);\r\n handleInput(degreeInput, degreeDataList, degreeCurrentFocus);\r\n\r\n function addActive(option) {\r\n option.closest(\".spDataList\").find(\".active\").removeClass(\"active\");\r\n option.addClass(\"active\");\r\n }\r\n });\r\n});"],"mappings":"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"}