Index: /FCKeditor/trunk/_whatsnew.html
===================================================================
--- /FCKeditor/trunk/_whatsnew.html	(revision 200)
+++ /FCKeditor/trunk/_whatsnew.html	(revision 201)
@@ -101,4 +101,7 @@
 		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/211">#211</a>] Some invalid
 			inputs, like "&lt;p&gt;" where making the caret disappear in Firefox.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/99">#99</a>] The &lt;div&gt;
+			element is now considered a block container if EnterMode=p|br. It acts like a simple
+			block only if EnterMode=div.</li>
 	</ul>
 	<h3>
Index: /FCKeditor/trunk/editor/_source/classes/fckelementpath.js
===================================================================
--- /FCKeditor/trunk/editor/_source/classes/fckelementpath.js	(revision 200)
+++ /FCKeditor/trunk/editor/_source/classes/fckelementpath.js	(revision 201)
@@ -42,14 +42,16 @@
 			var sElementName = e.nodeName.toLowerCase() ;
 
-			if ( !eBlockLimit && !eBlock && FCKListsLib.PathBlockElements[ sElementName ] != null )
-				eBlock = e ;
+			if ( !eBlockLimit )
+			{
+				if ( !eBlock && FCKListsLib.PathBlockElements[ sElementName ] != null )
+					eBlock = e ;
 
-			// TODO: Review the Regex and move it to the RegexLib.
-			if ( !eBlockLimit && (/^(?:body|td|th|caption|form)$/).test( sElementName ) )
-				eBlockLimit = e ;
+				if ( FCKListsLib.PathBlockLimitElements[ sElementName ] != null )
+					eBlockLimit = e ;
+			}
 
 			aElements.push( e ) ;
 
-			if ( sElementName == 'BODY' )
+			if ( sElementName == 'body' )
 				break ;
 		}
@@ -62,2 +64,3 @@
 }
 
+
Index: /FCKeditor/trunk/editor/_source/internals/fck.js
===================================================================
--- /FCKeditor/trunk/editor/_source/internals/fck.js	(revision 200)
+++ /FCKeditor/trunk/editor/_source/internals/fck.js	(revision 201)
@@ -89,4 +89,7 @@
 		this.EditingArea = new FCKEditingArea( document.getElementById( 'xEditingArea' ) ) ;
 		this.EditingArea.FFSpellChecker = false ;
+		
+		// Final setup of the lists lib.
+		FCKListsLib.Setup() ;
 
 		// Set the editor's startup contents
Index: /FCKeditor/trunk/editor/_source/internals/fcklistslib.js
===================================================================
--- /FCKeditor/trunk/editor/_source/internals/fcklistslib.js	(revision 200)
+++ /FCKeditor/trunk/editor/_source/internals/fcklistslib.js	(revision 201)
@@ -34,11 +34,27 @@
 	NonEmptyBlockElements : { p:1,div:1,h1:1,h2:1,h3:1,h4:1,h5:1,h6:1,address:1,pre:1,ol:1,ul:1,li:1,td:1,th:1 },
 
-	// Elements that may be considered the "Block boundary" in an element path.
-	PathBlockElements : { address:1,blockquote:1,div:1,dl:1,h1:1,h2:1,h3:1,h4:1,h5:1,h6:1,p:1,pre:1,ol:1,ul:1,li:1,dt:1,de:1 },
-
 	// Inline elements which MUST have child nodes.
 	InlineChildReqElements : { abbr:1,acronym:1,b:1,bdo:1,big:1,cite:1,code:1,del:1,dfn:1,em:1,font:1,i:1,ins:1,label:1,kbd:1,q:1,samp:1,small:1,span:1,strong:1,sub:1,sup:1,tt:1,u:1,'var':1 },
 
 	// Elements marked as empty "Empty" in the XHTML DTD.
-	EmptyElements : { base:1,meta:1,link:1,hr:1,br:1,param:1,img:1,area:1,input:1 }
+	EmptyElements : { base:1,meta:1,link:1,hr:1,br:1,param:1,img:1,area:1,input:1 },
+	
+	// Elements that may be considered the "Block boundary" in an element path.
+	PathBlockElements : { address:1,blockquote:1,dl:1,h1:1,h2:1,h3:1,h4:1,h5:1,h6:1,p:1,pre:1,ol:1,ul:1,li:1,dt:1,de:1 },
+	
+	// Elements that may be considered the "Block limit" in an element path.
+	PathBlockLimitElements : { body:1,td:1,th:1,caption:1,form:1 },
+
+	// Final setup of FCKListsLib once the editor is loaded (at FCK.StartEditor). 
+	// TODO: For v3, there should be a generic way to register to the editor
+	// startup event, so this function would not be needed to be defined here, not
+	// even be called at FCK.StartEditor.
+	Setup : function()
+	{
+		// <div> is considered a block element only if EnterMode=div, otherwise it is a block limit.
+		if ( FCKConfig.EnterMode == 'div' )
+			this.PathBlockElements.div = 1 ;
+		else
+			this.PathBlockLimitElements.div = 1 ;
+	}
 } ;
