var imageTag = false;
var theSelection = false;

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);

bbcode = new Array();
bbtags = new Array('[b]','[/b]','[i]','[/i]','[u]','[/u]','[s]','[/s]','[img]','[/img]','[url]','[/url]');
imageTag = false;

function getarraysize(thearray)
 {
  for (i = 0; i < thearray.length; i++)
   {
    if ((thearray[i] == "undefined") || (thearray[i] == "") || (thearray[i] == null))
     {
      return i;
     }
   }
  return thearray.length;
 }

function arraypush(thearray,value)
 {
  thearray[ getarraysize(thearray) ] = value;
 }

function arraypop(thearray)
 {
  thearraysize = getarraysize(thearray);
  retval = thearray[thearraysize - 1];
  delete thearray[thearraysize - 1];
  return retval;
 }


function checkForm()
 {
  palette(-1);
  return true;
 }

function palette(bbnumber)
 {
  var txtarea = document.getElementById("txt_area");

  txtarea.focus();
  donotinsert = false;
  theSelection = false;
  bblast = 0;

  if (bbnumber == -1)
   {
    while (bbcode[0])
     {
      butnumber = arraypop(bbcode) - 1;
      txtarea.value += bbtags[butnumber + 1];
     }
    imageTag = false;
    txtarea.focus();
    return;
   }

  if ((clientVer >= 4) && is_ie && is_win)
   {
    theSelection = document.selection.createRange().text;
    if (theSelection)
     {
      document.selection.createRange().text = bbtags[bbnumber] + theSelection + bbtags[bbnumber+1];
      txtarea.focus();
      theSelection = '';
      return;
     }
   }
  else if (txtarea.selectionEnd && (txtarea.selectionEnd - txtarea.selectionStart > 0))
   {
    mozWrap(txtarea, bbtags[bbnumber], bbtags[bbnumber+1]);
    return;
   }

  for (i = 0; i < bbcode.length; i++)
   {
    if (bbcode[i] == bbnumber+1)
     {
      bblast = i;
      donotinsert = true;
     }
   }

  if (donotinsert)
   {
    while (bbcode[bblast])
     {
      butnumber = arraypop(bbcode) - 1;
      txtarea.value += bbtags[butnumber + 1];
      imageTag = false;
     }
   txtarea.focus();
   return;
  }else{
   if (imageTag && (bbnumber != 8))
    {
     txtarea.value += bbtags[9];
     lastValue = arraypop(bbcode) - 1;
     imageTag = false;
    }

    txtarea.value += bbtags[bbnumber];
    if ((bbnumber == 8) && (imageTag == false)) imageTag = 1;
    arraypush(bbcode,bbnumber+1);
    txtarea.focus();
    return;
  }
  storeCaret(txtarea);
 }

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 storeCaret(textEl)
 {
  if (textEl.createTextRange) textEl.caretPos = document.selection.createRange().duplicate();
 }

