// @date 31.10.2006
// Version 1.3
// AR

var Errtxt = new Array();
Errtxt[1] = "Im Feld "
Errtxt[2] = " dürfen nur positive Zahlen und ein Komma stehen (z.B. 5,15)."
Errtxt[3] = "Bitte im Feld "
Errtxt[4] = " ein gültiges Datum ein."
Errtxt[5] = "Bitte gib das Datum im Format tt.mm.jjjj ein (z.B. 05.02.2005)."
Errtxt[6] = "Bitte gib ein Jahr größer 1900 ein."
Errtxt[7] = "Bitte gib einen Monat zwischen 1 und 12 ein."
Errtxt[8] = "Bitte gib einen Tag zwischen 1 und 31 ein."
Errtxt[9] = "Das Eintrittsdatum liegt zu weit in der Vergangenheit."
Errtxt[10] = "Das Eintrittsdatum liegt zu weit in der Zukunft."
Errtxt[11] = "Das maximale Alter liegt bei 65 Jahren."
Errtxt[12] = "Das Mindestalter liegt bei 14 Jahren."

var Netscape = false;
if(navigator.appName.indexOf("Netscape") != -1)  Netscape = true;
if (Netscape){
window.captureEvents(Event.SUBMIT);
//window.onSubmit = Ausgabe;
}

function writeError (objRef,t) {
  alert(t);
  objRef.focus();
  return false;
}

function MM_findObj(n,d) {  var p,i,x;

  if(!d) d=document;
  if((p=n.indexOf("?"))>0 && parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document;
    n=n.substring(0,p);
   }
  if(!(x=d[n]) && d.all) x=d.all[n];
  for (i=0; !x && i<d.forms.length; i++) x=d.forms[i][n];
  for (i=0; !x && d.layers && i<d.layers.length; i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && document.getElementById) x=document.getElementById(n);
  return x;
}

function isValue(oN,Fehlermeldung) {
  var objRef = MM_findObj(oN);

  if (objRef.value=="") {
    return writeError(objRef,Fehlermeldung);
   }
}

function isPLZahl(oN, Fehlermeldung) {
  var objRef = MM_findObj(oN);
  if ((isNaN(objRef.value)) || objRef.value.length!=5 || objRef.value.indexOf(".")!=-1) {
    return writeError(objRef,Fehlermeldung);
   }
}

function isLeapYear(strYear){
  intYear = parseInt(strYear);
  var retVal = false;

  if (intYear % 4 == 0) {
    if (intYear % 100 == 0) {
      if (intYear % 400 == 0) retVal = true;
     }
     else retVal = true;
   }
  return retVal;
}

function isMonatLang(oN, Fehlername) {
  var objRef = MM_findObj(oN);
  var datum = objRef.value.split(".");
  var datKomma = objRef.value;

  if (datum[1] == "02" && (datum[0]>29) || datum[1] == "04" && (datum[0]>30) || datum[1] == "06" && (datum[0]>30) || datum[1] == "09" && (datum[0]>30) || datum[1] == "11" && (datum[0]>30) || (datum[0]>31) || (datum[1]>12) || (datum[1]<1) || (datum[0]<1)) {
    return writeError(objRef,Errtxt[3] + Fehlername + Errtxt[4]);
   }
  if ((isLeapYear(datum[2])!=true) && (datum[0]>= "29") && (datum[1] == "02")) {
    return writeError(objRef,Errtxt[3] + Fehlername + Errtxt[4]);
   }
  if (datKomma.indexOf(",") != -1) {
   return writeError(objRef,Errtxt[3] + Fehlername + Errtxt[4]);
  }
  return true;
}

function isDateFormat(oN) {
  var objRef = MM_findObj(oN);
  var datum = objRef.value;
  var zahl,RegExpPoint,RegExpNoPoint,formatedDate;
  var ErrCode = 0;

  if (objRef.value != "") {
    //--- Typ ttmmjjjj -------------------------------------------
      RegExpPoint = /^\d{1,2}\.\d{1,2}\.\d{4}$/; // check Tt.Mm.JJJJ
      RegExpNoPoint = /^\d{8}$/; //check ttmmjjjj
      if(RegExpPoint.test(datum) || RegExpNoPoint.test(datum)) {
        if(RegExpPoint.test(datum)){
          zahl = datum.split(".");
          formatedDate = ((zahl[0].toString().length<2)?"0"+zahl[0]:zahl[0])+"."+((zahl[1].toString().length<2)?"0"+zahl[1]:zahl[1])+"."+zahl[2];
        }
        else {
          zahl = new Array();
          zahl[0] = datum.substring(0,2);
          zahl[1] = datum.substring(2,4);
          zahl[2] = datum.substring(4,8);
          formatedDate = zahl[0]+"."+zahl[1]+"."+zahl[2];
        }
        if (isNaN(zahl[0]) || isNaN(zahl[1]) || isNaN(zahl[2])) ErrCode = 5;
        else if ((zahl[0]<1) || (zahl[0]>31)) ErrCode = 8;
        else if ((zahl[1]<1) || (zahl[1]>12)) ErrCode = 7;
        else if ((zahl[2]<1900) || (zahl[2]>3000)) ErrCode = 6;
      }
      else ErrCode = 5;
  }
  // return true: wenn feld eintrag leer (optionale validierung)
  else {
  return true;
  }
  //alert:
  if(ErrCode!=0){
    return writeError(objRef,Errtxt[ErrCode]);
  }
  //formatieren: führungsnullen an monat und tag
  else {
    objRef.value = formatedDate;
  }
}

function isValueDrop(oN,Fehlermeldung,Ausschluss) {
  var objRef = MM_findObj(oN);
  var i=0; leer=false; x="";

  with (objRef) {
    for (i=0;i<objRef.length;i++) {
      if (objRef[i].selected)
      x=objRef[i].value;
     }
    if (x=="") leer = true;
   }
  if (x==Ausschluss) {
    return writeError(objRef,Fehlermeldung);
   } else {
    return true;
   }

  if (leer) {
    return writeError(objRef,Fehlermeldung);
   } else {
    return true;
   }
}

//auch für checkbox-gruppen; bei einzelner c-box s.nächste function
function isValueRadio(oN,Fehlermeldung) {
  var objRef = MM_findObj(oN);
  var i=0; leer=false; x="";

  with (objRef) {
    for (i=0;i<objRef.length;i++) {
      if (objRef[i].checked)
      x=objRef[i].value;
     }
     if (x=="") leer = true;
  }
  if (leer) {
    return writeError(objRef[0],Fehlermeldung);
   } else {
    return true;
   }
}

// ist wert gültige email adresse?
function isEmailad(oN,Fehlermeldung){
  var objRef = MM_findObj(oN);
  var RegEx1 = /(@.*@)|(\.\.)|(@\.)|(\.@)|(^\.)|(\s)/; // not valid
  var RegEx2 = /^.+\@(\[?)[a-zA-Z0-9\-\.]+\.([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$/; // valid
  if ((!RegEx1.test(objRef.value) && RegEx2.test(objRef.value)) || (objRef.value=="")) return true;
   else {
    return writeError(objRef,Fehlermeldung);
  }
}

function isFloat(oN,Fehlermeldung,Vz) {
  var objRef = MM_findObj(oN);
  z=objRef.value;
  z=z.replace(" ","");            // Leerzeichen durch Komma ersetzen
  p_pos=z.indexOf(".");
  while (p_pos!=-1) {          // solange punkte vorhanden sind
    if (z.charAt(p_pos-1)=="." || z.charAt(p_pos+1)==".") { // Bereich vor und nach punkt nach punkten durchsuchen
      alert(Fehlermeldung);
     }
    tmp=z.substring(0,p_pos);
    z=tmp.concat((z.substring(p_pos+1,z.length)));
    p_pos=z.indexOf(".",p_pos);
   }
  if (z.indexOf("e") != -1 || z.indexOf("E") != -1) {    // falls e´s vorhanden sind : fehler
    return writeError(objRef,Errtxt[1]+Fehlername+Errtxt[2]);
   }
  z=z.replace(/,/,".");           // kommas durch punkte ersetzen...
  if (isNaN(z)) {               // ...und auf numerische angabe überprüfen
    alert(Fehlermeldung);
    objRef.focus();
    return false;
   }
  if ((Vz == 1) && (z.charAt(0) == "-")) {       // überprüfen auf negative werte
    return writeError(objRef,Fehlermeldung);
   }
}

function isBeitritt_OK(oN) {
  var objRef = MM_findObj(oN);
  var datum = objRef.value.split(".");
  var ver_dat = new Date( datum[2],datum[1]-1,datum[0]);
  var min_dat = new Date();
  var max_dat = new Date();
  min_dat.setTime(min_dat.getTime()-60*24*60*60*1000);    // die 60 entsprechen etwa 2 Monaten der
  max_dat.setTime(max_dat.getTime()+180*24*60*60*1000);   // die 180 entsprechen etwa 6 Monaten der

  if (ver_dat < min_dat) {
    return writeError(objRef,Errtxt[9]);
   }
  if (ver_dat > max_dat) {
    return writeError(objRef,Errtxt[10]);
   }
}

function isgeb_dat_OK(oN) {
  var objRef = MM_findObj(oN);
  var datum = objRef.value.split(".");
  var ver_dat = new Date( datum[2],datum[1]-1,datum[0]);
  var min_dat = new Date();
  var max_dat = new Date();
  min_dat.setFullYear(max_dat.getFullYear()-65);
  max_dat.setFullYear(max_dat.getFullYear()-14);    // die  entsprechen etwa 2 Monaten der
  if (ver_dat < min_dat) {
    return writeError(objRef,Errtxt[11]);
   }
  if (ver_dat > max_dat) {
    return writeError(objRef,Errtxt[12]);
   }
}

function iszzahl(oN,Fehlermeldung,minzzahl,maxzzahl){
  var objRef = MM_findObj(oN);

  if (objRef.value.length<minzzahl || objRef.value.length>maxzzahl){
    return writeError(objRef,Fehlermeldung)
   };
}

function isValue_one_cbox(oN,Fehlermeldung) {
  var objRef = MM_findObj(oN);

  if (objRef.checked==false) {
    return writeError(objRef,Fehlermeldung)
   };
}

function isNumber(oN,Fehlermeldung) {
  var objRef = MM_findObj(oN);

  if (isNaN(objRef.value)) {
    if (objRef.value.indexOf(".")!=-1) {
      var zahl = objRef.value.split(".");
     } else {
      var zahl = objRef.value.split(",");
     }
    if (zahl.length>2) {
      return writeError(objRef,Fehlermeldung)
     }
    if (isNaN(zahl[0]) || isNaN(zahl[1])) {
      return writeError(objRef,Fehlermeldung)
     }
   }
}

//lässt nur positive ganze Zahlen zu
function isPos(oN,Fehlermeldung)
{

	var objRef = MM_findObj(oN);
  	z=objRef.value;
  	if ((z.indexOf(".")!=-1)||(z.indexOf(",")!=-1)||(z.indexOf("e")!=-1)||(z.indexOf("E")!=-1)||(isNaN(z))||(z<0))
	{ alert(Fehlermeldung);
          objRef.focus();return false;}
}
