/*
 +-----------------------------------------------------------------------+
 | js/admin.js                                                           |
 |                                                                       |
 | This file is part of the Phusion Webengine                            |
 | Copyright (C) 2008-2009, Roman Gruber                                 |
 | Licensed under the GNU GPL                                            |
 |                                                                       |
 | PURPOSE:                                                              |
 |   Provides js functions, only used in admin mode                      |
 |                                                                       |
 | TODO:                                                                 |
 |   - This part really needs a clean up                                 |
 |   - some functions should be coded again                              |
 |                                                                       |
 +-----------------------------------------------------------------------+
 | Author: Roman Gruber <roman@phusion.ch>                               |
 +-----------------------------------------------------------------------+
*/

//not in use anymore
function admin_news_add_submit(){
	var geturl = "";
	for (var i = 0; i < document.edit_form.length; i++){

	}
	return geturl;
}


function admin_submit_generate_url(){
	var values = [];
	var geturl = '';
	for (var i = 0; i < document.edit_form.length; i++){
		if(document.edit_form[i].name != 'folder_button' && document.edit_form[i].id != 'fieldset' && document.edit_form[i].name != 'ignore'){
				values["_"+document.edit_form[i].name] = document.edit_form[i].value;
				geturl = geturl + '_' + document.edit_form[i].name + '=' + escape(document.edit_form[i].value) + '&';
		}
	}
	return values;
	//return geturl;
}

function admin_submit_mandatory(){
	var error = true;
	for (var i = 0; i < document.edit_form.length; i++){
		if(document.edit_form[i].name != 'folder_button' && document.edit_form[i].id != 'fieldset' && document.edit_form[i].name != 'ignore'){
			var eid = document.edit_form[i].id;
			var info = eid.split('_');
			var mandatory = '';
			mandatory = info[info.length-1];
			if(mandatory == '1' && document.edit_form[i].value == ''){
				document.getElementById('font_' + eid).style.color = 'red';
				document.getElementById('font_' + eid).style.fontWeight = 'bold';
				error = false;
			}else{
				document.getElementById('font_' + eid).style.color = '';
				document.getElementById('font_' + eid).style.fontWeight = 'normal';
			}
		}
	}
	return error;
}


function change_config_submit(key, oldvalue, newvalue){
	//alert(key);
	oldvalue = URLEncode(oldvalue);
	newvalue = URLEncode(newvalue);

	if (newvalue != ""){
		ajaxFunction('func/change_config_entry.php?key=' + key + '&newvalue=' + newvalue + '&oldvalue=' + oldvalue, 'value_' + key);
	}else{
		alert("Das Feld darf nicht leer sein.");
	}
}


function change_config_form(key, oldvalue){
	var input = "";
	if(is_number(oldvalue)){
		input += "<input class='conf_input_digit' id='new_value_" + key + "' type='text' value='" + oldvalue + "'>&nbsp;";
		input += "<button class=button style='width:20px;height:20px;' type=button Onclick=\"document.getElementById('new_value_" + key + "').value++;\"><img src='img/icons/arrow_up_button.gif' alt='up' /></button>&nbsp;";
		input += "<button class=button style='width:20px;height:20px;' type=button Onclick=\"document.getElementById('new_value_" + key + "').value--;\"><img src='img/icons/arrow_down_button.gif' alt='down' /></button>";
		input += "<br />";
	}else{
		input += "<input class='conf_input_text' id='new_value_" + key + "' type='text' value='" + oldvalue + "'><br />";
	}
	input += "<input class='button' type='button' onClick='var newvalue = getElementById(\"new_value_" + key + "\").value; change_config_submit(\"" + key + "\", \"" + oldvalue + "\", newvalue);' value='OK'>&nbsp;";
	input += "<input class='button' type='button' onClick='change_config_submit(\"" + key + "\", \"" + oldvalue + "\", \"" + oldvalue + "\")' value='Abbrechen'>";
	document.getElementById('value_' + key).innerHTML = input;
}

function change_admin_selection_form(name, id, value, css_class){
	if(document.getElementById('select_' + id)){
		var input = "<input class='" + css_class + "' name='" + name + "' id='" + id + "' type='text' value='" + value + "'>";
		document.getElementById('select_' + id).innerHTML = input;
	}else{
		for(i=0;i<langs.length;i++){
			if(document.getElementById('select_' + langs[i] + "_" + id)){
				var nid = langs[i] + "_" + id;
				var nname = name.replace(/^indexed_../, "indexed_"+langs[i]);
				var input = "<input class='" + css_class + "' name='" + nname + "' id='" + nid + "' type='text' value='" + value + "'>";
				document.getElementById('select_' + nid).innerHTML = input;
			}
		}
	}
}

function change_admin_selections(id, rid){
	if(document.getElementById(id)){
		for(i=0;i<document.getElementById(id).options.length;i++){
			if(document.getElementById(id).options[i].selected == true){
				for(a=0;a<langs.length;a++){
					if(id != langs[a]+"_"+rid){
						document.getElementById(langs[a]+"_"+rid).options[i].selected = "selected";
					}
				}
			}
		}
	}
}


function log_group(row, value){
	ajaxFunction('func/show_log.php?lang=$lang&page=1&filter=' + row + '&where=' + value + '', 'main');
}

var log_submit_limit_from = "";
var log_submit_limit_to = "";
var log_submit_orderby_row = "";
var log_submit_orderby_type = "";
function log_submit(){
	if(log_submit_limit_from == ""){
		log_submit_limit_from = 0;
		log_submit_limit_to = 30;
	}else if(log_submit_limit_from == "last"){
		var count = parseInt(document.getElementById("log_font_count").innerHTML, 10);
		log_submit_limit_from = Math.floor(count/30)*30;
	}

	document.getElementById("log_font_status").innerHTML = "Lade...";
	document.getElementById("log_font_status").style.color = "#512DFF";
	document.getElementById("log_font_count").innerHTML = "0";
	document.getElementById("log_font_show_from").innerHTML = "0";
	document.getElementById("log_font_show_to").innerHTML = "0";
	document.getElementById("log_font_page").innerHTML = "0";
	document.getElementById("log_font_page_total").innerHTML = "0";

	var selects = document.getElementsByTagName("select");
	var inputs = document.getElementsByTagName("input");
	var url = "?session_user="+session_user+"&PHPSESSID="+phpsessid+"&";
	for(var i=0;i<selects.length;i++){
		if(selects[i].name.match(/^operator_(.*)/)){
			if(document.getElementsByName(selects[i].name.replace("operator_", "select_"))[0].value != ""){
				//alert(document.getElementsByName(selects[i].name.replace("operator_", "select_"))[0].value);
				var key = "op_" + selects[i].name.replace("operator_", "");
				url += key + "=" + selects[i].value + "&";
			}
		}else if(selects[i].name.match(/^select_(.*)/) && selects[i].value != ""){
			var key = selects[i].name.replace("select_", "");
			url += key + "=" + selects[i].value + "&";
		}
	}

	for(var i=0;i<inputs.length;i++){
		if(inputs[i].value != "" && inputs[i].name != ""){
			var key = inputs[i].name.replace("input_", "");
			url += key + "=" + inputs[i].value + "&";
		}
	}
	url = "func/xmllog.php" + url;
	//if(orderby_row != null && orderby_type != null){
	if(log_submit_orderby_row != "" && log_submit_orderby_type != ""){
		url += "orderby_row="+log_submit_orderby_row+"&orderby_type="+log_submit_orderby_type;
	}
	url += "&limit=" + log_submit_limit_from + "," + log_submit_limit_to;
	var xml = getxml(url);
	//alert(url);
	//alert(xml);
	
	var xmldoc;
	try{ //Internet Explorer 
		xmldoc=new ActiveXObject("Microsoft.XMLDOM"); 
		xmldoc.async="false"; 
		xmldoc.loadXML(xml); 
	}catch(e){
		try{ //Firefox, Mozilla, Opera, etc.
			parser=new DOMParser();
			xmldoc=parser.parseFromString(xml,"text/xml");
		}catch(e){
			alert(e.message);
			return;
		}
	}
	
	//colors
	colors = new Array();
	for(i=0;i<xmldoc.getElementsByTagName("meta").length;i++){
		meta = xmldoc.getElementsByTagName("meta")[i];
		if(meta.getElementsByTagName("bgcolor")){
			bgcolor = meta.getElementsByTagName("bgcolor")[0].childNodes[0].nodeValue;
			row = meta.getElementsByTagName("row")[0].childNodes[0].nodeValue;
			colors[row] = bgcolor;
		}
	}

	//count
	if(xmldoc.getElementsByTagName("count")[0] != undefined){
		document.getElementById("log_font_count").innerHTML = xmldoc.getElementsByTagName("count")[0].childNodes[0].nodeValue;
	}

	//limit
	if(xmldoc.getElementsByTagName("from")[0] != undefined && xmldoc.getElementsByTagName("to")[0] != undefined){
		document.getElementById("log_font_show_from").innerHTML = parseInt(xmldoc.getElementsByTagName("from")[0].childNodes[0].nodeValue, 10)+1;
		document.getElementById("log_font_show_to").innerHTML = xmldoc.getElementsByTagName("to")[0].childNodes[0].nodeValue;
	}

	//page
	if(xmldoc.getElementsByTagName("page")[0] != undefined && xmldoc.getElementsByTagName("page_total")[0] != undefined){
		document.getElementById("log_font_page").innerHTML = xmldoc.getElementsByTagName("page")[0].childNodes[0].nodeValue;
		document.getElementById("log_font_page_total").innerHTML = xmldoc.getElementsByTagName("page_total")[0].childNodes[0].nodeValue;

		//button dis-/enableing
		if(parseInt(document.getElementById("log_font_page").innerHTML, 10) == parseInt(document.getElementById("log_font_page_total").innerHTML, 10)){
			document.getElementById("log_button_next").disabled = 'disabled';
			document.getElementById("log_button_last").disabled = 'disabled';
			document.getElementById("log_button_pre").disabled = '';
			document.getElementById("log_button_first").disabled = '';
		}else if(parseInt(document.getElementById("log_font_page").innerHTML, 10) == 1){
			document.getElementById("log_button_next").disabled = '';
			document.getElementById("log_button_last").disabled = '';
			document.getElementById("log_button_pre").disabled = 'disabled';
			document.getElementById("log_button_first").disabled = 'disabled';
		}else{
			document.getElementById("log_button_next").disabled = '';
			document.getElementById("log_button_last").disabled = '';
			document.getElementById("log_button_pre").disabled = '';
			document.getElementById("log_button_first").disabled = '';
		}
	}

	//orderby
	if(xmldoc.getElementsByTagName("orderby_row")[0] != undefined && xmldoc.getElementsByTagName("orderby_type")[0] != undefined){
		document.getElementById("log_font_orderby_row").innerHTML = xmldoc.getElementsByTagName("orderby_row")[0].childNodes[0].nodeValue;
		document.getElementById("log_font_orderby_type").innerHTML = xmldoc.getElementsByTagName("orderby_type")[0].childNodes[0].nodeValue;
	}

	//filter
	if(xmldoc.getElementsByTagName("filter")[0] != undefined){
		document.getElementById("log_font_filter").innerHTML = xmldoc.getElementsByTagName("filter")[0].childNodes[0].nodeValue;
	}

	//entrys
	new_tr = new Array();
	for(i=0;i<xmldoc.getElementsByTagName("entry").length;i++){
		entry = xmldoc.getElementsByTagName("entry")[i];
	
		for(a=0;a<entry.childNodes.length;a++){
			if(entry.childNodes[a].nodeName == "id"){
				var id = parseInt(entry.childNodes[a].textContent.substring(1), 10);
			}
		}

		new_tr[i] = document.createElement("tr");
		new_tr[i].setAttribute("name", "log_table_tr");
		new_tr[i].setAttribute("bgcolor", colors[entry.getElementsByTagName("level")[0].childNodes[0].nodeValue]);
		new_tr[i].setAttribute("onmouseover", "this.style.backgroundColor = '#e1e1e1';");
		new_tr[i].setAttribute("onmouseout", "this.style.backgroundColor = '';");
		new_tr[i].setAttribute("style", "cursor:pointer; border:1px solid white;");
		new_tr[i].setAttribute("onclick", "var obj = desktopobj.getWindowByDOMObj(this).open_child('func/show_log_item.php?id="+id+"');");

		for(a=0;a<entry.childNodes.length;a++){
			if(entry.childNodes[a].nodeValue == null){
				//var values = entry.childNodes[a].firstChild.nodeValue;
				var values = entry.childNodes[a].textContent;
				var new_td = document.createElement("td");
				new_td.setAttribute("colspan", 2);
				new_td.setAttribute("style", "border:1px solid white;");
				var new_font = document.createElement("span");
				var new_text = document.createTextNode(values);
				new_font.appendChild(new_text);
				new_td.appendChild(new_font);
				new_tr[i].appendChild(new_td);
			}
		}
		//document.getElementById("log_table").appendChild(new_tr);
	}
	//clean first
	for(i=document.getElementsByName("log_table_tr").length-1;i>=0;i--){
		document.getElementById("log_table").removeChild(document.getElementsByName("log_table_tr")[i]);
	}

	for(i=0;i<new_tr.length;i++){
		setTimeout("document.getElementById(\"log_table\").appendChild(new_tr["+i+"])", 20*(i+1));
	}

	//status
	if(xmldoc.getElementsByTagName("error")[0] != undefined){
		var err = xmldoc.getElementsByTagName("error")[0].childNodes[0].nodeValue;
		setTimeout("document.getElementById(\"log_font_status\").style.color = \"#FF0000\";", 20*(i+1));
		setTimeout("document.getElementById(\"log_font_status\").innerHTML = \"Fehler: "+addslashes(err)+"\";", 20*(i+1));
	}else{
		setTimeout("document.getElementById(\"log_font_status\").style.color = \"#15C200\";", 20*(i+1));
		setTimeout("document.getElementById(\"log_font_status\").innerHTML = \"Bereit\";", 20*(i+1));
	}
}

function error_query_submit(lang){
	var geturl = "";
	var c = 0;
	for (var i = 0; i < document.err_form.length; i++){
		if(document.err_form[i].name != "button" && document.err_form[i].type != "checkbox"){
			geturl = geturl + document.err_form[i].name + "=" + escape(document.err_form[i].value) + "&";
			//alert(geturl);
		}
		if(document.err_form[i].id == "obligatory"){
			if(document.err_form[i].value == ""){
				alert("Alle Felder, die mit einem Stern (*) gekennzeichnet sind müssen ausgefüllt werden.");
				return;
			}
		}

	}
	ajaxFunction('func/error_reporting_query.php?' + geturl, 'err_conf');
}

function error_query_reset(){

	for (var i = 0; i < document.err_form.length; i++){
		if(document.err_form[i].type == "checkbox"){
			document.err_form[i].checked = false;
		}else if(document.err_form[i].type != "button"){
			document.err_form[i].value = "";
		}
	}
}


function admin_search_submit_onkeyup(lang){
//searchstr
}

function URLEncode(plaintext)
{
	// The Javascript escape and unescape functions do not correspond
	// with what browsers actually do...
	var SAFECHARS = "0123456789" +					// Numeric
					"ABCDEFGHIJKLMNOPQRSTUVWXYZ" +	// Alphabetic
					"abcdefghijklmnopqrstuvwxyz" +
					"-_.!~*'()";					// RFC2396 Mark characters
	var HEX = "0123456789ABCDEF";
	var encoded = "";
	for (var i = 0; i < plaintext.length; i++ ) {
		var ch = plaintext.charAt(i);
	    if (ch == " ") {
		    encoded += "+";				// x-www-urlencoded, rather than %20
		} else if (SAFECHARS.indexOf(ch) != -1) {
		    encoded += ch;
		} else {
		    var charCode = ch.charCodeAt(0);
			if (charCode > 255) {
			    alert( "Unicode Character '" 
                        + ch 
                        + "' cannot be encoded using standard URL encoding.\n" +
				          "(URL encoding only supports 8-bit characters.)\n" +
						  "A space (+) will be substituted." );
				encoded += "+";
			} else {
				encoded += "%";
				encoded += HEX.charAt((charCode >> 4) & 0xF);
				encoded += HEX.charAt(charCode & 0xF);
			}
		}
	}
	return encoded;
};

function URLDecode(encoded)
{
   // Replace + with ' '
   // Replace %xx with equivalent character
   // Put [ERROR] in output if %xx is invalid.
   var HEXCHARS = "0123456789ABCDEFabcdef"; 
   var plaintext = "";
   var i = 0;
   while (i < encoded.length) {
       var ch = encoded.charAt(i);
	   if (ch == "+") {
	       plaintext += " ";
		   i++;
	   } else if (ch == "%") {
			if (i < (encoded.length-2) 
					&& HEXCHARS.indexOf(encoded.charAt(i+1)) != -1 
					&& HEXCHARS.indexOf(encoded.charAt(i+2)) != -1 ) {
				plaintext += unescape( encoded.substr(i,3) );
				i += 3;
			} else {
				alert( 'Bad escape combination near ...' + encoded.substr(i) );
				plaintext += "%[ERROR]";
				i++;
			}
		} else {
		   plaintext += ch;
		   i++;
		}
	}
   return plaintext;
};

function is_number(text){
	if(text == ""){
		return false;
	}
	var ValidChars = "0123456789.";
	var IsNumber=true;
	var Char;

	for (i = 0; i < text.length && IsNumber == true; i++) { 
		Char = text.charAt(i); 
		if(ValidChars.indexOf(Char) == -1){
			IsNumber = false;
		}
	}
	return IsNumber;
}

function multiselect_add(id){
	var sid = id;
	var did = id.replace(/ms_/, "");
	var ms = document.getElementById(sid);
	var textarea = document.getElementById(did);
	var inserted = textarea.value.split(", ")
	var selected = new Array();
	var c=0;
	for(i=0;i<ms.length;i++){
		if(ms.options[i].selected){
			var same = false;
			for(o=0;o<inserted.length;o++){
				if(inserted[o] == ms.options[i].value){
					same = true;
				}
			}
			if(same == false){
				selected[c] = ms.options[i].value;
				c++;
			}
		}
	}
	var selected_text = selected.join(", ")
	if(selected_text != ""){
		if(textarea.value == ""){
			textarea.value = selected_text;
		}else{
			textarea.value = textarea.value + ", " + selected_text;
		}
	}

}

function multiselect_del(id){
}


function rights_add(id, right){
	var textarea = document.getElementById(id);
	if(right != ""){
		if(textarea.value == ""){
			textarea.value = right;
		}else{
			textarea.value = textarea.value + ", " + right;
		}
	}
}

function rights_del(id, right){
	var textarea = document.getElementById(id);
	var inserted = textarea.value.split(", ");

	for(o=0;o<inserted.length;o++){
		if(inserted[o] == right){
			inserted.splice(o, 1);
		}
	}
	textarea.value = inserted.join(", ");
}

function rights_add_all(id){
	var textarea = document.getElementById(id);
	var cid = id + "_checkbox_";
	var c = 0;
	var box = "";
	var insert = new Array();
	while(1){
		if(document.getElementById(cid+c)){
			box = document.getElementById(cid+c);
			box.checked = true;
			insert[c] = box.value
		}else{
			break;
		}
		c++;
	}
	textarea.value = insert.join(", ");
}

function rights_del_all(id){
	var textarea = document.getElementById(id);
	textarea.value = "";
	var cid = id + "_checkbox_";
	var c = 0;
	var box = "";
	while(1){
		if(document.getElementById(cid+c)){
			box = document.getElementById(cid+c);
			box.checked = false;
		}else{
			break;
		}
		c++;
	}
}


function check_unique(ins_tbl, row, value, output_div_id, input_id){
	var div = document.getElementById(output_div_id);
	var input = document.getElementById(input_id);
	var url = "func/xml_check_unique.php?tbl="+ins_tbl+"&row="+row+"&value="+value;
	var retxml = getxml(url);

	try{ //Internet Explorer 
		xmldoc=new ActiveXObject("Microsoft.XMLDOM"); 
		xmldoc.async="false"; 
		xmldoc.loadXML(retxml); 
	}catch(e){
		try{ //Firefox, Mozilla, Opera, etc.
			parser=new DOMParser();
			xmldoc=parser.parseFromString(retxml,"text/xml");
		}catch(e){
			alert(e.message);
			return;
		}
	}

	retval = xmldoc.getElementsByTagName("retval")[0].childNodes[0].nodeValue;
	//alert(retval);
	if(retval == 0){
		div.innerHTML = "<img src='img/icons/check.gif' alt='G&uuml;ltig' />&nbsp;<span>G&uuml;ltig!</span>";
		input.value = value;
	}else if(retval == 1){
		div.innerHTML = "<img src='img/icons/error.gif' alt='Ung&uuml;ltig' />&nbsp;<span>Ein Datensatz mit diesem Wert existert bereits. W&auml;hlen Sie bitte einen anderen Wert.</span>";
		input.value = "";
	}
}


/* HTML functions */
function get_selection(id){
	var element = document.getElementById(id);
	if (document.selection != null && element.selectionStart == null){
		//ie
		element.focus();
		var range = document.selection.createRange();
		var bookmark = range.getBookmark();
		var contents = element.value;
		var originalContents = contents;
		var marker = "##SELECTION_MARKER_" + Math.random() + "##";
		while(contents.indexOf(marker) != -1) {
			marker = "##SELECTION_MARKER_" + Math.random() + "##";
		}

		var parent = range.parentElement();
		if (parent == null || parent.type != "textarea") {
			return { start: 0, end: 0 };
		}
		range.text = marker + range.text + marker;
		contents = element.value;

		var result = {};
		result.start = contents.indexOf(marker);
		contents = contents.replace(marker, "");
		result.end = contents.indexOf(marker);

		element.value = originalContents;
		range.moveToBookmark(bookmark);
		range.select();

		return result;
    }else{
		//ff
		return { 
			start: element.selectionStart, 
			end: element.selectionEnd 
		};
    }

}

function get_selected_text(id){
	var element = document.getElementById(id);
	var ret = get_selection(id);
	return {
		pre: element.value.substring(0, ret["start"]),
		select: element.value.substring(ret["start"], ret["end"]),
		post: element.value.substring(ret["end"], element.value.length)
	}
}

//estimates the array returned by get_selected_text()
function set_selected_text(id, arr){
	var element = document.getElementById(id);
	element.focus();
	var from = arr["pre"].length;
	var to = element.value.length - arr["post"].length;
	if (element.setSelectionRange) {
		element.setSelectionRange(from, to);
	}else if (element.createTextRange){
		var range = element.createTextRange();
		range.collapse(true);
		range.moveEnd('character', to);
		range.moveStart('character', from);
		range.select();
	}else{
		element.select();
	}
}

//function create_div(id){
//	var element = document.getElementById(id);
//	var width = element.offsetWidth;
//	var height = element.offsetHeight;
//	var pos = getpos(element);
//	var left = pos[1]-pos[3];
//	var top = pos[0]-pos[2];
//
//	var div = document.createElement("div");
//	div.style.backgroundColor = "#000000";
//	div.style.position = "absolute";
//	div.style.top = top+"px";
//	div.style.left = left+"px";
//	div.style.width = width+"px";
//	div.style.height = height+"px";
//	div.style.zIndex = (zindex++);
//	div.id = id+"_menu";
////	desktopobj.getWindowByDOMObj(element).dom.appendChild(div);
//	document.body.appendChild(div);
//	setopacity(id+"_menu", 8);
//	document.getElementById('submit_form').disabled='disabled';
//	return div;
//}

//function remove_div(id){
//	var element = document.getElementById(id);
//	var div = document.getElementById(id+"_menu");
////	desktopobj.getWindowByDOMObj(element).dom.removeChild(div);
//	document.body.removeChild(div);
////	document.getElementById("main").removeChild(div);
//	document.getElementById('submit_form').disabled='';
//}

function html_link(id){
	this.id = id;
	this.element = document.getElementById(this.id);
	this.scrolled = this.element.scrollTop;
	this.text = get_selected_text(this.id);

	if(this.text["select"].match(/\[link:([^\ ]*)\ ([^\ ]*)\ ([^\]]*)\]/)){
		this.matches = this.text["select"].match(/\[link:([^\ ]*)\ ([^\ ]*)\ ([^\]]*)\]/);
		this.value_name = this.matches[3];
		this.value_url = this.matches[1];
		this.value_cont = this.matches[2];
	}else{
		this.value_name = this.text["select"];
		this.value_url = "";
		this.value_cont = "";
	}
		
	
	this.html = "<table>\n";
	this.html += "	<tr><td><span class='admin_menu_font'>Name: </span></td><td><input id='"+this.id+"_menu_name' type='text' value='"+this.value_name+"'></td></tr>\n";
	this.html += "	<tr><td><span class='admin_menu_font'>Ziel: </span></td><td><input id='"+this.id+"_menu_url' type='text' value='"+this.value_url+"'>";
	this.html += "&nbsp;<input class=\"button\" name=\"folder_button\" type='button' value=\"...\" onClick=\"new_window('fm', 'func/folder.php?lang=$lang&id="+this.id+"_menu_url&PHPSESSID="+phpsessid+"&session_user="+session_user+"');\">";
	this.html += "&nbsp;<input class=\"button\" name=\"folder_button\" type='button' value=\"interne Seite...\" onClick=\"int_link_window = window.open('func/static_page_link.php?lang=$lang&opener_id="+this.id+"_menu_url&PHPSESSID="+phpsessid+"&session_user="+session_user+"&value=' + escape(document.getElementById('"+this.id+"_menu_url').value), 'Link auf eine interne Seite', 'width=600px,height=800px,dependent=yes,location=no,menubar=no,scrollbars=yes,status=no,toolbar=no'); mywindow.focus();\"></td></tr>\n";
	this.html += "	<tr><td><span class='admin_menu_font'>Container: </span></td><td>&nbsp;<select size='1' id='"+this.id+"_menu_cont' class='select'><option class='option' value=''></option><option class='option' value='main'>Hauptcontainer</option><option class='option' value='right_1'>1. Feld rechts</option><option class='option' value='right_2'>2. Feld rechts</option><option class='option' value='right_3'>3. Feld rechts</option><option class='option' value='nav_left'>2. Feld link</option><option class='option' value='gallery'>Galleriefeld</option><option class='option' value='new'>Link in neuem Fenster öffnen</option></select></td></tr>\n";
	this.html += "	<tr><td>&nbsp;</td><td><button type='button' class='ignore' onClick=\""+this.id+"_html_link_obj.create();\">OK</button>&nbsp;";
	this.html += "<button type='button' class='ignore' onClick=\""+this.id+"_html_link_obj.cancel();\">Abbrechen</button></td></tr>\n";
	this.html += "</table>";
//	this.div.innerHTML = this.html;

	this.windowbox = desktopobj.getWindowByDOMObj(this.element).open_child();
	this.windowbox.set_title("Link einfügen");
	this.windowbox.change_content(this.html);

	for(i=0;i<document.getElementById(this.id+"_menu_cont").length; ++i){
		if(document.getElementById(this.id+"_menu_cont").options[i].value == this.value_cont){
			document.getElementById(this.id+"_menu_cont").options[i].selected = true;
		}
	}
}

html_link.prototype={
	create:function(){
		this.name = document.getElementById(this.id+"_menu_name").value;
		this.url = document.getElementById(this.id+"_menu_url").value;
		this.cont = document.getElementById(this.id+"_menu_cont").value;
		if(this.name == "" || this.url == "" || this.cont == ""){
			alert("Es sind nicht alle Felder ausgefüllt!");
			return;
		}

		this.html_link = "[link:"+this.url+" "+this.cont+" "+this.name+"]";
		this.element.value = this.text["pre"] + this.html_link + this.text["post"];
		this.windowbox.close();
		this.element.scrollTop = this.scrolled;
		set_selected_text(this.id, this.text);
		return;
	},

	cancel:function(){
		this.windowbox.close();
		this.element.scrollTop = this.scrolled;
		set_selected_text(this.id, this.text);
		return;
	}
}

function html_img(id){
	this.id = id;
	this.element = document.getElementById(this.id);
	this.scrolled = this.element.scrollTop;
	this.text = get_selected_text(this.id);
//	this.div = create_div(this.id);
	if(this.text["select"].match(/\[img:([^\ ,\]]*)\ ([^\ ,\]]*)\ ([^\]]*)\]/)){
		this.matches = this.text["select"].match(/\[img:([^\ ,\]]*)\ ([^\ ,\]]*)\ ([^\]]*)\]/);
		this.value_title = this.matches[3];
		this.value_url = this.matches[1];
		this.value_bgurl = this.matches[2];
	}else if(this.text["select"].match(/\[img:([^\ ,\]]*)\ ([^\]]*)\]/)){
		this.matches = this.text["select"].match(/\[img:([^\ ,\]]*)\ ([^\]]*)\]/);
		this.value_title = this.matches[2];
		this.value_url = this.matches[1];
		this.value_bgurl = "";
	}else{
		this.value_title = this.text["select"];
		this.value_url = "";
		this.value_bgurl = "";
	}

	this.html = "<table>\n";
	this.html += "	<tr><td><span class='admin_menu_font'>Titel des Bildes: </span></td><td><input id='"+this.id+"_menu_title' type='text' value='"+this.value_title+"'></td></tr>\n";
	this.html += "	<tr><td><span class='admin_menu_font'>Bild: </span></td><td><input id='"+this.id+"_menu_url' type='text' value='"+this.value_url+"'>";
	this.html += "&nbsp;<input class=\"button\" name=\"folder_button\" type='button' value=\"...\" onClick=\"new_window('fm', 'func/folder.php?lang=$lang&id="+this.id+"_menu_url&PHPSESSID="+phpsessid+"&session_user="+session_user+"');\"></td></tr>\n";
	this.html += "	<tr><td><span class='admin_menu_font'>Galleriebild (optional): </span></td><td><input id='"+this.id+"_menu_bgurl' type='text' value='"+this.value_bgurl+"'>";
	this.html += "&nbsp;<input class=\"button\" name=\"folder_button\" type='button' value=\"...\" onClick=\"new_window('fm', 'func/folder.php?lang=$lang&id="+this.id+"_menu_bgurl&PHPSESSID="+phpsessid+"&session_user="+session_user+"');\"></td></tr>\n";
	this.html += "	<tr><td>&nbsp;</td><td><button type='button' class='ignore' onClick=\""+this.id+"_html_img_obj.create();\">OK</button>&nbsp;";
	this.html += "<button type='button' class='ignore' onClick=\""+this.id+"_html_img_obj.cancel();\">Abbrechen</button></td></tr>\n";
	this.html += "</table>";
//	this.div.innerHTML = this.html;

	this.windowbox = desktopobj.getWindowByDOMObj(this.element).open_child();
	this.windowbox.set_title("Link einfügen");
	this.windowbox.change_content(this.html);

}

html_img.prototype={
	create:function(){
		this.title = document.getElementById(this.id+"_menu_title").value;
		this.url = document.getElementById(this.id+"_menu_url").value;
		this.bgurl = document.getElementById(this.id+"_menu_bgurl").value;
		if(this.title == "" || this.url == ""){
			alert("Es sind nicht alle Felder ausgefüllt!");
			return;
		}
		if(this.bgurl != ""){
			this.html_img = "[img:"+this.url+" "+this.bgurl+"  "+this.title+"]";
		}else{
			this.html_img = "[img:"+this.url+" "+this.title+"]";
		}
		this.element.value = this.text["pre"] + this.html_img + this.text["post"];
		this.windowbox.close();
		this.element.scrollTop = this.scrolled;
		set_selected_text(this.id, this.text);
		return;
	},

	cancel:function(){
		this.windowbox.close();
		this.element.scrollTop = this.scrolled;
		set_selected_text(this.id, this.text);
		return;
	}
}

function html_format(id, format){
	this.id = id;
	this.format = format;
	this.element = document.getElementById(this.id);
	this.scrolled = this.element.scrollTop;
	this.text = get_selected_text(this.id);
	if(this.text["select"] == ""){
		alert("Markieren sie den Text, den Sie formatieren wollen.");
		return;
	}
	if(this.format == "subtitle"){
		if(this.text["select"].match(/^\=\=(.*)\=\=$/)){
			this.html_format = this.text["select"].replace(/^\=\=/, "");
			this.html_format = this.html_format.replace(/\=\=$/, "");
		}else{
			this.html_format = "=="+this.text["select"]+"==";
		}
	}else if(this.format == "bold"){
		if(this.text["select"].match(/\[b\]([\s,\S]*)\[\/b\]/)){
			this.html_format = this.text["select"].replace(/\[b\]/g, "");
			this.html_format = this.html_format.replace(/\[\/b\]/g, "");
		}else{
			this.html_format = "[b]"+this.text["select"]+"[/b]";
		}
	}else if(this.format == "italic"){
		if(this.text["select"].match(/\[i\]([\s,\S]*)\[\/i\]/)){
			this.html_format = this.text["select"].replace(/\[i\]/g, "");
			this.html_format = this.html_format.replace(/\[\/i\]/g, "");
		}else{
			this.html_format = "[i]"+this.text["select"]+"[/i]";
		}
	}else if(this.format == "underline"){
		if(this.text["select"].match(/\[u\]([\s,\S]*)\[\/u\]/)){
			this.html_format = this.text["select"].replace(/\[u\]/g, "");
			this.html_format = this.html_format.replace(/\[\/u\]/g, "");
		}else{
			this.html_format = "[u]"+this.text["select"]+"[/u]";
		}
	}else if(this.format == "right-justified"){
		if(this.text["select"].match(/\[r\]([\s,\S]*)\[\/r\]/)){
			this.html_format = this.text["select"].replace(/\[r\]/g, "");
			this.html_format = this.html_format.replace(/\[\/r\]/g, "");
		}else{
			this.html_format = "[r]"+this.text["select"]+"[/r]";
		}
	}else if(this.format == "left-justified"){
		if(this.text["select"].match(/\[l\]([\s,\S]*)\[\/l\]/)){
			this.html_format = this.text["select"].replace(/\[l\]/g, "");
			this.html_format = this.html_format.replace(/\[\/l\]/g, "");
		}else{
			this.html_format = "[l]"+this.text["select"]+"[/l]";
		}
	}else if(this.format == "centered"){
		if(this.text["select"].match(/\[c\]([\s,\S]*)\[\/c\]/)){
			this.html_format = this.text["select"].replace(/\[c\]/g, "");
			this.html_format = this.html_format.replace(/\[\/c\]/g, "");
		}else{
			this.html_format = "[c]"+this.text["select"]+"[/c]";
		}
	}
	this.element.value = this.text["pre"] + this.html_format + this.text["post"];
	this.element.scrollTop = this.scrolled;
	set_selected_text(this.id, this.text);
}

function html_table(id){
	this.id = id;
	this.element = document.getElementById(this.id);
	this.scrolled = this.element.scrollTop;
	this.text = get_selected_text(this.id);
	if(this.text["select"] == ""){
		alert("Markieren sie den Text, den Sie formatieren wollen.");
		return;
	}

	if(this.text["select"].match(/\n/)){
		this.lines = new Array();
		this.lines = this.text["select"].split("\n");
		for(i=0;i<this.lines.length;i++){
			this.whitespaces = this.lines[i].search(/\ /);
		}
	}


	this.element.value = this.text["pre"] + this.html_format + this.text["post"];
	this.element.scrollTop = this.scrolled;
	set_selected_text(this.id, this.text);
}

function html_definition(id){
	this.id = id;
	this.element = document.getElementById(this.id);
	this.scrolled = this.element.scrollTop;
	this.text = get_selected_text(this.id);
	if(this.text["select"] == ""){
		alert("Markieren sie den Text, den Sie formatieren wollen.");
		return;
	}

	this.lines = this.text["select"].split("\n");
	if((this.text["pre"].match(/\n$/) || this.text["pre"] == "") && (this.text["post"].match(/^\n/) || this.text["select"].match(/\n$/) || this.text["post"] == "")){
		ii=1;
		for(i=0;i<this.lines.length;i=i+2){

			if(this.lines[i].match(/^\[dt\](.*)\[\/dt\]/) && this.lines[ii].match(/^\[dd\](.*)\[\/dd\]/)){
				this.html_definition = this.text["select"].replace(/\[d[d,t]\]/g, "");
				this.html_definition = this.html_definition.replace(/\[\/d[d,t]\]/g, "");
				this.element.value = this.text["pre"] + this.html_definition + this.text["post"];
				this.element.scrollTop = this.scrolled;
				set_selected_text(this.id, this.text);
				return;
			}else{
				this.lines[i] = "[dt]"+this.lines[i]+"[/dt]";
				if(ii >= this.lines.length || this.lines[ii] == ""){
					this.lines[ii] = "[dd]Definition hier einfuegen[/dd]";
				}else{
					this.lines[ii] = "[dd]"+this.lines[ii]+"[/dd]";
				}
			}
			ii=ii+2;
		}
		this.html_definition = this.lines.join("\n");
	}else{
		return;
	}
	this.element.value = this.text["pre"] + this.html_definition + this.text["post"];
	this.element.scrollTop = this.scrolled;
	set_selected_text(this.id, this.text);
}

function html_listing(id, type){
	this.type = type;
	if(this.type == "abc"){
		this.abc = new Array("a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z");
	}

	this.id = id;
	this.element = document.getElementById(this.id);
	this.scrolled = this.element.scrollTop;
	this.text = get_selected_text(this.id);
	if(this.text["select"].match(/\n[a-z]\.\ /) || this.text["select"].match(/\n[0-9]\.\ /) || this.text["select"].match(/\n\-\ /) || this.text["select"].match(/\n\>\ /)){
		this.lines = new Array();
		this.lines = this.text["select"].split("\n");
		for(i=0;i<this.lines.length;i++){
			if(this.type == "abc"){
				this.lines[i] = this.lines[i].replace(/^[a-z]\.\ /, "");
			}else if(this.type == "number"){
				this.lines[i] = this.lines[i].replace(/^[0-9]\.\ /, "");
			}else if(this.type == "dash"){
				this.lines[i] = this.lines[i].replace(/^\-\ /, "");
			}else if(this.type == "arrow"){
				this.lines[i] = this.lines[i].replace(/^\>\ /, "");
			}
		}
		this.html_listing_abc = this.lines.join("\n");
	}else if(this.text["select"].match(/\n/)){
		this.lines = new Array();
		this.lines = this.text["select"].split("\n");
		for(i=0;i<this.lines.length;i++){
			if(this.type == "abc"){
				this.lines[i] = this.abc[i]+". "+this.lines[i];
			}else if(this.type == "number"){
				this.lines[i] = (i+1)+". "+this.lines[i];
			}else if(this.type == "dash"){
				this.lines[i] = "- "+this.lines[i];
			}else if(this.type == "arrow"){
				this.lines[i] = "> "+this.lines[i];
			}
		}
		this.html_listing_abc = this.lines.join("\n");
	}else{
		return;
	}
	this.element.value = this.text["pre"] + this.html_listing_abc + this.text["post"];
	this.element.scrollTop = this.scrolled;
	set_selected_text(this.id, this.text);
}



function html_preview(id){
	this.id = id;
	this.element = document.getElementById(this.id);
	this.scrolled = this.element.scrollTop;
	this.opts = new Array();
	this.opts["html"] = this.element.value;
	//this.html = getxml("post:func/html_preview.php?lang="+lang+"&PHPSESSID=" + phpsessid + "&session_user="+session_user, this.opts);

	this.html = getxml("post:func/html_preview2.php?lang="+lang+"&PHPSESSID=" + phpsessid + "&session_user="+session_user+"&element_id="+this.id, this.opts);

	document.getElementById("main").innerHTML = this.html;
	desktopobj.getWindowByDOMObj(this.element).toogle();
	return;

	if(document.getElementById('html_preview_cont')){
		document.getElementById('main').removeChild(document.getElementById('html_preview_cont'));
	}

	this.pos = getpos(this.element);
	this.left = this.pos[1];
	this.top = this.pos[0];
	this.div = document.createElement("div");
	this.div.style.backgroundColor = "#FFFFFF";
	this.div.style.border = "1px solid black";
	this.div.style.position = "absolute";
	this.div.style.top = (this.top-100)+"px";
	this.div.style.left = this.left+"px";
	this.div.style.width = "610px";
	this.div.style.height = "820px";
	this.div.style.padding = "5px";
	this.div.id = "html_preview_cont";
	this.div.innerHTML = this.html;
	document.getElementById("main").appendChild(this.div);
	setopacity("html_preview_cont", 9.5);

	this.element.scrollTop = this.scrolled;
}

function html_html(id){
	this.id = id;
	this.element = document.getElementById(this.id);
	this.scrolled = this.element.scrollTop;
	this.text = get_selected_text(this.id);
	//this.div = create_div(this.id);
	if(this.text["select"].match(/\[html:([^\]]*)\]/)){
		this.matches = this.text["select"].match(/\[html:([^\]]*)\]/);
		this.value_html = this.matches[1];
	}else{
		this.value_html = this.text["select"];
	}
	this.html = "	&nbsp;<span class='admin_menu_font'>Schreiben Sie HTML Code in dieses Textfeld: </span><br />\n";
	this.html += "	&nbsp;<textarea id='"+this.id+"_menu_html' style='width:400px; height:250px;'>"+this.value_html+"</textarea><br />";
	this.html += "	&nbsp;<button type='button' class='ignore' onClick=\""+this.id+"_html_html_obj.create();\">OK</button>&nbsp;";
	this.html += "<button type='button' class='ignore' onClick=\""+this.id+"_html_html_obj.cancel();\">Abbrechen</button><br />\n";

	this.windowbox = desktopobj.getWindowByDOMObj(this.element).open_child();
	this.windowbox.set_title("HTML-Code einfügen");
	this.windowbox.change_content(this.html);
}

html_html.prototype={
	create:function(){
		this.html = document.getElementById(this.id+"_menu_html").value;
		if(this.html == ""){
			alert("Es sind nicht alle Felder ausgefüllt!");
			return;
		}
		this.html_html = "[html:"+this.html+"]";
		this.element.value = this.text["pre"] + this.html_html + this.text["post"];
		this.windowbox.close();
		this.element.scrollTop = this.scrolled;
		set_selected_text(this.id, this.text);
		return;
	},

	cancel:function(){
		this.windowbox.close();
		this.element.scrollTop = this.scrolled;
		set_selected_text(this.id, this.text);
		return;
	}
}

/*Form objects*/

function form_textbox(id){
	this.id = id;
	this.element = document.getElementById(this.id);
	this.div = document.getElementById("form_"+this.id);
	this.div.innerHTML += "<input type='text' class='input' value=''><br />";
	this.element.innerHTML += "<input type='text' class='input' value=''><br />"
	this.html = "Name: <input type='text' class='input' value=''><br />";
	this.html += "validation: <input type='text' class='input' value=''><br />";
	this.html += "default: <input type='text' class='input' value=''><br />";
	this.html += "mandatory: <input type='text' class='input' value=''><br />";
	this.html += "<input type='button' class='button' value='OK'>";

	this.wb = desktopobj.getWindowByDOMObj(this.element).open_child();
	this.wb.change_content(this.html);
}

form_textbox.prototype={
	create:function(){
	}
}

function admin_menu_toogle(){
	if(document.getElementById("admin_menu_content")){
		var menu = document.getElementById("admin_menu_content");

		if(menu.style.visibility == '' || menu.style.visibility == 'visible'){
			menu.style.visibility = 'hidden';
			menu.style.display = 'none';
		}else{
			menu.style.visibility = 'visible';
			menu.style.display = '';
		}
	}
}

function desktop(){
	this.windows = new Array();
	this.wcounter = 0;
	this.counter = new Array();
	this.counter["opened_windows"] = 0;
	this.top_start = "50px";
	this.left_start = "200px";
	this.top_step = "20px";
	this.left_step = "20px";
	this.child = new Array();
}

desktop.prototype={
	open_adam:function(url, target){
		var obj = new ajaxwindow2(url, target);
		obj.parent = this;
		obj.adam = this;
		obj.wid = this.new_id();
		obj.draw();
		this.init_position(obj);
		obj.active();

		this.windows[obj.wid] = obj;
		this.child.push(obj);
		return obj;
	},

	init_position:function(obj){
		var top = parseInt(this.top_start, 10);
		var left = parseInt(this.left_start, 10);
		for(var key in this.windows){
			if(this.windows[key].status != "closed"){
				top += parseInt(this.top_step, 10);
				left += parseInt(this.left_step, 10);
			}
		}
		obj.top = top + "px";
		obj.left = left + "px";
	},

	open:function(url, title, target){
		if(target == "new"){
			ajaxFunction(url, target);
			return;
		}


		for(var key in this.windows){
			if(this.windows[key]["url"] == url){
				if(this.windows[key]["status"] != "closed"){
					this.reload(key);
					return;
				}
			}
		}

		if(url && url != ""){

			this.windows[this.wcounter] = new Array();
			this.windows[this.wcounter]["obj"] = new ajaxwindow(url, this.wcounter, title);
			this.windows[this.wcounter]["obj"].draw();
			this.windows[this.wcounter]["obj"].top = this.top_start;
			this.windows[this.wcounter]["obj"].left = this.left_start;

			this.windows[this.wcounter]["status"] = "opened";
			this.windows[this.wcounter]["url"] = url;
			this.windows[this.wcounter]["title"] = title;
			this.to_front(this.wcounter);

			this.windows[this.wcounter]["obj"].top = parseInt(this.top_start, 10) + (this.counter["opened_windows"]*parseInt(this.top_step, 10)) + "px";
			this.windows[this.wcounter]["obj"].left = parseInt(this.left_start, 10) + (this.counter["opened_windows"]*parseInt(this.left_step, 10)) + "px";

			this.wcounter++;
			this.counter["opened_windows"]++;

			return this.windows[this.wcounter-1]["obj"];
		}

	},

	close:function(wid){
		this.to_front(wid);
		document.body.removeChild(this.windows[wid]["obj"].div);
		this.windows[wid]["status"] = "closed";
		this.counter["opened_windows"]--;
	},

	reload:function(wid){
		this.to_front(wid);
		this.windows[wid]["obj"].load();
		this.windows[wid]["status"] = "opened";
	},

	set_title:function(wid, title){
		this.windows[wid]["title"] = title;
		this.windows[wid]["obj"].set_title(title);
	},

	active:function(obj){
		for(var ele in this.windows){
			if(document.getElementById(this.windows[ele].id+"_title_div")){
				document.getElementById(this.windows[ele].id+"_title_div").style.backgroundColor = 'DarkGray';
			}
		}
		document.getElementById(obj.id+"_title_div").style.backgroundColor = 'DimGray';
		obj.div.style.zIndex = zindex++;
	},

	getWindowByDOMObj:function(obj){
		if (obj.offsetParent) {
			do{
				if(obj.id){
					if(obj.id.match(/ajaxwindow_[0-9]+/)){
						var id = obj.id.match(/[0-9]+/);
						return this.windows[id];
					}
				}
			}while (obj = obj.offsetParent);
		}
	},

	getWindowById:function(id){
		if(this.windows[id]){
			return this.windows[id];
		}else{
			return false;
		}
	},

	new_id:function(){
		this.wcounter++;
		return this.wcounter;
	},

	handleEvent:function(event, func){
		eval(func);
	}
}

function ajaxwindow2(url, target){
	this.url = url;
	this.width = "600px";
	this.height = "";
	this.child = new Array();
	this.wid;
	this.parent;
	this.adam;
	this.status = "created";

	this.__defineSetter__("width", function(y){
			this.div.style.width = y;
		}
	);

	this.__defineSetter__("height", function(y){
			this.div.style.height = y;
		}
	);

	this.__defineSetter__("top", function(y){
			this.div.style.top = y;
			this.div.style.bottom = "";
		}
	);

	this.__defineSetter__("left", function(y){
			this.div.style.left = y;
			this.div.style.right = "";
		}
	);

	this.__defineSetter__("right", function(y){
			this.div.style.right = y;
			this.div.style.left = "";
		}
	);

	this.__defineSetter__("bottom", function(y){
			this.div.style.bottom = y;
			this.div.style.top = "";
		}
	);

	this.__defineSetter__("statusbar", function(y){
			this.footer.innerHTML = y;
		}
	);
}

ajaxwindow2.prototype={

	draw:function(){
		this.id = "ajaxwindow_"+this.wid;
		this.div = document.createElement("div");
		this.div.className = "ajaxwindow";
//		this.div.style.top = this.top;
//		this.div.style.left = this.left;
		this.div.style.width = this.width;
		this.div.style.height = this.height;
		this.div.id = this.id+"_window";

		this.header = document.createElement("div");
		this.header.id = this.id+"_header";
		this.header.className = "ajaxwindow_header";
		this.header.innerHTML = "<div id='"+this.id+"_title_div' onmousedown=\"dragstart(document.getElementById('"+this.id+"_window'))\"><span id='"+this.id+"_title' title='"+this.title+"'>"+this.title+"</span></div><button class='minimalize' title='Minimieren' id='"+this.id+"_minimalize'><span>_</span></button><button class='reload' title='Neu laden' id='"+this.id+"_reload'><span>R</span></button><button class='close' title='Schliessen' id='"+this.id+"_close'><span>X</span></button><br />";

		this.content = document.createElement("div");
		this.content.className = "ajaxwindow_content";
		this.content.id = this.id;

		this.footer = document.createElement("div");
		this.footer.className = "ajaxwindow_footer";
		this.footer.id = this.id+"_footer";

		this.div.appendChild(this.header);
		this.div.appendChild(this.content);
		this.div.appendChild(this.footer);

		document.body.appendChild(this.div);

		this.window_title = document.getElementById(this.id+"_title");
		this.window_minimalize = document.getElementById(this.id+"_minimalize");
		this.window_reload = document.getElementById(this.id+"_reload");
		this.window_close = document.getElementById(this.id+"_close");
		this.dom = this.content;

		registerObjectEventHandler(document.getElementById(this.id+"_minimalize"), "click", this, "this.toogle()", true);
		registerObjectEventHandler(document.getElementById(this.id+"_close"), "click", this, "this.close()", true);
		registerObjectEventHandler(document.getElementById(this.id+"_reload"), "click", this, "this.reload()", true);
		registerObjectEventHandler(this.div, "mousedown", this, "this.active()", true);

		this.load();
	},

	load:function(url){
		if(url != null){
			this.url = url;
		}

		if(this.url){
			if(this.url.match(/\?/)){
				ajaxFunction(this.url+"&wid="+this.wid, this.id);
				this.status = "opened";
			}else{
				ajaxFunction(this.url+"?wid="+this.wid, this.id);
				this.status = "opened";
			}
		}
	},

	change_content:function(content){
		this.content.innerHTML = content;
		this.status = "opened";
	},

	change_footer:function(content){
		if(content != ""){
			this.footer.style.display = "inherit";
			this.footer.innerHTML = content;
		}else{
			this.footer.style.display = "none";
		}
	},

	set_title:function(y){
		this.window_title.innerHTML = y;
		this.window_title.title = y;
	},

	toogle:function(){
		if(this.content.style.visibility == '' || this.content.style.visibility == 'visible'){
			this.hide();
		}else{
			this.show();
		}
	},

	hide:function(){
		this.old_width = this.div.offsetWidth+"px";
		this.width = "200px";
		this.content.style.visibility = 'hidden';
		this.content.style.display = 'none';
		this.status = "hidden";
	},

	show:function(){
		this.width = "";
		this.content.style.visibility = 'visible';
		this.content.style.display = '';
		this.status = "opened";
	},
	
	open_child:function(url, target){
		if(url != ""){
			var obj = new ajaxwindow2(url, target);
			obj.parent = this;
			obj.adam = this.adam;
			obj.wid = this.adam.new_id();
			obj.draw();
			obj.active();

			this.adam.init_position(obj);
			this.child.push(obj);
			this.adam.windows[obj.wid] = obj;
			return obj;
		}
	},

	reload:function(url){
		if(url){
			this.url = url;
		}
		this.load();
	},

	active:function(){
		this.adam.active(this);
	},

	close:function(){
		var length = this.child.length;
		for(var i=0;i<length;i++){
			if(this.child[i].status != "closed"){
				this.child[i].close();
			}
		}
		document.body.removeChild(this.div);
		this.status = "closed";
	},

	handleEvent:function(event, func){
		eval(func);
	}
}


var exposeobj;
function direct_edit_activate(element, desc, title, second, tbl, id, col, datatype){
	log("activating '"+title+"'");
	if(document.getElementById("admin_edit_active")){
		var div = document.getElementById("admin_edit_active");
//		document.body.removeChild(div);
	}

	var hash = element.id;
	var pos = getpos(element);
	var width = element.offsetWidth;
	var height = element.offsetHeight;

	var div = document.createElement("div");
	div.id = "admin_edit_active";

	var headerdiv = document.createElement("div");
	headerdiv.style.display = "inline";
	headerdiv.style.backgroundColor = "white";
	headerdiv.style.borderRight = "1px solid red";
	headerdiv.style.borderLeft = "1px solid red";
	headerdiv.style.borderTop = "1px solid red";
	headerdiv.style.borderBottom = "1px solid gray";
	headerdiv.style.paddingLeft = "3px";
	headerdiv.style.whiteSpace = "nowrap";
	headerdiv.style.position = "absolute";
	headerdiv.style.top = (pos[0]-20-1)+"px";
	headerdiv.style.left = (pos[1])-2+"px";
	headerdiv.style.height = 20+"px";
	headerdiv.style.maxWidth = (width)+"px";
	headerdiv.style.overflow = "hidden";
	headerdiv.innerHTML = "<span style='font-weight:bold;'>"+desc+"</span><span> von \""+title+"\"</span>";

	var leftdiv = document.createElement("div");
	leftdiv.style.position = "absolute";
	leftdiv.style.backgroundColor = "red";
	leftdiv.style.top = (pos[0])+"px";
	leftdiv.style.left = (pos[1]-2)+"px";
	leftdiv.style.height = height+"px";
	leftdiv.style.width = 1+"px";

	var rightdiv = document.createElement("div");
	rightdiv.style.position = "absolute";
	rightdiv.style.backgroundColor = "red";
	rightdiv.style.top = (pos[0])+"px";
	rightdiv.style.left = (pos[1]+width+2)+"px";
	rightdiv.style.height = height+"px";
	rightdiv.style.width = 1+"px";

	var topdiv = document.createElement("div");
	topdiv.style.position = "absolute";
	topdiv.style.backgroundColor = "red";
	topdiv.style.top = (pos[0])+"px";
	topdiv.style.left = (pos[1]-2)+"px";
	topdiv.style.width = (width+4)+"px";
	topdiv.style.height = 1+"px";

	var bottomdiv = document.createElement("div");
	bottomdiv.style.position = "absolute";
	bottomdiv.style.backgroundColor = "red";
	bottomdiv.style.top = (pos[0]+height)+"px";
	bottomdiv.style.left = (pos[1]-2)+"px";
	bottomdiv.style.width = (width+4)+"px";
	bottomdiv.style.height = 1+"px";

	if(!second){
		var editdiv = document.createElement("div");
		editdiv.style.position = "absolute";
		editdiv.style.backgroundColor = "white";
		editdiv.style.borderLeft = "1px solid red";
		editdiv.style.borderRight = "1px solid gray";
		editdiv.style.borderBottom = "1px solid red";
		editdiv.style.borderTop = "1px solid red";
		editdiv.style.padding = "3px";
		editdiv.style.top = (pos[0])+"px";
		editdiv.style.left = (pos[1]-31-2)+"px";
		editdiv.style.width = 24+"px";
		editdiv.style.height = 24+"px";

		var editbutton = document.createElement("button");
		editbutton.title = desc+" - "+title+" bearbeiten";
		editbutton.className = "button";
		editbutton.style.width = "24px";
		editbutton.style.height = "24px";
		editbutton.innerHTML = "<img style='width: 16px; height: 16px;' src='img/icons/edit.png' alt='Edit' />";
		editbutton.addEventListener("click",
									function(){ var obj = desktopobj.open_adam("func/admin_edit_col.php?tbl="+tbl+"&id="+id+"&col="+col+"&hash=content_"+hash+"&datatype="+datatype); obj.set_title("<b>"+desc+"</b> von \""+title+"\""); },
									true);

		editdiv.appendChild(editbutton);
		element.setAttribute("onmouseover", "");
		element.addEventListener("mouseover",
									function(){ direct_edit_activate(element, desc, title, true, tbl, id, col); },
									true);
		editdiv.addEventListener("mouseover",
									function(){ direct_edit_activate(element, desc, title, true, tbl, id, col); },
									true);
		editdiv.addEventListener("mouseout",
									function(){ direct_edit_deactivate(element); },
									true);
		element.appendChild(editdiv);
	}


	div.appendChild(topdiv);
	div.appendChild(rightdiv);
	div.appendChild(leftdiv);
	div.appendChild(bottomdiv);
	div.appendChild(headerdiv);
	//div.appendChild(editdiv);

	element.appendChild(div);
	setopacity("admin_edit_active", 9);
}

function direct_edit_deactivate(element){
	log("deactivating");
	if(document.getElementById("admin_edit_active")){
		var div = document.getElementById("admin_edit_active");
		element.removeChild(div);
	}
}

function login_info(){
	this.div = document.createElement("div");
	this.div.className = "login_info";
	this.div.id = "login_info";
	document.body.appendChild(div);
	setopacity("login_info", 9);
	
	this.ocobj = new open_close("login_info", "<table><tr><td><span>Eingeloggt als: \""+session_user+"\"</span></td><td style='text-align:right;'><button class='button' onclick=\"var obj = desktopobj.open_adam('func/logout.php'); obj.set_title('Ausloggen');\"><img src='img/icons/logoff.gif' alt='Ausloggen' />&nbsp;<span>Ausloggen</span></button></td></tr></table>");
	this.ocobj.steps = 2;
	this.ocobj.open();
}

function logout(){
	admin_nav.close();

	log("successfully logged out, user: "+session_user+", old phpsessid: "+phpsessid, "info");
	phpsessid = "";
	session_user = "";

	this.ocobj = new open_close("login_info", "");
	this.ocobj.steps = 2;
	ocobj.onfinish("document.body.removeChild(document.getElementById('login_info'));");
	this.ocobj.close();
}


function cron_percent_update(hash, cron_id){
	this.cron_id = cron_id;
	this.hash = hash;
	this.domitems = new Array();
	this.items = new Array();
	this.items[0] = "btn_img";
	this.items[1] = "button";
	this.items[2] = "status";
	this.items[3] = "name";
	this.items[4] = "interval";
	this.items[5] = "last_called";
	this.items[6] = "font";
	this.items[7] = "font2";
	this.items[8] = "bar";
	this.items[9] = "time";

	this.exist = true;
	for(var i=0;i<this.items.length;i++){
		if(!document.getElementById(hash+"_"+this.items[i])){
			this.exist = false;
		}else{
			this.domitems[i] = document.getElementById(hash+"_"+this.items[i]);
		}
	}

	if(this.exist){
		this.retval = getxml("func/cron_bar.php?id="+this.cron_id+"&hash="+this.hash);
		//"img/icons/play.gif,func();|img/icons/running.png|name|interval|run|last_called|percent"
		this.ret = this.retval.split("|");
		for(var i=0;i<this.items.length;i++){
			if(this.items[i] == "bar"){
				this.domitems[i].style.width = this.ret[i]+"px";
				if(parseInt(this.ret[i], 10) < 100){
					setTimeout("cron_percent_update('"+hash+"', "+cron_id+");", 2000);
				}else{
					setTimeout("cron_percent_update('"+hash+"', "+cron_id+");", 10000);
				}
			}else if(this.items[i] == "status"){
				this.domitems[i].src = this.ret[i];
			}else if(this.items[i] == "btn_img"){
				this.domitems[i].src = this.ret[i];
			}else if(this.items[i] == "button"){
				this.domitems[i].setAttribute("onClick", this.ret[i]);
			}else{
				this.domitems[i].innerHTML = this.ret[i];
			}
		}
	}
}

//------------DEPREACHED
function __nav_adm_sub_show(id, pre, level){
	var pre = document.getElementById(pre);
	if(level>2){
		var left = getX(pre)+pre.offsetWidth-10;
		pre.style.left = left+"px";
	}
	if(document.getElementById(id)){
		document.getElementById(id).style.visibility = 'visible';
	}
}

function __nav_adm_sub_hide(id){
	if(document.getElementById(id)){
		document.getElementById(id).style.visibility = 'hidden';
	}
}


