
// Struct mit FeldObjekten
//em_checkFields = new Object()
em_checkFields = new Array()
fldCnt = 0

// Hash mit Fehlermeldungen
em_msgTexts = new Object()

// Klasse für FeldObjekt
function eM_fieldObj (fName,fLabel,fType,fRequires,fCheckfunc,fFormName) {
	this.fName	= fName
	this.fLabel	= fLabel
	this.fType 	= fType
	this.fRequires 	= fRequires
	this.fCheckfunc	= fCheckfunc

	formObj= document.forms[fFormName]
/*	this.formObj = formObj*/
	
	for(var i=0;i<formObj.elements.length;i++) {
		if(formObj.elements[i].name==fName) {
			this.fObj = formObj.elements[i]
			this.fObjElemID=i
			break
		}
	}

/*	function check_value() {
		return eval('(this.fCheckfunc(this)')
	}*/
}

// function eM_checkBefore(submitObj) {
// 	for (var key in em_checkFields) {
// 		fStruct = em_checkFields[key]
// 		gotError = eval(fStruct.fCheckfunc+'(fStruct)')
// 		if (gotError)
// 			break
// 	}
// 	if (gotError) {
// 		errmsg=format_htm2Txt(em_msgTexts[gotError])
// 		alert(fStruct.fLabel+": "+errmsg)
// 		fStruct.fObj.focus()
// 		fStruct.fObj.select()
// 		return false
// 	}
// 	return true
// }

function eM_checkBefore(submitObj) {
	var gotError=false
	for (var i=0;i<em_checkFields.length;i++) {
		fStruct = em_checkFields[i]
		gotError = eval(fStruct.fCheckfunc+'(fStruct)')
		if (gotError)
			break
	}
	if (gotError) {
		errmsg=format_htm2Txt(em_msgTexts[gotError])
		alert(fStruct.fLabel+": "+errmsg)
		fStruct.fObj.select()
		fStruct.fObj.focus()
		return false
	}
	return true
}

function eM_stdCheck(fStruct) {

	var ret = false
	var fObj = fStruct.fObj
	var val=fObj.value
	var req_number=false
	var num_types= new Array("bit", "bool", "boolean", "int", "integer", "tinyint", "smallint", "mediumint", "bigint", "float", "double", "real", "decimal", "dec", "numeric", "fixed");

	// auf zahl checken
	for(var i=0;i<num_types.length;i++) {
		if(num_types[i]==fStruct.fRequires['type']) {
			req_number=true
			break
		}
	}
	if (req_number && isNaN(fObj.value) && fObj.value.length>0) ret = 'NOTNUM'
	
	// Länge checken
	if (fObj.value.length > fStruct.fRequires['maxLen']) ret = '2LONG'
	if (fObj.value.length>0 && fObj.value.length < fStruct.fRequires['minLen']) ret = '2SHORT'
	// required ?
	if (fStruct.fRequires['required'] && fObj.value.length==0) ret = 'EMPTY'
	
	//debug
	//alert(fStruct.fLabel+": "+ fObj.value.length+": maxlen: "+fStruct.fRequires['len'])
	return ret
}

function eM_longTxtCheck(fStruct) {
	return eM_stdCheck(fStruct)
}

function eM_emailCheck(fStruct) {
	var ret = false
	var fObj = fStruct.fObj
	// e-mail check
	if(fObj.value.length>0) {
		if(fObj.value.indexOf("@")==-1)  {
			ret = 'NOTEMAIL'

		} else {
			var erg=true
			var emailRegExp=/^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,4})$/i
			//var emailRegExp=/^[a-z0-9_.-]+@[a-z0-9_.-]+\.[a-z]{2,5}$/gi
			erg = emailRegExp.test(fObj.value)
			if(erg==false) {
				ret = 'NOTEMAIL'
			}
		}
	}

	//stdcheck
	if (!ret) ret = eM_stdCheck(fStruct)
	return ret
}

function eM_checkBoxCheck(fStruct) {
	var ret = false
	var fObj = fStruct.fObj

	var cnt = 0
	var formObj = fObj.form
	
	var i = fStruct.fObjElemID
	
	while(formObj.elements[i].name == fObj.name) {
		if(formObj.elements[i].checked==true) {cnt ++; }
		i++;
	}

	// Länge checken
	if (cnt > fStruct.fRequires['maxLen']) ret = '2LONG'
	if (cnt>0 && cnt < fStruct.fRequires['minLen']) ret = '2SHORT'
	// empty ? 
	if (fStruct.fRequires['required'] && cnt<1) ret = 'EMPTY'

	return ret	
}

function eM_radioCheck(fStruct) {
	var ret = false
	var fObj = fStruct.fObj
	
	var formObj = fObj.form
	var radioLen = eval('formObj.'+fObj.name+'.length')
	
	var cnt=0
	if(radioLen) {
		
		for (var i=0;i<radioLen;i++) {
			if(eval('formObj.'+fObj.name+'[i].checked')==true) { cnt++; break }
		}
	} else {
		if(fObj.checked==true) { cnt++; }
	}
	if (fStruct.fRequires['required'] && cnt<1) ret = 'EMPTY'

	return ret
}

function eM_SelectBoxCheck(fStruct) {
	var ret = false
	var fObj = fStruct.fObj
	var cnt = 0
	for (var i=0;i<fObj.options.length;i++) {
		if(fObj.options[i].selected==true) { cnt++; break }
	}
	if (fStruct.fRequires['required'] && cnt<1) ret='EMPTY'
	return ret
}

function eM_pwdCheck(fStruct) {
	var ret = false
	var formObj = fStruct.fObj.form
	var fObj_a = fStruct.fObj
	var fObj_b = formObj.elements[fStruct.fObjElemID+1]
	var fObj_c = formObj.elements[fStruct.fObjElemID+2]
	
	// e-mail check
	if(fObj_a.value != fObj_b.value) ret='NOTEQUAL'
	//stdcheck
	if (!ret) ret = eM_stdCheck(fStruct)
	return ret
}


function confdel() {
	return confirm(delwarning);
}

//für die alert ausgabe
function format_htm2Txt(htmTxt) {
	var tmp
	htmTxt = htmTxt.replace(/&auml;/,"ä")
	htmTxt = htmTxt.replace(/&ouml;/,"ö")
	htmTxt = htmTxt.replace(/&uuml;/,"ü")
	htmTxt = htmTxt.replace(/&Auml;/,"Ä")
	htmTxt = htmTxt.replace(/&Ouml;/,"Ö")
	htmTxt = htmTxt.replace(/&Uuml;/,"Ü")
	return htmTxt
}