changeset 493:d989a93d773b

fixed problem with getwindowsize for safari 3.0.4+
author robcast
date Tue, 22 Jan 2008 15:04:39 +0100
parents d09c9b1db0cb
children 43509321f9d2
files client/digitallibrary/baselib.js
diffstat 1 files changed, 26 insertions(+), 13 deletions(-) [+]
line wrap: on
line diff
--- a/client/digitallibrary/baselib.js	Thu Aug 02 19:22:47 2007 +0200
+++ b/client/digitallibrary/baselib.js	Tue Jan 22 15:04:39 2008 +0100
@@ -17,13 +17,13 @@
 Authors: 
   Christian Luginbuehl, 01.05.2003 (first version)
   DW 24.03.2004 (Changed for digiLib in Zope)
-  Robert Casties, 2.11.2004
+  Robert Casties, 22.1.2008
 
 */
 
 function base_init() {
     // init function
-    baseScriptVersion = "1.2";
+    baseScriptVersion = "1.2.4";
     dlParams = new Object();
     browserType = getBrowserType();
 }
@@ -376,19 +376,20 @@
     // returns a Position with the position of the element
     var x = 0;
     var y = 0;
-    if (defined(elem.offsetLeft)) {
+    if (defined(elem.offsetParent)) {
+        // use .offsetLeft for most browsers
         var e = elem;
         while (e) {
-            if (defined(e.clientLeft)) {
-                // special for IE
+            if (browserType.isIE) {
                 if (browserType.isMac) {
+                    // IE for Mac extraspecial
                     if (e.offsetParent.tagName == "BODY") {
-                        // IE for Mac extraspecial
                         x += e.clientLeft;
                         y += e.clientTop;
                         break;
                     }
                 } else {
+                    // special for IE
                     if ((e.tagName != "TABLE") && (e.tagName != "BODY")) {
                         x += e.clientLeft;
                         y += e.clientTop;
@@ -400,9 +401,11 @@
             e = e.offsetParent;
         }
     } else if (defined(elem.x)) {
+        // use .x for other (which?)
         x = elem.x;
         y = elem.y;
     } else if (defined(elem.pageX)) {
+        // use pageX for N4
         x = elem.pageX;
         y = elem.pageY;
     } else {
@@ -437,8 +440,6 @@
     return new Rectangle(pos.x, pos.y, size.width, size.height);
 }
 
-
-
 function moveElement(elem, rect) {
     // moves and sizes the element
     if (elem.style) {
@@ -486,6 +487,17 @@
     return true;
 }
 
+function isElementVisible(elem) {
+    // returns of the is shown or hidden
+    if (elem.style) {
+        return (elem.style.visibility == "visible");
+    } else if (defined(elem.visibility)) {
+        return (elem.visibility == "show");
+    } else {
+        alert("iselementvisible: no style nor layer property!");
+    }
+}
+
 function evtPosition(evt) {
     // returns the on-screen Position of the Event 
     var x;
@@ -598,14 +610,15 @@
     if (defined(self.innerHeight))  {
         // all except Explorer
         if ((self.innerWidth == 0)||(self.innerHeight == 0)) {
-            // Safari 1.2 bug
+            // Safari 1.2 (and other) bug
             if (parent) {
-                parent.innerHeight;
-                parent.innerWidth;
+                wsize.height = parent.innerHeight;
+                wsize.width = parent.innerWidth;
             }
+        } else {
+            wsize.width = self.innerWidth;
+            wsize.height = self.innerHeight;
         }
-        wsize.width = self.innerWidth;
-        wsize.height = self.innerHeight;
     } else if (document.documentElement && document.documentElement.clientHeight) {
         // Explorer 6 Strict Mode
         wsize.width = document.documentElement.clientWidth;