Working code:
function replaceSelectedText() {
var sel, range, txtstuff;
if (window.getSelection) {
txtstuff = '<b>'+window.getSelection()+'</b>'
sel = window.getSelection();
alert(txtstuff, sel);
if (sel.rangeCount) {
range = sel.getRangeAt(0);
range.deleteContents();
var b = document.createElement('b');
b.innerHTML = txtstuff;
range.insertNode(b);
}
} else if (document.selection && document.selection.createRange) {
range = document.selection.createRange();
range.text = txtstuff;
}
}