var pattern = new Array();
var meldung = "Folgende Angaben fehlen oder enthalten Fehler:";

function checkform(form, msg) {
	if ( typeof form == 'undefined' ) {
		if ( document.forms.length > 0 ) {
			form = document.forms[0];
		}
		else {
			alert("Kein Formular vorhanden!");
			return false;
		}
	}

	var falsch = new Array();
	var id = form.id;
	var checkboxes = new Array ();
	var radiobuttons = new Array ();

	if ( typeof msg != 'undefined' ) meldung = msg;

	for (var i = 0; i < form.length; ++i) {
		var element = form.elements[i];
		var condition = pattern[id][element.name];
		var bezeichnung = (typeof element.title != 'undefined' && element.title != '') ? element.title : element.name;
		if ( typeof condition != "undefined" ) {
			if ( typeof element.type != "undefined" ) {
				switch (element.type) {
					case "text":
					case "textarea":
					case "file":
						if (  condition.test(element.value) == false ) {
							falsch.push(bezeichnung);
						}
						break;
					case "checkbox":
						if ( condition == true ) { // Mindestens eine Checkbox dieses Namens muss selektiert sein.
							if ( typeof checkboxes[element.name] == "undefined" || checkboxes[element.name] != true ) {
								checkboxes[element.name] = element.checked ? true : bezeichnung;
							}
						}
						break;
					case "radio":
						if ( condition == true ) { // Mindestens ein Radiobutton dieses Namens muss selektiert sein.
							if ( typeof radiobuttons[element.name] == "undefined" || radiobuttons[element.name] != true ) {
								radiobuttons[element.name] = element.checked ? true : bezeichnung;
							}
						}
						break;
					case "select-one":
						if (  condition.test(element.options[element.selectedIndex].value) == false ) {
							falsch.push(bezeichnung);
						}
						break;
					default:
						alert("Unbekannter Elementtyp: "+element.type);
				}
			}
			else {
				alert("Feld "+field+" hat keinen Typ!");
			}
		}
	}

	for (var name in radiobuttons) {
		if ( radiobuttons[name] != true ) {
			falsch.push(radiobuttons[name]);
		}
	}

	for (var name in checkboxes) {
		if ( checkboxes[name] != true ) {
			falsch.push(checkboxes[name]);
		}
	}

	if ( falsch.length > 0 ) {
		alert( meldung+"\n\n"+falsch.join("\n") );
		return false;
	}
	else {
		return true;
	}
}

