client rect adjusted to window scroll
function(elem, ignoreScroll) {
        var rect = elem.getBoundingClientRect();
        var result = {
          top:    rect.top | 0,
          left:   rect.left | 0,
          right:  rect.right | 0,
          bottom: rect.bottom | 0,
          width:  (rect.right - rect.left) | 0,
          height: (rect.bottom - rect.top) | 0
        };

        if (ignoreScroll) { return result; }

        var body = env.doc.body;
        result.top += env.root.pageYOffset || body.scrollTop;
        result.top += env.root.pageXOffset || body.scrollLeft;
        return result;
    }