define(["knockout","notifier","pubsub","ccPasswordValidator"],function(e,t,n,r){"use strict";return{emailAddressForForgottenPwd:e.observable(""),newPassword:e.observable(""),confirmPassword:e.observable(""),showErrorMessage:e.observable(!1),passwordValidationError:e.observable(!1),passwordConfirmationValidationError:e.observable(!1),emailValidationError:e.observable(!1),minCharactersAmount:e.observable(6),minCharacters:e.observable(!0),notcontainspecialCharacters:e.observable(!0),notcontainsUpperCase:e.observable(!0),notcontainsNumber:e.observable(!0),notcontainsLowerCase:e.observable(!0),isnotthesameasemail:e.observable(!0),beforeAppear:function(){var e=this;e.user().isSessionExpiredDuringSave()?e.user().isSessionExpiredDuringSave(!1):(e.user().resetPassword(),e.user().isChangePassword(!0),t.clearError(e.WIDGET_ID),t.clearSuccess(e.WIDGET_ID)),$(".show-password").on("click",function(){e.togglePasswordVisibility($(this))}),e.minCharactersAmount(e.user().passwordPolicies().minPasswordLength)},onLoad:function(e){var r=this;$.Topic("CLOSE_ALL_MODALS").subscribe(e.closeModal.bind(e)),$.Topic("CLOSE_RESET_PASSWORD_MODAL").subscribe(e.closeModal.bind(e)),$.Topic(n.topicNames.PAGE_PARAMETERS).subscribe(function(){var n=this.parameters.occsAuthToken;n&&!e.user().loggedIn()&&e.user().validateTokenForPasswordUpdate(n,function(e){$("#resetPasswordModal").modal()},function(n){t.sendMessage(e.id(),"Token de atualização de senha inválido","error",!0)})}),e.checkPassword=function(t){if(!t){e.minCharacters(!0),e.notcontainspecialCharacters(!0),e.notcontainsUpperCase(!0),e.notcontainsNumber(!0),e.notcontainsLowerCase(!0),e.isnotthesameasemail(!0);return}var n=e.user().passwordPolicies().allowedSymbols,r=Array.from(n),i=/(?=(?:.*?[A-Z]){1})/,s=/(?=.*\d)/,o=/(?=(?:.*?[a-z]){1})/;if(e.user().passwordPolicies().useSymbol){var u=r.find(function(e){return t.includes(e)});u?e.notcontainspecialCharacters(!1):e.notcontainspecialCharacters(!0)}e.user().passwordPolicies().useNumber&&(s.test(t)?e.notcontainsNumber(!1):e.notcontainsNumber(!0)),e.user().passwordPolicies().useMixedCase&&(i.exec(t)?e.notcontainsUpperCase(!1):e.notcontainsUpperCase(!0),o.exec(t)?e.notcontainsLowerCase(!1):e.notcontainsLowerCase(!0)),e.user().passwordPolicies().useMinPasswordLength&&(t.length>=e.user().passwordPolicies().minPasswordLength?e.minCharacters(!1):e.minCharacters(!0)),e.user().passwordPolicies().cannotUseUsername&&e.emailAddressForForgottenPwd()&&(e.emailAddressForForgottenPwd().toLowerCase()==t.toLowerCase()?e.isnotthesameasemail(!1):e.isnotthesameasemail(!0))},e.newPassword.subscribe(function(t){e.checkPassword(t)}),$(document).ready(function(){$("#newPassword").on("keyup",function(){var e=$(this).val(),t=0,n=$("#statusBar"),r=$("#textStatus");e.length===0&&(t=0),e.length>7&&(t+=1),e.match(/[a-z]+/)&&(t+=1),e.match(/[A-Z]+/)&&(t+=1),e.match(/[0-9]+/)&&(t+=1),e.match(/[$@#&!]+/)&&(t+=1),t===0?(n.css("width","0%"),r.text("")):t<2?(n.css("background-color","red"),n.css("width","30%"),r.text("Fraca")):t<4?(n.css("background-color","orange"),n.css("width","60%"),r.text("Média")):(n.css("background-color","green"),n.css("width","100%"),r.text("Forte"))})})},savePassword:function(){var e=this;e.validation()?(e.showErrorMessage(!1),t.clearError(this.WIDGET_ID),e.user().ignoreConfirmPasswordValidation(!1),e.user().ignoreEmailValidation(!1),e.user().emailAddressForForgottenPwd.isModified(!0),e.user().emailAddressForForgottenPwd(e.emailAddressForForgottenPwd()),e.user().newPassword(e.newPassword()),e.user().confirmPassword(e.confirmPassword()),e.user().isPasswordValid(!0)&&e.user().emailAddressForForgottenPwd&&e.user().emailAddressForForgottenPwd.isValid()?e.user().updateExpiredPasswordUsingToken(e.user().token,e.user().emailAddressForForgottenPwd(),e.user().newPassword(),e.user().confirmPassword(),function(n){t.sendMessage(e.id(),"Sucesso ao atualizar senha","success",!0);var r={profile:{email:e.emailAddressForForgottenPwd(),isLegacyVtexUser:!1}},i=e.site().extensionSiteSettings.frigelarSiteCustomConfigurations.registrationAPI;i=i.replace("verify","vtex"),document.location.href.indexOf("dev-")!=-1&&(r.env="dev"),$.ajax({url:i,method:"PUT",data:JSON.stringify(r),crossDomain:!0,contentType:"application/json",success:function(t){document.location.href=document.location.href.split("/").slice(0,3).join("/"),e.closeModal()}.bind(e),error:function(t){document.location.href=document.location.href.split("/").slice(0,3).join("/"),e.closeModal()}.bind(e)})},function(n){n.errorCode=="92103"?t.sendMessage(e.id(),"A senha não pode ser igual a anterior","error",!0):t.sendMessage(e.id(),"Falha ao atualizar senha","error",!0)}):t.sendMessage(e.id(),"Falha ao atualizar senha","error",!0)):e.showErrorMessage(!0)},togglePasswordVisibility:function(t){t.hasClass("visible")?(t.removeClass("visible fa-eye").addClass("fa-eye-slash"),t.siblings("input").prop("type","password")):(t.removeClass("fa-eye-slash").addClass("visible fa-eye"),t.siblings("input").prop("type","text"))},closeModal:function(){$("#resetPasswordModal").modal("toggle")},addErrorClass:function(e){document.getElementById(e).classList.add("input-error")},removeErrorClass:function(e){document.getElementById(e).classList.remove("input-error")},clearError:function(e,t){e!=undefined&&e.target!=undefined&&e.target.classList!=undefined&&(e.target.classList.remove("input-error"),e.target.id=="newPassword"&&t.passwordValidation(),e.target.id=="emailForgottenPwd"&&t.emailValidation(),e.target.id=="confirmPassword"&&t.confirmPasswordValidation()),t.getNumberOfErrors()==0?t.showErrorMessage(!1):t.showErrorMessage(!0)},emailValidation:function(){var e=this,t=!0;return e.emailAddressForForgottenPwd().length==0?(t=t&&!1,e.addErrorClass("emailForgottenPwd")):/(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|"(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])*")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])+)\])/.test(e.emailAddressForForgottenPwd())?e.removeErrorClass("emailForgottenPwd"):(t=t&&!1,e.addErrorClass("emailForgottenPwd")),e.emailValidationError(!t),t},passwordValidation:function(){var e=this,t=!0;if(e.newPassword()){var n=r.validate(e.newPassword(),e.emailAddressForForgottenPwd(),e.passwordPolicies());t=t&&n,n?e.removeErrorClass("newPassword"):e.addErrorClass("newPassword")}else t=t&&!1,e.addErrorClass("newPassword");return e.passwordValidationError(!t),t},confirmPasswordValidation:function(){var e=this,t=!0;return e.confirmPassword()?e.confirmPassword()==e.newPassword()?e.removeErrorClass("confirmPassword"):(t=t&&!1,e.addErrorClass("confirmPassword")):(t=t&&!1,e.addErrorClass("confirmPassword")),e.passwordConfirmationValidationError(!t),t},validation:function(){var e=this,t=!0,n=e.emailValidation(),r=e.passwordValidation(),i=e.confirmPasswordValidation();return t=n&&r&&i,t},getNumberOfErrors:function(){var e=this,t=0;return e.passwordValidationError()&&t++,e.passwordConfirmationValidationError()&&t++,e.emailValidationError()&&t++,t},getPasswordFieldLength:function(){var e=this;return""+(parseInt(e.minCharactersAmount())+2)},getOtherPasswordRules:function(){var e=this,t=e.user().passwordPolicies(),n=t.useNumber,r=t.useSymbol,i=t.useMixedCase,s=t.cannotUsePreviousPasswords,o=t.cannotUseUsername,u=[n,r,i,s,o].reduce(function(e,t){return e+(t=="true"?1:0)},0);if(u>=1){var a="";return n=="true"&&(a+=", um número"),r=="true"&&(a+=", um símbolo"),i=="true"&&(a+=", uma letra maiúscula"),s=="true"&&(a+=", diferente da senha anterior"),o=="true"&&(a+=", diferente do email"),a}return""}}})