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