window.wp=window.wp||{},function(a){var e=wp.i18n.__,n=wp.i18n.sprintf;wp.passwordStrength={meter:function(e,n,t){return Array.isArray(n)||(n=[n.toString()]),e!=t&&t&&0<t.length?5:void 0===window.zxcvbn?-1:zxcvbn(e,n).score},userInputBlacklist:function(){return window.console.log(n(e("%1$s is deprecated since version %2$s! Use %3$s instead. Please consider writing more inclusive code."),"wp.passwordStrength.userInputBlacklist()","5.5.0","wp.passwordStrength.userInputDisallowedList()")),wp.passwordStrength.userInputDisallowedList()},userInputDisallowedList:function(){var e,n,t,r,s=[],i=[],o=["user_login","first_name","last_name","nickname","display_name","email","url","description","weblog_title","admin_email"];for(s.push(document.title),s.push(document.URL),n=o.length,e=0;e<n;e++)0!==(r=a("#"+o[e])).length&&(s.push(r[0].defaultValue),s.push(r.val()));for(t=s.length,e=0;e<t;e++)s[e]&&(i=i.concat(s[e].replace(/\W/g," ").split(" ")));return i=a.grep(i,function(e,n){return!(""===e||e.length<4)&&a.inArray(e,i)===n})}},window.passwordStrength=wp.passwordStrength.meter}(jQuery);
var wwlcFormValidator=(function (){
var trimFieldValues=function (formFields){
for (var i=0; i < formFields.length; i++) formFields[i].val(formFields[i].val().trim())
},
validateRequiredField=function (formFields, RegistrationVars){
var checkpoint=true,
numberFields=[],
radioFields={},
radioCheckpoints={},
checkboxFields={},
checkboxCheckpoints={},
generalRadioCheckpoint=true,
generalCheckboxCheckpoint=true,
recaptchaCheckpoint=true,
recaptchaField=jQuery('#wwlc-registration-form').find('textarea[name="g-recaptcha-response"]')
for (var i=0; i < formFields.length; i++){
var inlineRequiredError=false
if(formFields[i].attr('type')=='email'){
if(formFields[i].attr('data-required')=='yes'&&formFields[i].val()==''){
inlineRequiredError=true
formFields[i].addClass('err')
checkpoint=false
}else if(formFields[i].val()!==''&&wwlcFormValidator.validateEmail(formFields[i].val())==false){
formFields[i]
.closest('.field-set')
.append('<span class="inline-error">' + RegistrationVars.email_invalid + '</span>')
formFields[i].addClass('err')
checkpoint=false
}else{
formFields[i].removeClass('err')
}}else if(formFields[i].attr('type')=='checkbox'){
if(checkboxFields[formFields[i].attr('name')]===undefined) checkboxFields[formFields[i].attr('name')]=[]
checkboxFields[formFields[i].attr('name')].push(formFields[i].is(':checked') ? 1:0)
checkboxCheckpoints[formFields[i].attr('name')]=false
}else if(formFields[i].attr('type')=='radio'){
if(radioFields[formFields[i].attr('name')]===undefined) radioFields[formFields[i].attr('name')]=[]
radioFields[formFields[i].attr('name')].push(formFields[i].is(':checked') ? 1:0)
radioCheckpoints[formFields[i].attr('name')]=false
}else if(formFields[i].attr('type')=='tel'&&formFields[i].hasClass('phone')){
var mask=formFields[i].attr('data-phonemask')
if(mask!='No format'&&formFields[i].val()&&formFields[i].val().length!=mask.length){
formFields[i]
.closest('.field-set')
.append('<span class="inline-error">' + RegistrationVars.phone_invalid + '</span>')
formFields[i].addClass('err')
checkpoint=false
}else if(formFields[i].attr('data-required')=='yes'&&formFields[i].val()==''){
inlineRequiredError=true
formFields[i].addClass('err')
checkpoint=false
}else{
formFields[i].removeClass('err')
}}else{
if(formFields[i].attr('data-required')=='yes'&&formFields[i].val()==''){
inlineRequiredError=true
formFields[i].addClass('err')
checkpoint=false
}else{
formFields[i].removeClass('err')
if(formFields[i].attr('type')=='number') numberFields.push(formFields[i])
}}
if(inlineRequiredError)
formFields[i]
.closest('.field-set')
.append('<span class="inline-error">' + RegistrationVars.field_is_required + '</span>')
}
for (var i=0; i < numberFields.length; i++){
var min=numberFields[i].attr('min'),
max=numberFields[i].attr('max'),
step=numberFields[i].attr('step'),
val=numberFields[i].val()
min=min==null||min=='' ? 0:parseInt(min)
max=max==null||max=='' ? 0:parseInt(max)
step=step==null||step=='' ? 0:parseInt(step)
val=val==null||val=='' ? 0:parseInt(val)
if(val > 0&&(min > 0||max > 0||step > 0)){
if(step > 0&&(val - min) % step!=0){
numberFields[i]
.closest('.field-set')
.append('<span class="inline-error">' + RegistrationVars.number_not_divisible_by_step + step + '</span>')
numberFields[i].addClass('err')
checkpoint=false
}else if(min > 0&&max > 0&&val < min&&val > max){
numberFields[i]
.closest('.field-set')
.append('<span class="inline-error">' + RegistrationVars.number_max_less_than_min + '</span>')
numberFields[i].addClass('err')
checkpoint=false
}else if(min > 0&&val < min){
numberFields[i]
.closest('.field-set')
.append('<span class="inline-error">' + RegistrationVars.number_less_than_min + '</span>')
numberFields[i].addClass('err')
checkpoint=false
}else if(max > 0&&val > max){
numberFields[i]
.closest('.field-set')
.append('<span class="inline-error">' + RegistrationVars.number_greater_than_max + '</span>')
numberFields[i].addClass('err')
checkpoint=false
} else numberFields[i].removeClass('err')
} else numberFields[i].removeClass('err')
}
for (var key in checkboxFields){
if(checkboxFields.hasOwnProperty(key)){
var checkboxField=checkboxFields[key]
var inputSelector=jQuery("input[ name='" + key + "' ]")
if(inputSelector.closest('.checkbox_options_holder').attr('data-required')=='yes'){
for (var i=0; i < checkboxField.length; i++){
if(checkboxField[i]) checkboxCheckpoints[key]=true
}}else{
checkboxCheckpoints[key]=true
}
var checkboxErrorMsg =
inputSelector.length > 1 ? RegistrationVars.checkbox_inline_error:RegistrationVars.field_is_required
if(inputSelector.closest('.checkbox_options_holder').hasClass('terms_conditions_checkbox'))
checkboxErrorMsg=RegistrationVars.agree_terms_conditions_error
if(!checkboxCheckpoints[key])
inputSelector
.closest('.field-set')
.addClass('err')
.append('<span class="inline-error">' + checkboxErrorMsg + '</span>')
else inputSelector.closest('.field-set').removeClass('err')
generalCheckboxCheckpoint=generalCheckboxCheckpoint&&checkboxCheckpoints[key]
}}
for (var key in radioFields){
if(radioFields.hasOwnProperty(key)){
var radioField=radioFields[key]
var inputSelector=jQuery("input[ name='" + key + "' ]")
if(inputSelector.closest('.radio_options_holder').attr('data-required')=='yes'){
for (var i=0; i < radioField.length; i++){
if(radioField[i]) radioCheckpoints[key]=true
}}else{
radioCheckpoints[key]=true
}
if(!radioCheckpoints[key])
inputSelector
.closest('.field-set')
.addClass('err')
.append('<span class="inline-error">' + RegistrationVars.field_is_required + '</span>')
else inputSelector.closest('.field-set').removeClass('err')
generalRadioCheckpoint=generalRadioCheckpoint&&radioCheckpoints[key]
}}
if(RegistrationVars.wwlc_captcha_enabled &&
RegistrationVars.wwlc_captcha_type==='v2_im_not_a_robot' &&
recaptchaField.length > 0 &&
recaptchaField.val()==''
){
recaptchaField
.closest('.field-set')
.append('<span class="inline-error">' + RegistrationVars.empty_recaptcha + '</span>')
recaptchaCheckpoint=false
}
return checkpoint&&generalRadioCheckpoint&&generalCheckboxCheckpoint&&recaptchaCheckpoint
},
constructUserData=function (formFields){
var userData={},
radioFields={},
checkboxFields={}
for (var i=0; i < formFields.length; i++){
switch (formFields[i].attr('id')){
case 'first_name':
userData.first_name=formFields[i].val()
break
case 'last_name':
userData.last_name=formFields[i].val()
break
case 'wwlc_phone':
userData.wwlc_phone=formFields[i].val()
break
case 'user_email':
userData.user_email=formFields[i].val()
break
case 'wwlc_username':
userData.wwlc_username=formFields[i].val()
break
case 'wwlc_company_name':
userData.wwlc_company_name=formFields[i].val()
break
case 'wwlc_address':
userData.wwlc_address=formFields[i].val()
break
case 'wwlc_role':
userData.wwlc_role=formFields[i].val()
break
case 'wwlc_page_id':
userData.wwlc_page_id=formFields[i].val()
break
case 'wwlc_auto_approve_nonce':
userData.wwlc_auto_approve_nonce=formFields[i].val()
break
case 'wwlc_auto_login_nonce':
userData.wwlc_auto_login_nonce=formFields[i].val()
break
default:
if(formFields[i].attr('type')=='checkbox'){
if(formFields[i].is(':checked')){
if(checkboxFields[formFields[i].attr('name')]===undefined)
checkboxFields[formFields[i].attr('name')]=[]
checkboxFields[formFields[i].attr('name')].push(formFields[i].val())
}}else if(formFields[i].attr('type')=='radio'){
if(formFields[i].is(':checked'))
if(radioFields[formFields[i].attr('name')]===undefined)
radioFields[formFields[i].attr('name')]=formFields[i].val()
} else userData[formFields[i].attr('id')]=formFields[i].val()
break
}}
for (var key in checkboxFields) if(checkboxFields.hasOwnProperty(key)) userData[key]=checkboxFields[key]
for (var key in radioFields) if(radioFields.hasOwnProperty(key)) userData[key]=radioFields[key]
return userData
},
validateEmail=function (email){
var pattern =
/^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/
return pattern.test(email)
},
confirmPassword=function (){
if(!RegistrationVars.confirm_password_field_enabled) return true
var $passwd_1=jQuery('input#wwlc_password'),
$passwd_2=jQuery('input#wwlc_password_confirm'),
check=$passwd_1.val()===$passwd_2.val()
if(!check){
$passwd_1.addClass('err')
$passwd_2
.addClass('err')
.closest('.form-row')
.append('<span class="inline-error">' + RegistrationVars.confirm_password_error_message + '</span>')
}
return check
},
validatePasswordStrength=function (){
if(typeof RegistrationVars.is_user_logged_in!=='undefined'&&RegistrationVars.is_user_logged_in==='1'){
return true
}
if(!RegistrationVars.activate_password_field) return true
if(!RegistrationVars.password_minimum_strength) return true
var password=jQuery('input#wwlc_password')
var strongRegex=/^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[^A-Za-z\d]).{12,}$/
var check=strongRegex.test(password.val())
if(!check){
password
.addClass('err')
.closest('.form-row')
.append('<span class="inline-error">' + RegistrationVars.password_strength_error_message + '</span>')
}
return check
}
return {
validateRequiredField: validateRequiredField,
trimFieldValues: trimFieldValues,
constructUserData: constructUserData,
validateEmail: validateEmail,
confirmPassword: confirmPassword,
validatePasswordStrength: validatePasswordStrength,
}})();
var wwlcFormActions=function(){
var resetForm=function($form){
$form.find(".form_field").each(function (){
var $this=jQuery(this);
if($this.attr('type')!==undefined&&$this.attr('type')!='radio'&&$this.attr('type')!='checkbox')
$this.removeClass("err").removeAttr("disabled");
else if($this.attr('type')=='radio')
$this.removeAttr("checked").removeAttr("disabled").closest(".field-set").removeClass("err");
else if($this.attr('type')=='checkbox')
$this.removeAttr("checked").removeAttr("disabled").closest(".field-set").removeClass("err");
else
$this.removeClass("err").removeAttr("disabled").find("option:first").attr("selected" , "selected");
});
},
deactivateFormControls=function($form){
$form.find(".form-control").attr("disabled" , "disabled");
},
activateFormControls=function($form){
$form.find(".form-control").removeAttr("disabled");
},
displayStatesDropdownField=function($form, states, stateSelected, isRequired=false){
var requiredTxt=isRequired ? 'data-required="yes"':'',
selectField='<select id="wwlc_state" name="wwlc_state" class="wwlc_registration_field wwlc_form_field" ' + requiredTxt + '>';
selectField +='<option value="">'+ wwlc_form_object.select_option +'...</option>';
jQuery.each(states, function(key, value){
if(stateSelected===key)
selectField +='<option value="' + key + '" selected>' + value + '</option>';
else
selectField +='<option value="' + key + '">' + value + '</option>';
});
selectField +="</select>";
if($form.find("select#wwlc_state").length!=0){
$form.find("#wwlc_state").siblings("br").remove();
$form.find("select#wwlc_state").after(selectField);
$form.find("select#wwlc_state").siblings(".chosen-container").remove();
$form.find("select#wwlc_state").siblings(".select2-container").remove();
$form.find("select#wwlc_state").first().remove();
}else if($form.find("input#wwlc_state").length!=0){
$form.find("#wwlc_state").siblings("br").remove();
$form.find("input#wwlc_state").after(selectField);
$form.find("input#wwlc_state").remove();
}},
displayStatesTextField=function($form){
var id=$form.attr("id");
if(id=="your-profile"){
var inputField='<input type="text" name="wwlc_state" id="wwlc_state" value="" class="regular-text"><br>';
}else{
var inputField='<input type="text" id="wwlc_state" class="input wwlc_registration_field form_field">';
}
if($form.find("select#wwlc_state").length!=0){
$form.find("select#wwlc_state").after(inputField);
$form.find("select#wwlc_state").siblings(".chosen-container").remove();
$form.find("select#wwlc_state").siblings(".select2-container").remove();
$form.find("select#wwlc_state").remove();
}},
checkPasswordStrength=function($pass1, $pass2, $strengthResult, $submitButton, blacklistArray, $this){
var pass1=$pass1.val(),
pass2=$pass2.val();
$strengthResult.removeClass("short bad good strong");
blacklistArray=blacklistArray.concat(wp.passwordStrength.userInputDisallowedList())
var strength=wp.passwordStrength.meter(pass1, blacklistArray, pass2);
if(pass1!=="")
$this.find("#wwlc-password-strength").show().css({ 'display':'inline-block' });
else
$this.find("#wwlc-password-strength").hide();
if(pass1!==""&&jQuery.inArray(strength, [ 0 , 1 , 2 , 5 ])!==-1)
$this.find(".password-field-confirm-weak").show();
else
$this.find(".password-field-confirm-weak").hide();
switch(strength){
case 2:
$strengthResult.addClass("bad").html(wwlc_pword_meter.bad);
break;
case 3:
$strengthResult.addClass("good").html(wwlc_pword_meter.good);
break;
case 4:
$strengthResult.addClass("strong").html(wwlc_pword_meter.strong);
break;
case 5:
$strengthResult.addClass("short").html(wwlc_pword_meter.mismatch);
break;
default:
$strengthResult.addClass("short").html(wwlc_pword_meter.short);
}
return strength;
};
return {
resetForm:resetForm,
deactivateFormControls:deactivateFormControls,
activateFormControls:activateFormControls,
displayStatesDropdownField:displayStatesDropdownField,
displayStatesTextField:displayStatesTextField,
checkPasswordStrength:checkPasswordStrength
};}();