Hallo,
Mit SelfHTML kommst Du da nicht weiter. Die von Dir gesuchte Funktion findest Du in http://de.wikipedia.org/style/wikibits.js unter dem Namen insertTags().
Interessanterweise scheint sich zur Abwechslung mal der IE an die W3C-Empfehlungen (http://www.w3.org/TR/DOM-Level-2-Traversal-Range/ranges.html) zu halten, während Mozilla irgendetwas eigenes benutzt.
Dieses document.selection.createRange() und das caretPos von MSIE ist irgendetwas, aber nichts, was ich in DOM 2 Range wiederfinden kann. Dort existiert zwar eine Methode mit diesem Namen, aber mit offensichtlich anderem Sinn (zumindest in diesem Kontext - es ist schon länger her, als ich mich in das createRange-Konzept im MSDN eingelesen hatte, Parallelen zu DOM 2 Range bestehen durchaus, wenn ich mich recht erinnere).
Mozilla implementiert zwar DOM 2 Range (http://www.mozilla.org/docs/dom/domref/dom_range_ref2.html), ich fürchte aber, das hilft hier kein bisschen weiter, um die Cursorposition in einer textarea herauszufinden. Hier wird mit selectionStart und selectionEnd gearbeitet, welche wie du sagst eigene Erfindungen sind.
DOM 2 Range habe ich persönlich sowieso noch nicht durchschaut, ich habe auch noch nirgendwo eine konkrete Anwendung gesehen. Anständige Dokumentatioen existieren natürlich nicht, aber das gilt eine ganze Handvoll DOM-Recommendations.
Mathias