Выкладываю скрипт для вставки тегов и смайлов. Много времени потратил на поиск информации, много времени потратил на совершенствование скрипта.
РАБОТАЕТ во всех браузерах. Хочу облегчить вам труд!

PHP:

Код:
<script language="JavaScript"> 
function tag_it(txtstart,txtend) { 
    document.editor_form.descr.focus(); 
    if (document.selection) {     
            var rng = document.selection.createRange(); 
            if (rng.text) { 
                document.selection.createRange().text = txtstart + rng.text + txtend; 
                } else { 
                document.editor_form.descr.value += txtstart  + txtend; 
                } 
            document.editor_form.descr.focus(); 
            } 
    else if (document.editor_form.descr.selectionStart || document.editor_form.descr.selectionStart == '0') { 
    var selStart = document.editor_form.descr.selectionStart; 
    var selEnd = document.editor_form.descr.selectionEnd;  
    var s = document.editor_form.descr.value;      
    s = s.substring(0, selStart) + txtstart + s.substring(selStart, selEnd) + txtend + s.substring(selEnd, s.length); 
        document.editor_form.descr.value = s;  
    if (selEnd != selStart) { 
        document.editor_form.descr.selectionStart = selStart; 
        document.editor_form.descr.selectionEnd = selEnd + txtstart.length + txtend.length; 
        } else { 
        document.editor_form.descr.selectionStart = selStart + txtstart.length; 
        document.editor_form.descr.selectionEnd = document.editor_form.descr.selectionStart; 
        } 
    } else {    
    document.editor_form.descr.value += txtstart + txtend;    
    } 
    } 
</script> 

editor_form - имя формы
descr - имя textarea

использование:

PHP:

Код:
<input type="button" value="Ж" style="font-weight: bold;" onclick="tag_it('[b]','[/b]');"> 
<input type="button" value="К" style="font-style: italic;" onclick="tag_it('[i]','[/i]');"> 
<input type="button" value="_" onclick="tag_it('[u]','[/u]');"> 
.............................. 
<img src=".....takoy-to-smile...." onclick="tag_it('',':)');"> 
[

Дальше думаю ясно как продолжать  :'(