Una funzione "presa in prestito" da un noto forum in asp è la seguente:

function insertSmile(smilieface) {
if (document.frmEditorHtml.aerHtmlFormatText.createTe xtRange && document.frmEditorHtml.aerHtmlFormatText.caretPos) {
var caretPos = document.frmEditorHtml.aerHtmlFormatText.caretPos;
caretPos.text = caretPos.text.charAt(caretPos.text.length - 1) == ' ' ? smilieface + ' ' : smilieface;
document.frmEditorHtml.aerHtmlFormatText.focus();
} else {
document.frmEditorHtml.aerHtmlFormatText.value+=sm ilieface;
document.frmEditorHtml.aerHtmlFormatText.focus();
}
}

ovviamente su ogni faccina dovrai mettere:
imamginegif
(METTO GLI SPAZI X EVITARE CHE MI VENGA SOSTITUITO)
La riga document.frmEditorHtml.aerHtmlFormatText ti dice che va messo un attributo name nel tag form (con valore frmEditorHtml) e che il nome del campo textarea dove inserici il messaggio dovrà essere aerHtmlFormatText. Ovviamente sei libero di cambiarli. Come di decidere una serie di caratteri che delimitano le faccine (invece di: ) fai [: )] ) in questo caso metti direttamente la nuova faccina nella funzione insertSmile()