var requiredFields	= new Array ("vorname", "name", "email", "gebdat", "kennung", "passwort", "passwort1", "adresse", "plz", "ort", "land", "agb");
//var requiredFields	= new Array ("vorname", "name", "gebdat", "kennung", "passwort", "passwort1", "adresse", "plz", "ort", "land", "agb");

function checkForm(which, step, check, action) {
	var error = 0;
	var field_select = 0;
	var j = 0;
	var address_contains_streetno = false;

	var checkFilters = new Array();
	checkFilters["email"] = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
	checkFilters["kennung"] = /^([^ \t\r\n\v\f;]{3,})+$/;
	checkFilters["passwort"] = /^([^ \t\r\n\v\f;]{3,})+$/;

	var checkExclude = new Array();
	checkExclude ["gebdat"] = "exclude";
	checkExclude ["email"] = "exclude";
	
	which.gebdat.value = which.gebtag.value + '.' + which.gebmonat.value + '.' + which.gebjahr.value;

	pass = which.passwort.value;

	which.step.value = step;
	which.action.value = action;
	
	var type	= which.type.value;
	
	// A string may only be composed of letters on the terminal keyboard
	var m_feldnamen= new Array("Vorname", "Name", "E-Mail", "Geburtsdatum", "Username", "Passwort", "Passwort", "Straße", "PLZ", "Ort", "Land", "AGB");
	var m_allowed_letters = "1234567890abcdefghijklmnopqrstuvwxyzüöäß@/,.-_ ";
	var m_illegal_letter = false;
	var m_errormsg = '';

	for(i=0; i<requiredFields.length; i++) {
		if ((requiredFields[i]!="agb")&&(requiredFields[i]!="passwort1")) {	// these fields will not be checked
			var tempObject = eval("which."+ requiredFields[i]);
			m_valuestring=tempObject.value.toLowerCase();
			for(j=0; j<m_valuestring.length;  j++) {
				if (m_allowed_letters.indexOf(m_valuestring.charAt(j))==-1) {
					m_illegal_letter=true;
					if (m_errormsg!='')
						m_errormsg+='\n';
					m_errormsg+=m_feldnamen[i]+' enthält ungültige Zeichen.';
					break;
				}
			}
		}
	}
	
	if (m_illegal_letter) {
		m_errormsg+='\n'+'Nur alphanummerische Zeichen, Leerzeichen und die Zeichen @/,.-_ sind erlaubt!';	
	}
	
	// username and password must be different
	if ((which.kennung.value!='')&&(which.passwort.value!='')) {
		if (which.kennung.value.toLowerCase()==which.passwort.value.toLowerCase()) {
			if (m_errormsg!='')
				m_errormsg+='\n';
			m_errormsg+='Der Benutzername und das Passwort dürfen nicht ident sein!';	
		}
	}
	
	if (m_errormsg!='') {
		error=1;
		alert(m_errormsg);
	}
	
	if (type == "change" && step == "0" && error==0) {
		for (i=0; i<requiredFields.length; ++i) {
			var tempObject = eval("which." + requiredFields[i]);
			newField	= tempObject.name + "_new";
			var changeObject	= eval("which." + newField);
			changeObject.value = tempObject.value;
		}
		which.newsletter_new.value = which.newsletter.value;
		which.gebtag_new.value = which.gebtag.value;
		which.gebmonat_new.value = which.gebmonat.value;
		which.gebjahr_new.value = which.gebjahr.value;
	}
		
	if (step == 0 && check == "y" && error==0) {	
		for (i=0; i<requiredFields.length; ++i) {
			var tempObject = eval("which." + requiredFields[i]);
			imageName = tempObject.name + "_req";
			field = tempObject.name;
			exclude = checkExclude[field];
			if (!exclude && (((tempObject.type == "text" || tempObject.type == "password" || tempObject.type == "hidden") && tempObject.value == "") || (tempObject.type == "select-one" && tempObject.selectedIndex == 0))) {
				document[imageName].src = eval(imageName + ".src");
				error += 1;
				if (error == 1) field_select = i;
			} else {
				control = 0;
				// Wenn E-Mail leer, dann keine Prüfung
				if (field=="email") {
					if (tempObject.value=="")
						filter="";
					else
						filter = checkFilters[field];
				}
				else
					filter = checkFilters[field];
				if (filter && !filter.test(tempObject.value)) {
					document[imageName].src = eval(field + "_err" + ".src");
					error += 1;
					if (error == 1) field_select = i;
					control += 1;
				}
				if (control == 0) {
					if (tempObject.name == "passwort1" && tempObject.value != "" && tempObject.value != pass) {
						document[imageName].src = eval(field + "_err" + ".src");
						error += 1;
						if (error == 1) field_select = i;
					} 
					else if (tempObject.name == "adresse" && tempObject.value != "") {
						// in adresse muss hausnr. enthalten sein
						address_contains_streetno = false;
						for (j=0; j<tempObject.value.length; j++) {
							if (!isNaN(tempObject.value.charAt(j))) {
								address_contains_streetno = true;
								break;
							}
						}
						if (!address_contains_streetno) {
							document[imageName].src = eval(field + "_err" + ".src");
							error += 1;
						} else {
							document[imageName].src = eval("no_req" + ".src");
						}
							
					}
					else {
						if (tempObject.name == "gebdat" && tempObject.value != ".." && !checkDate(which)) {
							document[imageName].src = eval(field + "_err" + ".src");
							error += 1;
						} else {
							document[imageName].src = eval("no_req" + ".src");
						}
					}
				}
			}
		}
	}

	if (error != 0) {
		if (requiredFields[field_select]!='agb')	// focus auf checkbox liefert sonst fehler
			eval("which." + requiredFields[field_select] + ".focus()");
	} else {
		which.submit();
	} 
}

function focusUsername(which) {
	which.kennung.focus();
	which.kennung.select();
}

function checkNewsletter(which) {
	if(which.check_news.checked == true) {
		which.newsletter.value = "X";
	} else {
		which.newsletter.value = "";
	}
}

function checkAGB(which) {
	if(which.check_agb.checked == true) {
		which.agb.value = "x";
	} else {
		which.agb.value = "";
	}
}

function clearField(field,str) {
	val	= field.value;
	if (val.match(str) == str)
		field.value = '';
}

function showFile(file) {
	url	= "/web/cont/"+file+".php";
	window.open(url, "Info", "width=620,height=480,resizeable=yes,scrollbars=yes").focus();

}

function checkDate(which) {
	day		= which.gebtag.value;
	month	= which.gebmonat.value;
	year 	= which.gebjahr.value;
	month = month - 1;  
	var tempDate = new Date(year,month,day);
	if ((year == tempDate.getFullYear()) && (month == tempDate.getMonth()) && (day == tempDate.getDate())) {
		return true;
	} else {
		return false;
	}
}
