function validate_all() {
  var re_value;
  var forms = document.forms;
  for (i=0; i <= forms.length; i++){
    re_value = validate(forms[i]);
    if (!re_value){ return false;}
  }
}

function validate(form){
var error = '';
var cur;
  if (form){
    if (form._needed_fields){
        var needed = new Array();
            needed = form._needed_fields.value.split("|");
    for (i=0; i < needed.length; i++){
      var obj  = getMyObj(form, needed[i]);
      var myType = obj.type;

          switch (myType){
            case "radio":
              if (!is_radio_checked(needed[i], form)){
                  error += do_error(needed[i], form, myType);
              }
              break;

            case "checkbox":
              if (!is_chBox_checked(obj)){
                  error += do_error(needed[i], form, myType);
              }
              break;

              case "select-one":
                if (!is_select_checked(obj)){
                  error += do_error(needed[i], form, myType);
                }
                break;

              case "select-multiple":
                if (!is_select_checked(obj)){
                  error += do_error(needed[i], form, myType);
                }
                break;

            default: // catch all other stuff that's not special!!!
              if (obj.value == ""){
                  error += do_error(needed[i], form, myType);
            }
            break;
          }
        if(needed[i] == '_mailfrom' && !validate_email(form)){
          error += "Email address is invalid \n";
        }
        }
    if (error != ''){
      alert(error);
        return false;
    }
  } else { return true; }
  } else { return validate_all();} //incase validate is called with no form element

}
function getMyObj(form, myVar){
  var elem = form.elements;
  for (j=0; j < elem.length; j++){
    if (elem[j].name == myVar){
      return elem[j];
    }
  }
  return null;
}
function is_radio_checked(nm, form){
  var elem = form.elements;
  var myChk = 0;
  for (j=0; j < elem.length; j++){
    if (elem[j].name && elem[j].name == nm){
      if (elem[j].checked){
        myChk = 1;
      }
    }
  }
  return myChk;
}

function is_chBox_checked(nm){
  var myChk = 0;
  if (nm.checked){
    myChk = 1;
  }
  return myChk;
}

function getName(myName, f_names, f_lables){
  for (k=0; k < f_names.length; k++){
    if (myName.name == f_names[k]){
      return f_lables[k];
    }
    }
    return myName.name;
}

function is_select_checked(obj){
  var mychek = 0;
  for (m=0; m < obj.options.length; m++){
    if (obj.options[m].selected && obj.options[m].value != ""){
      mychek = 1;
    }
  }
  return mychek;
}

function do_error(myNeeded, form, myType){
    var f_names = new Array();
    var f_lables = new Array();
      f_names = form._fieldnames.value.split("|");
        f_lables = form._fieldlabels.value.split("|");
  var error = "Required " + myType + " field left blank: " + getName(getMyObj(form,myNeeded),f_names,f_lables);
        error += "\n";
    return error;
}


function validate_email(this_form){
  var email_addy = this_form._mailfrom.value;
  return /^(\w+\.)*([\w-]+)@([\w-]+\.)+([a-zA-Z]{2,4})$/.test(email_addy);
}