function check_equal_type(typ)
{
  if (typ=="button") return false;
  //if (typ=="hidden") return false;
  if (typ=="reset")  return false;
  if (typ=="submit") return false;
  return true;
}

function value_is_empty(checkobj)
{
  if ((checkobj.type=="text")             && (checkobj.value==""))        return true;
	if ((checkobj.type=="hidden")           && (checkobj.value==""))        return true;    
  if ((checkobj.type=="password")         && (checkobj.value==""))        return true;
  if ((checkobj.type=="textarea")         && (checkobj.value==""))        return true;
  if ((checkobj.type=="select-one")       && (checkobj.selectedIndex==0)) return true;
  if ((checkobj.type=="select-multiple")  && (checkobj.selectedIndex==0)) return true;  
// Wenn eine Checkbox mitgegeben wird, so muss als Value "true" stehen
  if ((checkobj.type=="checkbox")         && (checkobj.checked==false))    return true;
// radiobutton wurde noch nicht integriert (technischer Aufwand)
  return false;
}
function check_form_values(x_formname)
{
  var checkobj;
  var errormsg, errorcount;
  var strexpact, strexpact_value, strexpact_tz, strlanguage;
  var iexpact, istrstart,ilanguage;    
  var arexpacted = new Array();
	var arexpacted_value = new Array();  
	
	message 			= new Array();
	message[0]		= new Array();
	message[0][0] = "Ihr Formular wurde nicht vollständig ausgefüllt!\nFolgende Angaben sind noch notwendig oder fehlerhaft:\n\n";
	message[0][1] = "Your form was not filled out correctly!\nThere is necessary information missing\nin the following boxes:\n\n";
	message[1]		= new Array();
	message[1][0] = " (nur nummerische Eingabe erlaubt [z.B 3.20])\n";
	message[1][1] = " (only numeric values allowed [e.g 3.20])\n";
	message[2]		= new Array();
	message[2][0] = "\nDas Formular kann erst abgeschickt werden,\nwenn alle entsprechenden Felder ausgefüllt sind.";
	message[2][1] = "\nIn order to submit your form, these boxes\nhave to be filled out in full.";

  errorcount = 0;
    
// Prüfende Element aus Variable ermitteln
  if (x_formname=="")
  { 
  	strexpact   		= document.forms[0].x_expact.value; 
 		strexpact_value = document.forms[0].x_expact_value.value; 
		strexpact_tz   	= document.forms[0].x_expact_tz.value;	
		if (document.forms[0].x_language)	
			ilanguage		  = document.forms[0].x_language.value;	
		else
			ilanguage			= 0;
  }
  else
  { 
		strexpact   		= "document."+x_formname+".x_expact.value";  	
		strexpact_value = "document."+x_formname+".x_expact_value.value";  	
		strexpact_tz   	= "document."+x_formname+".x_expact_tz.value";			
		strlanguage   	= "document."+x_formname+".x_language";					
    strexpact   		= eval(strexpact);   
    strexpact_value	= eval(strexpact_value);
    strexpact_tz   	= eval(strexpact_tz);
    if (eval(strlanguage))
    	ilanguage   	= eval(strlanguage+".value");        
    else
    	ilanguage=0;
  }
// Kopf für die Fehlermeldung  
  errormsg = message[0][ilanguage];
  
// Ermitteln aller Felder des Formulars  
  iexpact 	= 0;
  istrstart	= 0;
  for (i=0;i<strexpact.length;i++)
  {
  	if (strexpact.substr(i,1)==strexpact_tz)
  	{
  		var NeuesElement = arexpacted.push(strexpact.substring(istrstart,i));
  		istrstart 	 =i+1;
  		iexpact			 =iexpact+1;
  	}
  }
  if (strexpact.length>0) 			var NeuesElement = arexpacted.push(strexpact.substring(istrstart,i));  

// Ermitteln aller Feldbezeichnungen des Formulars  
  iexpact 	= 0;
  istrstart	= 0;
  for (i=0;i<strexpact_value.length;i++)
  {
  	if (strexpact_value.substr(i,1)==strexpact_tz)
  	{
  		var NeuesElement = arexpacted_value.push(strexpact_value.substring(istrstart,i)); 		  		
  		istrstart 	 =i+1;
  		iexpact			 =iexpact+1;
  	}
  }  
	if (strexpact_value.length>0) var NeuesElement = arexpacted_value.push(strexpact_value.substring(istrstart,i));  

// Auf Eingabewerte prüfen  
  for (i=0;i<arexpacted.length;i++)
  {
  	feldname=arexpacted[i];  		
  	if (arexpacted[i].substr(0,1)=="#")	feldname=arexpacted[i].substr(1,arexpacted[i].length-1);
  	if (x_formname=="")
    { 
    	checkobj="document.forms[0]." + feldname; 
    }
		else
    { 
    	checkobj="document."+x_formname+"."+feldname; 
    }   
		checkobj=eval(checkobj);
    if (checkobj) 
	  {	  	
	    if (check_equal_type(checkobj.type))
		  {	  	
		    if (value_is_empty(checkobj)) 
				{
					errorcount = errorcount + 1;
					if (arexpacted_value[i]) 
						errormsg   = errormsg + errorcount + ". " + arexpacted_value[i] + "\n";
					else
						errormsg   = errormsg + errorcount + ". " + arexpacted[i] + "\n";
				}
				else
				{
					if (arexpacted[i].substr(0,1)=="#")
					{
						if (isNaN(checkobj.value))
						{
							errorcount = errorcount + 1;
							if (arexpacted_value[i]) 
								errormsg   = errormsg + errorcount + ". " + arexpacted_value[i] + message[1][ilanguage];
							else
								errormsg   = errormsg + errorcount + ". " + arexpacted[i] + message[1][ilanguage];
						}
					}
				}
	  	}	  
  	}
  	else
			break;
	}
// Fussteil der Fehlermeldung	
 	errormsg = errormsg + message[2][ilanguage];
 	
// Ausgabe einer Fehlermeldung, wenn Fehler vorhanden  
  if (errorcount > 0)
  {
    alert(errormsg);
    return false;
  }
  return true;
}
