function radioCheck(ss) {
  for(var i = 0; i < ss.length; i++) {
	  if(ss[i].checked) { return ss[i].value; }
	  }
  return false;
}

function checkbox_empty(ss) {
  for(var i = 0; i < ss.length; i++) {
	   if(ss[i].checked) { return false; }
	 }
  return true;
}

function dropdown_empty(ss){
// Note: ss will need to be fetched via document.getElementsByName('ss[]')
// or something to that effect if [] is used for PHP array
  for(var i = 0; i < ss.length; i++) {
    if(ss[i].selected) {
      if(ss[i].value.length) { return false; }
    }
  }
  return true;
}
	
function disableForm(formID){
  var element = document.getElementById(formID);
  element.style.display = "none;";
}

function form_error_msg(msg){
  document.getElementById("form_error_msg").innerHTML = msg;
}
	
// ----------- validation functions ------------------------------------------

function  validateNumeric( strValue ) {
/*****************************************************************
DESCRIPTION: Validates that a string contains only valid numbers.

PARAMETERS:
   strValue - String to be tested for validity

RETURNS:
  True if valid, otherwise false.
******************************************************************/
var objRegExp  =  /(^-?\d\d*\.\d*$)|(^-?\d\d*$)|(^-?\.\d\d*$)/;

  //check for numeric characters
  return objRegExp.test(strValue);
}

	
function validateEmail( strValue) {
/************************************************
DESCRIPTION: Validates that a string contains a
  valid email pattern.

 PARAMETERS:
   strValue - String to be tested for validity

RETURNS:
   True if valid, otherwise false.

REMARKS: Accounts for email with country appended
  does not validate that email contains valid URL
  type (.com, .gov, etc.) or valid country suffix.
*************************************************/
//var objRegExp = /(^[a-z]([a-z_\.]*)@([a-z_\.]*)([.][a-z]{3})$)|(^[a-z]([a-z_\.]*)@([a-z_\.]*)(\.[a-z]{3})(\.[a-z]{2})*$)/i;
var objRegExp = /^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i;

  //check for valid email
  return objRegExp.test(strValue);
}

function validateUSPhone( strValue ) {
/************************************************
DESCRIPTION: Validates that a string contains valid
  US phone pattern.
  Ex. (999) 999-9999 or (999)999-9999

PARAMETERS:
   strValue - String to be tested for validity

RETURNS:
   True if valid, otherwise false.
*************************************************/
  var objRegExp  = /^\([1-9]\d{2}\)\s?\d{3}\-\d{4}$/;

  //check for valid us phone with or without space between
  //area code
  return objRegExp.test(strValue);
}

function validateZip( strValue ) {
/************************************************
DESCRIPTION: Validates that a string a United
  States zip code in 5 digit format or zip+4
  format. 99999 or 99999-9999

PARAMETERS:
   strValue - String to be tested for validity

RETURNS:
   True if valid, otherwise false.

*************************************************/
var objRegExp  = /(^\d{5}$)|(^\d{5}-\d{4}$)/;

  //check for valid US Zipcode
  return objRegExp.test(strValue);
}

function check_contactus(){
  error = false;
 	var error_msg = "";
	
	 // required fields
  var first_name = document.contactus.first_name.value;
  var last_name = document.contactus.last_name.value;
  var email = document.contactus.email.value;
  var comments = document.contactus.comments.value;
	
	 // non-required fields that needs validation
	 var zip = document.contactus.zip.value;
	 var phone1 = document.contactus.phone1.value;
	 var phone2 = document.contactus.phone2.value;
	 var phone3 = document.contactus.phone3.value;

  if(first_name === "" || last_name === "" || email === "" || comments === ""){ 
    error_msg = error_msg + "<li>Please make sure all required fields are filled in.</li>";
    error = true;
  }
	
	 if (email !== ""){
	   if (!validateEmail(email)){
      error_msg = error_msg + "<li>Please enter a valid <b>Email Address</b>.</li>";
      error = true;
		  }
  }
	
	 if ((phone1 !== "")||(phone2 !== "")||(phone3 !== "")){
	   if ((phone1.length < 3)||(phone2.length < 3)||(phone3.length < 4)||(!validateNumeric(phone1))||(!validateNumeric(phone2))||(!validateNumeric(phone3))){
      error_msg = error_msg + "<li>Please enter a valid numerical <b>Phone Number</b>.</li>";
      error = true;
		  }
	 }
	
	 if (zip !== ""){
	   if (!validateZip(zip)){
      error_msg = error_msg + "<li>Please enter a valid <b>Zipcode.</b>.</li>";
      error = true;
		  }
	 }

  error_msg = "<ul>" + error_msg + "</ul>";
	
	 if(!error){
    Effect.Puff('form_errors');
		  return true;
  }
	 else{
		  Effect.Appear('form_errors');
		  form_error_msg(error_msg);
		  window.scrollTo(50,100);
    return false;
  }
}

function check_register(){
  error = false;
	 var error_msg = "";
	
	 // required fields
  var first_name = document.register.first_name.value;
  var last_name = document.register.last_name.value;
  var email = document.register.email.value;
  var phone1 = document.register.phone1.value;
  var phone2 = document.register.phone2.value;
  var phone3 = document.register.phone3.value;
	
	 // non-required fields that needs validation

	 var zip = document.register.zip.value;

  if(first_name === "" || last_name === ""){ 
    error_msg = error_msg + "<li>Please make sure all required fields are filled in.</li>";
    error = true;
  }
	
  if (!validateEmail(email)){
    error_msg = error_msg + "<li>Please enter a valid <b>Email Address</b>.</li>";
    error = true;
	  }
	

  if ((phone1.length < 3)||(phone2.length < 3)||(phone3.length < 4)||(!validateNumeric(phone1))||(!validateNumeric(phone2))||(!validateNumeric(phone3))){
    error_msg = error_msg + "<li>Please enter a valid numerical <b>Phone Number</b>.</li>";
    error = true;
  }

	
	 if (zip !== ""){
	   if (!validateZip(zip)){
      error_msg = error_msg + "<li>Please enter a valid <b>Zipcode.</b>.</li>";
      error = true;
		  }
	 }

  error_msg = "<ul>" + error_msg + "</ul>";
	
	 if(!error){
    Effect.Puff('form_errors');
		  return true;
  }
 	else{
		  Effect.Appear('form_errors');
		  form_error_msg(error_msg);
		  window.scrollTo(50,100);
    return false;
  }
}

function check_volunteer(){
  error = false;
	 var error_msg = "";
	
	 // required fields
  var first_name = document.volunteer.first_name.value;
  var last_name = document.volunteer.last_name.value;
  var email = document.volunteer.email.value;
  var facility = document.volunteer.facility;
	
 	// non-required fields that needs validation
	 var zip = document.volunteer.zip.value;
	 var phone1 = document.volunteer.phone1.value;
	 var phone2 = document.volunteer.phone2.value;
	 var phone3 = document.volunteer.phone3.value;

  if(first_name === "" || last_name === "" || email === ""){ 
    error_msg = error_msg + "<li>Please make sure all required fields are filled in.</li>";
    error = true;
  }
	
	 if (email !== ""){
	   if (!validateEmail(email)){
      error_msg = error_msg + "<li>Please enter a valid <b>Email Address</b>.</li>";
      error = true;
		  }
	 }
	
	 if ((phone1 !== "")||(phone2 !== "")||(phone3 !== "")){
	   if ((phone1.length < 3)||(phone2.length < 3)||(phone3.length < 4)||(!validateNumeric(phone1))||(!validateNumeric(phone2))||(!validateNumeric(phone3))){
      error_msg = error_msg + "<li>Please enter a valid numerical <b>Phone Number</b>.</li>";
      error = true;
		  }
	 }
	
	 if (zip !== ""){
	   if (!validateZip(zip)){
      error_msg = error_msg + "<li>Please enter a valid <b>Zipcode.</b>.</li>";
      error = true;
		  }
	 }
	
	 if (!radioCheck(facility)){
	   error_msg = error_msg + "<li>Please select a <b>facility</b> you are interested in volunteering for.</li>\n";
	 }

  error_msg = "<ul>" + error_msg + "</ul>";
	
 	if(!error){
    Effect.Puff('form_errors');
		  return true;
  }
	 else{
		  Effect.Appear('form_errors');
		  form_error_msg(error_msg);
		  window.scrollTo(50,100);
    return false;
  }
}

function check_mailing_list(){
  error = false;
	 var error_msg = "";
	
	 // required fields
  var email = document.mailing_list.email.value;

 	// non-required fields that needs validation
	 var zip = document.mailing_list.zip.value;
	 var phone1 = document.mailing_list.phone1.value;
	 var phone2 = document.mailing_list.phone2.value;
	 var phone3 = document.mailing_list.phone3.value;

	 if ((email === "")||(!validateEmail(email))){
    error_msg = error_msg + "<li>Please enter a valid <b>Email Address</b>.</li>";
    error = true;
	 }

	 if ((phone1 !== "")||(phone2 !== "")||(phone3 !== "")){
	   if ((phone1.length < 3)||(phone2.length < 3)||(phone3.length < 4)||(!validateNumeric(phone1))||(!validateNumeric(phone2))||(!validateNumeric(phone3))){
      error_msg = error_msg + "<li>Please enter a valid numerical <b>Phone Number</b>.</li>";
      error = true;
		  }
	 }
	
	 if (zip !== ""){
	   if (!validateZip(zip)){
      error_msg = error_msg + "<li>Please enter a valid <b>Zipcode.</b>.</li>";
      error = true;
		  }
	 }

  error_msg = "<ul>" + error_msg + "</ul>";
	
 	if(!error){
    Effect.Puff('form_errors');
		  return true;
  }
	 else{
		  Effect.Appear('form_errors');
		  form_error_msg(error_msg);
		  window.scrollTo(50,100);
    return false;
  }
}