/* * The MIT License * * Copyright (c) 2004-2009, Sun Microsystems, Inc., Kohsuke Kawaguchi * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ UTILITIES_VERSION = 0.1; /** * I'm nothing more than a collection of static utility methods for * doing various things. */ function Utilities() {} /** * I remove all the children of the specified parent node. * * @param parent The node whose children should be removed */ Utilities.removeChildren = function(parent) { for (var i = parent.childNodes.length - 1; i >= 0; i--) { parent.removeChild(parent.childNodes[i]); } } /** * I return an object with an x and y fields, indicating the object's * offset from the top left corner of the document. The 'offsets' * argument is optional; if not provided, one will be initialized and * used. It is exposed as a parameter because it can be useful for * computing deltas. The 'object' parameter can be either an actual * document element, or the ID of one. * * @param object The object to compute the offset of. May be an object * or the ID of one. * @param offsets The starting offsets to calculate from. In almost * all cases, this should be omitted. * @return An offsets object with x and y fields, indicating the * computed offsets for the object. If an offsets object is * passed, that will be the object returned, though the values * will have been changed. */ Utilities.getOffsets = function(object, offsets) { if (! offsets) { offsets = new Object(); offsets.x = offsets.y = 0; } if (typeof object == "string") object = document.getElementById(object); offsets.x += object.offsetLeft; offsets.y += object.offsetTop; do { object = object.offsetParent; if (! object) break; offsets.x += object.offsetLeft; offsets.y += object.offsetTop; } while(object.tagName.toUpperCase() != "BODY"); return offsets; } /** * */ Utilities.listAppend = function(list, value, delimiter) { if (typeof delimiter == "undefined") delimiter = ","; if (list == "") return value; else return list + delimiter + value; }