var g_html = true;
var g_color = "";
var g_typeface = "";

var s = "" // tmp

function showemot(show)
{
if (document.getelemementById)
	{
	target = document.getelemementById("emoticonbox");
	if (show)
		target.style.display = "";
	else
		target.style.display = "none";
	}
}


function updateVars (elem)
	{
	if (elem.createTextRange) 
		{
		s = "" + document.selection.type;
		elem.selected = document.selection.createRange().duplicate();
		}
	}

function encloseText (elem, desc, text1, text2)
{
  	elem.focus ();
	if (elem.createTextRange && elem.selected)
	{
		var selected = elem.selected;
		if (elem.selected.text.length == 0)
		{
			name = prompt("1 Enter text to be " + desc, "");
			if (name != null && name != "" && name != "null")
				selected.text = text1 + name + text2;
		}
		else if (selected.text.charAt(selected.text.length - 1) == ' ')
		{
			selected.text = text1 + 
				selected.text.substring(0,selected.text.length - 1) +
				text2 + ' ';
		}
		else
		{
			selected.text = text1 + selected.text + text2;
		}
	}
	else
	{
		if((elem.selectionStart || elem.selectionEnd ) && (elem.selectionEnd-elem.selectionStart>0))
		{
			elem.value=elem.value.substr(0,elem.selectionStart) + text1 + elem.value.substr(elem.selectionStart,elem.selectionEnd-elem.selectionStart) + text2 + elem.value.substr(elem.selectionEnd);
		}
		else{
		name = prompt("2 Enter text to be " + desc, "");
		if (name != null && name != "" && name != "null")
			elem.value += text1 + name + text2;
		}
	}
	updateVars (elem);
}


function insertText (elem, text)
	{
	elem.focus ();
	if (elem.createTextRange &&
			elem.selected  && //s=="Text" &&
			elem.selected.text.length == 0)
		{
	   	var selected = elem.selected;
		selected.text = text;
		}
	else if ((text != null) && (text != ""))
		elem.value += text;
	updateVars (elem)
	}

function trimPrefix (str, prefix)
	{
	if (str.indexOf (prefix) == 0)
		return str.substring(prefix.length);
	return str;
	}

function doImage (elem)
	{
	elem.focus ();
	addr = trimPrefix (prompt("Enter address of image (\"http://\" optional)",
			"http://"), "http://");
	
	if (addr != null && addr != "" && addr != "null")
		{
		if (elem.createTextRange &&
			elem.selected &&
			elem.selected.text.length == 0)
			{
	   		var selected = elem.selected;

			if (g_html)
				selected.text = "<img border=0 src=\"http://" + addr + "\" />";
			else
				selected.text = "[img noborder]http://" + addr + "[/img]";;
			}
		else 
			{
			if (g_html)
				elem.value += "<img border=0 src=\"http://" + addr + "\" />";
			else
				elem.value += "[img noborder]http://" + addr + "[/img]";
			elem.selected = document.selection.createRange().duplicate();
			}
		updateVars (elem)
		}
	}

function doMail (elem)
	{
	elem.focus ();
	addr = prompt("Enter email address", "");
	
	if (addr != null && addr != "" && addr != "null")
		{
		if (elem.createTextRange &&
			elem.selected &&
			elem.selected.text.length == 0)
			{
	   		var selected = elem.selected;
			if (g_html)
				selected.text = "<a href=\"mailto:" + addr + "\">" + addr + "</a>";
			else
				selected.text = "[mail]" + addr + "[/mail]";;
			}
		else 
			{
			if (g_html)
				elem.value += "<a href=\"mailto:" + addr + "\">" + addr + "</a>";
			else
				elem.value += "[mail]" + addr + "[/mail]";
			elem.selected = document.selection.createRange().duplicate();
			}
		updateVars (elem)
		}
	}

function doLink (elem)
	{
	var addr, name;
	
	elem.focus ();
	addr = prompt("Enter address (\"http://\" optional)", "http://");
	if (addr == null || addr == "" || addr == "null")
		return;	
	addr = trimPrefix (addr, "http://");
	if (addr == "")
		return;	

	if (elem.createTextRange && elem.selected)
		{
	   	var selected = elem.selected;
		
		if (elem.selected.text.length == 0)
			{
			name = prompt("Enter the name of the link", addr);
			if (name != null && name != "" && name != "null")
				{
				if (g_html)
					selected.text = "<a href=\"http://" + addr  +
						"\" target=\"_new\">" + name + "</a>";
				else
					selected.text = "[link=http://" + addr  +
						" newwindow]" + name + "[/link]";
				}
			}
		else if (selected.text.charAt(selected.text.length - 1) == ' ')
			{
			if (g_html)
				{
				selected.text = "<a href=\"http://" + addr  +
					"\" target=\"_new\">" + 
					selected.text.substring(0,selected.text.length - 1) + "</a>";
				}
			else
				{
				selected.text = "[link=http://" + addr  + " newwindow]" + 
					selected.text.substring(0,selected.text.length - 1) +
					"[/link]" + ' ';
				}
			}
		else
			{
			if (g_html)
				selected.text = "<a href=\"http://" + addr  +
					"\" target=\"_new\">" + 
					selected.text + "</a>";
			else
				selected.text = "[link=http://" + addr  +
					" newwindow]" + selected.text + "[/link]";
				
			}
		}
	else
		{
		name = prompt("Enter the name of the link", addr);
		if (name != null && name != "")
			{
			if (g_html)
				elem.value += 
					"<a href=\"http://" + addr  +
						"\" target=\"_new\">" + 
						name + "</a>";
			else
				elem.value += "[link=http://" + addr + "]" + name + "[/link]";

			elem.selected = document.selection.createRange().duplicate();
			}
		}
	updateVars (elem)
	}

function doFont (elem, face, color, size)
{
	if (face == 0 && color == 0 && size == 0)
	{
		alert ("Please pick a typeface, color and/or size");
		return;
	}
	if (face == 1)
	{
		face = prompt ("Enter a typeface", g_typeface);
		g_typeface = face;
	}
	if (color == 1)
	{
		color = prompt ("Enter a named color or hex value", g_color);
		if (color.length == 6)
			{
			var hexChars = "0123456789abcdefABCDEF";
			for (i=0; i < 6; i++) 
				if (hexChars.indexOf(color.charAt(i)) == -1) 
					break;
			if (i == 6)
				color = "#" + color;
			}
		g_color = color;
	}
	
	s = "<span style=\"";
	if (face != 0)  s += "font-family:" + face + "; ";
	if (color != 0)	s += "color:" + color + ";";
	if (size != 0)  s += "font-size:" + size + ";";
	s += "\">";
	encloseText (elem, " display in the font style", s, "</span>");	
}

function encloseWithTags (elem, s, tag)
{
	encloseText(elem, s, "<" + tag + ">", "</" + tag + ">");
}
	
function insertTag (elem, text)
	{
	if (g_html) insertText(elem, "<" + text + " />");
	else		insertText(elem, "[" + text + "]");
	}

function doQuote (elem)
	{
	if (g_html)
		encloseText(elem, "quoted", 
			"<blockquote><strong><em>Quote:</em></strong><hr>",
			"<hr></blockquote>");
			
	else
		encloseText(elem, "quoted", "[quote]", "[/quote]");
	}

function doEmoticon (elem, list, num)
	{
	var text;
	if (g_html)
		text = "<img border=0 src=\"" + list[num] + "\" />";		
	else
		text = list[num+1];
	elem.focus ();
	if (elem.createTextRange &&
			elem.selected  && 
			elem.selected.text.length == 0)
		{
	   	var selected = elem.selected;
		selected.text = text;
		}
	else if ((text != null) && (text != ""))
		elem.value += text;
	updateVars (elem)
	}


