/* ************************************************************************** */
/* Datei JavaScript-Email-Funktionen.js                                       */
/*                                                                            */
/* JavaScript-Funktionen                       Status: 25.02.2008/04.03.2009  */
/* fuer Formulare und zur Pruefung von E-Mail-Adressen                        */
/*                                                                            */
/* Author: Gerhard Mueller, GmuSoft, www.gmusoft.de                           */
/* Copyright: Entsprechend der GNU General Public License (GPL),              */
/*   siehe http://www.gnu.org/licenses/gpl.html                               */
/*   oder  http://www.gnu.de/gpl-ger.html,                                    */
/*   siehe auch GNU Free Documentation License (GFDL),                        */
/*         http://www.gnu.org/copyleft/fdl.html oder                          */
/*         http://www.giese-online.de/gnufdl-de.html                          */
/* Bestimmte Personen sind jedoch von der freien Nutzung ausgeschlossen,      */
/*   siehe http://www.mueller-herrenberg/license.htm                          */
/* ************************************************************************** */


/* ************************************************************************** */
/* Benutzte Funktionen muessen vorher definiert sein.                         */
/*                                                                            */
/* Vor Ausdruecken wie document.xxx darf kein document.write() benutzt werden,*/
/* sonst gibt es beim Internet Explorer Fehler (Bezug auf neues document)     */
/*                                                                            */
/* ************************************************************************** */

// Lokale und globale Variable:
// Ausserhalb einer Funktion definiert: Global
// Innerhalb einer Funktion definiert mit var:  lokal
// Innerhalb einer Funktion definiert ohne var: global
// Parameter einer Funktion: lokal
   // var indikator, kontaktnummer, mitgliednummer, bild1, bild2, vorname, name, email, telefon, betreff, nachricht;

  // Dynamically loading external JavaScript and CSS files
  // from: http://www.javascriptkit.com/javatutors/loadjavascriptcss.shtml
function loadjscssfile(filename, filetype){
 if (filetype=="js"){ //if filename is a external JavaScript file
  var fileref=document.createElement('script')
  fileref.setAttribute("type","text/javascript")
  fileref.setAttribute("src", filename)
 }
 else if (filetype=="css"){ //if filename is an external CSS file
  var fileref=document.createElement("link")
  fileref.setAttribute("rel", "stylesheet")
  fileref.setAttribute("type", "text/css")
  fileref.setAttribute("href", filename)
 }
 if (typeof fileref!="undefined")
  document.getElementsByTagName("head")[0].appendChild(fileref)
}

var filesadded="" //list of files already added

function checkloadjscssfile(filename, filetype){
 if (filesadded.indexOf("["+filename+"]")==-1){
  loadjscssfile(filename, filetype)
  filesadded+="["+filename+"]" //List of files added in the form "[filename1],[filename2],etc"
 }
 else
  alert("file already added!")
}

  // loadjscssfile("myscript.js", "js") //dynamically load and add this .js file
  // loadjscssfile("javascript.php", "js") //dynamically load "javascript.php" as a JavaScript file
  // loadjscssfile("mystyle.css", "css") ////dynamically load and add this .css file



   function Zeichensatz()
      {
      var Zeichenstring = "";
      var char = "";
      for ( var i = 32; i < 256; i++ )
        {
        // char = String(i);  // Das klappt nicht
        // eval(string[, object]) 
        // NumberObject.toString(radix)  // Converts a Number object to string
        // radix Optional. Specifies the base radix you would like the number displayed as.
        // 2 - The number will show as a binary value 
        // 8 - The number will show as an octal value 
        // 16 - The number will show as an hexadecimal value
        // default: radix 10
        // NumberObject.valueOf()  // returns the number as a string
        char = i.valueOf(); // i als string
        char = String.fromCharCode(char);
        Zeichenstring = Zeichenstring + char;
        }
      Zeichenstring_Windows = "!\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~???????????????????????????  ";
                              // eingegeben als Unicode, beim Abspeichern als ansi Teil verlorengegangen
      Zeichenstring_Linux   = "";
      Tastaturzeichen_Windows = "^1234567890ߴ !\"$%&/()=?` {[]}\\   qwertzuiop+  QWERTZUIOP*  @~  asdfghjkl#  ASDFGHJKL'    <yxcvbnm,.-  >YXCVBNM;:_  |";
      Tastaturzeichen_Linux   = "";
      Tastaturzeichen_Linux   = "^1234567890?'  !\"?$%&/()=?`  ??????{[]}\\?  qwertzuiop?+  QWERTZUIOP?*  @??????????~  asdfghjkl??#  ASDFGHJKL??'  ??????j???^`  <yxcvbnm,.-  >YXCVBNM;:_  |?????n?";
      Sonderzeichen = "ae oe ue ss Ae Oe Ue";
      Sonderzeichen_Windows = "";
      Sonderzeichen_Linux   = "";
      Sonderzeichen_Linux   = "???????";

      // var Sonderzeichenstring = ["","","","","","",""];
      var Sonderzeichennumbers = [];
      var Sonderzeichenstring = "";
      // var Sonderzeichennumbers = "";
      var num = 0;
      for ( var i = 0; i < 7; i++ )
        {
        // num = Number(i);  // Das klappt nicht
        // stringObject.charCodeAt(index)  // returns the Unicode of the character at a specified position.
        // String.fromCharCode(numX,numX,...,numX)  // takes the specified Unicode values and returns a string
        num = Sonderzeichenstring.charCodeAt(i);
        Sonderzeichennumbers[i] = num;
        // Sonderzeichennumbers = Sonderzeichennumbers + num;
        }
      Sonderzeichennumbers_Windows = "228,246,252,223,196,214,220";
      Sonderzeichennumbers_Linux = "";

      // return String(Sonderzeichennumbers) + "  " + Zeichenstring;
      return Zeichenstring;
      // return Sonderzeichennumbers;
      }


   function DocumentInfo ()
      // Einfuegen von Info ueber die aufrufende Webseite ins Feld "SendPage"
      {
      if (typeof(document.getElementsByName("SendPage")[0]) == "object")
         {
         sendpage = document.getElementsByName("SendPage")[0];
         sendpage.value = "";
         sendpage.value = sendpage.value + " Webseite: " + document.URL;
         sendpage.value = sendpage.value + " Titel: " + document.title;
         sendpage.value = sendpage.value + " Letzter Update: " + document.lastModified;
         sendpage.value = sendpage.value + " Zuvor besuchte Seite: " + document.referrer;
         sendpage.value = sendpage.value + " verwendete Zeichenkodierung: " + document.charset;
         sendpage.value = sendpage.value + " voreingestellte Zeichenkodierung: " + document.defaultCharset;
         }
      else
         {  }
      }

   function BrowserInfo ()
      // Einfuegen von Info ueber Browser ins Feld "UserBrowser"
      // plus am Ende Einfuegen von Info ueber die aufrufende Webseite ins Feld "SendPage"
      {
      // document.formular_name.UserBrowser.value = navigator.appName;
      // alert(document.getElementsByName("UserBrowser")[0]);
      if (typeof(document.getElementsByName("UserBrowser")[0]) == "object")
         {
         // alert("userbrowser found");
         userbrowser = document.getElementsByName("UserBrowser")[0];
         userbrowser.value = "";
         // userbrowser.value = "JavaScript: verfgbar";
         // userbrowser.value = userbrowser.value + " - Browser-Info: ";
         userbrowser.value = userbrowser.value + " Betriebssystem: " + navigator.platform;
         userbrowser.value = userbrowser.value + " Name des Browsers: " + navigator.appName;
         userbrowser.value = userbrowser.value + " Spitzname: " + navigator.appCodeName;
         userbrowser.value = userbrowser.value + " Version: " + navigator.appVersion;
         userbrowser.value = userbrowser.value + " HTTP-Identifikation: " + navigator.userAgent;
         userbrowser.value = userbrowser.value + " Sprache: " + navigator.language;
         userbrowser.value = userbrowser.value + " JavaScript verfgbar: " + "true";
         userbrowser.value = userbrowser.value + " Java verfgbar: " + navigator.javaEnabled();
         userbrowser.value = userbrowser.value + " Cookies erlaubt: " + navigator.cookieEnabled;
         userbrowser.value = userbrowser.value + " - Bildschirm-Information: ";
         userbrowser.value = userbrowser.value + " Bildschirm-Breite und Hhe: " + screen.width + "x" + screen.height;
         userbrowser.value = userbrowser.value + " verfgbare Bildschirm-Breite und Hhe: " + screen.availWidth + "x" + screen.availHeight;
         userbrowser.value = userbrowser.value + " Farbtiefe und Farbauflsung: " + screen.colorDepth + "/" + screen.pixelDepth;
         }
      else
         {  }
      // alert(userbrowser.value);
      DocumentInfo ();  // Fuellen der Info ueber die Webseite - Aufruf von hier ist weniger Aufwand als von der datei mit dem Formular aus
      }

   function Bestaetigung ()
      // Hiermit erhaelt der Anwender ein Dialogfenster.
      // Confirm-Fenster haben stets zwei Buttons, einen zum Besttigen und einen zum Abrechen.
      // Der Button zum Besttigen gibt bei Anklicken true zurck, der Abbrechen-Button false.
      {
      var x = window.confirm("Mchten Sie dieses Formular absenden?");
      return x;
      }


   // Aus: berzhlige Leerzeichen entfernen, von Guenther Schleu
   // http://www.free-solutions.de/js/formular_LeerzeichenEntferner.html
   // Aber die Funktion korrigiert, da sie nicht funktionierte und fehlermeldungen brachte
   function trim(item)   // das von PHP bekannte trim gibt es in JavaScript nicht
      {
      var tmp = "";
      var item_length = item.length;
      var item_length_minus_1 = item.length - 1;
      for (index = 0; index < item_length; index++)
        {
        if (item.charAt(index) != ' ')
          {
          tmp += item.charAt(index);
          }
        else
          {
          if ((tmp.length > 0) && (index != item_length_minus_1))
            {
            if (item.charAt(index+1) != ' ')
              {
              tmp += item.charAt(index);
              }
            }
          }
        }
      return tmp;
      }



   function getEmail(address)
      // Erlaube eine E-Mail-Adress-Angabe der Form  mailto: name <mail-address> und auch Blanks an Anfang und Ende
      // und filtere die mail-address heraus
      {
      // alert ("getEmail1: "+address);
      address = trim(address);  // White space am Anfang und Ende entfernen
      // Ggf. entferne "mailto:"
      // indexOf(searchValue[, fromIndex]) 
      var address1 = address.toLowerCase();
      var pos = address1.indexOf( "mailto:" );  // if not found, -1 is returned
      // alert (address.toLowerCase());
      // alert (" pos= "+pos);
      if ( pos == 0 )
         {
         // var sub = string.substr(start[, length]);
         address = address.substr( pos + 7 );
         }
      address = trim(address);  // White space am Anfang und Ende entfernen
      // Ggf. entferne name:
      // indexOf(searchValue[, fromIndex])
      // 
      pos = address.indexOf( "<" );
      if ( (pos >= 0) && ( address.substr( address.length-1, 1) == ">" ) )  // Der index startet mit 0, die Laenge mit 1
         {
         address = address.substr( pos + 1, address.length-pos-2 );
         }
      address = trim(address);  // White space am Anfang und Ende entfernen
      // alert ("getEmail2: "+address);
      return (address);
      }


   function Check_Email (email)
      // Ueberpruefung einer E-Mail-Adresse
      {
      /*  **** Das folgende Stueck wird nicht mehr benutzt,
          **** weil die in einer anderen Datei definierte Funktion checkEmail nicht mehr benutzt wird
          **** und auch das Programmteil von C. Kruse nicht mehr benutzt wird:
      // alert (typeof(checkEmail));
      if(typeof(checkEmail) == 'function')
        {
        // alert (email);
        return checkEmail( email, true );
        }
      else
        {
        // Das folgende uebernommen aus: http://aktuell.de.selfhtml.org/artikel/programmiertechnik/email/index.htm
        // Programmiertechnik: E-Mail-Kontrolle
        // Autor: Christian Kruse, ckruse@wwwtech.de (2005?)
        var proto  = "(mailto:)?";
        var usr    = "([a-zA-Z0-9][a-zA-Z0-9_.-]*|\"([^\\\\\x80-\xff\015\012\"]|\\\\[^\x80-\xff])+\")";
        var domain = "([a-zA-Z0-9][a-zA-Z0-9._-]*\\.)*[a-zA-Z0-9][a-zA-Z0-9._-]*\\.[a-zA-Z]{2,5}";
        var regex  = "^" + proto + "?" + usr + "\@" + domain + "$";
        var rgx    = new RegExp(regex);
        return rgx.exec(email) ? true : false;
        }
      ***************** */
      // email = getEmail(email);  // schon vorher gemacht
      // email = trim(email);  // White space am Anfang und Ende entfernen
      // alert('"'+email+'"');
      var $teilohneminus = "([a-zA-Z0-9$_]+)";
       //
       // Wegen Umlaut-Domains und (vermutlich) auch Umlaut-Mailadressen seit etwa 2005
       // muesste es eigentlich heissen (wobei aber auch nur die deutschen Umlaute beruecksichtigt waeren):

       // $teilohneminus = "([a-zA-Z0-9$_%]+[a-z0-9$_%]*)";

       // Aber das funktioniert nicht, weil die Zeichendarstellung in Systemen wie Windows, Linux und OS/2 unterschiedlich ist.
       // Selbst wenn hier die Sonderzeichen eingeschlossen werden, wuerde es nur funktionieren, wenn
       // sowohl auf dem Client-Rechner als auch auf dem Webserver das Betriebssystem die gleiche Zeichendarstellung haette
       // wie das System, auf dem diese Sonderzeichen eingegeben werden (z.Z. MS Windows).
       // Eine korrekte Loesung muesste wohl etwa aussehen wie:
       // $erlaubteSonderzeichen = erlaubt(); 
       //    wobei diese Funktion abhaengig vom sendenden Client und verarbeitendem Server die auf dem Client erlaubten Sonderzeichen
       //    in ihrer Darstellung auf dem Server ausgeben muesste,
       //    und zwar zusaetzlich unter Beruecksichtigung der Darstellung auf dem System, wo dieses Programm eingetippt worden ist.
       // $teilohneminus = "([a-z0-9$_".$erlaubteSonderzeichen."]+[a-z0-9$_".$erlaubteSonderzeichen."]*)";
       // preg_match(...);
       // und vor dem Absenden einer E-Mail noch
       // $address = translate($address);
       //    wobei diese Funktion die erlaubten Sonderzeichen in die Entsprechung auf dem Server umwandeln muesste,
       //    sonst wuerde die Mail-Adresse mit falschen Sonderzeichen abgeschickt werden.
       // 
      var $teilmitminus  = "(" + $teilohneminus + "+(-" + $teilohneminus + ")*)";
      var $teil = $teilmitminus + "([.]" + $teilmitminus + ")*";
      var $user = $teil;
      var $domain = $teil + "[.][a-z]{2,6}";
      // var $regex = "/^" + $user + "@" + $domain + "$/i";  // JavaScript hat offenbar nicht die Delimiter wie PHP und kennt wohl auch die Modifier nicht
      var $regex = "^" + $user + "\@" + $domain + "$";
      var rgx    = new RegExp($regex);
      return rgx.exec(email) ? true : false;
      }


   function Check_Spam (text)
      // Ueberpruefung eines Textes auf vermuteten Spam
      // return true wenn Spam vermutet, sonst false
      {
      var retcode = false;
      var text1 = text.toLowerCase();
      var pos = text1.indexOf( "http:" );  // if not found, -1 is returned
      if (pos >= 0)  // Der index startet mit 0, die Laenge mit 1
         {
         retcode = true;
         // text = text.substr( pos + 1, text.length-pos-6 );
         }
      return retcode;
      }


   function Zeichen_Ersetzen (text)
      // Ersetzen von Zeichen, die im HTML Schaden anrichten koennten
      // Hier nur noetig, um mit dem Formular-Mailer konform zu gehen
      {
      // & ersetzen durch &amp; - weil sonst Eingaben, die &uml; und aehnliches enthalten, nicht korrekt wiedergegeben werden,
      // und weil Zeichen direkt eingegeben werden und sonst bei Neuladen durch Formmailer es andere Laengen gibt
      // $vorname  = str_replace ( '&', "&amp;", $vorname );
      // text.replace( regexp, replacetext);
      // text = text.replace( "&", "&amp;");  // da wird nur das erste Vorkommen ersetzt
      text.replace( /&/g, "&amp;");    // So geht es
      text = text.replace( /r/g, "");
      // Ersetzen von ' (single quote) durch &lsquo; in Werten, die ins Formular uebertragen werden sollen
      // Nicht unbedingt noetig, wenn im Formmailer fuer HTML nur " benutzt werden:
      text.replace( "'", "&lsquo;");
      // Ersetzen von " (double quote) durch &quot; in Werten, die ins Formular uebertragen werden sollen,
      text = text.replace( /"/g, "&quot;");
      // Ebenso fuer < und > (&lt; und &gt;) , weil sie den Rest der Anzeige zerstoeren koennen:
      text = text.replace( /</g, "&lt;");
      text = text.replace( />/g, "&gt;");
      return true;
      }


   function Make_Indikator ()
      // Erstellen der Indikator-Variablen im Formular, die Programm-Variable indikator wurde vorher gesetzt
      {
      if (typeof(document.getElementsByName("Indikator")[0]) == "object")
         {
         // vorheriges_resultat = document.getElementsByName("Indikator")[0].value;
         document.getElementsByName("Indikator")[0].value = indikator;
         }
      return true;
      }


   function Make_Resultat ()
      // Erstellen der Resultat-Variablen, um zu pruefen, ob etwas Neues gesendet werden soll
      {
      // var vorheriges_resultat = "";  // Was wurde beim letzten Senden uebertragen ?
      // var resultat = vorname+name+email+betreff+nachricht;
      // Keine Aenderung bei Resultat-Zusammenstellung wegen minimaler Gesamtlaenge 14 und gleicher Laenge im Mailer
      // Die Pruefung ist im Mailer erforderlich, falls auf dem Client JavaScript de-aktiviert ist, aber darf nicht strenger sein als auf dem Client mit JavaScript
      // Aufspaltung in resultat und resultat1 oder Aenderung der Laengenabfrage waere moeglich

      // Minimale Information ueber Person und Anliegen, um das Formular und spaeter eine E-Mail zu verschicken:
      minresultatlen = 14;  // Min: gm x@gmx.de Info  oder  gm T.123456 Info
      // Die "14" muss uebereinstimmen mit der $minlen im Mailer !!

      // resultat = indikator+" "+kontaktnummer+" "+mitgliednummer+" "+bild1+" "+bild2+" "+vorname+" "+name+" "+email+" "+telefon+" "+betreff+" - "+nachricht;
      // resultat_addedlen = 14;  // Die in resultat eingefuegten Blanks und - und die Laenge von kontaktnummer und indikator
      resultat = kontaktnummer+" "+mitgliednummer+" "+bild1+" "+bild2+" "+vorname+" "+name+" "+email+" "+telefon+" "+betreff+" - "+nachricht;
      resultat_addedlen = 12;  // Die in resultat eingefuegten Blanks und "-" und die Laenge von kontaktnummer
      // resultat1 = vorname+" "+name+" "+email+" "+telefon+" "+betreff+" - "+nachricht;
      // resultat2 = kontaktnummer+" "+mitgliednummer+" "+bild1+" "+bild2;
      // resultat = resultat2+" "+resultat1;
      // Der indikator wird separat gespeichert
      var res = Zeichen_Ersetzen (resultat);
      if (typeof(document.getElementsByName("Resultat")[0]) == "object")
         {
         // vorheriges_resultat = document.getElementsByName("Resultat")[0].value;
         document.getElementsByName("Resultat")[0].value = resultat;
         // alert(document.getElementsByName("Resultat")[0].value);
         }
      else
         {  }

      Make_Indikator ();

      resultat_made = true;
      return true;
      }


   function Abgeschickt ()
      // Das Formular soll abgeschickt werden
      {
      // var neuertext = "   Die Nachricht wurde abgeschickt";
      var neuertext = "   Die Nachricht wurde abgeschickt - aber warten Sie auf die Rckmeldung des Servers!";
      // Der FONT muss ausserhalb des SPAN sein, sonst ist der Text nicht mehr "firstChild"
      if (typeof(document.getElementsByName("Senderesultatfont")[0]) == "object")
         {
         var Elementknoten = document.getElementsByName("Senderesultatfont")[0];
         Elementknoten.color = "green";;  // Die Farbaenderung funktioniert mit Firefox 3.05, mit Internet Explorer 7.0 nicht
         }
      if (typeof(document.getElementsByName("Senderesultat")[0]) == "object")
         {
         var Elementknoten = document.getElementsByName("Senderesultat")[0];
         // WertErsterKindknoten = Elementknoten.firstChild.nodeValue;
         Elementknoten.firstChild.nodeValue = neuertext;
         // alert(Elementknoten.firstChild.nodeValue);
         }
      else
         {  }

      if (!resultat_made) { Make_Resultat(); }
      // Das Resultat wurde schon vorher gesetzt, der Indikator evtl. noch nicht in der endgueltigen Form
      Make_Indikator ();
      return true;
      }


   function Nicht_Abgeschickt ()
      // Das Formular soll nicht abgeschickt werden
      {
         // var neuertext = "<font color='red'>   Die Nachricht wurde nicht abgeschickt</font>";  // Das geht nicht
         var neuertext = "   Die Nachricht wurde nicht abgeschickt";
         // Der FONT muss ausserhalb des SPAN sein, sonst ist der Text nicht mehr "firstChild"
         if (typeof(document.getElementsByName("Senderesultatfont")[0]) == "object")
            {
            var Elementknoten = document.getElementsByName("Senderesultatfont")[0];
            Elementknoten.color = "red";;  // Die Farbaenderung funktioniert mit Firefox 3.05, mit Internet Explorer 7.0 nicht
            }
         if (typeof(document.getElementsByName("Senderesultat")[0]) == "object")
            {
            var Elementknoten = document.getElementsByName("Senderesultat")[0];
            // WertErsterKindknoten = Elementknoten.firstChild.nodeValue;
            // Elementknoten.style="color:red;";  // Fehler
            Elementknoten.firstChild.nodeValue = neuertext;
            // alert(Elementknoten.firstChild.nodeValue);
            }

      if (!resultat_made) { Make_Resultat(); }
      // Das Resultat wurde schon vorher gesetzt, der Indikator evtl. noch nicht in der endgueltigen Form
      Make_Indikator ();
      return false;
      }


   function Nicht_Abgeschickt_Farbwechsel ()
      // Das Formular soll nicht abgeschickt werden und die Grundfarbe soll gewechselt werden
      {
         // var neuertext = "<font color='red'>   Die Nachricht wurde nicht abgeschickt</font>";  // Das geht nicht
         var neuertext = "   Die Nachricht wurde nicht abgeschickt";
         // Der FONT muss ausserhalb des SPAN sein, sonst ist der Text nicht mehr "firstChild"
         if (typeof(document.getElementsByName("Senderesultatfont")[0]) == "object")
            {
            var Elementknoten = document.getElementsByName("Senderesultatfont")[0];
            Elementknoten.color = "red";;  // Die Farbaenderung funktioniert mit Firefox 3.05, mit Internet Explorer 7.0 nicht
            }
         if (typeof(document.getElementsByName("Senderesultat")[0]) == "object")
            {
            var Elementknoten = document.getElementsByName("Senderesultat")[0];
            // WertErsterKindknoten = Elementknoten.firstChild.nodeValue;
            // Elementknoten.style="color:red;";  // Fehler
            Elementknoten.firstChild.nodeValue = neuertext;
            // alert(Elementknoten.firstChild.nodeValue);
            }
         if (typeof(document.getElementsByName("Body")[0]) == "object")
            {
            var Elementknoten = document.getElementsByName("Body")[0];
            // Elementknoten.className = "flin-mail-error";
            if (typeof(document.getElementsByName("Bodyclass-error")[0]) == "object")
               {
               var Farbknoten = document.getElementsByName("Bodyclass-error")[0];
               // var bgcolor = Farbknoten.style.backgroundColor;
               // Elementknoten.style.backgroundColor = bgcolor;
               var bgcolor = Farbknoten.className;
               Elementknoten.className = bgcolor;  // Die Farbaenderung funktioniert mit Firefox 3.05, mit Internet Explorer 7.0 nicht
               }
            }
         if (typeof(document.getElementsByName("Formular-Table")[0]) == "object")  // Aendere die Tabellenfarbe
            {
            var Elementknoten = document.getElementsByName("Formular-Table")[0];
            if (typeof(document.getElementsByName("Bodyclass-error")[0]) == "object")
               {
               var Farbknoten = document.getElementsByName("Bodyclass-error")[0];
               var bgcolor = Farbknoten.className;
               Elementknoten.className = bgcolor;
               }
            }

      if (!resultat_made) { Make_Resultat(); }
      // Das Resultat wurde schon vorher gesetzt, der Indikator evtl. noch nicht in der endgueltigen Form
      Make_Indikator ();
      return false;
      }


/* ********************************************************************************************** */


   function Formular_Referrer ()
      // Versuch, auf die aufrufende Seite zuzugreifen
      {
      // document.referrer ist die aufrufende Seite
      alert("document.referrer: "+document.referrer);  // in beiden Faellen: = nichts, erst bei 2. Korrektur ff: http:..formmailer
      // alert(typeof(document.referrer.getElementsByName("Senderesultat")[0]));  // error: document.referrer.getElementsByName is not a function (wenn document.referrer = nichts)
      // alert(document.referrer.getElementById("Senderesultat"));  // error

      return false;
      }


/* ********************************************************************************************** */


   function Formular_Pruefung ()
      // Ueberpruefung der Formular-Eingaben, falls JavaScript aktiviert ist.
      {
      // var res = Formular_Referrer ();  // zu Testzwecken
      // Check inputs to form
      // If ok, return "true", else "false"
      // Moegliche Ausdruecke, wenn das Formular den Namen "Formular1" hat und einen 
      // input mit Namen "email" und Id "emailid" hat, um den eingegebenen wert zu erhalten:
      // alert(document.Formular1.email.value );
      // alert(document.getElementsByName("email")[0].value);
      // alert(document.getElementById("email1").value);
      // var mail = document.getElementsByName("email")[0].value;
      // alert(mail);
      // Pruefung, ob ein Element existiert:
      // if (typeof(document.getElementsByName("undef")[0]) == "object")
      //    {
      //    var unknown = document.getElementsByName("undef")[0].value;
      //    }
      // else
      //    {
      //    var unknown = "";
      //    }
      // alert('unknown = "' + unknown + '"');

      resultat_made  = false;  // Das Resultat wurde noch nicht ins Formular geschrieben
      indikator_made = false;  // Der Indikator wurde noch nicht ins Formular geschrieben
      abzusenden = true; // Indikator zum Absenden, wird auf false gesetzt, wenn benoetigte Information fehlt oder falsch ist
      contains_spam = false;  // Indikator fuer vermuteten Spam

      // alert(document.getElementById("Senderesultat"));
      /*
      // var neuertext = "   Die Nachricht wurde abgeschickt";
      if (typeof(document.getElementsByName("Senderesultat")[0]) == "object")  // Nimm die gruene Message "Abgesandt" weg
         {
         var Elementknoten = document.getElementsByName("Senderesultat")[0];
         // WertErsterKindknoten = Elementknoten.firstChild.nodeValue;
         // Elementknoten.firstChild.nodeValue = neuertext;
         // alert(Elementknoten.firstChild.nodeValue);
         // Elementknoten.firstChild.nodeValue = "&nbsp;";  // mit &nbsp; geht es nicht
         Elementknoten.firstChild.nodeValue = "";
         }
      else
         {  }
      */
      // var neuertext = "   Die Nachricht wurde nicht abgeschickt";
      // Der FONT muss ausserhalb des SPAN sein, sonst ist der Text nicht mehr "firstChild"
      if (typeof(document.getElementsByName("Senderesultatfont")[0]) == "object")  // Nimm die gruene Message "Abgesandt" weg
         {                                                                         // oder die rote "nicht abgesandt"
         var Elementknoten = document.getElementsByName("Senderesultatfont")[0];
         Elementknoten.color = "green";
         }
      if (typeof(document.getElementsByName("Senderesultat")[0]) == "object")
         {
         var Elementknoten = document.getElementsByName("Senderesultat")[0];
         // WertErsterKindknoten = Elementknoten.firstChild.nodeValue;
         // Elementknoten.style="color:red;";  // Fehler
         Elementknoten.firstChild.nodeValue = "";
         // alert(Elementknoten.firstChild.nodeValue);
         }
      // var neuertext = "  Die Nachricht wurde als Spam eingestuft";
      if (typeof(document.getElementsByName("Nachrichtresultat")[0]) == "object")  // Nimm die rote Message "Spam" weg
         {
         var Elementknoten = document.getElementsByName("Nachrichtresultat")[0];
         Elementknoten.firstChild.nodeValue = "";
         }
      if (typeof(document.getElementsByName("Body")[0]) == "object")  // Setze die Grundfarbe zurck
         {
         var Elementknoten = document.getElementsByName("Body")[0];
         // Elementknoten.class = "flin-mail";  // class is undefined
         // Elementknoten.className = "flin-mail";  // ok
         // Elementknoten.bgcolor = "red";  // undefined
         // var value = Elementknoten.bgColor;  // ok
         // Elementknoten.bgColor = "red";
         // var value = Elementknoten.style.backgroundColor;
         // Elementknoten.style.backgroundColor = "green";  // ok - Rahmen um Tabellenspalten, wenn Spalten selbst Farbe haben, sonst Gesamter Background
         if (typeof(document.getElementsByName("Bodyclass-ok")[0]) == "object")
            {
            var Farbknoten = document.getElementsByName("Bodyclass-ok")[0];
            // var bgcolor = Farbknoten.style.backgroundColor;
            // Elementknoten.style.backgroundColor = bgcolor;
            var bgcolor = Farbknoten.className;
            Elementknoten.className = bgcolor;
            }
         }
      if (typeof(document.getElementsByName("Formular-Table")[0]) == "object")  // Setze die Tabellenfarbe zurck
         {
         var Elementknoten = document.getElementsByName("Formular-Table")[0];
         if (typeof(document.getElementsByName("Bodyclass-ok")[0]) == "object")
            {
            var Farbknoten = document.getElementsByName("Bodyclass-ok")[0];
            var bgcolor = Farbknoten.className;
            Elementknoten.className = bgcolor;
            }
         }

/*
function setCSS () {
  for (var i = 0; i < document.getElementsByTagName("p").length; i++) {
    document.getElementsByTagName("p")[i].style.border = "solid red 10px";
    document.getElementsByTagName("p")[i].style.backgroundColor = "#FF9933";
    document.getElementsByTagName("p")[i].style.color = "#FFFFFF";
    document.getElementsByTagName("p")[i].style.fontSize = "250%";
  }
}

<html><head><title>Test</title>
<script type="text/javascript">
function WerteSetzen () {
  document.getElementsByTagName("body")[0].text = document.Formular.Text.value;
  document.getElementsByTagName("body")[0].link = document.Formular.Link.value;
  document.getElementsByTagName("body")[0].vLink = document.Formular.VLink.value;
  document.getElementsByTagName("body")[0].bgColor = document.Formular.BgColor.value;
}
</script>
</head><body>
<h1>Ein dynamisches Dokument</h1>
<a href="news.htm"><b>Ein Link zu den News</b></a>
<form name="Formular" action="">
<pre>
Textfarbe:           <input type="text" size="7" name="Text">
Linkfarbe:           <input type="text" size="7" name="Link">
Linkfarbe (besucht): <input type="text" size="7" name="VLink">
Hintergrundfarbe:    <input type="text" size="7" name="BgColor">
Einstellungen:       <input type="button" value="Testen!" onclick="WerteSetzen()">
</pre>
</form>
</body></html>
*/

      if (typeof(document.getElementsByName("PHP-Messages")[0]) == "object")  // Loesche die PHP-Messages der Antwort
         {
         // alert(typeof(document.getElementsByName("PHP-Messages")[0]));
         var Elementknoten = document.getElementsByName("PHP-Messages")[0];
         // Elementknoten.firstChild.nodeValue = "";                           // Loeschen geht auf diese Art nicht
         // Elementknoten = "";                                                // So auch nicht
         Elementknoten.style.fontSize = "1px";         // Wenn style="font-size:.." im span gesetzt ist, geht es mit Firefox 3.05, sonst Fehler: undefined
                                                       // Mit Internet Explorer 7.0 geht es nicht
/*
var Anzahl = document.getElementById("derText").childNodes.length;
var Erster = document.getElementById("derText").childNodes[0].nodeValue;

  for (var i = 0; i < document.getElementsByTagName("p").length; i++)
    { document.getElementsByTagName("p")[i].align = wie; }

  var Knoten = document.getElementsByTagName("ol")[0].firstChild;
  verschwunden = document.getElementsByTagName("ol")[0].removeChild(Knoten);
*/
         // Elementknoten.childNodes[*] = null;  // Fehlermeldung "reference to undefined XML name
         // Elementknoten.childNodes = null;  // Fehlermeldung: setting a property that has only a getter

         // delete Elementknoten;  // geht nicht

         var i = Elementknoten.childNodes.length;
         // alert(Elementknoten+" "+i);
         while ( i >= 1 )                              // In Firefox 3.05 funktioniert es, im Internet Explorer 7.0 nicht
            {
            i = i - 1;
            // var Knoten = Elementknoten.firstChild;
            var Knoten = Elementknoten.childNodes[i];
            var verschwunden = Elementknoten.removeChild(Knoten);
            // alert(verschwunden.firstChild.nodeValue);             // Fehler: verschwunden ist null
            i = Elementknoten.childNodes.length;
            }
         }

      /*
      if (typeof(document.getElementsByName("PHP-Message1")[0]) == "object")  // Loesche eine der PHP-Messages der Antwort
         {
         var Elementknoten = document.getElementsByName("PHP-Message1")[0];
         Elementknoten.firstChild.nodeValue = "";                             // Es wird nur das erste Stueck bis <br> geloescht
         }
      if (typeof(document.getElementsByName("PHP-Message2")[0]) == "object")  // Loesche eine der PHP-Messages der Antwort
         {
         var Elementknoten = document.getElementsByName("PHP-Message2")[0];
         Elementknoten.firstChild.nodeValue = "";
         }
      if (typeof(document.getElementsByName("PHP-Message3")[0]) == "object")  // Loesche eine der PHP-Messages der Antwort
         {
         var Elementknoten = document.getElementsByName("PHP-Message3")[0];
         Elementknoten.firstChild.nodeValue = "";
         }
      if (typeof(document.getElementsByName("PHP-Message4")[0]) == "object")  // Loesche eine der PHP-Messages der Antwort
         {
         var Elementknoten = document.getElementsByName("PHP-Message4")[0];
         Elementknoten.firstChild.nodeValue = "";
         }
      if (typeof(document.getElementsByName("PHP-Message5")[0]) == "object")  // Loesche eine der PHP-Messages der Antwort
         {
         var Elementknoten = document.getElementsByName("PHP-Message5")[0];
         Elementknoten.firstChild.nodeValue = "";
         }
      if (typeof(document.getElementsByName("PHP-Message6")[0]) == "object")  // Loesche eine der PHP-Messages der Antwort
         {
         var Elementknoten = document.getElementsByName("PHP-Message6")[0];
         Elementknoten.firstChild.nodeValue = "";
         }
      if (typeof(document.getElementsByName("PHP-Message7")[0]) == "object")  // Loesche eine der PHP-Messages der Antwort
         {
         var Elementknoten = document.getElementsByName("PHP-Message7")[0];
         Elementknoten.firstChild.nodeValue = "";
         }
      */  


      vorheriges_resultat = "";  // Was wurde beim letzten Senden uebertragen ? - Initialisierung
      if (typeof(document.getElementsByName("Resultat")[0]) == "object")
         {
         vorheriges_resultat = document.getElementsByName("Resultat")[0].value;
         }
      resultat = "";
      // indikatorpos = 0; // Position des Indikators im Resultat
      // Nein, wird jetzt separat gespeichert


      // Indikator-String zum Speichern von Angaben des Benutzers:
      // indikator = "0";   // Indikator fuer Absende-Bedingungen,
                         // wird auf "1" gesetzt, wenn trotz falscher email abgesandt werden soll, um nicht nochmal zu fragen
                         // wird auf "2" gesetzt, wenn trotz falscher Telefonnummer ...
                         // Wird auf "3" gesetzt bei unvollstaendiger Wahl
      vorheriger_indikator = "";  // Was wurde vorher abgespeichert ? - Initialisierung
      if (typeof(document.getElementsByName("Indikator")[0]) == "object")
         {
         vorheriger_indikator = document.getElementsByName("Indikator")[0].value;
         }
      if (vorheriger_indikator != "")
         {
         indikator = vorheriger_indikator;
         }
      else
         {
         indikator = "000";  // 0 = (noch) keine Angabe, 1 = trotzdem senden
         }
      ind_email_pos = 0; // Position fuer email im Indikator
      ind_telefon_pos = 1; // Position fuer telefon im Indikator
      ind_wahl_pos = 2; // Position fuer wahl im Indikator



      // ueberpruefe die Information:

      if (typeof(document.getElementsByName("Formulartyp")[0]) == "object")
         {
         var formulartyp = document.getElementsByName("Formulartyp")[0].value;
         // document.getElementsByName("Formulartyp")[0].className = "text";
         }
      else
         { var formulartyp = ""; }

      if (typeof(document.getElementsByName("Vorname")[0]) == "object")
         {
         vorname = document.getElementsByName("Vorname")[0].value;
         document.getElementsByName("Vorname")[0].className = "text";
         if (typeof(document.getElementsByName("VornamePict")[0]) == "object")
            { document.getElementsByName("VornamePict")[0].height = 0; }
         if (vorname.length < 1)
            {
            document.getElementsByName("Vorname")[0].className = "errorfield";
            if (typeof(document.getElementsByName("VornamePict")[0]) == "object")
               { document.getElementsByName("VornamePict")[0].height = 15; }
            }
         }
      else
         { vorname = ""; }

      name_da = false;  // zur Ueberpruefung, ob ein brauchbarer Name angegeben wurde
      if (typeof(document.getElementsByName("Name")[0]) == "object")
         {
         name = document.getElementsByName("Name")[0].value;
         document.getElementsByName("Name")[0].className = "text";
         // if (typeof(document.getElementById("NamePict")) == "object")     // Fehler: "document.getElementById("...") ist Null oder kein Objekt"
         if (typeof(document.getElementsByName("NamePict")[0]) == "object")  // So geht es
            { document.getElementsByName("NamePict")[0].height = 0; }
         if ( (vorname.length + name.length) > 6)
            {
            name_da = true;
            }
         if (  (name.length < 1)
            || ( (formulartyp == "Abstimmung") &&  !name_da ) )  // Fuer die Abstimmung sollte brauchbarer Name oder E-Mail da sein
            {
            document.getElementsByName("Name")[0].className = "errorfield";
            if (typeof(document.getElementsByName("NamePict")[0]) == "object")
               { document.getElementsByName("NamePict")[0].height = 15; }
            }
         }
      else
         { name = ""; }

      name_da = false;  // Ueberpruefung, ob ein brauchbarer Name angegeben wurde
      if ( (vorname.length + name.length) > 6)
         {
         name_da = true;
         }

      var kontaktemail   = "1";
      var kontakttelefon = "2";
      if (typeof(document.getElementsByName("Kontakt")[0]) == "object")
         {
         var kontakt0 = document.getElementsByName("Kontakt")[0].value;
         if (document.getElementsByName("Kontakt")[0].checked == true)
            {kontakt = kontakt0; }
         var kontakt1 = document.getElementsByName("Kontakt")[1].value;
         if (document.getElementsByName("Kontakt")[1].checked == true)
            {kontakt = kontakt1; }
         document.getElementsByName("Kontakt")[0].className = "text";
         // if (typeof(document.getElementsByName("KontaktPict")[0]) == "object")
         //    { document.getElementsByName("KontaktPict")[0].height = 0; }
         // if (kontakt.length < 4)
         //    {
         //    document.getElementsByName("Kontakt")[0].className = "errorfield";
         //    if (typeof(document.getElementsByName("KontaktPict")[0]) == "object")
         //       { document.getElementsByName("KontaktPict")[0].height = 15; }
         //    }
         if (kontakt == "E-Mail")  { kontaktnummer = kontaktemail;}
         if (kontakt == "Telefon") { kontaktnummer = kontakttelefon;}
         // alert(kontakt+" "+kontaktnummer);  // Das gibt immer "E-Mail 1", wenn keine Abfrage nach "checked" gemacht wird
         }
      else
         { kontakt = ""; kontaktnummer = "0"; }

      var emailkontakt = true;
      if (typeof(document.getElementsByName("Email")[0]) == "object")
         {
         email = document.getElementsByName("Email")[0].value;
         document.getElementsByName("Email")[0].className = "text";
         if (typeof(document.getElementsByName("EmailPict")[0]) == "object")
            { document.getElementsByName("EmailPict")[0].height = 0; }
         if (email.length < 8)
            {
            emailkontakt = false;
            document.getElementsByName("Email")[0].className = "errorfield";
            if (typeof(document.getElementsByName("EmailPict")[0]) == "object")
               { document.getElementsByName("EmailPict")[0].height = 15; }
            }
         }
      else
         { email = ""; emailkontakt = false; }

      var telefonkontakt = true;
      if (typeof(document.getElementsByName("Telefon")[0]) == "object")
         {
         telefon = document.getElementsByName("Telefon")[0].value;
         document.getElementsByName("Telefon")[0].className = "text";
         if (typeof(document.getElementsByName("TelefonPict")[0]) == "object")
            { document.getElementsByName("TelefonPict")[0].height = 0; }
         if ( ( (telefon.length > 0) && (telefon.length < 4) ) ||
            ( (telefon.length == 0) && (kontaktnummer == kontakttelefon) ) )
            {
            telefonkontakt = false;
            document.getElementsByName("Telefon")[0].className = "errorfield";
            if (typeof(document.getElementsByName("TelefonPict")[0]) == "object")
               { document.getElementsByName("TelefonPict")[0].height = 15; }
            }
         }
      else
         { telefon = ""; telefonkontakt = false; }

      mitglied = "";
      mitgliednummer = "0";
      mitgliedja   = "1";
      mitgliednein = "2";
      mitgliedausgefuellt = true;
      if (typeof(document.getElementsByName("Mitglied")[0]) == "object")
         {
         var mitglied0 = document.getElementsByName("Mitglied")[0].value;
         if (document.getElementsByName("Mitglied")[0].checked == true)
            {
            mitglied = mitglied0;  // "Ja"
            mitgliednummer = mitgliedja;
            }
         var mitglied1 = document.getElementsByName("Mitglied")[1].value;
         if (document.getElementsByName("Mitglied")[1].checked == true)
            {
            mitglied = mitglied1;  // "Nein"
            mitgliednummer = mitgliednein;
            }
         // alert (mitglied);
         // if (mitglied == "Ja")   { mitgliednummer = mitgliedja;}
         // if (mitglied == "Nein") { mitgliednummer = mitgliednein;}
         // alert (mitgliednummer);
         if ( mitgliednummer == "0" )
            {
            mitgliedausgefuellt = false;
            abzusenden = false;
            document.getElementsByName("Mitglied")[0].className = "errorfield";
            if (typeof(document.getElementsByName("Mitglied")[1]) == "object")
               {document.getElementsByName("Mitglied")[1].className = "errorfield";}
            if (typeof(document.getElementsByName("MitgliedPict")[0]) == "object")
               { document.getElementsByName("MitgliedPict")[0].height = 15; }
            alert("Bitte geben Sie an, ob Sie Mitglied sind");
            }
         }

      if (typeof(document.getElementsByName("Betreff")[0]) == "object")
         {
         betreff = document.getElementsByName("Betreff")[0].value;
         document.getElementsByName("Betreff")[0].className = "text";
         if (typeof(document.getElementsByName("BetreffPict")[0]) == "object")
            { document.getElementsByName("BetreffPict")[0].height = 0; }
         if (betreff.length < 3)
            {
            document.getElementsByName("Betreff")[0].className = "errorfield";
            if (typeof(document.getElementsByName("BetreffPict")[0]) == "object")
               { document.getElementsByName("BetreffPict")[0].height = 15; }
            }
         }
      else
         { betreff = ""; }

      bildwahl = 0; bild1 = 0; bild2 = 0; bildwahl_allowed = 0;
      if (typeof(document.getElementsByName("Bild1")[0]) == "object")
         {
         bild1 = document.getElementsByName("Bild1")[0].value;
         document.getElementsByName("Bild1")[0].className = "text";
         wahl = "Ja";
         bildwahl_allowed = bildwahl_allowed + 1;
         if (typeof(document.getElementsByName("WahlPict")[0]) == "object")
            { document.getElementsByName("WahlPict")[0].height = 0; }
         if (bild1 == "")
            { document.getElementsByName("Bild1")[0].className = "errorfield"; }
         // alert ("bild1 "+bild1+" typeof bild1 "+typeof bild1+" typeof (bild1+1) "+typeof (bild1+1));
         // if ( (bild1 != "") && ("number" == typeof bild1) ) // typeof ist immer string
         if (bild1 != "") 
            { bildwahl = bildwahl + 1; }
         else
            {
            document.getElementsByName("Bild1")[0].className = "errorfield";
            if (typeof(document.getElementsByName("WahlPict")[0]) == "object")
               { document.getElementsByName("WahlPict")[0].height = 15; }
            }
         }
      else
         { wahl = ""; }

      if (typeof(document.getElementsByName("Bild2")[0]) == "object")
         {
         bild2 = document.getElementsByName("Bild2")[0].value;
         document.getElementsByName("Bild2")[0].className = "text";
         bildwahl_allowed = bildwahl_allowed + 1;
         // if (typeof(document.getElementsByName("WahlPict")[0]) == "object")
         //    { document.getElementsByName("WahlPict")[0].height = 0; }
         if (bild2 == "")
            { document.getElementsByName("Bild2")[0].className = "errorfield"; }
         // if ( (bild2 != "") && ("number" == typeof bild2) )
         if (bild2 != "")
            { bildwahl = bildwahl + 1; }
         else
            {
            document.getElementsByName("Bild2")[0].className = "errorfield";
            if (typeof(document.getElementsByName("WahlPict")[0]) == "object")
               { document.getElementsByName("WahlPict")[0].height = 15; }
            }
         }

      // alert("Bildwahl "+bildwahl);
      if ( (wahl == "Ja") && (bildwahl < bildwahl_allowed) )
            {
            if (typeof(document.getElementsByName("WahlPict")[0]) == "object")
               { document.getElementsByName("WahlPict")[0].height = 15; }
            // var sub = string.substr(start[, length]);
            // if ( vorheriges_resultat.substr(indikatorpos,1) != "3" )
            if (bildwahl_allowed <= 1)
               {
               alert ('Sie haben noch kein Bild ausgewaehlt');
               abzusenden = false;
               }
            else
               {
               if ( indikator.substr(ind_wahl_pos,1) != "1" )  // Falls nicht schon vorher bestaetigt
                  {
                  if (bildwahl == 0) {zahl = "noch keines";} else {zahl = "erst "+bildwahl;}
                  bestaetigung = window.confirm('Sie koennen '+bildwahl_allowed+' Bilder auswaehlen und haben '+zahl+' gewaehlt. Moechten Sie dieses Formular trotzdem absenden?');
                  /*
                  if (!bestaetigung)
                     {
                     // indikator = "3";  // nicht abgeschickt wegen unvollstaendiger Bildauswahl
                     // indikator.substr(ind_wahl_pos,1) = "1";  // nicht abgeschickt wegen unvollstaendiger Bildauswahl
                     if (typeof(document.getElementsByName("Resultat")[0]) == "object")
                        {
                        vorheriges_resultat = document.getElementsByName("Resultat")[0].value;
                        document.getElementsByName("Resultat")[0].value = resultat;
                        }
                     var res = Nicht_Abgeschickt();
                     return false;
                     }
                  */
                  if ( bestaetigung && (bildwahl != 0) )
                     {
                     // indikator.substr(ind_wahl_pos,1) = "1";  // unvollstaendige Bildauswahl akzeptiert
                     indikator = indikator.substr(ind_email_pos,1) + indikator.substr(ind_telefon_pos,1) + /*indikator.substr(ind_wahl_pos,1)*/ "1";
                     }
                  else
                     {
                     // var res = Nicht_Abgeschickt();
                     // return false;
                     abzusenden = false;
                     }
                  }
               }
            }
      if ( (wahl == "Ja") && (bildwahl == 0) )
            {
            abzusenden = false;
            }

      if (typeof(document.getElementsByName("Nachricht")[0]) == "object")
         {
         nachricht = document.getElementsByName("Nachricht")[0].value;
         document.getElementsByName("Nachricht")[0].className = "text";
         if (typeof(document.getElementsByName("NachrichtPict")[0]) == "object")
            { document.getElementsByName("NachrichtPict")[0].height = 0; }
         if ( (nachricht.length < 8) && (formulartyp != "Abstimmung") )
            {
            document.getElementsByName("Nachricht")[0].className = "errorfield";
            if (typeof(document.getElementsByName("NachrichtPict")[0]) == "object")
               { document.getElementsByName("NachrichtPict")[0].height = 15; }
            }
         contains_spam = ( contains_spam || Check_Spam(nachricht) );
         if (contains_spam)
            {
            document.getElementsByName("Nachricht")[0].className = "errorfield";
            if (typeof(document.getElementsByName("NachrichtPict")[0]) == "object")
               { document.getElementsByName("NachrichtPict")[0].height = 15; }
            var neuertext = "  Die Nachricht wurde als Spam eingestuft";
            // Der FONT muss ausserhalb des SPAN sein, sonst ist der Text nicht mehr "firstChild"
            if (typeof(document.getElementsByName("Nachrichtfont")[0]) == "object")
               {
               var Elementknoten = document.getElementsByName("Nachrichtfont")[0];
               Elementknoten.color = "red";
               }
            if (typeof(document.getElementsByName("Nachrichtresultat")[0]) == "object")
               {
               var Elementknoten = document.getElementsByName("Nachrichtresultat")[0];
               // WertErsterKindknoten = Elementknoten.firstChild.nodeValue;
               Elementknoten.firstChild.nodeValue = neuertext;
               // alert(Elementknoten.firstChild.nodeValue);
               }
            }
         }
      else
         { nachricht = ""; }


      // pruefe, ob die Information ueberhaupt geaendert wurde:
      /*
      if (typeof(document.getElementsByName("Vorname")[0]) == "object")
         { vorname = document.getElementsByName("Vorname")[0].value; }
      else
         { vorname = ""; }
      if (typeof(document.getElementsByName("Name")[0]) == "object")
         { name = document.getElementsByName("Name")[0].value; }
      else
         { name = ""; }
      if (typeof(document.getElementsByName("Email")[0]) == "object")
         { email = document.getElementsByName("Email")[0].value; }
      else
         { email = ""; }
      if (typeof(document.getElementsByName("Betreff")[0]) == "object")
         { betreff = document.getElementsByName("Betreff")[0].value; }
      else
         { betreff = ""; }
      if (typeof(document.getElementsByName("Nachricht")[0]) == "object")
         { nachricht = document.getElementsByName("Nachricht")[0].value; }
      else
         { nachricht = ""; }
      */

      var res = Make_Resultat ();


      // alert(resultat);
      if (resultat == "")
         {
         alert("Nicht abgeschickt, weil keine Information eingegeben wurde");
         var res = Nicht_Abgeschickt();
         return false;
         }
      infolen = vorname.length + name.length + email.length + telefon.length + betreff.length + nachricht.length;
      // if ( (resultat.length < (minresultatlen + resultat_addedlen))
      if ( (infolen < minresultatlen)
         && (mitgliedausgefuellt) )
         {
         alert("Nicht abgeschickt, weil keine ausreichende Information eingegeben wurde");
         var res = Nicht_Abgeschickt();
         return false;
         }
      if (resultat == vorheriges_resultat)
         {
         alert("Nicht abgeschickt, weil die gleiche Information schon gesendet wurde. \nFalls das vorherige Senden fehlgeschlagen war, ndern Sie etwas am Text und senden das Formular noch einmal.");
         var res = Nicht_Abgeschickt();
         return false;
         }

      bestaetigung = true;
      if (typeof(document.getElementsByName("Email")[0]) == "object")
         {
         document.getElementsByName("Email")[0].className = "text";  // Ist eigentlich ueberfluessig, da schon gesetzt oder umgesetzt
         }
      email_stripped = getEmail(email);  // strip other allowed info from real email address
      if (typeof(document.getElementsByName("EmailPict")[0]) == "object")
         { document.getElementsByName("EmailPict")[0].height = 0; }
      if ( ! Check_Email (email_stripped) )
         {
         emailkontakt = false;
         if (typeof(document.getElementsByName("Email")[0]) == "object")
            {
            // alert(document.getElementsByName("Email")[0]);
            // alert(document.getElementsByName("Email")[0].className);
            document.getElementsByName("Email")[0].className = "errorfield";
            document.getElementsByName("Email")[0].focus();
            }
         if (typeof(document.getElementsByName("EmailPict")[0]) == "object")
            {
            var Elementknoten = document.getElementsByName("EmailPict")[0];
            document.getElementsByName("EmailPict")[0].height = 15;
            }
         if ( ( !( (email.length == 0) && (telefonkontakt == true) && (kontaktnummer == kontakttelefon) ) )
              && (indikator.substr(ind_email_pos,1) != "1") )
            {
            bestaetigung = window.confirm('Die E-Mail-Adresse "'+email_stripped+'" scheint nicht korrekt zu sein. Mchten Sie dieses Formular trotzdem absenden?');
            // return x;
            // alert("Die E-Mail-Adresse scheint nicht korrekt zu sein.");
            // return false;
            /*
            if (!bestaetigung)
               {
               indikator = "1";  // nicht abgeschickt wegen falscher email
               resultat = indikator+" "+kontaktnummer+" "+vorname+" "+name+" "+email+" "+telefon+" "+betreff+" - "+nachricht;
               if (typeof(document.getElementsByName("Resultat")[0]) == "object")
                  {
                  vorheriges_resultat = document.getElementsByName("Resultat")[0].value;
                  document.getElementsByName("Resultat")[0].value = resultat;
                  }
               var res = Nicht_Abgeschickt();
               return false;
               }
            */
            if (bestaetigung)
               {
               // indikator.substr(ind_email_pos,1) = "1";  // falsche E-Mail-Adresse akzeptiert // invalid left hand side
               indikator = /*indikator.substr(ind_email_pos,1)*/ "1" + indikator.substr(ind_telefon_pos,1) + indikator.substr(ind_wahl_pos,1);
               }
            if (!bestaetigung)
               {
               var res = Nicht_Abgeschickt();
               return false;
               }
            }
         }


      bestaetigung = true;
      if ( ( (kontaktnummer == kontakttelefon) && (telefonkontakt == false) )
           && (indikator.substr(ind_telefon_pos,1) != "1") )
      bestaetigung = window.confirm('Die Telefonnummer "'+telefon+'" scheint nicht korrekt zu sein. Mchten Sie dieses Formular trotzdem absenden?');
      /*
      if (!bestaetigung)
         {
         indikator = "2";  // nicht abgeschickt wegen falschem Telefon
         resultat = indikator+" "+kontaktnummer+" "+vorname+" "+name+" "+email+" "+telefon+" "+betreff+" - "+nachricht;
         if (typeof(document.getElementsByName("Resultat")[0]) == "object")
            {
            vorheriges_resultat = document.getElementsByName("Resultat")[0].value;
            document.getElementsByName("Resultat")[0].value = resultat;
            }
         var res = Nicht_Abgeschickt();
         return false;
         }
      */
            if (bestaetigung)
               {
               // indikator.substr(ind_telefon_pos,1) = "1";  // falsche Telefon-Nummer akzeptiert
               indikator = indikator.substr(ind_email_pos,1) + /*indikator.substr(ind_telefon_pos,1)*/ "1" + indikator.substr(ind_wahl_pos,1);
               }
            if (!bestaetigung)
               {
               var res = Nicht_Abgeschickt();
               return false;
               }

      if (contains_spam)
         {
         alert('Die Nachricht wurde als Spam eingestuft, weil sie "http:" enthaelt.');
         var res = Nicht_Abgeschickt_Farbwechsel();
         return false;
         }

      // Ueberpruefung, ob fuer "Abstimmung" alle noetigen Daten da sind:
      // if ( (formulartyp == "Abstimmung") &&  !( (name_da || emailkontakt) && mitgliedausgefuellt && (bildwahl > 0) ) )
      if ( (formulartyp == "Abstimmung") &&  !( (name_da || emailkontakt) && (bildwahl > 0) ) )
         // Ist "Mitglied" nicht ausgefuellt, wird "Nichtmitglied" angenommen, falls es nicht bekannt ist.
         {
         abzusenden = false;
         alert("Fr die Abstimmung wird Name oder E-Mail gebraucht, und es mu ein Bild gewhlt sein");
         }

      if (abzusenden == false)
         {
         var res = Nicht_Abgeschickt();
         return false;
         }

      var res = Abgeschickt();

      // return false;  // zum Testen der Funktion
      return true;
      // Bei Rueckgabe von "true" wird das Formular abgeschickt, bei Rueckgabe von "false" nicht.
      }


/* *************************    Datei-Ende   ************************************************* */

