/*
================================================================
JavaScript-Utility: Basisroutinen für die Formularüberprüfung
================================================================

Version:	1.0 / 04.08.2002 / W. Schafroth
		übernommen aus Internet-World, Heft 01/2000 
		und für eigene Bedürfnisse erweitert.
Version:	1.1 / 25.11.2003 / W. Schafroth
                mit Funktion vergleichePasswort erweitert.


Beschreibung:
Das Script dient zur Plausibilitätsüberprüfung von Formularen. 
Folgende Überprüfungen sind möglich:
    - Leeres Feld
    - Zeichenkettenlänge
    - Zahlenfeld
    - Zahlenfeld mit untere und obere Bergenzung
    - Postleitzahl 4- und 5-stellig über Land-Angabe
    - E-Mail-Adresse
    - Anzahl mit untere und obere Bergenzung

Der Returnwert nimmt den Wert "false" oder "true" an.

Aufruf:
// Externe Prozedur einlesen
<SCRIPT LANGUAGE="JavaScript" SRC="../utilities/formcheck.js" type="text/javascript"></SCRIPT>
<SCRIPT LANGUAGE="JavaScript">
function ueberpruefeForm(form) {
	return 	(pruefeString(form.txtName, "Nachname") &&
		 pruefeString(form.txtVorname, "Vorname") &&	
		 pruefeString(form.txtStrasse, "Strasse") &&
		 pruefeString(form.txtStrNr, "Hausnummer") &&
		 pruefeString(form.txtOrt, "Ort") &&
		 pruefePLZ(form.txtPLZ,form.txtLand) &&
		 pruefeEMAIL(form.txtEmail) &&
		 vergleichePasswort(form.txtPwd1,form.txtPwd2))
}
</SCRIPT>
</HEAD>
<BODY>
<FORM name="form1">
  <p>Name: <input type="text" name="txtName" size="20"></p>
  <p>Vorname: <input type="text" name="txtVorname" size="20"></p>
  <p>Strasse: <input type="text" name="txtStrasse" size="30"> Hausnummer: <input type="text" name="txtStrNr" size="5"></p>
  <p>Postleitzahl: <input type="text" name="txtPLZ" size="5"></p>
  <p>Ort: <input type="text" name="txtOrt" size="20"></p>
  <p>E-Mail: <input type="text" name="txtEmail" size="50"></p>
  <p><input type="submit" value="Abschicken" name="btnOK" onClick="return ueberpruefeForm(this.form)">
  <input type="reset" value="Zurücksetzen" name="btnReset"  onClick="return confirmReset(this.form)"></p>
</FORM>
*/

//Globale Variable
var Leerstringmessage = "' ist leer. Bitte geben Sie hier einen Wert ein.";

// Prüft, ob Eingabefeld leer ist
function KontrolleNull(eingabe) {
	if ( eingabe.length == 0 ) {
   	return false
	}
	else {
 	return NurSpace(eingabe)
	}
}
// Prüft, ob sich in der Zeichenkette (String) nur aus Leerzeichen besteht
function NurSpace(eingabe) {
	for ( var i=0; i<eingabe.length; i++ ) {
   	if ( eingabe.charAt(i) != " " ) {
	   	return true
		}
	}
	return false
}
// Prüft, ob die vorgegebene Anzahl Zeichen erfüllt ist
function zaehleZeichen(eingabe, anz) {
	if ( eingabe.length == anz ) {
		return true
	}
	else {
		return false
	}
}
// Prüft, ob es eine Zahl von 0 bis 9 ist
function istZahl(eingabe) {
	for ( var i=0; i<eingabe.length; i++ ) {
		aktZeichen = eingabe.charAt(i);
		if ( aktZeichen < "0" || aktZeichen > "9" ) {
			return false
		}
	}
	return true
}
// Prüft, ob sich die Zahl in einem definierten Bereich (unten, oben) befindet
function ZahlinBereich(eingabe, unten, oben) {
	var zahl = parseInt(eingabe);
	return ((zahl >= unten) && (zahl <= oben))
}
// Prüfung einer Zeichenkette (String)
function pruefeString(eingabe, feldname) {
	if ( KontrolleNull(eingabe.value) && NurSpace(eingabe.value)) {
		return true
	}
	else {
		eingabe.focus()
		alert("Das Feld '" + feldname + Leerstringmessage);
		return false
	}
}
// Prüfung der Anzahl Zeichen in einem Bereich (min - max)
function pruefeAnzahl(eingabe, min, max) {
	if ( KontrolleNull(eingabe.value) && NurSpace(eingabe.value) && ZahlinBereich(eingabe.value, min, max)) {
		return true
	   }else {
		eingabe.focus();
		alert("Ungültige Anzahl - bitte überprüfen Sie Ihre Eingabe (min.: " + min + ", max.: " + max + ") ");
		return false
	}
}
// Prüfung der Postleitzahl auf Länge anhand des Landes
function pruefePLZ(eingabe,land) {
    if (land.value != "") {
       suchbegriff = "#" + land.value + "#";
       LandMitVier  = "#CH#,#A#,#B#,#NL#,#DK#";
       LandMitFuenf = "#D#,#F#";
       if (LandMitVier.search(suchbegriff) != -1) {
         plzlen  = 4;
         maxzahl = 9999;
       }
       if (LandMitFuenf.search(suchbegriff) != -1) {
         plzlen  = 5;
         maxzahl = 99999;
       }
      }else{
       alert("Ungültiges Land zu Postleitzahl - bitte vorgängig Land eingeben");
       return false
    }

	if ( istZahl(eingabe.value) && zaehleZeichen(eingabe.value, plzlen) && ZahlinBereich(eingabe.value, 1, maxzahl) ) {
		return true
	}
	else {
		eingabe.focus();
		alert("Ungültige Postleitzahl - bitte überprüfen Sie Ihre Eingabe");
		return false
	}
}
// Prüfung der E-Mailadresse auf Plausibilität
function pruefeEMAIL(eingabe) {

    var mailadresse = eingabe.value;
	if (( mailadresse.indexOf("@") == -1) || ( mailadresse.indexOf("@") == 0) || ( mailadresse.indexOf("@") == mailadresse.length-1))
	    {
	        alert("Ungültige E-Mail-Adresse - bitte überprüfen Sie Ihre Eingabe.");
		    eingabe.focus();
	        return false;
	    }
    return true
}
// Prüfung des Passwortes auf Plausibilität
function pruefePasswort(eingabe, pwdlen) {
		alert(eingabe.value);
		alert(pwdlen);
		alert(eingabe.length);

	if ( KontrolleNull(eingabe.value) && NurSpace(eingabe.value)) {
		return true;
	       }else {
		eingabe.focus();
		alert("Das Passwortfeld ist leer. Bitte geben Sie hier das Passwort ein.");
		return false;
	}
			alert("Länge:" + eingabe.length);

	if ( eingabe.length >= pwdlen ) {
		alert("Das Passwort enthält genügend Zeichen!");
		return true;
	       }else {
		eingabe.focus();
		alert("Das Passwort muss min. " + pwdlen + " Zeichen enthalten");
		return false;
	}	
}
// Vergleichen der beiden Passworteingaben auf Übereinstimmung
function vergleichePasswort(eingabe1,eingabe2) {
   if (eingabe1.value != eingabe2.value){
       alert("Die beiden neuen Passwörter stimmen nicht überein");
       eingabe2.value = "";
       eingabe1.focus();
       eingabe1.select();
       return false;
      }else{
       return true;
   }
}



// Bei Reset abfragen, ob alle Felder gelöscht werden sollen (nicht mehr verwenden)
function confirmReset(form) {
   if (confirm("Alle Inhalte des Formulares loeschen?"))
      {
      return true;
     }else{
      return false;
   }
}

// Bei Reset abfragen, ob alle Felder gelöscht werden sollen
function ResetCheck(form) {
   chk = window.confirm("Wollen Sie alle Eingaben loeschen?");
   return chk;
}
