| /* ***** BEGIN LICENSE BLOCK ***** |
| * Version: MPL 1.1 |
| * |
| * The contents of this file are subject to the Mozilla Public License Version |
| * 1.1 (the "License"); you may not use this file except in compliance with |
| * the License. You may obtain a copy of the License at |
| * http://www.mozilla.org/MPL/ |
| * |
| * Software distributed under the License is distributed on an "AS IS" basis, |
| * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License |
| * for the specific language governing rights and limitations under the |
| * License. |
| * |
| * The Original Code is the Cross Platform JavaScript Utility Library. |
| * |
| * The Initial Developer of the Original Code is |
| * Everything Solved. |
| * Portions created by the Initial Developer are Copyright (C) 2007 |
| * the Initial Developer. All Rights Reserved. |
| * |
| * Contributor(s): |
| * Max Kanat-Alexander <mkanat@bugzilla.org> |
| * Christopher A. Aillon <christopher@aillon.com> |
| * |
| * ***** END LICENSE BLOCK ***** */ |
| |
| /** |
| * Locate where an element is on the page, x-wise. |
| * |
| * @param obj Element of which location to return. |
| * @return Current position of the element relative to the left of the |
| * page window. Measured in pixels. |
| */ |
| function bz_findPosX(obj) |
| { |
| var curleft = 0; |
| |
| if (obj.offsetParent) { |
| while (obj) { |
| curleft += obj.offsetLeft; |
| obj = obj.offsetParent; |
| } |
| } |
| else if (obj.x) { |
| curleft += obj.x; |
| } |
| |
| return curleft; |
| } |
| |
| /** |
| * Locate where an element is on the page, y-wise. |
| * |
| * @param obj Element of which location to return. |
| * @return Current position of the element relative to the top of the |
| * page window. Measured in pixels. |
| */ |
| function bz_findPosY(obj) |
| { |
| var curtop = 0; |
| |
| if (obj.offsetParent) { |
| while (obj) { |
| curtop += obj.offsetTop; |
| obj = obj.offsetParent; |
| } |
| } |
| else if (obj.y) { |
| curtop += obj.y; |
| } |
| |
| return curtop; |
| } |
| |
| /** |
| * Get the full height of an element, even if it's larger than the browser |
| * window. |
| * |
| * @param fromObj Element of which height to return. |
| * @return Current height of the element. Measured in pixels. |
| */ |
| function bz_getFullHeight(fromObj) |
| { |
| var scrollY; |
| |
| // All but Mac IE |
| if (fromObj.scrollHeight > fromObj.offsetHeight) { |
| scrollY = fromObj.scrollHeight; |
| // Mac IE |
| } else { |
| scrollY = fromObj.offsetHeight; |
| } |
| |
| return scrollY; |
| } |
| |
| /** |
| * Get the full width of an element, even if it's larger than the browser |
| * window. |
| * |
| * @param fromObj Element of which width to return. |
| * @return Current width of the element. Measured in pixels. |
| */ |
| function bz_getFullWidth(fromObj) |
| { |
| var scrollX; |
| |
| // All but Mac IE |
| if (fromObj.scrollWidth > fromObj.offsetWidth) { |
| scrollX = fromObj.scrollWidth; |
| // Mac IE |
| } else { |
| scrollX = fromObj.offsetWidth; |
| } |
| |
| return scrollX; |
| } |
| |
| /** |
| * Causes a block to appear directly underneath another block, |
| * overlaying anything below it. |
| * |
| * @param item The block that you want to move. |
| * @param parent The block that it goes on top of. |
| * @return nothing |
| */ |
| function bz_overlayBelow(item, parent) { |
| var elemY = bz_findPosY(parent); |
| var elemX = bz_findPosX(parent); |
| var elemH = parent.offsetHeight; |
| |
| item.style.position = 'absolute'; |
| item.style.left = elemX + "px"; |
| item.style.top = elemY + elemH + 1 + "px"; |
| } |
| |
| /** |
| * Checks if a specified value is in the specified array. |
| * |
| * @param aArray Array to search for the value. |
| * @param aValue Value to search from the array. |
| * @return Boolean; true if value is found in the array and false if not. |
| */ |
| function bz_isValueInArray(aArray, aValue) |
| { |
| var run = 0; |
| var len = aArray.length; |
| |
| for ( ; run < len; run++) { |
| if (aArray[run] == aValue) { |
| return true; |
| } |
| } |
| |
| return false; |
| } |