{"version":3,"file":"campaign-page.min.js","sources":["../../js/campaign-page.js"],"sourcesContent":["(function () {\n const CAUSE_OF_PAYMENT = {\n PURCHASE: 1,\n INVOICE: 2,\n PRE_PAYMENT: 3\n },\n app = {\n init: function () {\n app.initCampaignPage();\n const campaignPageContainerEl = document.querySelector('.campaign-sign-up');\n campaignPageContainerEl.classList.add('initialized');\n },\n initCampaignPage: function () {\n const $gameProductSelectEl = $('#campaign-signup-select-product-dd'); // used to select game product in step 0. A change will set form campaign code\n const $campaignCodeInputEl = $('#CampaignSignUp_CampaignCode'); // the form campaign code input\n const campaignPage = {\n signUp: {\n show: function () {\n const campaignSignUp = $('.campaign-sign-up');\n const campaignHeroRightOverlay = $('#campaign-sign-up-overlay');\n const isModalOpen = $(\"#is-modal-open\");\n\n campaignSignUp.removeClass('hide-step');\n campaignHeroRightOverlay.css(\"visibility\", \"visible\");\n campaignHeroRightOverlay.css(\"opacity\", \"1\");\n $('body').addClass('no-scroll');\n isModalOpen.val(true);\n },\n hide: function () {\n const campaignSignUpModal = $('.campaign-sign-up');\n const campaignHeroRightOverlay = $('#campaign-sign-up-overlay');\n const isModalOpen = $(\"#is-modal-open\");\n\n campaignSignUpModal.addClass('hide-step');\n campaignHeroRightOverlay.css(\"visibility\", \"hidden\");\n campaignHeroRightOverlay.css(\"opacity\", \"0\");\n $('body').removeClass('no-scroll');\n isModalOpen.val(false);\n updatePaymentIdQueryString(null);\n updateAgIdQueryString(null);\n var shouldResetForm = document.querySelector('#current-step').value > '0'\n if (shouldResetForm) {\n // reset\n let url = KombiApp.UrlHelpers.getUrlWithQueryStringParam(window.location.href, 'paymentId', null);\n url = KombiApp.UrlHelpers.getUrlWithQueryStringParam(url, 'ag-id', null);\n window.location.href = url;\n\n }\n }\n },\n step1: {\n init: function () {\n var paymentForm = document.querySelector('#payment-form');\n if (paymentForm) {\n paymentForm.addEventListener('submit', function (evt) {\n var isValid = campaignPage.step1.isValid();\n if (!isValid) {\n document.dispatchEvent(new Event('kombi.datumticketnumber.validate'));\n evt.stopPropagation();\n evt.preventDefault();\n }\n else {\n if (evt.submitter) {\n evt.submitter.classList.add('is-loading');\n }\n }\n });\n }\n },\n stepForward: function () {\n const stepBackButton = $('#campaign-sign-up-step-back-button');\n const step2Container = $('#campaign-sign-up-step-2');\n const step1Overlay = $('#campaign-sign-up-step-1-overlay');\n\n stepBackButton.removeClass(\"hide\");\n step2Container.css(\"box-shadow\", \"box-shadow\", \"0px 0px 30px rgb(0 0 0 / 25 %);\");\n step2Container.css(\"right\", \"0\");\n step1Overlay.css(\"visibility\", \"visible\");\n step1Overlay.css(\"opacity\", \"1\");\n },\n hideErrorMessage: function () {\n const step1ErrorContainer = $('#campaign-sign-up-step-1-error-container');\n const step1ErrorMessage = $('#campaign-sign-up-step-1-error-message');\n\n step1ErrorContainer.prop(\"hidden\", true);\n step1ErrorMessage.innerText = \"\";\n },\n displayErrorMessage: function (errorMessage) {\n const step1ErrorContainer = $('#campaign-sign-up-step-1-error-container');\n const step1ErrorMessage = $('#campaign-sign-up-step-1-error-message');\n\n step1ErrorContainer.prop(\"hidden\", false);\n step1ErrorMessage.text(errorMessage);\n },\n disableSubmit: function () {\n const submitButton = $('.Campaign-form-submit.js-campaign-new-step-1-button');\n\n submitButton.prop(\"disabled\", true);\n },\n enableSubmit: function () {\n const submitButton = $('.Campaign-form-submit.js-campaign-new-step-1-button');\n\n submitButton.prop(\"disabled\", false);\n },\n enableEditing: function () {\n const personalIdentityNumber = $('#CampaignSignup_Step1_PersonalIdentityNumber');\n const submitButton = $('.Campaign-form-submit.js-campaign-new-step-1-button');\n const updateButton = $('.Campaign-form-submit.js-campaign-new-step-1-edit-button');\n\n personalIdentityNumber.prop(\"readOnly\", true);\n personalIdentityNumber.css(\"color\", \"#c0c0c0\");\n\n submitButton.prop(\"disabled\", true);\n submitButton.prop(\"hidden\", true);\n updateButton.prop(\"disabled\", false);\n updateButton.prop(\"hidden\", false);\n },\n isValid: function () {\n const userIsLoggedIn = $('.Campaign-form-submit.js-campaign-new-step-1-button.logged-in').length > 0;\n const validCampaignSelected = $gameProductSelectEl.val() !== '';\n const ticketNumberEl = document.querySelector('#ticketnumber');\n const validTicketNumber = ticketNumberEl ? !!ticketNumberEl.value : true;\n\n if (userIsLoggedIn) {\n return validCampaignSelected && validTicketNumber;\n } else {\n const validEmail = KombiApp.Validations.validateEmail($('#CampaignSignup_Step1_Email').val());\n const validCellPhoneNumber = KombiApp.Validations.validateCellPhoneNumber($('#CampaignSignup_Step1_CellPhone').val());\n const signUpStep1TermsChecked = $('#CampaignSignup_Step1_SignupChecked').is(':checked');\n const validPersonalIdentityNumber = KombiApp.Validations.validatePersonalIdentityNumber($('#CampaignSignup_Step1_PersonalIdentityNumber').val(), 'LONG');\n const validCampaignSelected = $('#campaign-signup-select-product-dd').val() != '';\n\n return validEmail &&\n validCellPhoneNumber &&\n signUpStep1TermsChecked &&\n validPersonalIdentityNumber &&\n validCampaignSelected &&\n validTicketNumber;\n }\n\n },\n data: function () {\n return {\n campaignCode: $gameProductSelectEl.val(),\n campaignName: $('#campaign-signup-select-product-dd :selected').text(),\n email: $('#CampaignSignup_Step1_Email').val(),\n cellPhone: $('#CampaignSignup_Step1_CellPhone').val(),\n personalIdentityNumber: $('#CampaignSignup_Step1_PersonalIdentityNumber').val(),\n signUpChecked: $('#CampaignSignup_Step1_SignupChecked').prop('checked')\n }\n }\n },\n step2: {\n stepBack: function () {\n const stepBackButton = $('#campaign-sign-up-step-back-button');\n const step2Container = $('#campaign-sign-up-step-2');\n const step1Overlay = $('#campaign-sign-up-step-1-overlay');\n\n campaignPage.step1.enableEditing();\n stepBackButton.addClass(\"hide\");\n step2Container.css(\"box-shadow\", \"none\");\n step2Container.css(\"right\", \"-100%\");\n step1Overlay.css(\"visibility\", \"hidden\");\n step1Overlay.css(\"opacity\", \"0\");\n\n $(\"#current-step\").val(0);\n updatePaymentIdQueryString(null);\n updateAgIdQueryString(null);\n },\n show: function () {\n const stepBackButton = $('#campaign-sign-up-step-back-button');\n const step2Container = $('#campaign-sign-up-step-2');\n const step1Overlay = $('#campaign-sign-up-step-1-overlay');\n\n stepBackButton.removeClass(\"hide\");\n step2Container.css(\"right\", \"0\");\n step2Container.css(\"box-shadow\", \"0px 0px 30px rgb(0 0 0 / 25 %);\");\n step1Overlay.css(\"visibility\", \"visible\");\n step1Overlay.css(\"opacity\", \"1\");\n },\n hide: function () {\n const stepBackButton = $('#campaign-sign-up-step-back-button');\n const step2Container = $('#campaign-sign-up-step-2');\n const step1Overlay = $('#campaign-sign-up-step-1-overlay');\n\n stepBackButton.addClass(\"hide\");\n step2Container.css(\"right\", \"-100%\");\n step2Container.css(\"box-shadow\", \"none\");\n step1Overlay.css(\"visibility\", \"hidden\");\n step1Overlay.css(\"opacity\", \"0\");\n },\n reset: function () {\n const directDebitStep1 = $(\"#direct-debit-step-1\");\n const directDebitStep1Text = $(\"#direct-debit-step-1-text\");\n const directDebitStep2 = $(\"#direct-debit-step-4\");\n const directDebitDropDown = $(\"#direct-debit-step-1\");\n const directDebitSubmitButton = $(\"#BankSelected\");\n const directDebitContainer = $(\"#payment-direct-debit\");\n\n directDebitContainer.hide();\n directDebitDropDown.selectedIndex = 0;\n directDebitStep1.attr(\"hidden\", false);\n directDebitStep1Text.attr(\"hidden\", false);\n directDebitStep2.attr(\"hidden\", true);\n directDebitSubmitButton.show();\n\n const paymentsListContainer = $(\"#payments-list-container\");\n paymentsListContainer.show();\n\n $('#campaign-sign-up-step-back-button').prop('disabled', false);\n $('#CampaignSignup_Step2_SignupPaymentChecked').prop('disabled', false);\n $('#payments-list-container').removeClass('disabled');\n\n $('#payments-list-container ul li input').each(function () {\n $(this).prop('disabled', false);\n });\n },\n hideErrorMessage: function () {\n\n },\n displayErrorMessage: function (errorMessage) {\n\n },\n disableSubmit: function () {\n const submitButton = $('.Campaign-form-submit.js-campaign-new-step-2-button');\n\n submitButton.addClass(\"disabled\");\n submitButton.prop(\"disabled\", true);\n },\n enableSubmit: function () {\n const submitButton = $('.Campaign-form-submit.js-campaign-new-step-2-button');\n\n submitButton.removeClass(\"disabled\");\n submitButton.prop(\"disabled\", false);\n },\n submit: function () {\n campaignPage.step2.hideErrorMessage();\n campaignPage.step2.disableSubmit();\n $('#payment-form').submit();\n }\n },\n step5: {\n show: function () {\n const step5Container = $('#campaign-information-missing');\n const step1Overlay = $('#campaign-sign-up-step-1-overlay');\n\n step5Container.removeClass(\"hide-step\");\n step5Container.css(\"right\", \"0\");\n step5Container.css(\"box-shadow\", \"0px 0px 30px rgb(0 0 0 / 25 %);\");\n step1Overlay.css(\"visibility\", \"visible\");\n step1Overlay.css(\"opacity\", \"1\");\n\n },\n hide: function () {\n const stepBackButton = $('#campaign-sign-up-step-back-button');\n const step5Container = $('#campaign-sign-up-step-5');\n const step1Overlay = $('#campaign-sign-up-step-1-overlay');\n\n stepBackButton.addClass(\"hide\");\n step5Container.css(\"right\", \"-100%\");\n step5Container.css(\"box-shadow\", \"none\");\n step1Overlay.css(\"visibility\", \"hidden\");\n step1Overlay.css(\"opacity\", \"0\");\n },\n submit: function () {\n campaignPage.step5.hide();\n campaignPage.step2.show();\n },\n isValid: function () {\n const validEmail = KombiApp.Validations.validateEmail($('#CampaignSignup_Step5_Email').val());\n const validCellPhoneNumber = KombiApp.Validations.validateCellPhoneNumber($('#CampaignSignup_Step5_CellPhone').val());\n\n return validEmail && validCellPhoneNumber;\n\n },\n enableSubmit: function () {\n const submitButton = $('.js-campaign-new-step-5-edit-button');\n\n submitButton.prop(\"disabled\", false);\n },\n disableSubmit: function () {\n const submitButton = $('.js-campaign-new-step-5-edit-button');\n\n submitButton.addClass(\"disabled\");\n submitButton.prop(\"disabled\", true);\n },\n },\n thankYou: function () {\n const stepBackButton = $('#campaign-sign-up-step-back-button');\n const container = $('#campaign-sign-up-thank-you');\n const overlay = $('#campaign-sign-up-step-2-overlay');\n\n stepBackButton.addClass(\"hide\");\n container.css(\"right\", \"0\");\n container.css(\"box-shadow\", \"0px 0px 30px rgb(0 0 0 / 25 %);\");\n overlay.css(\"visibility\", \"visible\");\n overlay.css(\"opacity\", \"1\");\n },\n error: {\n show: function () {\n const stepBackButton = $('#campaign-sign-up-step-back-button');\n const container = $('#campaign-sign-up-error');\n const overlay = $('#campaign-sign-up-step-2-overlay');\n\n stepBackButton.addClass(\"hide\");\n container.css(\"right\", \"0\");\n container.css(\"box-shadow\", \"0px 0px 30px rgb(0 0 0 / 25 %);\");\n overlay.css(\"visibility\", \"visible\");\n overlay.css(\"opacity\", \"1\");\n },\n hide() {\n const stepBackButton = $('#campaign-sign-up-step-back-button');\n const container = $('#campaign-sign-up-error');\n const overlay = $('#campaign-sign-up-step-2-overlay');\n\n stepBackButton.removeClass(\"hide\");\n container.css(\"right\", \"-100%\");\n container.css(\"box-shadow\", \"none\");\n overlay.css(\"visibility\", \"hidden\");\n overlay.css(\"opacity\", \"0\");\n campaignPage.step2.reset();\n }\n }\n }\n\n function initCampaignPage() {\n campaignPage.step1.init();\n const campaignCode = $campaignCodeInputEl.val();\n if (!!campaignCode) {\n setCampaignCode(campaignCode, true);\n }\n initDirectDebit();\n }\n\n function initDirectDebit() {\n // called in parajett when a new direct debit session is started\n // This is to be able to save the state of the purchase if the page reloads after navigation between bankid app and browser.\n KombiApp.DirectDebit.RegisterFormDataDelegate(function () {\n const formData = getFormData();\n return {\n type: 'purchase',\n campaignCode: formData.campaignCode,\n Phone: formData.mobile,\n Email: formData.email,\n PersonalIdentityNumber: formData.ssn,\n PaymentMethod: 'DirectDebit',\n CustomerId: formData.customerId,\n RequestedTicketNumber: formData.requestedTicketNumber\n };\n });\n KombiApp.DirectDebit.SetDirectDebitRequestType('purchase');\n }\n\n function validateAssociationSale() {\n const isValid = !!$campaignCodeInputEl.val();\n document.dispatchEvent(new Event('kombi.assoicationsale.validate'));\n if (!isValid) {\n $('html, body').animate({\n scrollTop: 0\n }, 500);\n }\n return isValid;\n }\n\n $('.js-Campaign-personal-identity-number').on('keyup',\n function (e) {\n if ((e.which >= 46 && e.which <= 57) || ((e.which >= 96 && e.which <= 105))) {\n var birthYear = parseInt($(this).val());\n if ($(this).val().length === 2 &&\n birthYear !== NaN &&\n birthYear !== 19 &&\n birthYear !== 20) {\n if (birthYear > 9) {\n $(this).val('19' + birthYear);\n } else {\n $(this).val('200' + birthYear);\n }\n }\n }\n }\n );\n\n $('.js-Campaign-email').on('focusout',\n function (e) {\n var validEmail = KombiApp.Validations.validateEmail($(this).val());\n if (validEmail !== false) {\n $('.js-Campaign-email-message').hide();\n } else {\n $('.js-Campaign-email-message').show();\n }\n $('.js-Campaign-email-validation-message').empty();\n }\n );\n $('.js-Campaign-personal-identity-number').on('keydown',\n function (e) {\n $('.js-Campaign-personal-identity-number-message').hide();\n if ((e.which >= 46 && e.which <= 57) || ((e.which >= 96 && e.which <= 105))) {\n if ($(this).val().length === 8) {\n $(this).val($(this).val() + '-');\n }\n }\n }\n );\n $('.js-Campaign-personal-identity-number').on('focusout',\n function (e) {\n var validIdentityNumber = KombiApp.Validations.validatePersonalIdentityNumber($(this).val(), 'LONG');\n if (validIdentityNumber !== false) {\n $(this).val(validIdentityNumber);\n $('.js-Campaign-personal-identity-number-message').hide();\n } else {\n $('.js-Campaign-personal-identity-number-message').show();\n }\n }\n );\n\n const enableStep1SubmitButtonIfAllInputIsValid = function () {\n if (campaignPage.step1.isValid()) { // Enable submit if all inputs are valid\n campaignPage.step1.enableSubmit();\n }\n else { // Disable submit if any input is invalid\n campaignPage.step1.disableSubmit();\n }\n }\n\n $('.js-Campaign-personal-identity-number').on('input',\n function (e) {\n const inputData = $(this)[0];\n if (inputData.value.length > 10) {\n enableStep1SubmitButtonIfAllInputIsValid();\n }\n }\n );\n $('#CampaignSignup_Step1_Email').on('input',\n function (e) {\n enableStep1SubmitButtonIfAllInputIsValid();\n }\n );\n $('#CampaignSignup_Step1_CellPhone').on('input',\n function (e) {\n enableStep1SubmitButtonIfAllInputIsValid();\n }\n );\n\n $('.js-Campaign-cell-phone-number').on('focusout',\n function (e) {\n var validCellPhoneNumber = KombiApp.Validations.validateCellPhoneNumber($(this).val());\n if (validCellPhoneNumber !== false) {\n $('.js-Campaign-cell-phone-number-message').hide();\n } else {\n $('.js-Campaign-cell-phone-number-message').show();\n }\n }\n );\n\n const enableStep5SubmitButtonIfAllInputIsValid = function () {\n if (campaignPage.step5.isValid()) { // Enable submit if all inputs are valid\n campaignPage.step5.enableSubmit();\n }\n else { // Disable submit if any input is invalid\n campaignPage.step5.disableSubmit();\n }\n }\n $('#CampaignSignup_Step5_Email').on('input',\n function (e) {\n enableStep5SubmitButtonIfAllInputIsValid();\n }\n );\n $('#CampaignSignup_Step5_CellPhone').on('input',\n function (e) {\n enableStep5SubmitButtonIfAllInputIsValid();\n }\n );\n\n //Payment\n\n //on page reload due to validation errors.\n if ($('#CampaignSignup_Step1_SignupChecked').is(':checked')) {\n $('.js-campaign-new-step-1-form .Campaign-form-submit').prop('disabled', false);\n }\n\n $('#CampaignSignup_Step1_SignupChecked').on('click',\n function () {\n enableCampaignStep1Button();\n });\n\n if ($('#CampaignSignup_Step2_SignupPaymentChecked').is(':checked')) {\n $('#payments-container').show();\n }\n\n $('#CampaignSignup_Step2_SignupPaymentChecked').on('click',\n function () {\n var formEnabled = $(this).is(':checked');\n\n formEnabled ? $('#payments-container').show() : $('#payments-container').hide();\n\n if (formEnabled) {\n $('#campaign-container').animate({\n scrollTop: $('#payments-container').offset().top - 400\n },\n 1000);\n\n if ($(\"#exisiting-payment-type\").length > 0) {\n const selectedItem = app.getSelectedProductGtmItem();\n window.KombiApp.GTM.Ecommerce.beginCheckout(window.KombiApp.GTM.GtmPageData, selectedItem);\n $(\"#submit-payment\").show();\n }\n } else {\n\n if ($(\"#exisiting-payment-type\").length > 0) {\n $(\"#submit-payment\").hide();\n }\n }\n });\n\n function enableCampaignStep1Button() {\n if ($('.Campaign-form-submit.js-campaign-new-step-1-button.logged-in').length > 0) {\n const validCampaignSelected = $gameProductSelectEl.val() !== '';\n\n if (validCampaignSelected) {\n $('.Campaign-form-submit.js-campaign-new-step-1-button.logged-in').prop('disabled', false);\n $('.Campaign-form-submit.js-campaign-new-step-1-edit-button.logged-in').prop('disabled', false);\n } else {\n $('.Campaign-form-submit.js-campaign-new-step-1-button.logged-in').prop('disabled', true);\n $('.Campaign-form-submit.js-campaign-new-step-1-edit-button.logged-in').prop('disabled', true);\n }\n } else {\n const validEmail = KombiApp.Validations.validateEmail($('#CampaignSignup_Step1_Email').val());\n const validCellPhoneNumber = KombiApp.Validations.validateCellPhoneNumber($('#CampaignSignup_Step1_CellPhone').val());\n const signUpStep1TermsChecked = $('#CampaignSignup_Step1_SignupChecked').is(':checked');\n const validPersonalIdentityNumber =\n KombiApp.Validations.validatePersonalIdentityNumber($('#CampaignSignup_Step1_PersonalIdentityNumber').val(),\n 'LONG');\n const validCampaignSelected = $gameProductSelectEl.val() !== '';\n\n if (validEmail && validCellPhoneNumber && signUpStep1TermsChecked && validPersonalIdentityNumber && validCampaignSelected) {\n $('.Campaign-form-submit.js-campaign-new-step-1-button').prop('disabled', false);\n $('.Campaign-form-submit.js-campaign-new-step-1-edit-button').prop('disabled', false);\n } else {\n $('.Campaign-form-submit.js-campaign-new-step-1-button').prop('disabled', true);\n $('.Campaign-form-submit.js-campaign-new-step-1-edit-button').prop('disabled', true);\n }\n }\n }\n\n\n $('#CampaignSignup_Step1_Email').on('focusout',\n function (e) {\n enableCampaignStep1Button();\n }\n );\n\n $('#CampaignSignup_Step1_CellPhone').on('focusout',\n function (e) {\n enableCampaignStep1Button();\n }\n );\n\n $('#CampaignSignup_Step1_PersonalIdentityNumber').on('change focusout',\n function (e) {\n enableCampaignStep1Button();\n }\n );\n\n $gameProductSelectEl.on('change', function (e) {\n var campaignCode = $gameProductSelectEl.val();\n $campaignCodeInputEl.val(campaignCode);\n enableCampaignStep1Button();\n });\n\n function setCampaignCode(campaignCode, isInit = false) {\n const dropdownOptions = Array.from($gameProductSelectEl[0].querySelectorAll(\"option\"));\n const dropdownOptionIndex = dropdownOptions.findIndex(x => x.value === campaignCode);\n const newSelectedItem = $gameProductSelectEl[0].selectedIndex != dropdownOptionIndex;\n\n if (newSelectedItem) {\n $gameProductSelectEl[0].selectedIndex = dropdownOptionIndex;\n $gameProductSelectEl.trigger(\"change\");\n $campaignCodeInputEl.val(campaignCode);\n\n\n if (!isInit) {\n const gtmItem = window.KombiApp.GTM.GtmPageData.items.find(x => x.item_id === campaignCode);\n window.KombiApp.GTM.Ecommerce.selectItem(window.KombiApp.GTM.GtmPageData, gtmItem);\n }\n }\n\n }\n\n $('.campaign-choose-product-button').each(function (index, button) {\n $(button).click(function (evt) {\n const isUserLoggedIn = $(\"#is-user-logged-in\").val() === \"True\";\n\n const type = button.getAttribute('data-game-product-type');\n if (type === 'gameProductAssociation') {\n if (!validateAssociationSale()) {\n return;\n }\n }\n else {\n setCampaignCode(button.value)\n }\n\n const currentStep = $(\"#current-step\").val();\n // if user is signed in there is no need to show step 1 where you enter contact info\n // Exception to this is if the user must select a ticket number, this is done in step 1\n if (isUserLoggedIn === \"True\" && !document.querySelector('#ticketnumber')) {\n $(\"#payment-form\").submit();\n } else {\n campaignPage.signUp.show();\n }\n });\n });\n\n $('.campaign-detailed-info-button').each(function (index, button) {\n $(button).click(function () {\n setCampaignCode($(button).val());\n const isUserLoggedIn = $(\"#is-user-logged-in\").val() === \"True\";\n // if user is signed in there is no need to show step 1 where you enter contact info\n // Exception to this is if the user must select a ticket number, this is done in step 1\n if (isUserLoggedIn === \"True\" && !document.querySelector('#ticketnumber')) {\n if ($(\"#current-step\").val() === \"1\") {\n $(\"#current-step\").val(0);\n $(\"#payment-form\").submit();\n }\n } else {\n campaignPage.signUp.show();\n }\n });\n });\n\n $('#dd-bank').on('change focusout',\n function (e) {\n if ($(this).val() !== '') {\n if ($('.payments-selected-bank-error-message').length > 0)\n $('.payments-selected-bank-error-message').hide();\n\n if (KombiApp.Validations.validatePersonalIdentityNumber($('#RecurringPaymentModel_PersonalIdentityNumber').val(), 'LONG')) {\n $('#BankSelected').prop('disabled', false);\n } else if (KombiApp.Validations.validatePersonalIdentityNumber($('#CampaignSignup_Step1_PersonalIdentityNumber').val(), 'LONG')) {\n $('#BankSelected').prop('disabled', false);\n } else {\n $('#BankSelected').prop('disabled', true);\n }\n } else {\n $('.payments-selected-bank-error-message').show();\n $('#BankSelected').prop('disabled', true);\n }\n }\n );\n\n if ($('.campaign-container').length > 0) {\n var paymentHeight = $('.campaign-container').height();\n\n $('input[name=\"payment-type\"]').on('click', function (e) {\n $('#campaign-container').animate({\n scrollTop: paymentHeight\n }, 1000);\n });\n }\n\n $('#campaign-sign-up-thank-you-button').click(function () {\n campaignPage.signUp.hide();\n });\n\n $('#campaign-sign-up-close-modal-button').click(function () {\n campaignPage.signUp.hide();\n });\n\n $('#campaign-sign-up-overlay').click(function () {\n campaignPage.signUp.hide();\n });\n\n $('#campaign-sign-up-step-back-button').click(function () {\n campaignPage.step2.stepBack();\n });\n\n function post(data, url, successCallback, errorCallback) {\n\n var request = new XMLHttpRequest();\n request.addEventListener('load', successCallback);\n request.addEventListener('error', errorCallback);\n request.open('POST', url, true);\n request.setRequestHeader('Content-Type', 'application/json; charset=utf-8');\n request.send(JSON.stringify(data));\n }\n\n\n\n\n\n // payments - can this be extracted to a shared component used in my payments aswell?\n // swedbank.js is used in payments today but lots of logic is shared between these.\n\n function initSelectPaymentTypeSelector() {\n $('.payments-list li').on('click', function (e) {\n var input = $(this).find('input');\n\n if (!$(e.target).is('input')) {\n input.prop(\"checked\", true);\n }\n var paymentType = input.val();\n\n showPaymentType(paymentType);\n });\n }\n\n initSelectPaymentTypeSelector();\n\n function showPaymentType(paymentType, publishEvent = true, speed = 1000) {\n $('.payment-info').hide();\n\n $('#payment-' + paymentType).show();\n $('#campaign-container').animate({\n scrollTop: $('#payment-' + paymentType).offset().top\n }, speed);\n $('#submit-payment').hide();\n if (publishEvent) {\n pubsub(paymentType).publish(paymentType);\n }\n }\n\n var topics = {};\n\n var pubsub = function (id) {\n var callbacks,\n topic = id && topics[id];\n if (!topic) {\n callbacks = jQuery.Callbacks();\n topic = {\n publish: callbacks.fire,\n subscribe: callbacks.add,\n unsubscribe: callbacks.remove\n };\n if (id) {\n topics[id] = topic;\n }\n }\n return topic;\n };\n\n var state = {\n cardHasLoaded: false,\n swishHasLoaded: false\n };\n\n pubsub('card').subscribe(function (paymentType) {\n setPaymentType(paymentType);\n handleSwedbankPayment(paymentType);\n updateAgIdQueryString(null);\n });\n pubsub('swish').subscribe(function (paymentType) {\n setPaymentType(paymentType);\n handleSwedbankPayment(paymentType);\n updateAgIdQueryString(null);\n });\n pubsub('direct-debit').subscribe(function (paymentType) {\n setPaymentType(paymentType);\n $('input[id=CampaignSignup_Step2_SignupBillectaChecked]').prop('required', 'required');\n var recurringPaymentSegment = document.getElementById(\"payment-direct-debit\");\n recurringPaymentSegment.hidden = false;\n updatePaymentIdQueryString(null);\n });\n pubsub('invoice').subscribe(function (paymentType) {\n setPaymentType(paymentType);\n $('#submit-payment').show();\n updatePaymentIdQueryString(null);\n });\n\n function setPaymentType(type) {\n const currentValue = document.getElementById(\"CampaignSignup_Step2_PaymentType\").value;\n if (type === 'direct-debit') {\n type = 'DirectDebit';\n }\n if (currentValue && type && (currentValue.toLowerCase() != type.toLowerCase())) {\n document.getElementById(\"CampaignSignup_Step2_PaymentType\").value = type;\n window.KombiApp.GTM.Ecommerce.addPaymentInfo(window.KombiApp.GTM.GtmPageData, app.getSelectedProductGtmItem(), type);\n }\n }\n\n function getFormData() {\n return {\n campaignCode: $campaignCodeInputEl.val(),\n mobile: $(\"#CampaignSignup_Step1_CellPhone\").val() || $(\"#CampaignSignup_Step5_CellPhone\").val(),\n email = $(\"#CampaignSignup_Step1_Email\").val() || $(\"#CampaignSignup_Step5_Email\").val(),\n ssn: $(\"#CampaignSignup_Step1_PersonalIdentityNumber\").val(),\n customerId: $(\"#CampaignSignUp_Step2_CustomerId\").val(),\n causeOfPayment: CAUSE_OF_PAYMENT.PURCHASE,\n requestedTicketNumber = $('#ticketnumber').val()\n };\n }\n\n function handleSwedbankPayment(paymentType, paymentUrl, paymentId) {\n if (!state[paymentType + 'HasLoaded']) {\n state[paymentType + 'HasLoaded'] = true;\n if (!paymentUrl) {\n const signUpData = getFormData();\n\n var purchase = {\n campaignCode: signUpData.campaignCode,\n mobile: signUpData.mobile,\n email: signUpData.email,\n ssn: signUpData.ssn,\n paymentType: paymentType,\n paymentUrl: KombiApp.UrlHelpers.getUrlWithQueryStringParam(window.location.href, 'paymentId', ''),\n causeOfPayment: signUpData.causeOfPayment,\n customerId: signUpData.customerId,\n requestedTicketNumber: signUpData.requestedTicketNumber\n };\n\n fetch('/umbraco/api/payment/InitializePayment', {\n method: 'POST',\n body: JSON.stringify(purchase),\n headers: {\n 'Content-Type': 'application/json'\n }\n })\n .then(res => res.json())\n .then(res => {\n $('#payment-' + paymentType).find('.loading-spinner-wrapper').hide();\n\n if (res.errorType !== 0) {\n handleError(false, res.errorMessage, res.errorType, paymentId);\n return;\n }\n state[paymentType + 'HasLoaded'] = res.paymentId;\n initSwedbank(paymentType, res.paymentId, res.redirectUri, res.externalPaymentId);\n })\n .catch(err => handleError(false, undefined, undefined, paymentId))\n } else {\n state[paymentType + 'HasLoaded'] = paymentId;\n $('#payment-' + paymentType).find('.loading-spinner-wrapper').hide();\n initSwedbank(paymentType, paymentId, paymentUrl);\n }\n } else if (typeof (state[paymentType + 'HasLoaded']) === 'string') {\n paymentId = state[paymentType + 'HasLoaded'];\n updatePaymentIdQueryString(paymentId);\n }\n }\n\n let disableInputs = function () {\n $('#campaign-sign-up-step-back-button').prop('disabled', true);\n $('#CampaignSignup_Step2_SignupPaymentChecked').prop('disabled', true);\n $('#payments-list-container').addClass('disabled');\n\n $('#payments-list-container ul li input').each(function () {\n $(this).prop('disabled', true);\n });\n }\n\n let enableInputs = function () {\n $('#campaign-sign-up-step-back-button').prop('disabled', false);\n $('#CampaignSignup_Step2_SignupPaymentChecked').prop('disabled', false);\n $('#payments-list-container').removeClass('disabled');\n\n $('#payments-list-container ul li input').each(function () {\n $(this).prop('disabled', false);\n });\n }\n\n const PAYMENT_EVENT_TYPE = {\n PENDING: 1,\n COMPLETED: 2,\n ERROR: 3\n }\n var pendingState = PAYMENT_EVENT_TYPE.PENDING;\n\n function initSwedbank(paymentType, paymentId, paymentUrl, externalPaymentId) {\n // in case the user swich payment types quickly and the api response come out of sync\n let currentPaymentType = document.getElementById('CampaignSignup_Step2_PaymentType').value;\n if (paymentType == currentPaymentType) {\n updatePaymentIdQueryString(paymentId);\n }\n\n var script = document.createElement('script');\n script.id = paymentType + \"_script\"\n script.setAttribute('src', paymentUrl);\n script.onload = function () {\n var hostedViewFunc = getPaymentPageFunction(paymentType);\n hostedViewFunc({\n container: \"swedbank-pay-seamless-view-page-payment-\" + paymentType,\n culture: 'sv-SE',\n onPaymentPending: function () {\n disableInputs();\n updatePaymentStatus(paymentId, externalPaymentId, PAYMENT_EVENT_TYPE.PENDING);\n },\n onPaymentCompleted: function () {\n updatePaymentStatus(paymentId, externalPaymentId, PAYMENT_EVENT_TYPE.COMPLETED);\n },\n onPaymentCanceled: function () {\n enableInputs();\n updatePaymentStatus(paymentId, externalPaymentId, PAYMENT_EVENT_TYPE.ERROR);\n },\n onPaymentFailed: function () {\n enableInputs();\n updatePaymentStatus(paymentId, externalPaymentId, PAYMENT_EVENT_TYPE.ERROR);\n },\n onError: function () {\n enableInputs();\n updatePaymentStatus(paymentId, externalPaymentId, PAYMENT_EVENT_TYPE.ERROR);\n },\n onPaymentTransactionFailed: function (e, o) {\n enableInputs();\n updatePaymentStatus(paymentId, externalPaymentId, PAYMENT_EVENT_TYPE.ERROR);\n },\n onApplicationConfigured: function () {\n if (pendingState != PAYMENT_EVENT_TYPE.COMPLETED) {\n setPaymentListVisibility(true);\n }\n }\n }).open();\n };\n var head = document.getElementsByTagName('head')[0];\n head.appendChild(script);\n }\n\n function setPaymentListVisibility(show) {\n const paymentMethodListEl = document.getElementById('payments-list-container');\n if (paymentMethodListEl) {\n if (show) {\n paymentMethodListEl.classList.remove('hide-step');\n }\n else {\n paymentMethodListEl.classList.add('hide-step');\n }\n }\n }\n\n function updatePaymentIdQueryString(paymentId) {\n KombiApp.UrlHelpers.updateQueryStringParam('paymentId', paymentId);\n }\n\n function updateAgIdQueryString(agId) {\n KombiApp.UrlHelpers.updateQueryStringParam('ag-id', agId);\n }\n\n // update the paymentstatus in LBS. This will regsiter the payment directly. If this for some reason is not called, LBS will poll swedbank for the paymentstatus.\n // So if the payment succeded in swedbank it will be registered in LBS after a while.\n function updatePaymentStatus(paymentId, externalPaymentId, eventType) {\n pendingState = eventType;\n const data = {\n paymentId: paymentId,\n event: eventType\n };\n\n if (pendingState === PAYMENT_EVENT_TYPE.COMPLETED) {\n setPaymentListVisibility(false);\n }\n fetch('/umbraco/api/payment/UpdatePaymentState', {\n method: 'POST',\n body: JSON.stringify(data),\n headers: {\n 'Content-Type': 'application/json'\n }\n })\n .then(res => {\n if (res.status !== 200) {\n handleError(true, undefined, undefined, paymentId);\n }\n else {\n res.json().then(success => {\n if (success === false) {\n handleError(true, undefined, undefined, paymentId);\n }\n else if (eventType === PAYMENT_EVENT_TYPE.COMPLETED) {\n $('#PaymentId').val(paymentId);\n submitPayment();\n }\n });\n }\n })\n .catch(error => handleError(true, undefined, undefined, paymentId))\n }\n\n function submitPayment() {\n //HTML standard says that disabled inputs wont be sent with the form, so we enabled it before submiting\n $('#CampaignSignup_Step2_SignupPaymentChecked').prop('disabled', false);\n campaignPage.step2.submit();\n }\n\n function handleError(paymentMightHaveSucceeded, msg, type, paymentId) {\n $('#campaign-container').hide();\n $('.custom-error-message').empty();\n $('.error-message').empty();\n\n var enableRetry = !paymentMightHaveSucceeded;\n\n if (!paymentMightHaveSucceeded) {\n //these are the errortypes they want to enable retry on.\n if ([1, 6, 50, 51, 52, 53, 54, 70, 72, 92].indexOf(type) !== -1)\n enableRetry = true;\n }\n\n if (enableRetry) {\n $('#try-again').show();\n } else {\n $('#try-again').hide();\n }\n\n if (!msg) {\n msg = \"NĂ„gonting gick fel med din betalning. VĂ€nligen kontakta kundservice 08-453 54 00.\";\n }\n\n $('.error-message').text(msg);\n\n var errorText = '';\n if (paymentId) {\n errorText += 'Betalningsreferens: ' + paymentId.replaceAll('-', '') + '
';\n }\n if (type) {\n errorText += 'Felkod: ' + type;\n }\n\n $('.custom-error-message').html(errorText);\n\n $('#error-container').show();\n\n $('#campaign-container').animate({\n scrollTop: $('#error-container').offset().top - 400\n }, 1000);\n }\n\n function getPaymentPageFunction(paymentType) {\n if (window.payex === undefined) {\n return null;\n }\n switch (paymentType) {\n case \"card\":\n return window.payex.hostedView.creditCard;\n case \"invoice\":\n return window.payex.hostedView.invoice;\n case \"swish\":\n return window.payex.hostedView.swish;\n default:\n return null;\n }\n }\n\n if (document.getElementById('current-step').value == 1) {\n let paymentType = document.getElementById('CampaignSignup_Step2_PaymentType').value;\n const useExistingMethod = document.getElementById('CampaignSignup_Step2_UseExistingPaymentMethod').value;\n if (paymentType && useExistingMethod.toLowerCase() == 'false') {\n paymentType = paymentType.toString().toLowerCase();\n if (paymentType == \"swish\" || paymentType == \"card\") {\n const e_paymentIdEl = document.getElementById('ExternalPaymentId');\n const e_paymentMethodEl = document.getElementById('ExternalPaymentMethod');\n const e_paymentRedirectUriEl = document.getElementById('ExternalPaymentRedirectUri');\n\n if (!!e_paymentRedirectUriEl.value) {\n document.querySelector('.payments-list > #' + paymentType + ' > div > input').checked = true\n showPaymentType(paymentType, false, 0);\n handleSwedbankPayment(e_paymentMethodEl.value, e_paymentRedirectUriEl.value, e_paymentIdEl.value);\n e_paymentIdEl.value = '';\n e_paymentMethodEl.value = '';\n e_paymentRedirectUriEl.value = '';\n }\n }\n else if (paymentType === 'directdebit') {\n const directDebitTypeId = 'direct-debit'\n const directDebitOptionEl = document.querySelector('.payments-list > #' + directDebitTypeId + ' > div > input');\n if (directDebitOptionEl) {\n directDebitOptionEl.checked = true;\n }\n showPaymentType(directDebitTypeId, false, 0);\n }\n }\n }\n\n if ($(\"#campaign-sign-up-retry-button\").length > 0) {\n const button = $(\"#campaign-sign-up-retry-button\");\n button.on(\"click\", function () {\n window.location.replace(window.location.href);\n });\n }\n\n initCampaignPage();\n },\n getSelectedProductGtmItem: function () {\n const dropdown = document.querySelector('#campaign-signup-select-product-dd');\n const selectedCampaignCode = dropdown.value || document.querySelector('#CampaignSignUp_CampaignCode').value;\n const gtmItem = window.KombiApp.GTM.GtmPageData.items.find(x => x.item_id === selectedCampaignCode);\n return gtmItem;\n },\n\n\n\n\n };\n\n //$(document).ready(app.init);\n document.addEventListener(\"DOMContentLoaded\", app.init);\n})();"],"names":["CAUSE_OF_PAYMENT","PURCHASE","INVOICE","PRE_PAYMENT","app","init","initCampaignPage","document","querySelector","classList","add","$gameProductSelectEl","$","$campaignCodeInputEl","campaignPage","signUp","show","campaignSignUp","campaignHeroRightOverlay","isModalOpen","removeClass","css","addClass","val","hide","campaignSignUpModal","updatePaymentIdQueryString","updateAgIdQueryString","value","url","KombiApp","UrlHelpers","getUrlWithQueryStringParam","window","location","href","step1","paymentForm","addEventListener","evt","isValid","submitter","dispatchEvent","Event","stopPropagation","preventDefault","stepForward","stepBackButton","step2Container","step1Overlay","hideErrorMessage","step1ErrorContainer","step1ErrorMessage","prop","innerText","displayErrorMessage","errorMessage","text","disableSubmit","enableSubmit","enableEditing","personalIdentityNumber","submitButton","updateButton","userIsLoggedIn","length","validCampaignSelected","ticketNumberEl","validTicketNumber","validEmail","Validations","validateEmail","validCellPhoneNumber","validateCellPhoneNumber","signUpStep1TermsChecked","is","validPersonalIdentityNumber","validatePersonalIdentityNumber","data","campaignCode","campaignName","email","cellPhone","signUpChecked","step2","stepBack","reset","directDebitStep1","directDebitStep1Text","directDebitStep2","directDebitDropDown","directDebitSubmitButton","selectedIndex","attr","each","this","submit","step5","step5Container","thankYou","container","overlay","error","on","e","which","birthYear","parseInt","NaN","empty","validIdentityNumber","enableStep1SubmitButtonIfAllInputIsValid","enableStep5SubmitButtonIfAllInputIsValid","enableCampaignStep1Button","setCampaignCode","isInit","dropdownOptionIndex","Array","from","querySelectorAll","findIndex","x","trigger","gtmItem","GTM","GtmPageData","items","find","item_id","Ecommerce","selectItem","paymentHeight","showPaymentType","paymentType","publishEvent","speed","animate","scrollTop","offset","top","pubsub","publish","formEnabled","selectedItem","getSelectedProductGtmItem","beginCheckout","index","button","click","isUserLoggedIn","getAttribute","height","input","target","topics","id","callbacks","topic","jQuery","Callbacks","fire","subscribe","unsubscribe","remove","state","cardHasLoaded","swishHasLoaded","setPaymentType","type","currentValue","getElementById","toLowerCase","addPaymentInfo","getFormData","mobile","ssn","customerId","causeOfPayment","requestedTicketNumber","handleSwedbankPayment","paymentUrl","paymentId","initSwedbank","purchase","signUpData","fetch","method","body","JSON","stringify","headers","Content-Type","then","res","json","errorType","handleError","redirectUri","externalPaymentId","catch","err","undefined","hidden","let","disableInputs","enableInputs","PAYMENT_EVENT_TYPE","PENDING","COMPLETED","ERROR","pendingState","currentPaymentType","script","createElement","setAttribute","onload","payex","hostedView","creditCard","invoice","swish","culture","onPaymentPending","updatePaymentStatus","onPaymentCompleted","onPaymentCanceled","onPaymentFailed","onError","onPaymentTransactionFailed","o","onApplicationConfigured","setPaymentListVisibility","open","getElementsByTagName","appendChild","paymentMethodListEl","updateQueryStringParam","agId","eventType","event","status","success","paymentMightHaveSucceeded","msg","enableRetry","errorText","indexOf","replaceAll","html","e_paymentRedirectUriEl","directDebitOptionEl","useExistingMethod","toString","e_paymentIdEl","e_paymentMethodEl","checked","directDebitTypeId","replace","DirectDebit","RegisterFormDataDelegate","formData","Phone","Email","PersonalIdentityNumber","PaymentMethod","CustomerId","RequestedTicketNumber","SetDirectDebitRequestType","selectedCampaignCode"],"mappings":"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"}