// xMenu5, Copyright 2004,2005 Michael Foster (Cross-Browser.com)
// Part of X, a Cross-Browser Javascript Library, Distributed under the terms of the GNU LGPL

function xMenu5(idUL, btnClass, labelClass, linkClass, idAutoOpen) // object prototype
{
  // Constructor

  var i, ul, btns, mnu = xGetElementById(idUL);
  btns = xGetElementsByClassName(btnClass, mnu, 'DIV');
  for (i = 0; i < btns.length; ++i) {
    ul = xNextSib(btns[i], 'UL');
    btns[i].xClpsTgt = ul;
    btns[i].onclick = btn_onClick;
    set_display(btns[i], 0);
  }
  btnLinks = xGetElementsByClassName(linkClass, mnu, 'A');
  for (i = 0; i < btnLinks.length; ++i) {
    ul = xNextSib(btnLinks[i], 'UL');
    btnLinks[i].xClpsTgt = ul;
    btnLinks[i].onclick = btn_onClick;
    set_display(btnLinks[i], 0);
  }
  btnLabels = xGetElementsByClassName(labelClass, mnu, 'DIV');
  for (i = 0; i < btnLabels.length; ++i) {
    ul = xNextSib(btnLabels[i], 'UL');
    btnLabels[i].xClpsTgt = ul;
    btnLabels[i].onclick = btn_onClick;
    set_display(btnLabels[i], 0);
  }
  
  xShow(mnu);
//  if (idAutoOpen) {
//    var e = xGetElementById(idAutoOpen);
//    while (e && e != mnu) {
//      if (e.xClpsTgt) set_display(e, 1);
//      while (e && e != mnu && e.nodeName != 'LI') e = e.parentNode;
//      e = e.parentNode; // UL
//      while (e && !e.xClpsTgt) e = xPrevSib(e);
//    }
//  }

  // Private
  
  function btn_onClick()
  {
    var thisLi, fc, pUl;
    var mainLink = xGetElementById('mainLink');
    var mainLink2 = xGetElementById('mainLink2');
    if (this.xClpsTgt.style.display == 'none') {
      if (this == mainLink || this == mainLink2) {
      	set_display(this, 1, 1);
      } else {
      	set_display(this, 1);
      }
      // get this label's parent LI
      var li = this.parentNode;
      thisLi = li;
      pUl = li.parentNode; // get this LI's parent UL
      li = xFirstChild(pUl); // get the UL's first LI child
      // close all labels' ULs on this level except for thisLI's label
      while (li) {
        if (li != thisLi) {
          fc = xFirstChild(li);
          if (fc && fc.xClpsTgt) {
            set_display(fc, 0);
          }
        }
        li = xNextSib(li);
      }
    }  
    else {
      if (this == mainLink || this == mainLink2) {
      	set_display(this, 0, 1);
      } else {
      	set_display(this, 0);
      }
      
    }
  }

  function set_display(ele, bBlock, dontChgName)
  {
    if (bBlock) {
      ele.xClpsTgt.style.display = 'block';
    }
    else {
      ele.xClpsTgt.style.display = 'none';
            
    }
  }

  // Public

  this.onUnload = function()
  {
    for (i = 0; i < btns.length; ++i) {
      btns[i].xClpsTgt = null;
      btns[i].onclick = null;
    }
  }
} // end xMenu5 prototype


