var state = 'none';

function showhide(layer_ref) {

if (state == 'block') {
state = 'none';
}
else {
state = 'block';
}
if (document.all) { //IS IE 4 or 5 (or 6 beta)
eval( "document.all." + layer_ref + ".style.display = state");
}
if (document.layers) { //IS NETSCAPE 4 or below
document.layers[layer_ref].display = state;
}
if (document.getElementById &&!document.all) {
hza = document.getElementById(layer_ref);
hza.style.display = state;
}
}

var clientPC = navigator.userAgent.toLowerCase();
var clientVer = parseInt(navigator.appVersion);
var is_ie = ((clientPC.indexOf("msie") != -1) && (clientPC.indexOf("opera") == -1));
var is_nav = ((clientPC.indexOf('mozilla')!=-1) && (clientPC.indexOf('spoofer')==-1) && (clientPC.indexOf('compatible') == -1) && (clientPC.indexOf('opera')==-1) && (clientPC.indexOf('webtv')==-1) && (clientPC.indexOf('hotjava')==-1));
var is_moz = 0;
var is_win = ((clientPC.indexOf("win")!=-1) || (clientPC.indexOf("16bit") != -1));
var is_mac = (clientPC.indexOf("mac")!=-1);
var e107_selectedInputArea;
var e107_selectedRange;
var e107_dupCounter = 1;

function mozWrap(txtarea, open, close){
	var selLength = txtarea.textLength;
	var selStart = txtarea.selectionStart;
	var selEnd = txtarea.selectionEnd;
	if (selEnd == 1 || selEnd == 2) selEnd = selLength;
	var s1 = (txtarea.value).substring(0,selStart);
	var s2 = (txtarea.value).substring(selStart, selEnd)
	var s3 = (txtarea.value).substring(selEnd, selLength);
	txtarea.value = s1 + open + s2 + close + s3;
	return;
}

function mozSwap(txtarea, newtext){
	var selLength = txtarea.textLength;
	var selStart = txtarea.selectionStart;
	var selEnd = txtarea.selectionEnd;
	if (selEnd == 1 || selEnd == 2) selEnd = selLength;
	var s1 = (txtarea.value).substring(0,selStart);
	var s3 = (txtarea.value).substring(selEnd, selLength);
	txtarea.value = s1 + newtext + s3;
	return;
}

function storeCaret (textAr){
	e107_selectedInputArea = textAr;
	if (textAr.createTextRange){
		e107_selectedRange = document.selection.createRange().duplicate();
	}
}

function addtext(text, emote)
{
	if (window.e107_selectedInputArea)
	{
		var ta = e107_selectedInputArea;
		if (emote != true)
		{  // Split if its a paired bbcode
			val = text.split('][');
			if (val[0] == text) val[1] = '';
		}
		else
		{
		val = text;
		}

		if ((clientVer >= 4) && is_ie && is_win)
		{
			theSelection = document.selection.createRange().text; /* wrap selected text */
			if (theSelection)
			{
				if (emote != true)
				{
				  if (val[1] == '')
				  {  // Single piece of text
					document.selection.createRange().text = val[0];
				  }
				  else
				  {  // bbcode
					document.selection.createRange().text = val[0] +']' +  theSelection + '[' + val[1];
				  }
				}
				else
				{
					document.selection.createRange().text = val + theSelection;
				}
				ta.focus();
				theSelection = '';
				return;
			}

		}
		else
		  if (ta.selectionEnd && (ta.selectionEnd - ta.selectionStart > 0))
		  { // Selected text here
			if (emote != true)
			{
			  if  (val[1] != '')
			  {  // BBCode to wrap
				mozWrap(ta, val[0] +']', '[' + val[1]); /* wrap selected text */
			  }
			  else
			  {  // Single piece of text to insert, and delete any selected text
				mozSwap(ta, text); /* wrap selected text */
			  }
			}
			else
			{
				mozWrap(ta, val, ''); /* wrap selected text */
			}
			return;
		  }
		text = ' ' + text + ' ';
		if (ta.createTextRange && e107_selectedRange)
		{
			var caretPos = e107_selectedRange; /* IE */
			caretPos.text = caretPos.text.charAt(caretPos.text.length - 1) == ' ' ? caretPos.text + text + ' ' : caretPos.text + text;
		}
		else
		  if (ta.selectionStart || ta.selectionStart == '0')
		  { /* Moz */
		   	var startPos = ta.selectionStart;
			var endPos = ta.selectionEnd;
			var charb4 = ta.value.charAt(endPos-1);
			ta.value = ta.value.substring(0, endPos)+ text + ta.value.substring(endPos);
		  }
		  else
		  {
			ta.value  += text;
		  }
		ta.focus();
	}
}