text: /**
   * Copyright (c) 2006-2015, JGraph Ltd
   * Copyright (c) 2006-2015, Gaudenz Alder
   */
  var mxObjectIdentity =
  {
  	/**
  	 * Class: mxObjectIdentity
  	 * 
  	 * Identity for JavaScript objects and functions. This is implemented using
  	 * a simple incrementing counter which is stored in each object under
  	 * <FIELD_NAME>.
  	 * 
  	 * The identity for an object does not change during its lifecycle.
  	 * 
  	 * Variable: FIELD_NAME
  	 * 
  	 * Name of the field to be used to store the object ID. Default is
  	 * <code>mxObjectId</code>.
  	 */
  	FIELD_NAME: 'mxObjectId',
  
  	/**
  	 * Variable: counter
  	 * 
  	 * Current counter.
  	 */
  	counter: 0,
  
  	/**
  	 * Function: get
  	 * 
  	 * Returns the ID for the given object or function or null if no object
  	 * is specified.
  	 */
  	get: function(obj)
  	{
  		if (obj != null)
  		{
  			if (obj[mxObjectIdentity.FIELD_NAME] == null)
  			{
  				if (typeof obj === 'object')
  				{
  					var ctor = mxUtils.getFunctionName(obj.constructor);
  					obj[mxObjectIdentity.FIELD_NAME] = ctor + '#' + mxObjectIdentity.counter++;
  				}
  				else if (typeof obj === 'function')
  				{
  					obj[mxObjectIdentity.FIELD_NAME] = 'Function#' + mxObjectIdentity.counter++;
  				}
  			}
  			
  			return obj[mxObjectIdentity.FIELD_NAME];
  		}
  		
  		return null;
  	},
  
  	/**
  	 * Function: clear
  	 * 
  	 * Deletes the ID from the given object or function.
  	 */
  	clear: function(obj)
  	{
  		if (typeof(obj) === 'object' || typeof obj === 'function')
  		{
  			delete obj[mxObjectIdentity.FIELD_NAME];
  		}
  	}
  
  };
  
  exports.mxObjectIdentity = mxObjectIdentity;
  