{"version":3,"sources":["app/js/checkout-new/validations/section-validation-model.js","app/js/checkout-new/validation-extensions.js","app/js/checkout-new/section-model.js","app/js/checkout-new/checkout-validation.js","app/js/checkout-new/resources.js","app/js/checkout-new/models/login-or-register-model.js","app/js/checkout-new/login-view-model.js"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACpEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AClBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACzFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AC3fA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA","file":"account.js","sourcesContent":["var PES = PES || {};\r\n\r\nPES.SectionValidationModel = function (model) {\r\n\r\n var self = this;\r\n\r\n // Enable use of validationOptions ko object in order to apply custom invalid classes to the input elements\r\n ko.validation.configuration.decorateInputElement = true; \r\n\r\n self.generalErrors = ko.observableArray([]);\r\n self.generalCriticalErrors = ko.observableArray([]);\r\n self.validationOptions = {\r\n decorateInputElement: true,\r\n errorElementClass: 'error-element',\r\n errorMessageClass: 'error-message'\r\n };\r\n self.errors = ko.validation.group(model, { deep: true });\r\n self.isValidating = ko.observable(false);\r\n self.hasBeenValidated = ko.observable(false);\r\n self.errorTitle = ko.observable(\"\");\r\n self.errorContent = ko.observable(\"\");\r\n self.errorSmallContent = ko.observable(\"\");\r\n self.criticalErrorTitle = ko.observable(\"\");\r\n self.criticalErrorContent = ko.observable(\"\");\r\n self.criticalErrorSmallContent = ko.observable(\"\");\r\n self.note = ko.observable(\"\");\r\n\r\n self.hasCustomError = ko.computed(function () {\r\n return self.errorTitle() ||\r\n self.errorContent() ||\r\n self.errorSmallContent();\r\n });\r\n\r\n self.hasCustomCriticalError = ko.computed(function () {\r\n return self.criticalErrorTitle() ||\r\n self.criticalErrorContent() ||\r\n self.criticalErrorSmallContent();\r\n });\r\n\r\n self.isValid = ko.computed(function () {\r\n return self.errors().length === 0;\r\n });\r\n\r\n self.canValidate = ko.computed(function () {\r\n return self.isValid() && !self.isValidating();\r\n });\r\n\r\n self.cleanErrors = function () {\r\n self.criticalErrorTitle(null);\r\n self.criticalErrorContent(null);\r\n self.criticalErrorSmallContent(null);\r\n self.errorTitle(null);\r\n self.errorContent(null);\r\n self.errorSmallContent(null);\r\n self.generalErrors.removeAll();\r\n self.generalCriticalErrors.removeAll();\r\n self.errors = ko.validation.group(model, { deep: true });\r\n };\r\n\r\n self.cleanGeneralErrors = function () {\r\n self.generalErrors.removeAll();\r\n self.generalCriticalErrors.removeAll();\r\n self.errors = ko.validation.group(model, { deep: true });\r\n };\r\n};\r\n\r\n\r\n\r\n","//extend the append error to concatenate the errors\r\nko.observable.fn.appendError = function (error) {\r\n var thisError = this.error();\r\n if (thisError) {\r\n this.setError(thisError += '. ' + error);\r\n }\r\n else {\r\n this.setError(error);\r\n };\r\n};","var PES = PES || {};\r\n\r\nPES.SectionModel = function (identifier, validateFunction, validated) {\r\n var self = this;\r\n self.display = ko.observable(true);\r\n self.identifier = identifier;\r\n self.validate = validateFunction;\r\n self.isCurrentLogicalStep = ko.observable(false);\r\n\r\n if (validated != null && validated !== undefined) {\r\n self.validated = validated;\r\n }\r\n else {\r\n self.validated = ko.observable(false);\r\n }\r\n\r\n return self;\r\n};","var PES = PES || {};\r\n\r\n//this is not refactored yet\r\n//it will be extracted into seperate files when each step is gonna be implemented\r\nPES.CheckoutValidation = function () {\r\n\r\n function loginOrRegister(checkoutViewModel, callbackFunction, callbackParam) {\r\n callbackFunction(callbackParam);\r\n }\r\n\r\n function paymentInformation(checkoutViewModel, callbackFunction, callbackParam) {\r\n callbackFunction(callbackParam);\r\n }\r\n\r\n return {\r\n loginOrRegister: loginOrRegister,\r\n paymentInformation: paymentInformation\r\n }\r\n}();","var PES = PES || {};\r\n\r\nPES.Resources = {\r\n FieldRequired: ko.observable(\"\"),\r\n FieldExceedsCharacterLimit: ko.observable(\"\"),\r\n NotValidEmailAddress: ko.observable(\"\"),\r\n DefaultErrorMessage: ko.observable(\"\"),\r\n InvalidBillingErrorMessage: ko.observable(\"\"),\r\n IncorrectPassword: ko.observable(\"\"),\r\n EmailConfirmationRequired: ko.observable(\"\"),\r\n CustomerResellerNote: ko.observable(\"\"),\r\n ResellerLoginAsCustomer: ko.observable(\"\"),\r\n ForgotPasswordSentMessage: ko.observable(\"\"),\r\n SignInorRegister: ko.observable(\"\"),\r\n SignIn: ko.observable(\"\"),\r\n Register: ko.observable(\"\"),\r\n SignedInAs: ko.observable(\"\"),\r\n SignedInAsReseller: ko.observable(\"\"),\r\n AsReseller: ko.observable(\"\"),\r\n ReviewCart: ko.observable(\"\"),\r\n PaymentInformation: ko.observable(\"\"),\r\n AccountDetails: ko.observable(\"\"),\r\n ResellerDetails: ko.observable(\"\"),\r\n YourCustomerDetails: ko.observable(\"\"),\r\n ResendLink: ko.observable(\"\"),\r\n ResetPassword: ko.observable(\"\"),\r\n CustomerEmailSameAsReseller: ko.observable(\"\"),\r\n OrderExpired: ko.observable(\"\"),\r\n BasketChanged: ko.observable(\"\"),\r\n OrderNoCreditCard: ko.observable(\"\"),\r\n IdenticalEmailDomainMessage: ko.observable(\"\"),\r\n OrderPaid: ko.observable(\"\"),\r\n PaymentInProgress: ko.observable(\"\"),\r\n ErrorInvalidData: ko.observable(\"\"),\r\n PaymentIntentExists: ko.observable(\"\"),\r\n SecureLayerText: ko.observable(\"\"),\r\n DisplayResetPasswordExpiredMessage: ko.observable(\"\"),\r\n DisplayForceLoggedOutMessage: ko.observable(\"\"),\r\n MaximumLengthExceededMessage: ko.observable(\"\"),\r\n UnsupportedCharacters: ko.observable(\"\"),\r\n\r\n loadResources: function () {\r\n var self = this;\r\n $.ajax({\r\n async: false,\r\n type: \"GET\",\r\n url: \"api/resources\",\r\n success: function (resources) {\r\n self.FieldRequired(resources.FieldRequired);\r\n self.FieldExceedsCharacterLimit(resources.FieldExceedsCharacterLimit);\r\n self.NotValidEmailAddress(resources.NotValidEmailAddress);\r\n self.EmailConfirmationRequired(resources.EmailConfirmationRequired);\r\n self.CustomerResellerNote(resources.CustomerResellerNote);\r\n self.DefaultErrorMessage(resources.DefaultErrorMessage);\r\n self.InvalidBillingErrorMessage(resources.InvalidBillingErrorMessage);\r\n self.IncorrectPassword(resources.IncorrectPassword);\r\n self.ResellerLoginAsCustomer(resources.ResellerLoginAsCustomer);\r\n self.ForgotPasswordSentMessage(resources.ForgotPasswordSentMessage);\r\n self.SignInorRegister(resources.SignInorRegister);\r\n self.SignIn(resources.SignIn);\r\n self.Register(resources.Register);\r\n self.SignedInAs(resources.SignedInAs);\r\n self.SignedInAsReseller(resources.SignedInAsReseller);\r\n self.AsReseller(resources.AsReseller);\r\n self.ReviewCart(resources.ReviewCart);\r\n self.PaymentInformation(resources.PaymentInformation);\r\n self.AccountDetails(resources.AccountDetails);\r\n self.ResellerDetails(resources.ResellerDetails);\r\n self.YourCustomerDetails(resources.YourCustomerDetails);\r\n self.ResendLink(resources.ResendLink);\r\n self.ResetPassword(resources.ResetPassword);\r\n self.CustomerEmailSameAsReseller(resources.CustomerEmailSameAsReseller);\r\n self.OrderExpired(resources.OrderExpired);\r\n self.BasketChanged(resources.BasketChanged);\r\n self.OrderNoCreditCard(resources.OrderNoCreditCard);\r\n self.IdenticalEmailDomainMessage(resources.IdenticalEmailDomainMessage);\r\n self.OrderPaid(resources.OrderPaid);\r\n self.PaymentInProgress(resources.PaymentInProgress);\r\n self.ErrorInvalidData(resources.ErrorInvalidData);\r\n self.PaymentIntentExists(resources.PaymentIntentExists);\r\n self.SecureLayerText(resources.AdditionalLayer);\r\n self.DisplayResetPasswordExpiredMessage(resources.DisplayResetPasswordExpiredMessage);\r\n self.DisplayForceLoggedOutMessage(resources.DisplayForceLoggedOutMessage);\r\n self.MaximumLengthExceededMessage(resources.MaximumLengthExceededMessage);\r\n self.UnsupportedCharacters(resources.UnsupportedCharactersMessage);\r\n }\r\n });\r\n }\r\n}\r\n","var PES = PES || {};\r\n\r\nPES.LoginOrRegisterModel = {\r\n isCheckoutFlow: ko.observable(true),\r\n email: ko.observable(\"\"),\r\n password: ko.observable(\"\"),\r\n loginOrRegisterValidation: {},\r\n passwordStrength: null,\r\n\r\n displayLogin: ko.observable(false),\r\n displayRegister: ko.observable(false),\r\n displayLoggedIn: ko.observable(false),\r\n displayForgotPassword: ko.observable(false),\r\n displayForgotPasswordSent: ko.observable(false),\r\n displayResendConfirmation: ko.observable(false),\r\n displayAccountRecognized: ko.observable(false),\r\n displayAccountRegister: ko.observable(false),\r\n emailIsInvalid: ko.observable(false),\r\n displayLoadingSpinner: ko.observable(true),\r\n displayEmailConfirmationRequired: ko.observable(false),\r\n displayResetPasswordExpired: ko.observable(false),\r\n timer: ko.observable(\"\"),\r\n formattedTimer: ko.observable(\"\"),\r\n displayForgotPasswordCountDownTimer: ko.observable(false),\r\n displayForceLoggedOut: ko.observable(false),\r\n\r\n displayLoginOrRegister: function () {\r\n var self = this;\r\n return !self.displayLogin() && !self.displayRegister() && !self.displayLoggedIn();\r\n },\r\n\r\n displayResetPasswordExpiredMessage: function () {\r\n return PES.Resources.DisplayResetPasswordExpiredMessage();\r\n },\r\n\r\n displayForceLoggedOutMessage: function () {\r\n return PES.Resources.DisplayForceLoggedOutMessage();\r\n },\r\n\r\n forgotPasswordSentMessage: ko.observable(\"\"),\r\n forgotPasswordButtonMessage: ko.observable(\"\"),\r\n\r\n tryClearPassword: function (mailRecognized) {\r\n var self = this;\r\n if ((mailRecognized && self.displayRegister()) ||\r\n (!mailRecognized && self.displayLogin()) ||\r\n (!mailRecognized && !self.displayRegister() && !self.displayRegister())) {\r\n self.clearPassword();\r\n }\r\n\r\n },\r\n\r\n clearPassword: function () {\r\n var self = this;\r\n self.password('');\r\n $('#password').trigger('change');\r\n },\r\n\r\n checkEmail: function () {\r\n var self = this;\r\n if (self.email == undefined) {\r\n self = this.loginOrRegister;\r\n }\r\n self.displayResetPasswordExpired(false);\r\n\r\n if (self.email() === '') {\r\n appendError(\"#email\", PES.Resources.FieldRequired());\r\n }\r\n else if (self.loginOrRegisterValidation.errors()[0] === PES.Resources.NotValidEmailAddress()) {\r\n appendError(\"#email\", PES.Resources.NotValidEmailAddress());\r\n }\r\n else if (self.loginOrRegisterValidation.errors().length !== 0 && self.password() !== '') {\r\n self.displayAccountRecognized(false);\r\n self.displayAccountRegister(false);\r\n self.emailIsInvalid(true);\r\n\r\n if (self.email() === '') {\r\n appendError(\"#email\", PES.Resources.FieldRequired());\r\n }\r\n }\r\n else {\r\n var displayLoginOrRegister = self.displayLoginOrRegister();\r\n self.loginOrRegisterValidation.cleanGeneralErrors();\r\n self.emailIsInvalid(false);\r\n $.post(\"api/can-login\", { email: self.email()})\r\n .done(function (response) {\r\n var mailRecognized = response.EmailRegistered && response.LoginAllowed;\r\n\r\n if (mailRecognized) {\r\n self.startTimer(response.ResetPasswordRemainingCountDownSeconds);\r\n }\r\n\r\n self.tryClearPassword(mailRecognized);\r\n self.displayLogin(false);\r\n self.displayRegister(false);\r\n self.displayResendConfirmation(false);\r\n self.loginOrRegisterValidation.note(\"\");\r\n\r\n if (response.EmailRegistered) {\r\n\r\n self.displayAccountRecognized(true);\r\n self.displayAccountRegister(false);\r\n\r\n if (resellerAttemptsToLoginAsCustomer(response.IsReseller, self.isReseller(), response.HasAnyPurchase)) {\r\n self.loginOrRegisterValidation.note(PES.Resources.ResellerLoginAsCustomer());\r\n }\r\n\r\n if (!response.LoginAllowed && displayLoginOrRegister) {\r\n self.loginOrRegisterValidation.cleanErrors();\r\n self.loginOrRegisterValidation.generalErrors.push(PES.Resources.EmailConfirmationRequired());\r\n self.displayResendConfirmation(true);\r\n } else {\r\n self.displayLogin(true);\r\n self.displayEmailConfirmationRequired(!response.LoginAllowed);\r\n }\r\n\r\n $('.strengthify-wrapper').hide();\r\n } else {\r\n self.displayAccountRecognized(false);\r\n self.displayAccountRegister(true);\r\n self.displayRegister(true);\r\n }\r\n })\r\n .fail(function () {\r\n self.loginOrRegisterValidation.cleanErrors();\r\n self.loginOrRegisterValidation.generalErrors.push(PES.Resources.DefaultErrorMessage());\r\n self.loginOrRegisterValidation.note(\"\");\r\n self.displayAccountRecognized(false);\r\n self.displayAccountRegister(false);\r\n });\r\n }\r\n },\r\n\r\n sendConfirmationLinkEmail: function () {\r\n var self = this;\r\n self.displayLoadingSpinner(true);\r\n self.loginOrRegister.displayLoadingSpinner(true);\r\n self.loginOrRegister.loginOrRegisterValidation.cleanErrors();\r\n var execute = function (token) {\r\n createOrUpdateInput(self.loginOrRegister.email(), \"email\", \"resend-confirmation-link-form\", \"email-confirmation-link\");\r\n $(\"input[name='__RequestVerificationToken']\").val(token);\r\n var formData = $(\"#resend-confirmation-link-form\").serialize();\r\n var formAction = $(\"#resend-confirmation-link-form\").attr(\"action\");\r\n $.post(formAction, formData)\r\n .done(function (data) {\r\n if (data.Success) {\r\n self.loginOrRegister.displayResendConfirmation(false);\r\n } else {\r\n data.Errors.forEach(function (error) {\r\n self.loginOrRegister.loginOrRegisterValidation.generalErrors.push(error);\r\n });\r\n }\r\n self.displayLoadingSpinner(false);\r\n self.loginOrRegister.displayLoadingSpinner(false);\r\n })\r\n .fail(function () {\r\n self.loginOrRegister.loginOrRegisterValidation.generalErrors.push(PES.Resources.DefaultErrorMessage());\r\n self.displayLoadingSpinner(false);\r\n self.loginOrRegister.displayLoadingSpinner(false);\r\n });\r\n }\r\n\r\n return regenerateAntiforgeryToken(execute);\r\n },\r\n\r\n goToForgotPassword: function () {\r\n var self = this;\r\n self.displayForgotPassword(true);\r\n self.displayForgotPasswordSent(false);\r\n self.forgotPasswordButtonMessage(PES.Resources.ResetPassword());\r\n if (self.timer > 0) {\r\n self.displayForgotPasswordCountDownTimer(true);\r\n $(\"#forgot-password-btn\").prop('disabled', 'disabled');\r\n }\r\n },\r\n\r\n sendForgotPasswordEmail: function () {\r\n var self = this;\r\n self.displayLoadingSpinner(true);\r\n self.loginOrRegister.displayLoadingSpinner(true);\r\n self.loginOrRegister.displayForgotPasswordSent(false);\r\n self.loginOrRegister.loginOrRegisterValidation.cleanErrors();\r\n var execute = function (token) {\r\n createOrUpdateInput(self.loginOrRegister.email(), \"email\", \"forgot-password-form\", \"email-reset-password\");\r\n $(\"input[name='__RequestVerificationToken']\").val(token);\r\n var formData = $(\"#forgot-password-form\").serialize();\r\n var formAction = $(\"#forgot-password-form\").attr(\"action\");\r\n $.post(formAction, formData)\r\n .done(function (data) {\r\n if (data.Success) {\r\n self.loginOrRegister.forgotPasswordSentMessage(PES.Resources.ForgotPasswordSentMessage());\r\n self.loginOrRegister.displayForgotPasswordSent(true);\r\n self.loginOrRegister.forgotPasswordButtonMessage(PES.Resources.ResendLink());\r\n\r\n if (data.ResetPasswordRemainingCountDownSeconds > 0) {\r\n self.loginOrRegister.startTimer(data.ResetPasswordRemainingCountDownSeconds);\r\n self.loginOrRegister.displayForgotPasswordCountDownTimer(true);\r\n $(\"#forgot-password-btn\").prop('disabled', 'disabled');\r\n }\r\n } else {\r\n data.Errors.forEach(function (error) {\r\n if (data.ResetPasswordRemainingCountDownSeconds > 0) {\r\n self.loginOrRegister.forgotPasswordSentMessage(PES.Resources.ForgotPasswordSentMessage());\r\n self.loginOrRegister.displayForgotPasswordSent(true);\r\n self.loginOrRegister.forgotPasswordButtonMessage(PES.Resources.ResendLink());\r\n self.loginOrRegister.startTimer(data.ResetPasswordRemainingCountDownSeconds);\r\n self.loginOrRegister.displayForgotPasswordCountDownTimer(true);\r\n $(\"#forgot-password-btn\").prop('disabled', 'disabled');\r\n } else {\r\n self.loginOrRegister.loginOrRegisterValidation.generalErrors.push(error);\r\n }\r\n });\r\n }\r\n self.displayLoadingSpinner(false);\r\n self.loginOrRegister.displayLoadingSpinner(false);\r\n })\r\n .fail(function() {\r\n self.loginOrRegister.loginOrRegisterValidation.generalErrors.push(PES.Resources.DefaultErrorMessage());\r\n self.displayLoadingSpinner(false);\r\n self.loginOrRegister.displayLoadingSpinner(false);\r\n });\r\n }\r\n\r\n return regenerateAntiforgeryToken(execute);\r\n },\r\n\r\n goBackToLogin: function () {\r\n var self = this;\r\n self.loginOrRegister.displayForgotPassword(false);\r\n self.loginOrRegister.displayResendConfirmation(false);\r\n self.loginOrRegister.displayForgotPasswordSent(false);\r\n self.loginOrRegister.displayForgotPasswordCountDownTimer(false);\r\n self.loginOrRegister.loginOrRegisterValidation.cleanErrors();\r\n },\r\n\r\n toggleAccountMenu: function () {\r\n $.get(\"/user-dropdown-menu\", function (data) {\r\n var jqAccountMenu = $('.account-menu')\r\n jqAccountMenu.children('li:not(.shopping-bag)').remove();\r\n jqAccountMenu.append(data);\r\n });\r\n },\r\n\r\n validate: function (checkoutViewModel, callbackFunction, callbackParam) {\r\n var self = checkoutViewModel;\r\n addPasswordValidation(self.loginOrRegister, true);\r\n clearError(\"#password\", PES.Resources.IncorrectPassword());\r\n if (self.loginOrRegister.loginOrRegisterValidation.errors().length !== 0) {\r\n return 0;\r\n }\r\n\r\n addPasswordValidation(self.loginOrRegister, false);\r\n self.displayLoadingSpinner(true);\r\n self.loginOrRegister.displayLoadingSpinner(true);\r\n self.loginOrRegister.loginOrRegisterValidation.cleanErrors();\r\n var execute = function (token) {\r\n createOrUpdateInput(self.loginOrRegister.isCheckoutFlow(), \"isCheckoutFlow\", \"login-or-register-form\", \"isCheckoutFlow-input-login-register\");\r\n createOrUpdateInput(self.isReseller(), \"isReseller\", \"login-or-register-form\", \"reseller-input-login-register\");\r\n $(\"input[name='__RequestVerificationToken']\").val(token);\r\n var jqLoginForm = $(\"#login-or-register-form\");\r\n var formData = jqLoginForm.serialize();\r\n var formAction = jqLoginForm.attr(\"action\");\r\n $.post(formAction, formData)\r\n .done(function (data) {\r\n if (data.Success) {\r\n localStorage.setItem('userCreated', self.loginOrRegister.displayRegister());\r\n\r\n if (self.loginOrRegister.isCheckoutFlow()) {\r\n self.loginOrRegister.displayLogin(false);\r\n self.loginOrRegister.displayRegister(false);\r\n self.loginOrRegister.displayLoggedIn(true);\r\n self.loginOrRegisterSection.validated(true);\r\n\r\n var updateLayout = function () {\r\n self.reviewCartModel.getData();\r\n callbackFunction(callbackParam);\r\n self.displayLoadingSpinner(false);\r\n self.loginOrRegister.displayLoadingSpinner(false);\r\n addResellerCustomerEmailValidation(self);\r\n self.loginOrRegister.password(\"\");\r\n self.loginOrRegister.toggleAccountMenu();\r\n }\r\n\r\n self.getAccountDetails(updateLayout);\r\n } else {\r\n var redirectUrl = jqLoginForm.serializeArray().filter(function (el) { return el.name === 'ReturnUrl'; })[0].value;\r\n callbackFunction(data, redirectUrl);\r\n }\r\n return true;\r\n } else {\r\n data.Errors.forEach(function (error) {\r\n if (error === PES.Resources.IncorrectPassword()) {\r\n appendError(\"#password\", error);\r\n }\r\n else {\r\n self.loginOrRegister.loginOrRegisterValidation.generalErrors.push(error);\r\n }\r\n });\r\n self.displayLoadingSpinner(false);\r\n self.loginOrRegister.displayLoadingSpinner(false);\r\n return false;\r\n }\r\n }).fail(function () {\r\n self.loginOrRegister.loginOrRegisterValidation.generalErrors.push(PES.Resources.DefaultErrorMessage());\r\n self.displayLoadingSpinner(false);\r\n self.loginOrRegister.displayLoadingSpinner(false);\r\n return false;\r\n });\r\n }\r\n return regenerateAntiforgeryToken(execute);\r\n },\r\n\r\n registerEventListeners: function (checkoutViewModel) {\r\n addEmailValidation(checkoutViewModel, true);\r\n\r\n var self = this;\r\n self.passwordStrength = new PES.PasswordStrengthModel('password', self);\r\n\r\n var email = document.getElementById(\"email\");\r\n email.addEventListener(\"keydown\", function (e) {\r\n if (e.keyCode === 13) {\r\n if (self.displayForgotPassword()) {\r\n $(\"#forgot-password-btn\").click();\r\n } else {\r\n if (self.displayResendConfirmation()) {\r\n $(\"#resend-confirmation-link\").click();\r\n } else {\r\n if (self.displayLoginOrRegister()) {\r\n $(\"#check-email-btn\").click();\r\n } else {\r\n document.getElementById(\"password\").focus();\r\n }\r\n }\r\n }\r\n }\r\n });\r\n\r\n email.addEventListener(\"keyup\", function (e) {\r\n self.email(e.target.value.trim());\r\n if (!self.displayLoginOrRegister()) {\r\n self.checkEmail();\r\n } else if (self.email() !== '') {\r\n clearError(\"#email\", PES.Resources.NotValidEmailAddress());\r\n $(email).removeClass('invalid');\r\n }\r\n });\r\n\r\n email.addEventListener(\"focusout\", function (e) {\r\n if ($(email).hasClass('invalid')) {\r\n appendError(\"#email\", PES.Resources.NotValidEmailAddress());\r\n }\r\n });\r\n\r\n var password = document.getElementById(\"password\");\r\n\r\n password.addEventListener(\"keydown\", function (e) {\r\n if (e.keyCode === 13) {\r\n setTimeout(function () { $(\"#login-or-register-btn\").click(); }, 300);\r\n }\r\n });\r\n\r\n password.addEventListener(\"keyup\", function (e) {\r\n var pass = $(e.target).val();\r\n if (pass.trim() === '') {\r\n appendError(\"#password\", PES.Resources.FieldRequired());\r\n } else {\r\n clearError(\"#password\", PES.Resources.IncorrectPassword());\r\n clearError(\"#password\", PES.Resources.FieldRequired());\r\n }\r\n });\r\n\r\n email.addEventListener(\"focus\", function (e) {\r\n if ($(\"label.top-negative-30\").length) {\r\n $(\"label.top-negative-30\").removeClass(\"top-negative-30\");\r\n }\r\n });\r\n\r\n email.addEventListener(\"focusout\", function (e) {\r\n if (self.displayEmailConfirmationRequired()) {\r\n self.displayLogin(false);\r\n self.displayRegister(false);\r\n self.displayResendConfirmation(false);\r\n self.loginOrRegisterValidation.note(\"\");\r\n\r\n self.loginOrRegisterValidation.cleanErrors();\r\n self.loginOrRegisterValidation.generalErrors.push(PES.Resources.EmailConfirmationRequired());\r\n self.displayResendConfirmation(true);\r\n\r\n self.displayEmailConfirmationRequired(false);\r\n }\r\n });\r\n },\r\n\r\n startTimer: function (duration) {\r\n var self = this;\r\n self.timer = duration;\r\n var minutes, seconds;\r\n\r\n var calculateFormattedTimer = function () {\r\n var minutes = parseInt(self.timer / 60, 10);\r\n var seconds = parseInt(self.timer % 60, 10);\r\n\r\n minutes = minutes < 10 ? \"0\" + minutes : minutes;\r\n seconds = seconds < 10 ? \"0\" + seconds : seconds;\r\n return minutes + \":\" + seconds;\r\n };\r\n\r\n self.formattedTimer(calculateFormattedTimer());\r\n var myInterval = setInterval(function () {\r\n self.formattedTimer(calculateFormattedTimer());\r\n\r\n if (--self.timer < 0) {\r\n clearInterval(myInterval);\r\n self.displayForgotPasswordCountDownTimer(false);\r\n $(\"#forgot-password-btn\").prop('disabled', '');\r\n }\r\n }, 1000);\r\n }\r\n}\r\n\r\nfunction createOrUpdateInput(inputValue, inputName, formContainerId, inputElementId) {\r\n var inputElement = document.getElementById(inputElementId);\r\n if (inputElement == undefined) {\r\n inputElement = document.createElement(\"input\");\r\n setInputAttributes(inputElement, inputElementId, inputValue, inputName);\r\n var loginOrRegisterForm = document.getElementById(formContainerId);\r\n loginOrRegisterForm.appendChild(inputElement);\r\n } else {\r\n setInputAttributes(inputElement, inputElementId, inputValue, inputName);\r\n }\r\n}\r\n\r\nfunction setInputAttributes(inputElement, inputElementId, inputValue, inputName) {\r\n inputElement.setAttribute(\"id\", inputElementId);\r\n inputElement.setAttribute(\"type\", \"hidden\");\r\n inputElement.setAttribute(\"name\", inputName);\r\n inputElement.setAttribute(\"value\", inputValue);\r\n}\r\n\r\nfunction regenerateAntiforgeryToken(callback) {\r\n $.get(\"/api/antiforgery-token\", function (data) {\r\n callback(data.Token);\r\n });\r\n}\r\n\r\nfunction resellerAttemptsToLoginAsCustomer(emailUserIsReseller, resellerFlowSelected,hasAnyPurchase) {\r\n if (resellerFlowSelected && !emailUserIsReseller && hasAnyPurchase) {\r\n return true;\r\n }\r\n return false;\r\n}\r\n\r\nfunction addEmailValidation(checkoutViewModel, checkEmail) {\r\n var self = checkoutViewModel;\r\n if (!checkEmail) {\r\n self.loginOrRegister.email.extend({ validatable: false });\r\n return;\r\n }\r\n\r\n self.loginOrRegister.email.extend({\r\n required: {\r\n message: PES.Resources.FieldRequired(),\r\n onlyIf: function() {\r\n return checkEmail;\r\n }\r\n },\r\n email: { message: PES.Resources.NotValidEmailAddress() }\r\n });\r\n}\r\n\r\nfunction addPasswordValidation(loginOrRegisterModel, checkPwd) {\r\n var self = loginOrRegisterModel;\r\n if (!checkPwd) {\r\n self.password.extend({ validatable: false });\r\n return;\r\n }\r\n\r\n self.password.extend({\r\n required: {\r\n message: PES.Resources.FieldRequired(),\r\n onlyIf: function () {\r\n return !self.displayLoginOrRegister() && checkPwd;\r\n }\r\n }\r\n });\r\n}\r\n\r\nfunction addResellerCustomerEmailValidation(checkoutViewModel) {\r\n var self = checkoutViewModel;\r\n self.accountInformation.resellerCustomerDetails.email.extend({\r\n required: { message: PES.Resources.FieldRequired() },\r\n email: { message: PES.Resources.NotValidEmailAddress() },\r\n notEqual: {\r\n params: self.loginOrRegister.email(),\r\n message: PES.Resources.CustomerEmailSameAsReseller()\r\n }\r\n });\r\n}\r\n\r\nfunction appendError(element, error) {\r\n $(element).siblings(\".validationMessage\").text(error).show();\r\n}\r\n\r\nfunction clearError(element, error) {\r\n if ($(element).siblings(\".validationMessage\").text() === error) {\r\n $(element).siblings(\".validationMessage\").text(\"\").css(\"display\", \"none\");\r\n }\r\n}","var PES = PES || {};\r\nPES.LoginViewModel = function () {\r\n var self = this;\r\n\r\n self.displayLoadingSpinner = ko.observable(false);\r\n self.isReseller = ko.observable(false);\r\n self.loginOrRegister = PES.LoginOrRegisterModel;\r\n self.loginOrRegister.isCheckoutFlow(false);\r\n self.loginOrRegister.isReseller = ko.computed(function () { return self.isReseller(); });\r\n\r\n self.loginOrRegister.registerEventListeners(self);\r\n self.loginOrRegister.loginOrRegisterValidation = new PES.SectionValidationModel(self.loginOrRegister);\r\n self.isReseller.subscribe(function () { self.loginOrRegister.checkEmail(); });\r\n\r\n self.loginOrRegisterSection = new PES.SectionModel(\"login-or-register\", PES.LoginOrRegisterModel.validate, self.loginOrRegister.loginOrRegisterValidation.hasBeenValidated);\r\n self.loginOrRegisterSection.displayLoginOrRegister = ko.computed(function () {\r\n return self.loginOrRegister.displayLoginOrRegister();\r\n });\r\n\r\n self.displayResetPasswordExpired = function (displayResetPasswordExpired) {\r\n self.loginOrRegister.displayResetPasswordExpired(displayResetPasswordExpired);\r\n }\r\n self.displayForceLoggedOut = function (displayForceLoggedOut) {\r\n self.loginOrRegister.displayForceLoggedOut(displayForceLoggedOut);\r\n }\r\n\r\n self.clearErrors = function () {\r\n self.loginOrRegister.loginOrRegisterValidation.cleanErrors();\r\n self.loginOrRegister.loginOrRegisterValidation.errors.showAllMessages(false);\r\n }\r\n\r\n self.goToNextStep = function () {\r\n self.loginOrRegister.validate(self, self.redirectAfterLogin);\r\n }\r\n\r\n self.redirectAfterLogin = function (data, redirectUrl) {\r\n if (redirectUrl) {\r\n self.loginOrRegisterSection.display(false);\r\n }\r\n window.location.href = data.RedirectUrl;\r\n }\r\n\r\n self.loginOrRegisterTitle = ko.computed(function () {\r\n if (self.loginOrRegister.displayLoginOrRegister()) {\r\n if (self.isReseller()) {\r\n return PES.Resources.SignInorRegister() + \" \" + PES.Resources.AsReseller();\r\n } else {\r\n return PES.Resources.SignInorRegister();\r\n }\r\n }\r\n if (self.loginOrRegister.displayLogin()) {\r\n if (self.isReseller()) {\r\n return PES.Resources.SignIn() + \" \" + PES.Resources.AsReseller();\r\n } else {\r\n return PES.Resources.SignIn();\r\n }\r\n }\r\n if (self.loginOrRegister.displayRegister()) {\r\n if (self.isReseller()) {\r\n return PES.Resources.Register() + \" \" + PES.Resources.AsReseller();\r\n } else {\r\n return PES.Resources.Register();\r\n }\r\n }\r\n if (self.loginOrRegister.displayLoggedIn()) {\r\n if (self.isReseller()) {\r\n return PES.Resources.SignedInAsReseller() + \" \" + self.loginOrRegister.email();\r\n } else {\r\n return PES.Resources.SignedInAs() + \" \" + self.loginOrRegister.email();\r\n }\r\n }\r\n return PES.Resources.SignInorRegister();\r\n });\r\n\r\n self.loginOrRegister.displayRegister.subscribe(function (newValue) {\r\n $('.strengthify-wrapper').toggle(newValue);\r\n });\r\n}"]}