function validate(form_name, req_elts, req_err, addl_checks, addl_err, silent) {
  var oForm
  var oElt
  var req_elts_arr
  var req_err_arr
  var addl_checks_arr
  var addl_err_arr
  var value
  var is_valid
  var j
  
  oForm = document.forms[form_name]
  if (!oForm) {
    if (!silent) alert("Form '" + form_name + "' not found.")
    return false
  }

  req_elts_arr = req_elts.split("|")
  req_err_arr = req_err.split("|")
  addl_checks_arr = addl_checks.split("|")
  addl_err_arr = addl_err.split("|")
    
  for (j = 0; j < req_elts_arr.length; j++) {
     oElt = oForm[req_elts_arr[j]]
	 if (!oElt) {
	   if (!silent) alert("Field '" + req_elts_arr[j] + "' not found.")
	   return false
	 } 
	 
	 value = ""
	 
	 // alert(j + ": "+ req_elts_arr[j] + "\n"  + oElt.type)
	 
	 if ( (oElt.type == "text") || (oElt.type == "textarea") ) {
	   value = oElt.value
	   if (value == "") {
	     if (!silent) alert(req_err_arr[j])
	     oElt.focus() 
	     return false
	   }
	 }
	 
	 if (oElt.type == "select-one") {
	   if (oElt.selectedIndex == -1) {
	     if (!silent) alert(req_err_arr[j])
	     oElt.focus() 
	     return false
	   }
	   
	   value = oElt.options[oElt.selectedIndex].value
	 }
	 
	 is_valid = true
	 
	 if (addl_checks_arr[j] == 1) {
	   // run email validation
       is_valid = is_valid_email(value)
	   	   
	 } else {
	   if (addl_checks_arr[j] == 2) {
	     // run phone number validation
	     is_valid = is_valid_phone(value)
       } else {
	      if (addl_checks_arr[j] == 3) {
		    // run zipcode validation
            is_valid = is_valid_zip_code(value)			
		  }
	   }
	 }
	 
	 if (!is_valid) {
	   if (!silent) alert(addl_err_arr[j])
	   oElt.focus()
	   return false
     }	   
  }
  
  return true 
}

