Index: /CKEditor/branches/prototype/_source/plugins/dialog/plugin.js
===================================================================
--- /CKEditor/branches/prototype/_source/plugins/dialog/plugin.js	(revision 2997)
+++ /CKEditor/branches/prototype/_source/plugins/dialog/plugin.js	(revision 2998)
@@ -67,5 +67,5 @@
 		// Fire the "dialogDefinition" event, making it possible to customize
 		// the dialog definition.
-		definition = CKEDITOR.fire( 'dialogDefinition',
+		this.definition = definition = CKEDITOR.fire( 'dialogDefinition',
 			{
 				name : dialogName,
@@ -82,5 +82,4 @@
 			element : themeBuilt.element,
 			name : dialogName,
-			definition : definition,
 			size : { width : 0, height : 0 },
 			contents : {},
@@ -413,5 +412,5 @@
 			// Insert the dialog's element to the root document.
 			var element = this._.element;
-			var definition = this._.definition;
+			var definition = this.definition;
 			if ( !( element.getParent() && element.getParent().equals( CKEDITOR.document.getBody() ) ) )
 				element.appendTo( CKEDITOR.document.getBody() );
@@ -427,5 +426,5 @@
 
 			// Select the first tab by default.
-			this.selectPage( this._.definition.contents[0].id );
+			this.selectPage( this.definition.contents[0].id );
 
 			// Reset all inputs back to their default value.
@@ -1319,5 +1318,5 @@
 	var initResizeHandles = function( dialog )
 	{
-		var definition = dialog._.definition,
+		var definition = dialog.definition,
 			minWidth = definition.minWidth || 0,
 			minHeight = definition.minHeight || 0,
Index: /CKEditor/branches/prototype/_source/plugins/specialchar/dialogs/specialchar.js
===================================================================
--- /CKEditor/branches/prototype/_source/plugins/specialchar/dialogs/specialchar.js	(revision 2997)
+++ /CKEditor/branches/prototype/_source/plugins/specialchar/dialogs/specialchar.js	(revision 2998)
@@ -8,34 +8,72 @@
 	return {
 		title : editor.lang.specialChar.title,
-		minWidth : editor.config.specialchar.dialogWidth,
-		minHeight : editor.config.specialchar.dialogHeight,
+		minWidth : 450,
+		minHeight : 350,
 		buttons : [ CKEDITOR.dialog.cancelButton ],
+		charColumns : 17,
+		chars :
+			[
+				'!','&quot;','#','$','%','&amp;',"'",'(',')','*','+','-','.','/',
+				'0','1','2','3','4','5','6','7','8','9',':',';',
+				'&lt;','=','&gt;','?','@',
+				'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O',
+				'P','Q','R','S','T','U','V','W','X','Y','Z',
+				'[',']','^','_','`',
+				'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p',
+				'q','r','s','t','u','v','w','x','y','z',
+				'{','|','}','~','&euro;','&lsquo;','&rsquo;','&rsquo;','&ldquo;',
+				'&rdquo;','&ndash;','&mdash;','&iexcl;','&cent;','&pound;',
+				'&curren;','&yen;','&brvbar;','&sect;','&uml;','&copy;','&ordf;',
+				'&laquo;','&not;','&reg;','&macr;','&deg;','&plusmn;','&sup2;',
+				'&sup3;','&acute;','&micro;','&para;','&middot;','&cedil;',
+				'&sup1;','&ordm;','&raquo;','&frac14;','&frac12;','&frac34;',
+				'&iquest;','&Agrave;','&Aacute;','&Acirc;','&Atilde;','&Auml;',
+				'&Aring;','&AElig;','&Ccedil;','&Egrave;','&Eacute;','&Ecirc;',
+				'&Euml;','&Igrave;','&Iacute;','&Icirc;','&Iuml;','&ETH;',
+				'&Ntilde;','&Ograve;','&Oacute;','&Ocirc;','&Otilde;','&Ouml;',
+				'&times;','&Oslash;','&Ugrave;','&Uacute;','&Ucirc;','&Uuml;',
+				'&Yacute;','&THORN;','&szlig;','&agrave;','&aacute;','&acirc;',
+				'&atilde;','&auml;','&aring;','&aelig;','&ccedil;','&egrave;',
+				'&eacute;','&ecirc;','&euml;','&igrave;','&iacute;','&icirc;',
+				'&iuml;','&eth;','&ntilde;','&ograve;','&oacute;','&ocirc;',
+				'&otilde;','&ouml;','&divide;','&oslash;','&ugrave;','&uacute;',
+				'&ucirc;','&uuml;','&uuml;','&yacute;','&thorn;','&yuml;',
+				'&OElig;','&oelig;','&#372;','&#374','&#373','&#375;','&sbquo;',
+				'&#8219;','&bdquo;','&hellip;','&trade;','&#9658;','&bull;',
+				'&rarr;','&rArr;','&hArr;','&diams;','&asymp;'
+			],
 		onLoad :  function()
 		{
-			var html = new Array();
-			html.push( '<table style="width: 320px; height: 100%; border-collapse: separate;" align="center" cellspacing="2" cellpadding="2" border="0">' );
-			html.push( '<tbody>' );
+			var columns = this.definition.charColumns,
+				chars = this.definition.chars;
+		
+			var html = [ '<table style="width: 320px; height: 100%; border-collapse: separate;" align="center" cellspacing="2" cellpadding="2" border="0">' ];
 
 			var i = 0 ;
-
-			while ( i < editor.config.specialchar.characters.length )
+			while ( i < chars.length )
 			{
-				html.push("<tr>") ;
-				for( var j = 0 ; j < editor.config.specialchar.columns ; j++)
+				html.push( '<tr>' ) ;
+				
+				for( var j = 0 ; j < columns ; j++, i++ )
 				{
-					if (editor.config.specialchar.characters[i])
+					if ( chars[ i ] )
 					{
-						html.push('<td width="1%" title=' + editor.config.specialchar.characters[i].replace(/&/g, "&amp;") + ' value="' + editor.config.specialchar.characters[i].replace(/&/g, "&amp;") + '" class="DarkBackground editor.config.charactersOut Hand">');
-						html.push(editor.config.specialchar.characters[i]);
+						html.push( 
+							'<td width="1%"' +
+							' title="', chars[i].replace( /&/g, '&amp;' ), '"' +
+							' value="', chars[i].replace( /&/g, "&amp;" ), '"' +
+							' class="DarkBackground Hand">');
+						html.push( chars[i] );
 					}
 					else
-						html.push("<td class='DarkBackground'>&nbsp;");
-					html.push("<\/td>");
-					i++;
+						html.push( '<td class="DarkBackground">&nbsp;' );
+					
+					html.push( '</td>' );
 				}
-				html.push("<\/tr>");
+				html.push( '</tr>' );
 			}
 
 			html.push( '</tbody></table>' );
+
 			this.getContentElement( 'info', 'charContainer' ).getElement().setHtml( html.join( '' ) );
 		},
@@ -65,17 +103,18 @@
 										onMouseover : function( evt )
 										{
-											var dialog = this.getDialog();
-											var htmlPreview = dialog.getContentElement( 'info', 'htmlPreview' ).getElement();
-											var preview = dialog.getContentElement( 'info', 'charPreview' ).getElement();
-											var target = evt.data.getTarget();
-											var targetName = target.getName();
+											var target = evt.data.getTarget(),
+												targetName = target.getName(),
+												value;
 
-											if ( targetName == 'td' )
-												if ( value = target.$.getAttribute( 'value' ) )
-												{
-													preview.setHtml( value );
-													target.addClass( "LightBackground" );
-													htmlPreview.setHtml( CKEDITOR.tools.htmlEncode( value ) );
-												}
+											if ( targetName == 'td' && ( value = target.getAttribute( 'value' ) ) )
+											{
+												var dialog = this.getDialog(),
+													preview = dialog.getContentElement( 'info', 'charPreview' ).getElement(),
+													htmlPreview = dialog.getContentElement( 'info', 'htmlPreview' ).getElement();
+
+												preview.setHtml( value );
+												htmlPreview.setHtml( CKEDITOR.tools.htmlEncode( value ) );
+												target.addClass( "LightBackground" );
+											}
 										},
 										onMouseout : function( evt )
@@ -103,5 +142,5 @@
 												{
 													this.getDialog().restoreSelection();
-													editor.insertElement( CKEDITOR.dom.element.createFromHtml( value ) );
+													editor.insertHtml( value );
 													this.getDialog().hide();
 												}
Index: /CKEditor/branches/prototype/_source/plugins/specialchar/plugin.js
===================================================================
--- /CKEditor/branches/prototype/_source/plugins/specialchar/plugin.js	(revision 2997)
+++ /CKEditor/branches/prototype/_source/plugins/specialchar/plugin.js	(revision 2998)
@@ -12,49 +12,18 @@
 	init : function( editor, pluginPath )
 	{
-		editor.addCommand( 'specialchar', new CKEDITOR.dialogCommand( 'specialchar' ) );
+		var pluginName = 'specialchar';
+	
+		// Register the dialog.
+		CKEDITOR.dialog.add( pluginName, this.path + 'dialogs/specialchar.js' );
+
+		// Register the command.
+		editor.addCommand( pluginName, new CKEDITOR.dialogCommand( pluginName ) );
+		
+		// Register the toolbar button.
 		editor.ui.addButton( 'SpecialChar',
 			{
 				label : editor.lang.specialChar.toolbar,
-				command : 'specialchar'
+				command : pluginName
 			});
-		CKEDITOR.dialog.add( 'specialchar', this.path + 'dialogs/specialchar.js' );
 	}
 } );
-
-CKEDITOR.config.specialchar =
-{
-	columns : 17,
-	dialogWidth : 450,
-	dialogHeight : 350,
-	characters :
-	[
-		"!","&quot;","#","$","%","&amp;","\\'","(",")","*","+","-",".","/",
-		"0","1","2","3","4","5","6","7","8","9",":",";",
-		"&lt;","=","&gt;","?","@",
-		"A","B","C","D","E","F","G","H","I","J","K","L","M","N","O",
-		"P","Q","R","S","T","U","V","W","X","Y","Z",
-		"[","]","^","_","`",
-		"a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p",
-		"q","r","s","t","u","v","w","x","y","z",
-		"{","|","}","~","&euro;","&lsquo;","&rsquo;","&rsquo;","&ldquo;",
-		"&rdquo;","&ndash;","&mdash;","&iexcl;","&cent;","&pound;",
-		"&curren;","&yen;","&brvbar;","&sect;","&uml;","&copy;","&ordf;",
-		"&laquo;","&not;","&reg;","&macr;","&deg;","&plusmn;","&sup2;",
-		"&sup3;","&acute;","&micro;","&para;","&middot;","&cedil;",
-		"&sup1;","&ordm;","&raquo;","&frac14;","&frac12;","&frac34;",
-		"&iquest;","&Agrave;","&Aacute;","&Acirc;","&Atilde;","&Auml;",
-		"&Aring;","&AElig;","&Ccedil;","&Egrave;","&Eacute;","&Ecirc;",
-		"&Euml;","&Igrave;","&Iacute;","&Icirc;","&Iuml;","&ETH;",
-		"&Ntilde;","&Ograve;","&Oacute;","&Ocirc;","&Otilde;","&Ouml;",
-		"&times;","&Oslash;","&Ugrave;","&Uacute;","&Ucirc;","&Uuml;",
-		"&Yacute;","&THORN;","&szlig;","&agrave;","&aacute;","&acirc;",
-		"&atilde;","&auml;","&aring;","&aelig;","&ccedil;","&egrave;",
-		"&eacute;","&ecirc;","&euml;","&igrave;","&iacute;","&icirc;",
-		"&iuml;","&eth;","&ntilde;","&ograve;","&oacute;","&ocirc;",
-		"&otilde;","&ouml;","&divide;","&oslash;","&ugrave;","&uacute;",
-		"&ucirc;","&uuml;","&uuml;","&yacute;","&thorn;","&yuml;",
-		"&OElig;","&oelig;","&#372;","&#374","&#373","&#375;","&sbquo;",
-		"&#8219;","&bdquo;","&hellip;","&trade;","&#9658;","&bull;",
-		"&rarr;","&rArr;","&hArr;","&diams;","&asymp;"
-	]
-};
