
function verifymonat(monat,name)
{
	if (monat < 0 || monat > 11)			// check Monatbereich
	{
		alert("Feld "+ name + ": Monat muss zwischen 0 und 11 sein.");
		return false;
	}
}

function verifydatum(datum,name)
{
	var error = "";
	var datePat = /^(\d{1,2})(\.)(\d{1,2})\2(\d{2}|\d{4})$/;
	var matchArray = datum.match(datePat); // ist das format ok?
	
	if (matchArray == null)
	{
		error = "Feld "+ name + ": ungültiges Datumformat."
		return error
	}
	tag = matchArray[1];
	monat = matchArray[3];
	jahr = matchArray[4];
	
	if (monat < 1 || monat > 12)			// check Monatbereich
	{
		error = "Feld "+ name + ": Monat muss zwischen 1 und 12 sein.";
		return error;
	}
	
	if (tag < 1 || tag > 31)				// check Tagebereich
	{
		error = "Feld "+ name + ": Tag muss zwischen 1 und 31 sein";
		return error;
	}
	
	if ((monat==4 || monat==6 || monat==9 || monat==11) && tag==31) // check Monate mit nur 30 Tagen
	{
		error = "Feld "+ name + ": Monat "+monat+" hat nicht 31 Tage!"
		return error
	}
	
	if (monat == 2)						// check fuer 29. Februar
	{
		var isleap = (jahr % 4 == 0 && (jahr % 100 != 0 || jahr % 400 == 0));
		if (tag > 29 || (tag == 29 && !isleap))
		{
			error = "Feld "+ name + ": Februar " + jahr + " hat nicht " + tag + " Tage!";
			return error;
		}
	}
	return error;  // Datum ist gueltig
}

function verifyzahl(zahl,name)
{
	var bereich = "0123456789";
	var punkt = 0
	for (var i = 0; i < zahl.length; i++)
	{
		if (bereich.indexOf(zahl.charAt(i)) == -1)
		{
			if (zahl.charAt(i) == "." && punkt < 1)
			{
				punkt = punkt + 1;
			}
			else
			{
				alert("Ungültiges Format im Feld " +name);
				return false;
			}
		}
	}
}

function verifyform(form)

// -------------------------------------------------------------------------------------------------
// Funktionsname:	verifyform
// 
// Parameter:		form
//
// Beschreibung:	Prueft alle FormularFelder welche mit p<feldname> anfangen und der Input type=text ist.
//
// Rueckgabewert:	TRUE = Formular OK
//					FALSE = Formular nicht OK
//					
// Richtlinie		p_ = Pflichtfelder
// Feldname:		w_ = Wunschfelder
//					h_ = Versteckete Felder / Type=hidden
//					m_ = E-Mail
//					d_ = Datum
//					n_ = Numerisch
//					o_ = Monat 0-11
//
// Beispiel:		<input type=text name=p_Name>	--> Pflichtfeld
//					<input type=text name=w_Name>	--> Wunschfeld
// 
// Version:			V1.02
//
// Aenderungen:		@1: 14.7.2000, Alle Feldnamen, muessen mit dem Buchstaben inkl. "_" anfangen
//
{
	for (var i=0; i < form.elements.length; i++)
	{
		str_array = form.elements[i].name.split("_");
		if(str_array[0].length > 0 && str_array[0].length < 4)	// Unterstrich ist auf Pos. 2,3 oder 4
		{
// -------- auf Pflichtfeld	pruefen -------------------------------------------------------------
			if (str_array[0].match(/p/))					// Pflichtfeld
			{
				if (!form.elements[i].value)		// Pflichtfeld und leer
				{
					error = "Pflichtfeld "+str_array[1].toUpperCase()+", bitte eingeben!"
					alert (error);
					form.elements[i].focus();
					return false;
				}
			}
			
			if (form.elements[i].value)					// Feld ist nicht leer
			{
// ------------ Datum pruefen -------------------------------------------------------------------
				zeichen_d=str_array[0].match(/d/);		// Datum pruefen
				if (str_array[0].match(/d/))
				{
					error = verifydatum(form.elements[i].value,str_array[1])
						if (error != "")
						{
							alert(error);
							form.elements[i].focus();
							return false;	
						}
				}
// ------------ Monatnummer pruefen (0-11) --------------------------------------------------------------
				if (str_array[0].match(/o/))
				{
					if (verifyzahl(form.elements[i].value,str_array[1]) == false)
					{
						form.elements[i].focus();
						return false;
					}	
					else
					{
						if (verifymonat(form.elements[i].value,str_array[1]) == false)
						{
							form.elements[i].focus();
							return false;
						}
					}
				}				
// ------------ EMail pruefen -------------------------------------------------------------------
				if (str_array[0].match(/m/))
				{
					if (form.elements[i].value.indexOf("@",1) > -1)	//irgendwo an der 2. Position muss sich "@" befinden
					{				
						if (form.elements[i].value.indexOf(".",form.elements[i].value.indexOf("@")+1) > -1)	//ab Positon von "@" + 1 muss ein Punkt folgen
						{
							//alert("E-Mail Adresse ok");
						}
						else
						{
							alert("Ungültiges Format in der E-Mail Adresse.");
							form.elements[i].focus();
							return false;
						}
					}
					else
					{
						alert("Ungültiges Format in der E-Mail Adresse.");
						form.elements[i].focus();
						return false;
					}
				}
// ------------ Numerisch pruefen --------------------------------------------------------------
				if (str_array[0].match(/n/))
				{
					if (verifyzahl(form.elements[i].value,str_array[1]) == false)
					{
						form.elements[i].focus();
						return false;
					}
				}
// ---------------------------------------------------------------------------------------------
			}
		}
	}
	return true;
}
