function isInArray(elem,arr)
{
	for(var i=0;i<arr.length;i++)
	{
		if(arr[i] == elem)
			return true;
	}
	return false;
}

function intZahltest(zahl)
{
	
	var erg = zahl.search(/[^0-9]/);  	// alles ausser Ziffern und Punkt bildet keine Zahl
	if(erg != -1)
		return false;
	return true;
}

function rightEmail(email)
{
	var reg = /.+@[a-zA-Z0-9_\-]+\.[A-Za-z]+/;
	if(!reg.test(email))	// keine gültige Emial-Adresse
	{
		return false;
	}
	return true;
}

function rightPLZ(plz)
{
	var reg1 = /[0-9]{5}/;
	if(!reg1.test(plz))	// Postleitzahl muss 5 Zahlen enthalten
	{
		return false;
	}

	return true;
}

function datumtest(d)
{
	var jetzt = new Date();
	var jahr = jetzt.getYear();
	if(jahr < 100) jahr += 1900;

	var datum = d.value.split(".");
	if(datum.length != 3)
	{
		alert("Datum bitte in der Form TT.MM.JJJJ angeben!");
		d.focus();
		d.select();
		return false;
	}
	
	if(!intZahltest(datum[2]))
	{
		alert("Keine korrekte Jahresangabe!");
		d.focus();
		d.select();
		return false;
	}
	var year = parseInt(datum[2]);
	if((year%4) == 0)
		var month = new Array(31,29,31,30,31,30,31,31,30,31,30,31);
	else
		var month = new Array(31,28,31,30,31,30,31,31,30,31,30,31);
			
	if((!intZahltest(datum[1])) || (datum[1] < 1) || (datum[1] > 12))
	{
		alert("Keine korrekte Monatsangabe!");
		d.focus();
		d.select();
		return false;
	}
	var monat = parseInt(datum[1]);
		
	if((!intZahltest(datum[0])) || (datum[0] < 1) || (datum[0] > month[monat-1]))
	{
		alert("Keine korrekte Tagesangabe!");
		d.focus();
		d.select();
		return false;
	}
	return true;
}

function checkEmailForm(f,fields)
{
	var e = f.elements;
	var j = 0;	// zaehlt Array
	for(var i=0;i<e.length;i++)
	{
		var elem = e[i];

		if(isInArray(elem.name,fields))		// nur alle notwendigen Felder pruefen
		{
			if((elem.type == "text") || (elem.type == "textarea"))
			{
				if(elem.value == "")
				{
					alert("Bitte alle mit einem * gekennzeichneten Felder ausfüllen.");
					elem.focus();
					elem.select();
					return false;
				}
				if((elem.name == "PLZ") && !rightPLZ(elem.value))
				{
					alert("Bitte eine korrekte PLZ angeben!");
					elem.focus();
					elem.select();
					return false;
				}
				if((elem.name == "email") && !rightEmail(elem.value))
				{
					alert("Bitte eine korrekte Email-Adresse angeben!");
					elem.focus();
					elem.select();
					return false;
				}
			}
			else if(elem.type == "select-one")
			{
				var sel = elem.selectedIndex;

				if(elem.options[sel].value == "")
				{
					alert("Bitte alle mit einem * gekennzeichneten Felder ausfüllen.");
					elem.focus();
					elem.selectedIndex = sel;
                        		return false;
				}
			}
			else if(elem.type == "checkbox")
			{
				if(!elem.checked)
				{
					alert("Bitte alle mit einem * gekennzeichneten Felder ausfüllen.");
                        		return false;
				}
			}

			else if(elem.type == "radio")
			{
				var radio_name = elem.name;
				var check = false;

				var k = i;
				while(f.elements[k].name == radio_name)	// nach oben schauen
				{
					if(f.elements[k].checked == true)
					{
						check = true;
					}
					k--;	
				}
				
				var j = i + 1;
				while(f.elements[j].name == radio_name)	// nach unten
				{
					if(f.elements[j].checked == true)
					{
						check = true;
					}
					j++;	
				}

				if(check == false)
				{
					alert("Bitte alle mit einem * gekennzeichneten Felder ausfüllen.");
                        		return false;
				}
			}
		}
	}
	return true;
}

function checkForm(f)
{
	var fields = new Array("anzahl","anrede","vorname","nachname","strasse","plzort","tel","email");

	if(checkEmailForm(f,fields) == false)
	{
		return false;
	}

	return true;
}
