// Formularpruefengine

var fehlerrahmen = '#BB1414';
var inputrahmen = '#BABABA';

function pruefemail(email) {
	var regex = new RegExp('^([a-zA-Z0-9\\-\\.\\_\\ä\\ö\\ü\\Ä\\Ö\\Ü\\ß]+)'+'(\\@)([a-zA-Z0-9\\-\\.\\ä\\ö\\ü\\Ä\\Ö\\Ü\\ß]+)'+'(\\.)([a-zA-Z]{2,4})$');
	return(regex.test(email));
}

function pruefnumerisch(n) {
   var s = "" + n; //Umwandlung in eine Zeichenkette
   var ziffern = "0123456789";  //Gültige Zeichen
   for (var i=0; i<s.length; i++) {
      if (ziffern.indexOf(s.charAt(i)) == '-1') {
         return false;
      }
   }
   return true;
}

function formularpruefen(f) {	
	var fehler = "";  //Variable für die Fehlermeldung
	var radiocheck = "";  //Variable für überprüfte Radiobuttons
	var i;  //Enthält das jeweilige Formularelement
	for (var j=0; j<f.elements.length; j++)
	{
		i = f.elements[j];
		i.style.borderColor=inputrahmen; //Rahmnfarbe auf Standard zurücksetzen
		//Texteingabefelder
		if (i.type=="text" || i.type=="password" || i.type=="textarea")
		{
			var name = i.name;
			var werte = name.split("_");
			if(werte[2]=="ja") // wenn es sich um ein Pflichtfeld handelt
			{
		    	if (i.value == "")
		    	{
		        	i.style.borderColor=fehlerrahmen;
		        	fehler += "- " + werte[5] + " nicht ausgefüllt\n";
				}
			}
			if(werte[3]!="ohne") // wenn es auf spezifische Feldinhalte geprüft werden muss
			{
				switch(werte[3])
				{
					case "email":	
					if(i.value!="") {				
						var emailpruef = pruefemail(i.value);
						if(emailpruef == false)
						{
							i.style.borderColor=fehlerrahmen;
							fehler += "- " + werte[5] + " ist keine gültige E-Mailadresse\n";
						}
					}
					break;
					
					case "numerisch":
					if(i.value!="") {					
						var numpruef = pruefnumerisch(i.value);
						if(numpruef == false)
						{
							i.style.borderColor=fehlerrahmen;
							fehler += "- " + werte[5] + " ist keine gültige Zahl\n";
							
						}
					}
					break;
					
					case "datum":
					if(i.value!="") {
						var datumpruef = pruefdatum(i.value);
						if(datumpruef == false)
						{
							i.style.borderColor=fehlerrahmen;
							fehler += "- " + werte[5] + " ist kein gültiges Datum\n";
						}
					}
					break;
					
					case "betrag":
					if(i.value!="") {
						var betragpruef = pruefbetrag(i.value);
						if(betragpruef == false)
						{
							i.style.borderColor=fehlerrahmen;
							fehler += "- " + werte[5] + " -> kein gültiger Betrag\n";
						}
					}
					break;
					
					case "stunde":
					if(i.value!="") {
						var stundepruef = pruefstunde(i.value);
						if(stundepruef == false)
						{
							i.style.borderColor=fehlerrahmen;
							fehler += "- " + werte[5] + " hat kein gültiges Stundenformat\n";
						}
					}
					break;
					
					case "minute":
					if(i.value!="") {
						var minutepruef = pruefminute(i.value);
						if(minutepruef == false)
						{
							i.style.borderColor=fehlerrahmen;
							fehler += "- " + werte[5] + " hat kein gültiges Minutenformat\n";
						}
					}
					break;

				}
			}
			
			if(werte[4]!=0 && i.value!="") // wenn eine Mindestlänge vorgegeben ist
			{
				if (i.value.length<werte[4])
				{
					i.style.borderColor=fehlerrahmen;
					fehler += "- " + werte[5] + " erfüllt nicht die geforderte Mindestlänge\n";
				}
			}
		}
		// AB HIER WIRD NOCH NICHT AUF SPEZIELLE ANGABEN GEPRÜFT SONDERN NUR, OB ALLES AUSGEWÄHLT WURDE -----------
		//Radiobuttons
		if (i.type=="radio")
		{
			if (radiocheck.indexOf(i.name+ " ") < 0)
			{
				radiocheck += i.name + " ";
				eval("var radiogroup = f." + i.name);
				var ok = false;
	            for (var k=0; k<radiogroup.length; k++)
	            {
					if (radiogroup[k].checked)
					{
						ok = true;
					}
				}
	            if (!ok)
	            {
					fehler += "- " + i.name + " nicht bestimmt\n";
				}
			}
		}
	
		//Auswahllisten
		if (i.type=="select-one" || i.type=="select-multiple")
		{
			if (i.selectedIndex == 0)
			{
				fehler += "- " + i.name + " nicht bestimmt\n";
				i.style.borderColor=fehlerrahmen;
			}
		}
	}
	//Fehlermeldung
	if (fehler != "")
	{
		alert("Folgende Fehler sind aufgetreten:\n" + fehler);
		return false;
	}
	formsend();
	//return true;
}

function popup(path)
{
NF=window.open(path,"Bild","scrollbars=yes,width=850,height=650");
NF.focus;	
}
