/*form_pruefen.js
* by Thorsten Ruppenstein. v2.0
*/
//Rückgabe: TRUE oder FALSE
function pruefen(form){
	
	ok = true;

	fehlertext = "FEHLER BEI DER EINGABE\n\nFolgende Fehler sind aufgetreten:\n";
	
	//Felder prüfen
	/* pid's
	*	1	Feld UNTER KEINEN UMSTÄNDEN LEER
	*	2	Feld positive ganze Zahl (>=0)
	*	4	Feld muss Datumsformat TT.MM.JJJJ haben
	*	8	checkbox: mindestens eins ausgewählt
	*	16	select: mindestens eins ausgewählt
	*/
	
	/* aid's
	*	bei gleichem Wert muss mindestens eins grösser 0 sein (verwenden mit pid=2)
	*/
	
	/* sid's
	*	bei gleichem Wert müssen die betreffenden Felder auch den gleichen Inhalt haben
	*/
	
	/* nid's
	*	bei gleichem Wert dürfen nicht alle betreffenden leer sein
	*/
	
	flag_nid = new Array();
	flag_message_nid = new Array();
	
	flag_aid = new Array();
	flag_message_aid = new Array();
	
	flag_sid = new Array();
	flag_value_sid = new Array();
	flag_message_sid = new Array();
	
	for (i=0; i<form.length; i++){
		el = form.elements[i];
		
		var el_pid;
		el_pid = el.getAttribute("pid");
		var el_aid;
		el_aid = el.getAttribute("aid");
		var el_sid;
		el_sid = el.getAttribute("sid");
		var el_nid;
		el_nid = el.getAttribute("nid");
		var el_message;
		el_message = el.getAttribute("message");
	
		if (el_aid>0) {
			if (flag_aid[el_aid]==null) {
				flag_aid[el_aid] = 0;
				flag_message_aid[el_aid] = el_message;
			}
			if (el.value>0) flag_aid[el_aid] = 1;
		}

		if (el_sid>0) {
			if (flag_sid[el_sid]==null) {
				flag_sid[el_sid] = 0;
				flag_value_sid[el_sid] = el.value;
				flag_message_sid[el_sid] = el_message;
			}
			if (el.value!=flag_value_sid[el_sid]) {
				flag_sid[el_sid] = 1;
			}
		}
		
		if (el_nid>0) {
			if (flag_nid[el_nid]==null) {
				flag_nid[el_nid] = 0;
				flag_message_nid[el_nid] = el_message;
			}
			if (el.value!="") flag_nid[el_nid] = 1;
		}
		
		if (el_pid & 1) {
			if (el.value=="") {
				ok = false;
				fehlertext += "- Das Feld " + el_message + " darf nicht leer sein.\n";
			}
		}
		
		if (el_pid & 2) {
			if(parseInt(el.value)!=el.value || parseInt(el.value)<0) {
				ok = false;
				fehlertext += "- Das Feld " + el_message + " muss eine positive ganze Zahl oder 0 sein.\n";
			}
		}
		
		if (el_pid & 4) {
			var Ausdruck = /^(\d{1,2})\.(\d{1,2})\.\d{4}$/
			if (Ausdruck.test(el.value)==false) {
				ok = false;
				fehlertext += "- Das Feld " + el_message + " muss im Format TT.MM.JJJJ sein.\n";
			}
			else {
				var Ergebnis = Ausdruck.exec(el.value);
				
				var monat = parseInt(RegExp.$2)
				var tag = parseInt(RegExp.$1)
				
				switch(monat) {
				// 31 Tage
					case 1:
					case 3:
					case 5:
					case 7:
					case 8:
					case 10:
					case 12:
						if ((tag<1) || (tag>31)) {
							ok = false;
							fehlertext += "- Das Feld " + el_message + " muss im Format TT.MM.JJJJ sein. (Tag ung\u00fcltig)\n";
						}
						break;
						
				// 30 Tage
					case 4:
					case 6:
					case 9:
					case 11:
						if ((tag<1) || (tag>30)) {
							ok = false;
							fehlertext += "- Das Feld " + el_message + " muss im Format TT.MM.JJJJ sein. (Tag ung\u00fcltig)\n";
						}
						break;						
					
				//Februar maximal 29
					case 2:
						if ((tag<1) || (tag>29)) {
							ok = false;
							fehlertext += "- Das Feld " + el_message + " muss im Format TT.MM.JJJJ sein. (Tag ung\u00fcltig)\n";
						}
						break;
					default:
						ok = false;
						fehlertext += "- Das Feld " + el_message + " muss im Format TT.MM.JJJJ sein. (Monat ung\u00fcltig)\n";
						break;
				}
				
			}
		}
		if (el_pid & 8) {
			if (form[el.name].length>0) {
				zaehler = 0;
				for (k = 0 ; k < form[el.name].length; k++){
					if (form[el.name][k].checked) zaehler = zaehler + 1;
				}
				if(zaehler==0) {
					ok = false;
					fehlertext += "- Bei " + el_message + " muss mindestens eine Alternative gew\u00e4hlt sein.\n";
				}
			}
			else {
				if (!(form[el.name].checked)) {
					ok = false;
					fehlertext += "- Das Feld " + el_message + " muss angeklickt sein.\n";
				}
			}
		}
		if (el_pid & 16) {
			if (el.selectedIndex==-1){
				ok = false;
				fehlertext += "- Bei " + el_message + " muss mindestens eine Alternative gew\u00e4hlt sein.\n";
			}
		}
		
	
	}//ENDE FOR
	
	for (l=0; l<flag_nid.length; l++) {
		if (flag_nid[l]==0) {
			fehlertext += "- Die Felder " + flag_message_nid[l]+ " d\u00fcrfen nicht alle leer sein.\n";
			ok = false;
		}
	}
	
	for (n=0; n<flag_aid.length; n++) {
		if (flag_aid[n]==0) {
			fehlertext += "- Die Felder " + flag_message_aid[n]+ " d\u00fcrfen nicht alle 0 sein.\n";
			ok = false;
		}
	}
	
	for (m=0; m<flag_sid.length; m++) {
		if (flag_sid[m]==1) {
			fehlertext += "- Die Felder " + flag_message_sid[m]+ " m\u00fcssen den gleichen Inhalt haben.\n";
			ok = false;
		}
	}
	
	
	//Abschiscken ODER Fehlermeldung
	if (ok) {
		retVal = confirm("Soll die Abfrage wirklich abgeschickt werden?");
		if(retVal == true) return true;
        else if (retVal == false) {
			//alert("Abgebrochen!");
			return false;
		}
		
		return true;
	}
	else {
		alert(fehlertext);
		return false;
	}
}

