// JavaScript Document
// Copyright 2009  Dieter Mähl   
//  Prüfung Formularfelder
// letzte Änderung : 09.06.2009
// --------------------------------------

<!--
	//Feldnamen	
var feldName = new Array("Anrede","Name","Vorname","Telefon","Mail","Nachricht");
	//Feldbezeichnungen für Anzeige bei Fehler	
var feldBez = new Array("Anrede","Name","Vorname","Telefon","Mail","Nachricht");
	// Kennzeichen Prüfung p=Pfichtfeld w=Wahlfeld leer = keine	
var feldKzprf_Art = new Array("keine","Pflicht","keine","Wahl","Wahl","Pflicht");
	// Kennzeichen Prüfung auf
	//		N=numerisch M= Mail D=Datum leer= keine	
var feldKzprf_Type = new Array("keine","keine","keine","Numerisch","Mail","keine");

//---------------------------------------------------------------
// Rücksetzen eingabefelder
//---------------------------------------------------------------
function clearFelder(from){

 	for (var i = 0; i < feldName.length; i++) 
  	{ 
	  	// check formularfelder
		if (check_formularfeld(from,feldName[i]))
		{
 			from.elements[feldName[i]].value = "";
		}
	}
	return;
}
// Prüfung ganze Zahlen
function isInteger(zahl){
	var i;
    for (i = 0; i < zahl.length; i++){   
        // Check that current character is number.
        var c = zahl.charAt(i);
        if (((c < "0") || (c > "9"))) return false;
    }
    // All characters are numbers.
    return true;
}

// Prüfung Datum liegt es in der Zukunft?
function Check_Datum (Datum) {
	var jetzt = new Date();
	
				  Tag = Datum.substr(0,2);
				Monat = Datum.substr(3,2);
				 Jahr = Datum.substr(6,4);
     USDatum = Monat + "/" + Tag + "/" + Jahr;
	 
      return (Date.parse(USDatum) < jetzt.getTime());
 }
 // Prüfung Datum formal nach Schema tt.mm.jjjj
 function Check_Datum_ok (Datum) {
	
	 date_schema = /^(0[1-9]|[1-2][0-9]|3[01])\.(0[1-9]|1[0-2])\.(\d\d\d\d)/;
			if (date_schema.test(Datum))
        		{
       	 			return  true;
				}
    return false;
}
// Prüfung Datum von größer / gleich bis 
function check_Datum_Compare (Datumvon, Datumbis) {
	
				  Tagvon = Datumvon.substr(0,2);
				Monatvon = Datumvon.substr(3,2);
				 Jahrvon = Datumvon.substr(6,4);
				 Tagbis  = Datumbis.substr(0,2);
				Monatbis = Datumbis.substr(3,2);
				 Jahrbis = Datumbis.substr(6,4);
     USDatumvon = Monatvon + "/" + Tagvon + "/" + Jahrvon;
	 USDatumbis = Monatbis + "/" + Tagbis + "/" + Jahrbis;
	 
      return (Date.parse(USDatumbis) < Date.parse(USDatumvon));
 }
 
// Prüfung Zahl numerisch ganz oder mit komma oder mit punkt
function check_zahl(zahl) {
      var anum = /(^\d+$)|(^\d+\.\d+$)|(^\d+\,\d+$)/
    if (anum.test(zahl))
    	{
       	 return  false
		}
    return true
    
}
// Prüfung ob feld ein feld aus dem Formular ist
function check_formularfeld(from,feld) {
	
	
	for (var i = 0; i < from.elements.length; i++) 
  	{ 
	  if (feld == from.elements[i].name)
	    {
			return true
		}
	}
  return false
}

// Prüfung Email korrekt
function VerifyEmail(Email) {
 if (window.RegExp) {
  var reg1str = "(@.*@)|(\\.\\.)|(@\\.)|(\\.@)|(^\\.)";
  var reg2str = "^.+\\@(\\[?)[a-zA-Z0-9\\-\\.]+\\.([a-zA-Z]{2,4}|[0-9]{1,4})(\\]?)$";
  var reg1 = new RegExp(reg1str);
  var reg2 = new RegExp(reg2str);
  if (!reg1.test(Email) && reg2.test(Email)) {
   return true
  }else {
   return false
  }
 }else {
  if (Email.indexOf("@") >= 0) {
   return true
  }else {
   return false
  }
 }
}

// Prüfung Postleitzahl
function check_plz(plz){
	var reg_ex_plz=/\d{5}/;
	if (reg_ex_plz.test(plz)) {
		return false
	}
	return true
}
//--------------------------------------
// Hauptroutine Prüfung Formularfelder
//--------------------------------------
function check_form(from) {
		
	// Infofeld Fehlermeldung Pflichtfelder
		var msg_pflicht_info = "Bitte alle Pflichtfelder ausfüllen! \n";
	// Infofeld Fehlermeldung Wahlfelder
		var msg_wahl_info = "Bitte Wahlfelder ausfüllen \n";
		var msg_pflicht 	= "";
		var msg_wahl 		= "";
		var msg_num  		= "";
		var anz_wahlfeld 	= 0;
		var focus_feld 		= "";
		var fehler			= false;
		var fehler_msg		= "";
		


 for (var i = 0; i < feldName.length; i++) 
  { 
  	// check formularfelder
	if (check_formularfeld(from,feldName[i]))
	{
  		
		// Prüfung Pflichtfelder bei listenauswahl
		if (feldKzprf_Art[i] == "sp")
  			{
				fehler = true;
				for (k = 0; k < from.elements[feldName[i]].length; ++k)
   					 if (from.elements[feldName[i]].options[k].selected == true)
      					fehler = false;								
				if (fehler)
					msg_pflicht = msg_pflicht +  feldBez[i] + "\n";
				
			}
		
		// Prüfung Pflichtfelder
		if ((from.elements[feldName[i]].value == '') && feldKzprf_Art[i] == "Pflicht")
  			{
				fehler = true;
				msg_pflicht = msg_pflicht +  feldBez[i] + "\n";
			}
 	
		// Prüfung Wahlfelder
		if ((from.elements[feldName[i]].value == '') && feldKzprf_Art[i] == "Wahl")
  			{   
				anz_wahlfeld = anz_wahlfeld + 1; 
		   	 	if (anz_wahlfeld > 1)
			 	{	fehler = true;
			    	msg_wahl = msg_wahl + "oder " + feldBez[i] + "\n" ;
			 	} else
			   		{
						msg_wahl = "        " + msg_wahl +  feldBez[i] + "\n" ; 
			   		}
			 
			}
		// Prüfung auf numerisch
		
 		if ((check_zahl(from.elements[feldName[i]].value)) && (from.elements[feldName[i]].value !='') && feldKzprf_Type[i] == "Numerisch")
  			 {	fehler = true;
				msg_num =  msg_num + "Feld " + feldBez[i] + " ist nicht numerisch! \n";
  			 }
		// Prüfung auf Postleitzahl
		
 		if ((check_plz(from.elements[feldName[i]].value)) && (from.elements[feldName[i]].value !='')
			 && feldKzprf_Type[i] == "Postleitzahl")
  			 {	fehler = true;
				msg_num =  msg_num + "Feld " + feldBez[i] + " ist keine Postleitzahl! \n";
  			 }
		// Prüfung auf E-Mail
		if (feldKzprf_Type[i] == "Mail")
			{
 				if (!VerifyEmail(from.elements[feldName[i]].value) && from.elements[feldName[i]].value !='') 
  					{	fehler = true;
					msg_num =  msg_num + "Feld " + feldBez[i] + " ist keine gueltige E-Mail Adresse \n";
  					}
			}
	
		// Prüfung auf Datum
		if (feldKzprf_Type[i] == "Datum")
			{ if (!Check_Datum_ok(from.elements[feldName[i]].value) && from.elements[feldName[i]].value !='')
 				{	fehler = true;
					msg_num =  msg_num + "Feld " + feldBez[i] + " Datum ist nicht korrekt! \n";
				} else
				  {
					if (Check_Datum(from.elements[feldName[i]].value) && from.elements[feldName[i]].value !='') 
  						{	fehler = true;
							msg_num =  msg_num + "Feld " + feldBez[i] + " Datum muß in der Zukunft liegen \n";
  						}
				  }
					
			}
	
		// Platzierung Cursor	
		if ((focus_feld == "") && (fehler))
	 	{
		 	focus_feld = feldName[i];
	 	}
	}
 }
 
  	if (fehler)
   	{
	   if (msg_pflicht != "")
	   	{
			fehler_msg = fehler_msg + msg_pflicht_info + msg_pflicht;
		}
		if (anz_wahlfeld > 1)
	   	{
			fehler_msg = fehler_msg + msg_wahl_info + msg_wahl;
		}
	 	alert(fehler_msg + msg_num);
  		from.elements[focus_feld].focus();
  		return false;
	   
   }

   return true;
}

//-->



