var error_firstname_required;
var error_firstname_invalid;
var error_lastname_required;
var error_lastname_invalid;
var error_dateofbirth_required;
var error_dateofbirth_invalid;
var error_address_required;
var error_city_required;
var error_city_invalid;
var error_state_required;
var error_state_invalid_CA;
var error_zipcode_required;
var error_zipcodeUS_invalid;
var error_zipcodeCA_invalid;
var error_country_required;
var error_email_required;
var error_email_invalid;
var error_altemail_required;
var error_altemail_invalid;
var error_email_notequal;
var error_reqfieldmissing;
var error_reqfieldincorrect;


//Function to initialise error messages.
function initializetransformyourhands(firstname_required,
									firstname_invalid,
									lastname_required,
									lastname_invalid,
									dateofbirth_required,
									dateofbirth_invalid,
									address_required,
									city_required,
									city_invalid,
									state_required,
									state_invalid_CA,
									zipcode_required,
									zipcodeUS_invalid,
									zipcodeCA_invalid,
									country_required,
									email_required,
									email_invalid,
									altemail_required,
									altemail_invalid,
									email_notequal,
									reqfieldmissing,
									reqfieldincorrect) {
	error_firstname_required = firstname_required;
	error_firstname_invalid = firstname_invalid;
	error_lastname_required = lastname_required;
	error_lastname_invalid = lastname_invalid;
	error_dateofbirth_required = dateofbirth_required;
	error_dateofbirth_invalid = dateofbirth_invalid;
	error_address_required = address_required;
	error_city_required = city_required;
	error_city_invalid = city_invalid;
	error_state_required = state_required;
	error_state_invalid_CA = state_invalid_CA;
	error_zipcode_required = zipcode_required;
	error_zipcodeUS_invalid = zipcodeUS_invalid;
	error_zipcodeCA_invalid = zipcodeCA_invalid;
	error_country_required = country_required;
	error_email_required = email_required;
	error_email_invalid = email_invalid;
	error_altemail_required = altemail_required;
	error_altemail_invalid = altemail_invalid;
	error_email_notequal = email_notequal;
	error_reqfieldmissing = reqfieldmissing;
	error_reqfieldincorrect = reqfieldincorrect;
}



//Function to open window.
function open_window1(url) {
        popupWin = window.open(url, '', "resizable=no,toolbar=no,scrollbars=yes,width=1000,height=569");
}

//Function to submit user data.
function submitUserData() {
        var errorMessage = validateForm();
        if (errorMessage == '') {
          return true;
        } else {
          document.getElementById('show_errors').innerHTML = errorMessage+'<br/>';
          scroll(0,500);
		  return false;
        }
}

//Function to calculate 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 check if user is underage.
function isNotUnderAge(day, month, year)
{	
    var limit = new Date();
    limit.setYear(limit.getYear() - 18);
    limit = limit.getTime();	

    var motherDOB = new Date();
    motherDOB.setYear(year);
    motherDOB.setMonth(month);
    motherDOB.setDate(day);
    motherDOB = motherDOB.getTime();

    if(motherDOB > limit) {
      return false;
    }
    return true;
}

//Function to check if City is valid.
function validCity(formField){
	var result = true;
  var stringto = trim(formField.value);
   if (!(stringto.search(/^[a-zA-Z\s-.]*$/) != -1)){
      //alert('Please enter only characters for the "' + fieldLabel +'" field.');
      result = false;
  }
  return result;
}


//Function to validate form.
function validateForm() {
          var result = true;
          var errorMsg = '';
          var reqdErrorMsg = '';
          var invalidErrorMsg = '';

		  document.getElementById('sweepstake').firstName.value = trim(document.getElementById('sweepstake').firstName.value);		  
          var fname = document.getElementById('sweepstake').firstName;
		  
          if (!validRequired(fname)) {

              reqdErrorMsg = reqdErrorMsg + error_firstname_required;
              result = false;
          }else if (!validCharactersName(fname)) {
              invalidErrorMsg = invalidErrorMsg + error_firstname_invalid;
              result = false;
          }    

		  document.getElementById('sweepstake').lastName.value = trim(document.getElementById('sweepstake').lastName.value);		  
          var lName = document.getElementById('sweepstake').lastName;
          if (!validRequired(lName)) {

              reqdErrorMsg = reqdErrorMsg + error_lastname_required;
              result = false;
          } else if (!validCharactersLastName(lName)) {
              invalidErrorMsg = invalidErrorMsg + error_lastname_invalid;
              result = false;
          }


      var day = document.getElementById('sweepstake').dob.value;
          var month = document.getElementById('sweepstake').mob.value;
          var year = document.getElementById('sweepstake').yob.value;
          var monthArr = getDaysinMonthsArray(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('sweepstake').address.value = trim(document.getElementById('sweepstake').address.value);		  
          var addr = document.getElementById('sweepstake').address;
          if (!validRequired(addr)) {

              reqdErrorMsg = reqdErrorMsg + error_address_required;
              result = false;
          }

		  document.getElementById('sweepstake').city.value = trim(document.getElementById('sweepstake').city.value);		  
          var cityName = document.getElementById('sweepstake').city;
          if (!validRequired(cityName)) {

              reqdErrorMsg = reqdErrorMsg + error_city_required;
              result = false;
          }else if (!validCity(cityName)) {

              invalidErrorMsg = invalidErrorMsg + error_city_invalid;
              result = false;
          }    

          if (document.getElementById('sweepstake').state.value == -1 || document.getElementById('sweepstake').state.value == -2) {
		     
              reqdErrorMsg = reqdErrorMsg + error_state_required;
              result = false;
          }else{
		  
		   var state_val = document.getElementById('sweepstake').state.value;
		  //UNITED STATES length is 2.
		  //CANADA length is greater than 2
		   if(document.getElementById('sweepstake').country.value == 'UNITED STATES' && state_val.length > 2){

		   reqdErrorMsg = reqdErrorMsg + error_state_invalid;
              result = false;
		   
		   }else if(document.getElementById('sweepstake').country.value == 'CANADA' && (state_val.length == 2)){

		   reqdErrorMsg = reqdErrorMsg + error_state_invalid;
              result = false;
		   
		   }
		  
		  }
		  document.getElementById('sweepstake').zip.value = trim(document.getElementById('sweepstake').zip.value);		
          var zip = document.getElementById('sweepstake').zip;

          if (!validRequired(zip)) {
              reqdErrorMsg = reqdErrorMsg + error_zipcode_required;
              result = false;
           }else if(trim(document.getElementById('sweepstake').country.value) == 'UNITED STATES'){
              if( !isZipUS(zip.value)){
              invalidErrorMsg = invalidErrorMsg + error_zipcodeUS_invalid;
              result = false;
              }
           }else if(trim(document.getElementById('sweepstake').country.value) == 'CANADA'){
            if( !isZipCA(zip.value)){
              invalidErrorMsg = invalidErrorMsg + error_zipcodeCA_invalid;
              result = false;
              }
          }
          if (document.getElementById('sweepstake').country.value == -1) {
              reqdErrorMsg = reqdErrorMsg + error_country_required;
              result = false;
          }
         //Email validation check
		 document.getElementById('sweepstake').email.value = trim(document.getElementById('sweepstake').email.value);		
           var eMail = document.getElementById('sweepstake').email;
          if ( !validRequired(eMail)) {
              reqdErrorMsg = reqdErrorMsg + error_email_required;
              result = false;
          }else if (!isEmailAddr(eMail)) {  			  
              invalidErrorMsg = invalidErrorMsg + error_email_invalid;
              result = false;
          }else{
              //Email Validation added by Anshul on 07/03/2006
              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(trim(eMail.value))){
                   invalidErrorMsg = invalidErrorMsg + error_email_invalid;
                      result = false;
                  }
		      }

          //Confirm email address validation check
		  document.getElementById('sweepstake').reemail.value = trim(document.getElementById('sweepstake').reemail.value);
           var reemail = document.getElementById('sweepstake').reemail;
          if ( !validRequired(reemail)) {
              reqdErrorMsg = reqdErrorMsg + error_altemail_required;
              result = false;
          }else if (!isEmailAddr(reemail)) {  			  
              invalidErrorMsg = invalidErrorMsg + error_altemail_invalid;
              result = false;
          }else if ((trim(eMail.value)).toLowerCase() != (trim(reemail.value)).toLowerCase()) {
              invalidErrorMsg = invalidErrorMsg + error_email_notequal;
              result = false;
          }else{
              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(trim(reemail.value))){
                   invalidErrorMsg = invalidErrorMsg + error_altemail_invalid;
                      result = false;
                  }
		      } 


          
          if (reqdErrorMsg != '') {
              errorMsg = error_reqfieldmissing + reqdErrorMsg + '<br>';
              
          }
          if (invalidErrorMsg != '') {
              errorMsg = errorMsg + error_reqfieldincorrect + invalidErrorMsg;
            
          }
		  
		  

          return errorMsg;
}