]> granicus.if.org Git - docbook-dsssl/commitdiff
Hide the overlay if content overlaps
authorNorman Walsh <ndw@nwalsh.com>
Thu, 30 May 2002 10:20:25 +0000 (10:20 +0000)
committerNorman Walsh <ndw@nwalsh.com>
Thu, 30 May 2002 10:20:25 +0000 (10:20 +0000)
slides/browser/overlay.js

index cc60779c7d1c35bc410e71e01054f2d0e37d3cde..644bb5b960f935d3d3d12b3459495ccd6b0b3614 100644 (file)
@@ -18,7 +18,9 @@ var overlayNS4 = document.layers ? 1 : 0;
 var overlayIE  = document.all ? 1 : 0;
 var overlayNS6 = document.getElementById && !document.all ? 1 : 0;
 
-var overlayDelay=60;
+var overlayPadX = 15;
+var overlayPadY = 5;
+var overlayDelay = 60;
 
 var overlayCorner = 'ur'; // ul, ll, ur, lr, uc, lc, cl, cr
 
@@ -30,8 +32,9 @@ function overlayRefresh() {
     var overlayY = 0;
     var overlayW = 0;
     var overlayH = 0;
-    var overlayPadX = 15;
-    var overlayPadY = 5;
+    var contentH = 0;
+
+    var body = xbGetElementsByName('BODY')[0];
 
     if (overlayIE) {
        overlayLx = document.body.clientWidth;
@@ -45,16 +48,19 @@ function overlayRefresh() {
 
        overlayH  = overlayDiv.offsetHeight;
        overlayW  = overlayDiv.offsetWidth;
+       contentH  = body.offsetHeight;
     } else if (overlayNS4) {
        overlayLy = window.innerHeight;
        overlayLx = window.innerWidth;
        overlayH  = document.overlayDiv.clip.height;
        overlayW  = document.overlayDiv.clip.width;
+       contentH  = body.clip.height;
     } else if (overlayNS6) {
        overlayLy = window.innerHeight;
        overlayLx = window.innerWidth;
        overlayH  = document.getElementById('overlayDiv').offsetHeight;
        overlayW  = document.getElementById('overlayDiv').offsetWidth;
+       contentH  = body.offsetHeight;
     }
 
     if (overlayCorner == 'ul') {
@@ -86,10 +92,18 @@ function overlayRefresh() {
     if (overlayIE) {
        overlayDiv.style.left=overlayX;
        overlayDiv.style.top=overlayY+document.body.scrollTop;
+
+       if (contentH > overlayLy) {
+           overlayDiv.style.visibility = "hidden";
+       }
     } else if (overlayNS4) {
        document.overlayDiv.pageX=overlayX;
        document.overlayDiv.pageY=overlayY+window.pageYOffset;
        document.overlayDiv.visibility="visible";
+
+       if (contentH > overlayLy) {
+           document.overlayDiv.style.visibility = "hidden";
+       }
     } else if (overlayNS6) {
        var div = document.getElementById("overlayDiv");
        var leftpx = overlayX;
@@ -97,6 +111,10 @@ function overlayRefresh() {
 
        div.style.left = leftpx + "px";
        div.style.top = toppx + "px";
+
+       if (contentH > overlayLy) {
+           div.style.visibility = "hidden";
+       }
     }
 }