code: 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 )
  				|| ( obj instanceof RegExp) )
  			{
  				return obj;
  			}
  
  			// Objects.
  			clone = new obj.constructor();
  
  			for ( var propertyName in obj )
  			{
  				var property = obj[ propertyName ];
  				clone[ propertyName ] = this.clone( property );
  			}
  
  			return clone;
  		}
docs: Creates a deep copy of an object.
  Attention: there is no support for recursive references.
  @param {Object} object The object to be cloned.
  @returns {Object} The object clone.
  @example
  var obj =
  {
  name : 'John',
  cars :
  {
  Mercedes : { color : 'blue' },
  Porsche : { color : 'red' }
  }
  };
  var clone = CKEDITOR.tools.clone( obj );
  clone.name = 'Paul';
  clone.cars.Porsche.color = 'silver';
  alert( obj.name );	// John
  alert( clone.name );	// Paul
  alert( obj.cars.Porsche.color );	// red
  alert( clone.cars.Porsche.color );	// silver