function LeftNav() {
  var self = this;
  this.nav = null;
  this.items = null;
  this.lastItem = null;
  this.onclickHandler = function() {
    // "this" scoped within <li> element
    var hasChildren = this.getElementsByTagName('ul').length>0?'hasChildren ':''; // selectively prepend "hasChildren" class
    this.className = (this.className.indexOf('selected')+1?'':hasChildren+'selected');
    if (self.lastItem && self.lastItem != this) self.lastItem.className = '';
    writeDebug('LeftNav.onclickHandler(): class="'+this.className+'"');
    self.lastItem = this;
    try {
      this.getElementsByTagName('a')[0].blur();
    } catch(e) {
      // blur not supported (nn6)
    }
    return false;
  }
  
  this.cancelBubble = function(e) {
    if (this.href.toString().indexOf('#')+1) return false; // allow "#" links to pass
    writeDebug('LeftNav().cancelBubble()');
    e?e.stopPropagation():event.cancelBubble = true;
  }
  
  this.init = function() {
    writeDebug('LeftNav.init()');
    self.nav = document.getElementById('nav-left');
    if (!self.nav) {
      writeDebug('LeftNav.init(): Could not find #nav-left');
      return false;
      self.items = self.nav.getElementsByTagName('ul')[0].childNodes;
      for (var i=0; i<self.items.length; i++) {
        if (self.items[i].nodeName.toLowerCase()=='li') {
          if (self.items[i].className && self.items[i].className.indexOf('selected')+1) {
            self.lastItem = self.items[i];
            if (self.items[i].getElementsByTagName('ul').length>0) self.items[i].className = 'hasChildren ' + self.items[i].className; // prepend "hasChildren" class if applicable
          }
          self.items[i].onclick = self.onclickHandler;
          var links = self.items[i].getElementsByTagName('a');
          for (var j=0; j<links.length; j++) {
            // prevent sub-nav elements from allowing event bubbling up, causing parent to close
            if (links[j].href.toString().indexOf('#')==-1) links[j].onclick = self.cancelBubble;
          }
        }
      }
	  }
  }
}

var leftNav = new LeftNav();

addOnloadHandler(leftNav.init);
