﻿class Login{constructor(){this.email="";this.errorMessage="";this.errorMessages={email:"Email error message",social_link:"Social link error message",};this.currentCountry="";this.domains={dk:"",se:"",no:""};this.name="";this.password="";this.companyName="";this.CVR="";this.acceptMarketing=false;this.isInvoiceMember=false;this.socialLoginProvider="";this.userInfo=null;this.stepsList={main:"main",newRegister:"new-main-register",register:"main-register",login:"main-login",forgot:"forgot-password",type:"account-type",socialRegister:"socialRegister-data",newSocialRegister:"newSocialRegister-data",sent:"reset-email-sent",facebook:"Facebook",google:"Google",link:"linked-account",draft:"draft-created",};this.step=this.stepsList.main;this.stepsHistory=[this.stepsList.main];this.accountType="private";this.linkingAccount=false;this.showAccountLinked=false;this.setStep=this.setStep.bind(this);this.changeInfo=true;this.loginTrigger="";this.returnUrl="";this.shouldSubmit=false;this.saveDraft=false;this.loadDocumentData=false;this.onboardCompany=0;}
checkEmailExists(){if(!this.validateEmail(this.email)||this.email.length===0){this.errorMessage=this.errorMessages["email"];return;}
var self=this;$.ajax("/umbraco/Surface/Membership/EmailIsUsed?email="+
encodeURIComponent(this.email),{type:"GET",success:function(response){var accountCountry;switch(response.Data["country"]){case'["Denmark"]':accountCountry="dk";break;case'["Sweden"]':accountCountry="se";break;case'["Norway"]':accountCountry="no";break;default:break;}
if(accountCountry&&self.currentCountry!=accountCountry){redirectTo(self.domains[accountCountry]+"/?open_modal=true");return;}else{$("#overlay2").hide();}
if(response.Data.emailIsUsed){self.name=response.Data.name;var provider=response.Data.provider==="F"?"facebook":response.Data.provider==="G"?"google":"email";self.dataLayerLoginSecondStep(provider);switch(response.Data.provider){case"F":self.setStep(self.stepsList.facebook);self.socialLoginProvider="Facebook";break;case"G":self.setStep(self.stepsList.google);self.socialLoginProvider="Google";break;default:if(self.userInfo){self.linkingAccount=true;self.redirectMyDocuments(response.RedirectUrl);return;}
self.setStep(self.stepsList.login);break;}}else{if(self.socialLoginProvider!=""){if(self.checkIfNewLogin()){self.setStep(self.stepsList.newSocialRegister);}else{window.dispatchEvent(new CustomEvent("vue-google-one-tap-modal-request",{detail:{showModal:true,fullName:self.name,email:self.email,token:self.userInfo.token,userId:self.userInfo.id,},}));function vueRedirectMyDocuments(event){if(event.detail.type==="submit"){self.redirectMyDocuments(event.detail.redirectUrl);}}
window.addEventListener("vue-google-one-tap-modal-response",vueRedirectMyDocuments);return;}
window.dataLayer.push({event:"Create user step 1","login trigger":self.loginTrigger,"login type":self.socialLoginProvider.toLowerCase(),});return;}
if(self.checkIfNewLogin()){window.dataLayer.push({event:"view_generate_lead",location:"sign_up_modal",});self.setStep(self.stepsList.newRegister);}else{self.setStep(self.stepsList.register);}
window.dataLayer.push({event:"Create user step 1","login trigger":self.loginTrigger,"login type":"email",});}},error:function(request,status,error){console.log(request,status,error);},});}
registerUser(callback=null){const self=this;$.ajax("/umbraco/Surface/Membership/Register",{type:"POST",contentType:"application/json",dataType:"json",data:JSON.stringify({FullName:this.name,Email:this.email,Password:this.password,CompanyName:this.companyName,CVR:this.CVR,AllowMarketingInRegistration:this.acceptMarketing,}),success:function(response){if(response.Success){self.isInvoiceMember=response.Data.Role==="InvoiceMember";if(!self.checkIfNewLogin()){self.redirectMyDocuments(response.RedirectUrl);}
var userSegment=response.Data.IsPrivateAccount?"B2C":"B2B";localStorage.setItem("userSegment",userSegment);localStorage.setItem("userId",response.Data.UserId);localStorage.setItem("newUser",response.Data.IsNewUser);self.trackUserCreationAndLogin(self,response);self.setProfileData();$("#overlay2").hide();}else{if(self.socialLoginProvider!==""){self.errorMessage=self.errorMessages["social_link"];}else{self.errorMessage=response.Message;}}
if(callback){callback(response);}},error:function(request,status,error){console.log(request,status,error);},});}
validateEmail(email){return /\S+@\S+\.\S+/.test(email);}
checkIfNewLogin(){return $("#newLogin_modal").length>0;}
setStep(newValue){if(newValue===this.stepsList.socialRegister||newValue===this.stepsList.newSocialRegister){this.changeInfo=false;}
this.errorMessage="";this.step=newValue;if(newValue===this.stepsList.type||newValue===this.stepsList.draft||newValue===this.stepsList.link){this.changeMenuUponLogin();}
if(this.stepsHistory[this.stepsHistory.length-1]===newValue){return;}
this.stepsHistory.push(newValue);var prependUrl=window.location.pathname==="/"?"?step=":window.location.pathname+"?step=";if(this.step===this.stepsList.forgot&&$("#loginModalElement").is(":hidden")){return;}
if((newValue!==this.stepsList.main||this.stepsHistory.length>1)&&!this.signingInvite){window.history.pushState({},"",prependUrl+newValue);}}
dataLayerLoginSecondStep(provider){window.dataLayer.push({event:"Login step 2","login trigger":this.loginTrigger,"login type":provider,});}
changeMenuUponLogin(){if(this.checkIfNewLogin()){$("div.btn-login.top-distance").hide();$("span.open-slide.slide-underline button#menu-button span#hamburger").hide();$("#overlay2").hide();}}
sendForgotPasswordEmail(){var self=this;$.ajax({url:"/umbraco/Surface/Membership/NewPassword?email="+
encodeURIComponent(this.email().toLowerCase()),type:"POST",dataType:"json",success:function(response){if(response.Success){self.setStep(self.stepsList.sent);}else{self.errorMessage=response.Message;}},});}
trackUserCreationAndLogin(response){window.dataLayer.push({event:"User created","login trigger":this.loginTrigger,"login type":this.socialLoginProvider==""?"email":this.socialLoginProvider.toLowerCase(),userData:{segment:this.accountType(),userID:response.Data.UserId,newUser:response.Data.IsNewUser,},});window.dataLayer.push({event:"Logged in","login trigger":this.loginTrigger,"login type":this.socialLoginProvider==""?"email":this.socialLoginProvider.toLowerCase(),userData:{segment:this.accountType(),userID:response.Data.UserId,newUser:response.Data.IsNewUser,},});}
setProfileData(){return $.ajax("/umbraco/Surface/Membership/Profile",{async:false,type:"GET",success:function(data,status,request){if(status=="success"){localStorage.setItem("ProfileData",JSON.stringify(data));}},});}
populateFields(user){if(user.google){this.socialLoginProvider="Google";}else{this.socialLoginProvider="Facebook";}
let fullname="";if(user.first_name){fullname+=user.first_name;}
if(user.last_name){fullname+=" "+user.last_name;}
this.name=fullname.trim();this.email=user.email;this.userInfo=user;this.checkEmailExists();}
async submitAndNextStep(){var $loginModal=$("div.flow_modal-companies");let isJurio=$loginModal.length===0;switch(this.step){case this.stepsList.socialRegister:if(!this.validateEmail(this.email)){this.errorMessage=this.errorMessages["email"];return;}
if(!this.validateName(this.name)){this.errorMessage=this.errorMessages["name"];return;}
if(this.checkAccountTypeChosen()){this.errorMessage=this.errorMessages["account_type"];break;}
if(this.checkCompanyIsSelected(isJurio)){this.errorMessage=this.errorMessages["company"];this.companySearchResults([]);this.currentSelection=undefined;break;}
if(!this.acceptTermsAndConditions()){this.errorMessage=this.errorMessages["terms_and_conditions"];break;}
this.userInfo.name=this.name();this.userInfo.companyName=this.companyName();this.userInfo.CVR=this.CVR();this.userInfo.AllowMarketingInRegistration=this.acceptMarketing();let registerRequest;if(this.socialLoginProvider==="Facebook"){registerRequest=await registerFBUserAndLoginCallBack(this.userInfo);}else{break;}
this.redirectMyDocuments(registerRequest.RedirectUrl);break;case this.stepsList.newSocialRegister:if(!this.validateEmail(this.email)){this.errorMessage=this.errorMessages["email"];return;}
if(!this.validateName(this.name)){this.errorMessage=this.errorMessages["name"];return;}
if(!this.acceptTermsAndConditions()){this.errorMessage=this.errorMessages["terms_and_conditions"];this.errorMessageTermsAndConditions=this.errorMessages["terms_and_conditions"];break;}
this.userInfo.name=this.name();this.userInfo.companyName=this.companyName();this.userInfo.CVR=this.CVR();this.userInfo.AllowMarketingInRegistration=this.acceptMarketing();let newRegisterRequest;if(this.socialLoginProvider==="Facebook"){newRegisterRequest=await registerFBUserAndLoginCallBack(this.userInfo);}else{newRegisterRequest=await registerGoogleUser(this.userInfo);}
if(!newRegisterRequest.Success){this.errorMessage=$("#socialErrorMessage").text();break;}
saveDraftAndSendMail(null);window.dataLayer.push({event:"view_generate_lead",location:"sign_up_modal",});this.setStep(this.stepsList.type);break;case this.stepsList.type:if(this.checkAccountTypeChosen()){this.errorMessage=this.errorMessages["account_type"];break;}
if(this.checkCompanyIsSelected(isJurio)){this.errorMessage=this.errorMessages["company"];this.companySearchResults([]);this.currentSelection=undefined;break;}
if(!this.acceptTermsAndConditions()){this.errorMessage=this.errorMessages["terms_and_conditions"];break;}
if(this.checkIfNewLogin()){var isPrivateAccount=this.accountType()=="private";if(isPrivateAccount){this.companyName("");this.CVR("");}
var newData={Provider:null,Name:this.name(),Email:this.email(),PhoneNumber:null,IsPrivateAccount:isPrivateAccount,CompanyName:this.companyName(),CvrNumber:this.CVR(),};FlowModalShared.flowModalUpdateProfileData(this,newData);this.setStep(this.stepsList.draft);}else{if(this.acceptMarketing()==true){window.dataLayer.push({event:"generate_lead",location:"sign_up_modal",});}
this.registerUser();}
break;case this.stepsList.login:if(!this.validateEmail(this.email)||this.email()==""){this.errorMessage=this.errorMessages["email"];break;}
if(!this.password.isValid()||this.password()==""){this.errorMessage=this.errorMessages["password"];break;}
if(!this.checkIfNewLogin()){this.login();}else{this.login(saveDraftAndSendMail);}
break;case this.stepsList.forgot:if(this.validateEmail(this.email))this.sendForgotPasswordEmail();else this.errorMessage=this.errorMessages["email"];break;case this.stepsList.sent:this.closeModal();if(window.location.href.indexOf("/dokument")==-1){redirectTo("/",false);}
break;case this.stepsList.register:if(!this.validateEmail(this.email)){this.errorMessage=this.errorMessages["email"];break;}
if(!this.validateName(this.name)){if(/\d/.test(this.name())||/[#@\$%!';:()*&^?.]/.test(this.name())){this.errorMessage=this.errorMessages["name_invalid"];break;}
this.errorMessage=this.errorMessages["name"];break;}
if(!this.password.isValid()){break;}
this.signingInvite(false);window.dataLayer.push({event:"view_generate_lead",location:"sign_up_modal",});this.setStep(this.stepsList.type);window.dataLayer.push({event:"Create user step 2","login trigger":this.loginTrigger,"login type":"email",});break;case this.stepsList.newRegister:if(!this.validateEmail(this.email)){this.errorMessage=this.errorMessages["email"];break;}
if(!this.validateName(this.name)){if(/\d/.test(this.name())||/[#@\$%!';:()*&^?.]/.test(this.name())){this.errorMessage=this.errorMessages["name_invalid"];break;}
this.errorMessage=this.errorMessages["name"];break;}
if(!this.password.isValid()){this.errorMessage=this.errorMessages["password"];break;}
if(!this.acceptTermsAndConditions()){this.errorMessageTermsAndConditions(this.errorMessages["terms_and_conditions"]);break;}
this.signingInvite(false);let acceptedMarketing=this.acceptMarketing();var registerSuccessCallback=(response)=>{if(!response){return;}
saveDraftAndSendMail(null);if(!response.Success){return;}
this.setStep(this.stepsList.type);if(acceptedMarketing){window.dataLayer.push({event:"generate_lead",location:"sign_up_modal",});}
window.dataLayer.push({event:"Create user step 2","login trigger":this.loginTrigger,"login type":"email",});};this.registerUser(registerSuccessCallback);break;case this.stepsList.link:this.showAccountLinked=false;if(this.checkIfNewLogin()){var callback=()=>{this.setStep(this.stepsList.draft);};saveDraftAndSendMail(callback);}else{this.redirectMyDocuments("");}
break;case this.stepsList.draft:const wizardUrl=localStorage.getItem("wizardURL");this.buttonsActive(false);if(!wizardUrl){break;}
if(localStorage.getItem("sku")){localStorage.removeItem("sku");}
localStorage.removeItem("wizardURL");this.redirectMyDocuments(wizardUrl);break;default:break;}}
checkCompanyIsSelected(isJurio){return this.accountType==="company"&&this.CVR===""&&!isJurio;}
checkAccountTypeChosen(){return this.accountType!=="private"&&this.accountType!=="company";}
linkSocialMediaAccount(){this.userInfo.name=this.name;this.showAccountLinked=true;if(this.userInfo.google){this.linkSpecificProvider("G",this.userInfo.id,this.userInfo.token,this.userInfo.name,this.userInfo.email);this.socialLoginProvider="Google";}else if(this.userInfo.id){this.linkSpecificProvider("F",this.userInfo.id,accessToken,this.userInfo.name,this.userInfo.email);this.socialLoginProvider="Facebook";}}
linkSpecificProvider(provider,userId,token,name,email){var self=this;FlowModalShared.flowModalLinkSpecificProvider(provider,userId,token,name,email,function(data,status,request){if(data.Success){var data=socialLogin(provider,userId,token);if(data.Success){self.redirectMyDocuments("");}else{self.errorMessage="Failed to log in with social provider";}}else{self.errorMessage=self.errorMessages["social_link"];}});}
goBack(){var previous=this.stepsHistory.pop();if(previous===this.stepsList.register||previous===this.stepsList.login){this.password="";}
if(this.stepsHistory[this.stepsHistory.length-1]===this.stepsList.newSocialRegister){this.stepsHistory.push(previous);return;}
if(previous===this.stepsList.socialRegister||previous===this.stepsList.type||previous===this.stepsList.newSocialRegister){this.companyName="";this.changeInfo=true;if(this.step!==this.stepsList.type){this.socialLoginProvider="";this.userInfo=undefined;}}
this.errorMessage="";var lastIndex=this.stepsHistory.length;if(lastIndex>0){this.step=this.stepsHistory[lastIndex-1];}
window.history.back();}
closeModal(){this.showLoginForm=false;if(this.step===this.stepsList.link){this.redirectMyDocuments("");}else if(this.loadDocumentData()){redirectTo(this.domains[this.currentCountry]);}else{this.loginModalElement.fadeOut();}
this.loginModalElement.modal("hide");}
redirectMyDocuments(redirectUrl){if(this.linkingAccount){this.linkingAccount=false;this.linkSocialMediaAccount();return;}
if(this.showAccountLinked){this.showAccountLinked=false;this.setStep(this.stepsList.link);return;}
if(this.shouldSubmit){}
if(this.saveDraft){}
if(this.loadDocumentData){const url=new URL(window.location.href);url.search="";const newUrl=url.toString();window.location.href=newUrl;return;}
if(document.querySelector("#checkout_modal")){return;}
if($(".basketItem").length>0){redirectTo(redirectUrl+"?open_modal=true");return;}
if(this.onboardCompany&&this.onboardCompany>9999999){FlowModalShared.flowModalOnboardCompany(this.onboardCompany());}
redirectTo(redirectUrl);}}
;;;