docs: function(id, method, onComplete) {
          	if(this.busy) return;
          	this.busy = true;
            var that = this, canvas = this.canvas;
          	var rootNode = this.graph.getNode(this.root);
          	var clickedNode = this.graph.getNode(id);
          	function $setRoot() {
              	if(this.config.multitree && clickedNode.data.$orn) {
              		var orn = clickedNode.data.$orn;
              		var opp = {
              				'left': 'right',
              				'right': 'left',
              				'top': 'bottom',
              				'bottom': 'top'
              		}[orn];
              		rootNode.data.$orn = opp;
              		(function tag(rootNode) {
                  		rootNode.eachSubnode(function(n) {
                  			if(n.id != id) {
                  				n.data.$orn = opp;
                  				tag(n);
                  			}
                  		});
              		})(rootNode);
              		delete clickedNode.data.$orn;
              	}
              	this.root = id;
              	this.clickedNode = clickedNode;
              	this.graph.computeLevels(this.root, 0, "ignore");
              	this.geom.setRightLevelToShow(clickedNode, canvas, {
              	  execHide: false,
              	  onShow: function(node) {
              	    if(!node.drawn) {
                      node.drawn = true;
                      node.setData('alpha', 1, 'end');
                      node.setData('alpha', 0);
                      node.pos.setc(clickedNode.pos.x, clickedNode.pos.y);
              	    }
              	  }
              	});
                this.compute('end');
                this.busy = true;
                this.fx.animate({
                  modes: ['linear', 'node-property:alpha'],
                  onComplete: function() {
                    that.busy = false;
                    that.onClick(id, {
                      onComplete: function() {
                        onComplete && onComplete.onComplete();
                      }
                    });
                  }
                });
          	}
  
          	// delete previous orientations (if any)
          	delete rootNode.data.$orns;
  
          	if(method == 'animate') {
          	  $setRoot.call(this);
          	  that.selectPath(clickedNode);
          	} else if(method == 'replot') {
          		$setRoot.call(this);
          		this.select(this.root);
          	}
       }