// VALIDATE FORM FIELDS 
function validateFormOnSubmit(theForm) {
var reason = "";

  reason += validateFirstName(theForm.con_firs);
  reason += validateLastName(theForm.con_last);
  reason += validateStreetAddress(theForm.con_stre);
  reason += validateCity(theForm.con_city);
  reason += validateProvinceState(theForm.con_prov);
  reason += validatePostalZip(theForm.con_zipc);
  reason += validateHomePhone(theForm.con_htel);
  reason += validateWorkPhone(theForm.con_wtel); 
  reason += validateCountry(theForm.con_coun);   
  reason += validateEmail(theForm.email);
  reason += validateCCType(theForm.cre_type);  
  reason += validateCCNumber(theForm.cre_numb);  
  reason += validateCCMonth(theForm.cre_mont);
  reason += validateCCYear(theForm.cre_year);  
      
  if (reason != "") {
    alert("Some fields need correction:\n" + reason);
    return false;
  }

  return true;
}

// EMPTY FIRST NAME
function validateFirstName(fld) {
    var error = "";
 
    if (fld.value.length == 0) {
        fld.style.background = '#FFFFCC'; 
        error = "First Name must be specified.\n"
    } else {
        fld.style.background = '#FFFFFF';
    }
    return error;  
}
// EMPTY LAST NAME
function validateLastName(fld) {
    var error = "";
 
    if (fld.value.length == 0) {
        fld.style.background = '#FFFFCC'; 
        error = "Last Name must be specified.\n"
    } else {
        fld.style.background = '#FFFFFF';
    }
    return error;  
}
// EMPTY STREET ADDRESS
function validateStreetAddress(fld) {
    var error = "";
 
    if (fld.value.length == 0) {
        fld.style.background = '#FFFFCC'; 
        error = "Street Address must be specified.\n"
    } else {
        fld.style.background = '#FFFFFF';
    }
    return error;  
}
// EMPTY CITY
function validateCity(fld) {
    var error = "";
 
    if (fld.value.length == 0) {
        fld.style.background = '#FFFFCC'; 
        error = "City must be specified.\n"
    } else {
        fld.style.background = '#FFFFFF';
    }
    return error;  
}
// EMPTY PROVINCE
function validateProvinceState(fld) {
    var error = "";
 
    if (fld.value.length == 0) {
        fld.style.background = '#FFFFCC'; 
        error = "Province/State must be specified.\n"
    } else {
        fld.style.background = '#FFFFFF';
    }
    return error;  
}
// EMPTY POSTAL CODE
function validatePostalZip(fld) {
    var error = "";
 
    if (fld.value.length == 0) {
        fld.style.background = '#FFFFCC'; 
        error = "Postal/Zip Code must be specified.\n"
    } else {
        fld.style.background = '#FFFFFF';
    }
    return error;  
}
// VALIDATE HOME NUMBER
function validateHomePhone(fld) {
    var error = "";
    var stripped = fld.value.replace(/[\(\)\.\-\ ]/g, '');    

   if (fld.value == "") {
        error = "Home Phone number must be specified.\n";
        fld.style.background = '#FFFFCC';
    } else if (isNaN(parseInt(stripped))) {
        error = "Home Phone number contains illegal characters.\n";
        fld.style.background = '#FFFFCC';
    } else if (!(stripped.length == 10)) {
        error = "Home Phone number is the wrong length. Make sure you include an area code.\n";
        fld.style.background = '#FFFFCC';
    }
	else {
        fld.style.background = '#FFFFFF';
    }
    return error;
}
// VALIDATE WORK NUMBER
function validateWorkPhone(fld) {
    var error = "";
    var stripped = fld.value.replace(/[\(\)\.\-\ ]/g, '');    

   if (fld.value == "") {
        error = "Work Phone number must be specified.\n";
        fld.style.background = '#FFFFCC';
    } else if (isNaN(parseInt(stripped))) {
        error = "Work Phone number contains illegal characters.\n";
        fld.style.background = '#FFFFCC';
    } else if (!(stripped.length == 10)) {
        error = "Work Phone number is the wrong length. Make sure you include an area code.\n";
        fld.style.background = '#FFFFCC';
    } else {
        fld.style.background = '#FFFFFF';
    }
    return error;
}
// EMPTY COUNTRY
function validateCountry(fld) {
    var error = "";
 
    if (fld.value.length == 0) {
        fld.style.background = '#FFFFCC'; 
        error = "Country must be specified.\n"
    } else {
        fld.style.background = '#FFFFFF';
    }
    return error;  
}
// VALIDATE EMAIL ADDRESS
function trim(s)
{
  return s.replace(/^\s+|\s+$/, '');
}

function validateEmail(fld) {
    var error="";
    var tfld = trim(fld.value);                        // value of field with whitespace trimmed off
    var emailFilter = /^[^@]+@[^@.]+\.[^@]*\w\w$/ ;
    var illegalChars= /[\(\)\<\>\,\;\:\\\"\[\]]/ ;
   
    if (fld.value == "") {
        fld.style.background = '#FFFFCC';
        error = "Email Address must be specified\n";
    } else if (!emailFilter.test(tfld)) {              // test email for illegal characters
        fld.style.background = '#FFFFCC';
        error = "Email Address is not valid.\n";
    } else if (fld.value.match(illegalChars)) {
        fld.style.background = '#FFFFCC';
        error = "Email Address contains illegal characters.\n";
    } else {
        fld.style.background = '#FFFFFF';
    }
    return error;
}
// CREDIT CARD TYPE
function validateCCType(fld) {
    var error = "";
 
    if (fld.value.length == 0) {
        fld.style.background = '#FFFFCC'; 
        error = "Credit Card Type has not been selected.\n"
    } else {
        fld.style.background = '#FFFFFF';
    }
    return error;  
}
// VALIDATE CREDIT CARD NUMBER
function validateCCNumber(fld) {
    var error = "";
    var stripped = fld.value.replace(/[\(\)\.\-\ ]/g, '');    

   if (fld.value == "") {
        error = "Credit Card Number must be specified.\n";
        fld.style.background = '#FFFFCC';
    } else if (isNaN(parseInt(stripped))) {
        error = "Credit Card Number must be a number.\n";
        fld.style.background = '#FFFFCC';
    } else if (fld.value.length<16) {
	error = "Credit Card Number is invalid.\n";
	fld.style.background = '#FFFFCC';
    } else {
        fld.style.background = '#FFFFFF';
    }
    return error;
}
// CREDIT CARD MONTH
function validateCCMonth(fld) {
    var error = "";
 
    if (fld.value.length == 0) {
        fld.style.background = '#FFFFCC'; 
        error = "Expiry Month has not been selected.\n"
    } else {
        fld.style.background = '#FFFFFF';
    }
    return error;  
}
// CREDIT CARD YEAR
function validateCCYear(fld) {
    var error = "";
 
    if (fld.value.length == 0) {
        fld.style.background = '#FFFFCC'; 
        error = "Expiry Year has not been selected.\n"
    } else {
        fld.style.background = '#FFFFFF';
    }
    return error;  
}
