function _gel(a)
{ return document.getElementById ? document.getElementById(a) : null; }

function getTreeNodeObj(NodeID, NodeValue, ParentNodeID)
{ this.ID = NodeID; this.Value = NodeValue; this.ParentID = ParentNodeID; }

function PreSelect()
{
 var preSelected1 = new Array();
 var preSelected2 = new Array();
 var preSelected3 = new Array();

 preSelected1[preSelected1.length] = 0;
 if (_gel('lbxTree1'))
  setPreselected(_gel('lbxTree1'), preSelected1);
 preSelected2[preSelected2.length] = 0;
 if (_gel('lbxTree2'))
  setPreselected(_gel('lbxTree2'), preSelected2);
 preSelected3[preSelected3.length] = 0;
 if (_gel('lbxTree3'))
  setPreselected(_gel('lbxTree3'), preSelected3);
}

function setPreselected(sel, arr)
{
 if (!sel || !arr || !arr.length)
  return;

 for (var i = 0; i < sel.options.length; ++i)
  for (var j = 0; j < arr.length; ++j)
   if (sel.options[i].value == arr[j])
   {
    sel.options[i].selected = true;
    break;
   }

 sel.onchange();
}

function LoadSelects(Source, Level)
{
 var selID = Level + 1;
 var sel = _gel('lbxTree' + selID);
 if (!sel) return;

 var sel2 = _gel('lbxTree2');
 var sel3 = _gel('lbxTree3');
 var sel4 = _gel('lbxTree4');

 switch(Level)
 {
  case 1: if (sel2) sel2.options.length = sel4 ? 1 : 0;
  case 2: if (sel3) sel3.options.length = sel4 ? 1 : 0;
  case 3: if (sel4)
          {
           sel4.options.length = 0;
           sel4.options[0] = new Option('<Select Vendor>', '-');
           ParentName = ['Category', 'Section', 'SubSection', 'Vendor'];
           for(i = Level; i < 3; i++)
            eval('sel'+(parseInt(i)+1)).options[0] = new Option('<Select '+ParentName[Level]+'>', '-');
          }
 }

 var selected = new Array();
 if (Source)
  for (var i = 0; i < Source.options.length; ++i)
   if (Source.options[i].value != '0' && Source.options[i].selected)
    selected[selected.length] = Source.options[i].value;

 if (Source && !selected.length) return;

 for (var i = 0; i < arr.length; ++i)
 {
  var ptype = arr[i];
  if (!Source && !ptype.ParentID)
   sel.options[sel.options.length] = new Option(ptype.Value, ptype.ID);
  else
   for (var j = 0; j < selected.length; ++j)
    if (ptype.ParentID == selected[j])
     sel.options[sel.options.length] = new Option(ptype.Value, ptype.ID);
 }

 if(sel4)
  for (var i = 0; i < arrVnd.length; ++i)
  {
   var ptype = arrVnd[i];
   if ((!Source || (Source.id == 'lbxTree1' && Source.selectedIndex == 0)) && !ptype.ParentID)
    sel4.options[sel4.options.length] = new Option(ptype.Value, ptype.ID);
   else
    for (var j = 0; j < selected.length; ++j)
     if (ptype.ParentID == selected[j])
      sel4.options[sel4.options.length] = new Option(ptype.Value, ptype.ID);
  }

 if (Source && Level && sel && sel.options.length == 0) sel.length = 0;
 if (Level <= 0 && !sel4) PreSelect();
}