docs: function(node, graph, state, down, move, up, dblClick)
  	{
  		var getState = function(evt)
  		{
  			return (typeof(state) == 'function') ? state(evt) : state;
  		};
  		
  		mxEvent.addGestureListeners(node, function (evt)
  		{
  			if (down != null)
  			{
  				down(evt);
  			}
  			else if (!mxEvent.isConsumed(evt))
  			{
  				graph.fireMouseEvent(mxEvent.MOUSE_DOWN, new mxMouseEvent(evt, getState(evt)));
  			}
  		},
  		function (evt)
  		{
  			if (move != null)
  			{
  				move(evt);
  			}
  			else if (!mxEvent.isConsumed(evt))
  			{
  				graph.fireMouseEvent(mxEvent.MOUSE_MOVE, new mxMouseEvent(evt, getState(evt)));
  			}
  		},
  		function (evt)
  		{
  			if (up != null)
  			{
  				up(evt);
  			}
  			else if (!mxEvent.isConsumed(evt))
  			{
  				graph.fireMouseEvent(mxEvent.MOUSE_UP, new mxMouseEvent(evt, getState(evt)));
  			}
  		});
  
  		mxEvent.addListener(node, 'dblclick', function (evt)
  		{
  			if (dblClick != null)
  			{
  				dblClick(evt);
  			}
  			else if (!mxEvent.isConsumed(evt))
  			{
  				var tmp = getState(evt);
  				graph.dblClick(evt, (tmp != null) ? tmp.cell : null);
  			}
  		});
  	}