{"version":3,"file":"Registration2.min.js","sources":["Registration2.js"],"sourcesContent":["(function (w, $) {\n const assetId = '~/Parts/Views/User/Registration2/Registration2.min.js';\n\n if (!w.umwAssets || !w.umwAssets[assetId]) {\n console.error('No context found for ' + assetId);\n return;\n }\n\n for (let ctx of w.umwAssets[assetId]) {\n\n const handlerUrl = w.R + 'handlers/public/UserData.ashx';\n const $mainPanel = $('#' + ctx.mainPanelID);\n let regType = ctx.initialRegType;\n const labels = ctx.labels;\n const _isNewCustomer = ctx.customer && ctx.customer.IsNewCustomer;\n const _enableFullNameMode = ctx.enableFullNameMode;\n let $сontactSection;\n let $newContactUI = null;\n let $newDelivAddressSection;\n let $newDelivAddressUI = null;\n let company = null;\n const _showDeliveryAddressSection = ctx.showDeliveryAddressSection;\n const _contactFormModeIsEnabled = ctx.contactFormModeIsEnabled;\n const _deliveryAddressUserId = ctx.company ? ctx.company.UserID : (ctx.customer ? ctx.customer.UserID : 0);\n const _shouldShowContactTagify = ctx.company && ctx.thisUserId !== 2 && ctx.compactFormModeIsEnabled === true;\n const _shouldShowDeliveryAddressTagify = ctx.thisUserId !== 2 && ctx.compactFormModeIsEnabled === true && ctx.allowMultipleDelivAddresses === true;\n const _useTabs = ctx.useTabs || false;\n let contactPersonTagifyInput = null;\n let deliveryAddressTagifyInput = null;\n \n w.onload = function() {\n const registrationSuccess = sessionStorage.getItem(\"registrationSuccess\");\n if (registrationSuccess) {\n sessionStorage.removeItem(\"registrationSuccess\");\n w.PubSub.publish('notification.success', ctx.messages.registrationSuccess);\n }\n }\n\n function _processClonedHtml($clonedHtml, parentSelector) {\n // Fix unique attributes\n var targetAttr = ['id', 'for', 'name', 'data-validates-section', 'data-rule-equalto'];\n\n const currentIndex = $(parentSelector).length + 1;\n $clonedHtml.find('*').add($clonedHtml).each(function() {\n const $this = $(this);\n for (let i = 0; i < targetAttr.length; i++) {\n const currentAttr = targetAttr[i];\n const currentAttrVal = $this.attr(currentAttr);\n if (currentAttrVal) {\n $this.attr(currentAttr, currentAttrVal.replace(/^(.*)(\\d)*$/i, '$1' + currentIndex));\n }\n }\n });\n };\n\n function _validateForm(successCallback) {\n let validator = null;\n\n if (_useTabs === true) {\n\n const isCompany = regType === 'company';\n\n validator = $mainPanel.validate({\n ignore: function (index, el) {\n var el = $(el);\n\n if (el.parents('.ContactPersonSectionTemplate').length ||\n el.parents('.DeliveryAddressSectionTemplate').length ||\n el.parents('.tab-pane.hidden').length ||\n (!_isNewCustomer && el.parents('.NewCustomerOnly').length) ||\n (isCompany && el.parents('.PrivateCustomerOnly').length) ||\n (!isCompany && el.parents('.CompanyUserOnly').length) ||\n el.parents('.ContactFormModeHiddenRow').length) {\n \n return true;\n }\n\n return false;\n }\n });\n } else {\n validator = $mainPanel.validate({ ignore: ':hidden' });\n }\n\n validator.resetForm();\n const isFormValid = validator.form();\n if (isFormValid) {\n if (typeof (successCallback) === 'function') {\n successCallback.apply(this, []);\n }\n w.PubSub.publish('validation.success.registration2', validator.successList);\n } else {\n // Show default general validation error\n w.PubSub.publish('notification.error', ctx.messages.generalValidationError);\n if (_useTabs === true) {\n //Reset and hightlight tab error state at UI\n $mainPanel.find('.nav-tabs li').removeClass('has-required-fields');\n const navTabs = $mainPanel.find('.nav-tabs');\n const firstFailedInput = $(validator.errorList[0].element);\n const tabID = firstFailedInput.parents('.tab-pane').attr('id');\n const theTabHyperlinkWithErrors = navTabs.find('a[href=\"#' + tabID + '\"]');\n const theTabLiWithErrors = theTabHyperlinkWithErrors.parent('li');\n\n theTabLiWithErrors.addClass('has-required-fields');\n theTabHyperlinkWithErrors.tab('show');\n }\n }\n };\n\n function _showConfirmation(message, acceptCallback, cancelCallback) {\n const notyConfig = {\n layout: 'center',\n animation: {\n open: { height: 'toggle' },\n close: { height: 'toggle' },\n easing: 'swing',\n speed: 150\n },\n killer: true,\n modal: true,\n text: message,\n buttons: [\n {\n addClass: 'btn btn-primary',\n text: ctx.messages.yes,\n onClick: function(noty) {\n if (typeof (acceptCallback) === 'function') {\n acceptCallback.apply(this, [noty]);\n }\n noty.close();\n }\n },\n {\n addClass: 'btn btn-danger',\n text: ctx.messages.no,\n onClick: function(noty) {\n if (typeof (cancelCallback) === 'function') {\n cancelCallback.apply(this, [noty]);\n }\n noty.close();\n }\n }\n ]\n };\n\n w.noty(notyConfig);\n };\n\n function _displayProperRegTypeFields(instantly) {\n const $companySection = $mainPanel.find('.CompanySection');\n if (regType === 'company') {\n $companySection.slideDown('fast');\n\n $mainPanel.find('.ContactPersonTitle').text(labels.contactPersonInfoTitle);\n $mainPanel.find('.CompanyUserOnly' +\n (_isNewCustomer ? ':not(.ExistingCustomerOnly)' : ':not(.NewCustomerOnly)')).show();\n $mainPanel.find('.PrivateCustomerOnly').hide();\n $mainPanel.find('.DeliveryCompanyNameRow').show();\n\n $mainPanel.find('.DeliveryAddressesSectionContainer').show();\n $mainPanel.find('.ContactPersonDeliveryDescriptionRow').hide();\n\n _setTabsForCompany();\n } else if (regType === 'private') {\n if (instantly) {\n $companySection.hide();\n } else {\n $companySection.slideUp('fast');\n }\n\n $mainPanel.find('.ContactPersonTitle').text(labels.profile);\n $mainPanel.find('.PrivateCustomerOnly' +\n (_isNewCustomer ? ':not(.ExistingCustomerOnly)' : ':not(.NewCustomerOnly)')).show();\n $mainPanel.find('.CompanyUserOnly').hide();\n $mainPanel.find('.DeliveryCompanyNameRow').hide();\n\n if (!_showDeliveryAddressSection) {\n $mainPanel.find('.DeliveryAddressesSectionContainer').hide();\n $mainPanel.find('.ContactPersonDeliveryDescriptionRow').show();\n } else {\n $mainPanel.find('.ContactPersonDeliveryDescriptionRow').hide();\n }\n\n _setTabsForPrivate();\n }\n };\n\n function _setTabsForCompany() {\n if (_useTabs === false) {\n return;\n }\n\n const els = _getTabsElements();\n\n els.liTabCompany.removeClass('hidden');\n els.tabCompany.removeClass('hidden');\n\n els.liTabContact.removeClass('hidden');\n els.tabContact.removeClass('hidden');\n\n els.liTabDelivery.removeClass('hidden');\n els.tabDelivery.removeClass('hidden');\n\n const contactPersonTabName = els.tabContact.find('div[data-umw-tab-name]').data('umw-tab-name');\n if (contactPersonTabName) {\n els.liTabContact.find('[role=\"tab\"]').text(contactPersonTabName);\n }\n\n if ($(\"body\").hasClass(\"bs5\")) {\n if (els.liTabContact.find('.nav-link').hasClass('active') || els.liTabDelivery.find('.nav-link').hasClass('active')) {\n els.liTabContact.find('.nav-link').removeClass('active');\n els.tabContact.removeClass('active show');\n\n els.liTabDelivery.find('.nav-link').removeClass('active');\n els.tabDelivery.removeClass('active show');\n\n els.liTabCompany.find('.nav-link').addClass('active');\n els.tabCompany.addClass('active show');\n }\n }\n else {\n if (els.liTabContact.hasClass('active') || els.liTabDelivery.hasClass('active')) {\n els.liTabContact.removeClass('active');\n els.tabContact.removeClass('active');\n\n els.liTabDelivery.removeClass('active');\n els.tabDelivery.removeClass('active');\n\n els.liTabCompany.addClass('active');\n els.tabCompany.addClass('active');\n }\n }\n }\n\n function _setTabsForPrivate() {\n if (_useTabs === false) {\n return;\n }\n\n const els = _getTabsElements();\n\n if ($(\"body\").hasClass(\"bs5\")) {\n if (els.liTabCompany.find('.nav-link').hasClass('active') || (els.liTabDelivery.find('.nav-link').hasClass('active') && _showDeliveryAddressSection === false)) {\n \n els.liTabCompany.find('.nav-link').removeClass('active');\n els.tabCompany.removeClass('active show');\n\n els.liTabDelivery.find('.nav-link').removeClass('active');\n els.tabDelivery.removeClass('active show');\n \n els.liTabContact.find('.nav-link').addClass('active');\n els.tabContact.addClass('active show');\n }\n }\n else {\n if (els.liTabCompany.hasClass('active') || (els.liTabDelivery.hasClass('active') && _showDeliveryAddressSection === false)) {\n els.liTabCompany.removeClass('active');\n els.tabCompany.removeClass('active');\n\n els.liTabDelivery.removeClass('active');\n els.tabDelivery.removeClass('active');\n \n els.liTabContact.addClass('active');\n els.tabContact.addClass('active');\n }\n }\n\n els.liTabCompany.addClass('hidden');\n els.tabCompany.addClass('hidden');\n\n if (_showDeliveryAddressSection === false) {\n els.liTabDelivery.addClass('hidden');\n els.tabDelivery.addClass('hidden');\n }\n\n els.liTabContact.find('[role=\"tab\"]').text(labels.profile);\n }\n\n function _getTabsElements() {\n return {\n liTabCompany: $mainPanel.find('li.js-company-tab'),\n liTabContact: $mainPanel.find('li.js-contact-tab'),\n liTabDelivery: $mainPanel.find('li.js-delivery-tab'),\n tabCompany: $mainPanel.find('div.js-company-tab'),\n tabContact: $mainPanel.find('div.js-contact-tab'),\n tabDelivery: $mainPanel.find('div.js-delivery-tab')\n };\n }\n\n function _detectAndHandleRedirect(response) {\n if (typeof (response) === 'string') {\n const redirectStringPrefix = 'REDIRECT:';\n if (response.indexOf(redirectStringPrefix) === 0) {\n const redirectUrl = response.slice(redirectStringPrefix.length);\n w.location.replace(redirectUrl);\n return true;\n }\n w.PubSub.publish('notification.error', 'Unexpected server response.');\n }\n return false;\n }\n\n function _setUpPostalAreaAutoCompletion($region) {\n const relatedPostAreaInputDataKey = 'relatedPostAreaInput';\n\n const $postCodeInput = $region.find('.PostCodeInput');\n const $postAreaInput = $region.find('.PostAreaInput');\n\n const isKeyUpHandlerAlreadySetUp = $postCodeInput.data(relatedPostAreaInputDataKey);\n\n $postCodeInput.data(relatedPostAreaInputDataKey, $postAreaInput);\n\n if (isKeyUpHandlerAlreadySetUp) {\n return;\n }\n\n $postCodeInput.keyup(function() {\n const $postCodeInput = $(this);\n const postCodeVal = $postCodeInput.val().trim();\n if (postCodeVal && w.globalSettings.CountryCode === 'NO') {\n $.getPostalCodeInfo(postCodeVal,\n function(d) {\n const $postAreaInput = $postCodeInput.data(relatedPostAreaInputDataKey);\n $postAreaInput.val(d.valid ? d.result : '');\n });\n }\n });\n }\n\n function _setupToolTip($container, findSelector) {\n const $toolTipControl = $container.find(findSelector);\n\n if ($toolTipControl) {\n $toolTipControl.tooltip();\n }\n }\n\n function _displayCustomer($ui, customer) {\n var $lastNameRow = $ui.find('.ContactPersonLastNameRow');\n var isLastNameShown = $lastNameRow.length > 0;\n\n var isFullNameMode = _enableFullNameMode &&\n (isLastNameShown || customer.ECustomerID || (customer.FirstName && !customer.LastName));\n if (isFullNameMode) {\n if (isLastNameShown) {\n $lastNameRow.hide();\n $ui.find('.ContactPersonLastNameInput').val('');\n }\n\n var $firstNameLabel = $ui.find('.ContactPersonFirstNameLabel');\n $firstNameLabel.html($firstNameLabel.html().replace(ctx.firstNameText, labels.fullName));\n $firstNameLabel.removeClass('ContactPersonFirstNameLabel').addClass('ContactPersonFullNameLabel');\n } else {\n if (isLastNameShown) {\n $lastNameRow.show();\n $ui.find('.ContactPersonLastNameInput').val(customer.LastName);\n }\n }\n\n $ui.find('.ContactPersonFirstNameInput').val(customer.FirstName);\n $ui.find('.ContactPersonGenderOption input').val([customer.Gender]);\n $ui.find('.ContactPersonDateOfBirthInput').val(customer.DateOfBirth);\n $ui.find('.ContactPersonPhoneInput').val(customer.Phone);\n $ui.find('.ContactPersonMobilePhoneInput').val(customer.MobilePhone);\n if (customer.InvoiceAddress) {\n $ui.find('.InvoiceAddressInput').val(customer.InvoiceAddress.Address);\n $ui.find('.InvoiceAddress2Input').val(customer.InvoiceAddress.Address2);\n $ui.find('.InvoicePostCodeInput').val(customer.InvoiceAddress.PostCode);\n $ui.find('.InvoicePostAreaInput').val(customer.InvoiceAddress.PostArea);\n }\n $ui.find('.ContactPersonEmailInput').val(customer.Email);\n $ui.find('.js-contact-receive-newsletter').prop('checked', customer.IsNewsletterRecipient === true);\n\n if (customer.IsNewCustomer) {\n $ui.find('.NewCustomerOnly' +\n (regType === 'company' ? ':not(.PrivateCustomerOnly)' : ':not(.CompanyUserOnly)')).show();\n $ui.find('.ExistingCustomerOnly').hide();\n } else {\n $ui.find('.ExistingCustomerOnly' +\n (regType === 'company' ? ':not(.PrivateCustomerOnly)' : ':not(.CompanyUserOnly)')).show();\n $ui.find('.NewCustomerOnly').hide();\n }\n };\n\n function _readCustomer($ui) {\n const customer = $ui.data('customer');\n\n customer.FirstName = $ui.find('.ContactPersonFirstNameInput').val();\n customer.LastName = $ui.find('.ContactPersonLastNameInput').val();\n customer.Gender = $ui.find('.ContactPersonGenderOption input:checked').val() || null;\n\n customer.DateOfBirth = $ui.find('.ContactPersonDateOfBirthInput').val();\n customer.Phone = $ui.find('.ContactPersonPhoneInput').val();\n customer.MobilePhone = $ui.find('.ContactPersonMobilePhoneInput').val();\n customer.Email = $ui.find('.ContactPersonEmailInput').val();\n customer.IsNewsletterRecipient = $ui.find('.js-contact-receive-newsletter').is(':checked');\n\n if (regType === 'private') {\n customer.InvoiceAddress = {\n Address: $ui.find('.InvoiceAddressInput').val(),\n Address2: $ui.find('.InvoiceAddress2Input').val(),\n PostCode: ($ui.find('.InvoicePostCodeInput').val() || '').trim(),\n PostArea: $ui.find('.InvoicePostAreaInput').val()\n };\n }\n\n return customer;\n };\n\n function _createCustomerUI() {\n const $tmp = $сontactSection.clone(true);\n _processClonedHtml($tmp, '.ContactPersonSection');\n $tmp.removeClass('ContactPersonSectionTemplate').addClass('ContactPersonSection');\n _setUpPostalAreaAutoCompletion($tmp);\n\n const $dateTimePicker = $tmp.find('.ContactPersonDateOfBirthInput');\n $dateTimePicker.datepicker({ onClose: function() { $(this).blur(); } });\n\n $tmp.insertBefore($сontactSection);\n $tmp.show();\n return $tmp;\n };\n\n function _onNewContactEditFinished(cancelled) {\n $mainPanel.find('.ButtonCanceladdcontact').hide();\n $mainPanel.find('.ButtonAddcontact').show();\n\n if (cancelled) {\n $newContactUI.remove();\n _updateContactTagifyWhitelist(ctx.thisUserId);\n }\n $newContactUI = null;\n };\n\n function _displayCompany() {\n const $ui = $mainPanel.find('.CompanySection');\n if (!$ui.length) {\n return;\n }\n\n if (_isNewCustomer) {\n $ui.find('.ExistingCustomerOnly').hide();\n } else {\n $ui.find('.NewCustomerOnly').hide();\n }\n\n if (!company) {\n return;\n }\n\n $ui.find('.CompanyInput').val(company.Name);\n $ui.find('.CompanyNoInput').val(company.CompanyNumber);\n $ui.find('.CompanyPhoneInput').val(company.Phone);\n\n $ui.find('.InvoiceContactInput').val(company.ContactPersonName);\n $ui.find('.InvoiceAddressInput').val(company.InvoiceAddress.Address);\n $ui.find('.InvoiceAddress2Input').val(company.InvoiceAddress.Address2);\n $ui.find('.InvoicePostCodeInput').val(company.InvoiceAddress.PostCode);\n $ui.find('.InvoicePostAreaInput').val(company.InvoiceAddress.PostArea);\n $ui.find('.InvoiceEmailInput').val(company.ContactPersonEmail);\n $ui.find('.js-company-receive-newsletter').prop('checked', company.IsNewsletterRecipient === true);\n }\n\n function _readCompany() {\n const $ui = $mainPanel.find('.CompanySection');\n if (!$ui.length) {\n return;\n }\n\n if (!company)\n company = {};\n if (!company.InvoiceAddress)\n company.InvoiceAddress = {};\n\n company.Name = $ui.find('.CompanyInput').val();\n company.CompanyNumber = $ui.find('.CompanyNoInput').val();\n company.Phone = $ui.find('.CompanyPhoneInput').val();\n\n company.ContactPersonName = $ui.find('.InvoiceContactInput').val();\n company.InvoiceAddress.Address = $ui.find('.InvoiceAddressInput').val();\n company.InvoiceAddress.Address2 = $ui.find('.InvoiceAddress2Input').val();\n company.InvoiceAddress.PostCode = ($ui.find('.InvoicePostCodeInput').val() || '').trim();\n company.InvoiceAddress.PostArea = $ui.find('.InvoicePostAreaInput').val();\n company.ContactPersonEmail = $ui.find('.InvoiceEmailInput').val();\n company.IsNewsletterRecipient = $ui.find('.js-company-receive-newsletter').is(':checked');\n };\n\n function _createDeliveryAddressUI() {\n const $tmp = $newDelivAddressSection.clone(true);\n _processClonedHtml($tmp, '.DeliveryAddressSection');\n $tmp.removeClass('DeliveryAddressSectionTemplate').addClass('DeliveryAddressSection');\n _setUpPostalAreaAutoCompletion($tmp);\n _setupToolTip($tmp, '.DeliveryAddressTooltipImage');\n\n $tmp.insertBefore($newDelivAddressSection);\n $tmp.show();\n return $tmp;\n };\n\n function _displayDeliveryAddress($ui, deliveryAddress) {\n $ui.find('.DeliveryFirstNameInput').val(deliveryAddress.FirstName);\n $ui.find('.DeliveryLastNameInput').val(deliveryAddress.LastName);\n $ui.find('.DeliveryPhoneInput').val(deliveryAddress.Phone);\n $ui.find('.DeliveryEmailInput').val(deliveryAddress.EMail);\n $ui.find('.DeliveryAddressInput').val(deliveryAddress.Address);\n $ui.find('.DeliveryAddress2Input').val(deliveryAddress.Address2);\n $ui.find('.DeliveryPostCodeInput').val(deliveryAddress.PostCode);\n $ui.find('.DeliveryPostAreaInput').val(deliveryAddress.PostArea);\n $ui.find('.DeliveryCompanyInput').val(deliveryAddress.CompanyName);\n $ui.find('.DeliveryDescriptionInput').val(deliveryAddress.Description);\n\n _displayDeliveryAddressDefaultFlag($ui, deliveryAddress.IsDefault);\n }\n\n function _displayNewDeliveryAddressDefaultFlag(newDefaultDeliveryAddressId) {\n const $deliveryAddressSections = $mainPanel.find('.DeliveryAddressesSectionContainer .DeliveryAddressSection');\n $deliveryAddressSections.each(function(index, deliveryAddressSection) {\n const $addressUI = $(deliveryAddressSection);\n const address = $addressUI.data('deliveryAddress');\n if (address) {\n _displayDeliveryAddressDefaultFlag($addressUI, address.ID === newDefaultDeliveryAddressId);\n }\n });\n }\n\n function _displayDeliveryAddressDefaultFlag($ui, isDefault) {\n const $btnIsDef = $ui.find('.ButtonDefaultDeliveryAddress');\n if (isDefault)\n $btnIsDef.addClass('btn-primary');\n else\n $btnIsDef.removeClass('btn-primary');\n }\n\n function _displayDeliveryAddressDescriptionForPrivateUser($ui, deliveryAddresses) {\n if (deliveryAddresses && deliveryAddresses.length) {\n const defaultDeliveryAddresses = _.filter(deliveryAddresses,\n function(deliveryAddress) {\n return deliveryAddress.IsDefault;\n });\n\n if (defaultDeliveryAddresses && defaultDeliveryAddresses.length === 1) {\n const address = defaultDeliveryAddresses[0];\n const $deliveryDescriptionInput = $ui.find('.ContactPersonDeliveryDescriptionInput');\n $deliveryDescriptionInput.val(address.Description);\n $deliveryDescriptionInput.data('deliveryAddressID', address.ID);\n }\n }\n }\n\n function _readDeliveryAddress($delivAddressUI, $custUI) {\n let address = null;\n\n if ($custUI && $custUI.length && regType === 'private' && !_showDeliveryAddressSection) {\n address = _readDeliveryAddressForPrivateUser($custUI);\n } else if ($delivAddressUI && $delivAddressUI.length) {\n address = $delivAddressUI.data('deliveryAddress');\n address.FirstName = $delivAddressUI.find('.DeliveryFirstNameInput').val();\n address.LastName = $delivAddressUI.find('.DeliveryLastNameInput').val();\n address.Phone = $delivAddressUI.find('.DeliveryPhoneInput').val();\n address.EMail = $delivAddressUI.find('.DeliveryEmailInput').val();\n address.Address = $delivAddressUI.find('.DeliveryAddressInput').val();\n address.Address2 = $delivAddressUI.find('.DeliveryAddress2Input').val();\n address.PostCode = ($delivAddressUI.find('.DeliveryPostCodeInput').val() || '').trim();\n address.PostArea = $delivAddressUI.find('.DeliveryPostAreaInput').val();\n address.Company = $delivAddressUI.find('.DeliveryCompanyInput').val();\n address.Description = $delivAddressUI.find('.DeliveryDescriptionInput').val();\n address.IsDefault = ctx.allowMultipleDelivAddresses\n ? $delivAddressUI.find('.ButtonDefaultDeliveryAddress').hasClass('btn-primary')\n : true;\n }\n\n return address;\n };\n\n function _readDeliveryAddressForPrivateUser($custUI) {\n const address = {};\n address.FirstName = $custUI.find('.ContactPersonFirstNameInput').val();\n address.LastName = $custUI.find('.ContactPersonLastNameInput').val();\n address.Phone = $custUI.find('.ContactPersonPhoneInput').val();\n address.EMail = $custUI.find('.ContactPersonEmailInput').val();\n address.Address = $custUI.find('.InvoiceAddressInput').val();\n address.Address2 = $custUI.find('.InvoiceAddress2Input').val();\n address.PostCode = ($custUI.find('.InvoicePostCodeInput').val() || '').trim();\n address.PostArea = $custUI.find('.InvoicePostAreaInput').val();\n address.IsDefault = true;\n\n const $deliveryDescriptionUI = $custUI.find('.ContactPersonDeliveryDescriptionInput');\n address.Description = $deliveryDescriptionUI.val();\n address.ID = $deliveryDescriptionUI.data('deliveryAddressID');\n\n return address;\n }\n\n function _onNewDelivAddressEditFinished(cancelled) {\n $mainPanel.find('.ButtonCanceladddelivaddress').hide();\n $mainPanel.find('.ButtonAdddeliveryaddress').show();\n\n if (cancelled) {\n $newDelivAddressUI.remove();\n _updateDeliveryAddressesTagifyWhitelist(_getDefaultOrFirstDeliveryAddressId());\n }\n $newDelivAddressUI = null;\n }\n\n function _redirectToReturnUrlIfPresent(redirectUrl) {\n let isBeingRedirect = false;\n\n if (redirectUrl) {\n w.location.replace(redirectUrl);\n isBeingRedirect = true;\n }\n\n return isBeingRedirect;\n }\n\n function _setupShowNewsletterFlags() {\n if (!ctx.shouldShowNewsletterFlag) {\n $mainPanel.find('.js-company-newsletter-row').hide();\n $mainPanel.find('.js-contact-newsletter-row').hide();\n }\n }\n\n function _setupDateOfBirthValidator() {\n $.validator.addMethod(\n \"dateOfBirthMin1890\",\n function(value, element) {\n const inst = $.datepicker._getInst(element);\n const dateFormat = $.datepicker._get(inst, 'dateFormat');\n try {\n const date = $.datepicker.parseDate(dateFormat, value, $.datepicker._getFormatConfig(inst));\n return date >= new Date(1890, 0, 1);\n } catch (e) {\n return false;\n }\n },\n ctx.messages.dateOfBirthValidationError\n );\n }\n\n function _setupRegistrationType() {\n _displayProperRegTypeFields(true);\n\n const $rbtns = $mainPanel.find('.RegistrationTypeOption input:radio');\n\n $rbtns.change(function() {\n regType = $rbtns.filter(':checked').val();\n _displayProperRegTypeFields();\n _setupContactFormMode();\n });\n };\n\n function _setupCompanySection() {\n company = ctx.company;\n\n _displayCompany();\n\n const $ui = $mainPanel.find('.CompanySection');\n if ($ui.length) {\n _setUpPostalAreaAutoCompletion($ui);\n }\n };\n\n function _setupContactAndDeliveryAddressTagify() {\n const $contactCont = $mainPanel.find('.ContactPersonsSectionContainer');\n const $contactPersonInput = $contactCont.find('.ContactPersonInput');\n\n if ($contactPersonInput) {\n if (_shouldShowContactTagify) {\n contactPersonTagifyInput = new w.Tagify($contactPersonInput[0],\n {\n mode: 'select',\n dropdown: {\n maxItems: 100,\n highlightFirst: true,\n searchKeys: ['FirstName', 'LastName', 'Email']\n },\n templates: {\n dropdownItem: function (tagData) {\n return tagData.IsNewCustomer === true && !tagData.UserID\n ? `