Index: /CKEditor/trunk/_source/core/dom/documentFragment.js
===================================================================
--- /CKEditor/trunk/_source/core/dom/documentFragment.js	(revision 3248)
+++ /CKEditor/trunk/_source/core/dom/documentFragment.js	(revision 3249)
@@ -35,4 +35,5 @@
 		'appendTo' : 1,
 		'moveChildren' : 1,
+		'insertBefore' : 1,
 		'insertAfterNode' : 1,
 		'replace' : 1,
Index: /CKEditor/trunk/_source/core/dom/node.js
===================================================================
--- /CKEditor/trunk/_source/core/dom/node.js	(revision 3248)
+++ /CKEditor/trunk/_source/core/dom/node.js	(revision 3249)
@@ -93,9 +93,9 @@
 		},
 
-		clone : function( includeChildren )
+		clone : function( includeChildren, cloneId )
 		{
 			var $clone = this.$.cloneNode( includeChildren );
 			
-			if ( this.type == CKEDITOR.NODE_ELEMENT )
+			if ( this.type == CKEDITOR.NODE_ELEMENT && !cloneId )
 			{
 				// The "id" attribute should never be cloned to avoid duplication.
Index: /CKEditor/trunk/_source/plugins/blockquote/plugin.js
===================================================================
--- /CKEditor/trunk/_source/plugins/blockquote/plugin.js	(revision 3248)
+++ /CKEditor/trunk/_source/plugins/blockquote/plugin.js	(revision 3249)
@@ -106,5 +106,5 @@
 				if ( paragraphs.length < 1 )
 				{
-					var para = editor.document.createElement( editor.config.enterMode ),
+					var para = editor.document.createElement( editor.config.enterMode == CKEDITOR.ENTER_P ? 'p' : 'div' ),
 						firstBookmark = bookmarks.shift();
 					range.insertNode( para );
@@ -246,5 +246,5 @@
 				}
 
-				if ( editor.config.enterMode == 'br' )
+				if ( editor.config.enterMode == CKEDITOR.ENTER_BR )
 				{
 					var firstTime = true;
Index: /CKEditor/trunk/_source/plugins/list/plugin.js
===================================================================
--- /CKEditor/trunk/_source/plugins/list/plugin.js	(revision 3248)
+++ /CKEditor/trunk/_source/plugins/list/plugin.js	(revision 3249)
@@ -78,5 +78,6 @@
 				currentIndex = baseIndex,
 				indentLevel = Math.max( listArray[ baseIndex ].indent, 0 ),
-				currentListItem = null;
+				currentListItem = null,
+				paragraphName = ( paragraphMode == CKEDITOR.ENTER_P ? 'p' : 'div' );
 			while ( true )
 			{
@@ -86,10 +87,10 @@
 					if ( !rootNode || listArray[ currentIndex ].parent.getName() != rootNode.getName() )
 					{
-						rootNode = listArray[ currentIndex ].parent.clone( false );
+						rootNode = listArray[ currentIndex ].parent.clone( false, true );
 						retval.append( rootNode );
 					}
 					currentListItem = rootNode.append( doc.createElement( 'li' ) );
 					for ( var i = 0 ; i < item.contents.length ; i++ )
-						currentListItem.append( item.contents[i].clone( true ) );
+						currentListItem.append( item.contents[i].clone( true, true ) );
 					currentIndex++;
 				}
@@ -107,6 +108,6 @@
 					else
 					{
-						if ( paragraphMode != 'br' && item.grandparent.getName() != 'td' )
-							currentListItem = doc.createElement( paragraphMode );
+						if ( paragraphMode != CKEDITOR.ENTER_BR && item.grandparent.getName() != 'td' )
+							currentListItem = doc.createElement( paragraphName );
 						else
 							currentListItem = new CKEDITOR.dom.documentFragment( doc );
@@ -114,5 +115,5 @@
 
 					for ( var i = 0 ; i < item.contents.length ; i++ )
-						currentListItem.append( item.contents[i].clone( true ) );
+						currentListItem.append( item.contents[i].clone( true, true ) );
 
 					if ( currentListItem.type == CKEDITOR.NODE_DOCUMENT_FRAGMENT )
@@ -125,5 +126,5 @@
 					}
 
-					if ( currentListItem.getName() == paragraphMode && currentListItem.$.firstChild )
+					if ( currentListItem.getName() == paragraphName && currentListItem.$.firstChild )
 					{
 						currentListItem.trim();
@@ -365,5 +366,6 @@
 				if ( !body.getFirst() )
 				{
-					var paragraph = doc.createElement( editor.config.enterMode );
+					var paragraph = doc.createElement( editor.config.enterMode == CKEDITOR.ENTER_P ? 'p' :
+							( editor.config.enterMode == CKEDITOR.ENTER_DIV ? 'div' : 'br' ) );
 					paragraph.appendTo( body );
 					ranges = [ new CKEDITOR.dom.range( doc ) ];
Index: /CKEditor/trunk/_source/plugins/wysiwygarea/plugin.js
===================================================================
--- /CKEditor/trunk/_source/plugins/wysiwygarea/plugin.js	(revision 3248)
+++ /CKEditor/trunk/_source/plugins/wysiwygarea/plugin.js	(revision 3249)
@@ -53,5 +53,5 @@
 
 				// If the new node is a block element, split the current block (if any).
-				if ( this.config.enterMode != 'br' && isBlock )
+				if ( this.config.enterMode != CKEDITOR.ENTER_BR && isBlock )
 				{
 					var startPath = new CKEDITOR.dom.elementPath( range.startContainer ),
