<!--
var DELI;
var dateFns;
var dateDELI;
var timeDELI;
var  dateORDER;

var messages
var conMsgCheckerMandatory = "beschriftung[i]+' ist ein Pflichtfeld!'";
var conMsgCheckerTypCheck= "'Bitte Feld '+beschriftung[i]+' ueberpruefen!'";
var conMsgCheckerMaxLen = "beschriftung[i]+': Eingabe ist zu lang! Maximallänge ist ' +parseInt(maxzeichen[i]) + ' Zeichen!'";
var conMsgCheckerMinLen = "beschriftung[i]+': Eingabe ist zu kurz! Minimallänge ist ' +parseInt(minzeichen[i]) + ' Zeichen!'";
var conMsgCheckerUpload = "beschriftung[i]+': Bitte Datei uploaden!'";

/**********************************************************
  Prueft ein Formular
  frm .. Das Formular-Object onSubmit="return checkForm(this)"
  im Formular muessen vorhanden sein:
    x_chDelimiter, x_chName, x_chType, x_chMandatory, x_chCaption
  *********************************************************/
function checkForm(frm) {
  DELI = frm.x_chkDelimiter.value;
  feldname = frm.x_chkSource.value.split(DELI);
  datentyp = frm.x_chkType.value.split(DELI);
  mussfeld = frm.x_chkMandatory.value.split(DELI);
  visiblefrontend = frm.x_chkType.value.split(DELI);
  maxzeichen = frm.x_chkMaxLength.value.split(DELI);
  minzeichen = frm.x_chkMinLength.value.split(DELI);
  beschriftung = frm.x_chkCaption.value.split(DELI);

  for(i=0;i<feldname.length-1;i++) {
	//alert("... "+feldname[i] + "..." + mussfeld);
    if(feldname[i] && (eval("frm."+feldname[i]) || eval("frm." + "elements['" + feldname[i] + "[]']"))) {
    ec = 0;
    feld = eval("frm."+feldname[i]);
   // alert("feld: " + feld + " ... " + feldname[i] + " datentyp: " + datentyp[i]);
    switch(datentyp[i]) {
      case "file":
	    x = '';
	    zfeldname = feldname[i] + "_ATTFILE";
	    if(document.frm.elements[zfeldname].value) {
		  alert(eval(conMsgCheckerUpload));
		  return false;
		}
        break;
      case "checkbox":
        zfeldname = feldname[i] + '[]';
				feld = eval('frm.' +"elements['" + zfeldname +"']");
        var anz = document.frm.elements[zfeldname];
	      x = "";
        if(anz.length) {
          for(j=0;j<anz.length;j++) {
            if(anz[j].checked) {
              x += anz[j].value + ";";
            }
          }
	        if(x) {
	          x = x.substr(0,x.length-1);
	        }
        }
        else {
          if(document.frm.elements[zfeldname].checked) {
            x = document.frm.elements[zfeldname].value;
          }
        }
        break;
      case "radio":
        zfeldname = feldname[i];
		    var radiocounter = 0;
        while(eval('document.frm.'+zfeldname+'[' + radiocounter + ']')) {
          x = eval('document.frm.'+zfeldname+'[' + radiocounter + ']').checked;
		      if(x) {
		        break;
		      }
		      radiocounter++;
    		}
        break;
      case "select":
        zfeldname = feldname[i] + '[]';
				feld = eval('document.' + frm.name + '.elements[zfeldname]').type;
				x = eval('document.' + frm.name + '.elements[zfeldname]').value;
        break;
        
      case "multipleselect":  // nur ein provisorium damit ich weiterarbeiten kann!
        zfeldname = feldname[i] + '[]';
				feld = eval('document.' + frm.name + '.elements[zfeldname]').type;
				x = eval('document.' + frm.name + '.elements[zfeldname]').value;
        break;
        
      case "bildupload": case "bildresizer":  // nur ein provisorium damit ich weiterarbeiten kann!
        zfeldname = feldname[i] + '[]';
				feld = eval('document.' + frm.name + '.elements[zfeldname]').type;
				x = eval('document.' + frm.name + '.elements[zfeldname]').value;
        break;
      default:
        x = feld.value;
    }
    
    
		
    //Mussfeld kontrollieren
    if(mussfeld[i]=="1" && x=="") {
      ok = false;
      ec = 1;
      //alert('1');
    }
    else if (mussfeld[i]!="1" && x=="") {
      ok = true;
     // alert('1');
    }
    else {
      //Datentyp kontrollieren
      ok = checkItem(x, datentyp[i]);
      ec = ok?0:2

      //minimale Laenge pruefen
      if(ok && datentyp[i].toLowerCase()=="text") {
        if(!isNaN(parseInt(minzeichen[i])))
          ok = x.length >= parseInt(minzeichen[i]);
        ec = ok?0:4
      }
      //maximale Laenge pruefen
      if(ok && datentyp[i].toLowerCase()=="text") {
        if(!isNaN(parseInt(maxzeichen[i])))
          ok = x.length <= parseInt(maxzeichen[i]);
        ec = ok?0:3
      }
    } //for

    if(!ok) {
      switch(ec) {
        case 1:
          alert(eval(conMsgCheckerMandatory));
          break;
        case 2:
          alert(eval(conMsgCheckerTypCheck));
          break;
        case 3:
          alert(eval(conMsgCheckerMaxLen));
          break;
        case 4:
          alert(eval(conMsgCheckerMinLen));
          break;
      } //switch
      if(fieldFocusable(feld)) {
			  feld.focus();
			  feld.select();
			}
      return false;
    } // !ok
   } // if
  } //for
  return true;
} // checkForm

/**********************************************************
  Prueft ein Formularelement
  fVal ... der zu prüfende Wert
  fTyp ... der Typ, auf den geprüft werden soll
  *********************************************************/
function checkItem(fVal, fType) {
  //Datentyp kontrollieren
  //alert("hier" + fType+": "+ fVal);
  switch(fType.toLowerCase()) {
    //case "number": case "double":
		  //alert("number oder double: " + fVal);
      //ok = !isNaN(fVal) && fVal!='';
      //break;
    case "double":
		  //alert("double: " + fVal);
      //ok = !isNaN(fVal) && fVal!='';
      //ok = fVal.match(/^-?((\d+(\.\d*)?)|((\d*\.)?\d+))$/);
      ok = fVal.match(/^-?\d{1,3}('?\d{3})*\.?(\d+)?$/);
      break;
    case "integer":
		  //alert("integer: " + fVal);
      ok = fVal.match(/^-?\d+$/);
      break;
    case "date":
      ok = checkDate(fVal);
      break;
    case "email":
      ok = fVal.match(/^.+\@.+\..+$/);
		  break;
    case "kombo":
      ok = true;
      break;
    case "text":
      ok = true;
      break;
    default:
     ok = true;
  } //switch
  return ok;
} //checkItem

/**********************************************************
  Prüft, ob ein Feld den Focus erhalten kann
  feld ... ein Formularfeld
  true - wenn ja
  false - wenn nicht
  *********************************************************/
function fieldFocusable(feld) {
  return !((feld.disabled?feld.disabled:false) || feld.type=="hidden" ||  typeof(feld.type)=="undefined");
} //fieldFocusable

function DoSave() {
  checkOk = checkForm(document.frm);
  
  if (!checkOk) return false;
  var browserversion = navigator.appVersion;

  //IE 5.0-Bug: €-Zeichen im Form müssen deshalb ersetzt werden
  if (browserversion.indexOf("MSIE 5.0")>-1) {
    for(var i = 0; i < document.frm.elements.length; i++) {
      var valtocheck = document.frm.elements[i].value;
      if(valtocheck.indexOf("€")>-1) {
        document.frm.elements[i].value = valtocheck.replace(/€/g,"&#x20AC;");
      }
    }

}
 
// Alle Formularelemente enabled, damit Inhalt gespeichert wird!
 
  for(var i = 0; i < document.frm.elements.length; i++) 
      document.frm.elements[i].disabled = false;
 
  document.frm.save.value = 1;
  return true;
  //document.frm.submit();
}

function DoReset() {
  document.frm.reset();
}

function DoGoBack() {

}

/**********************************************************
  Prueft ein Datum
  dat .. String in der Form "m.t.j"
  true - wenn dat ein gueltiges Datum enthaelt
  false - sonst
  *********************************************************/
function checkDate(dat) {
  ok = true;
  datetime = dat.split(" ");
  if(datetime.length==2) {
    dat = datetime[0];
    tim = datetime[1];
    //check the time part
    timeparts = tim.split(timeDELI);
    h = timeparts[0];
    mi = timeparts[1];
    sec = (timeparts.length==3)?timeparts[2]:0;
    ok = (h>=0 && h<24 && mi>=0 && mi<60 && sec >=0 && sec<60);
  }

  //check the date part
  parts = dat.split(dateDELI);
  //alert("dateOrder: " + dateORDER);
  switch(dateORDER) {
    case "dmy":
      d = parseFloat(parts[0]); //I used parseInt, but it returns 0 for a string >= 08 (seems to be a octal number problem
      m = parseFloat(parts[1]);
      y = parseFloat(parts[2]);
      break;
    case "mdy":
      m = parseFloat(parts[0]);
      d = parseFloat(parts[1]);
      y = parseFloat(parts[2]);
      break;
    case "ymd":
      y = parseFloat(parts[0]);
      m = parseFloat(parts[1]);
      d = parseFloat(parts[2]);
      break;
    default:
      d = parseFloat(parts[0]);
      m = parseFloat(parts[1]);
      y = parseFloat(parts[2]);
  } //switch
  ok = ok && (parts.length==3) && d>0

  switch(m) {
    case 1:
    case 3:
    case 5:
    case 7:
    case 8:
    case 10:
    case 12: ok = ok && (d<=31); break;
    case 4:
    case 6:
    case 9:
    case 11: ok = ok && (d<=30); break;
    case 2: ok = ok && (d<=28 || (d<=29 && ((y%4==0 && y%100!=0) || y%400==0))); break;
    default: ok = false;
  }
  return ok;
} //checkDate

//-->