//bbcode = new Array();
bbtags = new Array
(
	'[b]','[/b]', //0
	'[i]','[/i]', //2
	'[u]','[/u]', //4
	'[quote]','[/quote]', //6
	'[code]','[/code]', //8
	'[list]','[/list]', //10
	'[list=]','[/list]', //12
	'[img]','[/img]', //14
	'[url]','[/url]', //16
	'[link]','[/link]', //18
	'[email]','[/email]', //20
	'[*]','', //22
	'[p]','[/p]' //24
);


var bbtagsBuffer = new Array();

function bbOpenTag(eltag, formname, textarea, button_suffix, class_default, class_active)
{
	if (bbtags[eltag+1] != '')
	{
		bbtagsBuffer[bbtagsBuffer.length] = eltag;
	
		if (class_default != '' && class_active != '')
		{
			document.getElementById(textarea + button_suffix + eltag).className = class_active;
		}
		else
		{
			eval('document.' + formname + '.' + textarea + button_suffix + eltag + '.value += "*"');
		}
	}
}

function bbCloseTag(eltag, formname, textarea, button_suffix, class_default, class_active)
{
	for (i = 0; i < bbtagsBuffer.length; i++)
	{
		if (bbtagsBuffer[i] == eltag)
		{
			bbtagsBuffer.splice(i, 1);
			if (class_default != '' && class_active != '')
			{
				document.getElementById(textarea + button_suffix + eltag).className = class_default;
			}
			else
			{
				buttext = eval('document.' + formname + '.' + textarea + button_suffix + eltag + '.value');
				eval('document.' + formname + '.' + textarea + button_suffix + eltag + '.value ="' + buttext.substr(0,(buttext.length - 1)) + '"');
			}
		}
	}
}

function bbDetectTags(eltag, textarea)
{
	var tag = 0;
	for (i = 0; i < bbtagsBuffer.length; i++)
	{
		if (bbtagsBuffer[i] == eltag)
		{
			tag++;
		}
	}
	if (tag > 0)
	{
		return true;
	}
	else
	{
		return false;
	}
}

function bbCloseAllTags(textarea)
{
	var count = bbtagsBuffer.length;
	for (n = 0; n < count; n++)
	{
		bb(bbtagsBuffer[bbtagsBuffer.length - 1]);
	}
}

function bb(eltag, formname, textarea, button_suffix, class_default, class_active)
{
	txtarea = document.forms[formname].elements[textarea];
   if (eltag == -1) { bbCloseAllTags(textarea); return; }

   //IE:
   if (document.selection) {
       txtarea.focus();
       sel = document.selection.createRange();
      if (sel.text.length > 0)
	  {
	  	trim = '';
	  	if (sel.text.charAt((sel.text.length-1)) == ' ')
		{
			trim = ' ';
			sel.text = bbtags[eltag] + sel.text.substring(0, ((sel.text.length)-1)) + bbtags[eltag+1] + ' ';
		}
		else
		{
		  	sel.text = bbtags[eltag] + sel.text + bbtags[eltag+1];
		}
	  }
      else {
            if (!bbDetectTags(eltag, textarea) || bbtags[eltag+1] == '') {
            sel.text = bbtags[eltag];
            if (button_suffix != '') bbOpenTag(eltag, formname, textarea, button_suffix, class_default, class_active);
          }
          else {
               sel.text = bbtags[eltag+1];
               if (button_suffix != '') bbCloseTag(eltag, formname, textarea, button_suffix, class_default, class_active);
               }
      }
      txtarea.focus();
   }
   //Mozilla-Netscape:
   else if (txtarea.selectionStart || txtarea.selectionStart == '0') {
      var startPos = txtarea.selectionStart;
      var endPos = txtarea.selectionEnd;
      var cursorPos = endPos;
      var scrollTop = txtarea.scrollTop;

      if (startPos != endPos) {
         txtarea.value = txtarea.value.substring(0, startPos)
                       + bbtags[eltag]
                       + txtarea.value.substring(startPos, endPos)
                       + bbtags[eltag+1]
                       + txtarea.value.substring(endPos, txtarea.value.length);
         cursorPos += bbtags[eltag].length + bbtags[eltag+1].length;
      }
      else {
         if (!bbDetectTags(eltag, textarea) || bbtags[eltag+1] == '') {
            txtarea.value = txtarea.value.substring(0, startPos)
                          + bbtags[eltag]
                          + txtarea.value.substring(endPos, txtarea.value.length);
            if (button_suffix != '') bbOpenTag(eltag, formname, textarea, button_suffix, class_default, class_active);
            cursorPos = startPos + bbtags[eltag].length;
         }
         else {
            txtarea.value = txtarea.value.substring(0, startPos)
                          + bbtags[eltag+1]
                          + txtarea.value.substring(endPos, txtarea.value.length);
            if (button_suffix != '') bbCloseTag(eltag, formname, textarea, button_suffix, class_default, class_active);
            cursorPos = startPos + bbtags[eltag+1].length;
         }
      }
      txtarea.focus();
      txtarea.selectionStart = cursorPos;
      txtarea.selectionEnd = cursorPos;
      txtarea.scrollTop = scrollTop;
   }
   else {
      if (!bbDetectTags(eltag, textarea) || bbtags[eltag+1] == '') {
         txtarea.value += bbtags[eltag];
         if (button_suffix != '') bbOpenTag(eltag, formname, textarea, button_suffix, class_default, class_active);
      }
      else {
         txtarea.value += bbtags[eltag+1];
         if (button_suffix != '') bbCloseTag(eltag, formname, textarea, button_suffix, class_default, class_active);
      }
      txtarea.focus();
   }
}

// Shows the help messages in the helpline window
function helpline(help) {
   //document.post.helpbox.value = eval(help + "_help");
}
