// return next ul sibling from node
function nextUl(node)
{
  while (node != null && (node.tagName == null || node.tagName.toUpperCase() != "UL"))
  {
    node = node.nextSibling;
  }

  return node;
}

// from http://www.sitepoint.com/article/structural-markup-javascript
function addEvent(obj, evType, fn)
{
  if (obj.addEventListener)
  {
    obj.addEventListener(evType, fn, false);
    return true;
  }
  else
  if (obj.attachEvent)
  {
    var r = obj.attachEvent("on"+evType, fn);
    return r;
  }
  else
  {
    return false;
  }
}

function addLoadListener(fn)
{
  if (addEvent(window, 'load', fn) == false)
  {
    return addEvent(document, 'load', fn)
  }
  return true;
}
