Index: /FCKeditor/trunk/editor/_source/commandclasses/fckblockquotecommand.js
===================================================================
--- /FCKeditor/trunk/editor/_source/commandclasses/fckblockquotecommand.js	(revision 1140)
+++ /FCKeditor/trunk/editor/_source/commandclasses/fckblockquotecommand.js	(revision 1141)
@@ -33,39 +33,45 @@
 
 		var state = this.GetState() ;
+
 		var range = new FCKDomRange( FCK.EditorWindow ) ;
 		range.MoveToSelection() ;
+
 		var bookmark = range.CreateBookmark() ;
 
-		// Kludge for #1592: if the bookmark nodes are in the beginning of blockquote, then move them
-		// to the nearest block element in the blockquote.
+		// Kludge for #1592: if the bookmark nodes are in the beginning of
+		// blockquote, then move them to the nearest block element in the
+		// blockquote.
 		if ( FCKBrowserInfo.IsIE )
 		{
-			var bStart = range.Window.document.getElementById( bookmark.StartId ) ;
-			var bEnd = range.Window.document.getElementById( bookmark.EndId ) ;
-			var nearestBlock = null ;
-
-			if ( bStart && bStart.parentNode.nodeName.IEquals( 'blockquote' ) 
-					&& bStart == bStart.parentNode.firstChild ) 
-			{
-				var cursor = bStart ;
+			var bStart	= range.GetBookmarkNode( bookmark, true ) ;
+			var bEnd	= range.GetBookmarkNode( bookmark, false ) ;
+			
+			var cursor ;
+			
+			if ( bStart 
+					&& bStart.parentNode.nodeName.IEquals( 'blockquote' )
+					&& !bStart.previousSibling )
+			{
+				cursor = bStart ;
 				while ( ( cursor = cursor.nextSibling ) )
 				{
-					if ( FCKListsLib.BlockElements[cursor.nodeName.toLowerCase()] )
-						cursor.insertBefore( bStart.parentNode.removeChild( bStart ), cursor.firstChild ) ;
-				}
-			}
-
-			if ( bEnd && bEnd.parentNode.nodeName.IEquals( 'blockquote' ) 
-					&& bEnd == bEnd.parentNode.firstChild ) 
-			{
-				var cursor = bEnd ;
+					if ( FCKListsLib.BlockElements[ cursor.nodeName.toLowerCase() ] )
+						FCKDomTools.MoveNode( bStart, cursor, true ) ;
+				}
+			}
+
+			if ( bEnd 
+					&& bEnd.parentNode.nodeName.IEquals( 'blockquote' )
+					&& !bEnd.previousSibling )
+			{
+				cursor = bEnd ;
 				while ( ( cursor = cursor.nextSibling ) )
 				{
-					if ( FCKListsLib.BlockElements[cursor.nodeName.toLowerCase()] )
-					{
-						var insertPoint = cursor.firstChild ;
+					if ( FCKListsLib.BlockElements[ cursor.nodeName.toLowerCase() ] )
+					{
 						if ( cursor.firstChild == bStart )
-							insertPoint = bStart.nextSibling ;
-						cursor.insertBefore( bEnd.parentNode.removeChild( bEnd ), insertPoint ) ;
+							FCKDomTools.InsertAfterNode( bStart, bEnd ) ;
+						else
+							FCKDomTools.MoveNode( bEnd, cursor, true ) ;
 					}
 				}
