/*
	Powerslave 7 Dialogfunktionen für diverse Komponenten
	benoetigt Instanz crossBrowserLib
 */
function psDialog() {
	var toHide = document.getElementById("hide_this");
	if (!toHide)
		return;
	var pos = crossBrowserLib.getPageCoords(toHide);
	div = document.createElement("div");
	div.style.position = "absolute";
	div.style.background = "black";
	div.style.left = "0px";
	div.style.top = "0px";
	div.style.width = "100%";
	div.style.height = "100%";
	div.style.filter = "alpha(opacity=50)";
	div.style.opacity = "0.5";
	div.style.mozOpacity = "0.5";
	div.style.position = "fixed";
	document.body.appendChild(div);
	var toShow = document.getElementById("show_this");
	if (!toShow)
		return;
	toShow.style.display = "block";
	toShow.style.left = parseInt(toHide.offsetWidth / 2 - toShow.offsetWidth / 2) + pos.x + "px";
	if (!toShow.style.top) toShow.style.top = parseInt(toHide.offsetHeight / 2 - toShow.offsetHeight / 2) + pos.y + "px";
	toShow.style.zIndex = 1000;
}

/*
	pageAlert umschalten (sichtbar,unsichtbar)
	Dabei Status an Server senden, damit dieser gemerkt wird
	Uebergabe:
	- Instanz-id
	- Zeiger auf IMG Knoten, damit der Graphik ausgetauscht werden kann
	- Name des pageAlerts
	- Pfad grosse Graphik
	- Pfad kleine Graphik
 */
psDialog.prototype.pageAlertAjax = function(inst_id, img, name, largeSRC,
		smallSRC) {
	var divID = "pagealert_" + name;
	var node = document.getElementById(divID);
	if (node.style.display == "block") {
		node.style.display = "none";
		img.src = smallSRC;
	} else {
		node.style.display = "block";
		img.src = largeSRC;
	}
	var eobj = {
			name : name,
			status : node.style.display,
			wf_instance_id : inst_id,
			module_id : 0
	};
	eventHandler.sendToServer("swap_pagealert", eobj, 1);
}
psDialog.prototype.showImage = function(event, name, w, h) {
	if (isIE)
		evt = event;
	if (name.length == 0)
		return;
	var node = document.getElementById('psPopupImage');
	if (!node)
		return;
	node.innerHTML = '<img src="' + name + '">';
	node.style.display = "block";

	var x = event.clientX + 10;
	var y = event.clientY - h;
	if (y < 0) {
		y = event.clientY + 10;
	}
	node.style.left = crossBrowserLib.scrollLeft() + x + "px";
	node.style.top = crossBrowserLib.scrollTop() + y + "px";

	//this.placeDialog("psPopupImage",event,false,true);
}
psDialog.prototype.hideImage = function(x) {
	var node = document.getElementById('psPopupImage');
	if (!node)
		return;
	node.style.display = "none";
}
/*
	addHiddenField
	- wert
	- Formularelement
	Todo: document.getElementsByName("WF_EVENT")[0] ist murks
 */
psDialog.prototype.addHiddenField = function(val, felement) {
	var formular = document.getElementsByName("WF_EVENT")[0];
	var right = document.getElementById(felement);
	var hiddenName = 'VALUES_' + right.name + '[]';
	input = document.createElement("input");
	input.name = hiddenName;
	input.id = hiddenName + '_' + val;
	input.type = "hidden";
	input.value = val;
	formular.appendChild(input);
}

/*
	removeHiddenField
	- wert
	- Formularelement
	Todo: document.getElementsByName("WF_EVENT")[0] ist murks
 */
psDialog.prototype.removeHiddenField = function(val, felement) {
	var formular = document.getElementsByName("WF_EVENT")[0];
	var right = document.getElementById(felement);
	var hiddenID = 'VALUES_' + right.name + '[]' + '_' + val;
	var hiddenField = document.getElementById(hiddenID);
	formular.removeChild(hiddenField);
}

/*
	addRemove Komponente
	- ID linke Listbox
	- ID rechte Listbox
	- add/remove/deselect
 */
psDialog.prototype.addRemove = function(leftID, rightID, type) {
	var left = document.getElementById(leftID);
	var right = document.getElementById(rightID);
	if (type == "add") {
		var del = true;
		while (del) {
			del = false;
			for ( var i = 0; i < left.options.length; i++) {
				var opt = left.options[i];
				if (opt.selected) {
					this.addToList(opt.value, opt.text, rightID);
					this.addHiddenField(opt.value, rightID);
					left.options[i] = null;
					del = true;
					break;
				}
			}
		}
	} else if (type == "deselect") {
		var del = true;
		while (del) {
			del = false;
			for ( var i = 0; i < right.options.length; i++) {
				var opt = right.options[i];
				if (opt.selected) {
					this.addToList(opt.value, opt.text, leftID);
					this.removeHiddenField(opt.value, rightID);
					right.options[i] = null;
					del = true;
					break;
				}
			}
		}
	} else if (type == "remove") {
		var del = true;
		while (del) {
			del = false;
			for ( var i = 0; i < right.options.length; i++) {
				var opt = right.options[i];
				if (opt.selected) {
					right.options[i] = null;
					del = true;
					break;
				}
			}
		}
	}
}
/*
	Einen Eintrag einer Listbox hinzufuegen, wenn noch nicht vorhanden
	Uebergabe: - Wert
		- Text
		- ID der Listbox
 */
psDialog.prototype.addToList = function(value, text, id) {
	var box = document.getElementById(id);
	for ( var i = 0; i < box.options.length; i++) {
		var opt = box.options[i];
		if (opt.value == value)
			return;
	}
	var opt = document.createElement("OPTION");
	opt.text = text;
	opt.value = value;
	box.options.add(opt);
}

/*
	links Taste: Objekt-Drag
	rechte Taste: Kontektmenue
	Uebergabe:
		- Event
		- Knoten
		- doDrag: true
		- menuId
		- URL-String: wird in this.urlstr kopiert
 */
psDialog.prototype.handleButtons = function(evt, node, doDrag, menuId, urlStr) {
	if (isIE)
		evt = event;
	this.urlStr = urlStr.replace(/\./gi, "_P_"); // . durch _P_ ersetzen
	if (evt.button == 2 || evt.button == 6) { // rechte Taste
		if (!menuId)
			return;
		evt.returnValue = false;
		evt.cancelBubble = true;
		this.placeDialog(menuId, evt);
		this.save_onmouseup = document.onmouseup;
		document.onmouseup = psDialog.hideDialog;
		this.dialogID = menuId;
		this.lock = true;
		return false;
	}
	if (doDrag) {
		psDragDrop.drag_start(evt, node);
		evt.returnValue = false;
		evt.cancelBubble = true;
		return false;
	}
}

/*
	Menue verstecken, wenn ausserhalb geklickt wurde
 */
psDialog.prototype.hideDialog = function(event) {
	if (psDialog.lock) {
		psDialog.lock = null;
		return;
	}
	if (isIE)
		evt = event;
	var id = psDialog.dialogID;
	if (!id)
		return;
	document.getElementById(id).style.display = "none";
	if (psDialog.save_onmouseup)
		document.onmouseup = psDialog.save_onmouseup;
	psDialog.save_onmousedown = psDialog.dialogID = null;
}
/*
	eventHandler oder andere URL aufrufen
	Uebergabe: - URL
 */
psDialog.prototype.eventLink = function(url) {
	if (this.urlStr)
		url += this.urlStr;
	//		alert(url);
	window.location = url;
}
/*
	Dateiupload
	Uebergabe:
		- Event
		- Name Submitbutton
		- Feldname
		- Text
		- Text Abbruch
		- Text OK
		- Zeiger auf Button -> zum form rausfinden
 */
psDialog.prototype.fileUpload = function(evt, submitName, fieldName, text,
		cancelText, okText, form) {
	if (!isIE) {
		event = evt;
	}
	// Buttons umhaengen im DOM Tree -> muss unterm Formular sein
	var nodeorg = document.getElementById("psFileUpload");
	var form = crossBrowserLib.findParentElementByTagName(form, "FORM");
	var node = nodeorg.cloneNode(true);
	nodeorg.parentNode.removeChild(nodeorg);
	form.appendChild(node);
	node = this.placeDialog("psFileUpload", event);
	document.getElementById("psFileUploadText").innerHTML = text;
	document.getElementById("psFileUploadCancel").value = cancelText;
	document.getElementById("psFileUploadFile").name = fieldName;
	//		var okButton=document.getElementById("psFileUploadOkDIV");
	//		var str='<input type="submit" name="'+submitName+'" value="'+okText+'" id="psFileUploadOk">';
	//		okButton.innerHTML=str;

	var okButton = document.getElementById("psFileUploadOk");
	okButton.value = okText;
	okButton.name = submitName;

	var apc = document.getElementById("psFileUpload_progress_key");
	if (apc) {
		okButton.onclick = function() {
			document.getElementById("psFileUploadProgress").style.display = "block";
			window.frames.psFileUploadProgressIframe.psDialog.startProgress();
		}
		if (RegExp(" AppleWebKit/").test(navigator.userAgent)) { // wg. Bug in Webkit renderer nach Form submit
			document.getElementById("psFileUploadProgress").style.display = "block";
		}
	}
}
/*
	Progressbar einblenden
 */
psDialog.prototype.startProgress = function() {
	setTimeout("psDialog.getProgress()", 100);
	psDialog.progress_key = top.document
	.getElementById("psFileUpload_progress_key").value;
	top.document.getElementById("psFileUploadProgressButtons").style.display = "none";
}

/*
	Progressbar aktualisieren
 */
psDialog.prototype.getProgress = function() {

	var node = top.document.getElementById("psFileUploadProgress");
	node.style.display = "block";

	eventHandler
	.downloadURL(
			"POST",
			"/ps/defaultskins/progressbar/getprogress.php?progress_key="
			+ psDialog.progress_key,
			function(percent) {

				var pos = 121.5 / 100 * percent;
				pos = 121.5 - pos;
				pos = parseInt(-pos);

				var okButton = top.document
				.getElementById("psFileUploadOkDIV");
				var now = new Date().getTime();

				top.document
				.getElementById("psFileUploadProgressImage").style.backgroundPosition = pos
				+ "px 0px";
				top.document.getElementById("psFileUploadPercent").innerHTML = percent
				+ "% ";

				if (percent < 100) {
					setTimeout("psDialog.getProgress()", 100);
				}
			});
}

/*
	Ja Nein Sicherheitsabfrage, Event basiert
	Uebergabe:
		- Event
		- Name Submitbutton
		- Text
		- Text Abbruch
		- Text OK
 */
psDialog.prototype.yesNo = function(evt, submitName, text, cancelText, okText,
		form) {
	if (!isIE) {
		event = evt;
	}
	//onclick kopieren(cloneNode kopiert nur HTML)
	var okButton = document.getElementById("psYesNoOk");
	var onclickCode = okButton.onclick;

	// Buttons umh�ngen im DOM Tree -> muss unterm Formular sein
	var nodeorg = document.getElementById("psYesNo");

	var form = crossBrowserLib.findParentElementByTagName(form, "FORM");

	var node = nodeorg.cloneNode(true);

	nodeorg.parentNode.removeChild(nodeorg);
	form.appendChild(node);
	node = this.placeDialog("psYesNo", event, false, true);

	// Text im Dialog setzen
	// firstChild.nodeValue funktioniert auch im IE
	var psYesNoText = document.getElementById("psYesNoText");
	if(psYesNoText){
		psYesNoText.firstChild.nodeValue = text;
	}

	// Text für Button abbrechen setzen
	var cancelButton = document.getElementById("psYesNoCancel");
	if(cancelButton) {
		cancelButton.value = cancelText;
	}
	// Text für Button OK setzen
	var okButton = document.getElementById("psYesNoOk");
	if(okButton){
		okButton.value = okText;
		okButton.name = submitName;
		if (onclickCode){
			okButton.onclick = onclickCode;
		}
	}
}
/*
	Ja Nein Sicherheitsabfrage, Link basiert
	Uebergabe:
		- Event
		- HREF
		- Onclick, ' dabei mit _Q_ ersetzen
		- Text
		- Text Abbruch
		- Text OK
 */
psDialog.prototype.yesNoLink = function(evt, href, onclick, text, cancelText,
		okText) {
	if (!isIE) {
		event = evt;
	}
	// Buttons umhaengen im DOM Tree -> muss unterm Formular sein
	//       	node=this.placeDialog("psYesNo",event,false,true);
	node = psDialog.placeDialogOnMousePosition("psYesNo", event);
	/*  var node=document.getElementById("psYesNo");
		node.style.left="100px";
		node.style.top="100px";
		node.style.display="block";
		alert(node.innerHTML);
	 */
	document.getElementById("psYesNoText").innerHTML = text;
	document.getElementById("psYesNoCancel").value = cancelText;
	var okButton = document.getElementById("psYesNoOkDIV");
	onclick = onclick.replace(/_Q_/g, "'");
	if (href == "#")
		var str = '<input type="button" onclick="' + onclick
		+ '" id="psYesNoOk" value="' + okText + '" >';
	else
		var str = '<a href="' + href + '" onclick="' + onclick
		+ '" id="psYesNoOk" style="padding:2px" >' + okText + '</a>';
	okButton.innerHTML = str;
}
/*
	$getid  bzw. $getval auf Baummodul $getval $rubrik=@baum:titel
 */
psDialog.prototype.selectNode = function(evt, tree_module_alias,
		from_fieldname, inst_id, module_id, cancelText, mdhash, nodeid,
		eventname) {
	if (!isIE) {
		event = evt;
	}
	if (!eventname)
		eventname = "gettree";
	node = this.placeDialog("psSelectNode", event, true);
	this.doc.getElementById("psSelectNodeCancel").value = cancelText;
	eventHandler.registerFunction("gettree_return", "psDialog.viewTree");
	this.from_fieldname = from_fieldname;
	this.mdhash = mdhash;
	if (!this.nodeid)
		this.nodeid = [];
	if (!this.nodeid[mdhash])
		this.nodeid[mdhash] = nodeid;
	eventHandler.utf8 = true;
	var evalue = {
			tree_module_alias : tree_module_alias,
			wf_instance_id : inst_id,
			module_id : module_id
	};
	try {
		eventHandler.sendToServer(eventname, evalue, 1); //Baum lesen
	} catch (e) {
		alert("Error: gettree");
		alert(tree_module_id);
	}
}
/*
	Suggest Funktion: bei Eingabe eines Buchstabens wird der Inhalt des Textfeldes (text und textarea) an den Server uebertragen
	Es muss dann das Event suggest_return auf dem Server zum Zurueckschicken der Liste genommen werden.
	Uebergabe: - Textfeldnode
			 -  Name des Events
			 - Instanz-ID
			 - Modul-ID
 */
psDialog.prototype.suggest = function(node, event, inst_id, module_id, eobj) {
	if (this.lockSuggest)
		return;
	this.lockSuggest = true;
	eventHandler.registerFunction("suggest_return", "psDialog.suggestViewlist");
	this.suggestField = node;
	eventHandler.utf8 = true;
	var evalue = {
			text : node.value,
			fieldname : node.name,
			wf_instance_id : inst_id,
			module_id : module_id,
			event : event,
			control_event : true,
			eobj : eobj
	};
	if (node.tagName == "TEXTAREA") {
		var tinfo = textarea.getSelection(node);
		evalue.textarea = true;
		evalue.cursor_pos = tinfo.start;
	}

	this.suggestEObj = evalue;
	try {
		eventHandler.sendToServer(event, evalue, 1); //Text an Server schicken
	} catch (e) {
		alert("Error: " + event);
		alert(module_id);
	}
}
/*
	Suggest Liste anzeigen
	list: Liste mit Vorschlaegen
	Optional: className fuer Formatierung
 */
psDialog.prototype.suggestViewlist = function(eobj) {
	var word;
	var replace_word;
	var node = this.suggestField;
	var list = document.getElementById("suggestList");
	var c = crossBrowserLib.getPageCoords(node);

	if (!list) {
		list = document.createElement("div");
		list.id = "suggestList";
		list.style.position = "absolute";
		document.body.appendChild(list); // document.body ergibt fehler
	}
	//		list.style.width=node.offsetWidth+"px";
	list.style.left = c.x + "px";
	list.style.top = c.y + node.offsetHeight - 1 + "px";
	list.style.zIndex = 1100;
	if (eobj.className)
		list.className = eobj.className;
	else
		list.className = "psDialogAutoflow";
	var html = "";
	if (!eobj.list) {
		this.suggestOff();
		return;

	}
	for (i = 0; i < eobj.list.length; i++) {
		word = eobj.list[i];
		replace_word = word;
		if (eobj.replace_list) {
			replace_word = eobj.replace_list[i];
		}
		if (eobj.href_list) {
			if (eobj.href_list[i])
				html += "<a href=\"" + eobj.href_list[i] + "\">" + word
				+ "</a>";
		} else {
			html += "<a href=\"javascript:psDialog.suggestChange('"
				+ replace_word + "')\">" + word + "</a>";
		}
	}
	//		if (eobj.list.length<10) alert(html);
	list.innerHTML = html;
	list.style.display = "block";
	this.lockSuggest = false;
	var eobj = this.suggestEObj;
	if (node.value != eobj.text)
		return this.suggest(node, eobj.event, eobj.wf_instance_id,
				eobj.module_id);

	//		document["onmousemove"]=psDialog.suggestMove;

	crossBrowserLib.registerEventhandler("mousemove", psDialog.suggestMove,
			false, false, true);
}

psDialog.prototype.suggestMove = function(ev) {
	if (!isIE)
		event = ev;
	psDialog.x = event.clientX;
	psDialog.y = event.clientY;
}
/*
	Liste ausblenden, wenn man das Textfeld verlaesst, Ausnahme: Klick in Liste
 */
psDialog.prototype.suggestHide = function(ev) {
	if (!isIE)
		event = ev;
	var x = this.x + crossBrowserLib.scrollLeft();
	var y = this.y + crossBrowserLib.scrollTop();
	var list = document.getElementById("suggestList");
	var c = crossBrowserLib.getPageCoords(list);
	if (x > c.x && x < c.x + list.offsetWidth && y > c.y
			&& y < c.y + list.offsetHeight)
		return;
	var node = document.getElementById("suggestList");
	if (node)
		node.style.display = "none";
}

/*
	Liste ausblenden
 */
psDialog.prototype.suggestOff = function() {
	document.getElementById("suggestList").style.display = "none";
	this.lockSuggest = false;
	crossBrowserLib.unregisterEventhandler("mousemove", psDialog.suggestMove);
}
/*
	Wert im Eingabefeld aendern
 */
psDialog.prototype.suggestChange = function(value) {
	this.suggestField.value = value;
	document.getElementById("suggestList").style.display = "none";
	this.suggestOff();
}

/*
	Modulbaum anzeigen (Aufruf vom Server)
 */
psDialog.prototype.viewTree = function(eobj) {
	selectTree = new dTree('selectTree', '/ps/defaultskins/dtree/img/', "", "");
	selectTree.icon.root = '/ps/defaultskins/dtree/img/folderopen.gif';
	selectTree.config.closeSameLevel = false;
	selectTree.config.folderLinks = true;
	selectTree.config.useCookies = false;

	var imgFolder = '/ps/defaultskins/dtree/img/folder.gif';
	var imgFolderOpen = '/ps/defaultskins/dtree/img/folderopen.gif';
	var imgFolderGrey = '/ps/defaultskins/dtree/img/folder_grey.gif';
	var imgFolderOpenGrey = '/ps/defaultskins/dtree/img/folderopen_grey.gif';
	this.doc.mydialog = this;
	var str = "";
	var open;
	for ( var i = 0; i < eobj.folderlist.length; i++) {
		var folder = eobj.folderlist[i];
		var title = folder[this.from_fieldname];
		if (folder.id == this.nodeid[this.mdhash])
			open = true;
		else
			open = false;
		if (folder.deactivated) {
			selectTree.add(folder.id, folder.pid, title, "#", null, null,
					imgFolderGrey, imgFolderOpenGrey, open, '', "");
		} else {
			selectTree.add(folder.id, folder.pid, title, "#", null, null,
					imgFolder, imgFolderOpen, open, '',
					"document.mydialog.psSelectNode('" + title + "',"
					+ folder.id + ");");
		}
	}

	this.doc.getElementById("psSelectNode_tree").innerHTML = selectTree
	.toString();
	selectTree.openTo(this.nodeid[this.mdhash], true);

}
/*
	Dialog verstecken
 */
psDialog.prototype.psSelectNodeCancel = function() {
	var node;
	if (psDialog.doc)
		node = psDialog.doc.getElementById("psSelectNode");
	if (!node)
		node = top.document.getElementById("psSelectNode");

	node.style.display = "none";

}
psDialog.prototype.psSelectNode = function(title, nodeid) {
	var hidden = document.getElementById(this.mdhash);
	hidden.value = nodeid;
	psDialog.nodeid[this.mdhash] = nodeid;
	var titlespan = document.getElementById("title_" + this.mdhash);
	titlespan.innerHTML = title + " ";
	psDialog.psSelectNodeCancel();
}

/*
	Dialog verstecken
 */
psDialog.prototype.fileUploadHide = function() {
	var node = document.getElementById("psFileUpload");
	node.style.display = "none";
}

/*
	Dialog in der Mitte des Mauszeigers platzieren
	Uebergabe: - ID des Dialogefeldes
		- Eventobjekt
		- Top: immer vor allen IFrames
		- cursorTop: ueber den Mauszeigen plazieren
		- deltaY: Y WErt, welcher subtrahiert wird
	Ergebnis: - Node
			  - this.doc
 */
psDialog.prototype.placeDialog = function(name, event, placeTop, cursorTop,
		deltay) {
	var doc = document;

	if (placeTop) {
		if (top.document)
			doc = top.document;
	}
	this.doc = doc;
	var node = doc.getElementById(name);
	if (!node) {
		alert("placeDialog:" + name);
		return;
	}
	var e = crossBrowserLib.getEvent(event, doc.getElementsByTagName("IFRAME"));
	node.style.display = "block";

	var w = node.offsetWidth;
	var h = node.offsetHeight;
	var x = event.clientX + e.iframePos.x - w / 2;
	var y = event.clientY + e.iframePos.y - h / 2;
	x = parseInt(x);
	y = parseInt(y);

	if (cursorTop) {
		y = event.clientY + e.iframePos.y - h;
	}
	if (x < 0)
		x = 0;
	if (y < 0)
		y = 0;
	var toShow = document.getElementById("show_this");
	if (toShow) {
		var c = crossBrowserLib.getPageCoords(toShow);
		x = x - c.x; // parseInt(toShow.style.left);
		y = y - c.y; // parseInt(toShow.style.top);
	}
	node.style.left = crossBrowserLib.scrollLeft(doc) + x + "px";

	node.style.top = crossBrowserLib.scrollTop(doc) + y + "px";
	//node.style.display="block";

	return node;
}
/*
	Dialog neben dem Mauszeiger platzieren
	Uebergabe: 	- ID des Dialogefeldes
				- Eventobjekt
	Ergebnis: 	- Node
				  - this.doc
 */
psDialog.prototype.placeDialogOnMousePosition = function(name, event) {

	var doc = document;

	this.doc = doc;
	var node = doc.getElementById(name);
	if (!node)
		return;

	var e = crossBrowserLib.getEvent(event, doc.getElementsByTagName("IFRAME"));
	var x = event.clientX + e.iframePos.x;
	var y = event.clientY + e.iframePos.y;
	if (x < 0)
		x = 0;
	if (y < 0)
		y = 0;
	node.style.left = crossBrowserLib.scrollLeft(doc) + x + "px";
	node.style.top = crossBrowserLib.scrollTop(doc) + y + "px";
	node.style.display = "block";

	return node;
}

/*
	Ein Menue Dialog anzeigen. Dieser wird unter einem anderen Element direkt ausgerichtet
	Uebergabe: - Knoten an dem das Menue ausgerichtet werden soll
		- Menueknoten
		- Style Klasse
 */
psDialog.prototype.showMenuNode = function(node, menu, styleClass) {
	return this.showMenu(node, null, styleClass, menu);
}

/*
	Ein Menue Dialog anzeigen. Dieser wird unter einem anderen Element direkt ausgerichtet
	Uebergabe: - Knoten an dem das Menue ausgerichtet werden soll
		- ID des Menue Dialogs
		- Style Klasse
		- Optional: Menueknoten anstatt MenueID
 */
psDialog.prototype.showMenu = function(node, menuID, styleClass, menu) {
	// ggf. Abgeschaltete MenuButtons beruecksichtigen
	if (node.className && node.className.match("disabled"))
		return;

	if (!menu)
		var menu = document.getElementById(menuID);
	else
		menuID = menu.id;
	this.menu = menu;
	var pos = crossBrowserLib.getPageCoords(node);
	if (!menu) {
		alert("Couldn't find dialog menu with ID " + menuID);
		return;
	}
	menu.style.display = "block";
	menu.style.position = "absolute";
	var x = pos.x;
	var y = pos.y + node.offsetHeight;
	menu.style.left = crossBrowserLib.scrollLeft() + x + "px";
	menu.style.top = crossBrowserLib.scrollTop() + y + "px";

	// MouseDown Event fuer alle Iframes registrieren
	var iframes = document.getElementsByTagName("IFRAME");
	this.save_onmousedown_iframes = [];
	for ( var i = 0; i < iframes.length; i++) {
		var iframe = iframes[i];
		if (isIE) {
			this.save_onmousedown_iframes[i] = iframe.contentWindow.document.onmousedown;
			iframe.contentWindow.document.onmousedown = psDialog.menuClick;
		} else
			iframe.contentWindow.document.addEventListener("mousedown",
					psDialog.menuClick, true);
	}
	this.save_onmousedown = document.onmousedown;
	document.onmousedown = psDialog.menuClick;

	this.menuID = menuID;
	this.styleClass = styleClass;
	this.document = document;
}

psDialog.prototype.menuClick = function(evt) {
	var src = null;
	if (!isIE)
		event = evt;

	if (event) {
		var src = event.target || event.srcElement;
		if (crossBrowserLib.findParentElementByNode(src, psDialog.menu)) { // Klick auf Menue

			if (crossBrowserLib.findParentElementByType(src, "submit")) { // und Submitbutton -> nix machen
				return;
			}
			if (crossBrowserLib.findParentElementByType(src, "link")) { // Link -> auch nix machen
				return;
			}
		}
	}
	if (psDialog.currentButton)
		psDialog.currentButton.className = psDialog.styleClass + "-default";
	document.onmousedown = psDialog.save_onmousedown;
	var menu = psDialog.menu;
	// document.getElementById(psDialog.menuID);
	menu.style.display = "none";
	psDialog.menuID = null;
	var iframes = document.getElementsByTagName("IFRAME");
	for ( var i = 0; i < iframes.length; i++) {
		var iframe = iframes[i];
		if (isIE)
			iframe.contentWindow.document.onmousedown = psDialog.save_onmousedown_iframes[i];
		else
			iframe.contentWindow.document.removeEventListener("mousedown",
					psDialog.menuClick, true);
	}
}
/*
removes defaut text from input box
- node of field
 */
psDialog.prototype.clearDefaultText = function(el) {
	if (el.getAttribute("psDefaultValue") == el.value)
		el.value = ""
}
/*
Text ein und ausklappen
Uebergabe: - openLongText -ID (_href,_view, _buffer und _href_buffer)
 */
psDialog.prototype.swapLongText = function(id) {
	var node = document.getElementById(id);
	var buffer = document.getElementById(id + "_buffer");
	var href_buffer = document.getElementById(id + "_href_buffer");
	var href = document.getElementById(id + "_href");
	var view = document.getElementById(id + "_view");
	var oldText = buffer.innerHTML
	var newText = view.innerHTML;
	buffer.innerHTML = newText;
	view.innerHTML = oldText;
	var old_href = href.innerHTML;
	var new_href = href_buffer.innerHTML;
	href_buffer.innerHTML = old_href;
	href.innerHTML = new_href;
}

/*
Formular mit Event absenden
 */
psDialog.prototype.submitFormEvent = function(theForm, theEvent) {
	var form = theForm;
	if (!form) {
		alert("Error: submitFormEvent - form not found");
		return;
	}
	var submit = crossBrowserLib.addFormElement(form, top.document, "hidden",
			theEvent, "true");
	if (form.onsubmit)
		form.onsubmit();

	form.submit();
}

