// mehrere onLoadactions verarbeiten, vgl Ajax in Action S. 110
// Testweise, inkompatible mit bestehendem Code
/*
window.onloadListeners = new Array();
window.addOnloadListener(listener) {
	window.onloadListeners[window.onloadListeners.length] = listener
}
window.onload = function() {
	for(var i=0;i<window.onloadListeners.length;i++) {
	var func = windows.onloadListeners[i]
	func.call()
	}
}
*/

function openDialog(DialogData) {
		url = DialogData.url
		//alert(url)
		if (!DialogData.h)        h       = 100;        else h = DialogData.h;
		if (!DialogData.w)        w       = 100;        else w = DialogData.w;
		if (!DialogData.t)        t       = 100;        else t = DialogData.t;
		if (!DialogData.left)     left    = 100;        else left = DialogData.left;
		if (!DialogData.resize)   resize  = 0;          else resize = DialogData.resize;
		if (!DialogData.status)   status  = 0;          else status = DialogData.status;
		if (!DialogData.scrollen) scrollen= 0;          else scrollen = DialogData.scrollen;
		if (!DialogData.edge)     edge    = "raised";   else edge = DialogData.edge;
		if (!DialogData.loc)      loc     = 0;    		else loc = DialogData.loc;
		myDialogArguments = DialogData.args // wird von Mozilla abgerufen, wenn ein Fenster geoeffnet wurde
		aktueldialogEditor = window.open(url, "", 'menuebar = 0, width='+(w-6)+', height='+(h-26)+', left='+left+', top='+t+',status='+status+', toolbar=0, scrollbars='+scrollen+', resizable='+resize+', location='+loc+',fullscreen = 0');
}

function clapWindow(elname,height,mozdiff) { 
		// macht ein Element sichtbar und vergoessert das Fenster
		// height = heoehe des fensters ie
		if(!window.fensterhoehe_start) {
			if (document.all) 	fensterhoehe_start = document.body.clientHeight + 29 // Fenster mit Titelleiste
			else 	  		 	fensterhoehe_start = window.outerHeight
		}
		// alert(fensterhoehe_start)
		mozdiff = 90;
		if (!document.getElementById(elname)) return;
		klappbereich = document.getElementById(elname)
		if (document.all) 	fensterbreite = document.body.clientWidth + 8 // fuer Border
		else 	   			fensterbreite = window.outerWidth
		//alert(fensterbreite)
		if (klappbereich.style.display == "none")  {
			klappbereich.style.display = "inline";
			document.getElementById("img_"+elname).src = "../images/icon_klapppfeildown.gif";
			if (document.all) 	window.resizeTo(fensterbreite,height);
			else 	  		 	window.outerHeight = height + mozdiff;
		} else {
			klappbereich.style.display = "none";
			document.getElementById("img_"+elname).src = "../images/icon_klapppfeilup.gif";
			if (document.all) 	window.resizeTo(fensterbreite,fensterhoehe_start);
			else 				window.outerHeight = fensterhoehe_start;
		}
	}
	
	
function getAsQuerystring(formname) {
	inputArr 	= document[formname].getElementsByTagName('input');
	selectArr 	= document[formname].getElementsByTagName('select');
	textareaArr = document[formname].getElementsByTagName('textarea');
	str = '';
	for(i=0;i<inputArr.length;i++) {
		input = inputArr[i]
		if (input.type=='checkbox') {
			if (input.checked) str += '&' + input.name + '=' + input.value
		} else if (input.type=='radio') {
			if (input.checked) str += '&' + input.name + '=' + input.value
		} else {
			str += '&' + input.name + '=' + input.value
		}
	}
	for(i=0;i<selectArr.length;i++) {
		str += '&' + selectArr[i].name + '=' + selectArr[i].value
	}
	
	for(i=0;i<textareaArr.length;i++) {
		val = textareaArr[i].value
		val = val.replace("'","\'"); 				// Da ich mit einfachen Anfuehrungszeichen arbeite, diese escapen!
		str += '&' + textareaArr[i].name + '=' + val
	}
	// alert(str);
	return str;
}


function report(info,clr) {
	if (document.getElementById("infodiv")) {
		document.getElementById("infodiv").style.display = 'block'
		if(clr) 	document.getElementById("infodiv").innerHTML = '';
		document.getElementById("infodiv").innerHTML += (" " +info)
	} else {
		// alert("create div")
		div = document.createElement("div");
		div.id = "infodiv"
		div.style.backgroundColor = "#FFFF00";
		document.body.insertBefore(div, document.body.firstChild)
		//document.body.appendChild(div)
	}
}


var changedFieldsObj = {}
function listChanges(fieldname) {
	// alert("listChanges " + fieldname)
	changedFieldsObj.fieldname = 1;
}


// alert("jbasics")
// Window class
function windowInfo() {
	this.getOuterWidth = function() {
		if (is_ie) 	return document.body.clientWidth // provisorisch: IE aeussere Fenstergoesse?
		else 		return window.outerWidth
	}
	this.getOuterHeigth = function() {
		if (is_ie) 	return document.body.clientHeight
		else 		return window.outerHeight
	}
	/*
	if (is_ie) {
		 	mouseX = window.event.clientX;
		   	mouseY = window.event.clientY;
			windowWidth = document.body.clientWidth
			windowHeight= document.body.clientHeight
	} else {
			mouseX = e.clientX;
		   	mouseY = e.clientY;
			windowWidth = window.innerWidth
			windowHeight= window.innerHeight
	}
	*/
}

function cargoWindow(type,vars,url) {
	// alert("type: "+type + " vars: "+ vars + " url: " + url);
	if(type=="importcsv") 			{F2 = window.open('../popups/Wcfeb17e45473a.htm'           +vars,'','toolbar=no,location=no,menubar=no,scrollbars=yes,resizable=yes,width=1000,height=500,left=10,top=10');}
}


function selectAll(idStr, onOff, formname) {
	// onOff: 1 | 0
	// alert("idStr " + idStr + " onOff " + onOff + " formname " + formname);
	if (!formname) formname = 'edit';
	flength = document[formname].elements.length
	//alert("document[formname].elements.length " + document[formname].elements.length)
	for (i=0;i<flength;i++){
		// alert(document[formname].elements[i].id)
		if(document[formname].elements[i].name && document[formname].elements[i].name.indexOf(idStr)!= -1) {
			document[formname].elements[i].checked = onOff;
		}
	}
	moreCheckboxAction(idStr,onOff,'selectAll') // eine viewbezogen Funktion aufrufen, wenn sie vorhanden ist
}
function moreCheckboxAction(idStr,onOff,mode) {
	idstrArr = idStr.split('__');
	viewname = idstrArr[1];
	// alert("moreCheckboxAction " + idStr + " onOff " + onOff + " mode " + mode + " viewname " + viewname);
	// alert(window[viewname+"_checkboxaction")
	functionName = viewname+"_"+ mode+ "_checkBoxAction"
	// alert("functionName: " + functionName + " " + window[functionName])
	if (window[functionName]) eval(functionName+"("+onOff+")");
}

function btn_Set(obj,className) 		{obj.className=className}
function btn_hover(obj) 	{obj.className="btn_hover"}
function btn_out(obj) 		{obj.className="btn"}
function btn_down(obj) 		{obj.className="btn_active"}
function btn_up(obj) 		{obj.className="btn"}
function btntop_hover(obj) 	{obj.className="btntop_hover"}
function btntop_out(obj) 	{obj.className="btntop"}
function btntop_down(obj) 	{obj.className="btntop_active"}
function btntop_up(obj) 	{obj.className="btntop"}
function btnhell_hover(obj) {obj.className="btnhell_hover"}
function btnhell_out(obj) 	{obj.className="btnhell"}
function btnhell_down(obj) 	{obj.className="btnhell_active"}
function btnhell_up(obj) 	{obj.className="btnhell"}



// BROWSERCHECKS
function checkbrowser() {
	agt       = navigator.userAgent.toLowerCase();
	//alert("checkbrowser" +agt)
	is_ie	  = ((agt.indexOf("msie")  != -1) && (agt.indexOf("opera") == -1));
	is_ie7	  = (agt.indexOf("msie 7") != -1);
	is_opera  = (agt.indexOf("opera")  != -1);
	is_mac	  = (agt.indexOf("mac")    != -1);
	is_safari = (agt.indexOf("safari") != -1); // Safari
	is_mac_ie = (is_ie && is_mac);
	is_win_ie = (is_ie && !is_mac);
	is_gecko  = (navigator.product == "Gecko");
	is_mac_not_moz = (!is_gecko && is_mac);
	is_mac_moz= (is_gecko && is_mac);
	// alert("is_safari "+ is_safari)
	// alert("is_mac_not_moz "+ is_mac_not_moz)
	// alert("is_gecko "+ is_gecko)
	// alert("is_mac_ie "+ is_mac_ie)
	// alert("checkbrowser " + is_ie7)
}


// E V E N T S 
function openNewWindow(theURL,winName,features) {
	window.open(theURL,winName,features);
}
function addevent(el, evname, func) {
	// alert("is_ie " + is_ie + " el: " + el + "   evname: " + evname + " func: " + func);
	if(el) {
		if (is_ie) el.attachEvent("on" + evname, func);
		else       el.addEventListener(evname, func, true);
	} else {
		if (is_ie) attachEvent("on" + evname, func); 			// geht nicht mit document.body
		else       addEventListener(evname, func, true);
	}
}
// E V E N T S  F U E R    O B J E K T E , vgl:registerEventListenersObj(document, 	"mousedown",	this, false, 'startdrag');
function registerEventListenersObj(element,eventtype,listener,captures,f) {
	if (document.addEventListener) element.addEventListener(eventtype,  function(event) {listener[f](event)}, captures)
	else 						   element.attachEvent("on" +eventtype, function()      {listener[f]()})
}
function registerEventListeners(element,eventtype,listenerfunction,captures) {
	if (document.addEventListener)  element.addEventListener(eventtype,  listenerfunction, captures)
	else 							element.attachEvent("on" +eventtype, listenerfunction)
}
function registerEventListenersWithPars(element,eventtype,listener,captures,pars) {
	if (document.addEventListener) element.addEventListener(eventtype,  function(){eval(listener)},true)
	else 						   element.attachEvent("on" +eventtype, function(){eval(listener)})
}
function hasClassName(el,thisClassName) {
	if (!el.className) return false;
	if (el.className == thisClassName || el.className.match(new RegExp("(^|\\s)" + thisClassName + "(\\s|$)"))) return true
}
// vgl: http://www.dcljs.de/faq/antwort.php?Antwort=dhtml_koordinaten
function absLeft(el) {
	// alert(el.nodeName + " " + el.offsetLeft)
	return (el.offsetParent)? 
	el.offsetLeft+absLeft(el.offsetParent) : el.offsetLeft;
}
function absTop(el) {
	return (el.offsetParent)? 
	el.offsetTop+absTop(el.offsetParent) : el.offsetTop;
}
// ___________________________________________________________________________________________________________________________
// C L A S S N A M E 
function hasClassName(el,thisClassName) {
	// report(el.nodeName)
	if (!el.className) return false;
	if (el.className == thisClassName || el.className.match(new RegExp("(^|\\s)" + thisClassName + "(\\s|$)"))) return true
}