vanoha,
есть такая штука в js - selection. Получить пользовательское выделение(если браузер не IE) можно хоть сейчас, выделив что угодно на сайте и в консоли - window.getSelection().toString()
Вообще можно кросс-браузерно и об этом вот
тут
ну а получив выделение, очень легко его заменять на нужный нам текст.
К примеру получив выделенный текст на входе - дать, к примеру, тот же выделенный текст на выходе, только обернутый в любой другой тег.
Насчет выделения вроде разжевал, да в рот положил - глотайте теперь.
UPD
Быстрое, но точное гугление и проблема с курсором
решается
Там с примером. Не стесняйтесь задавать вопросы если что-то по коду не ясно.