var isIE = navigator.userAgent.indexOf('MSIE') > 1;

delayUntilPageLoad();

function delayUntilPageLoad() {
  if (document.getElementsByTagName('body')[0])
    setupCollapsibles();
  else window.setTimeout("delayUntilPageLoad();", 20);
}

function addEvent(element, event, handler, capture) {
  if (element.addEventListener) {
    element.addEventListener(event, handler, capture);
  }
  else if (element.attachEvent) {
    element.attachEvent('on' + event, handler);
  }
}

function log (msg) {
  var logDiv = document.getElementById('logArea');
  if (!logDiv) return 0;
  logDiv.innerHTML += 'log: [ ' + msg + ' ]<br />';
}

function toggleVis(elm, how) {
  var how = how || 'table-row-group';
  if (elm.style.display != 'none')
    elm.style.display = 'none';
  else elm.style.display = how;
}

function toggleTable(obj) {
  var tbody = obj.tBodies[0];
  var thead = obj.tHead;
  toggleVis(tbody, isIE ? 'block' : 'table-row-group');
  if (thead) toggleVis(thead, isIE ? 'block' : 'table-row-group');

  if (isIE) {
    if (obj.style.borderStyle == 'none')
         obj.style.borderStyle = 'solid';
    else obj.style.borderStyle = 'none';
  }
}

function toggleImage(img) {
  img.expanded = !img.expanded;
  img.src      = img.expanded ? 'img/close.gif' : 'img/open.gif';
  img.title    = img.expanded ? 'Collapse this table'    : 'Expand this table';
}

function setupCollapsibles() {
  var tables = document.getElementsByTagName('table');
  for (var i=0; i < tables.length; ++i) {
    var cap = tables[i].getElementsByTagName('caption')[0];
    var img = document.createElement('img');
    img.className = 'noprint';
    img.src = 'img/close.gif';
    img.title = 'Collapse this table';
    img.align = 'right';
    img.expanded = true;
    img.onclick = function(obj,img) {
      return function() { toggleTable(obj); toggleImage(img) }
    }(tables[i],img);
    cap.insertBefore(img, cap.firstChild);
  }
}
