diff --git a/templates/skin/new/js/panel.js b/templates/skin/new/js/panel.js index 769dd262..f9745bd7 100644 --- a/templates/skin/new/js/panel.js +++ b/templates/skin/new/js/panel.js @@ -6,8 +6,14 @@ var lsPanelClass = new Class({ putText: function(obj,text) { obj=$(obj); var scrollLeft=obj.scrollLeft; - var scrollTop=obj.scrollTop; - obj.insertAtCursor(text); + var scrollTop=obj.scrollTop; + if (Browser.Engine.trident && document.selection) { + obj.focus(); + sel=document.selection.createRange(); + sel.text=text; + } else { + obj.insertAtCursor(text); + } obj.scrollLeft=scrollLeft; obj.scrollTop=scrollTop; }, @@ -19,12 +25,18 @@ var lsPanelClass = new Class({ putTextAround: function(obj,textStart,textEnd) { obj=$(obj); var scrollLeft=obj.scrollLeft; - var scrollTop=obj.scrollTop; - obj.insertAroundCursor({ - before: textStart, - defaultMiddle: '', - after: textEnd - }); + var scrollTop=obj.scrollTop; + if (Browser.Engine.trident && document.selection) { + obj.focus(); + sel=document.selection.createRange(); + sel.text = textStart+sel.text+textEnd; + } else { + obj.insertAroundCursor({ + before: textStart, + defaultMiddle: '', + after: textEnd + }); + } obj.scrollLeft=scrollLeft; obj.scrollTop=scrollTop; }, @@ -46,23 +58,22 @@ var lsPanelClass = new Class({ putQuote: function(obj) { obj=$(obj); - if (selText=window.getSelected()) { + if (selText=this.getSelectedText()) { this.putText(obj,'
'+selText+'
'); } else { this.putTagAround(obj,'blockquote'); } + }, + + getSelectedText: function(){ + if (Browser.Engine.trident) return document.selection.createRange().text; + //if (window.khtml) return window.getSelection(); + return document.getSelection(); } }); var lsPanel; -window.addEvent('domready', function() { - $extend(window,{ - getSelected: function(){ - if (this.ie) return document.selection.createRange().text; - if (this.khtml) return this.getSelection(); - return document.getSelection(); - } - }); +window.addEvent('domready', function() { lsPanel = new lsPanelClass(); }); \ No newline at end of file