Initial patch.
[vuplus_webkit] / Websites / bugs.webkit.org / js / util.js
diff --git a/Websites/bugs.webkit.org/js/util.js b/Websites/bugs.webkit.org/js/util.js
new file mode 100644 (file)
index 0000000..ce7ea4c
--- /dev/null
@@ -0,0 +1,156 @@
+/* ***** 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;
+}