function formCheck(formobj){
	//alert(fieldRequired);
	//alert(fieldName);
	//alert(formobj);
	var fieldRequiredArr = fieldRequired.split("|");
	var fieldNameArr = fieldName.split("|");
	var fieldTypeArr = fieldType.split("|");
	var fieldTitleArr = fieldTitle.split("|");
	var j = 0;
	var elementChecked = -1;
	// dialog message
	var alertMsg, errNoInput, errNoSelection, errNoEMail, errNoNumber, errNoDate, errNoFilename;
	
	var alertMsg = "Bitte korrigieren Sie folgende Eingaben:\n";
	
	if (aktLang=='de') {
		alertMsg = "Bitte korrigieren Sie folgende Eingaben:\n";
		errNoInput = " [keine Eingabe]\n";
		errNoSelection = " [keine Auswahl]\n";
		errNoEMail = " [ungueltige E-Mail Adresse]\n";
		errNoNumber = " [keine Zahl]\n";
		errNoDate = " [ungueltiges Datum <tt.mm.jjjj>]\n";
		errNoFilename = " [kein gültiger Dateiname ]\n";
	} else if (aktLang=='nl'){
		alertMsg = "A.u.b. de volgende velden verbeteren:\n";
		errNoInput = " [niets ingevuld]\n"
		errNoSelection = " [niets geselecteerd]\n"
		errNoEMail = " [geen juist E-Mail adres]\n"
		errNoNumber = " [geen juist nummer]\n";
		errNoDate = " [verkeerde formaat <dd.mm.yyyy>]\n";
		errNoFilename = " [fout formaat]\n";
	}else {
		alertMsg = "Please correct the following inputs:\n";
		errNoInput = " [no input]\n"
		errNoSelection = " [no selection]\n"
		errNoEMail = " [not a valid e-mail address]\n"
		errNoNumber = " [not a valid number]\n";
		errNoDate = " [not a valid date <dd.mm.yyyy>]\n";
		errNoFilename = " [not a valid filename]\n";
	}
	
	var l_Msg = alertMsg.length;
	
	for (var i = 0; i < fieldNameArr.length; i++){
		elementChecked = -1;
		var obj = formobj.elements[fieldNameArr[i]];
		//alert('fieldRequiredArr[i]: ' + fieldRequiredArr[i]);
		
		//alert('obj: ' + obj);
		if (fieldRequiredArr[i] != '' && obj){
			//alert('ObjName: ' + fieldNameArr[i]);	
			//alert('obj.type: ' + obj.type);
			
			switch(obj.type){
			case "undefined":
				break;
			case "select-one":
				//alert(obj.selectedIndex);
				if (!document.layers) {obj.style.backgroundColor = ErrBgClearColor;}
				if (obj.selectedIndex == 0 || obj.options[obj.selectedIndex].text == ""){
					alertMsg += " - " + fieldTitleArr[i] + " [keine Eingabe]\n";
					if (!document.layers) {obj.style.backgroundColor = ErrBgColor;}
				}
				break;
			case "select-multiple":
				if (!document.layers) {obj.style.backgroundColor = ErrBgClearColor;}
				//alert(obj.selectedIndex);
				if (obj.selectedIndex == 0){
					alertMsg += " - " + fieldTitleArr[i] + errNoInput;
					if (!document.layers) {obj.style.backgroundColor = ErrBgColor;}
				}
				break;
			case "text":
				if (!document.layers) {obj.style.backgroundColor = ErrBgClearColor;}
				if (obj.value == "" || obj.value == null){
					alertMsg += " - " + fieldTitleArr[i] + errNoInput;
					if (!document.layers) {obj.style.backgroundColor = ErrBgColor;}
				}
				break;
			case "textarea":
				if (!document.layers) {obj.style.backgroundColor = ErrBgClearColor;}
				if (obj.value == "" || obj.value == null){
					alertMsg += " - " + fieldTitleArr[i] + errNoInput;
					if (!document.layers) {obj.style.backgroundColor = ErrBgColor;}
				}
				break;
			default:
				if (fieldTypeArr[i]=='radio' || fieldTypeArr[i]=='checkbox') {
					for (j=0; j<obj.length; j++) {
						if (obj[j].checked) { elementChecked = j; }
						if (!document.layers) {obj[j].style.backgroundColor = ErrBgClearColorRadio;}
					}
					if (elementChecked < 0) {
						alertMsg += " - " + fieldTitleArr[i] + errNoSelection;
						for (j=0; j<obj.length; j++) {
							if (!document.layers) {obj[j].style.backgroundColor = ErrBgColor;}
						}
					}
				}else {
				if (!document.layers) {obj.style.backgroundColor = ErrBgClearColor;}
				if (obj.value == "" || obj.value == null){
					alertMsg += " - " + fieldTitleArr[i] + errNoInput;
					if (!document.layers) {obj.style.backgroundColor = ErrBgColor;}
				}
				}
			}
		}
		if (fieldTypeArr[i] != '' && obj && obj.value != ""){
				//alert('fieldTypeArr[i]: ' + fieldTypeArr[i]);
				switch(fieldTypeArr[i]){
					case "email":
							if (checkMail(obj.value)==false) {
								alertMsg += " - " + fieldTitleArr[i] + errNoEMail;
 								if (!document.layers) {obj.style.backgroundColor = ErrBgColor;}
 							}
  					break;
  				case "number":
						if(isNaN(obj.value) == true) {
 							alertMsg += " - " + fieldTitleArr[i] + errNoNumber;
 							if (!document.layers) {obj.style.backgroundColor = ErrBgColor;}
  					}
  					break;
  				case "date":
  					var valid = false;
  					var dateArr = obj.value.split(".");
  					var y = dateArr[2];
  					var m = dateArr[1];
  					var d = dateArr[0];
   					if (isNaN(y)||y==0) {
  						var jetzt = new Date();
  						y = jetzt.getYear();
  					}
  					with (new Date(y, m-1, d)) { valid = ((getDate()==d) && (getMonth()==m-1)) }
  					if (!valid) {
  						alertMsg += " - " + fieldTitleArr[i] + errNoDate;
  						if (!document.layers) {obj.style.backgroundColor = ErrBgColor;}
  					}
  					break;
  				
  				case "filename":
  						var z = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz.';
          		for (var i = 0; i < obj.value.length; i++) {
   	 						if (z.indexOf(s.charAt(i)) == -1) {
   	 							alertMsg += " - " + fieldTitleArr[i] + errNoFilename;
   	 						}
   	 					}
   	 			case "filepath":
  						var z = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz/';
          		for (var i = 0; i < obj.value.length; i++) {
   	 						if (z.indexOf(s.charAt(i)) == -1) {
   	 							alertMsg += " - " + fieldTitleArr[i] + errNoFilename;
   	 						}
   	 					}
  			}
		}
	}

	if (alertMsg.length == l_Msg){
		return true;
	}else{
		alert(alertMsg);
		return false;
	}

}

function checkMail(theValue) {

	var reason = "";
	var ValidChar = "@ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789._-"
	
	if (theValue.length) {
	
		if (theValue.length < 7) { reason = "kurz" };
		if (theValue.indexOf("@") < 0) { reason = "keinAt" };
		if (theValue.indexOf(".") < 0) { reason = "keinPunkt" };

		for (i=0; i < theValue.length; i++) {
			if (ValidChar.indexOf(theValue.charAt(i)) < 0) {

				reason = "ungültigesZeichen";
				break;			
			}		
		}

		if (reason.length) {
			return false;
		}
		else {
			return true;
		}
	}
	return true;
}