<script type="text/javascript">
var carret=null,fieldobj=null,ie=(document.selection&&document.selection.createRange);
function storepos(obj){ fieldobj=obj; carret=(ie)?document.selection.createRange():null; }
function insertAtCarret(str){
if(!fieldobj) return null;
if (carret){
carret.text=str; carret.select();
} else if(document.getElementById&&!ie) {
fieldobj.value=fieldobj.value.substring(0,fieldobj.selectionStart)+str+fieldobj.value.substring(fieldobj.selectionEnd);
} else {
fieldobj.value+=str;
}
}
</script>
<form>
<textarea
onclick="storepos(this);"
onkeyup="storepos(this);"
onselect="storepos(this);"></textarea>
</form>
<a href="#" onclick="insertAtCarret(':)'); return false;">Smiley</a>