function AccountDetailValidation(n,t,i,r,u,f,e,o,s,h,c){this._firstNameId=n;this._lastNameId=t;this._emailId=i;this._newPasswordId=r;this._confirmNewPasswordId=u;this._currentPasswordId=f;this._streetId=e;this._cityId=o;this._countryId=s;this._stateProvinceId=h;this._postalCodeId=c;this.CheckNewPasswordStrength=function(){var n=new PasswordStrengthMeter(this._newPasswordId,!1);n.CheckPasswordStrength()};this.DisplayFormFieldValidation=function(n,t,i,r){var f=document.getElementById("Error"+t),e=document.getElementById("Label"+t),u=n.className.split(" ");i?(f.innerHTML="",u[0]=="formFieldInvalid"&&(u=u.slice(1),n.className=u),e.className="formFieldLabel"):(f.innerHTML=r,u[0]!="formFieldInvalid"&&(u.unshift("formFieldInvalid"),n.className=u.join(" ")),e.className="formFieldLabelInvalid")};this.EmailExistsResponse=function(n){var i=$.parseJSON(n),r=i.UserExists!=!0,t=document.getElementById(this._emailId);return i.UserExists==!0?this.DisplayFormFieldValidation(t,t.id,r,"Sorry, that email is already used, please choose another or login."):this.DisplayFormFieldValidation(t,t.id,r,""),i};this.CreateAccountEmailExistsResponse=function(n){var i=$.parseJSON(n),r=i.UserExists==!1,t=document.getElementById(this._emailId);return i.UserExists==!0?this.DisplayFormFieldValidation(t,t.id,r,"Sorry, that email is already used, please choose another."):this.DisplayFormFieldValidation(t,t.id,r,""),i};this.ValidateEmail=function(n){var r=$("#"+this._emailId).attr("data-current-email"),t=document.getElementById(this._emailId),i=t.checkValidity();return i?t.value!=r&&$.ajax({url:"/account/checkavailability",type:"get",async:!1,data:{emailOrUsername:t.value}}).success(n==AccountAction.Create?this.CreateAccountEmailExistsResponse.bind(this):this.EmailExistsResponse.bind(this)):this.DisplayFormFieldValidation(t,t.id,i,n==AccountAction.Create?t.value==""?" is required":" is invalid":t.value==""?"Email is required":"Email is invalid"),i};this.ValidateFirstname=function(n){var t=document.getElementById(this._firstNameId),i=t.checkValidity();return this.DisplayFormFieldValidation(t,t.id,i,n==AccountAction.Create?" is required":"Firstname is required"),i};this.ValidateLastname=function(n){var t=document.getElementById(this._lastNameId),i=t.checkValidity();return this.DisplayFormFieldValidation(t,t.id,i,n==AccountAction.Create?" is required":"Lastname is required"),i};this.ValidatePrimaryAddressStreet=function(){var n=document.getElementById(this._lastNameId),t=n.checkValidity();return this.DisplayFormFieldValidation(n,n.id,t,"Street Address is required"),t};this.ValidatePrimaryAddressCity=function(){var t=!0,n;return this._cityId!=null&&(n=document.getElementById(this._cityId),t=n.checkValidity(),this.DisplayFormFieldValidation(n,n.id,t,"City is required")),t};this.ValidatePrimaryAddressCountry=function(){var t=!0,n;return this._countryId!=null&&(n=document.getElementById(this._countryId),t=n.checkValidity(),this.DisplayFormFieldValidation(n,n.id,t,"Country is required")),t};this.ValidatePrimaryAddressPostalCode=function(){var t=!0,i,n;return this._postalCodeId!=null&&(i=document.getElementById(this._countryId),n=document.getElementById(this._postalCodeId),t=n.checkValidity(),this.DisplayFormFieldValidation(n,n.id,t,"Street Address is required")),t};this.ValidateCurrentPassword=function(){var n=document.getElementById(this._currentPasswordId),t=n.checkValidity();return this.DisplayFormFieldValidation(n,n.id,t,"Password entered is invalid"),t};this.ValidateNewPassword=function(n){var t=document.getElementById(this._newPasswordId),i=t.checkValidity();return i&&t.value.length>0&&(i=t.value.length>7&&t.value.match(/[A-Z]/g)!=null&&t.value.match(/[a-z]/g)!=null&&t.value.match(/[0-9~!@$^()_.]/g)!=null),this.DisplayFormFieldValidation(t,t.id,i,n==AccountAction.Create?t.value==""?" is required":" is invalid":t.value==""?"Password is required":"Password is invalid"),i};this.ValidateConfirmPassword=function(n){var t=document.getElementById(this._confirmNewPasswordId),r=document.getElementById(this._newPasswordId),i=t.value==r.value&&t.checkValidity();return i?this.DisplayFormFieldValidation(t,t.id,i,""):t.value!=r.value?this.DisplayFormFieldValidation(t,t.id,i,n==AccountAction.Create?" does not match Password":"Confirm password and Password do not match"):r.value!=""&&this.DisplayFormFieldValidation(t,t.id,i,n==AccountAction.Create?t.value==""?" is required":" is invalid":t.value==""?"Confirm password is required":"Confirm password is invalid"),i};this.Validate=function(n){var t=!1;switch(n){case AccountAction.Create:t=this.ValidateFirstname(n)&&this.ValidateLastname(n)&&this.ValidateEmail(n)&&this.ValidateNewPassword(n)&&this.ValidateConfirmPassword(n)&&(this._currentPasswordId!=null?this.ValidateCurrentPassword():!0);break;case AccountAction.EditPerson:t=this.ValidateFirstname(n)&&this.ValidateLastname(n)&&this.ValidateEmail(n);break;case AccountAction.ChangePassword:t=this.ValidateNewPassword(n)&&this.ValidateConfirmPassword(n)&&this._currentPasswordId!=null?this.ValidateCurrentPassword():!0;break;case AccountAction.ResetPassword:t=this.ValidateNewPassword(n)&&this.ValidateConfirmPassword(n);break;case AccountAction.ShoppingCart:t=this.ValidateFirstname(n)&&this.ValidateLastname(n)&&this.ValidateEmail(n)&&this.ValidateNewPassword(n)&&this.ValidateConfirmPassword(n)&&(this._currentPasswordId!=null?this.ValidateCurrentPassword():!0)}return t}}AccountAction={Create:0,EditPerson:1,ChangePassword:2,ResetPassword:3,ShoppingCart:4,Properties:{0:{Name:"Create",value:0},1:{Name:"EditPerson",value:1},2:{Name:"ChangePassword",value:2},3:{Name:"ResetPassword",value:3},3:{Name:"ShoppingCart",value:4}},Keys:[0,1,2,3,4],MatchByName:function(n){for(var i=this.Properties[0],r=n.toLowerCase(),t=0;t<this.Keys.length;t++)if(r==this.Properties[this.Keys[t]].Name){i=this.Properties[this.Keys[t]];break}return i}}