
//{{{ Validation Helpers

function minLength (val, len) {
  if (val.length >= len) {
    return true;
  } else {
    return false;
  }
}

function isChecked (id) {
  if (jQuery("#" + id).is(":checked"))
    return true;
  else
    return false;
}

function isEmail (val) {
  if ($j('#agent').val() == 'true'  && val.length > 0) {
    return true;
  }
  
  var re = /^(([^<>()[\]\\.,;:\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,}))$/;
  if (val.match(re)) {
    return true;
  } else {
    return false;
  }
}

function isPhone(val) {
  var phone = $j.trim(val).replace(' ', '');
  var regex = /[^0-9\-\(\) ]/;
  
  if (val == '') {
    return(true); 
  }
  
  if (phone.search(regex) > -1 || phone.length < 10) {
   return(false);
  } 
  
  return(true);
  
}

function isMultipleEmail (val) {
  var res = true;
  var re = /^(([^<>()[\]\\.,;:\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,}))$/;
  var arrEmails = val.split(',');
  
  for(var i = 0; i < arrEmails.length; i++) {
    email = $j.trim(arrEmails[i]);
    
   
    
    if (!email.match(re)) {
      
      res = false;
    }
    
  }
  
  return(res);

}

function isPassword (val) {
  if (jQuery('#agent').val() == 'true' && val.length > 0) {
    return true;
  }
  
  return minLength(val, 6);
}

function matches (val, id) {
  var field_val = $j("#" + id).val();
  if (val && val === field_val) {
    return true;
  } else {
    return false;
  }
}

//}}}

//{{{ Subscribe Form
function validateSubscribeForm () {
  $j("#subscribe-form #subscribe-email").validate({
    expression: "if (isEmail(VAL)) return true; else return false;",
    message: SiteVars.modules.phrasePack.validation.invalid_email
  });
} //}}}

//{{{ Request Quote Form
function validateRequestQuoteForm () {
  $j(".request-form #first, .request-form #last, .request-form #country, .request-form #startDate, .request-form #j_captcha_response, .request-form #numAdults, .request-form #pricesIn").validate({
    expression: "if (VAL) return true; else return false;",
    message: SiteVars.modules.phrasePack.validation.required
  });
  
  $j(".request-form #email").validate({
    expression: "if (isEmail(VAL)) return true; else return false;",
    message: SiteVars.modules.phrasePack.validation.invalid_email
  });
} //}}}

//{{{ Request Brochure Form
function validateRequestBrochureForm () {
  $j(".brochure-request-form li.required :input").validate({
    expression: "if (VAL) return true; else return false;",
    message: SiteVars.modules.phrasePack.validation.required
  });
  
  $j(".brochure-request-form #email").validate({
    expression: "if (isEmail(VAL)) return true; else return false;",
    message: SiteVars.modules.phrasePack.validation.invalid_email
  });
} //}}}

function validatePhotoUploadForm () {
  $j(".request-form li.required :input").validate({
    expression: "if (VAL) return true; else return false;",
    message: SiteVars.modules.phrasePack.validation.required
  });
  
   $j(".request-form #last").validate({
    expression: "if (VAL) return true; else return false;",
    message: SiteVars.modules.phrasePack.validation.required
  });
   
    $j(".request-form #country").validate({
    expression: "if (VAL) return true; else return false;",
    message: SiteVars.modules.phrasePack.validation.required
  });
  
    
    $j(".request-form #j_captcha_response").validate({
    expression: "if (VAL) return true; else return false;",
    message: SiteVars.modules.phrasePack.validation.required
  });
    
    
    $j(".request-form #upload_file").validate({
    expression: "if (VAL) return true; else return false;",
    message: SiteVars.modules.phrasePack.validation.required
  });
  
    
  $j(".request-form #email").validate({
    expression: "if (isEmail(VAL)) return true; else return false;",
    message: SiteVars.modules.phrasePack.validation.invalid_email
  });
} //}}}


function validateTestimonial () {
  $j(".testimonial-form  li.required :input").validate({
    expression: "if (VAL) return true; else return false;",
    message: SiteVars.modules.phrasePack.validation.required
  });
  
   $j(".testimonial-form  #last").validate({
    expression: "if (VAL) return true; else return false;",
    message: SiteVars.modules.phrasePack.validation.required
  });
   
    $j(".testimonial-form  #country").validate({
    expression: "if (VAL) return true; else return false;",
    message: SiteVars.modules.phrasePack.validation.required
  });
  
    
    $j(".testimonial-form  #j_captcha_response").validate({
    expression: "if (VAL) return true; else return false;",
    message: SiteVars.modules.phrasePack.validation.required
  });
    
   
  $j(".testimonial-form #confirm_email").validate({
    expression: "if (isEmail(VAL) && VAL == $j('#email').val()) return true; else return false;",
    message: SiteVars.modules.phrasePack.validation.invalid_email
  });
  
    
  $j(".testimonial-form #email").validate({
    expression: "if (isEmail(VAL)) return true; else return false;",
    message: SiteVars.modules.phrasePack.validation.invalid_email
  });
  
     

  
  
} //}}}

//{{{ Station Booking Form
function validateStationBookingForm () {
  $j(".stationbooking-form li.required :input").validate({
    expression: "if (VAL) return true; else return false;",
    message: SiteVars.modules.phrasePack.validation.required
  });
  
  $j(".stationbooking-form #email").validate({
    expression: "if (isEmail(VAL)) return true; else return false;",
    message: SiteVars.modules.phrasePack.validation.invalid_email
  });
} //}}}

//{{{ Change Password Form
function validateChangePasswordForm () {
  $j(".change-password-form #oldPassword, .change-password-form #newPassword").validate({
    expression: "if (isPassword(VAL)) return true; else return false;",
    message: SiteVars.modules.phrasePack.validation.invalid_password
  });
  
  $j(".change-password-form #confirmPassword").validate({
    expression: "if (isPassword(VAL) && matches(VAL, 'newPassword')) return true; else return false;",
    message: SiteVars.modules.phrasePack.validation.passwords_do_not_match
  });
} //}}}

//{{{ Reset Password Form
function validateResetPasswordForm () {
  $j(".reset-password-form #newPassword").validate({
    expression: "if (isPassword(VAL)) return true; else return false;",
    message: SiteVars.modules.phrasePack.validation.required
  });
  
  $j(".reset-password-form #confirmPassword").validate({
    expression: "if (isPassword(VAL) && matches(VAL, 'newPassword')) return true; else return false;",
    message: SiteVars.modules.phrasePack.validation.passwords_do_not_match
  });
} //}}}


function isValidTextField(str) {
  var rx = /[<>@&\~\!#\$\%\^\*`\{\}\|\?:;]/g;
  var str = $j.trim( str );
  
 
  
  if (str.length < 2) {
    return false; 
  }
  
  if (str.match(rx) != null) {
    return false;   
  } 
  return true;
  
}

//{{{ Registration Form
function validateRegistrationForm () {

  $j(".create-account-form #phoneNumber").validate({
    expression: "if (isPhone(VAL))  return true; else return false;",
    message: SiteVars.modules.phrasePack.validation.required
  }) 
  

  
  
  
  $j(".create-account-form li.required :input").validate({
    expression: "if (isValidTextField(VAL)) return true; else return false;",
    message: SiteVars.modules.phrasePack.validation.required
  });
  
  $j(".create-account-form #email").validate({
    expression: "if (isEmail(VAL)) return true; else return false;",
    message: SiteVars.modules.phrasePack.validation.invalid_email
  });
  
  $j(".create-account-form #password").validate({
    expression: "if (isPassword(VAL)) return true; else return false;",
    message: SiteVars.modules.phrasePack.validation.required
  });
  
  $j(".create-account-form #confirmPassword").validate({
    expression: "if (isPassword(VAL) && matches(VAL, 'password')) return true; else return false;",
    message: SiteVars.modules.phrasePack.validation.passwords_do_not_match
  });
  
  $j(".create-account-form #bool_agree").validate({
    expression: "if (isChecked(SelfID)) return true; else return false;",
    message: SiteVars.modules.phrasePack.validation.must_agree_to_terms
  });
  
  
      
  $j(".create-account-form #chosen_country").validate({
    expression: "if (VAL)  return true; else return false;",
    message: SiteVars.modules.phrasePack.validation.required
  });
  
  
} //}}}

//{{{ Update Information Form
function validateUpdateInfoForm () {
  
  /*
  $j(".update-account-form li.required :input").validate({
    expression: "if (isValidTextField(VAL)) return true; else return false;",
    message: SiteVars.modules.phrasePack.validation.required
  });
  
*/

  $j(".update-account-form #chosen_country").validate({
    expression: "if (VAL) return true; else return false;",
    message: SiteVars.modules.phrasePack.validation.required
  });
  
  

  
  $j(".update-account-form #phoneNumber").validate({
    expression: "if (isPhone(VAL))  return true; else return false;",
    message: SiteVars.modules.phrasePack.validation.required
  }); 
 
 
    $j(".update-account-form #firstName").validate({
    expression: "if (isValidTextField(VAL)) return true; else return false;",
    message: SiteVars.modules.phrasePack.validation.required
  }); 
    
     $j(".update-account-form #lastName").validate({
    expression: "if (isValidTextField(VAL)) return true; else return false;",
    message: SiteVars.modules.phrasePack.validation.required
  });  
  
  
  $j(".update-account-form #email").validate({
    expression: "if (isEmail(VAL)) return true; else return false;",
    message: SiteVars.modules.phrasePack.validation.invalid_email
  });
  
  
  /*
  $j(".update-account-form #firstName").validate({
    expression: "if (VAL) return true; else return false;",
    message: SiteVars.modules.phrasePack.validation.required
  });
  $j(".update-account-form #lastName").validate({
    expression: "if (VAL) return true; else return false;",
    message: SiteVars.modules.phrasePack.validation.required
  });
  */

  
} //}}}

//{{{ Sign In Form
function validateSignInForm () {
  
  $j("#signin-form #signin-email").validate({
    expression: "if (isEmail(VAL)) return true; else return false;",
    message: SiteVars.modules.phrasePack.validation.invalid_email
  });
  
  $j("#signin-form #password").validate({
    expression: "if (isPassword(VAL)) return true; else return false;",
    message: SiteVars.modules.phrasePack.validation.invalid_password
  });
} //}}}

//{{{ Forgot Password Form
function validateForgotPasswordForm () {
  $j("#forgotpass-form li.required #forgotpass-email").validate({
    expression: "if (isEmail(VAL)) return true; else return false;",
    message: SiteVars.modules.phrasePack.validation.invalid_email
  });
} //}}}

