
function checkEmail (objectEmail,objectConfirm) {
	var error="";

  strng = objectEmail.value;
  objectConfirm.value = "";		// clear confirm field
	
	if (strng == "") {
		error = "You didn't enter an email address.\n";
	}

  var emailFilter=/^.+@.+\..{2,3}$/;
  if (!(emailFilter.test(strng))) { 
  	error = "Please enter a valid email address.\n";
	}
	else {
//test email for illegal characters
		var illegalChars= /[\(\)\<\>\,\;\:\\\"\[\]]/
		if (strng.match(illegalChars)) {
      error = "The email address contains illegal characters.\n";
    }
  }
  if (error != "") {
  	alert(error);
  	objectEmail.value = "";
  	objectEmail.focus();
  	return false;
  }
	return true;    
}

function checkEmailConfirm (objectConfirm,objectEmail) {
	if (objectEmail.value == "") {
		objectConfirm.value = "";
	  objectEmail.focus();
	  return false;
	}
  if (objectConfirm.value != objectEmail.value) {
  	alert("This email address doesn't match the first one you entered.");
  	objectConfirm.value = "";
  	objectConfirm.focus();
  	return false;
  }
  return true;
}
  

// if option is set to 1, then this is a REQUIRED entry, 0 just checks data if entered.
function checkPhone (object,option) {
  strng = object.value;
	var error = "";
	if (strng == "" && option == 1) {
   	alert("You didn't enter a phone number.");
   	object.focus();
   	return false;
	}

	var stripped = strng.replace(/[\(\)\.\-\ ]/g, ''); //strip out acceptable non-numeric characters
  if (isNaN(parseInt(stripped))) {
  	alert("The phone number contains illegal characters.");
   	object.focus();
   	return false;
  }
  
	stripped = stripped.replace(/\D+/g, '');
	var length = stripped.length;
	if (stripped.length >= 7) {
		var areaCode = stripped.substring(0, length-7);
		var prefixNumber = stripped.substring(length-7, length-4);
		var suffixNumber = stripped.substring(length-4);
	}
	else return false;

	if (areaCode.length != 3 || !isNumeric(areaCode) || prefixNumber.length != 3 || !isNumeric(prefixNumber) || suffixNumber.length != 4 || !isNumeric(suffixNumber)) return false;
	object.value = areaCode + '-' + prefixNumber + '-' +  suffixNumber;
	
	return true;
}

   
// Check that a string contains only numbers
function isNumeric(string, ignoreWhiteSpace) {
	if (string.search) {
		if ((ignoreWhiteSpace && string.search(/[^\d\s]/) != -1) || (!ignoreWhiteSpace && string.search(/\D/) != -1)) return false;
	}
	return true;
}


// password - between 4-12 chars, uppercase, lowercase, and numeral

function checkPasswd (object, objectConfirm) {
	strng = object.value;
	object.Confirm = "";
	var error = "";
	if (strng == "") {
  	alert("You didn't enter a password.");
  	object.focus();
  	return false;
	}

	var illegalChars = /[\W_]/; // allow only letters and numbers
    
  if ((strng.length < 4) || (strng.length > 12)) {
  	alert("The password must be at least 4 characters.\n");
  	object.focus();
  	return false;
  }
  else if (illegalChars.test(strng)) {
	  alert("The password contains illegal characters.");
  	object.focus();
  	return false;
  } 
  else if (!((strng.search(/(a-z)+/)) && (strng.search(/(A-Z)+/)) && (strng.search(/(0-9)+/)))) {
  	alert("The password must contain at least one uppercase letter, one lowercase letter, and one numeral.");
  	object.focus();
  	return false;
  }  
	return true;    
}    

function confirmPasswd (objectConfirm,objectPasswd) {
	if (objectPasswd.value == "") {
		objectConfirm.value = "";
	  objectPasswd.focus();
	  return false;
	}
  if (objectConfirm.value != "" && objectConfirm.value != objectPasswd.value) {
  	alert("This password doesn't match the first one you entered.");
  	objectConfirm.value = "";
  	objectConfirm.focus();
  	return false;
  }
  return true;
}
  

// username - 4-10 chars, uc, lc, and underscore only.

function checkUsername (object) {
	strng = object.value;
	var error = "";

	var illegalChars = /\W/; // allow letters, numbers, and underscores
  if ((strng.length < 4) || (strng.length > 12)) {
  	alert("The username must between 4 and 10 characters.");
  	object.focus();
  	return false;
	}
  else if (illegalChars.test(strng)) {
    alert("The username contains illegal characters.");
    object.focus();
    return false;
  } 
	return true;
}

function clearCertCB (myform) {
  var numCheckboxes = myform.elements['cb_cert[]'].length;
  //myform = document.forms[0];
  for (var i=1; i<numCheckboxes; i++) {
		var currentCheckbox = myform.elements['cb_cert[]'][i];
    if (currentCheckbox.checked == true) {
    	currentCheckbox.checked = false;
    }
	}
}

// clear 'none' unless nothing is checked.
function setCertNoneCB (myform) {
	// default is to set 'none' unless something else is checked.
	var setit = true;
  var numCheckboxes = myform.elements['cb_cert[]'].length;
 
  for (var i=1; i<numCheckboxes; i++) {
		var currentCheckbox = myform.elements['cb_cert[]'][i];
    if (currentCheckbox.checked == true) {
    	setit = false;
    	break;
    }
	}
	
	if (setit)
		myform.elements['cb_cert[]'][0].checked=true;
	else
		myform.elements['cb_cert[]'][0].checked=false;
}

function clearMeetingsCB (myform) {
  var numCheckboxes = myform.elements['cb_meetings[]'].length;
  //myform = document.forms[0];
  for (var i=1; i<numCheckboxes; i++) {
		var currentCheckbox = myform.elements['cb_meetings[]'][i];
    if (currentCheckbox.checked == true) {
    	currentCheckbox.checked = false;
    }
	}
}

// clear 'none' unless nothing is checked.
function setMeetingsNoneCB (myform) {
	// default is to set 'none' unless something else is checked.
	var setit = true;
  var numCheckboxes = myform.elements['cb_meetings[]'].length;
 
  for (var i=1; i<numCheckboxes; i++) {
		var currentCheckbox = myform.elements['cb_meetings[]'][i];
    if (currentCheckbox.checked == true) {
    	setit = false;
    	break;
    }
	}
	
	if (setit)
		myform.elements['cb_meetings[]'][0].checked=true;
	else
		myform.elements['cb_meetings[]'][0].checked=false;
}

// clear cb_work[]'s other field 
function validateWorkCB (myform)
{
  var lastElement = myform.elements['cb_work[]'].length-1;
  var otherElement = lastElement - 1;
  
	if (myform.elements['cb_work[]'][otherElement].checked == false) {
		myform.elements['cb_work[]'][lastElement].value = "";
	}
}

function checkCountry (myform)
{
	if (myform.country.value == "Other") {
		myform.otherCountry.disabled = false;
		myform.otherCountry.focus();
	} else {
		myform.otherCountry.value = "";
		myform.otherCountry.disabled = true;
	}
}

function checkRole (myform)
{
	// alert(myform.role.value);
	if (myform.role.value == "Other (specify)") {
		myform.otherRole.disabled = false;
		myform.otherRole.focus();
	} else {
		myform.otherRole.value = "";
		myform.otherRole.disabled = true;
	}
}

function checkReferrer (myform)
{
	// alert(myform.role.value);
	if (myform.referrer.value == "Other (specify)") {
		myform.otherReferrer.disabled = false;
		myform.otherReferrer.focus();
	} else {
		myform.otherReferrer.value = "";
		myform.otherReferrer.disabled = true;
	}
}
