<!-- global_form_tools -->
<!--

/**
 * Check values of form fields. Use this in event handlers (onSubmit, ...).
 * 
 * @param form The form to be checked. (mandatory)
 * @param submit True, if the form should be submitted from within this function. (optional)
 * @param fields List of property sets: (fieldname,constraint,label,field), with
 *               fieldname: name of the form field
 *               constraint: one of ('empty'|'mail'|'date'|'user'|'pass'|'minXXX'|'maxXXX'|'integer'|'fileext(extlist)') (mandatory)
 *               						 with
 * 														minXXX: e.g. min70, maxXXX: e.g. max100
 *     												extlist: a comma-separated list of file extensions
 *               label: label of the form field, shown to the user (mandatory)
 *               field: reference to the field (optional)
 *               Example: ..., 'firstname','empty','Vorname', document.myForm.firstname, ...
 *
 * @return True, if all form fields are filled in correctly.
 *         False, if values are missing or incorrect. 
 * @todo check if the field reference may be replaced with eval()
 * @todo check requirements from other users and use of optional paramaters
 */
var languagecode = "";

function FORM_checkForm() 
{
	
	
  var rname,constraint,test;
  var errors_empty='', errors_mail='', errors_int='', errors_min='', errors_max='', errors_user='', errors_pass='', errors_date='', errors_fileext="";
  var args = FORM_checkForm.arguments;
  var errMsg = '';
  var formToSubmit = args[0];
  var i=1;
  var shouldSubmit = true;
  var value;
  var highlighted = false;
  var field;
  var language = 'de';
	// wenn Übergabe eines array: bei selbsterstellten Formularen
 	if (typeof formToSubmit == "object") {
		if(args.length > 1)
			language = args[1].toLowerCase();
		args = args[0];
		//alert("languagecode: -" + language+"-");
		formToSubmit = args[0];
	}
	
  
  if((args.length-2)%4==0)
  {
  	i = 2;
  	shouldSubmit = args[1];
  }
  
  for(i; i<(args.length-1); i+=4) 
  {
	  	fieldname = args[i];
		constraint = args [i+1];
		label = args[i+2];
		field = args[i+3];
		
		//alert('fieldname: ' + fieldname + ' label: ' + label + ' field: ' + field);
		
		//alert("formular: " + formToSubmit + " fieldname: " + fieldname + " constraint: " + constraint +" label: " + label + " field: " + field);
		if (!field)
		{
			field=MM_findObj(args[i]);
		}
		if (typeof(field) != 'object')
		{
			field = top.document.getElementsByName(fieldname)[0];
		}
		if (field) 
		{
		  	field2 = field[0];
			if (field2) {
				if (field2.type == "radio") {
					radio = true;
					field = field2;
				}
			}
	  		value = field.value;
	    if (constraint == "empty") // String ohne Leerzeichen am Anfang/Ende auf Länge > 0 prüfen	
		  {	    
				//if ( field.type = "select-one" ) {
				//	errors_empty += '- ' + label + '\n';
			  	//	highlighted = highlighted || FORM_highlight(field, highlighted);
				//}
				
				if (field.type == "radio") {
						radios = document.getElementsByName(field.name);
						//alert('radio checked übeprüfen :' + field.name + " Anzahl: " + radios.length);
						oneChecked = false;
						k = 0;
						for(k; k<(radios.length); k+=1)
						{
							if (radios[k].checked) {
								oneChecked = true;
							}
						}
						
						if (oneChecked == false) {
							//alert("label: " + label);
							errors_empty += '- ' + label + '\n';
			  				highlighted = highlighted || FORM_highlight(field, highlighted);	
						}
						
				}
				if (field.type == "checkbox") {
					if (field.checked == false) {
						errors_empty += '- ' + label + '\n';
			  			highlighted = highlighted || FORM_highlight(field, highlighted);
					}
				}
				
				if ( STR_trim(value, ' ') == '') 
				{
			  	errors_empty += '- ' + label + '\n';
			  	highlighted = highlighted || FORM_highlight(field, highlighted);
			 	}
		  } 
		   else if (constraint == "select")
		  {
		  	if(field.selectedIndex == 0){
		  		errors_empty += '- ' + label + '\n';
				highlighted = highlighted || FORM_highlight(field, highlighted);
		  	}
		  }
		  else if (constraint == "mail") // Prüfen, ob Email plausibel
		  {
		  	if (! FORM_isEmailAddr(value)) 
		  	{
		  		errors_mail += '- ' + label + '\n';
		  		highlighted = highlighted || FORM_highlight(field, highlighted);
		  	}
		  }
		  else if (constraint == "date") // date
		  {
		    var date = STR_trim(value);
		  	if (! DATE_isValidDateFormat(date))
		  	{
		  		errors_date += '- ' + label + " (Format: " + DATE_getDateFormat() + ")\n";
		  		highlighted = highlighted || FORM_highlight(field, highlighted);		  	
		  	}
		  }
		  else if (constraint == "user") // user name
		  {
		    var user = STR_trim(value);
		  	if (user.length < 6) 
		  	{
		  		errors_user += '- ' + label + " (Mindestlänge!)\n";
		  		highlighted = highlighted || FORM_highlight(field, highlighted);
		  	}
		  	else if (! STR_hasSpecialChars(user))
		  	{
		  		errors_user += '- ' + label + " (kein Sonderzeichen!)\n";
		  		highlighted = highlighted || FORM_highlight(field, highlighted);		  	
		  	}
		  }
		  else if (constraint == "pass") // password
		  {
		    var pass = STR_trim(value);
		  	if (pass.length < 8) 
		  	{
		  		errors_pass += '- ' + label + " (Mindestlänge!)\n";
		  		highlighted = highlighted || FORM_highlight(field, highlighted);
		  	}
		  	else if (! STR_hasSpecialChars(pass))
		  	{
		  		errors_pass += '- ' + label + " (kein Sonderzeichen!)\n";
		  		highlighted = highlighted || FORM_highlight(field, highlighted);		  	
		  	}
		  	else if (! STR_hasDigits(pass))
		  	{
		  		errors_pass += '- ' + label + " (keine Ziffer!)\n";
		  		highlighted = highlighted || FORM_highlight(field, highlighted);		  	
		  	}
		  }
		  else if (STR_startsWith(constraint, "min")) // min. length
		  {
		    var constraintLength = constraint.substring(3,constraint.length);
				if (MM_minLength(STR_trim(value),MM_stringToInteger(constraintLength)))
				{
		  		errors_min += '- ' + label + ': ' + constraintLength +"\n";
		  		highlighted = highlighted || FORM_highlight(field, highlighted);
				}
		  }
		  else if (STR_startsWith(constraint, "max")) // max. length
		  {
		    var constraintLength = constraint.substring(3,constraint.length);
				if (!MM_maxLength(STR_trim(value), MM_stringToInteger(constraintLength)))
				{
		  		errors_max += '- ' + label + ': ' + constraintLength + "\n";
		  		highlighted = highlighted || FORM_highlight(field, highlighted);
				}
		  }
		  else if (constraint == "integer") // Prüfen, ob Ganzzahl
		  {
		  	if (!MM_isNumberInt(STR_trim(value))) 
		  	{
		  		errors_int += '- ' + label + '\n';
		  		highlighted = highlighted || FORM_highlight(field, highlighted);
		  	}
		  }
		  else if (STR_startsWith(constraint, "fileext(")) // erlaubte Dateiendungen
		  {
		  	var validExtensions = constraint.substring("fileext(".length, constraint.length-1);
		  	var extArray = STR_parseCommaSeparatedList(validExtensions); 
		  	if (! FORM_isValidFileExtension(STR_trim(value), extArray))
		  	{
		  		errors_fileext += '- ' + label + " (erlaubt: " + validExtensions + ")\n";
		  		highlighted = highlighted || FORM_highlight(field, highlighted);
		  	}
		  }
		  else
		  {
		  	// unknown constraint
		  	alert("Unknown constraint: " + constraint);
		  }
		}
  }
  if ((errors_empty != '') || (errors_mail != '') || (errors_int != '') || (errors_min != '') || (errors_max != '') || (errors_user != '') || (errors_pass != '') || (errors_date != '') || (errors_fileext != "")) 
  {
		errMsg = getErrorMessage(1001,language);
		if(errors_empty != '')
		{
  		errMsg+=getErrorMessage(1002,language) + errors_empty;
  	}
		if(errors_mail != '')
		{
      errMsg+=getErrorMessage(1003,language) + errors_mail;
    }
		if(errors_int != '')
		{
      errMsg+='\nIn folgenden Felder wurde keine Ganzzahl eingegeben:\n' + errors_int;
    }
		if(errors_min != '')
		{
      errMsg+='\nFür folgende Länge wurde die Mindestanzahl von Zeichen unterschritten:\n' + errors_min;
    }
		if(errors_max != '')
		{
      errMsg+='\nIn folgende Felder wurde die Höchstanzahl von Zeichen überschritten:\n' + errors_max;
    }
		if(errors_user != '')
		{
      errMsg+='\nIn folgenden Felder wurde kein gültiger Benutzername eingegeben:\n';
      errMsg+="(mind. 6 Zeichen, davon mind. 1 Sonderzeichen)\n" + errors_user;
    }
		if(errors_pass != '')
		{
      errMsg+='\nIn folgenden Felder wurde kein gültiges Passwort eingegeben:\n';
      errMsg+="(mind. 8 Zeichen, davon mind. 1 Sonderzeichen und mind. 1 Ziffer)\n" + errors_pass;
    }
		if(errors_date != '')
		{
      errMsg+='\nIn folgenden Felder wurde ein ungültiges Datum eingegeben:\n' + errors_date;
    }
		if(errors_fileext != "")
		{
      errMsg+='\nIn folgenden Felder wurde eine unerlaubte Dateiendung eingegeben:\n' + errors_fileext;
    }
    
		alert(errMsg);
		return false;
  } 
  else 
  {
    //alert(document.getElementsByName(formToSubmit)[0].name);
    if(shouldSubmit)	
    {
		  //alert("test");
		  // je nach nach Parameter1: ganzes Formular oder nur Name als String
		  if (typeof(formToSubmit) == 'object') 
		  {
				formToSubmit.submit(); 
		  }
		  else 
		  {
				document.getElementsByName(formToSubmit)[0].submit();
		  }
    }
    return true;
  }	
}

/**
 * Check if a file name has an extension that is supported.
 *
 * @param file The name of the file. May include a file path.
 * @param extensions Array of file extensions.
 * @return True, if the file has a valid extension.
 */
function FORM_isValidFileExtension(file, extensions)
{
  file = STR_trim(file.toLowerCase());  
	for (var i=0; i<extensions.length; i++)
	{
		if (STR_endsWith(file, "." + STR_trim(extensions[i].toLowerCase())))
		{
			return true;
		}
	}
	return false;
}

function FORM_isEmailAddr(email)
{
  var result = false
  var theStr = new String(email)
  var index = theStr.indexOf("@");
  if (index > 0)
  {
    var pindex = theStr.indexOf(".",index);
    if ((pindex > index+1) && (theStr.length > pindex+1))
    {
			result = true;
		}
 	}
 
 	return result;
}

function FORM_firstFocus()
{
   if (document.forms.length > 0)
   {
      var TForm = document.forms[0];
      for (i=0;i<TForm.length;i++)
      {
         if ((TForm.elements[i].type=="text")||
           (TForm.elements[i].type=="textarea")||
           (TForm.elements[i].type.toString().charAt(0)=="s"))
         {
            document.forms[0].elements[i].focus();
            break;
         }
      }
   }
}

/**
 * Set focus on the specified field and select the text, if the field supports text selection.
 * But only, if no other filed has already been highlighted.
 *
 * @param field Reference to the field. 
 * @param highlighted True, if another field has been highlighted.
 * @return True, if the specified field has been highlighted. 
 */
function FORM_highlight(field, highlighted)
{
	if (highlighted) {return false;}
  if (!field) {return false;}
  
	if ( field.type=="text" || field.type=="textarea" || field.type=="file" || field.type.toString().charAt(0)=="s")
	{
		field.focus();
		return true;
	}
	else
	{
		return false;
  }
}
function sendgeneratedform() {
		
	var check;
	var completestring = "";
	var checkstring;
	var field = "";
	var args = sendgeneratedform.arguments;
	var checkargs = new Array();
 	var formname = args[0];
 	var i=1;
	var j = 2;
	var check = true;
	
	top.document.getElementsByName(formname)[0].action = targetfeature;
	top.document.getElementsByName(formname)[0].target = "_top";
	
	
	if (typeof targetdestination!='undefined') {
		if (targetdestination!="") {
			top.document.getElementsByName(formname)[0].target = targetdestination;
		}
	}
	
	checkargs[0] = "document."+formname+".name";
	checkargs[1] = false; // should submit?
	
	  
	
	
if (args.length >= 2) {
	for(i=1; i<(args.length-1); i+=3) 
  {
		
		field = args[i];
		constraint = args[i+1]*1;
		fieldname = args[i+2];
		//alert("Typ von fieldname " + fieldname.type);

		// bei radiobuttons nimm erstes auftreten
		field2 = field[0];
		if (field2) {
			if (field2.type == "radio") {
				field = field2;
				//fieldname = field2.name;				

				fieldname = document.getElementsByName(field2.name)[0].alt;
			}
		}
		
		//alert("fieldname1:" + fieldname);
		if (fieldname == "" || fieldname == undefined) {
		
			fieldname = ""+field.name;
			idxStart = fieldname.indexOf("_") + 1;
			strLength = fieldname.length;
			if ((idxStart > -1)&&(strLength > 1)&&(fieldname.charAt(0)=="a")){
				fieldname = fieldname.substr(idxStart,strLength - idxStart);
			}
			//alert(fieldname);
		}
		

		checkargs[j] = ""+field.name;
	    checkargs[j+2] = fieldname;
		checkargs[j+3] = "document." + formname + "." + field.name;
		
		if (constraint == 1) // empty
		{	    
			checkargs[j+1] = "empty";
		}
		if (constraint == 2) // mail
		{	    
			checkargs[j+1] = "mail";
		}
		//alert("checkargs: " + checkargs[0] + "-" + checkargs[1] + "-" + checkargs[2] + "-" + checkargs[3] + "-" + checkargs[4] + "-" + checkargs[5]);
		j = j + 4;
	}
	
	// 02.06.05: languagecode im Header gesetzt fuer fremdsprachigen Fehlertext;
	check = FORM_checkForm(checkargs,languagecode);
	return check;
}	
		
}

function checkInputLength(a_oEvent, a_iLength, max) {
    iKeyCode = 0;

    if (navigator.appName == 'Netscape') {
        iKeyCode = a_oEvent.which;
    } else if (window.document.all) {
        iKeyCode = event.keyCode;
    }

    if ((a_iLength >= max) && (iKeyCode >= 32)) {
        return false;
    }
	else if ((a_iLength >= max) && (iKeyCode == 13)) {
		return false;
	}

   	return true;

}

function limitFormElementInputLength(form, element, max) {
	var field = document.forms[form].elements[element];
	if (field.value.length >= max) {
		field.value = field.value.substring(0, max - 1);
	}	
	return true;
}

function getErrorMessage(errorCode,language)
{
	
	if(language == 'en'){
		switch (errorCode)
		{ 
		case 1001:
		  return "Errors occurred when inputting form!\n";
		  break     
		case 1002:
		  return "\nFollowing fields must also be completed:\n";
		  break
		case 1003:
		  return "\nAn incorrect e-mail address was entered in the following fields:\n";
		  break
		default:
		  return "An error occurred";
		}
	}
	else{
		switch (errorCode)
		{
		case 1001:
		  return "Bei der Formulareingabe sind Fehler aufgetreten!\n";
		  break    
		case 1002:
		  return "\nFolgende Felder müssen noch ausgefüllt werden:\n";
		  break
		case 1003:
		  return "\nEs wurde eine falsche E-Mail Adresse angegeben:\n";
		  break
		default:
		  return "In der Formulareingabe ist ein Fehler aufgtereten";
		}
	}

}
// Formcheck returns only true
function FORM_checkForm2() 
{
	
	
  var rname,constraint,test;
  var errors_empty='', errors_mail='', errors_int='', errors_min='', errors_max='', errors_user='', errors_pass='', errors_date='', errors_fileext="";
  var args = FORM_checkForm2.arguments;
  var errMsg = '';
  var formToSubmit = args[0];
  var i=1;
  var shouldSubmit = true;
  var value;
  var highlighted = false;
  var field;
  var language = 'de';
	// wenn Übergabe eines array: bei selbsterstellten Formularen
 	if (typeof formToSubmit == "object") {
		if(args.length > 1)
			language = args[1].toLowerCase();
		args = args[0];
		//alert("languagecode: -" + language+"-");
		formToSubmit = args[0];
	}
	
  
  if((args.length-2)%4==0)
  {
  	i = 2;
  	shouldSubmit = args[1];
  }
  
  for(i; i<(args.length-1); i+=4) 
  {
	  	fieldname = args[i];
		constraint = args [i+1];
		label = args[i+2];
		field = args[i+3];
		
		//alert('fieldname: ' + fieldname + ' label: ' + label + ' field: ' + field);
		
		//alert("formular: " + formToSubmit + " fieldname: " + fieldname + " constraint: " + constraint +" label: " + label + " field: " + field);
		if (!field)
		{
			field=MM_findObj(args[i]);
		}
		if (typeof(field) != 'object')
		{
			field = top.document.getElementsByName(fieldname)[0];
		}
		if (field) 
		{
		  	field2 = field[0];
			if (field2) {
				if (field2.type == "radio") {
					radio = true;
					field = field2;
				}
			}
	  		value = field.value;
	    if (constraint == "empty") // String ohne Leerzeichen am Anfang/Ende auf Länge > 0 prüfen	
		  {	    
				//if ( field.type = "select-one" ) {
				//	errors_empty += '- ' + label + '\n';
			  	//	highlighted = highlighted || FORM_highlight(field, highlighted);
				//}
				
				if (field.type == "radio") {
						radios = document.getElementsByName(field.name);
						//alert('radio checked übeprüfen :' + field.name + " Anzahl: " + radios.length);
						oneChecked = false;
						k = 0;
						for(k; k<(radios.length); k+=1)
						{
							if (radios[k].checked) {
								oneChecked = true;
							}
						}
						
						if (oneChecked == false) {
							//alert("label: " + label);
							errors_empty += '- ' + label + '\n';
			  				highlighted = highlighted || FORM_highlight(field, highlighted);	
						}
						
				}
				if (field.type == "checkbox") {
					if (field.checked == false) {
						errors_empty += '- ' + label + '\n';
			  			highlighted = highlighted || FORM_highlight(field, highlighted);
					}
				}
				
				if ( STR_trim(value, ' ') == '') 
				{
			  	errors_empty += '- ' + label + '\n';
			  	highlighted = highlighted || FORM_highlight(field, highlighted);
			 	}
		  } 
		   else if (constraint == "select")
		  {
		  	if(field.selectedIndex == 0){
		  		errors_empty += '- ' + label + '\n';
				highlighted = highlighted || FORM_highlight(field, highlighted);
		  	}
		  }
		  else if (constraint == "mail") // Prüfen, ob Email plausibel
		  {
		  	if (! FORM_isEmailAddr(value)) 
		  	{
		  		errors_mail += '- ' + label + '\n';
		  		highlighted = highlighted || FORM_highlight(field, highlighted);
		  	}
		  }
		  else if (constraint == "date") // date
		  {
		    var date = STR_trim(value);
		  	if (! DATE_isValidDateFormat(date))
		  	{
		  		errors_date += '- ' + label + " (Format: " + DATE_getDateFormat() + ")\n";
		  		highlighted = highlighted || FORM_highlight(field, highlighted);		  	
		  	}
		  }
		  else if (constraint == "user") // user name
		  {
		    var user = STR_trim(value);
		  	if (user.length < 6) 
		  	{
		  		errors_user += '- ' + label + " (Mindestlänge!)\n";
		  		highlighted = highlighted || FORM_highlight(field, highlighted);
		  	}
		  	else if (! STR_hasSpecialChars(user))
		  	{
		  		errors_user += '- ' + label + " (kein Sonderzeichen!)\n";
		  		highlighted = highlighted || FORM_highlight(field, highlighted);		  	
		  	}
		  }
		  else if (constraint == "pass") // password
		  {
		    var pass = STR_trim(value);
		  	if (pass.length < 8) 
		  	{
		  		errors_pass += '- ' + label + " (Mindestlänge!)\n";
		  		highlighted = highlighted || FORM_highlight(field, highlighted);
		  	}
		  	else if (! STR_hasSpecialChars(pass))
		  	{
		  		errors_pass += '- ' + label + " (kein Sonderzeichen!)\n";
		  		highlighted = highlighted || FORM_highlight(field, highlighted);		  	
		  	}
		  	else if (! STR_hasDigits(pass))
		  	{
		  		errors_pass += '- ' + label + " (keine Ziffer!)\n";
		  		highlighted = highlighted || FORM_highlight(field, highlighted);		  	
		  	}
		  }
		  else if (STR_startsWith(constraint, "min")) // min. length
		  {
		    var constraintLength = constraint.substring(3,constraint.length);
				if (MM_minLength(STR_trim(value),MM_stringToInteger(constraintLength)))
				{
		  		errors_min += '- ' + label + ': ' + constraintLength +"\n";
		  		highlighted = highlighted || FORM_highlight(field, highlighted);
				}
		  }
		  else if (STR_startsWith(constraint, "max")) // max. length
		  {
		    var constraintLength = constraint.substring(3,constraint.length);
				if (!MM_maxLength(STR_trim(value), MM_stringToInteger(constraintLength)))
				{
		  		errors_max += '- ' + label + ': ' + constraintLength + "\n";
		  		highlighted = highlighted || FORM_highlight(field, highlighted);
				}
		  }
		  else if (constraint == "integer") // Prüfen, ob Ganzzahl
		  {
		  	if (!MM_isNumberInt(STR_trim(value))) 
		  	{
		  		errors_int += '- ' + label + '\n';
		  		highlighted = highlighted || FORM_highlight(field, highlighted);
		  	}
		  }
		  else if (STR_startsWith(constraint, "fileext(")) // erlaubte Dateiendungen
		  {
		  	var validExtensions = constraint.substring("fileext(".length, constraint.length-1);
		  	var extArray = STR_parseCommaSeparatedList(validExtensions); 
		  	if (! FORM_isValidFileExtension(STR_trim(value), extArray))
		  	{
		  		errors_fileext += '- ' + label + " (erlaubt: " + validExtensions + ")\n";
		  		highlighted = highlighted || FORM_highlight(field, highlighted);
		  	}
		  }
		  else
		  {
		  	// unknown constraint
		  	alert("Unknown constraint: " + constraint);
		  }
		}
  }
  if ((errors_empty != '') || (errors_mail != '') || (errors_int != '') || (errors_min != '') || (errors_max != '') || (errors_user != '') || (errors_pass != '') || (errors_date != '') || (errors_fileext != "")) 
  {
		errMsg = getErrorMessage(1001,language);
		if(errors_empty != '')
		{
  		errMsg+=getErrorMessage(1002,language) + errors_empty;
  	}
		if(errors_mail != '')
		{
      errMsg+=getErrorMessage(1003,language) + errors_mail;
    }
		if(errors_int != '')
		{
      errMsg+='\nIn folgenden Felder wurde keine Ganzzahl eingegeben:\n' + errors_int;
    }
		if(errors_min != '')
		{
      errMsg+='\nFür folgende Länge wurde die Mindestanzahl von Zeichen unterschritten:\n' + errors_min;
    }
		if(errors_max != '')
		{
      errMsg+='\nIn folgende Felder wurde die Höchstanzahl von Zeichen überschritten:\n' + errors_max;
    }
		if(errors_user != '')
		{
      errMsg+='\nIn folgenden Felder wurde kein gültiger Benutzername eingegeben:\n';
      errMsg+="(mind. 6 Zeichen, davon mind. 1 Sonderzeichen)\n" + errors_user;
    }
		if(errors_pass != '')
		{
      errMsg+='\nIn folgenden Felder wurde kein gültiges Passwort eingegeben:\n';
      errMsg+="(mind. 8 Zeichen, davon mind. 1 Sonderzeichen und mind. 1 Ziffer)\n" + errors_pass;
    }
		if(errors_date != '')
		{
      errMsg+='\nIn folgenden Felder wurde ein ungültiges Datum eingegeben:\n' + errors_date;
    }
		if(errors_fileext != "")
		{
      errMsg+='\nIn folgenden Felder wurde eine unerlaubte Dateiendung eingegeben:\n' + errors_fileext;
    }
    
		alert(errMsg);
		return false;
  } 
  else 
  {
    return true;
  }	
}
-->
