//Variables to display error messages.
var error_firstname_required;
var error_firstname_invalid;
var error_lastname_required;
var error_lastname_invalid;
var error_email_required;
var error_email_invalid;
var error_state_required;
var error_dateofbirth_required;
var error_dateofbirth_invalid;
var error_receiveremails_required;
var error_emailone_invalid;
var error_emailtwo_invalid;
var error_emailthree_invalid;
var error_emailfour_invalid;
var error_emailfive_invalid;




//Function to initialise error messages.
function initialiseErrorMessages(firstname_required,
									firstname_invalid,
									lastname_required,
									lastname_invalid,
									email_required,
									email_invalid,
									state_required,
									dateofbirth_required,
									dateofbirth_invalid,
									receiveremails_required,
									emailone_invalid,
									emailtwo_invalid,
									emailthree_invalid,
									emailfour_invalid,
									emailfive_invalid) {
		error_firstname_required = firstname_required;
		error_firstname_invalid = firstname_invalid;
		error_lastname_required = lastname_required;
		error_lastname_invalid = lastname_invalid;
		error_email_required = email_required;
		error_email_invalid = email_invalid;
		error_state_required = state_required;
		error_dateofbirth_required = dateofbirth_required;
		error_dateofbirth_invalid = dateofbirth_invalid;
		error_receiveremails_required = receiveremails_required;
		error_emailone_invalid = emailone_invalid;
		error_emailtwo_invalid = emailtwo_invalid;
		error_emailthree_invalid = emailthree_invalid;
		error_emailfour_invalid = emailfour_invalid;
		error_emailfive_invalid = emailfive_invalid;
}
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 );
 }
 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 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;
		  
	if (!validRequired(fname)) {
          reqdErrorMsg = reqdErrorMsg + error_firstname_required;
          result = false;
    }else if (!validCharactersName(fname)) {
              invalidErrorMsg = invalidErrorMsg + error_firstname_invalid;
              result = false;
     } 
    
     document.getElementById(stfform).lastName.value = trim(document.getElementById(stfform).lastName.value);		  
     var lName = document.getElementById(stfform).lastName;
 
     if (!validRequired(lName)) {
           reqdErrorMsg = reqdErrorMsg + error_lastname_required;
           result = false;
     } else if (!validCharactersLastName(lName)) {
           invalidErrorMsg = invalidErrorMsg + error_lastname_invalid;
           result = false;
       }
          if (document.getElementById(stfform).senderState.value == -1) {
	   reqdErrorMsg = reqdErrorMsg + error_state_required;
	   result = false;
   }

   var day = document.getElementById(stfform).senderDob.value;
   var month = document.getElementById(stfform).senderMob.value;
   var year = document.getElementById(stfform).senderYob.value;
   var monthArr = getMonthDaysArray(year);

   if ( (month == -1) || (day ==  -1) || (year ==  -1) ) {
	   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).email.value = trim(document.getElementById(stfform).email.value);		
     var eMail = document.getElementById(stfform).email;
	
	if (!validRequired(eMail)) {
	   reqdErrorMsg = reqdErrorMsg + error_email_required;
	   result = false;
	   }else if (!validateEmail(eMail.value)) {  			  
		  invalidErrorMsg = invalidErrorMsg + error_email_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 + error_receiveremails_required;
        result = false;
    }
    
    if(validRequired(emailOne)) {
      if (!validateEmail(emailOne.value)) {  			  
	    invalidErrorMsg = invalidErrorMsg + error_emailone_invalid;
	    result = false;
	  }
    }
    
    if(validRequired(emailTwo)) {
    	if (!validateEmail(emailTwo.value)) {  			  
		  invalidErrorMsg = invalidErrorMsg + error_emailtwo_invalid;
		  result = false;
		} 
    }
    
    if(validRequired(emailThree)) {
        if (!validateEmail(emailThree.value)) {  			  
		  invalidErrorMsg = invalidErrorMsg + error_emailthree_invalid;
		  result = false;
	    }   
    }	
     
	if(validRequired(emailFour)) {	
	   if (!validateEmail(emailFour.value)) {  			  
		  invalidErrorMsg = invalidErrorMsg + error_emailfour_invalid;
		  result = false;
	   }
	}     
    
    
    if(validRequired(emailFive)) {
    	if (!validateEmail(emailFive.value)) {  			  
		    invalidErrorMsg = invalidErrorMsg + error_emailfive_invalid;
			result = false;
	    }
    }	
            
    if (reqdErrorMsg != '') {
          errorMsg = 'Sorry! It looks like you\'ve missed one or more of our required fields. Please fill in the fields highlighted below.' + reqdErrorMsg + '<br>';
    }
    if (invalidErrorMsg != '') {
          errorMsg = errorMsg + 'Sorry! The information you\'ve entered in the following fields (highlighted) does not match our requirements. Please try again.' + invalidErrorMsg;
    }

    return errorMsg;
            
}


//Funtion to submit send to friend form.
function submitUserData(show_errors, stfform) {
		var retVal;
        var errorMessage = validateForm(stfform);
        if (errorMessage == '') {
			 
          retVal = true;
        } else {
          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="^([\\w-]+(?:\\.[\\w-]+)*)@((?:[\\w-]+\\.)*\\w[\\w-]{0,66})\\.([a-zA-Z]{2,6}(?:\\.[a-zA-Z]{2})?)$";
  var reg1 = new RegExp(reg);
  
  if(!reg1.test(email)){
    return false;
  }else{
    return true;
  } 
} 
