comparison client/digitallibrary/baselib.js @ 489:a9d7a406d85e

fixed problem with getwindowsize for safari 3.0.4+
author robcast
date Tue, 22 Jan 2008 15:04:39 +0100
parents ef1519f9cf42
children
comparison
equal deleted inserted replaced
488:13448ca6b2d3 489:a9d7a406d85e
15 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA 15 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
16 16
17 Authors: 17 Authors:
18 Christian Luginbuehl, 01.05.2003 (first version) 18 Christian Luginbuehl, 01.05.2003 (first version)
19 DW 24.03.2004 (Changed for digiLib in Zope) 19 DW 24.03.2004 (Changed for digiLib in Zope)
20 Robert Casties, 2.11.2004 20 Robert Casties, 22.1.2008
21 21
22 */ 22 */
23 23
24 function base_init() { 24 function base_init() {
25 // init function 25 // init function
26 baseScriptVersion = "1.2"; 26 baseScriptVersion = "1.2.4";
27 dlParams = new Object(); 27 dlParams = new Object();
28 browserType = getBrowserType(); 28 browserType = getBrowserType();
29 } 29 }
30 30
31 31
374 374
375 function getElementPosition(elem) { 375 function getElementPosition(elem) {
376 // returns a Position with the position of the element 376 // returns a Position with the position of the element
377 var x = 0; 377 var x = 0;
378 var y = 0; 378 var y = 0;
379 if (defined(elem.offsetLeft)) { 379 if (defined(elem.offsetParent)) {
380 // use .offsetLeft for most browsers
380 var e = elem; 381 var e = elem;
381 while (e) { 382 while (e) {
382 if (defined(e.clientLeft)) { 383 if (browserType.isIE) {
383 // special for IE
384 if (browserType.isMac) { 384 if (browserType.isMac) {
385 // IE for Mac extraspecial
385 if (e.offsetParent.tagName == "BODY") { 386 if (e.offsetParent.tagName == "BODY") {
386 // IE for Mac extraspecial
387 x += e.clientLeft; 387 x += e.clientLeft;
388 y += e.clientTop; 388 y += e.clientTop;
389 break; 389 break;
390 } 390 }
391 } else { 391 } else {
392 // special for IE
392 if ((e.tagName != "TABLE") && (e.tagName != "BODY")) { 393 if ((e.tagName != "TABLE") && (e.tagName != "BODY")) {
393 x += e.clientLeft; 394 x += e.clientLeft;
394 y += e.clientTop; 395 y += e.clientTop;
395 } 396 }
396 } 397 }
398 x += e.offsetLeft; 399 x += e.offsetLeft;
399 y += e.offsetTop; 400 y += e.offsetTop;
400 e = e.offsetParent; 401 e = e.offsetParent;
401 } 402 }
402 } else if (defined(elem.x)) { 403 } else if (defined(elem.x)) {
404 // use .x for other (which?)
403 x = elem.x; 405 x = elem.x;
404 y = elem.y; 406 y = elem.y;
405 } else if (defined(elem.pageX)) { 407 } else if (defined(elem.pageX)) {
408 // use pageX for N4
406 x = elem.pageX; 409 x = elem.pageX;
407 y = elem.pageY; 410 y = elem.pageY;
408 } else { 411 } else {
409 alert("unable to get position of "+elem+" (id:"+elem.id+")"); 412 alert("unable to get position of "+elem+" (id:"+elem.id+")");
410 } 413 }
435 var pos = getElementPosition(elem); 438 var pos = getElementPosition(elem);
436 var size = getElementSize(elem); 439 var size = getElementSize(elem);
437 return new Rectangle(pos.x, pos.y, size.width, size.height); 440 return new Rectangle(pos.x, pos.y, size.width, size.height);
438 } 441 }
439 442
440
441
442 function moveElement(elem, rect) { 443 function moveElement(elem, rect) {
443 // moves and sizes the element 444 // moves and sizes the element
444 if (elem.style) { 445 if (elem.style) {
445 if (defined(rect.x)) { 446 if (defined(rect.x)) {
446 elem.style.left = Math.round(rect.x) + "px"; 447 elem.style.left = Math.round(rect.x) + "px";
482 } 483 }
483 } else { 484 } else {
484 alert("showelement: no style nor layer property!"); 485 alert("showelement: no style nor layer property!");
485 } 486 }
486 return true; 487 return true;
488 }
489
490 function isElementVisible(elem) {
491 // returns of the is shown or hidden
492 if (elem.style) {
493 return (elem.style.visibility == "visible");
494 } else if (defined(elem.visibility)) {
495 return (elem.visibility == "show");
496 } else {
497 alert("iselementvisible: no style nor layer property!");
498 }
487 } 499 }
488 500
489 function evtPosition(evt) { 501 function evtPosition(evt) {
490 // returns the on-screen Position of the Event 502 // returns the on-screen Position of the Event
491 var x; 503 var x;
596 // returns a Size with the current window size (mostly from www.quirksmode.org) 608 // returns a Size with the current window size (mostly from www.quirksmode.org)
597 var wsize = new Size(100, 100); 609 var wsize = new Size(100, 100);
598 if (defined(self.innerHeight)) { 610 if (defined(self.innerHeight)) {
599 // all except Explorer 611 // all except Explorer
600 if ((self.innerWidth == 0)||(self.innerHeight == 0)) { 612 if ((self.innerWidth == 0)||(self.innerHeight == 0)) {
601 // Safari 1.2 bug 613 // Safari 1.2 (and other) bug
602 if (parent) { 614 if (parent) {
603 parent.innerHeight; 615 wsize.height = parent.innerHeight;
604 parent.innerWidth; 616 wsize.width = parent.innerWidth;
605 } 617 }
606 } 618 } else {
607 wsize.width = self.innerWidth; 619 wsize.width = self.innerWidth;
608 wsize.height = self.innerHeight; 620 wsize.height = self.innerHeight;
621 }
609 } else if (document.documentElement && document.documentElement.clientHeight) { 622 } else if (document.documentElement && document.documentElement.clientHeight) {
610 // Explorer 6 Strict Mode 623 // Explorer 6 Strict Mode
611 wsize.width = document.documentElement.clientWidth; 624 wsize.width = document.documentElement.clientWidth;
612 wsize.height = document.documentElement.clientHeight; 625 wsize.height = document.documentElement.clientHeight;
613 } else if (document.body) { 626 } else if (document.body) {