
// Bereich für die Verschlüsselung der E-Mail-Adresse
var browserName=navigator.appName;var browserVer=parseInt(navigator.appVersion);var version="";var msie4=(browserName=="Microsoft Internet Explorer"&&browserVer>=4);if((browserName=="Netscape"&&browserVer>=3)||msie4||browserName=="Konqueror"||browserName=="Opera"){version="n3";}else{version="n2";}
function blurLink(theObject){if(msie4){theObject.blur();}}
function decryptCharcode(n,start,end,offset){n=n+offset;if(offset>0&&n>end){n=start+(n-end-1);}else if(offset<0&&n<start){n=end-(start-n-1);}
return String.fromCharCode(n);}
function decryptString(enc,offset){var dec="";var len=enc.length;for(var i=0;i<len;i++){var n=enc.charCodeAt(i);if(n>=0x2B&&n<=0x3A){dec+=decryptCharcode(n,0x2B,0x3A,offset);}else if(n>=0x40&&n<=0x5A){dec+=decryptCharcode(n,0x40,0x5A,offset);}else if(n>=0x61&&n<=0x7A){dec+=decryptCharcode(n,0x61,0x7A,offset);}else{dec+=enc.charAt(i);}}
return dec;}
function linkTo_UnCryptMailto(s){location.href=decryptString(s,-2);}
// Ende Verschlüsselung der E-Mail-Adresse

function rb(x){
	if(x.blur)x.blur()
}

function korrekt(feldname,form_index){
	// Elementarfunktion: korrekt(feldnamen) überprüft die Korrektheit der Eingabe im Feld des als Parameter übergebenen Feldnamens im aufrufenden 
	// Formular. GRUNDSÄTZLICH MACHT DIESE ÜBERPRÜFUNG NUR IN FELDERN VOM TYP TEXT, TEXTAREA UND PASSWORD SINN. Denn bei 
	// Formularelementen vom Typ radio oder checkbox sind die möglichen Antworten ja schon vorgegeben. Voraussetzung für die Anwendung von 
	// korrekt(feldname) ist die Vergabe von standardisierten Feldnamen. D.h. die Feldnamen die hier in dieser Funktion gelegt werden, sollten so auch immer 
	// in den Formularen verwendet werden, die diese Funktion korrekt(feldname) benutzen.
	
	// Arrays der standardisierten Feldnamen für reguläre Ausdrücke und Fehlermeldungen
	var reg = new Array();//Assoziatives Array für reguläre Ausdrücke
	var meldung = new Array();//Assoziatives Array für die Fehlermeldungen
	var text1 = "Im Feld "+ftu(feldname)+" sind nur ";

	
	// name: Feld für Zu- & Vorname
	reg["name"]=/./i;// i = case insensitive // der Punkt steht für ein beliebiges Zeichen
	meldung["name"]="Bitte geben Sie Ihren Namen an.";

	//für das email-Feld
	reg["email"]=/^[0-9a-z.\-_]+@{1}[0-9a-z.\-_]{3,}[.]{1}[a-z]{2,4}$/i;// i = case insensitive
	meldung["email"]="Die E-Mail-Adresse ist fehlerhaft.";

	reg["nachricht"]=/./i;// i = case insensitive // der Punkt steht für ein beliebiges Zeichen
	meldung["nachricht"]="Bitte geben Sie Ihre Nachricht an.";


	var feldwert=document.forms[form_index].elements[feldname].value;
	if(!reg[feldname].test(feldwert)){
		alert(meldung[feldname]);
		document.forms[form_index].elements[feldname].select();
		return false;
	}//end if
	else return true;
}// end of function korrekt(feldname)

function pruefen(proof_list,form_index){
	// Die Funktion pruefen() führt eine Prüfung der Vollständigkeit und Korrektheit der Eingaben beim aufrufenden Formular durch. 
	// In einer for-Schleife  werden sämtliche Eingabeelemente auf Vollständigkeit überprüft. Es wird zwischen den Typen text, textarea, password einerseits 
	// sowie dem Typ radio und dem Typ select unterschieden. Beim Typ checkbox braucht in der Regel keine Überprüfung vorgenommen werden, weil eine 
	// nicht ausgewählte Checkbox auch eine Antwort ist, nämlich "nein". Eine Überprüfung der Typen submit, reset und button macht natürlich i.d.R. auch 
	// keinen Sinn.
	// Die Überprüfung der Vollständigkeit ist in diese Gruppen verzweigt. Lediglich bei der ersten Gruppe, also Typ text, textarea, password , ist auch eine 
	// Überprüfung auf Korrektheit erforderlich. Bei den Typen checkbox und select macht dies ja wirklich keinen Sinn. Die Überprüfung auf Korrektheit erfolgt 
	// daher im Zweig if(e.type=="text"||e.type=="textarea"||e.type=="password") über die aufgerufene Elementarfunktion korrekt(feldname).

	var radiocheck =""; // radiocheck speichert die Namen  bereits überpüfter Radio-Buttons mit einem blank dazwischen; muss vor der for-Schleife stehen.
	//ÜBERPRÜFUNG AUF VOLLSTÄNDIGKEIT
	for(var i = 0;i<document.forms[form_index].elements.length;i++){
		e = document.forms[form_index].elements[i];
		f = document.forms[form_index];
		if(proof_list.indexOf(e.name)>=0){// D.h. ist der Feldname in der proof_list enthalten ==> erfolgt die Überprüfung, und nur dann
					// VOLLSTÄNDIGKEIT BEI TEXT, TEXTAREA, PASSWORD
					if(e.type=="text"||e.type=="textarea"||e.type=="password"||e.type=="file"){
						if(e.value=="" || e.value=="Bitte geben Sie hier Ihre Nachricht ein.") {
							alert("Das Feld "+ftu(e.name)+" ist nicht ausgefüllt.");
							e.focus();
							return false;
						}
						if(e.name=="geburtstag"){
							if(!gueltigesDatum(e.value)){
								alert("Der Geburtstag ist ungültig");
								return false;
							}
						}
						if(!korrekt(e.name,form_index)) return false;// Überprüfung der Korrektheit
					}
					// VOLLSTÄNDIGKEIT BEI TYPE=RADIO
					else if(e.type=="radio"){
						if(radiocheck.indexOf(e.name+" ") < 0){
							radiocheck += e.name+" ";
							var ok = false;
							eval("var radiogroup = f."+e.name);//radiogroup ist Name des Werte-Arrays der aktuell betrachteten Radiogruppe
							for (var j=0;j<radiogroup.length;j++ ){
								if(radiogroup[j].checked) ok=true;
							}
							if(!ok){
								alert("Die Gruppe "+ftu(e.name)+" ist nicht ausgefüllt");
								e.focus();
								return false;
							}// end of if(!ok)
						}// end of if(radiocheck.indexOf(e.name+" ") < 0)
					}// ende von radio-Prüfung
					// VOLLSTÄNDIGKEIT BEI TYPE=CHECKBOX
					else if(e.type=="checkbox"){
						//Voraussetzung für die Sinnhaftigkeit der Vollständigkeitsüberprüfung der Checkboxen ist, dass mindestens eine der vorhandenen Checkboxen
						//aktiviert sein soll.  Checkboxen werden im Allgemeinen nicht auf Vollständigkeit überprüft, da eine nicht ausgewählte Checkbox ja auch eine
						//Antwort ist, nämlich nein. In Ausnahmefällen könnte hier aber auch Quellcode stehen
					}// ende von checkbox-Prüfung
					else if(e.type=="submit"||e.type=="reset"||e.type=="button"){
						// auch bei diesen Typen macht es i.d.R. keinen Sinn die Korrektheit zu überprüfen.  In Ausnahmefällen könnte hier aber auch Quellcode stehen.
					}// ende von submit/reset/button-Prüfung
					// VOLLSTÄNDIGKEIT BEI SELECT
					else if(e.type=="select-one"||e.type=="select-multiple"){
						// Voraussetzung ist, dass bei Index = 0 eine Anweisung und noch kein auzuwählender Wert steht.
						if(e.selectedIndex==0){
							alert("Im Auswahlfeld "+ftu(e.name)+" haben Sie noch nichts ausgewählt");
							e.focus();
							return false;
						}
					}// end of else if(e.type=="select-one"||e.type=="select-multiple")
		}// end of if(!ex_list.indexOf(e.name))
	} // end of for
}// end of function pruefen();


function ftu(s){// !!! NICHT LÖSCHEN, WIRD VON pruefen() BENÖTIGT !!!
	//Elementarfunktion: Wandelt das erste Zeichen einer Zeichenkette in Grossbuchstaben um (ftu = first to upper)
	s = s.substring(0,1).toUpperCase()+s.substring(1,s.length);
	return s;
}


