//
// einige JavaScript-Funktionen für das CMS
//
//

function GoDelete(url)
{
	if (confirm(STRING_DELETE)) document.location.href = url;
}
/*** navigation editor ***/
function EditNaviSwitchActive()
{
	var plugin = document.getElementById('navplugin');

	for(var i = 0; i < tablePlugins.length; i++)
	{
		if(plugin.value == tablePlugins[i])
		{
			document.getElementById('navfile').disabled = false;
			document.getElementById('navfileSTR').disabled = true;

			document.getElementById('navfile').options.length = tableValues[i].length/2;
			for(var j = 0; j < tableValues[i].length/2; j++)
			{
				document.getElementById('navfile').options[j] = new Option(tableValues[i][2*j+1],tableValues[i][2*j],false,false);
			}
			return;
		}
	}
	for(var i = 0; i < strPlugins.length; i++)
	{
		if(plugin.value == strPlugins[i])
		{
			document.getElementById('navfile').disabled = true;
			document.getElementById('navfileSTR').disabled = false;
			return;
		}
	}
	document.getElementById('navfile').disabled = true;
	document.getElementById('navfileSTR').disabled = true;
}
var NAV_VAL = 0;

function EditNaviSelector(nav_part)
{
	var plugin = document.getElementById('navplugin');

	if(nav_part == 1)
	{
		var navfile = document.getElementById('navfile');
		var navfilestr = document.getElementById('navfileSTR');
		
		var val = "";
/*		if(navfile != null && navfilestr != null)
		{
			if(!navfile.disabled)
				val = navfile.value;
			else
				val = navfilestr.value;
		}
		else*/
		{
			val = NAV_VAL;
		}
		
		doSyncRequest("navieditor;nav_part=1&plugin_id="+plugin.value+"&val="+val,"pluginSettings");
	
		navfile = document.getElementById('navfile');
		navfilestr = document.getElementById('navfileSTR');
		
		if(navfile != null && navfilestr != null)
			EditNaviSwitchActive();
	}
}

function expandCollapseTableRows(tableStr,startIndex,numRows)
{
	var table = document.getElementById(tableStr);
	var image = "minus.png";
	
	var td = table.rows[startIndex-1].getElementsByTagName("td")[0];
	var src = td.getElementsByTagName("img")[0].src;
	var oldimage = src.substr(src.lastIndexOf("/")+1);
	
	for(i = 0; i < numRows; i++)
	{
		//if(table.rows[startIndex + i].style.visibility == "visible" || table.rows[startIndex + i].style.visibility == "")
		if(oldimage == "minus.png")
		{
			table.rows[startIndex + i].style.visibility = "collapse";
			image = "plus.png";
		}
		else
			table.rows[startIndex + i].style.visibility = "visible";
	}	
	
	src = src.slice(0,src.lastIndexOf("/")+1) + image;
	td.getElementsByTagName("img")[0].src = src;
}


/*** for BBCode Editor ***/
//The following functions are widely taken from the Unclassified Newsboard (newsboard.unclassified.de)

var userAgent = navigator.userAgent.toLowerCase();
var is_opera  = (userAgent.indexOf('opera') != -1);
var is_saf    = ((userAgent.indexOf('safari') != -1) || (navigator.vendor == "Apple Computer, Inc."));
var is_webtv  = (userAgent.indexOf('webtv') != -1);
var is_ie     = ((userAgent.indexOf('msie') != -1) && (!is_opera) && (!is_saf) && (!is_webtv));
var is_ie4    = ((is_ie) && (userAgent.indexOf("msie 4.") != -1));
var is_moz    = (navigator.product == 'Gecko');
var is_kon    = (userAgent.indexOf('konqueror') != -1);
var is_ns     = ((userAgent.indexOf('compatible') == -1) && (userAgent.indexOf('mozilla') != -1) && (!is_opera) && (!is_webtv) && (!is_saf));
var is_ns4    = ((is_ns) && (parseInt(navigator.appVersion) == 4));
var codeType  = "BBCODE";
function doCmd(event, cmd, arg1)
{
	textbox.focus();
	if(codeType == "content.bbcode")
	{
		switch (cmd)
		{
			case "bold":
				enclose_text("[b]", "[/b]"); break;
			case "italic":
				enclose_text("[i]", "[/i]"); break;
			case "underline":
				enclose_text("[u]", "[/u]"); break;
			case "strike":
				enclose_text("[s]", "[/s]"); break;
			case "mono":
				enclose_text("[m]", "[/m]"); break;
			case "url":
				if (event.shiftKey)
				{
					enclose_text("[url=]", "[/url]");
					// If on Mozilla, move cursor to correct position
					if (textbox.selectionStart >= 0) textbox.selectionStart = textbox.selectionEnd = textbox.selectionStart-1;
				}
				else
				{
					enclose_text("[url]", "[/url]");
				}
				break;
			case "img":
				if(arg1)
					enclose_text("[img]" + arg1, "[/img]");
				else
					enclose_text("[img]", "[/img]");
				break;
			case "color":
				enclose_text("[color=" + arg1 + "]", "[/color]"); break;

			// "not currently supported":
			case "undo":
				document.selection.createRange().execCommand("Undo");
			case "redo":
				document.selection.createRange().execCommand("Redo");
		}
	}
	else if(codeType == "content.html")
	{
		switch (cmd)
		{
			case "bold":
				enclose_text("<b>", "</b>"); break;
			case "italic":
				enclose_text("<i>", "</i>"); break;
			case "underline":
				enclose_text("<u>", "</u>"); break;
			case "strike":
				enclose_text("<s>", "</s>"); break;
			case "mono":
				enclose_text("<m>", "</m>"); break;
			case "url":
				enclose_text("<a href=\"\">", "</a>");
				// If on Mozilla, move cursor to correct position
				if (textbox.selectionStart >= 0) textbox.selectionStart = textbox.selectionEnd = textbox.selectionStart + 9;
				break;
			case "img":
				if(arg1)
					enclose_text("<img src=\""+arg1+"\" alt=\"\"/>","");
				else
					enclose_text("<img src=\"\" alt=\"\"/>","");

				if (textbox.selectionStart >= 0) textbox.selectionStart = textbox.selectionEnd = textbox.selectionStart + 10;
				break;
			case "color":
				enclose_text("<span style=\"color:" + arg1 + "\">", "</span>"); break;

			// "not currently supported":
			case "undo":
				document.selection.createRange().execCommand("Undo");
			case "redo":
				document.selection.createRange().execCommand("Redo");
		}
	}
}


function enclose_text(t_open, t_close)
{
	if (is_ie && document.selection && document.selection.createRange().duplicate().text.length)
	{
		// IE with selected text
		var seltext = document.selection.createRange().duplicate().text;
		if (seltext.substring(0, t_open.length) == t_open &&
			seltext.substring(seltext.length - t_close.length, seltext.length) == t_close)
		{
			// tags are already there, remove them
			document.selection.createRange().duplicate().text = seltext.substring(t_open.length, seltext.length - t_close.length);
		}
		else
		{
			document.selection.createRange().duplicate().text = t_open + seltext + t_close;
		}
	}
	else if (textbox.selectionEnd && (textbox.selectionEnd - textbox.selectionStart > 0))
	{
		// Mozilla with selected text
		var start_selection = textbox.selectionStart;
		var end_selection = textbox.selectionEnd;
		var new_endsel;

		// fetch everything from start of text area to selection start
		var start = textbox.value.substring(0, start_selection);
		// fetch everything from start of selection to end of selection
		var seltext = textbox.value.substring(start_selection, end_selection);
		// fetch everything from end of selection to end of text area
		var end = textbox.value.substring(end_selection, textbox.textLength);

		if (seltext.substring(0, t_open.length) == t_open &&
			seltext.substring(seltext.length - t_close.length, seltext.length) == t_close)
		{
			// tags are already there, remove them
			seltext = seltext.substring(t_open.length, seltext.length - t_close.length);
			new_endsel = end_selection - t_open.length - t_close.length;
		}
		else
		{
			seltext = t_open + seltext + t_close;
			new_endsel = end_selection + t_open.length + t_close.length;
		}

		textbox.value = start + seltext + end;

		textbox.selectionStart = start_selection;
		textbox.selectionEnd = new_endsel;
	}
	else
	{
		// no selection, insert opening/closing tags alone
		insert_text(t_open + t_close);
		textbox.selectionEnd -= t_close.length;
	}
}

function insert_text(what) {
	if (textbox.createTextRange)
	{
		textbox.focus();
		document.selection.createRange().duplicate().text = what;
		textbox.focus();
	}
	else if (textbox.selectionStart >= 0)
	{
		var start_selection = textbox.selectionStart;

		var start = textbox.value.substring(0, start_selection);

		var end = textbox.value.substring(start_selection, textbox.textLength);

		textbox.value = start + what + end;
		textbox.selectionStart = textbox.selectionEnd = start_selection + what.length;
		textbox.focus();
	}
	else
	{
		textbox.value += what;
		textbox.focus();
	}
}
function checklength(where, max) {
	if (where.value.length <= max) return true;
	where.value = where.value.substr(0, max);
	return false;
}

function setCodeType(val)
{
	codeType = val;
}


/*** functions for asynchronous load of page parts ***/

function doRequest(url, div)
{
	request = createRequest();
	request.onreadystatechange = function()
	{
		switch(request.readyState)
		{
			case 0:
			case 1:
			case 2:
			case 3: return;
			case 4: var out = request.responseText; break;
		}
		document.getElementById(div).innerHTML = out;
	}
	request.open("GET", url , true);
	request.send(null);
}

function doSyncRequest(url, div)
{
	request = createRequest();
	request.open("GET", url , false);
	request.send(null);
	document.getElementById(div).innerHTML = request.responseText;
}


function createRequest()
{
 	try
	{
		var request = new XMLHttpRequest();
	}
	catch(ex)
	{
		try
		{
			var request = new ActiveXObject("MSXML2.XMLHTTP");
		}
		catch(ex)
		{
			var request = new ActiveXObject("Microsoft.XMLHTTP");
		}
	}
	return request;
}


function switchCalendarEnd()
{
	if(document.getElementById("enableEnd").checked == true)
	{
		document.getElementById("dateEnd").disabled = false;
		document.getElementById("hourEnd").disabled = false;
		document.getElementById("minuteEnd").disabled = false;
	}
	else
	{
		document.getElementById("dateEnd").disabled = true;
		document.getElementById("hourEnd").disabled = true;
		document.getElementById("minuteEnd").disabled = true;
	}
}

function switchVisibility(id,id2,cb)
{
	var elem = document.getElementById(id);
	var elem2 = document.getElementById(id2);

	if(cb.checked == true)
	{
		elem.style.display = "none";
		elem.disabled = true;
		elem2.style.display = "block";
		elem2.disabled = false;
	}
	else
	{
		elem.style.display = "block";
		elem.disabled = false;
		elem2.style.display = "none";
		elem2.disabled = true;
	}
}

function toggleSidebarVisibility(caller,url)
{
	var elem = document.getElementById("sidebar");

	if(elem.style.display == "none")
	{
		elem.style.display = "block";
		document.getElementById("mainFill").id = "main";
		
		doSyncRequest(url+"=1", caller.id);
	}
	else
	{
		elem.style.display = "none";
		document.getElementById("main").id = "mainFill";
		
		doSyncRequest(url+"=0", caller.id);
	}
}
