// By El Bekko function add_smiley(smileytext) { var textarea; elems = document.getElementsByTagName('textarea'); var i; for(i = 0; i != elems.length; i++) if(elems[i].name == 'req_message' || elems[i].name == 'signature') textarea = elems[i]; var caretpos = caret(textarea); var areatext = textarea.value; var newtext = rtrim(areatext.substr(0, caretpos)) + ' ' + smileytext + ' ' + ltrim(areatext.substr(caretpos)); textarea.value = newtext; } /* Function courtesy of http://www.csie.ntu.edu.tw/~b88039/html/jslib/caret.html */ function caret(node) { node.focus(); /* without node.focus() IE will return -1 when focus is not on node */ if(node.selectionStart) return node.selectionStart; else if(!document.selection) return 0; var c = "\001"; var sel = document.selection.createRange(); var dul = sel.duplicate(); var len = 0; dul.moveToElementText(node); sel.text = c; len = (dul.text.indexOf(c)); sel.moveStart('character',-1); sel.text = ""; return len; } /* Original function courtesy of http://lists.evolt.org/archive/Week-of-Mon-20030331/138469.html */ // Trim spaces on the left function ltrim(str) { var s = str.replace(/^(\s)*/, ''); return s; } // Trim spaces on the right function rtrim(str) { var s = str.replace(/(\s)*$/, ''); return s; }