function decode_utf8(utftext) {
  var plaintext = ""; var i=0; var c=c1=c2=0;
  // while-Schleife, weil einige Zeichen uebersprungen werden
  while(i<utftext.length) {
    c = utftext.charCodeAt(i);
    if (c<128) {
      plaintext += String.fromCharCode(c);
      i++;}
    else if((c>191) && (c<224)) {
      c2 = utftext.charCodeAt(i+1);
      plaintext += String.fromCharCode(((c&31)<<6) | (c2&63));
      i+=2;}
    else {
      c2 = utftext.charCodeAt(i+1); c3 = utftext.charCodeAt(i+2);
      plaintext += String.fromCharCode(((c&15)<<12) | ((c2&63)<<6) | (c3&63));
      i+=3;}
  }
  return plaintext;
}

function dynamicFormElementCheck(formName) {
	var myEmail = /^([_a-zA-Z0-9-]+)(\.[_a-zA-Z0-9-]+)*@([_a-zA-Z0-9-]+\.)+([a-zA-Z]{2,4})$/;
	var myDate = /^\d{2}\.\d{2}\.\d{4}$/;
	var myZip = new RegExp(/(^\d{5}$)|(^\d{5}-\d{4}$)/);
	var isCheck = /(check)/g;
	var elemName = null;

	for(var i=0; i<document.forms[formName].length; ++i) {
    if (document.forms[formName].elements[i].name != null && document.forms[formName].elements[i].name != 'undefined') {
      var elemName	= document.forms[formName].elements[i].name;
      
  		if(elemName.indexOf("check") == 0) {	
  			var splitted_vars	= elemName.split("_");
  			var splitted_checks	= document.forms[formName].elements[i].value.split(", ");
  			var checkLength		= splitted_checks.length;
  			var theElement		= splitted_vars[1];
  			
  			for(var doChecks=0; doChecks < checkLength; doChecks++) {
  				// Zuerst auf Inhalt pruefen
  				var checkField = splitted_checks[doChecks];
  				if (checkField == "isContent") {
  					if (document.forms[formName].elements[theElement].value == "" && theElement != "skalazip") {
  						alert(decode_utf8("Bitte füllen Sie alle Pflichtfelder (*) aus."));
  						document.forms[formName].elements[theElement].focus();
  						return false;
  					} else if ((document.forms[formName].elements[theElement].value == "" && theElement == "skalazip") || (theElement == "skalazip" && !myZip.test(document.forms[formName].elements[theElement].value))) {
  						document.forms[formName].elements[theElement].focus();
  						document.forms[formName].elements[theElement].className = "error";
  						document.getElementById("label_"+theElement).className = "error";
  						document.getElementById("global_error").style.visibility = "visible"; 
  						return false;
  					}
  				} else if (checkField == "isValidDate") {
  					if(!myDate.test(document.forms[formName].elements[theElement].value))
  					{
  						alert(decode_utf8("Bitte geben Sie ein korrektes Datum an."));
  						document.forms[formName].elements[theElement].focus();
  						return false;
  					}
  				}
  				else if(checkField == "isValidEmail") {
  					if(!myEmail.test(document.forms[formName].elements[theElement].value))
  					{
  						alert(decode_utf8("Bitte geben Sie eine korrekte E-Mail-Adresse an."));
  						document.forms[formName].elements[theElement].focus();
  						return false;
  					}
  				}
  				else if(checkField == "isSelected") {
  					if(document.forms[formName].elements[theElement].selectedIndex == 0)
  					{
  						alert(decode_utf8("Bitte wählen Sie eine Angabe aus."));
  						document.forms[formName].elements[theElement].focus();
  						return false;
  					}
  				}
  				else if(checkField == "isCaptcha") {
  				  if (document.forms[formName].elements[theElement].value == "") {
  						alert(decode_utf8("Bitte geben Sie den Code ein."));
  						document.forms[formName].elements[theElement].focus();
  						return false;
  					} 
  				}
  				else if(checkField == "isChecked") {
  					elemType = document.forms[formName].elements[theElement].type;
  					var radioElement = document.forms[formName].elements[theElement];
  					var elementCount = radioElement.length;
  					var x = null;
  					var checkCounter = null;
  					
  					if(elemType == "checkbox") {
  						if(document.forms[formName].elements[theElement].checked)
  							checkCounter = 1;
  					}
  					else {
  						for(x = 0; x < elementCount; x++) {
  							if(document.forms[formName].elements[theElement][x].checked)
  								checkCounter++;
  						}
    				}
    				if(checkCounter == null) {
  					 if(elemType == "checkbox") {
  							alert(decode_utf8("Bitte bestätigen Sie Ihre Angaben."));
  							document.forms[formName].elements[theElement].focus();
  							return false;
  						}
  						else {
  						  alert(decode_utf8("Bitte wählen Sie eine Angabe aus."));
  						  document.forms[formName].elements[theElement][0].focus();
  						  return false;
  						}
  					}
				  }
			 }
		  }
	 }
  }
}
