function validieren(f) {
  var fehler = "\n";
  for (var i=0; i<f.elements.length; i++) {
    if (f.elements[i].name.indexOf("_pf") != f.elements[i].name.length - 3) {
      continue;
    }
    switch (f.elements[i].type) {
      case "text": 
      case "textarea": 
      case "password": 
        if (trim(f.elements[i].value) == "") {
          fehler += kurzform(f.elements[i].name) + "\n";
        }
        break;

      case "checkbox": 
        if (!f.elements[i].checked) {
          fehler += kurzform(f.elements[i].name) + "\n";
        }
        break;

      case "radio": 
        var ok = false;
        for (var j=0; j<f.elements[f.elements[i].name].length; j++) {
          if (f.elements[f.elements[i].name][j].checked) {
            ok = true;
            break;
          }
        }
        if (!ok && 
          fehler.indexOf("\n" + f.elements[i].name + "\n") == -1) {
          fehler += kurzform(f.elements[i].name) + "\n";
        }
        break;

      case "select-one":
        if (f.elements[i].selectedIndex == -1 ||
            f.elements[i].options[f.elements[i].selectedIndex].value == "") {
          fehler += kurzform(f.elements[i].name) + "\n";
        }
        break;

      case "select-multiple":
        var ok = false;
        for (var j=0; j<f.elements[i].options.length; j++) {
          if (f.elements[i].options[j].selected && 
              trim(f.elements[i].options[j].value) != "") {
            ok = true;
            break;
          }
        }
        if (!ok) {
          fehler += kurzform(f.elements[i].name) + "\n";
        }
        break;
    }
  }

  if (fehler != "\n") {
    alert("Fehler in den folgenden Feldern:\n" + fehler);
    return false;
  } else {
    return true;
  }
}

function trim(s) {
  if (s.length == 0) {
    return "";
  }
  while (s.charAt[0] == " ") {
    s = s.substring(1);
  }
  while (s.charAt[s.length - 1] == " ") {
    s = s.substring(0, s.length - 1);
  }
  return s;
}

function kurzform(s) {
  return (s.substring(s, s.length - 3));
}
