/**
 * Sticks footer at bottom of entire page.
 *
 * @access  public
 */
function fixFooter()
{
  if (!document.getElementsByTagName)
    return false;

  if (!(document.all && document.all[0].currentStyle))
    return false;
  if (navigator.appVersion.indexOf('Mac') >= 0)
    return false;

  var htmlObj = document.getElementsByTagName('html')[0];
  var bodyObj = document.getElementsByTagName('body')[0];

  var footer = getNode('footer');

  var docHeight  = htmlObj.clientHeight > htmlObj.scrollHeight ? htmlObj.clientHeight : htmlObj.scrollHeight;
  var bodyHeight = bodyObj.clientHeight > bodyObj.scrollHeight ? bodyObj.clientHeight : bodyObj.scrollHeight;

  footer.style.position = 'absolute';
  footer.style.top = ((docHeight > bodyHeight ? docHeight : bodyHeight) - footer.offsetHeight) + 'px';
  footer.style.marginTop = '0px';

  return true;
} // end func fixFooter

var tabMenuNodes = new Array();

function initTabbedMenu(menuId, contentIds)
{
  var menu = getNode(menuId);
  if (!menu)
    return;

  menu.className = 'tabbedMenu';

  var tabLinks = document.createElement('div');
  var tabs = new Array();
  var height = 0;
  for (var i = 1; i < arguments.length; ++i) {
    var tab = getNode(arguments[i] + 'Tab');
    var box = getNode(arguments[i] + 'Box');

    if (!tab || !box)
      continue;

    box.className = 'tabbedBox';
    if (i == 1) {
      tabLinks.innerHTML += '<span class="tabbedLink selected" id="' + arguments[i] + 'Link" onclick="tabbedMenuShow(\'' + arguments[i] + '\')">' + tab.innerHTML + '</span>';
    } else {
      box.style.visibility = 'hidden';
      tabLinks.innerHTML += '<span class="tabbedLink" id="' + arguments[i] + 'Link" onclick="tabbedMenuShow(\'' + arguments[i] + '\')">' + tab.innerHTML + '</span>';
    }

    height = Math.max(height, box.offsetHeight);

    tab.style.display = 'none';
    tabMenuNodes[tabMenuNodes.length] = arguments[i];
  }
  menu.style.height = height + 'px';

  tabLinks.className = 'tabLinks';
  menu.parentNode.insertBefore(tabLinks, menu);
} // initTabbedMenu

function tabbedMenuShow(id)
{
  valid = false;
  for (var i = 0; i < tabMenuNodes.length; ++i) {
    if (tabMenuNodes[i] == id) {
      getNode(tabMenuNodes[i] + 'Box').style.visibility = 'visible';
      getNode(tabMenuNodes[i] + 'Link').className += ' selected';
      valid = true;
    } else {
      getNode(tabMenuNodes[i] + 'Box').style.visibility = 'hidden';
      removeClassName(getNode(tabMenuNodes[i] + 'Link'), 'selected');
    }
  }
  if (!valid)
    getNode(tabMenuNodes[0] + 'Box').style.visibility = 'visible';
}
