var firstname_required;
var firstname_invalid;
var lastname_required;
var lastname_invalid;
var email_required;
var email_invalid;
var friends_email_required;
var email_one_invalid;
var email_two_invalid;
var email_three_invalid;
var email_four_invalid;
var email_five_invalid;


function initializeErrorMessages(fname_required,fname_invalid,
								 lname_required,lname_invalid,
								 email_field_required,email_field_invalid,
								 state_required,dateofbirth_required,dateofbirth_invalid,
								 frnds_email_required,
								 e1_invalid,e2_invalid,e3_invalid,e4_invalid,e5_invalid){
firstname_required = fname_required;
firstname_invalid = fname_invalid;
lastname_required = lname_required;
lastname_invalid = lname_invalid;
email_required = email_field_required;
email_invalid = email_field_invalid;
error_state_required = state_required;
error_dateofbirth_required = dateofbirth_required;
error_dateofbirth_invalid = dateofbirth_invalid;
friends_email_required = frnds_email_required;
email_one_invalid = e1_invalid;
email_two_invalid = e2_invalid;
email_three_invalid = e3_invalid;
email_four_invalid = e4_invalid;
email_five_invalid = e5_invalid;
//alert(firstname_required+ "  " +firstname_invalid + "  " +lastname_required + "  " +lastname_invalid + "  " +email_required + "  " +email_invalid + "  " +friends_email_required + "  " +email_one_invalid + "  " +email_two_invalid + "  " +email_three_invalid + "  " +email_four_invalid + "  " +email_five_invalid );
}


//Function to validate form.
function validateForm(stfform) {

	var result = true;
    var errorMsg = '';
    var reqdErrorMsg = '';
    var invalidErrorMsg = '';

    document.getElementById(stfform).firstName.value = trim(document.getElementById(stfform).firstName.value);		  
    var fname = document.getElementById(stfform).firstName;
//alert("fname "+fname);
	if (!validRequired(fname)) { //alert("check first required");
          reqdErrorMsg = reqdErrorMsg + firstname_required;
          result = false;
    }else if (!validCharactersName(fname)) { //alert("check first invalid");
              invalidErrorMsg = invalidErrorMsg + firstname_invalid;
              result = false;
     } 
     document.getElementById(stfform).lastName.value = trim(document.getElementById(stfform).lastName.value);		  
     var lName = document.getElementById(stfform).lastName;
//alert("lname      "+ lName.value);
     if (!validRequired(lName)) { //alert("check last required");
           reqdErrorMsg = reqdErrorMsg + lastname_required;
           result = false;
     } else if (!validCharactersName(lName)) { //alert("check last invalid");
           invalidErrorMsg = invalidErrorMsg + lastname_invalid;
           result = false;
       }
       
    
     document.getElementById(stfform).email.value = trim(document.getElementById(stfform).email.value);		
     var eMail = document.getElementById(stfform).email;
//alert("email  "+eMail);
	 if (!validRequired(eMail)) { //alert("check email required");
	   reqdErrorMsg = reqdErrorMsg + email_required;
//	   alert(reqdErrorMsg);
	   result = false;
	   }else if (!validateEmail(eMail.value)) { //alert("check email invalid");
		  invalidErrorMsg = invalidErrorMsg + email_invalid;
		  result = false;
	   }   
    
    if (document.getElementById(stfform).state.value == '-1') {
	   reqdErrorMsg = reqdErrorMsg + error_state_required;
	   result = false;
   }

   var day = document.getElementById(stfform).dob.value;
   var month = document.getElementById(stfform).mob.value;
   var year = document.getElementById(stfform).yob.value;
   var monthArr = getMonthDaysArray(year);

if ( (month == '') || (day ==  '') || (year ==  '') ) {
	   reqdErrorMsg = reqdErrorMsg + error_dateofbirth_required;
	   result = false;
   } else if (day > monthArr[month]) {
	   // error number of days in month is greater.
	   invalidErrorMsg = invalidErrorMsg + error_dateofbirth_invalid;
	   result = false;
   }
    
    document.getElementById(stfform).emailOne.value = trim(document.getElementById(stfform).emailOne.value);		
    var emailOne = document.getElementById(stfform).emailOne;
    document.getElementById(stfform).emailTwo.value = trim(document.getElementById(stfform).emailTwo.value);		
    var emailTwo = document.getElementById(stfform).emailTwo;
    document.getElementById(stfform).emailThree.value = trim(document.getElementById(stfform).emailThree.value);		
    var emailThree = document.getElementById(stfform).emailThree;
    document.getElementById(stfform).emailFour.value = trim(document.getElementById(stfform).emailFour.value);		
    var emailFour = document.getElementById(stfform).emailFour;   
    document.getElementById(stfform).emailFive.value = trim(document.getElementById(stfform).emailFive.value);		
    var emailFive = document.getElementById(stfform).emailFive;
    
    
    if(!validRequired(emailOne) && !validRequired(emailTwo) && !validRequired(emailThree) && !validRequired(emailFour) && !validRequired(emailFive)) {
    	reqdErrorMsg = reqdErrorMsg + friends_email_required;
        result = false;
    }
    
    if(validRequired(emailOne)) {
      if (!validateEmail(emailOne.value)) {  			  
	    invalidErrorMsg = invalidErrorMsg + email_one_invalid;
	    result = false;
	  }
    }
    
    if(validRequired(emailTwo)) {
    	if (!validateEmail(emailTwo.value)) {  			  
		  invalidErrorMsg = invalidErrorMsg + email_two_invalid;
		  result = false;
		} 
    }
    
    if(validRequired(emailThree)) {
        if (!validateEmail(emailThree.value)) {  			  
		  invalidErrorMsg = invalidErrorMsg + email_three_invalid;
		  result = false;
	    }   
    }	
     
	if(validRequired(emailFour)) {	
	   if (!validateEmail(emailFour.value)) {  			  
		  invalidErrorMsg = invalidErrorMsg + email_four_invalid;
		  result = false;
	   }
	}     
    
    
    if(validRequired(emailFive)) {
    	if (!validateEmail(emailFive.value)) {  			  
		    invalidErrorMsg = invalidErrorMsg + email_five_invalid;
			result = false;
	    }
    }	
            
   if (reqdErrorMsg != '') {
          errorMsg = "D&eacute;sol&eacute;s! Vous n&rsquo;avez pas rempli tous les champs obligatoires. Veuillez fournir les renseignements suivants :" + reqdErrorMsg + '<br>';
    }
    if (invalidErrorMsg != '') {
          errorMsg = errorMsg + "D&eacute;sol&eacute;! L'information que vous avez &eacute;crite dans les domaines suivants (accentu&eacute;s) n'assortit pas nos conditions. Svp essai encore." + invalidErrorMsg;
    }

	return errorMsg;
            
}


//Funtion to submit send to friend form.
function submitUserData(show_errors, stfform) {
		var retVal;
        var errorMessage = validateForm(stfform);
        if (errorMessage == '') {
		document.getElementById(show_errors).innerHTML = '';
          retVal = true;	
        } else {
		  document.getElementById(show_errors).style.display = "block";
          document.getElementById(show_errors).innerHTML = errorMessage+'<br/>';
          location.href='#error';
		  retVal = false;
        }
        return retVal;
}

//Function to trim a string.    
function trim(s) {
    while (s.substring(0,1) == ' ') {
      s = s.substring(1,s.length);
    }
    while (s.substring(s.length-1,s.length) == ' ') {
      s = s.substring(0,s.length-1);
    }
    return s;
}

//Function to check for space.
function isSpace(s)
{
	var whitespace = "\r\n"; 
	return ((s != null) && (s.length == 1) && (whitespace.indexOf(s) != -1));
}

//Function to remove white space.
function removeWhiteSpace(str){
	if(null==str || str == "" ){
		return str;
	}
	var res = "";
	for(var i=0; i<str.length; i++){
		
		if(!isSpace(str.charAt(i))){
			res = res + str.charAt(i);
		}
	}
	return res;
}    

//Function to validate email. 
function validateEmail(email){
  var reg="^[a-zA-Z][\\w\\.-]*[a-zA-Z0-9]@[a-zA-Z0-9][\\w\\.-]*[a-zA-Z0-9]\\.[a-zA-Z][a-zA-Z\\.]*[a-zA-Z]$";
  var reg1 = new RegExp(reg);
  
  if(!reg1.test(email)){
    return false;
  }else{
    return true;
  } 
} 
function validRequired(fField){
//	alert("in missing"+fField.value);
	if (fField.value == ""){//alert("in missing if");
//		alert('Please enter a value for the "' + fieldLabel +'" field.');
		return false;
	}
	return true;
}
function validCharactersName(formField){ 

//	alert("check valid");
  var stringto = trim(formField.value);
  var regEx = "^[a-zA-Zé]*[ ]*[\-]?[ ]*[\']?[a-zA-Zé]*$";
  if (!(stringto.search(regEx) != -1)) {
  //   alert('Please enter only characters for the "' + fieldLabel +'" field.');
      return false;
  }

  return true;
}

function getMonthDaysArray(year) {
  var aName = new Array( );
   for (var i = 1; i < 13; i++) {
     if (i==1) {
       aName[i] = 31;
     }
     if (i==4 || i==6 || i==9 || i==11) {
       aName[i] = 30;
    }
     if (i==2) {

      aName[i] = getDaysInFebruary(year);
     }
    }
    return aName
 }

function getDaysInFebruary (year) {

  // February has 29 days in any year evenly divisible by four,

  // EXCEPT for centurial years which are not also divisible by 400.

  return (((year % 4 == 0) && ( (!(year % 100 == 0)) || (year % 400 == 0))) ? 29 : 28 );

}