
function initdiv(){
	
	if(!document.all && document.getElementById('idBody')){
		var objBody = document.getElementById('idBody');
		var objContent = document.getElementById('idContent');
		var objContentDiv = document.getElementById('idContentDiv');
		
		//alert(document.getElementById('main').offsetTop);
		var strWidth = new String(parseInt(objBody.clientWidth-(objContent.offsetLeft+25))+'px');
		var strHeight = new String(parseInt(objBody.clientHeight-(objContent.offsetTop+10))+'px');
		//alert('Hφhe;'+objBody.clientHeight +'\n Breite:'+ objBody.clientWidth+'\n links:'+ objContent.offsetLeft +'\n oben:'+ objContent.offsetTop);
		//var strWidth = new String(parseInt(window.innerWidth-document.getElementById('main').offsetLeft-75)+'px');
		//document.getElementById('roottable').style.height = strHeight;
		objContentDiv.style.height = strHeight;
		objContentDiv.style.width = strWidth;
		objBody.style.height = objBody.clientHeight+'px';
		objBody.style.width = objBody.clientWidth+'px';
		//alert('Hφhe;'+ strHeight +'\n Breite:'+ strWidth);
		//alert(strWidth);
	}
}
if(!document.all){
	window.onresize = function() { initdiv(); }
};

//Setzt die E-mailadresse wieder richtig zusammen und f&uuml;hrt den Befehl wieder richtig zusammen
function mail(strMail,strExtra){var strNewMail = '';for (x = strMail.length ; x >=0;x--)strNewMail =  strNewMail + strMail.substr(x,1);document.location = 'mailto:' + strNewMail+strExtra;};
//Setzt den Statusbartext
function StatusbarMail(strMail){var strNewMail = '';for (x = strMail.length ; x >=0;x--)strNewMail =  strNewMail + strMail.substr(x,1);window.status = 'mailto:' + strNewMail;};

var pics = new Array();

function setPicture(index){
	//alert(document.all);
	if (typeof document.all != 'undefined'){
		var img = document.all("picture");
		var ssearch = /none/;
		if (ssearch.test(pics[index].src)){
			img.src = "images/clear.gif";
		}
		else{
			img.src = pics[index].src;
			img.width = pics[index].width;
			img.height = pics[index].height;
		}
	}
	else{
		var ssearch = /none/;
		var myLayer = document.layers['pictureLayer'];
		if (ssearch.test(pics[index].src)){
			myLayer.visibility = "hide";
		}
		else{
			var s = "<img src=\""+pics[index].src+"\" border=\"0\" width=\""+pics[index].width+"\" height=\""+pics[index].height+"\" name=\"picture\" id=\"picture\">"; 
			myLayer.document.write(s);
			myLayer.document.close();
			myLayer.visibility = "show";
		}
	}
};
function clearPicture(){
	if(document.all)
		document.all("picture").src = "images/clear.gif";
	else
		document.layers['pictureLayer'].visibility = "hide";
};

// ALT ---
var sModulName10 = "main.js";

var wddxRS = null;
/*	
-----------------------------------------------------------
| <<>> E V E N T S <<>>
-----------------------------------------------------------
| function OnLoad(Err,wddxRs) 
| function OnMouseOver(dynele,item) 
| function OnMouseOut(dynele,item) 
| function keyForm(key)
-----------------------------------------------------------
-----------------------------------------------------------
| <<>> D A T A   M A N I P U L A T I N <<>> 
-----------------------------------------------------------
| function onChange(wddxRs,ctl,bLinked) 
| function submit(wddxRs) 
| function deleteData(dynele,wddxRs,rowId) 
| function editData(dynele,wddxRs,rowId) 
| function newData(dynele,wddxRs) 
| function saveData(dynele,wddxRs)
-----------------------------------------------------------
-----------------------------------------------------------
| <<>> V A L I D I  E R U N G <<>> 								  |
-----------------------------------------------------------
| function validation(dynele,wddxRs) 
| function ctlValidation(ctl,validCheckValue,ctlCaption)
-----------------------------------------------------------

-----------------------------------------------------------
| <<>> S O R T I E R U N G <<>>  								  |
-----------------------------------------------------------
| function Header(dynele,col, wddxRs)
-----------------------------------------------------------
*/
// <<>>
// <<>>                            <<>>
// <<>>
var imagebtn = new Array();				// Images Array mit den Action Buttons
var imgPath ="images/app/";					// Pfad Angabe fir die Images
var bEdit = false;						// Edit Flag True wenn daten geaendert wurden
var row = -1;							// Row ID des zuletzt bearbeitenden Datensatz 
var d = null;

var checked_gif = '<IMG BORDER="0" SRC= "' + imgPath + 'checked.gif">';
var unchecked_gif = '<IMG BORDER="0" SRC= "' + imgPath + 'unchecked.gif">';

var down_gif = '<IMG BORDER="0" SRC= "' + imgPath + 'down.gif">';
var up_gif = '<IMG BORDER="0" SRC= "' + imgPath + 'up.gif">';

imagebtn["delete_o"]= new Image(); 
imagebtn["delete_o"].src = imgPath + "delete_o.gif";

imagebtn["delete"]=new Image(); 
imagebtn["delete"].src = imgPath + "delete.gif";		

imagebtn["edit_e"]=new Image(); 
imagebtn["edit_e"].src = imgPath + "edit_e.gif";

imagebtn["edit_o"]=new Image(); 
imagebtn["edit_o"].src = imgPath + "edit_o.gif";

imagebtn["edit"]=new Image(); 
imagebtn["edit"].src = imgPath + "edit.gif";	

imagebtn["new_o"]=new Image(); 
imagebtn["new_o"].src = imgPath + "new_o.gif";

imagebtn["new"]=new Image(); 
imagebtn["new"].src = imgPath + "new.gif";		

imagebtn["save_o"]=new Image(); 
imagebtn["save_o"].src = imgPath + "save_o.gif";

imagebtn["save"]=new Image(); 
imagebtn["save"].src = imgPath + "save.gif";	

imagebtn["xls_o"]=new Image(); 
imagebtn["xls_o"].src = imgPath + "xls.gif";

imagebtn["xls"]=new Image(); 
imagebtn["xls"].src = imgPath + "xls.gif";	

imagebtn["html_o"]=new Image(); 
imagebtn["html_o"].src = imgPath + "html.gif";

imagebtn["html"]=new Image(); 
imagebtn["html"].src = imgPath + "html.gif";	

// <<>>
// <<>>          E v e n t s                                                 <<>>
// <<>>

// '=========================================================
// ' OnLoad()
// '  
// '  Zweck
// '		Wir beim laden der Seite aufgerufens
// '  Parameter
// '		none
// '  Return
// '		none
// '=========================================================		
function OnLoad(Err,wddxRs,bDayGraph){
	
	// dDayGraph = dDayGraph? true :false
	row = -1;	
	dyneleErr = Err;
	// nur fuer Key Down event auf dem Formular
	wddxRS = wddxRs;
	
	if (bDayGraph == true){
		wddxRs.dayGraph = true;
		buildDayGraph(wddxRs);
	}
	//d1ynWDDXDETAILrs.moveTo(dynWDDXMASTERrs.getX(),dynWDDXMASTERrs.getY()+dynWDDXMASTERrs.getHeight());
	
	//alert(dynWDDXMASTERrs.getHeight());

	switch(wddxRs.tableTyp){
		case 1:	//Edit und Liste	-> Edit Controls ,New,Edit und Delete Button und Liste
				//editData();
				break;
		case 4:	//Edit				-> Controls und Save Button 	
		case 5:	//Edit				-> Controls und Save Button 	
				
				if (wddxRs.getRowCount()>0)
					// Datensatz vorhanden
					editData(eval('dyn'+ wddxRs.wddxName),wddxRs,0);
					var wddxConfig = eval(wddxRs.wddxConfig);
					var colNames = wddxRs.getFieldNames();
					for (var x=0; x < colNames.length; x++){
						// Seite neu laden um die Farben zu aktualisieren
						if (wddxConfig.getField(wddxRs.lRowCtlTyp,colNames[x])==TYP_COLOR){
							wddxRs.reloadWDDXrs();
							break;
						}
					}
				break;
		case 2: //Liste				-> New,Edit und Delete Button (keine Controls)
				break;
		case 3:	//Checkbox Liste	-> Checkbox und Liste
				break;
	}
	// Fehlermeldung ausgeben falls vorhanden 		
	if (typeof errorMsg == "object")
		showError(dyneleErr,errorMsg);
};

// '=========================================================
// ' OnMouseOver()
// '  
// '  Zweck
// '		Ersetz die Icons beim Mouse Over
// '  Parameter
// '		item : Itemname
// '  Return
// '		none
// '=========================================================			
function OnMouseOver(dynele,item){
	var srcbtn = "";
	if(item.search(/delete/i)!=-1)
		srcbtn ="delete_o";
	if(item.search(/edit/i)!=-1)
		srcbtn = "edit_o";
	if(item.search(/new/i)!=-1)
		srcbtn = "new_o";
	if(item.search(/save/i)!=-1)
		srcbtn = "save_o";
	if(item.search(/html/i)!=-1)
		srcbtn = "html";
	if(item.search(/xls/i)!=-1)
		srcbtn = "xls";
	//debug(sModulName10,typeof imgLast != 'undefined');
	//debug(sModulName10,document.images[item] != imgLast);

	if (is.nav4up){
		if (typeof imgLast == 'undefined' && dynele.layer.document.images[item] != imgLast)
			dynele.layer.document.images[item].src = imagebtn[srcbtn].src;
		//document.INPUTCONTROL.document.GRID.document.images[item].src = imagebtn[srcbtn].src;
	}
	else{
		if (checkEdit(srcbtn,item)){
			document.images[item].src = imagebtn[srcbtn].src;
		}
	}
};

// '=========================================================
// ' OnMouseOver()
// '  
// '  Zweck
// '		Ersetz die Icons beim Mouse Out
// '  Parameter
// '		item : Itemname
// '  Return
// '		none
// '=========================================================			
function OnMouseOut(dynele,item){
	var srcbtn = "";
	if(item.search(/delete/i)!=-1)
		srcbtn ="delete";
	if(item.search(/edit/i)!=-1)
		srcbtn = "edit";
	if(item.search(/new/i)!=-1)
		srcbtn = "new";
	if(item.search(/save/i)!=-1)
		srcbtn = "save";
	if(item.search(/html/i)!=-1)
		srcbtn = "html";
	if(item.search(/xls/i)!=-1)
		srcbtn = "xls";

	if (is.nav4up){
		if (typeof imgLast == 'undefined' && dynele.layer.document.images[item] != imgLast)
			dynele.layer.document.images[item].src = imagebtn[srcbtn].src;
		//document.INPUTCONTROL.document.GRID.document.images[item].src = imagebtn[srcbtn].src;
	}
	else{
			if (checkEdit(srcbtn,item))
				document.images[item].src = imagebtn[srcbtn].src;
	}
};
function OnClick(dynele,item){
	var srcbtn = "edit_e";
	if (typeof imgLast != 'undefined')
			imgLast.src =  imagebtn['edit'].src;;
	if (is.nav4up){
		dynele.layer.document.images[item].src = imagebtn[srcbtn].src;
		imgLast = dynele.layer.document.images[item];
	}
	else{
		document.images[item].src = imagebtn[srcbtn].src;
		imgLast = document.images[item];	
	}

};
function checkEdit(srcbtn,item){
	if (typeof imgLast == 'undefined')
		return true;
	else if (document.images[item] == imgLast && (srcbtn == "edit" || srcbtn == "edit_o")){
		//debug(sModulName10,'overimage: '+ document.images[item].name);
		//debug(sModulName10,'lastimage: '+ imgLast.name);
		return false;
	}
	else{
		//debug(sModulName10,'overimage: '+ document.images[item].name);
		//debug(sModulName10,'lastimage: '+ imgLast.name);
		return true;
	}
}
// '=========================================================
// ' keyForm()
// '  
// '  Zweck
// '		Key Down Events 
// '  Parameter
// '		Key 
// '  Return
// '		none
// '=========================================================			
function keyForm(key){
	switch(key){
		case I_COPY:
			row = -1;
		case I_ENTER:
		case I_SAVE:
			bEdit = true;
			saveData(eval('dyn'+ wddxRS.wddxName),wddxRS);
			break;
	}
};

// '=========================================================
// ' onChange()
// '  
// '  Zweck
// '		Setzt Edit Flag und pruft die Eingabe
// '  Parameter
// '		ctl : Control
// '  Return
// '		none
// '=========================================================
function onChange(wddxRs,ctl,bLinked){
	var colNames = wddxRs.getFieldNames();

	// debug(sModulName10,'On Change '+ ctl.name +'->'+ ctl.value);
	var validCheckValue;
	
		validCheckValue = eval(wddxRs.wddxConfig + '.getField(wddxRs.lRowValidCheck, ctl.name)');
		//alert(validCheckValue);
		if (validCheckValue != ''){
			// Validierung
			if (ctlValidation(ctl,validCheckValue, eval(wddxRs.wddxConfig + '.getField(wddxRs.lRowCaption, ctl.name)'))){
				// Linked Combo (SELECT)
				if (ctl.type == 'select-one' && bLinked){
					bReload = true;
					wddxRs.reloadWDDXrs(ctl,false);
					bReload = false;
					for(var x = 0; x < colNames.length; x++){
						if (colNames[x] == ctl.name){
							nextCtl = colNames[x+1];
							break;
						}
					}
					if (nextCtl){
						var frm = eval('dyn'+wddxRs.wddxName+'.frm()');
						frm.elements[nextCtl].focus();
					}
				}
			}
		}
		else{
			// Linked Combo (SELECT)
			if (ctl.type == 'select-one' && bLinked)
				//alert('Test')
				wddxRs.reloadWDDXrs(ctl,false);
		}
	bEdit = true;	// Edit Flag setzen
	return true;
};
// '=========================================================
// ' onChangeTime()
// '  
// '  Zweck
// '		Ueberprueft Zeiteingabe und setz Edit Flag
// '  Parameter
// '		wddxRs: 		verwis auf das wddxRS
// '		ctl:			verweis auf das ZeitControl
// '		hiddenctl:	verweis auf das unsichtbre ZeitControl
// '  Return
// '		none
// '=========================================================
function onChangeTime(wddxRs,ctl,hiddenCtl){
	// debug(sModulName10,'ctl Hidden Value '+ hiddenCtl.name +'->'+ hiddenCtl.value);

	inputTime(ctl);
	
	var frm = eval('dyn' + wddxRs.wddxName + '.frm()');
	
	frm.elements['consumation_qty'].value = CalcHours(frm.elements['timeconsumation_fromdate'],frm.elements['timeconsumation_untildate']);
	
	if (hiddenCtl.value == ''){
		myDate = CalendarDay;
	}
	else
		myDate = new Date(hiddenCtl.value);
	// debug(sModulName10,'Date :::'+myDate.toString());
	// debug(sModulName10,'ctlValue :::'+ ctl.value);
	var time = ctl.value.split(':');
	myDate.setHours(time[0]);
	myDate.setMinutes(time[1]);
	hiddenCtl.value = myDate.toString();
	bEdit = true;	// Edit Flag setzen
	return;
};

// '=========================================================
// ' onEditDate()
// '  
// '  Zweck
// '		Ueberprueft Zeiteingabe und setz Edit Flag
// '  Parameter
// '		e:	 			event
// '		wddxRs: 		verwies auf das wddxRS
// '		ctl:			verweis auf das ZeitControl
// '		hiddenctl:	verweis auf das unsichtbre ZeitControl
// '  Return
// '		none
// '=========================================================
function onEditDate(e,wddxName,ctl,dateCtl){
	setDateField(dateCtl,ctl);
	if (is.nav4up){
		top.newWin = window.open('calendar.html','cal','dependent=yes,width=210,height=250,screenX='+ e.screenX +',screenY='+ (e.screenY+10) +',titlebar=no');
	}
	else if (is.ie4up){
		var l_left = ctl.form.document.parentWindow.self.screenLeft + ctl.form.parentElement.offsetLeft + ctl.offsetParent.offsetLeft - ctl.document.body.scrollLeft;
		var l_top = ctl.form.document.parentWindow.self.screenTop + ctl.form.parentElement.offsetTop  + ctl.offsetParent.offsetTop +ctl.offsetHeight-ctl.document.body.scrollTop;
		top.newWin = window.open('calendar.html','cal','dependent=yes,width=210,height=250,left='+l_left+',top='+l_top);  
		}
	top.newWin.focus();
	bEdit = true; 	// Edit Flag setzen
};

// '=========================================================
// ' onEditColor()
// '  
// '  Zweck
// '		Ueberprueft Zeiteingabe und setz Edit Flag
// '  Parameter
// '		e:	 			event
// '		wddxRs: 		verwies auf das wddxRS
// '		ctlhidden:	verweis auf das hidden control
// '		ctl:			verweis auf den Button
// '  Return
// '		none
// '=========================================================
function onEditColor(e,wddxName,ctl,ctlHidden){
	setColor(ctl,ctlHidden,1);
	if (is.nav4up){
		top.newWin = window.open('colorslider.html','col','dependent=yes,width=530,height=160,screenX='+ e.screenX +',screenY='+ (e.screenY+10) +',titlebar=no');
	}
	else if (is.ie4up){
		var l_left = ctl.form.document.parentWindow.self.screenLeft + ctl.form.parentElement.offsetLeft + ctl.offsetParent.offsetLeft - ctl.document.body.scrollLeft;
		var l_top = ctl.form.document.parentWindow.self.screenTop + ctl.form.parentElement.offsetTop  + ctl.offsetParent.offsetTop +ctl.offsetHeight-ctl.document.body.scrollTop;
		top.newWin = window.open('colorslider.html','col','dependent=yes,width=530,height=160,left='+l_left+',top='+l_top);  
		top.newWin.focus();
		}
	//top.newWin.window.setColorField(ctl,ctlHidden);
	bEdit = true; 	// Edit Flag setzen
};

function showedit(e,wddx,objHref,sHiddenCtl,sCaption,sValue,readOnly){
	var hiddenCtl = null;
	var ctlValue = '';
	if (readOnly == true){
		ctlValue = sValue;
	}
	else{	
		hiddenCtl = eval('dyn' +wddx.wddxName +'.frm().elements[sHiddenCtl]');
		ctlValue = hiddenCtl.value; 
	}
	
	if (is.nav4up){
		showEditWin(ctlValue,sCaption,e.screenX,e.screenY+10,hiddenCtl);
	}
	else if (is.ie4up){
		var form = eval('dyn' +wddx.wddxName +'.frm()');
		var l_left = form.document.parentWindow.self.screenLeft + form.parentElement.offsetLeft + objHref.offsetParent.offsetLeft - form.document.body.scrollLeft;
		var l_top = form.document.parentWindow.self.screenTop + form.parentElement.offsetTop  + objHref.offsetParent.offsetTop +objHref.offsetHeight-form.document.body.scrollTop;
		// debug(sModulName10,'left:'+ l_left + 'top:'+ l_top);
		showEditWin(ctlValue,sCaption,l_left,l_top +5,hiddenCtl);
	}
	bEdit = true;
};

// '=========================================================
// '  approveDay()
// '  
// '  Zweck
// '		Setz das Approvlevel auf das WDDX Recordset 
// '  Parameter
// '		wddxrs		: 	WDDX Recordset
// '     col  			:	Spalte mit dem Approval Level 
// '     level  		:	+1 oder -1 
// '     lmin  		:	Min Approval Level 
// '     lmax  		:	Max Approval Level 
// '  Return
// '		none
// '=========================================================
function approve(wddxrs,col,level,lmin,lmax){
	// rowsecurity
	var lrowLevel = 0;
	for(var x=0;x<wddxrs.getRowCount();x++){
		lrowLevel = wddxrs.getField(x,col);
		if (wddxrs.getField(x,'rowsecurity')>1 && (lrowLevel > lmin && level == -1)||(lrowLevel < lmax && level == 1)){
			wddxrs.setField(x,col,wddxrs.getField(x,col)+level);
			wddxrs.setField(x,'dbaction','u');
		}
	}	
	eval('dyn' + wddxrs.wddxName +'.setBody(wddxrs.buildHtml())');
};

// '=========================================================
// '  approveDay()
// '  
// '  Zweck
// '		Setz das Approvlevel fuer den ausgewaehlten Tag 
// '  Parameter
// '		wddxrs		: 	WDDX Recordset
// '     col  			:	Spalte mit dem Approval Level 
// '     level  		:	+1 oder -1 
// '     colDate  	:	Spalten Name des Datums 
// '     myDate  		:	Datum zum Approven 
// '     lmin  		:	Min Approval Level 
// '     lmax  		:	Max Approval Level 
// '  Return
// '		none
// '=========================================================
function approveDay(wddxrs,col,level,colDate,myDate,lmin,lmax){
	var lrowLevel = 0;
	for(x=0;x<wddxrs.getRowCount();x++){
		if(formatDate(new Date(myDate)) == formatDate(new Date(wddxrs.getField(x,colDate)))){
			lrowLevel = wddxrs.getField(x,col);
			if (wddxrs.getField(x,'rowsecurity')>1 && (lrowLevel > lmin && level == -1)||(lrowLevel < lmax && level == 1)){
				wddxrs.setField(x,col,wddxrs.getField(x,col)+level);
				wddxrs.setField(x,'dbaction','u');
			}
		}
	}	
	eval('dyn' + wddxrs.wddxName +'.setBody(wddxrs.buildHtml())');
};

// <<>>
// <<>>          D a t a  M a n i p u l a t i o n                           <<>>
// <<>>

function changeDay(sTarget,sDay){
	frm = document.forms['SUBMIT'];
	frm.TXT_DATE.value = sDay;
	frm.action = sTarget;
	frm.submit();
};
// '=========================================================
// '  submit()
// '  
// '  Zweck
// '		Uebermittelt das Formular
// '  Parameter
// '		
// '  Return
// '		none
// '=========================================================
function submit(wddxRs,bReport){
	var frm = document.forms['SUBMIT'];
	var rowCount = wddxRs.getRowCount();
	var colNames = wddxRs.getFieldNames();
	var ctl = null;
	
	if(bReport)
		frm.target ='new';
		
	// debug(sModulName10,'target' +frm.target);

	for (var x = rowCount -1 ;x >= 0; x--){
		if (wddxRs.getField(x,'dbAction') == '' || wddxRs.getField(x,'dbAction') == null)
			wddxRs.deleteRow(x);
		else if (wddxRs.getField(x,'dbAction') == 'n'){ // n = new (alle Daten in der Zeile auf -1 setzen) nur bei Master Detail
			for (y=0; y < colNames.length; y++){
				if (colNames[y]!='dbaction')
					wddxRs.setField(x,colNames[y],-1)
			}
		}
	}
	// Action Spalte loeschen
	wddxRs.deleteCol('action');
	
	// debug(sModulName10,'Debug:' +wddxRs.debug);
	if (wddxRs.debug)	
		wddxRs.dump();
	
	var WDDXSer = new WddxSerializer();
	ctl = frm.elements['TXT_' + wddxRs.wddxName]; 
	ctl.value = WDDXSer.serialize(wddxRs,true);
	

	if(((wddxRs.tableTyp == 4 || wddxRs.tableTyp == 5) && !bReport && typeof WDDXDETAILrs == 'object') || typeof WDDXDETAILrs == 'object'){
		wddxRs = WDDXDETAILrs;
		var rowCount = wddxRs.getRowCount();
		for (var x = rowCount -1 ;x >= 0; x--){
			if (wddxRs.getField(x,'dbAction') == '')
				wddxRs.deleteRow(x)
		}
		if (wddxRs.debug)	
			wddxRs.dump();
		ctl = frm.elements['TXT_' + wddxRs.wddxName]; 	
		ctl.value = WDDXSer.serialize(wddxRs,true);		
		
		var wddxRsExt = null;
		for (var counter = 1; counter <= wddxRs.items; counter++){
			wddxRsExt = eval(wddxRs.wddxName + counter.toString());
			var rowCount = wddxRsExt.getRowCount();
			for (var x = rowCount -1 ;x >= 0; x--){
				if (wddxRsExt.getField(x,'dbAction') == '')
					wddxRsExt.deleteRow(x)
			}
			if (wddxRsExt.debug)	
				wddxRsExt.dump();
				
			ctl = frm.elements['TXT_' + wddxRsExt.wddxName]; 	
			ctl.value = WDDXSer.serialize(wddxRsExt,true);
			counter ++;
		}

	}
	if(wddxRs.tableTyp == 1 && bMasterDetail){
		wddxRs = WDDXMASTERrs;
		var rowCount = wddxRs.getRowCount();
		wddxRs.setField(wddxRs.hiddenRow,'dbaction','e');
		for (var x = rowCount -1 ;x >= 0; x--){
			if (wddxRs.getField(x,'dbAction') == '')
				wddxRs.deleteRow(x)
		}
		// if (wddxRs.debug)	
			wddxRs.dump();
		
		ctl = frm.elements['TXT_' + wddxRs.wddxName]; 
		ctl.value = WDDXSer.serialize(wddxRs,true);
	}

	frm.submit();
	return 0;
};

// '=========================================================
// '  deleteData()
// '  
// '  Zweck
// '		Loescht den Datensatz
// '  Parameter
// '		rowID
// '  Return
// '		none
// '=========================================================
function deleteData(dynele,wddxRs,rowId){
	wddxRs.setField(rowId,'dbaction','d');
	if (wddxRs.tableTyp == TABLE_CTL_LISTE_VERTIKAL){
		var master= eval(WDDXMASTERrs);
		master.setField(0,'dbaction','y');
		submit(master);
	}
	else
		submit(wddxRs);
	return;
};

// '=========================================================
// '  editData()
// '  
// '  Zweck
// '		Fuellt die Controls
// '  Parameter
// '		rowID : optional - wird die rowId Nicht angegeben
// '                wir die erste sichtbare Zeile genommen
// '  Return
// '		none
// '=========================================================
function editData(dynele,wddxRs,rowId){

	row = rowId;
	//alert('Edit : TableTyp =' + wddxRs.tableTyp);
	
	switch(wddxRs.tableTyp){
		case TABLE_CTL_LISTE:	//Edit und Liste	-> Edit Controls ,New,Edit und Delete Button und Liste
		case TABLE_CTL_HORIZONT:	//Edit				-> Controls und Save Button bei MD
		case TABLE_CTL_VERTIKAL:	//Edit				-> wie 4 
		case TABLE_CTL_LISTE_VERTIKAL:
		
				var colNames = wddxRs.getFieldNames();
				var columnCount = colNames.length;
				var ctlValue;
				var ctlHiddenDate;
				var wddxConfig = eval(wddxRs.wddxConfig);
				if (row == wddxRs.getRowCount())
					return;
				for (i = wddxRs.hiddenCol; i < columnCount; ++i){
					ctlHiddenDate = '';
					// Leerzeichen entfernen
					//alert(wddxRs.getField(row, colNames[i]));
					switch(typeof wddxRs.getField(row, colNames[i])){
						case "string" :
										// alert('string' +wddxRs.getField(row, colNames[i]));
										ctlValue = wddxRs.getField(row, colNames[i]).replace(/null/,'');
										break;
						case "number" :
											ctlValue = wddxRs.getField(row, colNames[i]);
										break;
						case "boolean":
											ctlValue = (parseInt(wddxRs.getField(row, colNames[i]),10))?true:false;
										break;
					 	case "object" :
											// debug(sModulName10,'object:' +wddxRs.getField(row, colNames[i]));
											var elem =  wddxRs.getField(row, colNames[i]);
											if (elem == null)
												ctlValue = '';
											else if (typeof(elem.getTimezoneOffset) == "function" &&
												typeof(elem.toGMTString) == "function"){
												ctlHiddenDate = elem;
												
												var myDate = new Date(elem);
												// Pruefen on Datum oder Zeit 
												if (wddxConfig.getField(wddxRs.lRowCtlTyp,colNames[i]) == 20) // Zeit 
													ctlValue = formatTime(myDate);
												else // Datum 
													ctlValue = formatDate(myDate);				
											}
											else
												ctlValue = wddxRs.getField(row, colNames[i]);
											// debug(sModulName10,'ctlValue:' +ctlValue);
											// debug(sModulName10,'elem value:' +ctlHiddenDate);
										break;
					}
					
					switch(wddxConfig.getField(wddxRs.lRowCtlTyp, colNames[i])){
						case TYP_TEXT:			// TextBox
						case TYP_PASSWORD:	// Password	
						case TYP_COLOR:
								// alert(dynele.frm().elements[colNames[i]].name + " : "+ ctlValue);
								// Hidden Date Control	
								dynele.frm().elements[colNames[i]].value = ctlValue;
								break;
						case TYP_DATE:  		// Date
								// alert(ctlHiddenDate);
								dynele.frm().elements[colNames[i]].value = ctlHiddenDate;
								// User Date
								dynele.frm().elements['date'+ colNames[i]].value = ctlValue;
								//eval(frm + '.' + colNames[i] + '.value = "' + ctlValue + '"');
								break;
						case TYP_TIME: 		// Time 
								// alert(ctlHiddenDate);
								dynele.frm().elements[colNames[i]].value = ctlHiddenDate;
								// debug(sModulName10,'hidden Date value '+ dynele.frm().elements[colNames[i]].name+'->' +dynele.frm().elements[colNames[i]].value);
								// User Date
								dynele.frm().elements['time'+ colNames[i]].value = ctlValue;
								//eval(frm + '.' + colNames[i] + '.value = "' + ctlValue + '"');
								break;
						case TYP_EDIT: 		// EDIT 
								dynele.frm().elements[colNames[i]].value = ctlValue;
								break;
						case TYP_RADIO:		// Radio
						case TYP_CHECKBOX: 	// CheckBox
								dynele.frm().elements[colNames[i]].checked = ctlValue;
								// eval(frm + '.' + colNames[i] + '.checked = ' + ctlValue);
								break;
						case TYP_SELECT: 		// Select
								ctlValue = ctlValue || -1;
								selectCBO(dynele.frm().elements[colNames[i]],eval('"' + ctlValue + '"'));
								// eval('selectCBO(' + frm + '.' + colNames[i] + ',"' + parseInt(ctlValue,10) + '")');
						case TYP_SELECT_M: 	// Select Linked
						case TYP_SELECT_L:								
								// debug(sModulName10,'ctlValue cbo'+colNames[i]+':'+ ctlValue);
								wddxConfig.setField(wddxRs.lRowCtlValue, colNames[i],ctlValue);
								break;
					}
				}
				if (wddxRs.hasLinkedCtl){
					//alert('reload');
					wddxRs.reloadWDDXrs(null,true);
					for (i = wddxRs.hiddenCol; i < columnCount; ++i){
						switch(typeof wddxRs.getField(row, colNames[i])){
							case "object" :
								// debug(sModulName10,'object:' +wddxRs.getField(row, colNames[i]));
								var elem =  wddxRs.getField(row, colNames[i]);
								if (elem == null)
									ctlValue = '';
								else if (typeof(elem.getTimezoneOffset) == "function" &&
									typeof(elem.toGMTString) == "function"){
									ctlHiddenDate = elem;
									
									var myDate = new Date(elem);
									// Pruefen on Datum oder Zeit 
									if (wddxConfig.getField(wddxRs.lRowCtlTyp,colNames[i]) == 20) // Zeit 
										ctlValue = formatTime(myDate);
									else // Datum 
										ctlValue = formatDate(myDate);				
								}
								else
									ctlValue = wddxRs.getField(row, colNames[i]);
								
								// debug(sModulName10,'ctlValue:' +ctlValue);
								// debug(sModulName10,'elem value:' +ctlHiddenDate);
							break;
						}
						switch(wddxConfig.getField(wddxRs.lRowCtlTyp, colNames[i])){
							case TYP_TIME: 		// Time 
							case TYP_DATE: 		// Date
								dynele.frm().elements[colNames[i]].value = ctlHiddenDate;
								break;
						}
					}
					
				}
				break;
		case TABLE_LISTE: //Liste				-> New,Edit und Delete Button (keine Controls)
				wddxRs.setField(row,'dbaction','e');
				submit(wddxRs);
				break;
		case TABLE_CHECKBOX:	//Checkbox Liste	-> Checkbox und Liste
				break;
	}
	return;
};	
// '=========================================================
// ' newData()
// '  
// '  Zweck
// '		Neuer Datensatz
// '  Parameter
// '		none
// '  Return
// '		none
// '=========================================================
function newData(dynele,wddxRs){
	switch(wddxRs.tableTyp){
		case TABLE_CTL_LISTE:	//Edit und Liste	-> Edit Controls ,New,Edit und Delete Button und Liste
		case TABLE_CTL_LISTE_VERTIKAL:
				var colNames = wddxRs.getFieldNames();
				var columnCount = colNames.length;
				row = -1;
				for (i = wddxRs.hiddenCol; i < columnCount; ++i){
					switch(eval(wddxRs.wddxConfig +'.getField(wddxRs.lRowCtlTyp, colNames[i])')){
						case TYP_TEXT:	// TextBox
						case TYP_PASSWORD:	// Password
						case TYP_EDIT:
						case TYP_COLOR:
								dynele.frm().elements[colNames[i]].value = "";
								//eval(frm + '.' + colNames[i] + '.value = ""');
								break;
						case TYP_DATE:  // Date	
								// Button	
								dynele.frm().elements['date'+colNames[i]].value = "          ";
								// Hidden Ctl 
								dynele.frm().elements[colNames[i]].value = "";
								break;
						case TYP_TIME: // Time
								// Time Input	
								dynele.frm().elements['time'+colNames[i]].value = "";
								// Hidden Ctl 
								dynele.frm().elements[colNames[i]].value = "";
								break;
						case TYP_RADIO:	// Radio
						case TYP_CHECKBOX: // CheckBox
								dynele.frm().elements[colNames[i]].checked = false;
								//eval(frm + '.' + colNames[i] + '.checked = false');
								break;
						case TYP_SELECT: // Select
						case TYP_SELECT_M: // Select Linked
						case TYP_SELECT_L:
								selectCBO(dynele.frm().elements[colNames[i]],eval('"' + -1 + '"'));
								//eval('selectCBO(' + frm + '.' + colNames[i] + ',"' + -1 + '")');
								break;		
					}
				}
				break;
		case TABLE_CTL_HORIZONT:	//Edit				-> Controls und Save Button 	
		case TABLE_CTL_VERTIKAL:
				break;
		case TABLE_LISTE: //Liste				-> New,Edit und Delete Button (keine Controls)
				wddxRs.setField(0,'dbaction','n');			
				submit(wddxRs);
				break;
		case TABLE_CHECKBOX:	//Checkbox Liste	-> Checkbox und Liste
				break;
	}	
	return;
};		

// '=========================================================
// '  saveData()
// '  
// '  Zweck
// '		Speichert die Aenderungen und schickt sie zurueck
// '  Parameter
// '		
// '  Return
// '		none
// '=========================================================
function saveData(dynele,wddxRs,dbaction){
	var colNames = wddxRs.getFieldNames();
	var columnCount = colNames.length;

	switch(wddxRs.tableTyp){
		case TABLE_CTL_LISTE_VERTIKAL:
			if (wddxRs.wddxName != 'WDDXMASTERrs'){
				var master= eval(WDDXMASTERrs);
				if (row == -1){
					master.setField(0,'dbaction','y');
				}
				master.setField(row,'dbaction','y');
			} 
		case TABLE_CTL_LISTE:	//Edit und Liste	-> Edit Controls ,New,Edit und Delete Button und Liste
		case TABLE_CTL_HORIZONT:	//Edit				-> Controls und Save Button 	
		case TABLE_CTL_VERTIKAL:	//Edit				-> Controls und Save Button 	
				// Reports und Approve , Edit Flag muss immer gesetzt sein, sonst muss der Benutzer bei der gleichen abfrage immer ein Feld aendern
				if(typeof dbaction != 'undefined')
					bEdit = true;
				if (validation(dynele,wddxRs) == false)
					return;	// falsche Eingabe -> Abruch
				//alert(row);
				// Neuer Datensatz
				if (row == -1){
					// alert('insert');
					wddxRs.addRows(1);
					row = wddxRs.getRowCount()-1;
					if(typeof dbaction == 'undefined')
						wddxRs.setField(row,'dbaction','i');
					else
						wddxRs.setField(row,'dbaction',dbaction);
				}
				else{ 
					if (bEdit){
						// debug(sModulName10,'dbAction->'+dbaction);
						if(typeof dbaction == 'undefined')
							wddxRs.setField(row,'dbaction','u');		
						else
							wddxRs.setField(row,'dbaction',dbaction);		
						}
					else
						if (wddxRs.tableTyp == 2)
							wddxRs.setField(row,'dbaction','n');
						else{
							if(typeof dbaction == 'undefined')		
								wddxRs.setField(row,'dbaction','y'); 
								// Master Detail db Action auf y Setzen 
								// wenn Daten im Master nicht geaendert wurden , 
								// damit die Daten doch an den Server geschickt werden
							else
								wddxRs.setField(row,'dbaction',dbaction);
						}
				}		
				// debug(sModulName10,'Edit Flag->'+ bEdit);
				if (bEdit){
					// Daten aktualisieren		
					for (i = wddxRs.hiddenCol; i < columnCount; ++i){
						switch(eval(wddxRs.wddxConfig + '.getField(wddxRs.lRowCtlTyp, colNames[i])')){
							case TYP_TEXT:				// TextBox
							case TYP_PASSWORD:		// Password
							case TYP_PASSWORD_I:
							case TYP_EDIT:
							case TYP_COLOR:
									// Passwortfeld existiert beim Update eventuell nicht
									if (typeof dynele.frm().elements[colNames[i]] == 'object')
										wddxRs.setField(row, colNames[i],dynele.frm().elements[colNames[i]].value);
									break;
							case TYP_SELECT: 			// Select
							case TYP_SELECT_M: 		// Select Linked Master
							case TYP_SELECT_L:		// Select Link Child 
									var ctl = dynele.frm().elements[colNames[i]];
									// debug(sModulName10,'Select Value('+ ctl.name +')->'+ctl[ctl.selectedIndex].value);
									if (parseInt(ctl[ctl.selectedIndex].value,10) ==-1)
										wddxRs.setField(row, colNames[i],'');
									else
										wddxRs.setField(row, colNames[i],ctl[ctl.selectedIndex].value);
									break;
							case TYP_DATE:  // Date
									// alert('date : ' + dynele.frm().elements[colNames[i]].value);
									// wddxRs.setField(row, colNames[i],dynele.frm().elements[colNames[i]].value);
									// break;
							case TYP_TIME: // Time
									// alert(dynele.frm().elements[colNames[i]].value);
									if (dynele.frm().elements[colNames[i]].value !=''){
										var myDate = new Date(dynele.frm().elements[colNames[i]].value);
										wddxRs.setField(row,colNames[i],myDate);
									}
									break;
							case TYP_RADIO:	// Radio
							case TYP_CHECKBOX: // CheckBox
									wddxRs.setField(row, colNames[i], dynele.frm().elements[colNames[i]].checked?1:0);
									break;
						}
					}
				}
				else
					return;
				break;
		case TABLE_LISTE: //Liste				-> New,Edit und Delete Button (keine Controls)
					//wddxRs.setField(row,'dbaction','n');
				break;
		case TABLE_CHECKBOX:	//Checkbox Liste	-> Checkbox und Liste
				break;
	}		
	
	bEdit = false;
	if (wddxRs.tableTyp == TABLE_CTL_LISTE_VERTIKAL)
		submit(master,(typeof dbaction == 'undefined')?false:true);
	else
		submit(wddxRs,(typeof dbaction == 'undefined')?false:true);
	return;
};		

// <<>>
// <<>>          U t i l i t i e s                                          <<>>
// <<>>

// '=========================================================
// ' validation()
// '  
// '  Zweck
// '		Ueberpruefen der Benutzereingaben
// '  Parameter
// '		none
// '  Return
// '		boolean	: true = valid
// '=========================================================
function validation(dynele,wddxRs){

	var colNames = wddxRs.getFieldNames();
	var columnCount = colNames.length;
	var validCheckValue;
	var retval = false;
	for (i = wddxRs.hiddenCol; i < columnCount; ++i){			
		validCheckValue = eval(wddxRs.wddxConfig + '.getField(wddxRs.lRowValidCheck,colNames[i])');
		//alert(validCheckValue);
		if (validCheckValue != ''){
			var retval = ctlValidation(dynele.frm().elements[colNames[i]],validCheckValue,eval(wddxRs.wddxConfig + '.getField(wddxRs.lRowCaption, colNames[i])'));
			if(!retval)
				return false; // Abruch
		}
	}
	return true;
};

// '=========================================================
// ' ctlValidation()
// '  
// '  Zweck
// '		Control Eingabe ueberpruefen
// '  Parameter
// '		ctl 			: pruefendes Control 
// '        validCheckValue	: pruefklausel
// '  		ctlCaption		: Control Beschriftung	
// '  Return
// '		true/false		:erolgreich/nicht erfolgreich
// '=========================================================
function ctlValidation(ctl,validCheckValue,ctlCaption){
	frm = ctl.form;
	// Nach dem Ausdruck 'frm' suchen -> verweis auf das Formular (zb bei Paswortbestaetigung)
	// #^# + frm.personsecurity_password.value + #$#
	if (validCheckValue.search(/frm/i)!=-1)
		var regCheck = new  RegExp(eval(validCheckValue.replace(/(#)/g,'"')));
	else
		var regCheck = new  RegExp(validCheckValue.replace(/(#)/g,'"'));
 	// debug(sModulName10,'Regexp::'+ validCheckValue.replace(/(#)/g,'"'));
	if (ctl.type == 'select-one')
		// Select liefert value == null im OnChange Event (nur Netscape)
		var retval = regCheck.test(ctl[ctl.selectedIndex].value);
	else
		var retval = regCheck.test(ctl.value);
	if (retval){
		if (ctl.type == 'select-one')
			ctl.value = regCheck.exec(ctl[ctl.selectedIndex].value);
		else
			ctl.value = regCheck.exec(ctl.value)[0];	
		return true;
	}
	else{
		var errorText = ctlCaption + '<BR>';
		errorText += (ctl.value =='')? jsSettings['required'] :jsSettings['wronginput']; //"Eingabe Erforderlich";
		var my_Err = new newServerError(errorText);
		my_Err.addErrorMessage(10000,'ctlValidation',errorText,'main.js');
		
		showError(dyneleErr,my_Err);//,ctl,false);
		//showError(dyneleErr,errorMsg);
		return false;
	}	
};

// '=========================================================
// '  Header()
// '  
// '  Zweck
// '		Sortiert die Daten
// '  Parameter
// '		dynele 	: verweis auf den Laye
// '     col		: Column die sortiert wird
// '     wddxRs	: Verwis auf das wddx RS
// '  Return
// '		none
// '=========================================================
function Header(dynele,col, wddxRs){
	
	var wddxConfig = eval(wddxRs.wddxConfig);
	var colNames = wddxConfig.getFieldNames();
	var columnCount = colNames.length;
	var sort = '';
	
	// Sortierungsstatus zuruecksetzen
	for (i = wddxRs.hiddenCol; i < columnCount; ++i)
		if(wddxConfig.getField(wddxRs.lsortState,colNames[i]) > 0)
			if (colNames[i] != col)
				wddxConfig.setField(wddxRs.lsortState,colNames[i],-1);
	
	switch (wddxConfig.getField(wddxRs.lsortState,col)){
		case 0: // keine Sortierung moeglich	
			break;
		case -1: // unsortiert
		case 2: // Absteigend
			wddxConfig.setField(wddxRs.lsortState,col,1);
			sort = 'asc';
			break;
		case 1: // Aufsteigend
			wddxConfig.setField(wddxRs.lsortState,col,2);
			sort = 'desc';
			break;
	}
	if (sort != ''){
		wddxRs.sort(col,sort);
		dynele.setBody(wddxRs.buildHtml());
	}
	if (wddxRs.dayGraph)
		buildDayGraph(wddxRs);
};		

function buildDayGraph(wddxRs){
	
	var colNames = wddxRs.getFieldNames();
	var rowCount = wddxRs.getRowCount();
	var wddxConfig = eval(this.wddxConfig);
	// var dynDayGraph = eval(dynDayGraph);
	var sProject ='';
	var lFrom =	0;
	var lTo = 0;
	var sDescription = '';
	
	// Neues DayGraph Objekt erstellen und Initialisieren
	
	// dayGraph(Breite,Hohe,Legenden Start,Legenden Ende,Skalabreite,Grafik Breite,Layer ausgabe des Tooltips,Funktion zum Editieren);
	
	d = new dayGraph(400,400,6,18,20,10,false,"editData");
	
	for (var x = 0; x < rowCount; x++){
		sProject     = wddxRs.getComboText(wddxRs,'consumation_projectid',wddxRs.getField(x,'consumation_projectid'));
		lFrom        = wddxRs.getField(x,'consumation_fromdate');
		lTo          = wddxRs.getField(x,'consumation_untildate');
		sDescription = wddxRs.getField(x,'consumation_description');
		d.addItem(x,sProject,lFrom,lTo,sDescription);
	}
	// Pfad zu den Images 
	d.ImagePath = imgPath + "/daytool/";
	// Titel im DayGraph Objekt 
	d.title = formatDate(CalendarDay);
	d.scale = 1;
	d.inc= 1;
	// Name fuer dynElemnt und Wddx fuer das Edit der Daten 
	d.targetName = wddxRs.wddxName;
	// variablen Name des DayGrap Objektes 
	d.self = 'd';
	// DayGraph Objekt im Layer ausgeben
	dynDayGraph.setBody(d.build(0,true));
};



