code: function (obj) {
      var parent = null,
        box = null,
        pos = [],
        _sL = document.body.scrollLeft + document.documentElement.scrollLeft,
        _sT = document.body.scrollTop + document.documentElement.scrollTop;
  
      if (obj.parentNode === null || getStyle(obj, 'display') == 'none') return false;
      if (obj.getBoundingClientRect) { // IE
        box = obj.getBoundingClientRect();
        return [Math.round(box.left) + (document.documentElement.scrollLeft || document.body.scrollLeft), Math.round(box.top) + (document.documentElement.scrollTop || document.body.scrollTop), _sL, _sT];
      } else if (document.getBoxObjectFor) { // gecko
        box = document.getBoxObjectFor(obj);
        pos = [box.x, box.y];
      } else { // safari/opera
        pos = [obj.offsetLeft, obj.offsetTop];
        parent = obj.offsetParent;
        if (parent != obj) {
          while (parent) {
            pos[0] += parent.offsetLeft;
            pos[1] += parent.offsetTop;
            parent = parent.offsetParent;
          }
        }
        if (window.opera || (document.childNodes && !document.all && !navigator.taintEnabled && !accentColorName)) pos[1] -= document.body.offsetTop;
      }
      if (obj.parentNode) parent = obj.parentNode;
      else parent = null;
      while (parent && parent.tagName != 'BODY' && parent.tagName != 'HTML') {
        pos[0] -= parent.scrollLeft;
        pos[1] -= parent.scrollTop;
        if (parent.parentNode) parent = parent.parentNode;
        else parent = null;
      }
      return pos.concat([_sL, _sT]);
    }
docs: attribute definitions