docs: function(e) {
  		var target = e.target,
  		setting = data.getSetting(e.data.treeId),
  		relatedTarget = e.relatedTarget,
  		tId = "", node = null,
  		nodeEventType = "", treeEventType = "",
  		nodeEventCallback = null, treeEventCallback = null,
  		tmp = null;
  
  		if (tools.eqs(e.type, "mouseover")) {
  			tmp = tools.getMDom(setting, target, [{tagName:"a", attrName:"treeNode"+consts.id.A}]);
  			if (tmp) {
  				tId = tools.getNodeMainDom(tmp).id;
  				nodeEventType = "hoverOverNode";
  			}
  		} else if (tools.eqs(e.type, "mouseout")) {
  			tmp = tools.getMDom(setting, relatedTarget, [{tagName:"a", attrName:"treeNode"+consts.id.A}]);
  			if (!tmp) {
  				tId = "remove";
  				nodeEventType = "hoverOutNode";
  			}
  		} else if (tools.eqs(e.type, "mousedown")) {
  			tmp = tools.getMDom(setting, target, [{tagName:"a", attrName:"treeNode"+consts.id.A}]);
  			if (tmp) {
  				tId = tools.getNodeMainDom(tmp).id;
  				nodeEventType = "mousedownNode";
  			}
  		}
  		if (tId.length>0) {
  			node = data.getNodeCache(setting, tId);
  			switch (nodeEventType) {
  				case "mousedownNode" :
  					nodeEventCallback = _handler.onMousedownNode;
  					break;
  				case "hoverOverNode" :
  					nodeEventCallback = _handler.onHoverOverNode;
  					break;
  				case "hoverOutNode" :
  					nodeEventCallback = _handler.onHoverOutNode;
  					break;
  			}
  		}
  		var proxyResult = {
  			stop: false,
  			node: node,
  			nodeEventType: nodeEventType,
  			nodeEventCallback: nodeEventCallback,
  			treeEventType: treeEventType,
  			treeEventCallback: treeEventCallback
  		};
  		return proxyResult
  	}