+ sHtml = FCKTools.ProcessLineBreaks( oEditor, FCKConfig, sHtml ) ;\r
+\r
+ // FCK.InsertHtml() does not work for us, since document fragments cannot contain node fragments. :(\r
+ // Use the marker method instead. It's primitive, but it works.\r
+ var range = new oEditor.FCKDomRange( oEditor.FCK.EditorWindow ) ;\r
+ var oDoc = oEditor.FCK.EditorDocument ;\r
+ dialog.Selection.EnsureSelection() ;\r
+ range.MoveToSelection() ;\r
+ range.DeleteContents() ;\r
+ var marker = [] ;\r
+ for ( var i = 0 ; i < 5 ; i++ )\r
+ marker.push( parseInt(Math.random() * 100000, 10 ) ) ;\r
+ marker = marker.join( "" ) ;\r
+ range.InsertNode ( oDoc.createTextNode( marker ) ) ;\r
+ var bookmark = range.CreateBookmark() ;\r
+\r
+ // Now we've got a marker indicating the paste position in the editor document.\r
+ // Find its position in the HTML code.\r
+ var htmlString = oDoc.body.innerHTML ;\r
+ var index = htmlString.indexOf( marker ) ;\r
+\r
+ // Split it the HTML code up, add the code we generated, and put them back together.\r
+ var htmlList = [] ;\r
+ htmlList.push( htmlString.substr( 0, index ) ) ;\r
+ htmlList.push( sHtml ) ;\r
+ htmlList.push( htmlString.substr( index + marker.length ) ) ;\r
+ htmlString = htmlList.join( "" ) ;\r
+\r
+ if ( oEditor.FCKBrowserInfo.IsIE )\r
+ oEditor.FCK.SetInnerHtml( htmlString ) ;\r
+ else\r
+ oDoc.body.innerHTML = htmlString ;\r
+\r
+ range.MoveToBookmark( bookmark ) ;\r
+ range.Collapse( false ) ;\r
+ range.Select() ;\r
+ range.Release() ;\r
+ return true ;\r