var errors ="";

function chkFrm(theForm)

{
	errors="";
	if (theForm.checkem)
	{
		var chk = theForm.checkem.value;

		if (chk)

		{
			chk=chk.split(",");

			for (i=0;i<chk.length;i+=3)

			{

				var ok = true;

				var nm = chk[i];var co = chk[i+1];var sn=chk[i+2];

				if (co.indexOf("{") !=-1)

				{var pos = co.indexOf("{");var x = co;co = x.substring(0,pos);var len = x.substring(pos+1,x.indexOf("}"));}

				switch (co)

				{

				case "e": // empty
					ok = NotEmpty(theForm.elements[nm].value);
					if (!ok) {errors += "Feld " + sn + " darf nicht leer sein.\n";}
				break;
				
				case "msel": // select box
				  ok = Selected(theForm.elements[nm]);
				  if (!ok) {errors += "Feld " + sn + " darf nicht leer sein.\n";}
				break;
				
				case "eFl": // emptyFlashText

					ok = NotEmpty(theForm.elements[nm].value);

					if (!ok) {errors += "Bitte bestätigen Sie Ihren eingetragenen Text.\n";}

				break;
				
				case "abtmp": // fileUpload Checked

					ok = abTemp();
					if (!ok) {errors += "Bitte bestätigen Sie die Übertragung der Bildrechte.\n";}

				break;
				
				
				case "echeck":
				  theLength = theForm.elements[nm].length;
				  ok = (theLength>0) ? true : false;
				  if (!ok)
				  {
            errors += "Feld " + sn + " darf nicht leer sein.\n";
          }
          else
          {
            for (i=0;i<theLength;i++)
            {
              theForm.elements[nm].options[i].selected=true;
            }
          
          }
				  
				break;

				case "eo": // not empty all fields

					var f = nm.split("#");

					var ok = false;

					for(y=0;y<f.length;y++)

					{

						ok = NotEmpty(theForm.elements[f[y]].value);

						if (ok)

							break;

					}

					if (!ok) {errors += "Feld " + sn + " darf nicht leer sein.\n";}

				break;

				case "n": // number

					ok = IsNumber(theForm.elements[nm].value);

					if(!ok) {errors += "Feld " + sn + " darf nur Zahlen enthalten.\n";};		 

				break;

				case "d": // date (german)

					ok = IsDate(theForm.elements[nm].value); 

					if (!ok) {errors += "Feld " + sn + ": Kein korrektes Datumsformat (tt.mm.jjjj).\n";}		

				break;	

				case "de": // date correct or empty

					var ok2 = NotEmpty(theForm.elements[nm].value);

					if (ok2) {ok=IsDate(theForm.elements[nm].value)};

					if (!ok) {errors += "Feld " + sn + ": Kein korrektes Datumsformat (tt.mm.jjjj).\n";}		

				break;

				case "m": // mail

					ok = IsMail(theForm.elements[nm].value);

					if (!ok) {errors += "Feld " + sn + " muss eine gültige Emailadresse enthalten.\n";};		

				break;	

				case "fl": // fieldlength {length}

					ok = HasLength(theForm.elements[nm].value,len) 

					if (!ok){errors += "Feld " + sn + " muss mindestens " + len + " Zeichen lang sein.\n";}

				break;	

				case "c": // one or more fields must be checked

					var ok = false;

					theVal = nm.split("#");
					ok = isChecked(theVal,theForm);

					if (!ok){errors += "Feld " + sn + " muss ausgewählt sein.\n";}

				break;	

				case "eoc": // either checked or filled

					theVal = nm.split("#");

					ok = CheckEitherOr(theVal,theForm)

					if (!ok){errors += "Eins der Felder muss ausgewählt sein: " + sn + "\n";}

				break;

				}

			} // end for loop checks

			if(errors){alert("Es wurden folgende Fehler entdeckt:\n" + errors);return false;}else{return true};

	

		}

		else

		{

			alert ("Missing configuration for validation.\nCheck fields in hidden field \"checkem\".");

			return false;

		}	

	}

	else

	{

		alert ("Missing configuration for validation.\nCheck hidden field \"checkem\".");

		return false;

	}	

}

function NotEmpty(theVal) 
{
return (theVal!="") ? true : false;
}


function IsNumber(theVal)

{var re = new RegExp ("^\\d+([\.,]?\\d+)?$");var p = re.test(theVal); return (p) ? true : false}



function IsDate(theVal)

{
var re = new RegExp ("^(\\d{1,2})[\.](\\d{1,2})[\.](\\d\\d(\\d\\d)?)$");var p = re.test(theVal);return (p) ? true : false
//var re = new RegExp ("^(\\d{1,2}[\.]){2}(\\d\\d(\\d\\d)?)[ ]{1}(\\d{1,2}[:]){1}(\\d{1,2}){1}([:]\\d{1,2})?$");var p = re.test(theVal);return (p) ? true : false
} 





function IsMail(theVal)

{var re = new RegExp ("^([0-9a-zA-Z][0-9a-zA-Z-_\\.]+)@([0-9a-zA-Z][0-9a-zA-Z-_]+\\.)+[a-zA-Z]{2,4}$");var p = re.test(theVal);return (p) ? true : false}



function HasLength(theVal,theLength)

{return (theVal.length<parseInt(theLength)) ? false :true }

function abTemp(){
var z = 0;
for(i=0;i<document.formEdit.length;i++){
    if(document.formEdit.elements[i].name == "file[]"){
        if(document.formEdit.elements[i].value != ""){
            z++;
        }
    }
}
if(z > 0){
    if(document.formEdit.Rechte.checked == false){
      return false;
    }
	else{
		return true;
	}
}
return true;

}

function isChecked(theVal,theForm) {

  
	var l = theForm.elements[theVal].length;
	
	if (!l)
	{
   if (theForm.elements[theVal].checked==true)
	   return true;
  }
  else
  {
    for(z=0;z<l;z++)
  	{
  		if (theForm.elements[theVal][z].checked==true)
  			return true;
  	}	
	}
	return false;	
}	

function Selected(theForm)
{
  for (i=0;i<theForm.length;i++)
  {
    if(theForm.options[i].selected==true)
      return true;
  }
  return false;
}


function CheckEitherOr(theVal,theForm) {

	retval = false;

	for(z=0;z<theVal.length;z++)

	{

		Ftype = (theForm.elements[theVal[z]].type);

		switch (Ftype)

		{

			case "checkbox":

			case "radio":

				if (theForm.elements[theVal[z]].checked==true)

					return true;

			break;

			default:

				if (NotEmpty(theForm.elements[theVal[z]].value))

					return true;

			break;

		}

	}	

	return false;	

}


var max=4;                                                         // maximale Anzahl gewählter Checkboxen
function check(what)
{
var ok = false;
var a = 0;
for(x=0;x<document.forms["f1"].elements.length;x++){
if( document.forms["f1"].elements[x].type == 'checkbox' ){
field = document.forms["f1"].elements[x];
if( field.checked == true ){
ok = true;
a++;
}
}
}
if(a > 4)
{
alert("Es können maximal 4 Infopakete ausgewählt werden");
what.checked=false;
}

}  

