function checkwhere(e) {
    if (document.layers){
        xCoord = e.x;
        yCoord = e.y;
    } else if (document.all){
        xCoord = event.clientX;
        yCoord = event.clientY;
    } else if (document.getElementById){
        xCoord = e.clientX;
        yCoord = e.clientY;
    }
}

document.onmousemove = checkwhere;


function hidePopbox() {
    document.getElementById('popboxcontact').innerHTML = "";
    document.getElementById('popboxcontact').style.visibility = "hidden";
}

function countrySelect() {
	document.getElementById('nocountry').style.visibility='hidden';
	document.getElementById('nocountry').style.display='none';

	// Canada
	if(document.getElementById('addr4a').value == 'CANADA') {
		document.getElementById('addr3a').style.visibility='hidden';
		document.getElementById('addr3a').style.display='none';
		document.forms[0].addr3a.disabled=true;

		document.getElementById('addr3b').style.visibility='visible';
		document.getElementById('addr3b').style.display='block';
		document.forms[0].addr3b.disabled=false;

		document.getElementById('addr3c').style.visibility='hidden';
		document.getElementById('addr3c').style.display='none';
		document.forms[0].addr3c.disabled=true;

		document.forms[0].addr4a.disabled=false;
		document.forms[0].addr4b.disabled=true;
	}

	// USA
	if(document.getElementById('addr4a').value == 'USA') {
		document.getElementById('addr3a').style.visibility='hidden';
		document.getElementById('addr3a').style.display='none';
		document.forms[0].addr3a.disabled=true;

		document.getElementById('addr3b').style.visibility='hidden';
		document.getElementById('addr3b').style.display='none';
		document.forms[0].addr3b.disabled=true;

		document.getElementById('addr3c').style.visibility='visible';
		document.getElementById('addr3c').style.display='block';
		document.forms[0].addr3c.disabled=false;

		document.forms[0].addr4a.disabled=false;
		document.forms[0].addr4b.disabled=true;
	}

	// Other
	if(document.getElementById('addr4a').value == 'Other') {
		document.getElementById('addr4a').style.visibility='hidden';
		document.getElementById('addr4a').style.display='none';
		document.forms[0].addr4a.disabled=true;
		document.getElementById('addr4b').style.visibility='visible';
		document.getElementById('addr4b').style.display='block';
		document.forms[0].addr4b.disabled=false;

		document.forms[0].addr3a.disabled=false;
		document.getElementById('addr3a').style.visibility='visible';
		document.getElementById('addr3a').style.display='block';
		document.getElementById('addr3a').value='NA';
		document.getElementById('addr3a').style.background = '#ffffff';

		document.getElementById('addr3b').style.visibility='hidden';
		document.getElementById('addr3b').style.display='none';
		document.forms[0].addr3b.disabled=true;

		document.getElementById('addr3c').style.visibility='hidden';
		document.getElementById('addr3c').style.display='none';
		document.forms[0].addr3c.disabled=true;
	}
}

function resetCountry() {
	document.getElementById('nocountry').style.visibility='visible';
	document.getElementById('nocountry').style.display='block';

	document.forms[0].addr4a.disabled=false;
	document.getElementById('addr4a').style.visibility='visible';
	document.getElementById('addr4a').style.display='block';

	document.forms[0].addr4b.disabled=true;
	document.getElementById('addr4b').style.visibility='hidden';
	document.getElementById('addr4b').style.display='none';

	document.forms[0].addr3a.disabled=true;
	document.getElementById('addr3a').value='Select Country first';
	document.getElementById('addr3a').style.background = '#d8d8d8';
	document.getElementById('addr3a').style.visibility='visible';
	document.getElementById('addr3a').style.display='block';

	document.forms[0].addr3b.disabled=true;
	document.getElementById('addr3b').style.visibility='hidden';
	document.getElementById('addr3b').style.display='none';

	document.forms[0].addr3c.disabled=true;
	document.getElementById('addr3c').style.visibility='hidden';
	document.getElementById('addr3c').style.display='none';

}

function provSelect() {
	document.getElementById('noprovince').style.visibility='hidden';
	document.getElementById('noprovince').style.display='none';
}

function stateSelect() {
	document.getElementById('nostate').style.visibility='hidden';
	document.getElementById('nostate').style.display='none';
}


function validateContact(theForm) {
var reason = "";

  reason += validateFirstname(theForm.fname);
  reason += validateLastname(theForm.lname);
  reason += validateEmail(theForm.email);
  reason += validateAddr1(theForm.addr1);
  reason += validateAddr2(theForm.addr2);
  reason += validateProv(theForm.addr3);
  reason += validateCountry(theForm.addr4);
  reason += validateZip(theForm.zip);
  reason += validatePhone(theForm.phone);
  reason += validateCell(theForm.phone2);
  reason += validateHear(theForm.hear);
  reason += validateJoin(theForm.joinup);
      
  if (reason != "") {
	var theY = whereY();
	document.getElementById('popboxcontact').innerHTML = "<p><b>Some fields need correction:</b><br />\n" + reason + "</p>\n<div class=\"spacer10\"></div>\n<center><button style=\"color:#ffffff; background-color:#ff8f00; width:100px; height:20px; border:0; font:bold 10px sans-serif\" onclick=\"hidePopbox(); return false;\">Close</button></center>";

	document.getElementById('popboxcontact').style.left = (xCoord-50) + "px";
	document.getElementById('popboxcontact').style.top = ((yCoord+theY)-250) + "px";
	document.getElementById('popboxcontact').style.visibility = "visible";
    return false;
  } 
  else 
  {
//    var answer = confirm("Form Validated\nClick OK to proceed or Cancel to make changes");
//    if(answer) { return true; }
//    else { return false; }
    return true;
  }
  return false;
}

function errColor(fldclr) {
  fldclr.style.background = '#bf7f00';
  fldclr.style.color = '#ffffff';
}

function goodColor(fldclr) {
  fldclr.style.background = '#ffffff';
  fldclr.style.color = '#003466';
}

// RESET
function resetColor() {
var elength = document.forms[0].elements.length;
for(i = 0; i < elength; i++) {
 if(document.forms[0].elements[i].type == "text" || document.forms[0].elements[i].type == "password" || document.forms[0].elements[i].type == "select") {
  document.forms[0].elements[i].style.background = "#ffffff";
  document.forms[0].elements[i].style.color = "#003466";
  }
 }
}

// FIRST NAME
function validateFirstname(fld) {
    var error = "";
    var illegalChars = /[^a-zA-Z\ \'\-]/; // allow letters, space, dash, apostrophe
 
    if (fld.value == "") {
        errColor(fld); error = "<b>*</b> You didn't enter a First Name.<br />\n";
    } else if ((fld.value.length > 16)) {
        errColor(fld); error = "<b>*</b> The First Name is too long.<br />\n";
    } else if (illegalChars.test(fld.value)) {
        errColor(fld); error = "<b>*</b> The First Name contains illegal characters. Only letters, space, dash and apostrophe.<br />\n";
    } else {
        goodColor(fld);
    }
    return error;
}

function validateLastname(fld) {
    var error = "";
    var illegalChars = /[^a-zA-Z\ \-\']/; // allow letters, space, dash, apostrophe
 
    if (fld.value == "") {
        errColor(fld); error = "<b>*</b> You didn't enter a Last Name.<br />\n";
    } else if ((fld.value.length > 24)) {
        errColor(fld); error = "<b>*</b> The Last Name is too long.<br />\n";
    } else if (illegalChars.test(fld.value)) {
        errColor(fld); error = "<b>*</b> The Last Name contains illegal characters. Only letters, space, dash and apostrophe.<br /if (document.forms[0].addr4a.selectedIndex == 0) {>\n";
    } else {
        goodColor(fld);
    }
    return error;
}


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 == "") {
        errColor(fld); error = "<b>*</b> You didn't enter an Email Address.<br />\n";
	return error;
    } else if (!emailFilter.test(tfld)) { 
        //test email for illegal characters
        errColor(fld); error = "<b>*</b> Please enter a valid email address.<br />\n";
    } else if (fld.value.match(illegalChars)) {
        errColor(fld); error = "<b>*</b> The email address contains illegal characters.<br />\n";
    } else {
        goodColor(fld);
    }
    return error;
}


function validateAddr1(fld) {
    var error = "";
    var illegalChars = /[^a-zA-Z0-9\-\ .#\']/; // allow letters, numbers, dash, space, period etc
 
    if (fld.value == "") {
        errColor(fld); error = "<b>*</b> You didn't enter a Street Address.<br />\n";
    } else if (fld.value.length > 64) {
        errColor(fld); error = "<b>*</b> The Street Address is too long.<br />\n";
    } else if (illegalChars.test(fld.value)) {
        errColor(fld); error = "<b>*</b> The Street Address contains illegal characters.<br />\n";
    } else {
        goodColor(fld);
    }
    return error;
}

function validateAddr2(fld) {
    var error = "";
    var illegalChars = /[^a-zA-Z0-9\-\ .\']/; // allow letters, numbers, dash, space, period etc
 
    if (fld.value == "") {
        errColor(fld); error = "<b>*</b> You didn't enter a City.<br />\n";
    } else if (fld.value.length > 32) {
        errColor(fld); error = "<b>*</b> The City is too long.<br />\n";
    } else if (illegalChars.test(fld.value)) {
        errColor(fld); error = "<b>*</b> The City contains illegal characters.<br />\n";
    } else {
        goodColor(fld);
    }
    return error;
}

function validateProv(fld) {
    var error = "";
    var illegalChars = /[^a-zA-Z0-9\-\ .\']/; // allow letters, numbers, dash, space, period etc

    if (document.forms[0].addr3b.disabled == false && document.forms[0].addr3b.selectedIndex == 0) {
         error = "<b>*</b> You need to select a Province.<br />\n";
    } else if(document.forms[0].addr3c.disabled == false && document.forms[0].addr3c.selectedIndex == 0) {
         error = "<b>*</b> You need to select a State.<br />\n";
    } else if(document.forms[0].addr3a.disabled == false && document.forms[0].addr3a.value.length < 2) {
        error = "<b>*</b> The Province/State is too short.<br />\n";
    } else if(document.forms[0].addr3a.disabled == false && document.forms[0].addr3a.value.length > 24) {
        error = "<b>*</b> The Province/State is too long.<br />\n";
    } else if (document.forms[0].addr3a.disabled == false && illegalChars.test(document.forms[0].addr3a.value)) {
	error = "<b>*</b> The Province/State contains illegal characters.<br />\n";
//    } else {
//        goodColor(fld);
    }
    return error;
}

function validateCountry(fld) {
    var error = "";
    var illegalChars = /[^a-zA-Z\-\ .\']/; // allow letters, dash, space, period etc

    if (document.forms[0].addr4a.selectedIndex == 0) { 
        error = "<b>*</b> You didn't select/enter a Country.<br />\n";
    } else if(document.forms[0].addr4a.selectedIndex == 3) {
	if (document.forms[0].addr4b.value.length > 32) {
		error = "<b>*</b> The Country is too long.<br />\n";
	} else if (document.forms[0].addr4b.value.length < 2) {
		error = "<b>*</b> Country is too short.<br />\n";
	} else if(illegalChars.test(document.forms[0].addr4b.value)) {
	        error = "<b>*</b>The Country contains illegal characters.<br />\n";
	}
//    } else {
//        goodColor(fld);
    }
    return error;
}


function validateZip(fld) {
    var error = "";
    var illegalChars = /[^a-zA-Z0-9\-\ ]/; // allow letters, numbers, dash, space
 
    if (fld.value == "") {
        errColor(fld); error = "<b>*</b> You didn't enter a Postal/Zip Code.<br />\n";
    } else if (fld.value.length > 12) {
        errColor(fld); error = "<b>*</b> The Postal/Zip Code is too long.<br />\n";
    } else if (illegalChars.test(fld.value)) {
        errColor(fld); error = "<b>*</b> The Postal/Zip Code contains illegal characters. Only letters, numbers, dash and space.<br />\n";
    } else {
        goodColor(fld);
    }
    return error;
}

function validatePhone(fld) {
    var error = "";
    var illegalChars = /[^0-9\ \-]/; // numbers, dash, space
 
    if (fld.value.length > 14) {
        errColor(fld); error = "<b>*</b> The Phone Number is too long.<br />\n";
    } else if (illegalChars.test(fld.value)) {
        errColor(fld); error = "<b>*</b> The Phone Number contains illegal characters. Only numbers dashes and spaces.<br />\n";
    } else {
        goodColor(fld);
    }
    return error;
}

function validateCell(fld) {
    var error = "";
    var illegalChars = /[^0-9\ \-]/; // numbers, dash, space
 
    if (fld.value.length > 14) {
        errColor(fld); error = "<b>*</b> The Cell Phone Number is too long.<br />\n";
    } else if (illegalChars.test(fld.value)) {
        errColor(fld); error = "<b>*</b> The Cell Phone Number contains illegal characters. Only numbers dashes and spaces.<br />\n";
    } else {
        goodColor(fld);
    }
    return error;
}

function validateHear(fld) {
    var error = "";
    var illegalChars = /[^a-zA-Z0-9\-\ .\'\"#]/; // allow letters, numbers, dash, space, period etc
 
    if (fld.value == "") {
        errColor(fld); error = "<b>*</b> Please tell us where you heard about us.<br />\n";
    } else if (fld.value.length > 128) {
        errColor(fld); error = "<b>*</b> The Heard About info is too long.<br />\n";
    } else if (illegalChars.test(fld.value)) {
        errColor(fld); error = "<b>*</b> The Heard About info contains illegal characters.<br />\n";
    } else {
        goodColor(fld);
    }
    return error;
}

function validateJoin(fld) {
  var error = "";
  if(fld.checked == false) { error = '<b>*</b> Please check the anti-spam CheckBox'; }
  return error;
}

