function dofontstuff(psopen, psclose) {
	var txtarea = document.post.message;

		theSelection = document.selection.createRange().text;
			txtarea.value += psopen + psclose;
			txtarea.focus();


}
//-->
function style(dostyle) {
		doInsert(" " + dostyle + " ", "", false);
}
<!--
function MM_callJS(jsStr) {
  return eval(jsStr)
}
//-->
bo_help = "Click here to insert Bold Text..";
it_help = "Click here to insert Italic Text..";
un_help = "Click here to insert Underlined Text..";
im_help = "Click here to insert an Image..";
ur_help = "Click here to insert a URL..";
co_help = "Click here to insert Text Colour..";
si_help = "Click here to insert Font Size..";
em_help = "Click here to insert Email Address..";

function helpbox(help) {
	document.post.helpbox.value = eval(help + "_help");
}

function mouseOut() {
	document.post.helpbox.value = "Hover over the buttons for a description";
}

function theUrl() { //v3.0
  var i, args=theUrl.arguments; document.the_returnValue = false;
  for (i=0; i<(args.length-1); i+=2) eval(args[i]+".location='"+args[i+1]+"'");
}

function openWindow(theURL,winName,features) {
  window.open(theURL,winName,features);
}

//====================================
// This part is borrowed from IBForums
//====================================
var B_open = 0;
var I_open = 0;
var U_open = 0;
var QUOTE_open = 0;
var CODE_open = 0;
var SQL_open = 0;
var HTML_open = 0;

var codetag   = new Array();


//================================================
// Determine browser type and stuff.
// Borrowed from http://www.mozilla.org/docs/web-developer/sniffer/browser_type.html
//================================================
var myAgent   = navigator.userAgent.toLowerCase();
var myVersion = parseInt(navigator.appVersion);

var is_ie   = ((myAgent.indexOf("msie") != -1)  && (myAgent.indexOf("opera") == -1));
var is_nav  = ((myAgent.indexOf('mozilla')!=-1) && (myAgent.indexOf('spoofer')==-1)
                && (myAgent.indexOf('compatible') == -1) && (myAgent.indexOf('opera')==-1)
                && (myAgent.indexOf('webtv') ==-1)       && (myAgent.indexOf('hotjava')==-1));

var is_win   =  ((myAgent.indexOf("win")!=-1) || (myAgent.indexOf("16bit")!=-1));
var is_mac    = (myAgent.indexOf("mac")!=-1);

//================================================



// Set the number of tags open box

function cstat()
{
	var c = stacksize(codetag);
	
	if ( (c < 1) || (c == null) ) {
		c = 0;
	}
	
	if ( ! codetag[0] ) {
		c = 0;
	}
	
	document.post.tagcount.value = c;
}
//------------------------------------------------
// Get stack size
//------------------------------------------------

function stacksize(thearray)
{
	for (i = 0 ; i < thearray.length; i++ ) {
		if ( (thearray[i] == "") || (thearray[i] == null) || (thearray == 'undefined') ) {
			return i;
		}
	}
	
	return thearray.length;
}

//------------------------------------------------
// Push stack
//------------------------------------------------

function pushstack(thearray, newval)
{
	arraysize = stacksize(thearray);
	thearray[arraysize] = newval;
}

//------------------------------------------------
// Pop stack
//------------------------------------------------

function popstack(thearray)
{
	arraysize = stacksize(thearray);
	theval = thearray[arraysize - 1];
	delete thearray[arraysize - 1];
	return theval;
}

function closeall()
{
	if (codetag[0]) {
		while (codetag[0]) {
			tagRemove = popstack(codetag)
			document.post.message.value += "[/" + tagRemove + "]";
			
			// Change the button status
			// Ensure we're not looking for FONT, SIZE or COLOR as these
			// buttons don't exist, they are select lists instead.
			
			if ( (tagRemove != 'FONT') && (tagRemove != 'SIZE') && (tagRemove != 'COLOR') )
			{
				eval("document.post." + tagRemove + ".value = ' " + tagRemove + " '");
				eval(tagRemove + "_open = 0");
			}
		}
	}
	
// Ensure we got them all
	document.post.tagcount.value = 0;
	codetag = new Array();
	document.post.message.focus();
}

function add_code(NewCode)
{
    document.post.message.value += NewCode;
    document.post.message.focus();
}

function alterfont(theval, thetag)
{
    if (theval == 0)
    	return;
	
	if(doInsert("[" + thetag + "=" + theval + "]", "[/" + thetag + "]", true))
		pushstack(codetag, thetag);
	
    document.post.ffont.selectedIndex  = 0;
    document.post.fsize.selectedIndex  = 0;
    document.post.fcolor.selectedIndex = 0;
    
    cstat();
	
}	

function simpletag(thetag)
{
	var tagOpen = eval(thetag + "_open");
	
		if (tagOpen == 0)
		{
			if(doInsert("[" + thetag + "]", "[/" + thetag + "]", true))
			{
				eval(thetag + "_open = 1");
				// Change the button status
				eval("document.post." + thetag + ".value += '*'");
		
				pushstack(codetag, thetag);
				cstat();
				hstat('click_close');
			}
		}
		else {
			// Find the last occurance of the opened tag
			lastindex = 0;
			
			for (i = 0 ; i < codetag.length; i++ )
			{
				if ( codetag[i] == thetag )
				{
					lastindex = i;
				}
			}
			
			// Close all tags opened up to that tag was opened
			while (codetag[lastindex])
			{
				tagRemove = popstack(codetag);
				doInsert("[/" + tagRemove + "]", "", false)
				
				// Change the button status
				if ( (tagRemove != 'FONT') && (tagRemove != 'SIZE') && (tagRemove != 'COLOR') )
				{
					eval("document.post." + tagRemove + ".value = ' " + tagRemove + " '");
					eval(tagRemove + "_open = 0");
				}
			}
			
			cstat();
		}
	}
	
function tag_list()
{
	var listvalue = "init";
	var thelist = "";
	
	while ( (listvalue != "") && (listvalue != null) )
	{
		listvalue = prompt("List Item", "");
		if ( (listvalue != "") && (listvalue != null) )
		{
			thelist = thelist+"[.]"+listvalue+"\n";
		}
	}
	
	if ( thelist != "" )
	{
		doInsert( "[LIST]\n" + thelist + "[/LIST]\n", "", false);
	}
}
	
function tag_url()
{
    var FoundErrors = '';
    var enterURL   = prompt("Enter the URL", "http://");
    var enterTITLE = prompt("Enter the URL title", "My Webpage");

    if (!enterURL) {
        FoundErrors += " " + "There was no URL";
    }
    if (!enterTITLE) {
        FoundErrors += " " + "There was no URL Title";
    }

    if (FoundErrors) {
        alert("Error!"+FoundErrors);
        return;
    }

	doInsert("[URL="+enterURL+"]"+enterTITLE+"[/URL]", "", false);
}

function tag_image()
{
    var FoundErrors = '';
    var enterURL   = prompt("Enter the Image URL", "http://");

    if (!enterURL) {
        FoundErrors += " " + "There was no Image URL";
    }

    if (FoundErrors) {
        alert("Error!"+FoundErrors);
        return;
    }

	doInsert("[IMG="+enterURL+"]", "", false);
}

function tag_email()
{
    var emailAddress = prompt("Enter an e-mail Address", "");
	var emailTitle = prompt("Enter an e-mail Address Title", "");

    if (!emailAddress) { 
		alert("There was no e-mail Address"); 
		return; 
	}

	doInsert("[EMAIL="+emailAddress+"]"+emailTitle+"[/EMAIL]", "", false);
}



function doInsert(ibTag, ibClsTag, isSingle)
{
	var isClose = false;
	var obj_ta = document.post.message;

	if ( (myVersion >= 4) && is_ie && is_win) // Ensure it works for IE4up / Win only
	{
		if(obj_ta.isTextEdit){ // this doesn't work for NS, but it works for IE 4+ and compatible browsers
			obj_ta.focus();
			var sel = document.selection;
			var rng = sel.createRange();
			rng.colapse;
			if((sel.type == "Text" || sel.type == "None") && rng != null){
				if(ibClsTag != "" && rng.text.length > 0)
					ibTag += rng.text + ibClsTag;
				else if(isSingle)
					isClose = true;
	
				rng.text = ibTag;
			}
		}
		else{
			if(isSingle)
				isClose = true;
	
			obj_ta.value += ibTag;
		}
	}
	else
	{
		if(isSingle)
			isClose = true;

		obj_ta.value += ibTag;
	}

	obj_ta.focus();
	
	// clear multiple blanks
//	obj_ta.value = obj_ta.value.replace(/  /, " ");

	return isClose;
}	
