platedz, тогда вам нужно гуглить ещё и о Range-объектах. Вам не нужно текстовую вёрстку самому менять ни в коем случае) Просто указываете границы (или берёте их из выделения), создаёте Range-объект, а потом оборачиваете его в нужный span (спец. методом surroundContent).
Вот статья:
http://habrahabr.ru/post/55922/
Правда, эти объекты нативно не поддерживаются в ie < 9, но есть решение от гугла, с которой они поддерживаться будут:
http://code.google.com/p/ierange/