//*****************************************************************************// Do not remove this notice.//// Copyright 2000-2004 by Mike Hall.// See http://www.brainjar.com for terms of use.//*****************************************************************************//----------------------------------------------------------------------------// General utility functions.//----------------------------------------------------------------------------function getContainerWith(node, tagName, className) {  // Starting with the given node, find the nearest containing element  // with the specified tag name and style class.  while (node != null) {    if (node.tagName != null && node.tagName == tagName &&        hasClassName(node, className))      return node;    node = node.parentNode;  }  return node;}function hasClassName(el, name) {  var i, list;  // Return true if the given element currently has the given class  // name.  list = el.className.split(" ");  for (i = 0; i < list.length; i++)    if (list[i] == name)      return true;  return false;}function removeClassName(el, name) {  var i, curList, newList;  if (el.className == null)    return;  // Remove the given class name from the element's className property.  newList = new Array();  curList = el.className.split(" ");  for (i = 0; i < curList.length; i++)    if (curList[i] != name)      newList.push(curList[i]);  el.className = newList.join(" ");}function getPageOffsetLeft(el) {  var x;  // Return the x coordinate of an element relative to the page.  x = el.offsetLeft;  if (el.offsetParent != null)    x += getPageOffsetLeft(el.offsetParent);  return x;}function getPageOffsetTop(el) {  var y;  // Return the x coordinate of an element relative to the page.  y = el.offsetTop;  if (el.offsetParent != null)    y += getPageOffsetTop(el.offsetParent);  return y;}
