function AMcheckForm(formname) {
  	//by Daniel Rohr(2005)
	//einbinden mit  <form ... onSubmit="return checkForm(this)">
	//
	//Beispiel:
	//
	/*
	<form name="form1" method="post" action="" onSubmit="return checkForm(this)"
		<input name="Rfields" type="hidden" value="name,email">
		<input name="Efields" type="hidden" value="email,email2">
		<input name="Ffields" type="hidden" value="email=E-Mail,name=Name oder Vorname">
    		name: <input name="name" type="text" id="name"></br>
			email: <input name="email" type="text" id="email"></br>
			email2: <input name="email2" type="text" id="email2"></br>
    	<input type="submit" name="Submit" value="Senden">
	</form>
	*/	
	//folgende Felder sind Pflichtfelder (name des Formularfeldes) 
	//optional auch <input name="pflichtfelder" type="hidden" value="name,email">
pflichtfelder = new Array("Name","Email");
	//folgende Felder werden auf eine gültige Email-Adresse überprüft
	//optional auch <input name="emailfelder" type="hidden" value="email">
emailfelder = new Array("Email");	
	//Wie heisst das Feld, z.b. formularfeld "email" wird als "E-Mail"-Fehler angezeigt : bezeichnung["email"] = "E-Mail";
	//optional auch <input name="feldbezeichungen" type="hidden" value="email=E-Mail,name=Name oder Vorname">
feldbezeichungen = new Object();
feldbezeichungen["Name"] = "NAME";
feldbezeichungen["Email"] = "E-Mail";
	//Fehlermeldungen
	var Pmessage = "Bitte folgende Felder ausfüllen: \n ------------------------ \n"; //Formularfehler allgemein
	var Emessage = "Bitte überprüfen Sie folgende Email-adresse: " //Folgendes Email-feld stimmt nicht
	
	success=true;
	var message = "";
	fPflichtfelder = new String(formname.elements["Rfields"].value);
	if (fPflichtfelder) pflichtfelder = fPflichtfelder.split(",");
	fEmailfelder = new String(formname.elements["Efields"].value);
	if (fEmailfelder) emailfelder = fEmailfelder.split(",");
	fFeldbezeichungen = new String(formname.elements["Fnames"].value);
	if (fFeldbezeichungen) {
		aFeldbezeichungen = fFeldbezeichungen.split(",");
		for (a = 0; a<aFeldbezeichungen.length; a++) {
			aFeld = aFeldbezeichungen[a].split("=");
			feldbezeichungen[aFeld[0]] = aFeld[1]; 
			}
		}	
	for (n=0; n<pflichtfelder.length; n++) {
		if(formname.elements[pflichtfelder[n]].value == "" || formname.elements[pflichtfelder[n]].value==false) {
			message = message + getPname(pflichtfelder[n]) + "\n";
			success=false;
			}
	}
	if (success) {
		for (n=0; n<emailfelder.length; n++) {
			if (!AMcheckEmail(formname.elements[emailfelder[n]].value)) {
				message = message + Emessage + getPname(emailfelder[n]);
				success=false;
				}  
		}
	}
	if(!success) alert(Pmessage + message);
	return success;
}
function getPname(tName) {
	if (feldbezeichungen[tName]) return feldbezeichungen[tName];
	return tName;
}
function AMcheckEmail(feld) {
	// werden regular expressions unterstuetzt?
	var supported = 0;
	if (window.RegExp) {
		var tempStr = "a";
		var tempReg = new RegExp(tempStr);
		if (tempReg.test(tempStr)) supported = 1;
	}
	if (!supported) return (feld.indexOf(".") > 2) && (feld.indexOf("@") > 0);
	var r1 = new RegExp("(@.*@)|(\\.\\.)|(@\\.)|(^\\.)");
	var r2 = new RegExp("^.+\\@(\\[?)[a-zA-Z0-9\\-\\.]+\\.([a-zA-Z]{2,4}|[0-9]{1,3})(\\]?)$");
	return (!r1.test(feld) && r2.test(feld));
}