Index: /MediaWiki/trunk/plugins/mediawiki/fckplugin.js
===================================================================
--- /MediaWiki/trunk/plugins/mediawiki/fckplugin.js	(revision 1861)
+++ /MediaWiki/trunk/plugins/mediawiki/fckplugin.js	(revision 1862)
@@ -234,5 +234,5 @@
 						case 'ol' :
 						case 'ul' :
-							var isFirstLevel = !htmlNode.parentNode.nodeName.IEquals( 'ul', 'ol', 'li' ) ;
+							var isFirstLevel = !htmlNode.parentNode.nodeName.IEquals( 'ul', 'ol', 'li', 'dl', 'dt', 'dd' ) ;
 
 							this._AppendChildNodes( htmlNode, stringBuilder, prefix ) ;
@@ -246,17 +246,26 @@
 						case 'li' :
 
-							var listPrefix = '' ;
+							if( stringBuilder.length > 1)
+							{
+								var sLastStr = stringBuilder[ stringBuilder.length - 1 ] ;
+								if ( sLastStr != ";" && sLastStr != ":" && sLastStr != "#" && sLastStr != "*")
+ 									stringBuilder.push( '\n' + prefix ) ;
+							}
+							
 							var parent = htmlNode.parentNode ;
-
+							var listType = "#" ;
+							
 							while ( parent )
 							{
 								if ( parent.nodeName.toLowerCase() == 'ul' )
-									listPrefix = '*' + listPrefix ;
+								{
+									listType = "*" ;
+									break ;
+								}
 								else if ( parent.nodeName.toLowerCase() == 'ol' )
-									listPrefix = '#' + listPrefix ;
-								else if ( parent.nodeName.toLowerCase() == 'dt' )
-									listPrefix = ';' + listPrefix ;
-								else if ( parent.nodeName.toLowerCase() == 'dd' )
-									listPrefix = ':' + listPrefix ;
+								{
+									listType = "#" ;
+									break ;
+								}
 								else if ( parent.nodeName.toLowerCase() != 'li' )
 									break ;
@@ -264,23 +273,8 @@
 								parent = parent.parentNode ;
 							}
-
-							var sChildTag = '' ;
-							
-							if ( htmlNode.childNodes.length == 1 && htmlNode.childNodes[0].tagName )
-								sChildTag = htmlNode.childNodes[0].tagName.toLowerCase();
-							else if ( htmlNode.childNodes.length == 2 && htmlNode.childNodes[1].nodeType == 3 && htmlNode.childNodes[1].nodeValue == "\n")
-								sChildTag = htmlNode.childNodes[0].tagName.toLowerCase();
-							
-							var sbLen = stringBuilder.length ;
-							if (sChildTag != 'ul' && sChildTag != 'ol') 
-							{
-								if ( sbLen > 1 && stringBuilder[ sbLen - 1 ] != "*" && stringBuilder[ sbLen - 1 ] != "#") {
-									stringBuilder.push( '\n' ) ;
-								}
-								stringBuilder.push( listPrefix ) ;
-								stringBuilder.push( ' ' ) ;
-							}
-							this._AppendChildNodes( htmlNode, stringBuilder, listPrefix ) ;
-
+							
+							stringBuilder.push( listType ) ;
+							this._AppendChildNodes( htmlNode, stringBuilder, prefix + listType ) ;
+							
 							break ;
 
@@ -316,26 +310,36 @@
 							
 						case 'dl' :
+						
 							this._AppendChildNodes( htmlNode, stringBuilder, prefix ) ;
-							var isFirstLevel = !htmlNode.parentNode.nodeName.IEquals( 'ul', 'ol', 'li', 'dl', 'dd' ) ;
-							if (isFirstLevel)
+							var isFirstLevel = !htmlNode.parentNode.nodeName.IEquals( 'ul', 'ol', 'li', 'dl', 'dd', 'dt' ) ;
+							if ( isFirstLevel )
 								stringBuilder.push( '\n') ;
+							
 							break ;
 
 						case 'dt' :
-							if( stringBuilder.length > 1 && stringBuilder[ stringBuilder.length - 1 ] != ";" && stringBuilder[ stringBuilder.length - 1 ] != ":" )
-							{
-								stringBuilder.push( '\n' + prefix ) ;
+						
+							if( stringBuilder.length > 1)
+							{
+								var sLastStr = stringBuilder[ stringBuilder.length - 1 ] ;
+								if ( sLastStr != ";" && sLastStr != ":" && sLastStr != "#" && sLastStr != "*" )
+ 									stringBuilder.push( '\n' + prefix ) ;
 							}
 							stringBuilder.push( ';' ) ;
-							this._AppendChildNodes( htmlNode, stringBuilder, prefix ) ;
+							this._AppendChildNodes( htmlNode, stringBuilder, prefix + ";") ;
+							
 							break ;
 
 						case 'dd' :
-							if ( stringBuilder.length > 1 && stringBuilder[ stringBuilder.length - 1 ] != ":" )
-							{
-								stringBuilder.push( '\n' + prefix ) ;
+						
+							if( stringBuilder.length > 1)
+							{
+								var sLastStr = stringBuilder[ stringBuilder.length - 1 ] ;
+								if ( sLastStr != ";" && sLastStr != ":" && sLastStr != "#" && sLastStr != "*" )
+ 									stringBuilder.push( '\n' + prefix ) ;
 							}
 							stringBuilder.push( ':' ) ;
 							this._AppendChildNodes( htmlNode, stringBuilder, prefix + ":" ) ;
+							
 							break ;
 							
