code: function(element) {
      if (element) {
        var e    = element.doc().parent()
          , box  = element.node.getBoundingClientRect()
          , zoom = 1
  
        // get screen offset
        this.x = box.left
        this.y = box.top
  
        // subtract parent offset
        this.x -= e.offsetLeft
        this.y -= e.offsetTop
  
        while (e = e.offsetParent) {
          this.x -= e.offsetLeft
          this.y -= e.offsetTop
        }
  
        // calculate cumulative zoom from svg documents
        e = element
        while (e.parent && (e = e.parent())) {
          if (e.viewbox) {
            zoom *= e.viewbox().zoom
            this.x -= e.x() || 0
            this.y -= e.y() || 0
          }
        }
  
        // recalculate viewbox distortion
        this.width  = box.width  /= zoom
        this.height = box.height /= zoom
      }
  
      // add center, right and bottom
      fullBox(this)
  
      // offset by window scroll position, because getBoundingClientRect changes when window is scrolled
      this.x += window.pageXOffset
      this.y += window.pageYOffset
    }
docs: Initialize