{"version":3,"file":"../hcp-account-registration.js","names":["$","$form","$primaryAddressSameAsBusiness","$primaryAddressContainer","$primaryLatitude","find","$primaryLongitude","$primaryMelissaAddressKey","$businessName","$secondaryPhoneNumber","$intendedUses","$intendedUseOrderingForPatients","$secondaryAddressContainer","$secondaryMelissaAddressKey","$secondaryLatitude","$secondaryLongitude","$allFormInputs","$primaryAddressValidatedOverride","$secondaryAddressValidationOverride","$submitBtn","$loadingIndicator","$firstName","$businessNameLabel","OPTIONAL_BUSINESS_NAME_TEXT","text","REQUIRED_BUSINESS_NAME_TEXT","addressAutoCompleteUrl","window","location","origin","addressVerifyUrl","verifyPrimaryAddressModalTitle","verifySecondaryAddressModalTitle","serverValidationMessages","addedBeforeUnloadEventHandler","primaryAddressValidated","secondaryAddressValidated","isMelissaAddressVerificationResponse","data","undefined","result","areAddressesSame","addressA","addressB","Error","addressLine1","addressLine2","city","county","postalCode","stateProvince","validatePrimaryAddress","val","hasInvalidInputs","each","el","_$this$attr","_$form$data$settings$","$this","inputName","attr","rules","settings","validationRule","required","validationRuleType","_typeof","isInputRequired","isInputDirty","valid","address","getAddressFromForm","prop","blockUI","showValidationModalForAddressIfNeededAsync","newAddress","setAddressFormSection","codedAddress","then","catch","error","console","finally","validateSecondaryAddress","_address$addressLine","_address$postalCode","_address$stateProvinc","_address$city","_address$county","is","_$this$attr2","_$form$data$settings$2","hadMissingAddressParts","doesMelissaDataResultHaveError","melissaDataResult","_melissaDataResult$re","_melissaDataResult$re2","resultCode","startsWith","determineMelissaVerificationActionV2","verificationResponse","currentAddress","response","hasErrors","hasRecommendations","requiresUserConfirmation","recommendedAddress","_verificationResponse","_verificationResponse2","missingMelissaAddressKey","CodedAddresses","every","x","_x$melissaAddressKey","melissaAddressKey","trim","hasInvalidCodes","some","_x$melissaDataResults","_x$melissaDataResults2","melissaDataResults","y","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","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","lastFocusedInputEl","Promise","_resolve","_reject","$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","newHtml","bindViewModelToHtml","append","modal","backdrop","show","keyboard","onModalHidden","evt","off","onModalSetAddress","$selectedAddress","focus","one","$addressContainer","$addressLine1El","$addressLine2El","$postalCodeEl","$cityEl","$countyEl","$stateEl","$country","$melissaAddressKey","$longitude","$latitude","_address$addressLine2","_address$addressLine3","_address$postalCode2","_address$city2","_address$stateProvinc2","_address$county2","_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$addressLine4","_address$addressLine5","_address$city3","_address$county3","_address$postalCode3","_address$stateProvinc3","requiredKeys","_i","_requiredKeys","key","requiredKeyHasValue","message","nextAction","showError","titleHtml","conditionallyValidatePrimaryAddressAsync","userEnteredAddress","conditionallyValidateSecondaryAddressAsync","_userEnteredAddress$a","_userEnteredAddress$p","_userEnteredAddress$s","_userEnteredAddress$c","_userEnteredAddress$c2","isSecondaryAddressRequired","autoCompleteAddressAsync","abortSignal","signal","_response$ok2","_response2","jQuery","validator","addMethod","value","element","postalCodeRegex","optional","test","isOptional","url","URL","protocol","_unused","faxRegex","params","elementName","serverErrorMessage","indexOf","firstName","lastName","expectedFullName","fullName","replace","toLowerCase","signature","normalizedSignature","parents","removeAttr","_params$positivePatte","positivePattern","regex","RegExp","exec","$element","$dropdownContainer","warn","$selectedOption","prototype","focusInvalid","errorList","trigger","e","alphaAndDashPeriodPattern","alphaNumericAndAmpersandPeriodDashPattern","alphaNumericPatternAndSpace","alphaNumericPatternAndPoundDotSpace","emailPattern","addressPattern","$validator","validate","onfocusout","onkeyup","event","defaults","call","FirstName","maxlength","sp_server_message","sp_positive_pattern","LastName","BusinessName","sp_businessname","businessName","EmailAddress","email","ConfirmEmailAddress","equalTo","PrimaryPhoneNumber","sp_primaryphonenumber","primaryphonenumber","PrimaryPhoneType","SecondaryPhoneNumber","sp_secondaryphonenumber","secondaryphonenumber","SecondaryPhoneType","TextMessageOptIn","IntendedUse","PrimaryAddressLine1","PrimaryAddressLine2","PrimaryPostalCode","sp_postal_code","PrimaryCity","PrimaryState","PrimaryCounty","PrimaryAddressIsResidential","BusinessAddressIdenticalToPrimaryAddress","SecondaryAddressLine1","SecondaryAddressLine2","SecondaryPostalCode","SecondaryCity","SecondaryState","SecondaryCounty","SecondaryAddressIsResidential","Website","Fax","sp_fax","CollegeAttendedIfsKey","sp_datalist","DegreeIfsKey","LicenseCertificateNumber","SubscribeToEducationAndEvents","SubscribeToNews","AdditionalQuestions","AgreementFullName","sp_includesfirstnamelastname","focuscleanup","errorElement","errorClass","messages","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","_$secondaryMelissaAdd","_$secondaryMelissaAdd2","primaryMelissaAddressKey","toString","secondaryMelissaAddressKey","primaryValidationOverride","secondaryValidationOverride","formData","$el","type","isCheckbox","isRadio","isChecked","useOptionValue","dropDownContainerSelector","$selectedOpt","children","first","urlSearchParams","URLSearchParams","registerRequest","primaryAddress","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","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$addressLine6","_address$postalCode4","$addressSection","nextEl","target","matches","hasMinimumRequiredFields","missingCityStateCounty","isPrimaryAddress","completeAddress","_nextEl","$input","originalEvent","clipboardData","getData","_$targetEl$attr","$targetEl","elName","removeEventListener","registrationFormSubmit","encounteredError","form","serverValidationMessagesKeys","_i2","_serverValidationMess","businessAddress","setTimeout","signupObj","dataLayer","push","assign","jsonError","_jsonError$AgreementF","_jsonError$AgreementF2","hasMelissaAddressValidationError","_$primaryMelissaAddre3","_$primaryMelissaAddre4","_$secondaryMelissaAdd3","_$secondaryMelissaAdd4","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":["hcp-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} AddressAutofillRequest\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/**\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[]|null} melissaDataResults\r\n */\r\n\r\n/** @typedef {keyof CodeAddress} CodeAddressKey */\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} addressLine2\r\n * @property {string} city\r\n * @property {string} stateProvince\r\n * @property {string} 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 = $(\"#hcpRegistrationForm\");\r\n const $primaryAddressSameAsBusiness = $(\"#PrimaryAddressIdenticalToBusinessAddress\");\r\n const $primaryAddressContainer = $(\".primary-address-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 $businessName = $(\"#BusinessName\");\r\n const $secondaryPhoneNumber = $(\"#SecondaryPhoneNumber\");\r\n const $intendedUses = $(\"[name='IntendedUse']\");\r\n const $intendedUseOrderingForPatients = $(\"#IntendedUse-2\");\r\n const $secondaryAddressContainer = $(\".business-address-container\");\r\n const $secondaryMelissaAddressKey = $secondaryAddressContainer.find(\".melissa-address-key\");\r\n const $secondaryLatitude = $secondaryAddressContainer.find(\".latitude\");\r\n const $secondaryLongitude = $secondaryAddressContainer.find(\".longitude\");\r\n const $allFormInputs = $form.find(\"input,select,textarea\");\r\n const $primaryAddressValidatedOverride = $(\"#PrimaryAddressValidationOverride\");\r\n const $secondaryAddressValidationOverride = $(\"#SecondaryAddressValidationOverride\");\r\n const $submitBtn = $('#AgreeSubmitBtn');\r\n const $loadingIndicator = $('#loading-indicator');\r\n const $firstName = $(\"#FirstName\");\r\n const $businessNameLabel = $(\"label[for=\\\"BusinessName\\\"]\");\r\n\r\n const OPTIONAL_BUSINESS_NAME_TEXT = $businessNameLabel.text();\r\n const REQUIRED_BUSINESS_NAME_TEXT = \"Business Name\";\r\n\r\n const addressAutoCompleteUrl = window.location.origin + \"/customers/address-autocomplete\";\r\n const addressVerifyUrl = window.location.origin + \"/customers/address-verify\";\r\n\r\n const verifyPrimaryAddressModalTitle = \"Verify Primary Shipping Address\";\r\n const verifySecondaryAddressModalTitle = \"Verify Business 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 let secondaryAddressValidated = false;\r\n\r\n //#endregion\r\n\r\n //#region Address Validation\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 * 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 * Event handler for Validating 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 return;\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 * Event handler for Validating the secondary address.\r\n * @returns {void}\r\n */\r\n function validateSecondaryAddress() {\r\n secondaryAddressValidated = false;\r\n $secondaryMelissaAddressKey.val(\"\");\r\n $secondaryLatitude.val(\"\");\r\n $secondaryLongitude.val(\"\");\r\n\r\n if ($primaryAddressSameAsBusiness.is(\":checked\")) {\r\n return;\r\n }\r\n\r\n // Check for any invalid elements in the address.\r\n let hasInvalidInputs = false;\r\n\r\n $secondaryAddressContainer.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 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 return;\r\n }\r\n });\r\n\r\n if (hasInvalidInputs) {\r\n return;\r\n }\r\n\r\n const address = getAddressFromForm($secondaryAddressContainer);\r\n\r\n // Check for any missing properties.\r\n const hadMissingAddressParts = (address.addressLine1 ?? \"\") === \"\"\r\n || (address.postalCode ?? \"\") === \"\"\r\n || (address.stateProvince ?? \"\") === \"\"\r\n || (address.city ?? \"\") === \"\"\r\n || (address.county ?? \"\") === \"\";\r\n\r\n if (hadMissingAddressParts) {\r\n return;\r\n }\r\n\r\n $secondaryAddressValidationOverride.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 verifySecondaryAddressModalTitle,\r\n address,\r\n newAddress => setAddressFormSection($secondaryAddressContainer, newAddress),\r\n () => $secondaryAddressValidationOverride.prop(\"checked\", true),\r\n codedAddress => {\r\n setAddressFormSection($secondaryAddressContainer, codedAddress);\r\n $secondaryAddressValidationOverride.prop(\"checked\", false);\r\n }\r\n )\r\n .then(() => {\r\n secondaryAddressValidated = true;\r\n return secondaryAddressValidated;\r\n })\r\n .catch(error => {\r\n secondaryAddressValidated = false;\r\n $secondaryMelissaAddressKey.val(\"\");\r\n $secondaryLatitude.val(\"\");\r\n $secondaryLongitude.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 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 * 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 // Verify that at least one CodedAddress in the response has a\r\n // valid melissaAddressKey.\r\n const missingMelissaAddressKey = verificationResponse.CodedAddresses.every(\r\n x => (x.melissaAddressKey ?? \"\").trim() === \"\"\r\n );\r\n\r\n if (missingMelissaAddressKey) {\r\n response.hasErrors = true;\r\n response.error = \"Unable to determine if address is deliverable.\";\r\n }\r\n\r\n // Address was validated but detected some issues.\r\n let hasInvalidCodes = verificationResponse.CodedAddresses.some(\r\n x => x.melissaDataResults?.some(\r\n y => doesMelissaDataResultHaveError(y)\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 // @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 lastFocusedInputEl = $(\":focus\")[0];\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(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 lastFocusedInputEl?.focus();\r\n return;\r\n }\r\n\r\n onSelectedAddressFn(address);\r\n resolve();\r\n lastFocusedInputEl?.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 if ($addressContainer === null || $addressContainer === undefined || $addressContainer.length === 0) {\r\n throw new Error(\"The address container cannot be null/undefind/empty.\");\r\n }\r\n\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 // Only validate when the following is true.\r\n // The user has \"touched\" all required inputs.\r\n /** @type {CodeAddressKey[]} */\r\n const requiredKeys = [\"addressLine1\", \"city\", \"stateProvince\", \"postalCode\", \"county\"];\r\n\r\n for (let key of requiredKeys) {\r\n const requiredKeyHasValue = address[key] !== \"\";\r\n\r\n if (!requiredKeyHasValue) {\r\n const message = `Required key \"${key}\" was empty string. Skipping validating the address.`;\r\n return Promise.reject(message);\r\n }\r\n }\r\n\r\n // If here then the user has entered all of the required fields.\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 } else if ($primaryAddressSameAsBusiness.is(\":checked\")) {\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(() => {\r\n primaryAddressValidated = true;\r\n return primaryAddressValidated;\r\n })\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 * A function which conditionally shows suggested addresses modal for the\r\n * secondary 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 conditionallyValidateSecondaryAddressAsync() {\r\n if (secondaryAddressValidated) {\r\n return Promise.resolve(true);\r\n }\r\n\r\n let userEnteredAddress = getAddressFromForm($secondaryAddressContainer);\r\n\r\n // Check for any missing properties.\r\n const hadMissingAddressParts = (userEnteredAddress.addressLine1 ?? \"\") === \"\"\r\n || (userEnteredAddress.postalCode ?? \"\") === \"\"\r\n || (userEnteredAddress.stateProvince ?? \"\") === \"\"\r\n || (userEnteredAddress.city ?? \"\") === \"\"\r\n || (userEnteredAddress.county ?? \"\") === \"\";\r\n\r\n const isSecondaryAddressRequired = $intendedUseOrderingForPatients.is(\":checked\");\r\n // If missing properties and not required, do not validate.\r\n if (hadMissingAddressParts && !isSecondaryAddressRequired) {\r\n return Promise.resolve(true);\r\n } else if (hadMissingAddressParts && isSecondaryAddressRequired) {\r\n return Promise.reject(\"Missing parts of the secondary address.\");\r\n }\r\n\r\n $secondaryAddressValidationOverride.prop(\"checked\", false);\r\n\r\n return showValidationModalForAddressIfNeededAsync(\r\n verifySecondaryAddressModalTitle,\r\n userEnteredAddress,\r\n newAddress => setAddressFormSection($secondaryAddressContainer, newAddress),\r\n () => $secondaryAddressValidationOverride.prop(\"checked\", true),\r\n codedAddress => {\r\n setAddressFormSection($secondaryAddressContainer, codedAddress);\r\n $secondaryAddressValidationOverride.prop(\"checked\", false);\r\n }\r\n )\r\n .then(() => {\r\n secondaryAddressValidated = true;\r\n return secondaryAddressValidated;\r\n })\r\n .catch(error => {\r\n // Short circuit if the user dismisses the modal or some other\r\n // error.\r\n secondaryAddressValidated = false;\r\n $secondaryMelissaAddressKey.val(\"\");\r\n $secondaryLatitude.val(\"\");\r\n $secondaryLongitude.val(\"\");\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 // @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: 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 // 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\r\n // NOTE: False shows the validation, true does not\r\n // @ts-ignore\r\n jQuery.validator.addMethod(\"sp_businessname\", function (value, element, params) {\r\n if (this.optional(element) == true) {\r\n return true;\r\n }\r\n if (value.trim().length <= 0) {\r\n $(element).val($(element).val().trim());\r\n return true;\r\n }\r\n\r\n return true;\r\n }, \"Business Name must not start with a space.\");\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 // 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) == true) {\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.find(\".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 // 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 const alphaAndDashPeriodPattern = \"^[a-z-\\\\.'\\\\s]*$\";\r\n const alphaNumericAndAmpersandPeriodDashPattern = \"^[a-z0-9-_\\\\.&\\\\s']*$\";\r\n const alphaNumericPatternAndSpace = \"^[a-z0-9\\\\s]*$\";\r\n const alphaNumericPatternAndPoundDotSpace = \"^[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 BusinessName: {\r\n required: element => {\r\n // Intended use\r\n return $intendedUseOrderingForPatients.is(\":checked\");\r\n },\r\n maxlength: 50,\r\n sp_server_message: true,\r\n sp_positive_pattern: {\r\n positivePattern: alphaNumericAndAmpersandPeriodDashPattern,\r\n },\r\n sp_businessname: {\r\n businessName: \"#BusinessName\",\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_primaryphonenumber: {\r\n primaryphonenumber: \"#PrimaryPhoneNumber\",\r\n },\r\n sp_server_message: true,\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 // Intended Usage\r\n IntendedUse: {\r\n required: true,\r\n sp_server_message: true,\r\n },\r\n\r\n // Primary Shipping Address\r\n PrimaryAddressLine1: {\r\n required: element => !$primaryAddressSameAsBusiness.is(\":checked\"),\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: element => !$primaryAddressSameAsBusiness.is(\":checked\"),\r\n maxlength: 5,\r\n sp_postal_code: true,\r\n sp_server_message: true,\r\n },\r\n PrimaryCity: {\r\n required: element => !$primaryAddressSameAsBusiness.is(\":checked\"),\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: element => !$primaryAddressSameAsBusiness.is(\":checked\"),\r\n sp_server_message: true,\r\n },\r\n PrimaryCounty: {\r\n required: element => !$primaryAddressSameAsBusiness.is(\":checked\"),\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\r\n // Business Address\r\n BusinessAddressIdenticalToPrimaryAddress: {\r\n sp_server_message: true,\r\n },\r\n SecondaryAddressLine1: {\r\n required: element => $intendedUseOrderingForPatients.is(\":checked\"),\r\n sp_server_message: true,\r\n sp_positive_pattern: {\r\n positivePattern: addressPattern,\r\n },\r\n },\r\n SecondaryAddressLine2: {\r\n sp_server_message: true,\r\n sp_positive_pattern: {\r\n positivePattern: addressPattern,\r\n },\r\n },\r\n SecondaryPostalCode: {\r\n required: element => $intendedUseOrderingForPatients.is(\":checked\"),\r\n sp_server_message: true,\r\n },\r\n SecondaryCity: {\r\n required: element => $intendedUseOrderingForPatients.is(\":checked\"),\r\n sp_server_message: true,\r\n sp_positive_pattern: {\r\n positivePattern: alphaNumericPatternAndSpace,\r\n },\r\n },\r\n SecondaryState: {\r\n required: element => $intendedUseOrderingForPatients.is(\":checked\"),\r\n sp_server_message: true,\r\n },\r\n SecondaryCounty: {\r\n required: element => $intendedUseOrderingForPatients.is(\":checked\"),\r\n sp_server_message: true,\r\n sp_positive_pattern: {\r\n positivePattern: alphaNumericPatternAndSpace,\r\n },\r\n },\r\n SecondaryAddressIsResidential: {\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 // Credentials\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 LicenseCertificateNumber: {\r\n required: 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 focuscleanup: true,\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 sp_businessname: \"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 SecondaryAddressLine1: {\r\n required: \"Street address is required\",\r\n },\r\n SecondaryPostalCode: {\r\n required: \"Zip code is required\",\r\n sp_postal_code: \"Please enter a valid Zip Code\",\r\n },\r\n SecondaryCity: {\r\n required: \"City is required\",\r\n },\r\n SecondaryState: {\r\n required: \"State is required\",\r\n },\r\n SecondaryCounty: {\r\n required: \"County 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_includesfirstnamelastname: \"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 secondaryMelissaAddressKey = ($secondaryMelissaAddressKey.val()?.toString() ?? \"\").trim();\r\n const primaryValidationOverride = $primaryAddressValidatedOverride.prop(\"checked\");\r\n const secondaryValidationOverride = $secondaryAddressValidationOverride.prop(\"checked\");\r\n\r\n if (primaryMelissaAddressKey === \"\" && !primaryValidationOverride) {\r\n $primaryAddressValidatedOverride.prop(\"checked\", true);\r\n }\r\n\r\n if (secondaryMelissaAddressKey === \"\" && !secondaryValidationOverride) {\r\n $secondaryAddressValidationOverride.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 // Update the business address to be identical to the primary address.\r\n if ($primaryAddressSameAsBusiness.is(\":checked\")) {\r\n const primaryAddress = getAddressFromForm($secondaryAddressContainer);\r\n setAddressFormSection($primaryAddressContainer, primaryAddress);\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 = $(\"#hcpRegistrationForm input:not([disabled]),#hcpRegistrationForm button:not([disabled]),#hcpRegistrationForm select:not([disabled]),#hcpRegistrationForm textarea:not([disabled])\");\r\n\r\n $elements\r\n .prop(\"readonly\", 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 const $elements = $(\"#hcpRegistrationForm *[data-unblock]\");\r\n\r\n $elements\r\n .prop(\"readonly\", 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,#SecondaryAddressLine1,#SecondaryPostalCode\").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 const isPrimaryAddress = $addressSection.is(\".primary-address-container\");\r\n\r\n if (isPrimaryAddress) {\r\n validatePrimaryAddress();\r\n } else {\r\n validateSecondaryAddress();\r\n }\r\n\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 const isPrimaryAddress = $addressSection.is(\".primary-address-container\");\r\n\r\n if (isPrimaryAddress) {\r\n // primaryAddressValidated = true;\r\n validatePrimaryAddress();\r\n } else {\r\n // secondaryAddressValidated = true;\r\n validateSecondaryAddress();\r\n }\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 // Hides/shows the business/secondary address when (un)checking the \r\n // \"Business address is same as shipping address\" checkbox.\r\n $primaryAddressSameAsBusiness.on(\"change\", function (e) {\r\n const isChecked = $(this).is(\":checked\");\r\n\r\n if (isChecked) {\r\n $primaryAddressContainer.addClass(\"d-none\");\r\n } else {\r\n $primaryAddressContainer.removeClass(\"d-none\");\r\n }\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 // Checks the validatity of the business name input when the user changes\r\n // any of the intented uses inputs.\r\n $intendedUses.on(\"change\", function (evt) {\r\n // @ts-ignore\r\n $businessName.valid();\r\n\r\n if ($intendedUseOrderingForPatients.is(\":checked\")) {\r\n $businessNameLabel.text(REQUIRED_BUSINESS_NAME_TEXT);\r\n } else {\r\n $businessNameLabel.text(OPTIONAL_BUSINESS_NAME_TEXT);\r\n }\r\n });\r\n\r\n // This checks that the business/secondary address inputs are valid after\r\n // the user changes the checkbox for \"Business address is same as primary\"\r\n // checkbox or the \"Ordering for Patients\" intended use radio button.\r\n $(\"#BusinessAddressIdenticalToPrimaryAddress,[name='IntendedUse']\").on(\"change\", function (evt) {\r\n $secondaryAddressContainer.find(\"input,select\").each(function () {\r\n const $this = $(this);\r\n\r\n if ($this.attr(\"data-dirty\") === \"true\") {\r\n // @ts-ignore\r\n $this.valid();\r\n }\r\n });\r\n });\r\n\r\n // This clears out any stored server validation messages whenever any of\r\n // the inputs change.\r\n $allFormInputs.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 // Perform address validation after the user has entered last required\r\n // secondary address input. Ignore the address-line-1 and postal code so it\r\n // does not conflict with the auto-complete handler.\r\n $secondaryAddressContainer.find(\"input:not(#SecondaryAddressIsResidential):not(.address-line-1):not(.postal-code),select\").on(\"change\", function (evt) {\r\n validateSecondaryAddress();\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 // Clear out all server validation messages.\r\n const serverValidationMessagesKeys = Object.keys(serverValidationMessages);\r\n\r\n for (let key of serverValidationMessagesKeys) {\r\n delete serverValidationMessages[key];\r\n }\r\n\r\n // Set the primary address to match the businses address if the\r\n // checkbox making them the same is checked.\r\n if ($primaryAddressSameAsBusiness.is(\":checked\")) {\r\n const businessAddress = getAddressFromForm($secondaryAddressContainer);\r\n setAddressFormSection($primaryAddressContainer, businessAddress);\r\n }\r\n\r\n blockUI(true);\r\n\r\n setTimeout(function () {\r\n conditionallyValidatePrimaryAddressAsync()\r\n .then(() => conditionallyValidateSecondaryAddressAsync())\r\n .then(() => fetch(generateCreateAccountRequest()))\r\n .then(response => {\r\n if (response.ok) {\r\n // Emit the GA4 event.\r\n // @ts-ignore\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 $(\"#hcpRegistrationFormErrors\").html(\"\");\r\n $(\"#hcpRegistrationFormErrorContainer\").addClass(\"d-none\");\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 secondaryMelissaAddressKey = ($secondaryMelissaAddressKey.val()?.toString() ?? \"\").trim();\r\n const primaryValidationOverride = $primaryAddressValidatedOverride.prop(\"checked\");\r\n const secondaryValidationOverride = $secondaryAddressValidationOverride.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\r\n if (secondaryMelissaAddressKey === \"\" && !secondaryValidationOverride) {\r\n // Issue with the secondary address.\r\n secondaryAddressValidated = false;\r\n $secondaryMelissaAddressKey.val(\"\");\r\n $secondaryLatitude.val(\"\");\r\n $secondaryLongitude.val(\"\");\r\n serverValidationMessages[\"SecondaryAddressLine1\"] = \"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\" && error !== \"dismissed\") {\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 $(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 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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"}