// global variables
jQuery(document).ready(function(){
   
var form = jQuery("#formID");
var fname = jQuery("#fname");
var fnameInfo = jQuery("#fnameInfo");
var lname = jQuery("#lname");
var lnameInfo = jQuery("#lnameInfo");
var address = jQuery("#street");
var addressInfo = jQuery("#streetInfo");
var city = jQuery("#city");
var cityInfo = jQuery("#cityInfo");
var country = jQuery("#country");
var countryInfo = jQuery("#countryInfo");
var province = jQuery("#provinceSelect");
var provinceInfo = jQuery("#provinceInfo");
var state = jQuery("#nosell");
var stateInfo = jQuery("#stateInfo");
//Postal Code Var
var postal1 = jQuery("#postal1");
var postal2 = jQuery("#postal2");
var postalInfo = jQuery("#postalInfo");
//Zip Code Var
var zip1 = jQuery("#zip1");
var zip2 = jQuery("#zip2");
var zipInfo = jQuery("#zipInfo");
//Phone Number Var
var phone1 = jQuery("#phone1");
var phone2 = jQuery("#phone2");
var phone3 = jQuery("#phone3");
var phoneInfo = jQuery("#phoneInfo");
//
var email = jQuery("#email");
var emailInfo = jQuery("#emailInfo");
var errors = 0;
var submit = jQuery("#submitBtn");

//Hide all messages
fnameInfo.hide();
lnameInfo.hide();
addressInfo.hide();
cityInfo.hide();
countryInfo.hide();
phoneInfo.hide();
emailInfo.hide();

// Declare validation functions
function validatefName(){
   if(fname.val().length < 2 ){
      fname.addClass("error");
      fnameInfo.text("Please Enter Your First Name");
     // fnameInfo.fadeIn(600);
      //fnameInfo.addClass("error");
      errors ++;
      return false;
   }else{
      fname.removeClass("error");
      fnameInfo.removeClass("error");
      fnameInfo.fadeOut(600);
      errors --;
      return true;
   }
}

function validatelName(){
   if(lname.val().length < 2 ){
      lname.addClass("error");
      lnameInfo.text("Please Enter Your Last Name");
      //lnameInfo.fadeIn(600);
      //lnameInfo.addClass("error");
      errors ++;
      return false;
   }else{
      lname.removeClass("error");
      lnameInfo.removeClass("error");
      lnameInfo.fadeOut(600);
      errors --;
      return true;
   }
}

function validateAddress(){
   if(address.val().length < 5 ){
      address.addClass("error");
      addressInfo.text("Please Enter a Valid Address");
      //addressInfo.fadeIn(600);
      //addressInfo.addClass("error");
      errors ++;
      return false;
   }else{
      address.removeClass("error");
      addressInfo.removeClass("error");
      addressInfo.fadeOut(600);
      errors --;
      return true;
   }
}

function validateCity(){
   if(city.val().length < 3 ){
      city.addClass("error");
      cityInfo.text("Please Enter a Valid city");
      cityInfo.css("padding","0 0 10px 0");
      //cityInfo.fadeIn(600);
      //cityInfo.addClass("error");
      errors ++;
      return false;
   }else{
      city.removeClass("error");
      cityInfo.removeClass("error");
      cityInfo.fadeOut(600);
      errors --;
      return true;
   }
}

function validateCountry(){
   if(country.val() == "" ){
      country.addClass("error");
      province.addClass("error");
      state.addClass("error");
      return false;
   }else{
      country.removeClass("error");
      if(country.val() == "U.S.A."){
         if(state.val() == "" ){
            state.addClass("error");
            return false;
         }else{
            state.removeClass("error");
            return true;
         }
      }else if(country.val() == "CANADA"){
         if(province.val() == "" ){
            province.addClass("error");
            return false;
         }else{
            province.removeClass("error");
            return true;
         }
      }
   }
}

function validatePhone(){
   var p1 = phone1.val();
   var p2 = phone2.val();
   var p3 = phone3.val();
   
   var phoneRegex = new RegExp(/^[2-9]\d{2}\d{3}\d{4}$/i);
   
   var phoneString = p1 + p2 + p3;
   
   //alert(phoneString);
   
   if(phoneRegex.test(phoneString)){
      phone1.removeClass("error");
      phone2.removeClass("error");
      phone3.removeClass("error");
      phoneInfo.removeClass("error");
      phoneInfo.fadeOut(600);
      errors --;
      return true;
   }else{
      phone1.addClass("error");
      phone2.addClass("error");
      phone3.addClass("error");
      phoneInfo.text("Please Enter a Valid Phone Number");
      //phoneInfo.fadeIn(600);
      //phoneInfo.addClass("error_alt");
      errors ++;
      return false;
   }
   
   
   if(phone3.val().length < 4 ){
      phone3.addClass("error");
      phoneInfo.text("Please Enter a Valid Phone Number");
      phoneInfo.fadeIn(600);
      phoneInfo.addClass("error_alt");
      return false;
   }else{
      phone3.removeClass("error");
      phoneInfo.removeClass("error");
      phoneInfo.fadeOut(600);
      return true;
   }
   
}

function validateEmail(){
   var pattern = new RegExp(/^(("[\w-\s]+")|([\w-]+(?:\.[\w-]+)*)|("[\w-\s]+")([\w-]+(?:\.[\w-]+)*))(@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$)|(@\[?((25[0-5]\.|2[0-4][0-9]\.|1[0-9]{2}\.|[0-9]{1,2}\.))((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\.){2}(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\]?$)/i);
   var emailval = email.val();
   if( pattern.test(emailval)){
      email.removeClass("error");
      //emailInfo.removeClass("error");
      //emailInfo.fadeOut(600);
      errors --;
      return true;
   }else{
      email.addClass("error");
      emailInfo.text("Please Enter a Valid Email Address");
      //emailInfo.fadeIn(600);
      //emailInfo.addClass("error_alt");
      errors ++;
      return false;
   }

}

//On Blur
fname.blur(validatefName);
lname.blur(validatelName);
//address.blur(validateAddress);
//city.blur(validateCity);
country.change(validateCountry);
//province.change(validateCountry);
//state.change(validateCountry);
phone3.blur(validatePhone);
email.blur(validateEmail);
city.blur(validateCity);

//Validate on Submit
form.submit(function(){
   if(validatefName() && validatelName() && validateCountry() && validatePhone() && validateEmail() && validateCity()){
      //alert('Please Wait While We Process Your Form');
      jQuery("#submitBtn").hide();
      jQuery('#loading').fadeIn(300);
      return true;
   }else{
		validatefName();
      validatelName();
      //validateAddress();
      //validateCity();
      validateCountry();
      validatePhone();
      validateEmail();
	  validateCity();
      //alert(errors);
      //errors = 0;
      jQuery('#error_alert').text("Please Fill In Required Fields Marked In RED");
      jQuery('#error_alert').fadeIn(300);
      setTimeout(function(){
		    jQuery('#error_alert').fadeOut(300); 
		   }, 6000);
      return false;
   }
});

});
