function valid_form(f)
{

	if (!(f.frage[0].checked || f.frage[1].checked)) {
	   f.frage[0].focus();
	   msg = "Bitte geben Sie Ihre Antwort für unsere Frage an!";
	   self.status = msg;
	   alert(msg);
	   return false;
	}
	
	if ( (f.anrede.value != "Herr") && (f.anrede.value != "Frau") ) {
		alert("Bitte geben Sie Ihre Anrede ein!");
		f.anrede.focus();
		return false;
	}
	
	if (!DDXLen(f.vorname,1,100,"Bitte geben Sie Ihren Vornamen ein!")) {
		f.vorname.focus();
		return false;
	}

	if (!DDXLen(f.nachname,1,100,"Bitte geben Sie Ihren Nachnamen ein!")) {
		f.nachname.focus();
		return false;
	}

	if (!DDXLen(f.strasse,1,100,"Bitte geben Sie Ihre Strasse ein!")) {
		f.strasse.focus();
		return false;
	}

	if (!DDXLen(f.plz,1,100,"Bitte geben Sie Ihre PLZ ein!")) {
		f.plz.focus();
		return false;
	}

	if (!DDXLen(f.ort,1,100,"Bitte geben Sie Ihren Ort ein!")) {
		f.ort.focus();
		return false;

	}

	if (f.land.value == "keine Angabe") {
		alert("Bitte geben Sie Ihr Land an!");
		f.land.focus();
		return false;
	}

	if (!DDXEMail(f.mail,"Bitte geben Sie eine vollständige e-mail-Adresse mit @ und . ein!")) {
		f.mail.focus();
		return false;
	}
	
	if (!f.Teilnahmebedingungen_akzeptiert.checked) {
	   f.Teilnahmebedingungen_akzeptiert.focus();
	   msg = "Sie müssen die Teilnahmebedingungen akzeptieren, da sonst eine Teilnahme am Gewinnspiel nicht möglich ist!";
	   self.status = msg;
	   alert(msg);
	   return false;
	}	

	if (!DDXLen(f.Sicherheitscode,1,100,"Bitte geben Sie den angezeigten Sicherheitscode ein!")) {
		f.Sicherheitscode.focus();
		return false;
	}

	return true;
}

function DDXLen(control,minLen,maxLen,errmsg)
{
	var s = control.value;
	if ( s.length < minLen || s.length > maxLen ) 
	{
		self.status=errmsg;
		control.focus();
		control.select();
		alert(errmsg);
		return false;
	}
	return true;
}
	
function DDXInt(control,min,max,errmsg)
{
	var s = control.value;
	
	if ( isNaN (s,10)  )
	{
		self.status=errmsg;
		control.focus();
		control.select();
		alert(errmsg);
		return false;
	}
	
	if ( s.valueOf() < min || s.valueOf() > max )
	{
		self.status=errmsg;
		control.focus();
		control.select();
		alert(errmsg);
		return false;
	}
	return true;
}

function DDXEMail(control, errmsg)
{
	var s = control.value;
	var rE = /(\w)+(\w\.)*@.*\.\w+/;
	var mArr = s.match(rE);
	if (mArr == null) 
	{
		self.status=errmsg;
		control.focus();
		control.select();
		alert(errmsg);
		return false;
	}	

	return true;		
}

function DDXRExp(control, rE, errmsg)
{
	var s = control.value;
	var mArr = s.match(rE);
	if (mArr == null) 
	{
		self.status=errmsg;
		control.focus();
		control.select();
		alert(errmsg);
		return false;
	}	

	return true;		
}
