// Global:
var zahlen = "0123456789";
var lokale = "de_DE";

// Defaultsprache (deutsch) ggf. überschreiben
function setLocale (loknew) {
   lokale=loknew;
}

// Überprüfen, ob eine Zahl oder ein Element-Name als "feld" gekommen ist:
function proof_field(feld) {
	var isZahl = true;
	for (var i=0; i<feld.length; i++) {
		if( zahlen.indexOf(feld.charAt(i))==-1 )
		 isZahl = false;
		 break;
	}
	if (isZahl)
		return feld;
	else {
		var j, oneName;
		for (j=0; j<1000; j++) {
			oneName = window.document.sender.elements[j].name;
			if (oneName==feld)
				return j;
			if (oneName==null) {
      	   if (lokale=="en_GB") alert("The field " + feld + " does not exist.");
      	   else                 alert("Das Feld "  + feld + " existiert nicht.");
				return null;
			}
		}
	}
   if (lokale=="en_GB") alert("The field " + feld + " does not exist.");
   else                 alert("Das Feld "  + feld + " existiert nicht.");
	return null;
}
// für das Leeren der Formularfelder:
var feld;
function leeren(feld) {
	window.document.sender.elements[feld].focus();
	window.document.sender.elements[feld].value = "";
	return;
}
function nurleeren(feld) {
	window.document.sender.elements[feld].value = "";
	return;
}

// für das Checken der Datentypen:
var minimal, maximal;
function proof_laenge (feld, minimal) {
	feld = proof_field(feld);
	if (feld==null)
		return;
	var wert = window.document.sender.elements[feld].value;
	if (wert.length < minimal) {
	   if (lokale=="en_GB") alert ("Please fill out this field correctly!\nThere must be at least "  + minimal + " characters.");
	   else                 alert ("Bitte dieses Feld korrekt ausfüllen!\nEs müssen mindestens " + minimal + " Zeichen eingegeben werden.");
		window.document.sender.elements[feld].focus();
		return;
	}
   var aktziffer;
   var leerzeichen = " ";
   var istNurLeer = true;
   for (var i = 0; i < wert.length; i++) {
		aktziffer = wert.charAt(i);
		if (leerzeichen.indexOf (aktziffer) == -1) {
         istNurLeer = false;
			break;
		}
	}
	if (istNurLeer) {
	   if (lokale=="en_GB") alert ("Please fill out this field correctly!\nThere are no white spaces allowed.");
	   else                 alert ("Bitte dieses Feld korrekt ausfüllen!\nBlanks may not only be entered.");
		leeren (feld);
	}
	return;
}

function proof_ganzzahl (feld) {
	feld = proof_field(feld);
	if (feld==null)
		return;
	var wert = window.document.sender.elements[feld].value;
	var aktziffer;
	for (var i = 0; i < wert.length; i++) {
		aktziffer = wert.charAt(i);
		if (zahlen.indexOf (aktziffer) == -1) {
			if (aktziffer=='-' && i==0 && wert.length>1)
				continue;
   	   if (lokale=="en_GB") alert ("Please fill out this field correctly!\nOnly numbers may be entered.");
   	   else                 alert ("Bitte dieses Feld korrekt ausfüllen!\nEs dürfen nur Zahlen eingegeben werden.");
			leeren (feld);
			break;
		}
	}
}

function proof_float (feld, maximal) {
	feld = proof_field(feld);
	if (feld==null)
		return;
	var wert = window.document.sender.elements[feld].value;
	var checkedwert = "";
	var zahlen_und_punkt = "0123456789.,";
	for (var i = 0; i < wert.length; i++) {
		aktziffer = wert.charAt(i);
		if(aktziffer == ',')
			checkedwert += '.';
		else
			checkedwert += aktziffer;
		if (zahlen_und_punkt.indexOf (aktziffer) == -1) {
			if (aktziffer=='-' && i==0 && wert.length>1)
				continue;
   	   if (lokale=="en_GB") alert ("Please fill out this field correctly!\nOnly numbers and one point may be entered.");
   	   else                 alert ("Bitte dieses Feld korrekt ausfüllen!\nEs dürfen nur Zahlen und ein Punkt eingegeben werden.");
			leeren (feld);
			return;
		}
	}
	var punktArray = checkedwert.split (".");
	if ( punktArray.length > 2 ) {
	   if (lokale=="en_GB") alert ("Please fill out this field correctly!\nIt may emerge only one point in the number.");
	   else                 alert ("Bitte dieses Feld korrekt ausfüllen!\nEs darf nur ein Punkt in der Zahl auftauchen.");
		leeren (feld);
		return;
	}
	if (punktArray.length == 2) {
		var hinter_punkt = punktArray[1];
		if (hinter_punkt.length > maximal) {
   	   if (lokale=="en_GB") alert ("Please fill out this field correctly!\nMaximally indications behind the point may stand for " + maximal);
   	   else                 alert ("Bitte dieses Feld korrekt ausfüllen!\nEs dürfen maximal " + maximal + " Zeichen hinter dem Punkt stehen.");
			leeren (feld);
			return;
		}
	}
	window.document.sender.elements[feld].value = checkedwert;
}

// für DateTime-Felder:
var feld1, feld2;
function datetime (feld1, feld2) {
	feld1 = proof_field(feld1);
	if (feld1==null)
		return;
	feld2 = proof_field(feld2);
	if (feld2==null)
		return;
   var datum = window.document.sender.elements[feld1].value;
   var zeit = window.document.sender.elements[feld2].value;
   if (datum == "" || zeit == "" || datum.length <= 9 || zeit.length <= 7 ) {
	   if (lokale=="en_GB") alert ("Please fill out both fields correctly!");
	   else                 alert("Bitte füllen Sie unbedingt BEIDE Felder korrekt aus!");
		nurleeren (feld1);
		nurleeren (feld2);
   } else {
	/*
      var jahr = datum.substring(6,10);
      var mon = datum.substring(3,5);
      var tag = datum.substring(0,2);
      var std = zeit.substring(0,2);
      var min = zeit.substring(3,5);
      var sek = zeit.substring(6,8);
      var sDatetime = jahr + "-" + mon + "-" + tag + " " + std + ":" + min + ":" + sek + ".000000000";
	*/
      var sDatetime = datum + " " + zeit;
      window.document.sender.elements[feld2 + 1].value = sDatetime;
   }
}

function checkdatetime (feld1, feld2) {
	feld1 = proof_field(feld1);
	if (feld1==null)
		return;
	feld2 = proof_field(feld2);
	if (feld2==null)
		return;
   var datum = window.document.sender.elements[feld1].value;
   var zeit = window.document.sender.elements[feld2].value;
   if (zeit != "") {
      datetime (feld1, feld2);
   }
}

function getdatetime (feld1, feld2) {
	feld1 = proof_field(feld1);
	if (feld1==null)
		return;
	feld2 = proof_field(feld2);
	if (feld2==null)
		return;
   var datetime = window.document.sender.elements[feld2 + 1].value;
   if ( datetime != "" && datetime.length >= 20 ) {
      var tag = datetime.substring(0,2);
      var mon = datetime.substring(3,5);
      var jahr = datetime.substring(6,10);
      var std = datetime.substring(11,13);
      var min = datetime.substring(14,16);
      var sek = datetime.substring(17,19);
      var datum = tag + "." + mon + "." + jahr;
      var zeit = std + ":" + min + ":" + sek;
      window.document.sender.elements[feld1].value = datum;
      window.document.sender.elements[feld2].value = zeit;
   }
}

// für Dateibuttons:
var maySend = true;
var mime, isNullable;
function checkMime (feld, mime, isNullable) {
	maySend = true;
	var wert = window.document.sender.elements[feld].value;
	if (wert != "") {
		var punktArray = wert.split (".");
		if ( punktArray.length != 2 ) {
   	   if (lokale=="en_GB") alert ("Please fill out this field correctly!\nIt must emerge exactly one point in the file path.");
   	   else                 alert ("Bitte dieses Feld korrekt ausfüllen!\nEs muss genau ein Punkt im Dateipfad auftauchen.");
			maySend = false;
			return;
		} else {
			var dateiEndung = punktArray[1];
			if (mime.indexOf (dateiEndung) == -1) {
      	   if (lokale=="en_GB") alert ("Please fill out this field correctly!\nOnly files of the type ''" + mime + "'' may be uploaded.");
      	   else                 alert ("Bitte dieses Dateifeld korrekt ausfüllen!\nEs dürfen nur Dateien des Typus ''" + mime + "'' hochgeladen werden.");
				maySend = false;
				return;
			}
		}
	} else {
			if ( isNullable == "true" ) {
			proof_laenge (feld, 1);
			return;
		}
	}
}

// für Paßwörter:
function check_pw(feld, zahl) {		// erstes / zweites Paßwortfeld
	feld = proof_field(feld);
	if (feld==null)
		return;
	var pass1 = window.document.sender.elements[feld].value;
	var pass2 = window.document.sender.elements[feld+1].value;
	if ( pass2 != "" && (pass1 != pass2 || zahl!=2) ) { // arbeitet nur, wenn das zweite schon ausgefüllt wurde, also das erste noch mal nachträglich geändert wird.
	   if (lokale=="en_GB") alert ("The passworts does not match.\n Please try again.");
	   else                 alert ("Die Paßwörter stimmen nicht überein.\n Bitte neu eingeben.");
		nurleeren(feld+1);
		leeren(feld);
	}
}

// InfoLinks leeren:
function linkweg(feld) {
	feld = proof_field(feld);
	if (feld==null)
		return;
	nurleeren(feld);
}

// Taste auswerten
function taste_auswerten(evt){
	var my_cc;
	var c = evt || window.event;					// NN4 || Rest
	if (typeof document.layers != 'undefined') my_cc=c.which;		// NN4
	else if (typeof document.all != 'undefined') my_cc=c.keyCode;	// IE4 
	else if (document.getElementById) {			// W3C
		if (c.charCode>0) my_cc=c.charCode;    // ASCII-Code bei keypress
		else if (c.which>0) my_cc=c.which;     
		else if (c.keyCode>0) my_cc=c.keyCode;
		else my_cc=-1;                         // Browser kann nicht
	}
	else my_cc=-1;                           // es liegt nix an
	return my_cc;
}

// Überprüfen, ob das Formular auch gefüllt ist:
function checkAndSubmit() {
	var eingabe, aktArgument, aktName, tat_laenge;
	var Ausgabe = "";
	var args = document.listToCheck;
	var argument_zahl = args.length;  // Anzahl an übergebenen Parametern
	for (var i=0; i<argument_zahl; i+=2)	{
		aktArgument = args[i];
		aktName = args[i+1];
		eingabe = window.document.sender.elements[aktArgument].value;
		if (eingabe)	// Hat der Client was eingetragen? Wenn ja, dann die Länge des vom Client eingetragenen Wertes ermitteln
			tat_laenge = eingabe.length;
		else				// Sonst ist es 0
			tat_laenge = 0;
		vorgabe = 1;	// vorgegebene Länge des Muß-Feldes; hier einfach nur 1, also nicht leer
		if (tat_laenge < vorgabe)
			Ausgabe = Ausgabe + "\n - " + aktName;
		if (!maySend) {
   	   if (lokale=="en_GB") alert ("Please check the datatype of your file!\nYou have selected a wrong datatype");
   	   else                 alert ("Bitte überprüfen Sie den Datentyp Ihrer hochzuladenden Dateien.\nEs wurde ein falscher Dateityp zum Hochladen ausgewählt.");
			return;
		}
	}
   if (Ausgabe.length > 0) {
	   if (lokale=="en_GB") alert ("Please fill out all marked fields (*).\nThe following fields were not filled out:\n" + Ausgabe);
	   else                 alert ("Bitte alle mit (*) gekennzeichneten Felder ausfüllen.\nFolgende Felder wurden nicht ausgefüllt:\n" + Ausgabe);
      return;
   }
	document.sender.submit();
}

// Überprüfen, ob das Formular richtig gefüllt ist (für editfield):
function checkMinSize () {
	var eingabe, aktArgument, aktName, tat_laenge;
	var Ausgabe = "";
	var argument_zahl = checkMinSize.arguments.length;  // Anzahl an übergebenen Parametern
	for (var i=0; i<argument_zahl; i+=3) {
		aktArgument = checkMinSize.arguments[i];
		aktArgument = proof_field(aktArgument);
		if (aktArgument==null)
			return false;

 		aktName = checkMinSize.arguments[i+1];
      if(window.document.sender.elements[aktArgument].type=="checkbox") {
         // Sonderbehandlung 'Checkbox'
         if(window.document.sender.elements[aktArgument].checked == false) {
   			Ausgabe += "\n - "+aktName;
         }
      } else {
         // Standard
   		eingabe = window.document.sender.elements[aktArgument].value;
   		vorgabe = checkMinSize.arguments[i+2];
   		if (eingabe)							// Hat der Client was eingetragen? 
   			tat_laenge = eingabe.length;	// Wenn ja, wieviel
   		else
   			tat_laenge = 0;					// Sonst ist es 0
   		if (tat_laenge < vorgabe) {
            if (lokale=="en_GB") Ausgabe += "\n - "+aktName+" (at least "+vorgabe+" chars)";
            else                 Ausgabe += "\n - "+aktName+" (mindestens "+vorgabe+" Zeichen)";
         }
      }
	}
   if ( Ausgabe.length > 0 ) {
	   if (lokale=="en_GB") alert ("Please fill out all marked fields (*).\nThe following fields were not filled out:\n" + Ausgabe);
	   else                 alert ("Bitte alle mit (*) gekennzeichneten Felder ausfüllen.\nFolgende Felder wurden nicht ausgefüllt:\n" + Ausgabe);
      return false;
   }
	return true;
}

// Aus Checkbox Wert in Hidden-Field schreiben
function checkBox(field) {
   var fieldnr = proof_field(field);
   var isChecked = sender.elements[fieldnr].value;
   if (isChecked=="true")
      sender.elements[fieldnr].value = "false";
   else
      sender.elements[fieldnr].value = "true";
}

// Für den Web-Edit:
function web_edit (feld) {
	var ua = navigator.userAgent;
	var oldEditor = ua==null
						 || (ua.indexOf('MSIE')!=-1 && ua.indexOf('Windows NT 4.')!=-1)	// kein IE unter NT
						 || ua.indexOf('MSIE 5.0')!=-1	// kein alter IE
						 || ua.indexOf('MSIE 4.')!=-1;
	if (oldEditor)
		WEB_EDIT = window.open("/html/system/web_edit.htm?fdNummer="+feld,"WebEdit","width=750,height=500,left=0,top=0,screenX=0,screenY=0,dependent=yes;menubar=no,location=no,scrollbars=no,toolbar=no,status=no,resizable=yes");
	else
		WEB_EDIT = window.open("/js_css/system/htmlarea/htmlarea.htm?fdNummer="+feld,"WebEdit","width=750,height=500,left=0,top=0,screenX=0,screenY=0,dependent=yes;menubar=no,location=no,scrollbars=no,toolbar=no,status=no,resizable=yes");
	WEB_EDIT.focus();
}