(function($)
{$.fn.getSelection=function(){var $$=this;var textarea=this[0];$$.focus();var ret={}
ret.start=-1;if(document.selection)
{ret.text=document.selection.createRange().text;if($.browser.msie)
{var range=document.selection.createRange()
var rangeCopy=range.duplicate();rangeCopy.moveToElementText($$);while(rangeCopy.inRange(range)){rangeCopy.moveStart('character');ret.start++;}}else{ret.start=textarea.selectionStart;}}else{ret.start=textarea.selectionStart;ret.text=$$.val().substring(ret.start,textarea.selectionEnd);}
ret.length=ret.text.length;ret.end=ret.start+ret.length;return ret;}
$.fn.setSelection=function(start,len)
{var $$=this;var textarea=this[0];var scroll_pos=textarea.scrollTop;if(textarea.createTextRange){if($.browser.opera&&$.browser.version>=9.5&&len==0){return false;}
range=textarea.createTextRange();range.collapse(true);range.moveStart('character',start);range.moveEnd('character',len);range.select();}else if(textarea.setSelectionRange){textarea.setSelectionRange(start,start+len);}
textarea.scrollTop=scroll_pos;textarea.focus();return this;}
$.fn.replaceSelection=function(input)
{var $$=this;var textarea=this[0];var selection=this.getSelection();if(input.call)
{input=input(selection.text);}
$$.focus();if(document.selection){var newSelection=document.selection.createRange();newSelection.text=input;}else{var prev=$$.val();$$.val(prev.substring(0,selection.start)+
input+
prev.substring(selection.start+selection.length,prev.length));}
$$.setSelection(selection.start+input.length,0);return this;}})(jQuery);