var error_email_required;
var error_email_invalid;
var error_cemail_required;
var error_cemail_invalid;
var error_cemail_mismatch;
var error_password_required;
var error_repassword_required;
var error_password_length;
var error_rePassword_mismatch;
var error_uname_required;
var error_firstname_required;
var error_firstname_invalid;
var error_lastname_required;
var error_lastname_invalid;
var error_address_required;
var error_city_required;
var error_city_invalid;
var error_state_required;
var error_zipcode_required;
var error_zipcode_invalid;
var error_zipcodeCA_invalid;
var error_phone_invalid;
var error_dateofbirth_required;
var error_dateofbirth_invalid;
var error_tc;
var error_reqfieldmissing;
var error_reqfieldincorrect;
var error_uname_invalid;

 //function to inititalise error messages.
 function initialiseRegistration(email_required, 
							email_invalid, 
							cemail_required, 
							cemail_invalid, 
							cemail_mismatch, 
							password_required, 
							repassword_required, 
							password_length, 
							rePassword_mismatch, 
							uname_required, 
							firstname_required, 
							firstname_invalid, 
							lastname_required, 
							lastname_invalid, 
							address_required, 
							city_required, 
							city_invalid, 
							state_required, 
							zipcode_required, 
							zipcode_invalid, 
							zipcodeCA_invalid, 
							phone_invalid, 
							dateofbirth_required, 
							dateofbirth_invalid, 
							tc, 
							reqfieldmissing, 
							reqfieldincorrect, 
							uname_invalid) {
							
	error_email_required = 	email_required;
	error_email_invalid = 	email_invalid;
	error_cemail_required = 	cemail_required;
	error_cemail_invalid = 	cemail_invalid;
	error_cemail_mismatch = 	cemail_mismatch;
	error_password_required = 	password_required;
	error_repassword_required = 	repassword_required;
	error_password_length = 	password_length;
	error_rePassword_mismatch = 	rePassword_mismatch;
	error_uname_required = 	uname_required;
	error_firstname_required = 	firstname_required;
	error_firstname_invalid = 	firstname_invalid;
	error_lastname_required = 	lastname_required;
	error_lastname_invalid = 	lastname_invalid;
	error_address_required = 	address_required;
	error_city_required = 	city_required;
	error_city_invalid = 	city_invalid;
	error_state_required = 	state_required;
	error_zipcode_required = 	zipcode_required;
	error_zipcode_invalid = 	zipcode_invalid;
	error_zipcodeCA_invalid = 	zipcodeCA_invalid;
	error_phone_invalid = 	phone_invalid;
	error_dateofbirth_required = 	dateofbirth_required;
	error_dateofbirth_invalid = 	dateofbirth_invalid;
	error_tc = 	tc;
	error_reqfieldmissing = 	reqfieldmissing;
	error_reqfieldincorrect = 	reqfieldincorrect;
	error_uname_invalid = uname_invalid; 
 }

 //function to submit user data.
 function submitUserData() {
     var errorMessage = validateRegistrationForm();
     var returnVal = false;
     if (errorMessage == '') {          
       returnVal = true;
     } else {
     	if (getElement('show_errors')) {
	       getElement('show_errors').innerHTML = errorMessage+'<br/>';       
	       scroll(0,270);
       }
     }        
     return returnVal;
 }

 //function to validate form.
 function validateRegistrationForm() {
       var result = true;
       var errorMsg = '';
       var reqdErrorMsg = '';
       var invalidErrorMsg = '';
	          
       getElement('registration').firstName.value = trim(getElement('registration').firstName.value);
       var fname = getElement('registration').firstName;
       if (!validRequired(fname)) {
           reqdErrorMsg = reqdErrorMsg + error_firstname_required;
           setErrorAlert('firstName', true);
           result = false;
       }else if (!validCharactersName(fname)) {
           invalidErrorMsg = invalidErrorMsg + error_firstname_invalid;
           setErrorAlert('firstName', true);
           result = false;
       } else {
       		setErrorAlert('firstName', false);
       }
       
       getElement('registration').lastName.value = trim(getElement('registration').lastName.value);
       var lName = getElement('registration').lastName;
       if (!validRequired(lName)) {
           reqdErrorMsg = reqdErrorMsg + error_lastname_required;
           setErrorAlert('lastName', true);
           result = false;
       } else if (!validCharactersLastName(lName)) {
           invalidErrorMsg = invalidErrorMsg + error_lastname_invalid;
           setErrorAlert('lastName', true);
           result = false;
       } else {
       		setErrorAlert('lastName', false);
       }
       
       getElement('registration').address.value = trim(getElement('registration').address.value);
       if (!validRequired( getElement('registration').address)) {
           reqdErrorMsg = reqdErrorMsg + error_address_required;
           setErrorAlert('address', true);
           result = false;
       } else {
       		setErrorAlert('address', false);
       }
       
       getElement('registration').city.value = trim(getElement('registration').city.value);
       if (!validRequired( getElement('registration').city)) {
           reqdErrorMsg = reqdErrorMsg + error_city_required;
           setErrorAlert('city', true);
           result = false;
       } else if (!validCity(getElement('registration').city)){
       	   invalidErrorMsg = invalidErrorMsg + error_city_invalid;
           setErrorAlert('city', true);
           result = false;
       } else {
       		setErrorAlert('city', false);
       }

       if (getElement('registration').state.value == -1) {
           reqdErrorMsg = reqdErrorMsg + error_state_required;
           setErrorAlert('state', true);
           result = false;
       } else {
       		setErrorAlert('state', false);
       }

	    var state = getElement('state').value;
		
		
		
       
       getElement('registration').zipCode.value = trim(getElement('registration').zipCode.value);
	   var zip = getElement('registration').zipCode.value;
       if (!validRequired( getElement('registration').zipCode)) {
           reqdErrorMsg = reqdErrorMsg + error_zipcode_required;
           setErrorAlert('zipCode', true);
           result = false;
       } else if ( (state == "Alberta" || state == "Colombie-Britannique" || state == "Île-du-Prince-Édouard" || state == "Manitoba" ||
			  state == "Nouveau-Brunswick" || state == "Nouvelle-Écosse" || state == "Nunavut" || state == "Ontario" || 
			  state == "Québec" || state == "Saskatchewan" || state == "Terre-Neuve" || state == "Territoires du Nord-Ouest" || state == "Yukon" ) && !isZipCA(trim(getElement('registration').zipCode.value))) {
              invalidErrorMsg = invalidErrorMsg + error_zipcodeCA_invalid;			 
			  setErrorAlert('zipCode', true);
              result = false;
          }else {
       		setErrorAlert('zipCode', false);
       }
              
	   if (getElement('registration').phone) {
	   	   getElement('registration').phone.value = trim(getElement('registration').phone.value);
	       if (!validPhone( getElement('registration').phone)) {
	           invalidErrorMsg = invalidErrorMsg + error_phone_invalid;
	           result = false;
	       }
       }

       var day = getElement('registration').ddob.value;
       var month = getElement('registration').mmob.value;
       var year = getElement('registration').yob.value;
       var monthArr = getMonthDaysArray(year);

       if ( (month == -1) || (day ==  -1) || (year ==  -1) ) {
           reqdErrorMsg = reqdErrorMsg + error_dateofbirth_required;
           setErrorAlert('yob', true);
           result = false;
       } else if (day > monthArr[month]) {
           // error number of days in month is greater.
           invalidErrorMsg = invalidErrorMsg + error_dateofbirth_invalid;
           setErrorAlert('yob', true);
           result = false;
       } else {
       		setErrorAlert('yob', false);
       }
       
       getElement('registration').email.value = trim(getElement('registration').email.value);
       var eMail = getElement('registration').email;
       if ( !validRequired(eMail)) {
           reqdErrorMsg = reqdErrorMsg + error_email_required;
           setErrorAlert('email', true);
           result = false;
       } else if (!isEmailAddr(eMail) || !validEmailDomain(eMail)) {
           invalidErrorMsg = invalidErrorMsg + error_email_invalid;
           setErrorAlert('email', true);
           result = false;
       } else {
       		setErrorAlert('email', false);
       }
       
       getElement('registration').cemail.value = trim(getElement('registration').cemail.value);
       var cemail = getElement('registration').cemail;
       if ( !validRequired(cemail)) {
           reqdErrorMsg = reqdErrorMsg + error_cemail_required;
           setErrorAlert('cemail', true);
           result = false;
       } else if (!isEmailAddr(cemail) || !validEmailDomain(cemail)) {
           invalidErrorMsg = invalidErrorMsg + error_cemail_invalid;
           setErrorAlert('cemail', true);
           result = false;
       } else {
       		setErrorAlert('cemail', false);
       }

       if (eMail.value != cemail.value) {
           invalidErrorMsg = invalidErrorMsg + error_cemail_mismatch;
           setErrorAlert('email', true);
           setErrorAlert('cemail', true);
           result = false;
       }
       
       getElement('registration').userName.value = trim(getElement('registration').userName.value);
       var uName = getElement('registration').userName;
       if ( !validRequired(uName)) {
           reqdErrorMsg = reqdErrorMsg + error_uname_required;
           setErrorAlert('userName', true);
           result = false;
       } else if (uName.value.length > 0 && uName.value.length < 5) {
       		invalidErrorMsg = invalidErrorMsg + error_uname_invalid;
       		setErrorAlert('userName', true);
       } else {
       		setErrorAlert('userName', false);
       }
       
       getElement('registration').password.value = trim(getElement('registration').password.value);
       getElement('registration').retypepassword.value = trim(getElement('registration').retypepassword.value);
       var pass = getElement('registration').password;
       var repass = getElement('registration').retypepassword;
       if (!validRequired( pass)) {
           reqdErrorMsg = reqdErrorMsg + error_password_required;
           setErrorAlert('password', true);
           result = false;
       } else {
       		setErrorAlert('password', false);
       }
       
       if (!validRequired( repass)) {
           reqdErrorMsg = reqdErrorMsg + error_repassword_required;
           setErrorAlert('retypepassword', true);          
		   result = false;
       } else {
       		setErrorAlert('retypepassword', false);
       }
       
       if (pass.value != '' && repass.value != '') {
         if (pass.value.length < 6 || pass.value.length > 12) {
           invalidErrorMsg = invalidErrorMsg + error_password_length;
           setErrorAlert('password', true);
           result = false;
         }else if (pass.value != repass.value) {
           invalidErrorMsg = invalidErrorMsg + error_rePassword_mismatch;
           setErrorAlert('password', true);
           setErrorAlert('retypepassword', true);
           result = false;
         } else {
         	setErrorAlert('password', false);
            setErrorAlert('retypepassword', false);
         }
       }           

       if (getElement('registration').ageConfirm) {
	       if (!getElement('registration').ageConfirm.checked) {
	           reqdErrorMsg = reqdErrorMsg + error_tc;
	           result = false;
	       }
       }

       if (reqdErrorMsg != '') {
           errorMsg = error_reqfieldmissing + reqdErrorMsg + '<br>';
       }
       if (invalidErrorMsg != '') {
           errorMsg = errorMsg + error_reqfieldincorrect + invalidErrorMsg;
       }
       return errorMsg;
 }
 
 //function to set error alert on yourhms page.
 function setErrorAlert(elementId, isError) {
 	if(getElement('erroralert_' + elementId)) {
 		if(isError) {
 			getElement('erroralert_' + elementId).innerHTML = '<img src="/en_US/yourhms/images/error_alert_img.gif" title="error alert" alt="error alert" width="16"	height="17" />';
 		} else {
 			getElement('erroralert_' + elementId).innerHTML = '&nbsp;';
 		}
 	}
 }
 
 //function to check if user is underage.
 function underageRedirect() {
 	var browserURL = window.location.href;

    var redirectURL = "/en_US/underage.do";
    window.location.href = redirectURL;
 }
 
 /* Below 2 Functions forward page to the next page.*/
 function backButtonOverride() {
  // Work around a Safari bug
  // that sometimes produces a blank page
  setTimeout("backButtonOverrideBody()", 1);

 }

 function backButtonOverrideBody() {
  // Works if we backed up to get here
  try {
    history.forward();
  } catch (e) {
    // OK to ignore
  }
  // Every quarter-second, try again. The only
  // guaranteed method for Opera, Firefox,
  // and Safari, which don't always call
  // onLoad but *do* resume any timers when
  // returning to a page
  setTimeout("backButtonOverrideBody()", 500);
 }
 /* Above 2 Functions forward page to the next page.*/
