Index: /FCKeditor/branches/features/floating_dialog/editor/_source/internals/fckdomtools.js
===================================================================
--- /FCKeditor/branches/features/floating_dialog/editor/_source/internals/fckdomtools.js	(revision 1233)
+++ /FCKeditor/branches/features/floating_dialog/editor/_source/internals/fckdomtools.js	(revision 1234)
@@ -944,9 +944,14 @@
 	{
 		var currentElement = element ;
-		while ( currentElement != FCKTools.GetElementDocument( currentElement ).documentElement )
-		{
-			if ( this.GetCurrentElementStyle( w, currentElement, 'position' ) != 'static' )
+		while ( currentElement != w.document.documentElement )
+		{
+			var currentWindow = FCKTools.GetElementWindow( currentElement ) ;
+			if ( this.GetCurrentElementStyle( currentWindow, currentElement, 'position' ) != 'static' )
 				return currentElement ;
-			currentElement = currentElement.parentNode ;
+			if ( currentElement == currentElement.ownerDocument.documentElement &&
+				currentWindow != w )
+				currentElement = currentWindow.frameElement ;
+			else
+				currentElement = currentElement.parentNode ;
 		}
 		return null ;
Index: /FCKeditor/branches/features/floating_dialog/editor/fckdebug.html
===================================================================
--- /FCKeditor/branches/features/floating_dialog/editor/fckdebug.html	(revision 1233)
+++ /FCKeditor/branches/features/floating_dialog/editor/fckdebug.html	(revision 1234)
@@ -31,4 +31,5 @@
 var oWindow ;
 var oDiv ;
+var sOriginalDomain = document.domain ;
 
 // Automatically detect the correct document.domain (#123).
@@ -59,4 +60,5 @@
 	}
 })();
+var bDomainChanged = ( sOriginalDomain != document.domain ) ;
 
 if ( !window.FCKMessages )
@@ -65,14 +67,25 @@
 window.onload = function()
 {
-	var sUrl = 'javascript: void( function(){' +
-		'document.open() ;' +
-		'document.domain = "' + document.domain + '" ;' +
-		'document.write( "<div id=\\"divMsg\\"><\/div>" ) ;' +
-		'document.close() ;' +
-		'}() ) ;';
 	oFrame = document.getElementById('xOutput') ;
-	oFrame.src = sUrl ;
-	oWindow = oFrame.contentWindow ;
-	oDiv	= oWindow.document.getElementById('divMsg') ;
+	if ( bDomainChanged )
+	{
+		oFrame.src = sUrl ;
+		var sUrl = 'javascript: void( function(){' +
+			'document.open() ;' +
+			'document.domain = "' + document.domain + '" ;' +
+			'document.write( "<div id=\\"divMsg\\"><\/div>" ) ;' +
+			'document.close() ;' +
+			'}() ) ;';
+		oWindow = oFrame.contentWindow ;
+		oDiv	= oWindow.document.getElementById('divMsg') ;
+	}
+	else
+	{
+		oWindow = oFrame.contentWindow ;
+		oWindow.document.open() ;
+		oWindow.document.write( '<div id="divMsg"><\/div>' ) ;
+		oWindow.document.close() ;
+		oDiv	= oWindow.document.getElementById('divMsg') ;
+	}
 }
 
Index: /FCKeditor/branches/features/floating_dialog/editor/fckdialog.html
===================================================================
--- /FCKeditor/branches/features/floating_dialog/editor/fckdialog.html	(revision 1233)
+++ /FCKeditor/branches/features/floating_dialog/editor/fckdialog.html	(revision 1234)
@@ -33,5 +33,4 @@
 var args		= window.dialogArguments = dialogFrame._DialogArguments ;
 var editor		= args.Editor ;
-var eventId		= Math.random() ;
 
 var FCK				= editor.FCK ;
@@ -500,5 +499,4 @@
 function Window_OnClose()
 {
-	DnD.CleanUpHandlers() ;
 	editor.FCKFocusManager.Unlock() ;
 }
@@ -530,4 +528,13 @@
 	}
 
+	var cleanUpHandlers = function()
+	{
+		for ( var i = 0 ; i < registeredWindows.length ; i++ )
+		{
+			FCKTools.RemoveEventListener( registeredWindows[i].document, 'mousemove', dragMouseMoveHandler ) ;
+			FCKTools.RemoveEventListener( registeredWindows[i].document, 'mouseup', dragMouseUpHandler ) ;
+		}
+	}
+
 	var dragMouseMoveHandler = function( evt )
 	{
@@ -548,4 +555,5 @@
 
 		var currentCoords = getMouseCoordinates( evt );
+		var location = String( ( evt.srcElement || evt.target ).ownerDocument.location ).split( '/' ).pop() ;
 		var dx = currentCoords.x - lastCoords.x;
 		var dy = currentCoords.y - lastCoords.y;
@@ -572,8 +580,8 @@
 		if ( !evt )
 			evt = FCKTools.GetElementDocument( this ).parentWindow.event ;
+		cleanUpHandlers() ;
 		lastCoords = null ;
 	}
 
-	
 	return {
 
@@ -595,4 +603,10 @@
 			lastCoords = getMouseCoordinates( evt ) ;
 
+			for ( var i = 0 ; i < registeredWindows.length ; i++ )
+			{
+				FCKTools.AddEventListener( registeredWindows[i].document, 'mousemove', dragMouseMoveHandler ) ;
+				FCKTools.AddEventListener( registeredWindows[i].document, 'mouseup', dragMouseUpHandler ) ;
+			}
+
 			if ( evt.preventDefault )
 				evt.preventDefault() ;
@@ -603,25 +617,5 @@
 		RegisterHandlers : function( w )
 		{
-			if ( w['_FCKDialogHandlersRegistered_' + eventId] )
-				return ;
-
-			var documentElement = w.document.documentElement ;
-
-			FCKTools.AddEventListener( documentElement, 'mousemove', dragMouseMoveHandler ) ;
-			FCKTools.AddEventListener( documentElement, 'mouseup', dragMouseUpHandler ) ;
-			w['_FCKDialogHandlersRegistered_' + eventId] = true ;
 			registeredWindows.push( w ) ;
-		},
-
-		CleanUpHandlers : function()
-		{
-			while ( registeredWindows.length > 0 )
-			{
-				var item = registeredWindows.shift() ;
-				var documentElement = item.document.documentElement ;
-				FCKTools.RemoveEventListener( documentElement, 'mousemove', dragMouseMoveHandler ) ;
-				FCKTools.RemoveEventListener( documentElement, 'mouseup', dragMouseUpHandler ) ;
-				item['_FCKDialogHandlersRegistered_' + eventId] = undefined;
-			}
 		}
 	}
