Index: /FCKeditor/branches/features/floating_dialog/editor/_source/internals/fckdialog.js
===================================================================
--- /FCKeditor/branches/features/floating_dialog/editor/_source/internals/fckdialog.js	(revision 1168)
+++ /FCKeditor/branches/features/floating_dialog/editor/_source/internals/fckdialog.js	(revision 1169)
@@ -183,6 +183,7 @@
 {
 	var doc = container.ownerDocument ;
+	var containerCoords = FCKTools.GetDocumentPosition( container.ownerWindow, container );
 	var shadowBlock = doc.createElement( 'div' ) ;
-	shadowBlock.id = parseInt( Math.random() * 0x10000000 ) ;
+	shadowBlock.id = Math.random();
 	container.shadowId = shadowBlock.id ;
 	FCKDomTools.SetElementStyles( shadowBlock,
@@ -191,7 +192,7 @@
 			'height' : container.offsetHeight + 'px',
 			'position' : 'absolute',
-			'top' : '0px',
-			'left' : '0px',
-			'zIndex' : '0'
+			'left' : containerCoords.x + 'px',
+			'top' : containerCoords.y + 'px',
+			'zIndex' : container.style.zIndex - 50
 		} ) ;
 
@@ -237,6 +238,5 @@
 	}
 
-	FCKDomTools.SetOpacity( shadowBlock, 0.65 ) ;
-	container.appendChild( shadowBlock ) ;
+	doc.body.appendChild( shadowBlock ) ;
 }
 
@@ -247,4 +247,5 @@
 	delete ownerWindow.FCKDialogArguments[dialogId] ;
 	container.parentNode.removeChild( container ) ;
+	this.RemoveShadow( container );
 	this.BaseZIndex -= 100 ;
 
@@ -265,6 +266,9 @@
 		if ( doc.getElementById( container.coverBlockId ) )
 			return ;
-		var coverBlock = doc.createElement( FCKBrowserInfo.IsIE ? 'div' : 'img' ) ;
-		coverBlock.id = parseInt( Math.random() * 0x10000000, 10 ) ;
+		var coverBlock = doc.createElement( 'iframe' ) ;
+		var containerCoords = FCKTools.GetDocumentPosition( container.ownerWindow, container ) ;
+		coverBlock.src = FCKConfig.SkinPath + 'fck_dialog_blocker.html';
+		coverBlock.frameBorder = 0;
+		coverBlock.id = Math.random() ;
 		container.coverBlockId = coverBlock.id ;
 		FCKDomTools.SetElementStyles( coverBlock,
@@ -272,31 +276,13 @@
 				'width' : ( container.offsetWidth - 20 ) + 'px',
 				'height' : ( container.offsetHeight - 20 ) + 'px',
-				'left' : '6px',
-				'top' : '6px',
+				'left' : ( containerCoords.x + 6 ) + 'px',
+				'top' : ( containerCoords.y + 6 ) + 'px',
 				'position' : 'absolute',
-				'zIndex' : 1000
+				'zIndex' : parseInt( container.style.zIndex ) + 40
 			} ) ;
-		if ( !FCKBrowserInfo.IsIE )
-			coverBlock.src = FCKConfig.SkinPath + 'images/WindowCover.png' ;
-		container.appendChild( coverBlock ) ;
-		if ( FCKBrowserInfo.IsIE )
-		{
-			var spacer = doc.createElement( 'img' ) ;
-			spacer.src = FCKConfig.BasePath + 'images/spacer.gif' ;
-			FCKDomTools.SetElementStyles( spacer,
-				{
-					'width' : coverBlock.offsetWidth + 'px',
-					'height' : coverBlock.offsetHeight + 'px',
-					'position' : 'absolute',
-					'left' : '0px',
-					'top' : '0px'
-				} ) ;
-			coverBlock.appendChild( spacer ) ;
-
-			var shadowBlock = doc.getElementById( container.shadowId );
-			if ( shadowBlock )
-				shadowBlock.style.display = 'none' ;
-		}
+		doc.body.appendChild( coverBlock ) ;
 		FCKDomTools.SetOpacity( container, 0.5 ) ;
+		FCKDomTools.SetOpacity( container.ownerDocument.getElementById( container.shadowId ), 0.5 ) ;
+		FCKDomTools.SetOpacity( coverBlock, 0.01 ) ;
 	}
 	else
@@ -306,10 +292,5 @@
 			coverBlock.parentNode.removeChild( coverBlock ) ;
 		FCKDomTools.SetOpacity( container, 1.0 ) ;
-		if ( FCKBrowserInfo.IsIE )
-		{
-			var shadowBlock = doc.getElementById( container.shadowId ) ;
-			if ( shadowBlock )
-				shadowBlock.style.display = '' ;
-		}
+		FCKDomTools.SetOpacity( container.ownerDocument.getElementById( container.shadowId ), 1 ) ;
 	}
 }
@@ -348,4 +329,9 @@
 		_dragDialog = view.dialogArguments.Dialog ;
 		_lastCoords = FCKDialog._GetMouseCoordinates( evt ) ;
+
+		if ( evt.preventDefault )
+			evt.preventDefault() ;
+		else
+			evt.returnValue = false ;
 	}
 
@@ -369,4 +355,18 @@
 				'top' : y + 'px'
 			} ) ;
+		if ( _dragDialog.ownerDocument.getElementById( _dragDialog.shadowId ) )
+		{
+			var shadowBlock = _dragDialog.ownerDocument.getElementById( _dragDialog.shadowId ) ;
+			FCKDomTools.SetElementStyles( shadowBlock,
+				{
+					'left' : x + 'px',
+					'top' : y + 'px'
+				} );
+		}
+
+		if ( evt.preventDefault )
+			evt.preventDefault() ;
+		else
+			evt.returnValue = false ;
 	}
 
Index: /FCKeditor/branches/features/floating_dialog/editor/skins/default/fck_dialog_blocker.html
===================================================================
--- /FCKeditor/branches/features/floating_dialog/editor/skins/default/fck_dialog_blocker.html	(revision 1169)
+++ /FCKeditor/branches/features/floating_dialog/editor/skins/default/fck_dialog_blocker.html	(revision 1169)
@@ -0,0 +1,7 @@
+<html>
+	<head>
+		<title></title>
+	</head>
+	<body>
+	</body>
+</html>
