Index: /FCKeditor/trunk/_whatsnew.html
===================================================================
--- /FCKeditor/trunk/_whatsnew.html	(revision 216)
+++ /FCKeditor/trunk/_whatsnew.html	(revision 217)
@@ -117,4 +117,6 @@
 		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/190">#190</a>] Toolbars
 			may be wrongly positioned. Fixed.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/254">#254</a>] The IgnoreEmptyParagraphValue
+			setting is now correctly handled in Firefox.</li>
 	</ul>
 	<h3>
Index: /FCKeditor/trunk/editor/_source/internals/fck.js
===================================================================
--- /FCKeditor/trunk/editor/_source/internals/fck.js	(revision 216)
+++ /FCKeditor/trunk/editor/_source/internals/fck.js	(revision 217)
@@ -89,5 +89,5 @@
 		this.EditingArea = new FCKEditingArea( document.getElementById( 'xEditingArea' ) ) ;
 		this.EditingArea.FFSpellChecker = false ;
-		
+
 		// Final setup of the lists lib.
 		FCKListsLib.Setup() ;
@@ -207,11 +207,19 @@
 
 		if ( FCKConfig.FullPage )
+		{
 			sXHTML = FCKXHtml.GetXHTML( oDoc.getElementsByTagName( 'html' )[0], true, format ) ;
+
+			if ( FCK.DocTypeDeclaration && FCK.DocTypeDeclaration.length > 0 )
+				sXHTML = FCK.DocTypeDeclaration + '\n' + sXHTML ;
+
+			if ( FCK.XmlDeclaration && FCK.XmlDeclaration.length > 0 )
+				sXHTML = FCK.XmlDeclaration + '\n' + sXHTML ;
+		}
 		else
 		{
-			if ( FCKConfig.IgnoreEmptyParagraphValue && oDoc.body.innerHTML == '<P>&nbsp;</P>' )
+			sXHTML = FCKXHtml.GetXHTML( oDoc.body, false, format ) ;
+
+			if ( FCKConfig.IgnoreEmptyParagraphValue && FCKRegexLib.EmptyOutParagraph.test( sXHTML ) )
 				sXHTML = '' ;
-			else
-				sXHTML = FCKXHtml.GetXHTML( oDoc.body, false, format ) ;
 		}
 
@@ -221,10 +229,4 @@
 		if ( FCKBrowserInfo.IsIE )
 			sXHTML = sXHTML.replace( FCKRegexLib.ToReplace, '$1' ) ;
-
-		if ( FCK.DocTypeDeclaration && FCK.DocTypeDeclaration.length > 0 )
-			sXHTML = FCK.DocTypeDeclaration + '\n' + sXHTML ;
-
-		if ( FCK.XmlDeclaration && FCK.XmlDeclaration.length > 0 )
-			sXHTML = FCK.XmlDeclaration + '\n' + sXHTML ;
 
 		return FCKConfig.ProtectedSource.Revert( sXHTML ) ;
@@ -315,8 +317,8 @@
 		{
 			html = FCKConfig.ProtectedSource.Protect( html ) ;
-			
+
 			// Fix for invalid self-closing tags (see #152).
 			html = html.replace( FCKRegexLib.InvalidSelfCloseTags, '$1></$2>' ) ;
-			
+
 			html = FCK.ProtectEvents( html ) ;
 			html = FCK.ProtectUrls( html ) ;
@@ -332,5 +334,5 @@
 				html = html.replace( FCKRegexLib.EmCloser, '<\/i>' ) ;
 			}
-			
+
 			this._ForceResetIsDirty = ( resetIsDirty === true ) ;
 
@@ -430,5 +432,5 @@
 			// Removes the enter key handler.
 			FCK.EnterKeyHandler = null ;
-			
+
 			if ( resetIsDirty )
 				this.ResetIsDirty() ;
@@ -570,5 +572,5 @@
 
 		FCK.SetHTML( sHtml, !bIsDirty ) ;
-		
+
 		// Set the Focus.
 		FCK.Focus() ;
@@ -644,8 +646,8 @@
 	// Listen for keystroke events.
 	FCK.KeystrokeHandler.AttachToElement( FCK.EditorDocument ) ;
-	
+
 	if ( FCK._ForceResetIsDirty )
 		FCK.ResetIsDirty() ;
-	
+
 	// This is a tricky thing for IE. In some cases, even if the cursor is
 	// blinking in the editing, the keystroke handler doesn't catch keyboard
Index: /FCKeditor/trunk/editor/_source/internals/fckregexlib.js
===================================================================
--- /FCKeditor/trunk/editor/_source/internals/fckregexlib.js	(revision 216)
+++ /FCKeditor/trunk/editor/_source/internals/fckregexlib.js	(revision 217)
@@ -60,5 +60,7 @@
 
 // Empty elements may be <p></p> or even a simple opening <p> (see #211).
-EmptyParagraph	: /^<([^ >]+)[^>]*>\s*(<\/\1>)?$/i ,
+EmptyParagraph	: /^<([^ >]+)[^>]*>\s*(<\/\1>)?$/ ,
+
+EmptyOutParagraph : /^<([^ >]+)[^>]*>(?:\s*|&nbsp;)(<\/\1>)?$/ ,
 
 TagBody			: /></ ,
