{"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 ? `
\n ${labels.newContact}\n
`\n : `
\n ${tagData.FirstName} ${tagData.LastName} - ${tagData.Email\n }\n
`;\n },\n },\n });\n\n contactPersonTagifyInput.on('change',\n function (evt) {\n if (!evt || !evt.detail || !evt.detail.value) {\n console.warn(\n 'Contacts tagify selector: Did not find data in the event at evt.detail.value');\n return;\n }\n\n const selectedContacts = JSON.parse(evt.detail.value);\n const selectedContactUserId = selectedContacts[0].UserID;\n\n _setVisibleContactContainer(selectedContactUserId);\n });\n\n _updateContactTagifyWhitelist(ctx.thisUserId);\n } else {\n $contactPersonInput.parent().hide();\n }\n }\n\n if (_shouldShowDeliveryAddressTagify) {\n\n const $addressesCont = $mainPanel.find('.DeliveryAddressesSectionContainer');\n const $addressesInput = $addressesCont.find('.DeliveryAddressesInput');\n\n if ($addressesInput) {\n\n deliveryAddressTagifyInput = new w.Tagify($addressesInput[0],\n {\n mode: 'select',\n dropdown: {\n maxItems: 100,\n highlightFirst: true,\n searchKeys: [\n 'CompanyName', 'FirstName', 'LastName', 'Address', 'Address2', 'PostCode', 'PostArea', 'Description'\n ]\n },\n templates: {\n dropdownItem: function(tagData) {\n return !tagData.ID\n ? `
\n ${labels.newDeliveryAddress}\n
`\n : `
\n ${_getDeliveryAddressSummary(tagData)}\n
`;\n },\n },\n });\n\n deliveryAddressTagifyInput.on('change',\n function(evt) {\n if (!evt || !evt.detail || !evt.detail.value) {\n console.warn(\n 'Delivery addresses tagify selector: Did not find data in the event at evt.detail.value');\n return;\n }\n\n const selectedAddresses = JSON.parse(evt.detail.value);\n const selectedAddressID = selectedAddresses[0].ID;\n\n _setVisibleDeliveryAddressContainer(selectedAddressID);\n });\n\n _updateDeliveryAddressesTagifyWhitelist(_getDefaultOrFirstDeliveryAddressId());\n }\n }\n }\n\n function _getContactsFromContainers() {\n const $cont = $mainPanel.find('.ContactPersonsSectionContainer');\n const $contactConts = $cont.find('.ContactPersonSection');\n\n if (!$contactConts || $contactConts.length <= 0) {\n return null;\n }\n\n const contacts = [];\n\n $contactConts.each((_, contactCont) => {\n const contact = $(contactCont).data('customer');\n contacts.push(contact);\n });\n\n return contacts;\n }\n\n function _getContactsFromContainersWithTagifyWhitelistValue() {\n const contacts = _getContactsFromContainers();\n\n if (!contacts) {\n return null;\n }\n\n contacts.forEach(contact => {\n if (contact.IsNewCustomer === true && !contact.UserID) {\n contact['value'] = labels.newContact;\n } else {\n contact['value'] = `${contact.FirstName} ${contact.LastName} - ${contact.Email}`;\n }\n });\n\n return contacts;\n }\n \n function _findPreSelectContactById(contacts, preselectContactId) {\n if (!contacts) {\n return null;\n }\n\n let preselectContact = null;\n\n contacts.forEach(contact => {\n if (!isNaN(preselectContactId) &&\n (preselectContactId === 0 && contact.IsNewCustomer === true)\n || contact.UserID === preselectContactId) {\n\n preselectContact = contact;\n }\n });\n\n return preselectContact;\n }\n\n function _updateContactTagifyWhitelist(preselectContactId) {\n\n if (_shouldShowContactTagify === false) {\n return;\n }\n\n const contacts = _getContactsFromContainersWithTagifyWhitelistValue();\n\n if (contacts && contacts.length > 0) {\n $mainPanel.find('.ContactPersonSelector').show();\n $mainPanel.find('.js-no-contacts').addClass('hidden');\n contactPersonTagifyInput.settings.whitelist = contacts;\n\n let preselectContact = _findPreSelectContactById(contacts, preselectContactId);\n if (preselectContact) {\n contactPersonTagifyInput.removeAllTags();\n contactPersonTagifyInput.addTags([preselectContact]);\n }\n } else {\n $mainPanel.find('.ContactPersonSelector').hide();\n $mainPanel.find('.js-no-contacts').removeClass('hidden'); \n }\n }\n\n function _setVisibleContactContainer(contactUserId) {\n if (isNaN(contactUserId) || contactUserId < 0) {\n return;\n }\n\n const $contactCont = $mainPanel.find('.ContactPersonsSectionContainer');\n const $contactConts = $contactCont.find('.ContactPersonSection');\n const $selectContactCont = $($contactConts.get().find((c) => $(c).data('customer').UserID === contactUserId));\n\n if ($selectContactCont) {\n $contactConts.hide();\n $selectContactCont.show();\n }\n else {\n console.warn(`Contact container matching user Id ${contactUserId} was not found.`);\n }\n }\n\n function _getDeliveryAddressSummary(address) {\n const name = (address.CompanyName ? address.CompanyName : `${address.FirstName} ${address.LastName}`).trim();\n\n const elements = [];\n\n if (name && name.length > 0) {\n elements.push(name);\n }\n\n const addr = address.Address;\n if (addr && addr.trim().length > 0) {\n elements.push(addr.trim());\n }\n\n const post = address.PostCode + ' ' + address.PostArea;\n if (post && post.trim().length > 0) {\n elements.push(post.trim());\n }\n\n return elements.join(', ');\n }\n\n function _getDeliveryAddressesFromContainers() {\n const $cont = $mainPanel.find('.DeliveryAddressesSectionContainer');\n const $addressConts = $cont.find('.DeliveryAddressSection');\n\n if (!$addressConts || $addressConts.length <= 0) {\n return null;\n }\n\n const deliveryAddresses = [];\n\n $addressConts.each((_, deliveryAddressCont) => {\n const deliveryAddress = $(deliveryAddressCont).data('deliveryAddress');\n deliveryAddresses.push(deliveryAddress);\n });\n\n return deliveryAddresses;\n }\n\n function _getDefaultOrFirstDeliveryAddressId() {\n const deliveryAddresses = _getDeliveryAddressesFromContainers();\n\n if (!deliveryAddresses || deliveryAddresses.length <= 0) {\n return null;\n }\n\n return (deliveryAddresses.find(a => a.IsDefault) || deliveryAddresses[0]).ID;\n }\n\n function _setVisibleDeliveryAddressContainer(deliveryAddressId) {\n if (isNaN(deliveryAddressId) || deliveryAddressId < 0) {\n return;\n }\n\n const $addressesCont = $mainPanel.find('.DeliveryAddressesSectionContainer');\n const $addressConts = $addressesCont.find('.DeliveryAddressSection');\n const $selectAddressCont = $($addressConts.get().find((d) => $(d).data('deliveryAddress').ID === deliveryAddressId));\n\n if ($selectAddressCont) {\n $addressConts.hide();\n $selectAddressCont.show();\n }\n else {\n console.warn(`Delivery address container matching Id ${deliveryAddressId} was not found.`);\n }\n }\n\n function _getDeliveryAddressesFromContainersWithTagifyWhitelistValue() {\n const deliveryAddresses = _getDeliveryAddressesFromContainers();\n\n if (!deliveryAddresses) {\n return null;\n }\n\n deliveryAddresses.forEach(deliveryAddress => {\n if (!deliveryAddress.ID) {\n deliveryAddress['value'] = labels.newDeliveryAddress;\n } else {\n let addressValue = _getDeliveryAddressSummary(deliveryAddress);\n if ((!addressValue || !addressValue.length) && deliveryAddress.IsDefault === true) {\n addressValue = labels.defaultDeliveryAddress;\n }\n\n deliveryAddress['value'] = addressValue;\n }\n });\n\n return deliveryAddresses.filter(d => d.value);\n }\n\n function _findPreSelectDeliveryAddressById(deliveryAddresses, preselectDeliveryAddressId) {\n if (!deliveryAddresses || isNaN(preselectDeliveryAddressId)) {\n return null;\n }\n\n let preselectDeliveryAddress = null;\n\n deliveryAddresses.forEach(address => {\n if ((preselectDeliveryAddressId === 0 && address.ID === 0)\n || address.ID === preselectDeliveryAddressId) {\n\n preselectDeliveryAddress = address;\n }\n });\n\n return preselectDeliveryAddress;\n }\n\n function _updateDeliveryAddressesTagifyWhitelist(preselectDeliveryAddressId) {\n\n if (_shouldShowDeliveryAddressTagify === false) {\n return;\n }\n\n const deliveryAddresses = _getDeliveryAddressesFromContainersWithTagifyWhitelistValue();\n \n if (deliveryAddresses && deliveryAddresses.length > 0) {\n deliveryAddressTagifyInput.settings.whitelist = deliveryAddresses;\n\n let preselectDeliveryAddress = _findPreSelectDeliveryAddressById(deliveryAddresses, preselectDeliveryAddressId);\n if (preselectDeliveryAddress) {\n deliveryAddressTagifyInput.removeAllTags();\n deliveryAddressTagifyInput.addTags([preselectDeliveryAddress]);\n }\n }\n }\n\n function _setupCustomerSection() {\n $mainPanel.find('.ButtonDeletecustomer').click(function(evt) {\n evt.preventDefault();\n\n const $custUI = $(this).closest('.ContactPersonSection');\n\n _showConfirmation(ctx.messages.confirmDeleteContact,\n function() {\n const cust = $custUI.data('customer');\n\n $.blockUI({ message: null });\n $.ajax({\n url: handlerUrl,\n method: 'POST',\n data: { action: 'DeleteContact', Users: '[' + cust.UserID + ']' }\n })\n .always(function() {\n $.unblockUI();\n })\n .done(function(result) {\n if (_detectAndHandleRedirect(result)) {\n return;\n }\n\n $custUI.remove();\n\n if (_shouldShowContactTagify) {\n _updateContactTagifyWhitelist(ctx.thisUserId);\n }\n\n w.PubSub.publish('notification.success', ctx.messages.deletedSuccessfully);\n })\n .fail(function(jqXHR, textStatus) {\n if (typeof (jqXHR.responseJSON) === 'object' && jqXHR.responseJSON.Message) {\n w.PubSub.publish('notification.error', jqXHR.responseJSON.Message);\n } else {\n w.PubSub.publish('notification.error', textStatus);\n }\n });\n });\n });\n $mainPanel.find('.ButtonResetpassword').click(function(evt) {\n evt.preventDefault();\n\n const $custUI = $(this).closest('.ContactPersonSection');\n\n _showConfirmation(ctx.messages.confirmResetPassword,\n function() {\n const cust = $custUI.data('customer');\n\n $.blockUI({ message: null });\n $.ajax({\n url: handlerUrl,\n method: 'POST',\n data: { action: 'ResetPassword', UserID: cust.UserID }\n })\n .always(function() {\n $.unblockUI();\n })\n .done(function(result) {\n if (_detectAndHandleRedirect(result)) {\n return;\n }\n w.PubSub.publish('notification.success', ctx.messages.newPasswordEmailSent);\n })\n .fail(function(jqXHR, textStatus) {\n if (typeof (jqXHR.responseJSON) === 'object' && jqXHR.responseJSON.Message) {\n w.PubSub.publish('notification.error', jqXHR.responseJSON.Message);\n } else {\n w.PubSub.publish('notification.error', textStatus);\n }\n });\n });\n });\n $mainPanel.find('.ButtonAddcontact').click(function(evt) {\n evt.preventDefault();\n\n $newContactUI = _createCustomerUI();\n const newContact = {\n FirstName: '',\n LastName: '',\n Gender: '',\n DateOfBirth: '',\n Phone: '',\n MobilePhone: '',\n Email: '',\n DeliveryAddresses: [],\n IsNewCustomer: true\n };\n $newContactUI.data('customer', newContact);\n\n // If compact mode, hide other contacts\n if (_shouldShowContactTagify) {\n const $contactConts = $newContactUI.parent().find('.ContactPersonSection').not($newContactUI);\n $contactConts.hide();\n $newContactUI.show();\n _updateContactTagifyWhitelist(0);\n }\n\n _displayCustomer($newContactUI, newContact);\n\n $(this).hide();\n $mainPanel.find('.ButtonCanceladdcontact').show();\n });\n $mainPanel.find('.ButtonCanceladdcontact').click(function(evt) {\n evt.preventDefault();\n\n _onNewContactEditFinished(true);\n });\n\n const $cont = $mainPanel.find('.ContactPersonsSectionContainer');\n\n // Hide ContactPersonSection as blank\n $сontactSection = $cont.find('.ContactPersonSectionTemplate');\n $сontactSection.hide();\n const $dateTimePicker = $сontactSection.find('.ContactPersonDateOfBirthInput');\n $dateTimePicker.removeAttr('id');\n $dateTimePicker.removeClass('dateselector hasDatepicker');\n\n if (ctx.customer) {\n const customer = ctx.customer;\n const $customerUi = _createCustomerUI();\n $сontactSection.find('.PersonalData').remove(); // remove personal data section to not be displayed for other contacts\n\n $customerUi.data('customer', customer);\n\n _displayCustomer($customerUi, customer);\n _displayDeliveryAddressDescriptionForPrivateUser($customerUi, ctx.deliveryAddresses);\n }\n \n if (ctx.contacts) {\n const loggedInContact = ctx.contacts.find((c) => c.UserID === ctx.thisUserId);\n\n if (loggedInContact) {\n const cust = loggedInContact;\n const $contactUi = _createCustomerUI();\n $сontactSection.find('.PersonalData').remove();\n $contactUi.data('customer', cust);\n _displayCustomer($contactUi, cust);\n }\n\n for (let i = 0; i < ctx.contacts.length; i++) {\n const cust = ctx.contacts[i];\n if (!loggedInContact || cust !== loggedInContact) {\n const $contactUi = _createCustomerUI();\n $contactUi.data('customer', cust);\n $contactUi.find('.ButtonDeletecustomer').removeClass(\"hidden\");\n _displayCustomer($contactUi, cust);\n\n if (_shouldShowContactTagify) {\n if (!loggedInContact && i === 0) {\n $contactUi.show();\n } else {\n $contactUi.hide();\n }\n }\n }\n }\n }\n }\n\n function _setupDeliveryAddressesSection() {\n $mainPanel.find('.ButtonAdddeliveryaddress').click(function(evt) {\n evt.preventDefault();\n\n $newDelivAddressUI = _createDeliveryAddressUI();\n const newAddress = { ID: 0, Address: '', PostCode: '', PostArea: '' };\n newAddress.UserID = _deliveryAddressUserId;\n $newDelivAddressUI.data('deliveryAddress', newAddress);\n _displayDeliveryAddress($newDelivAddressUI, newAddress);\n\n // If compact mode, hide other delivery addresses\n if (_shouldShowDeliveryAddressTagify === true) {\n const $addressesConts = $newDelivAddressUI.parent().find('.DeliveryAddressSection');\n $addressesConts.hide();\n $newDelivAddressUI.show();\n _updateDeliveryAddressesTagifyWhitelist(0);\n }\n\n $(this).hide();\n $mainPanel.find('.ButtonCanceladddelivaddress').show();\n });\n $mainPanel.find('.ButtonCanceladddelivaddress').click(function(evt) {\n evt.preventDefault();\n\n _onNewDelivAddressEditFinished(true);\n });\n $mainPanel.find('.ButtonDeletedeliveryaddress').click(function(evt) {\n evt.preventDefault();\n\n const $ui = $(this).closest('.DeliveryAddressSection');\n const address = $ui.data('deliveryAddress');\n\n _showConfirmation(ctx.messages.confirmDeleteDelivAddress,\n function() {\n $.blockUI({ message: null });\n $.ajax({\n url: handlerUrl,\n method: 'POST',\n data: {\n action: 'DeleteDeliveryAddress',\n customer: { DeliveryAddress: { ID: address.ID, UserID: address.UserID } }\n }\n })\n .always($.unblockUI)\n .done(function(result) {\n if (_detectAndHandleRedirect(result)) {\n return;\n }\n\n $ui.remove();\n\n if (_shouldShowDeliveryAddressTagify) {\n _updateDeliveryAddressesTagifyWhitelist(_getDefaultOrFirstDeliveryAddressId());\n }\n \n w.PubSub.publish('notification.success', ctx.messages.deletedSuccessfully);\n _displayNewDeliveryAddressDefaultFlag(result.defaultAddressId);\n })\n .fail(function(jqXHR, textStatus) {\n if (typeof (jqXHR.responseJSON) === 'object' && jqXHR.responseJSON.Message) {\n w.PubSub.publish('notification.error', jqXHR.responseJSON.Message);\n } else {\n w.PubSub.publish('notification.error', textStatus);\n }\n });\n });\n });\n $mainPanel.find('.ButtonDefaultDeliveryAddress').click(function(evt) {\n evt.preventDefault();\n\n const $ui = $(this).closest('.DeliveryAddressSection');\n const address = $ui.data('deliveryAddress');\n\n $.blockUI({ message: null });\n $.ajax({\n url: handlerUrl,\n method: 'POST',\n data: {\n action: 'SetDefaultDeliveryAddress',\n customer: { DeliveryAddress: { ID: address.ID, UserID: address.UserID } }\n }\n })\n .always($.unblockUI)\n .done(function(result) {\n if (_detectAndHandleRedirect(result)) {\n return;\n }\n _displayNewDeliveryAddressDefaultFlag(address.ID);\n })\n .fail(function(jqXHR, textStatus) {\n if (typeof (jqXHR.responseJSON) === 'object' && jqXHR.responseJSON.Message) {\n w.PubSub.publish('notification.error', jqXHR.responseJSON.Message);\n } else {\n w.PubSub.publish('notification.error', textStatus);\n }\n });\n });\n\n function firstTimeShowDeliveryAddresses(addresses) {\n const defaultOrFirstId = (addresses.find(a => a.IsDefault) || addresses[0]).ID;\n\n for (let i = 0; i < addresses.length; i++) {\n const address = addresses[i];\n address.UserID = _deliveryAddressUserId;\n const $ui = _createDeliveryAddressUI();\n $ui.data('deliveryAddress', address);\n if (!_isNewCustomer) {\n $ui.find('.ButtonDeletedeliveryaddress').show();\n $ui.find('.ButtonDefaultDeliveryAddress').show();\n }\n _displayDeliveryAddress($ui, address);\n\n if (_shouldShowDeliveryAddressTagify) {\n if (address.ID === defaultOrFirstId) {\n $ui.show();\n } else {\n $ui.hide();\n }\n }\n }\n }\n\n const $ui = $mainPanel.find('.DeliveryAddressesSectionContainer .DeliveryAddressSectionTemplate');\n $newDelivAddressSection = $ui;\n $newDelivAddressSection.hide();\n\n if (ctx.deliveryAddresses)\n firstTimeShowDeliveryAddresses(ctx.deliveryAddresses);\n }\n\n function _setupRegisterButton() {\n $mainPanel.find('.ButtonRegisternewcustomer').click(function(evt) {\n evt.preventDefault();\n\n _validateForm(function() {\n if (!_isNewCustomer) {\n return;\n }\n\n let comp = null;\n if (regType === 'company') {\n _readCompany();\n comp = company;\n }\n const $custUI = $mainPanel.find('.ContactPersonsSectionContainer .ContactPersonSection');\n const cust = _readCustomer($custUI);\n cust.password = $custUI.find('.ContactPersonPasswordInput').val();\n\n const $delivAddressUI = $mainPanel.find('.DeliveryAddressesSectionContainer .DeliveryAddressSection');\n cust.DeliveryAddress = _readDeliveryAddress($delivAddressUI, $custUI);\n\n $.blockUI({ message: null });\n if (_contactFormModeIsEnabled) {\n $.ajax({\n url: handlerUrl,\n method: 'POST',\n data: {\n action: 'SendUserRegistrationNotification',\n regtype: regType,\n company: comp,\n customer: cust\n }\n })\n .done(function() {\n w.PubSub.publish('notification.success',\n {\n text: labels['userRegistrationRequestHasBeenSuccessfullySent'],\n timeout: 0,\n killer: true\n });\n })\n .fail(failCallback)\n .always($.unblockUI);\n } else {\n $.ajax({\n url: handlerUrl,\n method: 'POST',\n data: { action: 'RegisterNewCustomer', regtype: regType, company: comp, customer: cust }\n })\n .done(function(result) {\n let redirectUrl = result.redirectUrl || ctx.returnURL;\n const pendingApprovalStatus = 1;\n\n if (redirectUrl && result.customer.RegistrationStatus === pendingApprovalStatus) {\n const registrationRequestSentMsgId = 80067;\n redirectUrl = $.setQueryStringParam(redirectUrl,\n 'infowarnmsgid',\n registrationRequestSentMsgId);\n }\n\n if (_redirectToReturnUrlIfPresent(redirectUrl)) {\n return;\n }\n\n if (result.customer.RegistrationStatus === pendingApprovalStatus) {\n w.PubSub.publish('notification.warning',\n { text: ctx.messages.registrationRequestSent, timeout: 0, killer: true });\n } else {\n sessionStorage.setItem('registrationSuccess', 'true');\n w.location.reload(true);\n }\n })\n .fail(failCallback)\n .always($.unblockUI);\n }\n\n function failCallback(jqXHR, textStatus) {\n if (typeof (jqXHR.responseJSON) === 'object' && jqXHR.responseJSON.Message) {\n w.PubSub.publish('notification.error', jqXHR.responseJSON.Message);\n } else {\n w.PubSub.publish('notification.error', textStatus);\n }\n }\n });\n });\n };\n\n function _setupSaveButton() {\n $mainPanel.find('.ButtonSave').click(function(evt) {\n evt.preventDefault();\n\n _validateForm(function() {\n _readCompany();\n\n var customers = [];\n var $customerSections = $mainPanel.find('.ContactPersonSection');\n var isCustomerAdded = false;\n var deliveryAddresses = [];\n\n $customerSections.each(function(index, customerSection) {\n const $customerUI = $(customerSection);\n const customer = _readCustomer($customerUI);\n if (regType === 'private' && !_showDeliveryAddressSection) {\n const address = _readDeliveryAddressForPrivateUser($customerUI);\n deliveryAddresses.push({ DeliveryAddress: address });\n }\n\n if (!customer.UserID) {\n isCustomerAdded = true;\n customer.password = $customerUI.find('.ContactPersonPasswordInput').val();\n }\n\n if (company) {\n customer.CompanyUserID = company.UserID;\n }\n customers.push(customer);\n });\n\n const $deliveryAddressSections = $mainPanel.find('.DeliveryAddressesSectionContainer .DeliveryAddressSection');\n let isAddressAdded = false;\n $deliveryAddressSections.each(function(index, deliveryAddressSection) {\n const $addressUI = $(deliveryAddressSection);\n const address = _readDeliveryAddress($addressUI);\n\n if (!address.ID) {\n isAddressAdded = true;\n }\n\n deliveryAddresses.push({ DeliveryAddress: address });\n });\n\n $.blockUI({ message: null });\n $.ajax({\n url: handlerUrl,\n method: 'POST',\n data: {\n action: 'UpdateRegistrationInfo',\n company: company,\n customers: customers,\n addresses: deliveryAddresses\n }\n })\n .always(function() {\n $.unblockUI();\n\n if (isCustomerAdded) {\n _onNewContactEditFinished(false);\n }\n\n if (isAddressAdded) {\n _onNewDelivAddressEditFinished(false);\n }\n })\n .done(function(result) {\n if (_detectAndHandleRedirect(result)) {\n return;\n }\n\n company = result.company;\n _displayCompany();\n\n $customerSections.each(function(index, customerSection) {\n if (index < result.customers.length) {\n const customer = result.customers[index];\n customer.IsNewCustomer = false;\n const $customerUI = $(customerSection);\n $customerUI.data('customer', customer);\n _displayCustomer($customerUI, customer);\n\n if (regType === 'private' && !_showDeliveryAddressSection) {\n _displayDeliveryAddressDescriptionForPrivateUser($customerUI, result.addresses);\n }\n\n if (company && customer.UserID !== ctx.thisUserId) {\n $customerUI.find('.ButtonDeletecustomer').removeClass('hidden');\n }\n }\n });\n\n if (_shouldShowContactTagify === true) {\n const contacts = _getContactsFromContainers();\n let newContactUserId = contacts && contacts.length ? contacts.pop().UserID : null;\n _setVisibleContactContainer(newContactUserId);\n _updateContactTagifyWhitelist(newContactUserId);\n }\n\n $deliveryAddressSections.each(function(index, deliveryAddressSection) {\n if (index < result.addresses.length) {\n const address = result.addresses[index];\n const $addressUI = $(deliveryAddressSection);\n\n if (!address) {\n if (ctx.allowMultipleDelivAddresses) {\n $addressUI.remove();\n }\n } else {\n const initialAddress = deliveryAddresses[index];\n address.UserID = initialAddress.DeliveryAddress.UserID;\n\n $addressUI.data('deliveryAddress', address);\n _displayDeliveryAddress($addressUI, address);\n $addressUI.find('.ButtonDeletedeliveryaddress').show();\n $addressUI.find('.ButtonDefaultDeliveryAddress').show();\n }\n }\n });\n\n if (_shouldShowDeliveryAddressTagify === true) {\n if (isAddressAdded === true) {\n const newDeliveryAddressId = _getDeliveryAddressesFromContainers().pop().ID;\n _setVisibleDeliveryAddressContainer(newDeliveryAddressId);\n _updateDeliveryAddressesTagifyWhitelist(newDeliveryAddressId);\n } else {\n _updateDeliveryAddressesTagifyWhitelist(null);\n }\n }\n\n if (!_redirectToReturnUrlIfPresent(ctx.returnURL)) {\n w.PubSub.publish('notification.success', ctx.messages.savedSuccessfully);\n }\n })\n .fail(function(jqXHR, textStatus) {\n if (typeof (jqXHR.responseJSON) === 'object' && jqXHR.responseJSON.Message) {\n w.PubSub.publish('notification.error', jqXHR.responseJSON.Message);\n\n } else {\n w.PubSub.publish('notification.error', textStatus);\n }\n });\n });\n });\n }\n\n function _setupEmailInUseNotification() {\n if (ctx.showEmailInUseNotification) {\n $mainPanel.find('.ContactPersonEmailInput,.InvoiceEmailInput').on('change',\n function() {\n $.noty.closeAll();\n const inputEmail = ($(this).val() || '').toLowerCase();\n if (inputEmail) {\n $.ajax({\n url: handlerUrl,\n method: 'GET',\n data: { action: 'exists', email: inputEmail }\n })\n .done(function(result) {\n const emailExists = result.exists;\n if (emailExists) {\n w.PubSub.publish('notification.warning',\n { text: ctx.messages.emailIsAlreadyInUse, timeout: 0, killer: true });\n }\n });\n }\n });\n }\n };\n\n function _setupNewCustomer() {\n if (_isNewCustomer) {\n $mainPanel.find('.ExistingCustomerOnly').hide();\n } else {\n $mainPanel.find('.NewCustomerOnly').hide();\n }\n }\n\n function _setupContactFormMode() {\n if (_contactFormModeIsEnabled) {\n $mainPanel.find('.ContactFormModeHiddenRow').hide();\n $mainPanel.find('.DeliveryAddressesSectionContainer').hide();\n }\n }\n\n $(function() {\n _setupShowNewsletterFlags();\n _setupDateOfBirthValidator();\n _setupRegistrationType();\n _setupCompanySection();\n \n _setupCustomerSection();\n _setupDeliveryAddressesSection();\n _setupRegisterButton();\n _setupSaveButton();\n\n _setupEmailInUseNotification();\n _setupNewCustomer();\n _setupContactFormMode();\n\n _setupContactAndDeliveryAddressTagify();\n });\n }\n})(window, jQuery);"],"names":["w","$","assetId","umwAssets","let","ctx","handlerUrl","R","$mainPanel","mainPanelID","regType","initialRegType","labels","_isNewCustomer","customer","IsNewCustomer","_enableFullNameMode","enableFullNameMode","$сontactSection","$newContactUI","$newDelivAddressSection","$newDelivAddressUI","company","_showDeliveryAddressSection","showDeliveryAddressSection","_contactFormModeIsEnabled","contactFormModeIsEnabled","_deliveryAddressUserId","UserID","_shouldShowContactTagify","thisUserId","compactFormModeIsEnabled","_shouldShowDeliveryAddressTagify","allowMultipleDelivAddresses","_useTabs","useTabs","contactPersonTagifyInput","deliveryAddressTagifyInput","_processClonedHtml","$clonedHtml","parentSelector","targetAttr","currentIndex","length","find","add","each","$this","this","i","currentAttr","currentAttrVal","attr","replace","_validateForm","successCallback","validator","isCompany","validate","ignore","index","el","parents","tabID","resetForm","form","apply","PubSub","publish","successList","messages","generalValidationError","removeClass","navTabs","errorList","element","theTabHyperlinkWithErrors","parent","addClass","tab","_showConfirmation","message","acceptCallback","cancelCallback","notyConfig","layout","animation","open","height","close","easing","speed","killer","modal","text","buttons","yes","onClick","noty","no","_displayProperRegTypeFields","instantly","els","contactPersonTabName","$companySection","slideDown","contactPersonInfoTitle","show","hide","_getTabsElements","liTabCompany","tabCompany","liTabContact","tabContact","liTabDelivery","tabDelivery","data","hasClass","slideUp","profile","_detectAndHandleRedirect","response","redirectStringPrefix","indexOf","redirectUrl","slice","location","_setUpPostalAreaAutoCompletion","$region","relatedPostAreaInputDataKey","$postCodeInput","$postAreaInput","isKeyUpHandlerAlreadySetUp","keyup","postCodeVal","val","trim","globalSettings","CountryCode","getPostalCodeInfo","d","valid","result","_displayCustomer","$ui","$firstNameLabel","$lastNameRow","isLastNameShown","ECustomerID","FirstName","LastName","html","firstNameText","fullName","Gender","DateOfBirth","Phone","MobilePhone","InvoiceAddress","Address","Address2","PostCode","PostArea","Email","prop","IsNewsletterRecipient","_readCustomer","is","_createCustomerUI","$tmp","clone","datepicker","onClose","blur","insertBefore","_onNewContactEditFinished","cancelled","remove","_updateContactTagifyWhitelist","_displayCompany","Name","CompanyNumber","ContactPersonName","ContactPersonEmail","_readCompany","_createDeliveryAddressUI","$container","findSelector","$toolTipControl","tooltip","_displayDeliveryAddress","deliveryAddress","EMail","CompanyName","Description","_displayDeliveryAddressDefaultFlag","IsDefault","_displayNewDeliveryAddressDefaultFlag","newDefaultDeliveryAddressId","deliveryAddressSection","$addressUI","address","ID","isDefault","$btnIsDef","_displayDeliveryAddressDescriptionForPrivateUser","deliveryAddresses","defaultDeliveryAddresses","_","filter","$deliveryDescriptionInput","_readDeliveryAddress","$delivAddressUI","$custUI","_readDeliveryAddressForPrivateUser","Company","$deliveryDescriptionUI","_onNewDelivAddressEditFinished","_updateDeliveryAddressesTagifyWhitelist","_getDefaultOrFirstDeliveryAddressId","_redirectToReturnUrlIfPresent","isBeingRedirect","_getContactsFromContainers","$contactConts","contacts","contactCont","contact","push","preselectContactId","preselectContact","forEach","newContact","isNaN","settings","whitelist","removeAllTags","addTags","_setVisibleContactContainer","contactUserId","$selectContactCont","get","c","console","warn","_getDeliveryAddressSummary","name","elements","addr","post","join","_getDeliveryAddressesFromContainers","$addressConts","deliveryAddressCont","a","_setVisibleDeliveryAddressContainer","deliveryAddressId","$selectAddressCont","preselectDeliveryAddressId","preselectDeliveryAddress","addressValue","defaultDeliveryAddress","newDeliveryAddress","value","_setupDeliveryAddressesSection","click","evt","preventDefault","newAddress","closest","confirmDeleteDelivAddress","blockUI","ajax","url","method","action","DeliveryAddress","always","unblockUI","done","deletedSuccessfully","defaultAddressId","fail","jqXHR","textStatus","responseJSON","Message","firstTimeShowDeliveryAddresses","addresses","defaultOrFirstId","_setupContactFormMode","onload","sessionStorage","getItem","removeItem","registrationSuccess","shouldShowNewsletterFlag","addMethod","inst","_getInst","dateFormat","_get","parseDate","_getFormatConfig","Date","e","dateOfBirthValidationError","_setupRegistrationType","$rbtns","change","confirmDeleteContact","cust","Users","confirmResetPassword","newPasswordEmailSent","DeliveryAddresses","not","$cont","$dateTimePicker","removeAttr","$customerUi","$contactUi","loggedInContact","comp","password","failCallback","regtype","timeout","returnURL","RegistrationStatus","setQueryStringParam","registrationRequestSent","setItem","reload","customers","$customerSections","isCustomerAdded","customerSection","$customerUI","CompanyUserID","$deliveryAddressSections","isAddressAdded","newDeliveryAddressId","newContactUserId","pop","savedSuccessfully","showEmailInUseNotification","on","closeAll","inputEmail","toLowerCase","email","exists","emailIsAlreadyInUse","$contactPersonInput","Tagify","mode","dropdown","maxItems","highlightFirst","searchKeys","templates","dropdownItem","tagData","detail","JSON","parse","$addressesInput","error","window","jQuery"],"mappings":"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"}