docs: function(scale, centerX, centerY){
      var bbox,
          itemBbox,
          newBbox,
          codes,
          i;
  
      if (jvm.$.isArray(scale) || this.regions[scale]) {
        if (jvm.$.isArray(scale)) {
          codes = scale;
        } else {
          codes = [scale]
        }
        for (i = 0; i < codes.length; i++) {
          if (this.regions[codes[i]]) {
            itemBbox = this.regions[codes[i]].element.getBBox();
            if (itemBbox) {
              if (typeof bbox == 'undefined') {
                bbox = itemBbox;
              } else {
                newBbox = {
                  x: Math.min(bbox.x, itemBbox.x),
                  y: Math.min(bbox.y, itemBbox.y),
                  width: Math.max(bbox.x + bbox.width, itemBbox.x + itemBbox.width) - Math.min(bbox.x, itemBbox.x),
                  height: Math.max(bbox.y + bbox.height, itemBbox.y + itemBbox.height) - Math.min(bbox.y, itemBbox.y)
                }
                bbox = newBbox;
              }
            }
          }
        }
        this.setScale(
          Math.min(this.width / bbox.width, this.height / bbox.height),
          - (bbox.x + bbox.width / 2),
          - (bbox.y + bbox.height / 2),
          true
        );
      } else {
        scale = scale * this.baseScale;
        this.setScale(scale, - centerX * this.defaultWidth, - centerY * this.defaultHeight, true);
      }
    }