// so etwas kann C# erst seit Version 3: Extension Methods
String.prototype.trim = function () {
    return this.replace(/^\s*/, "").replace(/\s*$/, "");
}

function checkForm(form) {
  var $result = true;
  var $b_plz_ort = false;
  var $b_adr_hnr = false;

  for (var el = 0; el < form.length; el++) {
    if ($result==false) {
      return $result;
    }
    // Leerzeichen entfernen
    if (form.elements[el].type == 'text') {
      form.elements[el].value = form.elements[el].value.trim();
    }
    switch(form.elements[el].name) {
      case "vorname":
      case "name":
        if ( form.elements[el].value.length==0) {
          alert("Bitte geben Sie Ihren Namen und Vornamen an.");
          form.elements[el].focus();
          $result = false;
        }
        break;
      case "adresse":
        if (form.elements[el].value.length>0) {
          $b_adr_hnr = true;
        }
        break;
      case "hausnr":
        if (form.elements[el].value.length==0 && $b_adr_hnr == true) {
          alert("Bitte geben sie eine Hausnummer an.");
          form.elements[el].focus();
          $result = false;
        }
        break;
      case "plz":
        if (form.elements[el].value.length>0) {
          $b_plz_ort = true;
        } else {
          if ($b_adr_hnr==true) {
            alert("Bitte geben Sie Postleitzahl und Ort an.")
            form.elements[el].focus();
            $result = false;
          }
        }
        break;
      case "ort":
        if (form.elements[el].value.length==0 && $b_plz_ort == true) {
          alert("Bitte geben Sie einen Ort an.");
          form.elements[el].focus();
          $result = false;
        }
        break;
      case "email":
        if ((form.elements[el].value.length==0) && ($b_plz_ort==false) && ($b_adr_hnr==false)) {
          alert("Bitte geben Sie mindestens noch Ihre Email-Adresse an.")
          form.elements[el].focus();
          $result = false;
        } else {
          if ((form.elements[el].value.length > 0) && form.elements[el].value.indexOf("@",2)>=0) {
            // weiter auf . in der Domain prüfen, also z.B. web.de
            var domain = form.elements[el].value.substr(form.elements[el].value.indexOf("@",2)+1);
            if ( domain.length>0 && domain.indexOf(".",1)>0 && domain.indexOf(".",1)<domain.length-1) {
              // wird als gültig angenommen, da @ und . vorhanden sind;
            } else {
              alert("Bitte geben sie eine gültige Email-Adresse an.")
              form.elements[el].focus();
              $result = false;
            }
          } else {
            // ohne Emailadresse
          }
        }
        break;
      case "beitrag":
        if (form.elements[el].checked == true) {
          if(form.elements[el].value.indexOf("individuell") == 0) {
            if ( form.elements.beitrag_wert.length == 0 || isNaN(form.elements.beitrag_wert.value
              || (form.elements.beitrag_wert * 10) % 10 != 0)) {
              alert("Bitte geben sie nur Ziffern ein, ohne Dezimalzeichen oder Cent");
              form.elements.beitrag_wert.focus();
              $result = false;
            }
          }
        }
        break;
      case "total_preis":
        if (form.elements[el].value == 0) {
          alert("Bitte wählen Sie mindestens 1 CD aus");
          $result = false;
        }
        break;
      default:
        break;
    }
  }
  return $result;
}

