docs: function (element, overlay) {
              var geometry = aria.utils.Dom.getGeometry(element);
              var viewportSize = aria.utils.Dom.getViewportSize();
              var overlayGeometry = null;
  
              if (geometry) {
                  var width1, width2, height1, height2;
  
                  var overlayGeometryViewportRelative = {
                      x : Math.max(geometry.x, 0),
                      y : Math.max(geometry.y, 0)
                  };
                  if (overlay.style.position == "absolute") {
                      // geometry is relative to viewport
                      // overlayGeometry will be relative to the page!
                      var documentScroll = aria.utils.Dom._getDocumentScroll();
                      overlayGeometry = {
                          x : Math.max(geometry.x, 0) + documentScroll.scrollLeft,
                          y : Math.max(geometry.y, 0) + documentScroll.scrollTop
                      };
                  } else { // fixed
                      // geometry is relative to viewport
                      // overlayGeometry will be relative to the viewport too
                      overlayGeometry = overlayGeometryViewportRelative;
                  }
  
                  // "cut-off" the overlay if the element stands out of the viewport to the left / top
                  width1 = geometry.width + Math.min(geometry.x, 0);
                  height1 = geometry.height + Math.min(geometry.y, 0);
  
                  // "cut-off" the overlay if the element stands out of the viewport to the right / bottom
                  width2 = viewportSize.width - overlayGeometryViewportRelative.x;
                  height2 = viewportSize.height - overlayGeometryViewportRelative.y;
  
                  overlayGeometry.width = Math.min(width1, width2);
                  overlayGeometry.height = Math.min(height1, height2);
              }
  
              var style = overlay.style;
              // geometry may be null if the element is not currently visible
              if (overlayGeometry && overlayGeometry.height > 0 && overlayGeometry.width > 0) {
                  style.top = overlayGeometry.y + "px";
                  style.left = overlayGeometry.x + "px";
                  style.width = overlayGeometry.width + "px";
                  style.height = overlayGeometry.height + "px";
                  style.display = "block";
                  var browser = ariaCoreBrowser;
                  if (browser.isIE && browser.majorVersion < 9 && overlay.firstChild) {
                      overlay.firstChild.style.top = Math.round(overlayGeometry.height / 2) + "px";
                  }
              } else {
                  style.display = "none";
              }
          }