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

function over(id, root){
	var prefix =""; // der Wert für die Startseite
	if(root == 1) prefix ="../"; // der Wert für die Seiten im Ordner seiten
	document.getElementById(id).style.backgroundImage = "url("+prefix+"bilder/item-selected.gif)";

}

function out(id, root){
	var prefix =""; // der Wert für die Startseite
	if(root == 1) prefix ="../"; // der Wert für die Seiten im Ordner seiten
	document.getElementById(id).style.backgroundImage = "url("+prefix+"bilder/item.gif)";
}

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 ";
	//Anfang-Feld - Ein Datumsfeld
	reg["anfang"]=/^[0-3]{1}[0-9]{1}.[0-1]{1}[0-9]{1}.[1-2]{1}[0-9]{3}$/i;// i = case insensitive
	meldung["anfang"]="Das Anfangsdatum ist entweder nicht \ngültig oder hat das falsche Format!\n\nRichtiges Format: dd.mm.yyyy";
	//Ende-Feld - Ein Datumsfeld
	reg["ende"]=/^[0-3]{1}[0-9]{1}.[0-1]{1}[0-9]{1}.[1-2]{1}[0-9]{3}$/i;// i = case insensitive
	meldung["ende"]="Das Enddatum ist entweder nicht \ngültig oder hat das falsche Format!\n\nRichtiges Format: dd.mm.yyyy";

	//Geburtsdatum-Feld - Ein Datumsfeld
	reg["geburtstag"]=/^[0-3]{1}[0-9]{1}.[0-1]{1}[0-9]{1}.[1-2]{1}[0-9]{3}$/i;// i = case insensitive
	meldung["geburtstag"]="Bitte geben Sie den Geburtstag im Format dd.mm.jjjj ein.";
	
	//Uhrzeit im Format hh:mm
//	reg["uhrzeit"]=/^[0-2]{1}[0-9]{1}:[0-5]{1}[0-9]{1}$/i;// i = case insensitive
	reg["uhrzeit"]=/^(([0-1]{0,1}[0-9]{1})|(2{1}[0-3]{1})):[0-5]{1}[0-9]{1}$/i;// i = case insensitive
	meldung["uhrzeit"]="Bitte geben Sie die Uhrzeit im Format hh:mm im Bereich 00:00 - 23:59 ein.";

	//Größe in Millimeter
	reg["groesse"]=/^[0-9]{3}$/i;// i = case insensitive
	meldung["groesse"]="Bitte geben Sie die Größe als dreistellige Ganzzahl in Millimeter ein";

	//Gewicht in Gramm
	reg["gewicht"]=/^[0-9]{4}$/i;// i = case insensitive
	meldung["gewicht"]="Bitte geben Sie das Gewicht als vierstellige Ganzzahl in Gramm ein";
	
	//bilddatei
	//reg["bild"]=/^[a-z]{1}:{1}[\\\/]{1}[0-9a-zäöüß .-_\\\/]{1,}(.jpg){1}$/i;// i = case insensitive
	reg["bild"]=/^.+$/i;// i = case insensitive // Der Ausdruck .+ ist eine vorübergehende Krücke
	meldung["bild"]="Der Pfad zur Bilddatei ist nicht korrekt";
	
	//Preis-Felder
	reg["preis_1"]=/^[0-9]+,[0-9]{2}$/i;// i = case insensitive
	meldung["preis_1"]="Die Preisangabe ist nicht korrekt! \n\nVerwenden Sie genau zwei Nachkommastellen \nund das Komma als Dezimaltrennzeichen.\n\nBeispiel: 100,12";
	reg["preis_2"]=/^[0-9]+,[0-9]{2}$/i;// i = case insensitive
	meldung["preis_2"]="Die Preisangabe ist nicht korrekt! \n\nVerwenden Sie genau zwei Nachkommastellen \nund das Komma als Dezimaltrennzeichen.\n\nBeispiel: 100,12";
	reg["preis_7"]=/^[0-9]+,[0-9]{2}$/i;// i = case insensitive
	meldung["preis_7"]="Die Preisangabe ist nicht korrekt! \n\nVerwenden Sie genau zwei Nachkommastellen \nund das Komma als Dezimaltrennzeichen.\n\nBeispiel: 100,12";
	reg["preis"]=/^[0-9]+,[0-9]{2}$/i;// i = case insensitive
	meldung["preis"]="Die Preisangabe ist nicht korrekt! \n\nVerwenden Sie genau zwei Nachkommastellen \nund das Komma als Dezimaltrennzeichen.\n\nBeispiel: 100,12";
	//vorname-Feld
	reg["vorname"]=/^[a-zäöüß -]*$/i;// i = case insensitive
	meldung["vorname"]=text1+"Buchstaben, Leerzeichen und Bindestrich erlaubt.";
	//nachname-Feld
	reg["nachname"]=/^[a-zäöüß -]*$/i;// i = case insensitive
	meldung["nachname"]=text1+"Buchstaben, Leerzeichen und Bindestrich erlaubt.";
	//firma-Feld
	reg["firma"]=/^[0-9a-zäöüß .-]*$/i;// i = case insensitive
	meldung["firma"]=text1+"Ziffern, Buchstaben, Leerzeichen, Punkt und Bindestrich erlaubt.";
	//funktion-Feld
	reg["abteilung"]=/^[0-9a-zäöüß .-]*$/i;// i = case insensitive
	meldung["abteilung"]=text1+"Ziffern, Buchstaben, Leerzeichen, Punkt und Bindestrich erlaubt.";
	//plz-Feld
	reg["plz"]=/^\d{5}$/;
	meldung["plz"]=text1+"5 Ziffern erlaubt.";
	//ort-Feld // entfällt hier ausnahmsweise, weil das Feld in diesem Formular vom Typ select ist.
	reg["ort"]=/^[0-9a-zäöüß -]*$/i;// i = case insensitive
	meldung["ort"]=text1+"Ziffern, Buchstaben, Leerzeichen und Bindestrich erlaubt.";
	//bundesland-Feld
	reg["bundesland"]=/^[a-zäöüß -]*$/i;// i = case insensitive
	meldung["bundesland"]=text1+"Buchstaben, Leerzeichen und Bindestrich erlaubt.";

	//für das strasse-Feld
	reg["strasse"]=/^[0-9a-zäöüß .-]*$/i;// i = case insensitive
	meldung["strasse"]=text1+"Ziffern, Buchstaben, Leerzeichen, Punkt und Bindestrich erlaubt.";
	//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.";
	//für das nachricht-Feld
	//reg["nachricht"]=/^.+$/; // Dieser Ausdruck ist gleichwertig mit:  nachricht != ""
	//meldung["nachricht"]="Sie haben keine Nachricht geschrieben.";
	//für das vorwahl-Feld // Gibt´s in diesem Formular nicht.
	reg["vorwahl"]=/^[0-9]+$/; //
	meldung["vorwahl"]=text1+"Ziffern erlaubt.";
	//für das telefon-Feld // Gibt´s in diesem Formular nicht.
	//reg["telefon"]=/^[0-9]+$/;
	//meldung["telefon"]=text1+"Ziffern erlaubt.";
	reg["telefon"]=/^[0-9 .-]*$/i;// i = case insensitive
	meldung["telefon"]=text1+"Ziffern, Leerzeichen, und Bindestrich erlaubt.";

	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.") {

/*
							// Das war die ursprüngliche Anweisung
							alert("Das Feld "+ftu(e.name)+" ist nicht ausgefüllt.");
*/


							if(e.name=="Name"){
								alert("Das Feld Nachname ist nicht ausgefüllt.");
							}
							if(e.name=="EMail"){
								alert("Bitte geben Sie eine E-Mail-Adresse an.");
							}



							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;
}



