function debug(object)
{
	alert("-- " + object.id + " --");
}

function aJaX(aJaXtarget, aJaXobject)
{
	// Erstellen des Requests
	var request = null;

	try
	{
		request = new XMLHttpRequest();
	}
	catch(ms)
	{
		try
		{
			request = new ActiveXObject("Msxml2.XMLHTTP");
		}
		catch(nonms)
		{
			try
			{
				request = new ActiveXObject("Microsoft.XMLHTTP");
			}
			catch(failed)
			{
				request = null;
			}
		}
	}

	if(request == null)
	alert("Error creating request object!");

	// Anfrage erstellen (GET, url ist localhost,
	// Request ist asynchron
	request.open("GET", aJaXtarget, true);

	// Beim Abschliessen des Request wird diese Funktion ausgeführt
	request.onreadystatechange = function()
	{            
		switch(request.readyState)
		{
			case 4:
				if(request.status != 200)
				{
					alert("Fehler:" + request.status);
				}
				else
				{
					// schreibe Antwort in Container mit der id aJaXobject
					document.getElementById(aJaXobject).innerHTML = request.responseText;
				}
			break;
			default:
				return false;
			break;
		}
		return true;
	};

	request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
	request.send(null);
}

function dump(arr,level) {
	var dumped_text = "";
	if(!level) level = 0;

	//The padding given at the beginning of the line.
	var level_padding = "";
	for(var j=0;j<level+1;j++) level_padding += "    ";

	if(typeof(arr) == 'object') { //Array/Hashes/Objects 
		for(var item in arr) {
			var value = arr[item];

			if(typeof(value) == 'object') { //If it is an array,
				dumped_text += level_padding + "'" + item + "' ...\n";
				dumped_text += dump(value,level+1);
			} else {
				dumped_text += level_padding + "'" + item + "' => \"" + value + "\"\n";
			}
		}
	} else { //Stings/Chars/Numbers etc.
		dumped_text = "===>"+arr+"<===("+typeof(arr)+")";
	}
	return dumped_text;
}

function metaria(object, image)
{
	object.style.background = "url(" + image + ") no-repeat 3px 4px";
}

function bbcode(target, tag, type, option)
{
	var input = document.getElementById(target);
	var aTag = "[" + tag + "]";
	var eTag = "[/" + tag + "]";
	input.focus();
	/* für Internet Explorer */
	if(typeof document.selection != "undefined")
	{
		/* Einfügen des Formatierungscodes */
		var range = document.selection.createRange();
		var insText = range.text;
		range.text = input_new(tag, insText, type, option);
		/* Anpassen der Cursorposition */
		range = document.selection.createRange();
		if(insText.length == 0)
			range.move("character", -eTag.length);
		else
			range.moveStart("character", aTag.length + insText.length + eTag.length);      
		range.select();
	}
	/* für neuere, auf Gecko basierende, Browser */
	else if(typeof input.selectionStart != "undefined")
	{
		/* Einfügen des Formatierungscodes */
		var start = input.selectionStart;
		var end = input.selectionEnd;
		var insText = input.value.substring(start, end);
		input.value = input.value.substr(0, start) + input_new(tag, insText, type, option) + input.value.substr(end);
		/* Anpassen der Cursorposition */
		var pos;
		if(insText.length == 0)
		{
			if(type == "format")
				pos = start + aTag.length + 1 + document.getElementById(option).value.length;
			else
				pos = start + aTag.length;
		}
		else
			pos = start + aTag.length + insText.length + eTag.length;
		input.selectionStart = pos;
		input.selectionEnd = pos;
	}
	/* für die übrigen Browser */
	else
	{
		if(type == "input")
			input_old(target, tag, option);
		else
			format_old(target, tag, option);
	}
}

function input_new(tag, text, type, option)
{
	var finalText
	if(type == "input")
		finalText = "[" + tag + "]" + text + "[/" + tag + "]";
	else if(type == "format")
	{
		if(typeof document.getElementById(option) != "undefined")
		{
			var optionValue = document.getElementById(option).value;
			if(optionValue != "-1")
				finalText = "[" + tag + "=" + optionValue + "]" + text + "[/" + tag + "]";
			document.getElementById(option).selectedIndex = 0;
		}
	}
	else
		finalText = "";
	return finalText;
}

function input_old(target, tag, level)
{
	var text;
	var name;
	var link;

	if(level == 1)
	{
		text = prompt("Bitte den zu formatierenden Text eingeben.","---","Text-Formatierung");
		if(text != null)
		{
			document.getElementById(target).value = document.getElementById(target).value + "[" + tag + "]" + text + "[/" + tag + "]";
			document.getElementById(target).focus();
		}
	}
	else
	{
		link = prompt("Bitte den Link eingeben.","---","Text-Formatierung");
		if(link != null)
		{
			name = prompt("Bitte einen Namen fuer den Link eingeben.","---","Text-Formatierung");
			if(name != null)
			{
				document.getElementById(target).value = document.getElementById(target).value + "[" + tag + "=" + link + "]" + name + "[/" + tag + "]";
				document.getElementById(target).focus();
			}
			else
			{
				document.getElementById(target).value = document.getElementById(target).value + "[" + tag + "]" + link + "[/" + tag + "]";
				document.getElementById(target).focus();
			}
		}
	}
}

function list(target)
{
	var text;
	var output = "";
	while((text = prompt("Bitte den gewünschten Inhalt des Listenfeldes eingeben. \"Abbrechen\" beendet die Eingabe.","---","Text-Formatierung")) != null)
	{
		output += "[*]" + text + "\n";
	}
	if(output.length > 1)
	{
		output = "[list]\n" + output + "[/list]\n";
		document.getElementById(target).value = document.getElementById(target).value + output;
	}
}

function change(object, receiver)
{
	document.getElementById(object).value = receiver;
	document.getElementById(object).focus();
}

function quote(user, object, stamp)
{
	var text;
	var date;
	text = document.getElementById(object).value;
	date = document.getElementById(stamp).value;
	document.getElementById("message").value += "[quote=\"" + user + "\" \"" + date + "\"]" + text + "[/quote]" + "\n";
	//document.getElementById("message").value += "[quote=\"" + user + "\"]" + text + "[/quote]" + "\n";
	document.getElementById("message").focus();
}

function smile(target, smile)
{
	document.getElementById(target).value = document.getElementById(target).value + smile;
	document.getElementById(target).focus();
}

function format_old(target, tag, source)
{
	var text;

	if(document.getElementById(source).value != "-1")
	{
		text = prompt("Bitte den zu formatierenden Text eingeben.","---","Text-Formatierung");
		if(text != null)
		{
			document.getElementById(target).value = document.getElementById(target).value + "[" + tag + "="+ document.getElementById(source).value + "]"  + text + "[/" + tag + "]";
			document.getElementById(target).focus();
		}
	}
}

function color(id, color, type)
{
	if(type == "bg")
	{
		id.style.background = color;
	}
	else if(type == "font")
	{
		id.style.color = color;
	}
}

function new_class(id, new_class)
{
	document.getElementById(id).id = new_class;
}
