User:Gerbrant/edit/selection.js
module("Gerbrant.edit.selection", new function()
{
if(document.selection && !is_gecko) // IE
this.replaceTextareaSelection = function(t, f)
{
t.focus();
var r = document.selection.createRange()
var selText = r.text;
if(f) r.text = f(selText);
return selText;
}
else // Others
this.replaceTextareaSelection = function(t, f)
{
var start = t.selectionStart;
if(start == undefined) (function(m)
{
alert(m);
throw new Error(m);
})("Can't access the selection in textareas because your browser neither supports document.selection for this, nor does it support selectionStart and selectionEnd.");
var end = t.selectionEnd;
var text = t.value;
var selText = text.substring(start, end);
if(f)
{
var scrollTop = t.scrollTop;
var newText = f(selText);
t.value = text.substring(0, start) + newText + text.substring(end);
t.scrollTop = scrollTop;
t.selectionEnd = (t.selectionStart = start) + newText.length;
setTimeout(function()
{
t.selectionEnd = (t.selectionStart = start) + newText.length;
}, 0);
}
return selText;
}
this.replaceSelection = function(f)
{
return this.replaceTextareaSelection(document.getElementById("wpTextbox1"), f);
}
});