var buttonFormName = new Array();
var buttonUrl = new Array();
var buttonVerteiler = new Array();
var buttonDefault = new Array();

var buttonHttpUrl = new Array();
var buttonApiName = new Array();
var buttonFunctionName = new Array();
var buttonApiObj = new Array();


var formName = new Array();
var distro = new Array();
var openWin = new Array();
var winCounter = 0;

function imageSelector_setTyp(form, name, schluessel, klasse, klasseSelected) {
	var pp = document.getElementById("imgSel_"+form+"_"+name);
	var spans = pp.getElementsByTagName("SPAN");
	for(var i=0; i<spans.length; i++) {
		if(spans[i].id == "imgSelOption_"+schluessel) spans[i].className = klasseSelected;
		else spans[i].className = klasse;
	}
}

function forceArray(mixed) {
	if (typeof(mixed) != "object") { // => Kein Array !!
		var arr = new Array();
		arr["0"] = mixed;
		return arr;
	}
	return mixed;
}

function calcWindowParams(size, pos, evt) {
	if (size == "") size = "500x350";
	if (pos == "") pos = "100x100";

	var dim = size.split("x");
	var width = dim[0];
	var height = dim[1];
	var top = 100;
	var left = 100;

	if (pos == "center" && evt) {
		var top = evt.screenY - (height/2);
		var left = evt.screenX - (width/2);
	}
	else {
		var loc = pos.split("x");
		left = loc[0];
		top = loc[1];
	}
	if(top < 0) top=0;
	if(left < 0) left=0;

	var parx ="width="+width+",height="+height+",top="+top+",left="+left+",resizable=yes,scrollbars=yes";
	return parx;
}

function openBwtInputWindow(buttonId, size, pos, evt) {
	if (! initialized) alert("ACHTUNG onload() Funktion wurde nicht durchlaufen! Entfernen Sie das onload Attribut im Body!");

	formName[winCounter] = buttonFormName[buttonId];
	distro[winCounter] = buttonVerteiler[buttonId];
	var url = buttonUrl[buttonId];

	if (url.indexOf("?") >= 0) url+= "&";
	else url+= "?";
	url+="master=opener&submitfunction=arrayChosen&key="+winCounter;
	parx = calcWindowParams(size, pos, evt);

	if (buttonDefault[buttonId] != "") {
		var def = document.forms[formName[winCounter]][buttonDefault[buttonId]].value;
		url+="&value="+def;
	}

	openWin[winCounter] = window.open(url,"Eingabe"+winCounter, parx);
	openWin[winCounter].focus();
	winCounter++;
}

function initializeCustomInput(buttonId, size, pos) {
	formName[winCounter] = buttonFormName[buttonId];
	distro[winCounter] = buttonVerteiler[buttonId];
	var url = buttonUrl[buttonId];

	if (url.indexOf("?") >= 0) url+= "&";
	else url+= "?";
	url+="master=opener&submitfunction=arrayChosen&key="+winCounter+"&stay=never";
	parx = calcWindowParams(size, pos, false);

	if (buttonDefault[buttonId] != "") {
		var def = document.forms[formName[winCounter]][buttonDefault[buttonId]].value;
		url+="&value="+def;
	}

	openWin[winCounter] = window.open(url,"Eingabe"+winCounter, parx);
	if (openWin[winCounter] == null) alert("Popup Stopper aktiv!\nPopupstopper für diese Seite ausschalten um die volle Funktionalität zu erreichen");
	else {
		openWin[winCounter].focus();
		winCounter++;
	}
}

function alwaysOpenBwtInputWindow(buttonId, size, pos, evt) {
	if (! initialized) alert("ACHTUNG onload() Funktion wurde nicht durchlaufen! Entfernen Sie das onload Attribut im Body!");

	formName[winCounter] = buttonFormName[buttonId];
	distro[winCounter] = buttonVerteiler[buttonId];
	var url = buttonUrl[buttonId];

	if (url.indexOf("?") >= 0) url+= "&";
	else url+= "?";
	url+="master=opener&submitfunction=arrayChosen&key="+winCounter+"&stay=always";
	parx = calcWindowParams(size, pos, evt);
	
	if (buttonDefault[buttonId] != "") {
		var def = document.forms[formName[winCounter]][buttonDefault[buttonId]].value;
		url+="&value="+def;
	}

	openWin[winCounter] = window.open(url,"Eingabe"+winCounter, parx);
	openWin[winCounter].focus();
	winCounter++;
}

function httpRequest(buttonId, size, pos, evt) {
	var def = "";
	if (buttonDefault[buttonId] != "") {
		var def = document.forms[buttonFormName[buttonId]][buttonDefault[buttonId]].value;
	}
	
	if (typeof(buttonApiObj[buttonApiName[buttonId]]) == "undefined") {
		buttonApiObj[buttonApiName[buttonId]] = new phpInit(buttonHttpUrl[buttonId], buttonApiName[buttonId]);
		//alert (typeof(buttonApiObj[buttonApiName[buttonId]]));
	}
	//alert("function = "+buttonFunctionName[buttonId])
	var result = buttonApiObj[buttonApiName[buttonId]][buttonFunctionName[buttonId]](def);
	
	distributeValues(buttonFormName[buttonId], buttonVerteiler[buttonId], result);
}

function httpRequestOrOpen(buttonId, size, pos, evt) {
	var def = "";	
	if (buttonDefault[buttonId] != "") {
		var def = document.forms[buttonFormName[buttonId]][buttonDefault[buttonId]].value;
	}
	if (typeof(buttonApiObj[buttonApiName[buttonId]]) == "undefined") {
		buttonApiObj[buttonApiName[buttonId]] = new phpInit(buttonHttpUrl[buttonId], buttonApiName[buttonId]);
	}

	var result = buttonApiObj[buttonApiName[buttonId]][buttonFunctionName[buttonId]](def);
	if (typeof(result) == "object") {
		distributeValues(buttonFormName[buttonId], buttonVerteiler[buttonId], result);
	}
	else {
		alwaysOpenBwtInputWindow(buttonId, size, pos, evt);
	}
}

function arrayChosen(key, valueArr) {
	distributeValues(formName[key], distro[key], valueArr);
	if (typeof(openWin[key]) == "object") openWin[key].close();
}

function distributeValues(formname, verteiler, valueArr) {
	valueArr = forceArray(valueArr);
	if (typeof(valueArr) == "object" && valueArr != null) {
		for (var item in verteiler) {
			var wert = valueArr[item];
			var tgt = verteiler[item];
			
			var obj = document.forms[formname][tgt];
			if (typeof(obj) != "object") obj = document.getElementById(tgt);

			if (obj) setValueToObject(obj, wert);
			else alert("Objekt nicht gefunden ("+tgt+")");
		}

		for (var item in verteiler) {
			var tgt = verteiler[item];
			var obj = document.forms[formname][tgt];
			if (typeof(obj) != "object") obj = document.getElementById(tgt);
			if (obj) executeAutoChange(obj);
		}
	}
}

function setValueToObject(obj, wert) {
	switch (obj.tagName) {
		case 'INPUT':
		case 'TEXTAREA':
			obj.value = wert;
			break;
		default:
			obj.innerHTML = wert;
	}	
}

function executeAutoChange(obj) {
	var s = obj.getAttribute("onAutoChange");
	if (typeof(s) == "string") {
		if (s.indexOf("this") <= 0) eval(s);
	}
}
