--- zogiLib/js/baselib.js 2005/11/08 10:13:31 1.5 +++ zogiLib/js/baselib.js 2007/09/11 15:40:30 1.8 @@ -17,13 +17,13 @@ Foundation, Inc., 59 Temple Place - Suit Authors: Christian Luginbuehl, 01.05.2003 (first version) DW 24.03.2004 (Changed for digiLib in Zope) - Robert Casties, 2.11.2004 + Robert Casties, 11.9.2007 */ function base_init() { // init function - baseScriptVersion = "1.1c"; + baseScriptVersion = "1.2.2"; dlParams = new Object(); browserType = getBrowserType(); } @@ -289,10 +289,10 @@ function getParameter(name) { } } -function setParameter(name, value, literal) { +function setParameter(name, value, relative) { // sets parameter value (relative values with +/- unless literal) if (defined(dlParams[name])) { - if ((! literal)&&(value.slice)) { + if ((relative)&&(value.slice)) { var sign = value.slice(0,1); if (sign == '+') { dlParams[name].value = parseFloat(dlParams[name].value) + parseFloat(value.slice(1)); @@ -321,11 +321,11 @@ function hasParameter(name) { function getAllParameters(detail) { // returns a string of all parameters in query format if (! detail) { - detail = 10; + detail = 255; } var params = new Array(); - for ( param in dlParams ) { - if ((dlParams[param].detail <= detail)&&(dlParams[param].hasValue)) { + for (param in dlParams) { + if (((dlParams[param].detail & detail) > 0)&&(dlParams[param].hasValue)) { var val = getParameter(param); if (val != "") { params.push(param + "=" + val); @@ -376,19 +376,20 @@ function getElementPosition(elem) { // returns a Position with the position of the element var x = 0; var y = 0; - if (defined(elem.offsetLeft)) { + if (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 @@ function getElementPosition(elem) { 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 @@ function getElementRect(elem) { 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 @@ function showElement(elem, show) { 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;