// Formularpruefung durchfuehren /////////////////////////////////////////////////////////////
/*
* Funktion zur Pruefung von Formulareingaben
* Parameterliste
* 'formObj' : Referenz auf das zu pruefende Formular
* 'elemArray' : Array mit Informationen zu den zu pruefenden Formularelementen
*				elemArray = new Array();
*				elemArray[0] = new Array("Nachname","NeedChar"[,"W"]);
*							Name des Elements-^     ^-durchzufuehrende Pruefung
*							Der 3.Index kann ein bestimmtes Zeichen sein, auf 
*							welches gefprueft werden soll. Wird nur von 'NeedChar'
*							verwendet.
* Pruefoptionen
* 'NotEmpty' : Prueft, ob Element nicht leer ist
* 'IsEmail' : Prufet, ob '@' und '.' enthalten sind
* 'OnlyNum' : Prufet, ob nur Zahlen enthalten sind
* 'NeedChar' : Pruft, ob ein bestimmtes Zeichen enthalten ist (3.Index von 'elemArray')
* 'IsDecimal' : Pruft, ob die Eingabe eine gueltige Dezimalzahl ist. Ganzzahlen werden akzeptiert.
*/

function chkFormElements(formObj,elemArray) {
	for(i in elemArray) {
		//zu pruefendes Formularelement
		var elemObj = document.getElementsByName(elemArray[i][0])[0];
		switch(elemArray[i][1]) {
			case "NotEmpty":
				if(chkFormElementIsEmpty(elemObj)) {
					//pruefen, ob Element eine Auswahlliste ist
					if(elemObj.options) {
						alert(elemObj.name + ": Auswahl erforderlich.");
					}else {
						alert(elemObj.name + ": Eingabe erforderlich.");
					}
					elemObj.focus();
					return false;
				}
				break;
			case "IsEmail":
				if(chkFormElementIsEmpty(elemObj)) {
					alert(elemObj.name + ": Eingabe erforderlich.");
					elemObj.focus();
					return false;
				}else {
					if(!chkFormElementIsEmail(elemObj)) {
						alert(elemObj.name + ": Eingabe fehlerhaft.");
						elemObj.focus();
						return false;
					}
				}
				break;
			case "OnlyNum":
				if(chkFormElementIsEmpty(elemObj)) {
					alert(elemObj.name + ": Eingabe erforderlich.");
					elemObj.focus();
					return false;
				}else {
					if(!chkFormElementOnlyNum(elemObj)) {
						alert(elemObj.name + ": Eingabe fehlerhaft. Bitte nur Zahlen.");
						elemObj.focus();
						return false;
					}
				}
				break;
			case "NeedChar":
				if(chkFormElementIsEmpty(elemObj)) {
					alert(elemObj.name + ": Eingabe erforderlich.");
					elemObj.focus();
					return false;
				}else {
					if(!chkFormElementNeededChar(elemObj,elemArray[i][2])) {
						alert(elemObj.name + ": Eingabe fehlerhaft. '"+elemArray[i][2]+"' nicht enthalten.");
						elemObj.focus();
						return false;
					}
				}
				break;
			case "IsDecimal":
				if(chkFormElementIsEmpty(elemObj)) {
					alert(elemObj.name + ": Eingabe erforderlich.");
					elemObj.focus();
					return false;
				}else {
					if(!chkFormElementIsDecimal(elemObj)) {
						alert(elemObj.name + ": Eingabe fehlerhaft. Bitte nur Zahlen.");
						elemObj.focus();
						return false;
					}
				}
				break;
		}
	}
	
	return true;
}

//Pruefungsfunktionen

//Pruefung, ob Value des Formularelements Dezimalwert enthaelt (',' und'.' wird akzeptiert)
function chkFormElementIsDecimal(elem) {
	var testValue = elem.value.replace(",",".");
	if(isNaN(testValue)) {
		return false;
	}else {	
		return true;
	}
}

//Pruefung, ob Value des Formularelements ein betimmtes Zeichen enthaelt
function chkFormElementNeededChar(elem,neededChar) {
	if(elem.value.indexOf(neededChar) == -1) {
		return false;
	}
	return true;
}

//OnlyNum: Pruefung, ob Value des Formularelements nur Zahlen enthaelt
function chkFormElementOnlyNum(elem) {
	for(var i = 0; i < elem.value.length; ++i) {
		if(elem.value.charAt(i) < "0" || elem.value.charAt(i) > "9") {
			return false;
		}
	}
	return true;
}

//IsEmail: Pruefung, ob Value des Formularelements gueltige E-Mail Adresse
function chkFormElementIsEmail(elem) {
	return (elem.value.indexOf('@') == -1 | elem.value.indexOf('.') == -1 ? false : true);
}

//NotEmpty: Pruefung, ob Formularelement leer ist (TRUE wenn Element leer)
function chkFormElementIsEmpty(elem) {
	return (elem.value == "" ? true : false);
}
// END Formularpruefung //////////////////////////////////////////////////////////////////////

// Image Funktionen //////////////////////////////////////////////////////////////////////////
/*

*/
var imagePreloadFlag = false;

function newImage(arg) {
	if (document.images) {
		rslt = new Image();
		rslt.src = arg;
		return rslt;
	}
}

function changeImage(t,s) {
	if (document.images && (imagePreloadFlag == true)) {
	t.src = eval(s).src;
	}
}

// allgemeine Funktionen /////////////////////////////////////////////////////////////////////
/*

*/
function absLeft(el) {
	return (el.offsetParent)? 
	el.offsetLeft+absLeft(el.offsetParent) : el.offsetLeft;
}

function absTop(el) {
	return (el.offsetParent)? 
	el.offsetTop+absTop(el.offsetParent) : el.offsetTop;
}

function openWindow(tURL,winName,features) { //v2.0
  window.open(tURL,winName,features);
}
