Mercurial > hg > digilib
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) { |