Index: /CKEditor/trunk/_source/core/tools.js
===================================================================
--- /CKEditor/trunk/_source/core/tools.js	(revision 3703)
+++ /CKEditor/trunk/_source/core/tools.js	(revision 3704)
@@ -39,6 +39,5 @@
 		/**
 		 * Creates a deep copy of an object.
-		 * Attention: there is no support for deep copy of Array properties and
-		 * for recursive references.
+		 * Attention: there is no support for recursive references.
 		 * @param {Object} object The object to be cloned.
 		 * @returns {Object} The object clone.
@@ -61,14 +60,36 @@
 		 * alert( clone.cars.Porsche.color );	// silver
 		 */
-		clone : function( object )
-		{
-			if( object === null || typeof( object ) != 'object')
-				return object;
-
-			var clone = new object.constructor();
-
-			for ( var propertyName in object )
-			{
-				var property = object[ propertyName ];
+		clone : function( obj )
+		{
+			var clone;
+
+			// Array.
+			if ( obj && ( obj instanceof Array ) )
+			{
+				clone = [];
+				
+				for ( var i = 0 ; i < obj.length ; i++ )
+					clone[ i ] = this.clone( obj[ i ] );
+				
+				return clone;
+			}
+
+			// "Static" types.
+			if ( obj === null 
+				|| ( typeof( obj ) != 'object' )
+				|| ( obj instanceof String )
+				|| ( obj instanceof Number )
+				|| ( obj instanceof Boolean )
+				|| ( obj instanceof Date ) )
+			{
+				return obj;
+			}
+
+			// Objects.
+			clone = new obj.constructor();
+
+			for ( var propertyName in obj )
+			{
+				var property = obj[ propertyName ];
 				clone[ propertyName ] = this.clone( property );
 			}
Index: /CKEditor/trunk/_source/plugins/dialog/plugin.js
===================================================================
--- /CKEditor/trunk/_source/plugins/dialog/plugin.js	(revision 3703)
+++ /CKEditor/trunk/_source/plugins/dialog/plugin.js	(revision 3704)
@@ -98,4 +98,7 @@
 		// Completes the definition with the default values.
 		definition = CKEDITOR.tools.extend( definition( editor ), defaultDialogDefinition );
+
+		// Clone a functionally independent copy for this dialog.
+		definition = CKEDITOR.tools.clone( definition );
 
 		// Create a complex definition object, extending it with the API
