/*
 +-----------------------------------------------------------------------+
 | 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];
			//alert(mandatory);
			//alert(eid + "->" + document.getElementById(eid).value);
			//if(document.edit_form[i].type != "hidden"){
				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:20;height:20;' type=button Onclick=\"document.getElementById('new_value_" + key + "').value++;\"><img src=img/icons/arrow_up_button.gif></button>&nbsp;";
		input += "<button class=button style='width:20;height:20;' type=button Onclick=\"document.getElementById('new_value_" + key + "').value--;\"><img src=img/icons/arrow_down_button.gif></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", "ajaxFunction('func/show_log_item.php?id="+id+"', 'main');");

		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("font");
				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: "+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){
	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> <font>Gültig!</font>";
		input.value = value;
	}else if(retval == 1){
		div.innerHTML = "<img src=img/icons/error.gif> <font>Ein Datensatz mit diesem Wert existert bereits. Wählen Sie bitte einen anderen Wert.</font>";
		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];
	var top = pos[0];

	//alert(width+"*"+height+" pos: "+left+" "+top+" zindex: "+element.style.zIndex);
	var div = document.createElement("div");
	div.style.backgroundColor = "#000000";
	div.style.position = "absolute";
	div.style.top = top;
	div.style.left = left;
	div.style.width = width;
	div.style.height = height;
	div.id = id+"_menu";
	document.getElementById("main").appendChild(div);
	setopacity(id+"_menu", 8);
	document.getElementById('submit_form').disabled='disabled';
	return div;
}

function remove_div(id){
	var div = document.getElementById(id+"_menu");
	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);
	this.div = create_div(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 = "<h2 style='color:white;'>Link einfügen</h2>\n";
	this.html += "<table>\n";
	this.html += "	<tr><td><font class='admin_menu_font'>Name: </font></td><td><input id='"+this.id+"_menu_name' type='text' value='"+this.value_name+"'></td></tr>\n";
	this.html += "	<tr><td><font class='admin_menu_font'>Ziel: </font></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=\"open_new_window('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=\"statische 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+"', 'Link auf statische Seite', 'width=600,height=400,dependent=yes,location=no,menubar=no,scrollbars=yes,status=no,toolbar=no'); mywindow.focus();\"></td></tr>\n";
	this.html += "	<tr><td><font class='admin_menu_font'>Container: </font></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;

	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"];
		remove_div(this.id);
		this.element.scrollTop = this.scrolled;
		set_selected_text(this.id, this.text);
		return;
	},

	cancel:function(){
		remove_div(this.id);
		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[1];
		this.value_url = this.matches[2];
	}else{
		this.value_title = this.text["select"];
		this.value_url = "";
	}

	this.html = "<h2 style='color:white;'>Bild einfügen</h2>\n";
	this.html += "<table>\n";
	this.html += "	<tr><td><font class='admin_menu_font'>Titel des Bildes: </font></td><td><input id='"+this.id+"_menu_title' type='text' value='"+this.value_title+"'></td></tr>\n";
	this.html += "	<tr><td><font class='admin_menu_font'>Bild: </font></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=\"open_new_window('func/folder.php?lang=$lang&id="+this.id+"_menu_url&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;
}

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

	cancel:function(){
		remove_div(this.id);
		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]";
		}
	}
	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_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);

	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;
	this.div.style.left = this.left;
	this.div.style.width = "610";
	this.div.style.height = "820";
	this.div.style.padding = "5";
	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 = "<h2 style='color:white;'>HTML Code einfügen</h2>\n";
	this.html += "	&nbsp;<font class='admin_menu_font'>Schreiben Sie HTML Code in dieses Textfeld: </font><br>\n";
	this.html += "	&nbsp;<textarea id='"+this.id+"_menu_html' style='width:95%; height:70%;'>"+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.div.innerHTML = 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"];
		remove_div(this.id);
		this.element.scrollTop = this.scrolled;
		set_selected_text(this.id, this.text);
		return;
	},

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