/*
================================================================
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.
Version:	1.2 / 15.01.2004 / W. Schafroth
                neuer E-Mail-Check verwendet eingesetzt und.
                auf Mehrsprachigkeit (de,fr,en) erweitert.
Version:	1.3 / 24.04.2006 / W. Schafroth
                mit Funktion ZahlnichtNull und pruefeAuswahl 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">var sprache = "de";</script>
<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>
*/
//Sprache der Seite aus dem URL ermitteln
function SpracheAusUrl()
   {
   var sprachurl1  = document.URL;
   //alert(sprachurl1);
   //re = "/\\/g";
   //alert(re);
   var sprachurl2  = sprachurl1.replace(/\\/ig,"/");
   //alert(sprachurl2);
   //ergebnis = sprachurl2.search("/de/");
   //alert(ergebnis);
   //document.write("ergebnis : " + ergebnis + "<br>");
   var sprachcode = "undefiniert";
   if (sprachurl2.search("/de/") > 0) sprachcode = "de";
   if (sprachurl2.search("/fr/") > 0) sprachcode = "fr";
   if (sprachurl2.search("/en/") > 0) sprachcode = "en";
   //document.write("sprachcode : " + sprachcode + "<br>");
   return sprachcode;
}

//alert(typeof sprache);
if (typeof sprache == "undefined") var sprache = SpracheAusUrl();
//alert("sprache : " + sprache);
if (sprache == "undefiniert") {
   alert("Sprache nicht definiert - Englisch eingestellt");
   sprache = "en";
}

// Globale Variablen
switch(sprache) {
   case "de":
      var message1a  = "Das Feld '";
      var message1b  = "' ist leer. Bitte geben Sie hier einen Wert ein.";
      var message2   = "Ungültige Anzahl - bitte überprüfen Sie Ihre Eingabe ";
      var message3   = "Ungültiges Land zu Postleitzahl - bitte vorgängig Land eingeben";
      var message4   = "Ungültige Postleitzahl - bitte überprüfen Sie Ihre Eingabe";
      var message5   = "Ungültige E-Mail-Adresse - bitte überprüfen Sie Ihre Eingabe.";
      var message6   = "Das Passwortfeld ist leer. Bitte geben Sie hier das Passwort ein.";
      var message7a  = "Das Passwort muss min. ";
      var message7b  = " Zeichen enthalten";
      var message8   = "Die beiden neuen Passwörter stimmen nicht überein.";
      var message9   = "Wollen Sie alle Eingaben im Formular loeschen?";
      var message10  = "Keine Wahl vorgenommen im Feld ";
      break;
   case "fr":
      var message1a  = "Le champ '";
      var message1b  = "' est vide. S'il vous plaît entrez ici une valeur.";
      var message2   = "Nombre non valable, s'il vous plaît, controllez votre donnée ";
      var message3   = "Pays au code postal non valable, s'il vous plaît, entrez dabords le pays";
      var message4   = "Code postal non valable, s'il vous plaît, controllez votre donnée";
      var message5   = "Adresse e-mail non valable , s'il vous plaît, controllez votre donnée.";
      var message6   = "Le mot de passe est vide. S'il vous plaît donnez ici le mot de passe.";
      var message7a  = "Le mot de passe doit contenir au min.  ";
      var message7b  = " charactères";
      var message8   = "Les deux nouveaux mots de passe ne concordent pas.";
      var message9   = "Voullez vous effacer toutes les champs?";
      var message10  = "Pas de choix fait dans le champ ";
      break;
   default:
      var message1a  = "The field '";
      var message1b  = "'  is empty. Please enter a value here.";
      var message2   = "Invalid number - please check your input ";
      var message3   = "Invalid country to zip code - please enter first the country";
      var message4   = "Invalid zip code - please check your input.";
      var message5   = "Invalid e-mail-address - please check your input.";
      var message6   = "The password-field is empty. Please enter the password here.";
      var message7a  = "The password must contain min. ";
      var message7b  = " characters.";
      var message8   = "The two new passwords doesn't match.";
      var message9   = "Would you like to delete all inputfields?";
      var message10  = "No selection done in field ";
      break;
}


// 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üft, ob sich die Zahl in einem definierten Bereich (unten, oben) befindet
function ZahlnichtNull(eingabe) {
	var zahl = parseInt(eingabe);
	return (zahl != 0)
}
// Prüfung einer Zeichenkette (String)
function pruefeString(eingabe, feldname) {
	if ( KontrolleNull(eingabe.value) && NurSpace(eingabe.value)) {
		return true
	}
	else {
		eingabe.focus()
		alert(message1a + feldname + message1b);
		return false
	}
}
// Prüfung fehlende Auswahl (String)
function pruefeAuswahl(eingabe, feldname) {
	if ( KontrolleNull(eingabe.value) && NurSpace(eingabe.value) && ZahlnichtNull(eingabe.value)) {
		return true
	}
	else {
		eingabe.focus()
		alert(message10 + feldname);
		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(message2 + " (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(message3);
       return false
    }

	if ( istZahl(eingabe.value) && zaehleZeichen(eingabe.value, plzlen) && ZahlinBereich(eingabe.value, 1, maxzahl) ) {
		return true
	}
	else {
		eingabe.focus();
		alert(message4);
		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(message5);
		    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(message6);
		return false;
	}
			alert("Länge:" + eingabe.length);

	if ( eingabe.length >= pwdlen ) {
		return true;
	       }else {
		eingabe.focus();
		alert(message7a + pwdlen + message7b);
		return false;
	}	
}
// Vergleichen der beiden Passworteingaben auf Übereinstimmung
function vergleichePasswort(eingabe1,eingabe2) {
   if (eingabe1.value != eingabe2.value){
       alert(message8);
       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(message9);
   return chk;
}

