Index: /FCKeditor/trunk/editor/_source/commandclasses/fckfitwindow.js
===================================================================
--- /FCKeditor/trunk/editor/_source/commandclasses/fckfitwindow.js	(revision 567)
+++ /FCKeditor/trunk/editor/_source/commandclasses/fckfitwindow.js	(revision 568)
@@ -57,21 +57,6 @@
 			if ( eParent.nodeType == 1 )
 			{
-				var hijackNode = null ;
-				var hijackSibling = null ;
-				if ( eParent.tagName.toLowerCase() == 'form' && eParent.elements.namedItem( 'style' ) )
-				{
-					hijackNode = eParent.elements.namedItem( 'style' ) ;
-					hijackSibling = hijackNode.nextSibling ;
-					eParent.removeChild( hijackNode ) ;
-				}
 				eParent._fckSavedStyles = FCKTools.SaveStyles( eParent ) ;
 				eParent.style.zIndex = FCKConfig.FloatingPanelsZIndex - 1 ;
-				if ( hijackNode )
-				{
-					if ( hijackSibling )
-						eParent.insertBefore( hijackNode, hijackSibling ) ;
-					else
-						eParent.appendChild( hijackNode ) ;
-				}
 			}
 		}
Index: /FCKeditor/trunk/editor/_source/internals/fcktools.js
===================================================================
--- /FCKeditor/trunk/editor/_source/internals/fcktools.js	(revision 567)
+++ /FCKeditor/trunk/editor/_source/internals/fcktools.js	(revision 568)
@@ -474,2 +474,39 @@
 	return pos ;
 }
+
+FCKTools.ProtectFormStyles = function( formNode )
+{
+	if ( !formNode || formNode.nodeType != 1 || formNode.tagName.toLowerCase() != 'form' )
+		return [] ;
+	var hijackRecord = [] ;
+	var hijackNames = [ 'style', 'className' ] ;
+	for ( var i = 0 ; i < hijackNames.length ; i++ )
+	{
+		var name = hijackNames[i] ;
+		if ( formNode.elements.namedItem( name ) )
+		{
+			var hijackNode = formNode.elements.namedItem( name ) ;
+			hijackRecord.push( [ hijackNode, hijackNode.nextSibling ] ) ;
+			formNode.removeChild( hijackNode ) ;
+		}
+	}
+	return hijackRecord ;
+}
+
+FCKTools.RestoreFormStyles = function( formNode, hijackRecord )
+{
+	if ( !formNode || formNode.nodeType != 1 || formNode.tagName.toLowerCase() != 'form' )
+		return ;
+	if ( hijackRecord.length > 0 )
+	{
+		for ( var i = hijackRecord.length - 1 ; i >= 0 ; i-- )
+		{
+			var node = hijackRecord[i][0] ;
+			var sibling = hijackRecord[i][1] ;
+			if ( sibling )
+				formNode.insertBefore( node, sibling ) ;
+			else
+				formNode.appendChild( node ) ;
+		}
+	}
+}
Index: /FCKeditor/trunk/editor/_source/internals/fcktools_gecko.js
===================================================================
--- /FCKeditor/trunk/editor/_source/internals/fcktools_gecko.js	(revision 567)
+++ /FCKeditor/trunk/editor/_source/internals/fcktools_gecko.js	(revision 568)
@@ -153,4 +153,6 @@
 FCKTools.SaveStyles = function( element )
 {
+	var data = FCKTools.ProtectFormStyles( element ) ;
+
 	var oSavedStyles = new Object() ;
 
@@ -169,4 +171,5 @@
 	}
 
+	FCKTools.RestoreFormStyles( element, data ) ;
 	return oSavedStyles ;
 }
@@ -174,4 +177,5 @@
 FCKTools.RestoreStyles = function( element, savedStyles )
 {
+	var data = FCKTools.ProtectFormStyles( element ) ;
 	element.className = savedStyles.Class || '' ;
 
@@ -180,4 +184,5 @@
 	else
 		element.removeAttribute( 'style', 0 ) ;
+	FCKTools.RestoreFormStyles( element, data ) ;
 }
 
Index: /FCKeditor/trunk/editor/_source/internals/fcktools_ie.js
===================================================================
--- /FCKeditor/trunk/editor/_source/internals/fcktools_ie.js	(revision 567)
+++ /FCKeditor/trunk/editor/_source/internals/fcktools_ie.js	(revision 568)
@@ -182,4 +182,6 @@
 FCKTools.SaveStyles = function( element )
 {
+	var data = FCKTools.ProtectFormStyles( element ) ;
+
 	var oSavedStyles = new Object() ;
 
@@ -198,4 +200,5 @@
 	}
 
+	FCKTools.RestoreFormStyles( element, data ) ;
 	return oSavedStyles ;
 }
@@ -203,6 +206,8 @@
 FCKTools.RestoreStyles = function( element, savedStyles )
 {
+	var data = FCKTools.ProtectFormStyles( element ) ;
 	element.className		= savedStyles.Class || '' ;
 	element.style.cssText	= savedStyles.Inline || '' ;
+	FCKTools.RestoreFormStyles( element, data ) ;
 }
 
Index: /FCKeditor/trunk/editor/_source/internals/fckxhtml_ie.js
===================================================================
--- /FCKeditor/trunk/editor/_source/internals/fckxhtml_ie.js	(revision 567)
+++ /FCKeditor/trunk/editor/_source/internals/fckxhtml_ie.js	(revision 568)
@@ -47,5 +47,9 @@
 			// attribute. It returns "null" for the nodeValue.
 			else if ( sAttName == 'style' )
+			{
+				var data = FCKTools.ProtectFormStyles( htmlNode ) ;
 				sAttValue = htmlNode.style.cssText.replace( FCKRegexLib.StyleProperties, FCKTools.ToLowerCase ) ;
+				FCKTools.RestoreFormStyles( htmlNode, data ) ;
+			}
 			// There are two cases when the oAttribute.nodeValue must be used:
 			//		- for the "class" attribute
Index: /FCKeditor/trunk/fckeditor.js
===================================================================
--- /FCKeditor/trunk/fckeditor.js	(revision 567)
+++ /FCKeditor/trunk/fckeditor.js	(revision 568)
