var docFormName="forms[0]";

function startValidation() {
  //schreibweise immer z.B. isValueFeld('FormElementName','Feldname im Fehlertext','evtl. optionale Werte')

  if (!isValueFeld('myFeld','Feldname1')) return false;		//Das Feld ist nicht leer
  if (!isRadioSelect('myCheckbox','Feldname1'))return false;    //ein Radiobutton/Checkbox ist gewählt
  if (!isGroupSelect('myCheckbox','Feldname1'))return false;	//Eintrag aus Radio/Checkbox-gruppe ausgewählt
  if (!isGroupSelectNummeriert('myCheckbox','Feldname1',6))	//Eintrag aus mehreren Radio/Checkboxen ausgewählt, die so heißen "myCheckbox1" bis "myCheckbox6"
  groupSelectNumbered(feldname,start,anzahl)		//Gibt Anzahl selectierter Checkboxen zurück
  if (!isDropSelect('myOption','Feldname1','defaultWert')) return false;	//Im Dropdown ist nicht der Eintrag mit value="defaultWert" ausgewählt
  if (!isDropNoFirstSelect('myOption','Feldname1')) return false;		//Im Dropdown ist nicht mehr der erste Eintrag ausgewählt
  if (!isNumeric('myFeld','Feldname1')) return false;		//negativ, komma oder punkt erlaubt; "e" verboten)
  if (!isPositive('myFeld','Feldname1')) return false;		//Nur Positive Zahlen. Komma oder Punkt erlaubt
  if (!isPLZ('myFeld','Feldname1')) return false;		//Nur Postleitzahlen
  if (!isRange('myFeld','Feldname1',100,1000)) return false;	//Im Bereich zwischen min und max
  if (!isMinStr('myFeld','Feldname1',3)) return false;		//Hat mindestens x Zeichen
  if (!isEmail('myFeld','Feldname1')) return false;		//ist gültige Email
  if (!isDateFormat('myFeld','Feldname1','ttmmjj')) return false;	//ist gültiges DatumsFormat  (optional:modus, sonst ttmmjjjj)
  if (!isDateRange('myFeld','Feldname1','10.03.2000','10.10.2010','ttmmjj')) return false;	//ist gültiges Datum zwischen von und bis (optional:modus, sonst ttmmjjjj)
  if (!isSpecChar('myFeld','Feldname1')) return false;		//enthält keine Sonderzeichen

  eval("document."+docFormName+".submit();");
}

//--------------------------------------------------------------------------------------------------------
function isValueFeld(feldname,Fehlertext){
  var FE=eval("document."+docFormName+"."+feldname);
  if (FE.value==""){alert(Fehlertext);FE.focus();return false; }
  else return true;
}

function isRadioSelect(feldname,Fehlertext){
  var FE=eval("document."+docFormName+"."+feldname);
  if(FE.checked==true)return true;
  else{alert(Fehlertext);return false;}
}

function isGroupSelect(feldname,Fehlertext){
  var FE=eval("document."+docFormName+"."+feldname);
  var laufZaehler=0;var Laenge=FE.length;
  for(var i=0;i<Laenge;i++){if(FE[i].checked==true)laufZaehler++;}
  if (laufZaehler==0){alert(Fehlertext);return false;}
  else return true;
}

function isGroupSelectNummeriert(feldname,Fehlername,Anzahl){
  var Fehlertext="Bitte wählen Sie bei \""+Fehlername+"\" etwas ein";
  var laufZaehler=0;var FE;
  for(var i=1;i<Anzahl;i++){
    FE=eval("document."+docFormName+"."+feldname+i);
    if(FE.checked==true)laufZaehler++;}
  if (laufZaehler==0){alert(Fehlertext);return false;}
  else return true;
}

function groupSelectNumbered(feldname,start,Anzahl){
  var laufZaehler=0;var FE;
  for(var i=start;i<start+Anzahl;i++){
    FE=eval("document."+docFormName+"."+feldname+i);
    if(FE.checked==true)laufZaehler++;}
  return laufZaehler;
}

function isDropSelect(feldname,Fehlername,defaultWert){
  var FE=eval("document."+docFormName+"."+feldname);
  var Fehlertext="Bitte wählen Sie aus dropdown bei \""+Fehlername+"\" etwas ein";
  if(FE[FE.selectedIndex].value==defaultWert){alert(Fehlertext);FE.focus();return false;}
  else return true;
}

function isDropNoFirstSelect(feldname,Fehlername){
  var FE=eval("document."+docFormName+"."+feldname);
  var Fehlertext="Bitte wählen Sie im Dropdown \""+Fehlername+"\" etwas aus";
  if(FE.selectedIndex==0){alert(Fehlertext);FE.focus();return false;}
  else return true;
}

//benötigt: function boolNumeric
function isNumeric(feldname,Fehlername) {
  var FE=eval("document."+docFormName+"."+feldname);
  var Fehlertext="Bitte tragen Sie bei \""+Fehlername+"\" nur Zahlen ein";
  if (!boolNumeric(FE.value)){alert(Fehlertext);FE.focus();return false;}
  return true;
}

//benötigt: function boolNumeric
function isPositive(feldname,Fehlername){
  var FE=eval("document."+docFormName+"."+feldname);
  var Fehlertext="Bitte tragen Sie bei \""+Fehlername+"\" nur positive Zahlen ein";
  if (!boolNumeric(FE.value)||(boolNumeric(FE.value)&&FE.value<=0)){alert(Fehlertext);return false;}
  return true;
}

//benötigt: function boolZiffer
function isPLZ(feldname,Fehlername) {
  var FE=eval("document."+docFormName+"."+feldname);
  var Fehlertext="Bitte tragen Sie unter \""+Fehlername+"\" eine gültige Postleitzahl ein";
  if (!boolZiffer(FE.value)||(boolZiffer(FE.value)&&FE.value.length!=5)){alert(Fehlertext);FE.focus();return false;}
  return true;
}

//benötigt: function boolRange
function isRange(feldname,Fehlername,min,max) {
  var FE=eval("document."+docFormName+"."+feldname);
  var Fehlertext="Bitte tragen Sie bei \""+Fehlername+"\" zahlen zwische x und y ein";
  if (!boolRange(FE.value,min,max)){alert(Fehlertext);FE.focus();return false;}
  return true;
}

function isMinStr(feldname,Fehlername,zeichenanzahl){
  var FE=eval("document."+docFormName+"."+feldname);
  var Fehlertext="Bitte tragen Sie bei \""+Fehlername+"\" mindestens x zeichen ein";
  if (FE.value.length<zeichenanzahl){alert(Fehlertext);FE.focus();return false;}
  return true;
}

function isEmail(feldname,Fehlertext){
  var FE=eval("document."+docFormName+"."+feldname);
  var email=FE.value;
  var reg1=/(@.*@)|(\.\.)|(@\.)|(\.@)|(^\.)/;
  var reg2=/^.+\@(\[?)[a-zA-Z0-9\-\.]+\.([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$/;
  if (!reg1.test(email)&&reg2.test(email))return true;
  else{alert(Fehlertext);FE.focus();return false;}
}

function isSpecChar(feldname,Fehlername){
  var FE=eval("document."+docFormName+"."+feldname);
  var Fehlertext="Bitte tragen Sie bei \""+Fehlername+"\" keine sonderzeichen ein";
  var ReEx=/[^a-zA-Z0-9@&%\(\)\$]+/; //diese dürfen vorkommen (Sonderzeichen mit \ maskieren)
  if (ReEx.test(FE.value)){alert(Fehlertext);FE.focus();return false;}
}

function boolDate(wert,modus) {
  if(!modus) modus="ttmmjjjj"; //default
  if (modus=="ttmmjjjj") var ReEx = /^(\d{2})(\,|\:|\.|\/|\\)?(\d{2})(\2)(\d{4})$/;
  else if (modus=="ttmmjj") var ReEx = /^(\d{2})(\,|\:|\.|\/|\\)?(\d{2})(\2)(\d{2})$/;
  else if (modus=="mmjjjj") var ReEx = /^(\d{2})(\,|\:|\.|\/|\\)(\d{4})$/;
  else if (modus=="mmjj") var ReEx = /^(\d{2})(\,|\:|\.|\/|\\)(\d{2})$/;
  var REresult = ReEx.test(wert);
  if (REresult) return true;
  else return false;
}

//benötigt: function boolDate
function isDateFormat(feldname,Fehlername,modus){
  var FE=eval("document."+docFormName+"."+feldname);
  var Fehlertext="Bitte tragen Sie unter \""+Fehlername+"\" ein Datum im format TT.MM.JJJJ ein";
  if(!modus)modus="ttmmjjjj";
  if (boolDate(FE.value,modus))return true;
  else{alert(Fehlertext);FE.focus();return false;}
}

//benötigt: function boolDate, function boolDateRange, function formatDate
function isDateRange(feldname,Fehlername,von,bis,modus){
  var FE=eval("document."+docFormName+"."+feldname);
  var Fehlertext="Bitte tragen Sie bei \""+Fehlername+"\" ein datum zwischen x und y ein";
  if(!modus)modus="ttmmjjjj";
  var wert=formatDate(FE.value,modus);
  if(boolDateRange(wert,von,bis))return true;
  else{alert(FehlertextDatum);FE.focus();return false;}
}

//--------------------------------------------------------------------------------------------------------
function boolNumeric(checkWert){
  var boolNum=true;
  if (isNaN(checkWert)) {
    boolNum=false;
    if (checkWert.indexOf(".")!=-1)var zahl=checkWert.split(".");
    else var zahl=checkWert.split(",");
    if(!(zahl.length>2)&&!isNaN(zahl[0])&&!isNaN(zahl[1]))boolNum=true; }
  else if(checkWert.indexOf("e")!=-1||checkWert=="")boolNum=false;
  return boolNum;
}

function boolZiffer(checkWert){
  var boolNum=true;
  if(isNaN(checkWert)||checkWert=="")boolNum=false;
  else if(checkWert.indexOf("e")!=-1||checkWert.indexOf(",")!=-1||checkWert.indexOf(".")!=-1||checkWert.indexOf("-")!=-1)boolNum=false;
  return boolNum;
}

function boolDate(wert,modus) {
  if(!modus) modus="ttmmjjjj";
  if(modus=="ttmmjjjj")var ReEx=/^(\d{2})(\,|\:|\.|\/|\\)?(\d{2})(\2)(\d{4})$/;
  else if(modus=="ttmmjj")var ReEx=/^(\d{2})(\,|\:|\.|\/|\\)?(\d{2})(\2)(\d{2})$/;
  else if(modus=="mmjjjj")var ReEx=/^(\d{2})(\,|\:|\.|\/|\\)(\d{4})$/;
  else if(modus=="mmjj")var ReEx=/^(\d{2})(\,|\:|\.|\/|\\)(\d{2})$/;
  if(ReEx.test(wert))return true;
  else return false;
}

function boolRange(checkWert,min,max){
  var boolRng=true;
  if (boolNumeric(checkWert)){if(checkWert<min||checkWert>max)boolRng=false;}
  else boolRng=false;
  return boolRng;
}

function boolDateRange(checkDate,von,bis){
  checkDate=new Date(checkDate.split(".")[2],parseInt(checkDate.split(".")[1])-1,checkDate.split(".")[0]);
  von=new Date(von.split(".")[2],parseInt(von.split(".")[1])-1,von.split(".")[0]);
  bis=new Date(bis.split(".")[2],parseInt(bis.split(".")[1])-1,bis.split(".")[0]);
  if (checkDate<von||checkDate>bis)return false;
  return true;
}
function checkMaxSize(elementName,maxSize,errorText){
  var FE=eval("document."+docFormName+"."+elementName);
  var value = FE.value;
  if(value.length<=maxSize) return true;
  else{alert(errorText);return false;}
}

