157 lines
3.8 KiB
JavaScript
157 lines
3.8 KiB
JavaScript
|
/* ***** 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;
|
||
|
}
|