<!-- menu.js $Revision: 1.7 $ -->
// Based on http://simplythebest.net/scripts/
function addItem(level, url, label, target) {
  if (window.menu === undefined) {
    menu = [];
  }
  if (target == undefined) {
    target = '_self'
  }
  menu[menu.length] = new item(level, url, label, target);
}

function item(level, url, label, target) {
  this.level = level
  this.label = label
  this.url = url
  this.target = target
}

function isFolder(index) {
  if (index >= (menu.length - 1)) {
    return false
  }
  return (menu[index + 1].level > menu[index].level)
}

function setImages() {
  for (var i = 0; i < menu.length; i++) {
    if (!isFolder(i)) {
      // update label with link for NOT folder
      menu[i].label = '<a href="' + menu[i].url + '" target="' 
              + menu[i].target + '">' + menu[i].label + '</a>'
    }
    if (isFolder(i)) {
      if (menu[i].expanded) {
        menu[i].pic = '<a href="javascript:toggle(' + i + ')"><img src="img/expanded.gif" border="0" width="11" height="11"></a>'
      } else {
        menu[i].pic = '<a href="javascript:toggle(' + i + ')"><img src="img/collapsed.gif" border="0" width="11" height="11"></a>'
      }
      menu[i].label = '<a href="javascript:toggle(' + i + ')">' + menu[i].label + '</a>'
    } else {
      menu[i].pic = '<img src="img/spacer.gif" border="0" width="11" height="11">'
    }
  }
}

function getCookie(name) {
  var prefix = name + "="
  var cookieStartIndex = document.cookie.indexOf(prefix)
  if (cookieStartIndex == -1) {
    return null
  }
  var cookieEndIndex = document.cookie.indexOf(";", cookieStartIndex + prefix.length)
  if (cookieEndIndex == -1) {
    cookieEndIndex = document.cookie.length
  }
  return unescape(document.cookie.substring(cookieStartIndex + prefix.length, cookieEndIndex))
}

function makeArray(length) {
  this.length = length
}

function setStates() {
  var storedValue = getCookie("menu")
  //document.write('<p>flags=[' + storedValue + ']') // debug
  if (storedValue) {
    for (var i = 0; i < menu.length; i++) {
      if (storedValue.charAt(i) == '1' &&  isFolder(i)) {
        menu[i].expanded = true
      } else {
        menu[i].expanded = false
      }
    }
  }
}

function isVisible(nMenu) {
  if (menu[nMenu].level == 0) {
    return true
  }
  var nParent = getParent(nMenu)
  return (isVisible(nParent) && menu[nParent].expanded)
}

function getParent(nMenu) {
  for (var i = nMenu; i >= 0; i--) {
    if (menu[nMenu].level > menu[i].level) {
      return i;
    }
  }
}

function toggle(nMenu) {
  menu[nMenu].expanded = !menu[nMenu].expanded
  var cookie = ""
  for (var i = 0; i < menu.length; i++) {
    cookie += (menu[i].expanded) ? "1" : "0"
  }
  document.cookie = "menu=" + cookie + ";"
  history.go(0)
}

function dbg() {
  for (var i = 0; i < menu.length; i++) {
    document.write('<p>', menu[i].label, ' ID=', i, ' Level=', menu[i].level)
    document.write(' pID=', getParent(i))
    if (isFolder(i)) {
      document.write(' folder')
      if (menu[i].expanded) {
        document.write(' expanded')
      } else {
        document.write(' collapsed')
      }
    } else {
      document.write(' node')
    }
    if (isVisible(i)) {
      document.write(' visible')
    } else {
      document.write(' hidden')
    }
  } 
}

function displayMenu() {
  setStates()
  setImages()
  //dbg(); // debug
  document.write('<p><table class="bodyStyle">')
  for (var i = 0; i < menu.length; i++) {
    if (isVisible(i)) {
      document.write('<tr><td style="white-space: nowrap">')
      for (var j = 0; j < menu[i].level * 5; j++) {
        document.write('&nbsp;')
      }
      document.write(menu[i].pic, ' ', menu[i].label, '</td></tr>')
    }
  }
  document.write('</table></p>')
}
