¿Poner etiquetas alrededor del texto resaltado por el usuario?

Necesito obtener el área seleccionada por el usuario de un área de texto y luego insertar<a> etiquetas alrededor de él.

Lo uso para obtener el área seleccionada por el usuario:

var textComponent = document.getElementById('article');
var selectedText;

if (document.selection != undefined)
{
    textComponent.focus();
    var sel = document.selection.createRange();
    selectedText = sel.text;
}

// Mozilla version
else if (textComponent.selectionStart != undefined)
{
    var startPos = textComponent.selectionStart;
    var endPos = textComponent.selectionEnd;
    selectedText = textComponent.value.substring(startPos, endPos)
}

Ahora, sé que puedo hacer una búsqueda de cadena para el texto seleccionado por el usuario e insertar etiquetas alrededor, pero qué sucede si el texto seleccionado por el usuario aparece dos veces en el texto, por ejemplo.

Hola a ti, adiós a ti.

Si el usuario resalta el segundo "usted" para el enlace que desea, seguramente una cadena de reemplazo colocará etiquetas alrededor de cada instancia de "usted".

¿Cuál es la mejor manera de hacer esto?

Respuestas a la pregunta(2)

Su respuesta a la pregunta