var error_email_required;
var error_email_invalid;
var error_confirmEmail_required;
var error_confirmEmail_invalid;
var errors_identical;
var error_password_required;
var error_password_length;
var error_repassword_required;
var error_rePassword_mismatch;
var error_firstname_required;
var error_firstname_invalid;
var error_lastname_required;
var error_lastname_invalid;
var error_date_invalid;
var error_address_required;
var error_city_required;
var error_city_invalid;
var error_state_required;
var error_zip_required;
var error_zip_invalid;
var error_country_required;
var error_reqfieldmissing;
var error_reqfieldincorrect;

//Function to initialize error messages.
function initializeRegistration(email_required,
									email_invalid,
									confirmEmail_required,
									confirmEmail_invalid,
									errors_identical,
									password_required,
									password_length,
									repassword_required,
									rePassword_mismatch,
									firstname_required,
									firstname_invalid,
									lastname_required,
									lastname_invalid,
									date_invalid,
									address_required,
									city_required,
									city_invalid,
									state_required,
									zip_required,
									zip_invalid,
									country_required,
									reqfieldmissing,
									reqfieldincorrect) {
	error_email_required = email_required;
	error_email_invalid = email_invalid;
	error_confirmEmail_required = confirmEmail_required;
	error_confirmEmail_invalid = confirmEmail_invalid;
	errors_identical = errors_identical;
	error_password_required = password_required;
	error_password_length = password_length;
	error_repassword_required = repassword_required;
	error_rePassword_mismatch = rePassword_mismatch;
	error_firstname_required = firstname_required;
	error_firstname_invalid = firstname_invalid;
	error_lastname_required = lastname_required;
	error_lastname_invalid = lastname_invalid;
	error_date_invalid = date_invalid;
	error_address_required = address_required;
	error_city_required = city_required;
	error_city_invalid = city_invalid;
	error_state_required = state_required;
	error_zip_required = zip_required;
	error_zip_invalid = zip_invalid;
	error_country_required = country_required;
	error_reqfieldmissing = reqfieldmissing;
	error_reqfieldincorrect = 	reqfieldincorrect;								
}


//Function to submit user data.
function submitUserData() {
        var errorMessage = validateForm();
        if (errorMessage == '') {
          return true;
        } else {
          document.getElementById('show_errors').innerHTML = errorMessage+'<br/>';
          document.getElementById('show_errors').className="txt_error";
		  getElement('show_help').style.display='block';
		  scroll(0,130);
          return false;
        }
}

//Function to get days in February.
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 );
 }

 
//This function returns an array of month days. Month January is at index 1.
function getDaysinMonthsArray(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 Canada zip code.
function isZipCA(s) {
     var zipcode = s;
	  
	 if (zipcode.length!=6) {
	 
	  	return false;
	 }
	 if(zipcode.length==6){
	 	for(var i=0; i<zipcode.length; i++){
	 		var c = zipcode.charAt(i);
			if(i%2==0){
				if(!isLetter(c)) {
				//alert(i);
					return false;
				}
	 		}else if(i%2==1){
				if(!isDigitCA(c)){
				return false;
			   }
			}
	 	}
	 	return true;
	}	 
	return true;
}//end of function isZipCA()

//Function to validate form.
function validateForm() {
          var result = true;
          var errorMsg = '';
          var reqdErrorMsg = '';
          var invalidErrorMsg = '';

		  document.getElementById('registrationform').email.value = trim(document.getElementById('registrationform').email.value);		
           var eMail = document.getElementById('registrationform').email;
		   
          if ( !validRequired(eMail)) {
              reqdErrorMsg = reqdErrorMsg + error_email_required;
              result = false;
          }else{
              //Email Validation added by Anshul on 07/03/2006
              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(trim(eMail.value))){
                   invalidErrorMsg = invalidErrorMsg + error_email_invalid;
                      result = false;
                  }
		      }

          //Confirm email address validation check
		  document.getElementById('registrationform').confirmEmail.value = trim(document.getElementById('registrationform').confirmEmail.value);
           var reemail = document.getElementById('registrationform').confirmEmail;
          if ( !validRequired(reemail)) {
              reqdErrorMsg = reqdErrorMsg + error_confirmEmail_required;
              result = false;
          }else if(validRequired(reemail)){
              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(trim(reemail.value))){
                   invalidErrorMsg = invalidErrorMsg + error_confirmEmail_invalid;
                      result = false;
                  }else if (trim(eMail.value) != trim(reemail.value)) {
              invalidErrorMsg = invalidErrorMsg + errors_identical;
              result = false;
               }
		      }
			  

		  var pass = document.getElementById('registrationform').password;
          var repass =document.getElementById('registrationform').confirmPassword;
          if (!validRequired(pass)) {
              reqdErrorMsg = reqdErrorMsg + error_password_required;
              result = false;
          }
          if (!validRequired(repass)) {
              reqdErrorMsg = reqdErrorMsg + error_repassword_required;
              result = false;
          }
          if (pass.value != '' && repass.value != '') {
            if (pass.value.length < 6 || pass.value.length > 12) {
              invalidErrorMsg = invalidErrorMsg + error_password_length;
              result = false;
            }else if (pass.value != repass.value) {
              invalidErrorMsg = invalidErrorMsg + error_rePassword_mismatch;
              result = false;
            }
          }

			  document.getElementById('registrationform').firstName.value = trim(document.getElementById('registrationform').firstName.value);		  
			  var fname = document.getElementById('registrationform').firstName;
			  
			  if (!validRequired(fname)) {
				  reqdErrorMsg = reqdErrorMsg + error_firstname_required;
				  result = false;
			  }else if (!validCharactersName(fname)) {
				  invalidErrorMsg = invalidErrorMsg + error_firstname_invalid;
				  result = false;
			  }    

			  document.getElementById('registrationform').lastName.value = trim(document.getElementById('registrationform').lastName.value);		  
			  var lName = document.getElementById('registrationform').lastName;
			  if (!validRequired(lName)) {
				  reqdErrorMsg = reqdErrorMsg + error_lastname_required;
				  result = false;
			  } else if (!validCharactersLastName(lName)) {
				  invalidErrorMsg = invalidErrorMsg + error_lastname_invalid;
				  result = false;
			  }
			  
			   var day = trim(document.getElementById('registrationform').dob.value);
			  var month = trim(document.getElementById('registrationform').mob.value);
			  var year = trim(document.getElementById('registrationform').yob.value);
			  var monthArr = getDaysinMonthsArray(year);
			   

			  if ( (month == "") || (day ==  "") || (year ==  "") ) {
				  reqdErrorMsg = reqdErrorMsg + '<li>Date of birth is not selected</li>';
				  result = false;
			  }else if (day > monthArr[month]) {
				   
				  // error number of days in month is greater.
				  invalidErrorMsg = invalidErrorMsg + error_date_invalid;
				  result = false;
			  } 
		 
		 

			  document.getElementById('registrationform').address.value = trim(document.getElementById('registrationform').address.value);		  
			  var addr = document.getElementById('registrationform').address;
			  if (!validRequired(addr)) {
				  reqdErrorMsg = reqdErrorMsg + error_address_required;
				  result = false;
			  }  
    
			  document.getElementById('registrationform').city.value = trim(document.getElementById('registrationform').city.value);		  
			  var cityName = document.getElementById('registrationform').city;
			  if (!validRequired(cityName)) {
				  reqdErrorMsg = reqdErrorMsg + error_city_required;
				  result = false;       
			  } else if(!validCharactersName(cityName)) {
	 		  		invalidErrorMsg = invalidErrorMsg + error_city_invalid;
	   	            result = false;
			  }  
			 
			  if (document.getElementById('registrationform').state.value == "-1" ) {
					 
					  reqdErrorMsg = reqdErrorMsg + error_state_required;
					  result = false;
				  }
			  document.getElementById('registrationform').zip.value = trim(document.getElementById('registrationform').zip.value);		
			  var zip = document.getElementById('registrationform').zip;

			  if (!validRequired(zip)) {
				  reqdErrorMsg = reqdErrorMsg + error_zip_required;
				  result = false;
			   }
			  if(document.getElementById('registrationform').country.value == ""){
				  reqdErrorMsg = reqdErrorMsg + error_country_required;
				  result = false;
			  }else{
					  if(document.getElementById('registrationform').country.value =='US'){
						 var state_val = trim(document.getElementById('registrationform').state.value);
						  //UNITED STATES length is 2.
						  //CANADA length is greater than 2
						if(state_val !="-1"){
							 if(state_val.length > 2){
								   invalidErrorMsg = invalidErrorMsg + '<li>Please select a valid State for UNITED STATES</li>';
									  result = false;
								   
							 }
						}
						 if(zip.value !=""){
							 if(!isZipUS(zip.value)){
							  invalidErrorMsg = invalidErrorMsg + error_zip_invalid;
							  result = false;
							  }
						 }
					 }else if(document.getElementById('registrationform').country.value =='CANADA'){
						  var state_val = document.getElementById('registrationform').state.value;
						  //UNITED STATES length is 2.
						  //CANADA length is greater than 2
						  if(state_val !="-1"){
							  if(state_val.length < 4){
								  invalidErrorMsg = invalidErrorMsg + '<li>Please select a valid Province for CANADA</li>';
									  result = false;
								   
							  }
						  }
						  if(zip.value !=""){
							  if(!isZipCA(zip.value)){
							  invalidErrorMsg = invalidErrorMsg + '<li>Please enter a valid Postal Code. (for e.g., A1S2D5)</li>';
							  result = false;
							  }
						  }
					}
			  }//end of country

			  
			   

			  
			 //Email validation check
			 


			 
          if (reqdErrorMsg != '') {
              errorMsg = error_reqfieldmissing + reqdErrorMsg + '<br>';
          }
          if (invalidErrorMsg != '') {
              errorMsg = errorMsg + error_reqfieldincorrect + invalidErrorMsg;
          }

          return errorMsg;
}
 
//Function to display div.
function showdiv(id1){
	if(document.registrationform.hmsOptin.checked || document.registrationform.edsOptin.checked){
		
	   document.getElementById(id1).style.display = "block";
    }else{
		document.getElementById(id1).style.display = "none";
	}
	
}
