<!--
  /*
    Datei: checkform.js
    Autor: Michael Sonnenfeld
    Datum: 25.07.2002
    Zweck: Prüft markierte Formularfelder (ersten 2 Zeichen im Formularfeldname)
           in einem angegebenen Formular auf folgende Merkmale:
           Marke Bedeutung
           _1    Pflichtfeld (generelle Eingabe erforderlich)
           _2    Numerisches Feld (nur Zahlen und leer Zeichenketten erlaubt)
           _3    Email-Feld (nur Email-Adressen und leer Zeichenketten erlaubt)
           _4    Numerisches Pflichtfeld (Eingabe einer Zahl erforderlich)
           _5    Email-Pflichtfeld (Eingabe einer Email-Adressen erforderlich)
  */
  
  // Globales Array zum speichern der markierten Formularfelder
  // -------------------------------------------------------------------------
  var fldElements = new Array();

  // Hauptfunktion checkform(strFormName)
  // Prüft das Formular 'strFormName' und liefert TRUE oder FALSE zurück
  // -------------------------------------------------------------------------
  function checkform(strFormName)
  {
    var strType, strElementName;
    var intElementCount, i;
    
    for(i=0;i<fldElements.length;i++)
      fldElements[i][1] = "";

    if(strFormName != "")
    {
      eval("strType = typeof document." + strFormName);
      if(strType != "undefined")
      {
        eval("intElementCount = document." + strFormName + ".elements.length");
        for(i=0;i<intElementCount;i++)
        {
          eval("strElementName = document." + strFormName + ".elements[i].name");
          if(strElementName.substring(0,1) == "_")
            saveElement(strElementName,getElementValue(strFormName,i),i);
        }
        for(i=0;i<fldElements.length;i++)
        {
          if(fldElements[i][0].substring(0,1) == "_")
          {
            switch(fldElements[i][0].substring(1,2))
            {
              case "1":
                if(!checkValue(strFormName,i,"Pflicht"))
                  return(false);
                break;
              case "2":
                if(!checkValue(strFormName,i,"Numerisch"))
                  return(false);
                break;
              case "3":
                if(!checkValue(strFormName,i,"Email"))
                  return(false);
                break;
              case "4":
                if(!checkValue(strFormName,i,"Pflicht") || !checkValue(strFormName,i,"Numerisch"))
                  return(false);
                break;
              case "5":
                if(!checkValue(strFormName,i,"Pflicht") || !checkValue(strFormName,i,"Email"))
                  return(false);
                break;
            }
          }
        }
      }
    }
    if(check_textarea(strFormName)) {
      return(true);
    }
    else {
      return(false);
    }
  }
  
  // Funktion checkValue(strFormName,intElementsIndex,strType)
  // Prüft den Wert des Formularfeldes mit dem Index 'intElementsIndex' in 
  // dem Formular 'strFormName' auf die Eigenschaft 'strType' und liefert 
  // TRUE oder FALSE zurück
  // -------------------------------------------------------------------------
  function checkValue(strFormName,intElementsIndex,strType)
  {
    var strElementName = fldElements[intElementsIndex][0];
    var strElementValue = fldElements[intElementsIndex][1];
    var intElementIndex = fldElements[intElementsIndex][2];
    switch(strType)
    {
      case "Pflicht":
        if(strElementValue == "")
        {
          alert("Bitte das Feld \"" + strElementName.substring(2,strElementName.length) + "\" ausfüllen!");
          eval("document." + strFormName + ".elements[" + intElementIndex + "].focus()");
          return(false);
        }
        break;
      case "Numerisch":
        if(isNaN(strElementValue))
        {
          alert("Bitte im Feld \"" + strElementName.substring(2,strElementName.length) + "\" nur Zahlen eintragen!\nHinweis: Für das Dezimalkomma bitte den Punkt verwenden.");
          eval("document." + strFormName + ".elements[" + intElementIndex + "].focus()");
          return(false);
        }
        break;
      case "Email":
        var strEmailPatter = /^([0-9a-zA-Z_-]+\.)*[0-9a-zA-Z_-]+@([0-9a-zA-Z_-]+\.)*[0-9a-zA-Z_-]+\.[a-zA-Z]{2,3}$/;
        if((strElementValue != "") && !strEmailPatter.test(strElementValue))
        {
          alert("Bitte im Feld \"" + strElementName.substring(2,strElementName.length) + "\" eine gültige E-Mail-Adresse eintragen!");
          eval("document." + strFormName + ".elements[" + intElementIndex + "].focus()");
          return(false);
        }
        break;
    }
    return(true);
  }
  
  // Funktion saveElement(strElementName,strElementValue,intElementIndex)
  // Speichert (Insert oder Update) ein Formularfeld mit Name, Wert und Index
  // ------------------------------------------------------------------------
  function saveElement(strElementName,strElementValue,intElementIndex)
  {
    var i=0;

    if(strElementName != "")
    {
      while(i<fldElements.length && fldElements[i][0] != strElementName) i++;
      if(i == fldElements.length)
      {
        fldElements[i] = new Array();
        fldElements[i][0] = strElementName;
        fldElements[i][1] = strElementValue;
        fldElements[i][2] = intElementIndex; //wichtig für focus()
      }
      else fldElements[i][1] += strElementValue;
    }
  }
  
  // Funktion getElementValue(strFormName,intElementIndex)
  // Liefert den Wert des Formularfeldes mit Index 'intElementIndex' im 
  // Formular 'strFormName' zurück
  // -------------------------------------------------------------------------
  function getElementValue(strFormName,intElementIndex)
  {
    var strType, strElementType, strReturn = "";
    var blnActive;

    if((strFormName != "") && (!isNaN(intElementIndex)))
    {
      eval("strType = typeof document." + strFormName + ".elements[" + intElementIndex + "]");
      if(strType != "undefined")
      {
        eval("strElementType = document." + strFormName + ".elements[" + intElementIndex + "].type");
        switch(strElementType)
        {
          case "hidden":
            eval("strReturn = document." + strFormName + ".elements[" + intElementIndex + "].value");
            break;
          case "text":
            eval("strReturn = document." + strFormName + ".elements[" + intElementIndex + "].value");
            break;
          case "checkbox":
            eval("blnActive = document." + strFormName + ".elements[" + intElementIndex + "].checked");
            if(blnActive) eval("strReturn = document." + strFormName + ".elements[" + intElementIndex + "].value");
            break;
          case "radio":
            eval("blnActive = document." + strFormName + ".elements[" + intElementIndex + "].checked");
            if(blnActive) eval("strReturn = document." + strFormName + ".elements[" + intElementIndex + "].value");
            break;
          case "select-one":
            eval("strReturn = document." + strFormName + ".elements[" + intElementIndex + "].options[document." + strFormName + ".elements[" + intElementIndex + "].selectedIndex].value");
            break;
          case "textarea":
            eval("strReturn = document." + strFormName + ".elements[" + intElementIndex + "].value");
            break;
          case "submit":
            eval("strReturn = document." + strFormName + ".elements[" + intElementIndex + "].value");
            break;
          case "reset":
            eval("strReturn = document." + strFormName + ".elements[" + intElementIndex + "].value");
            break;
        }
      }
    }
    return(strReturn);
  }
  
  function check_textarea(strFormName) {
    var i, strElementName, intElementLength;
    for(i=0;i<document.forms[strFormName].length;i++) {
      if(document.forms[strFormName].elements[i].type == "textarea") {
        strElementName = document.forms[strFormName].elements[i].name;
        intElementLength = document.forms[strFormName].elements[i].value.length;
        if(intElementLength > 255) {
          alert("Sie haben im Feld ''" + strElementName + "'' mehr als 255 Zeichen eingegeben.\nBitte reduzieren Sie Ihre Eingabe!");
          return(false);
        }
      }
    }
    return(true);
  }
//-->
