var text_no_selected = "Необходимо выделить текст цитаты"; 

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);

function mozillaWr(textarea, open, close)
        {
      var selLength = textarea.textLength;
     var selStart = textarea.selectionStart;
    var selEnd = textarea.selectionEnd;
     if (selEnd == 1 || selEnd == 2)
        selEnd = selLength;

    var s1 = (textarea.value).substring(0,selStart);
    var s2 = (textarea.value).substring(selStart, selEnd)
     var s3 = (textarea.value).substring(selEnd, selLength);
    textarea.value = s1 + open + s2 + close + s3;

    textarea.selectionEnd = 0;
    textarea.selectionStart = selEnd + open.length + close.length;
    return;
        }

function insert_into_position_cursor(text) 
        {
       var textarea = document.post.message;
    if (textarea.createTextRange && textarea.caretPos) 
       {
          var caretPos = textarea.caretPos;
       caretPos.text = caretPos.text.charAt(caretPos.text.length - 1) == ' ' ? caretPos.text + text + ' ' : caretPos.text + text;
       }
    else {
          if (is_nav && document.getElementById) 
             {
             mozillaWr(textarea, '', text);
             }
          else { textarea.value  += text; }
         }
    textarea.focus();
        }

function copySelection()
        {
    if      (window.getSelection)   { selection = window.getSelection().toString();      }
    else if (document.getSelection) { selection = document.getSelection();               }
    else if (document.selection)      { selection = document.selection.createRange().text; }
        }

function pasteSelection()
       {
   if (selection)
          { 
      insert_into_position_cursor('[quote]' + selection + '[/quote]\n'); 
      selection = '';
      document.post.message.focus(); 
      return; 
         }
   else { alert(text_no_selected); return; } 
       }
// функцию можно также использовать потом как облачение теги code, можно в b ....
//На самом деле как вы уже поняли этим не ограничивается создаем сколько нам нужно функций и юзаем их
function codeSelection(text) 
        {
     text = '[code] ' + text + ' [/code]';
    insert_into_position_cursor(text);
        }

function storeCaret(textEl) 
        {
    if (textEl.createTextRange) textEl.caretPos = document.selection.createRange().duplicate();
        }