  // Functions
  function ValidateSearch() {
    var f = document.listmenu0;
    var s = f.firstlevel;
    var s2= f.secondlevel;
    var s3= f.thirdlevel;
    if (s.selectedIndex == 0) { alert('Please select a category to search.'); return false; }
    f.submit();
  }
  
  function SetSelected(id1, id2, id3) {
    var f = document.listmenu0;
    var s = f.firstlevel;
    var s2= f.secondlevel;
    var s3= f.thirdlevel;
    if (id1 != -1) { 
    	s.selectedIndex = id1;
    	s2.disabled=false;
      populateList2();
      if (id2 != -1) {
      	 // select value
      	 for (var i=0; i<s2.options.length; i++) {
      	 	if (s2.options[i].value == id2) { s2.options.selectedIndex = i; } 
      	 } 
      	 s3.disabled=false;
         populateList3(); 
      	 if (id3 != -1) {
      	 	// select value
          for (var i=0; i<s3.options.length; i++) {
            if (s3.options[i].value == id3) { s3.options.selectedIndex = i; } 
          }       	 	
      	 } else {
      	 	 s3.selectedIndex = 0;
      	 }   	 
      } else {
         s2.selectedIndex = 0;
      }          	 
    }
  }
  
  function clearList(list) {
    for (var i=list.options.length-1; i>=0; i--) { list.options[i]=null; } 
  }
  
  function populateList1() {
    var f = document.listmenu0;
    var s = f.firstlevel;
    var s2 = f.secondlevel;
    var s3 = f.thirdlevel;    
    clearList(s);
    s.options[0] = new Option('Select a category');
    s.selectedIndex = 0;
    s2.disabled=true;
    s3.disabled=true;
    for (i=0; i<firstlevel.length; i++) {
      s.options[i+1] = new Option(firstlevel[i].name, firstlevel[i].id1);
    }
  }
    
  function populateList2() {
    var f = document.listmenu0;
    var s1 = f.firstlevel;
    var s = f.secondlevel;
    clearList(s);
    ctr = 0;
    for (i=0; i<secondlevel.length; i++) {
      if (secondlevel[i].id1 == s1.options[s1.selectedIndex].value) {
        s.options[ctr+1] = new Option(secondlevel[i].name, secondlevel[i].id2);
        ctr++;
      }
    }
    if (ctr>0) {
      s.options[0] = new Option('Select a subcategory');
      s.disabled=false;
      s.selectedIndex = 0;
    } else {
      s.options[0] = new Option('No subcategory');
      s.disabled=true;
    }
    
    // Clear next level
    var s3 = f.thirdlevel;
    clearList(s3);
    s3.selectedIndex = 0;    
    s3.disabled=true;    
  }

  function populateList3() {
    var f = document.listmenu0;
    var s2 = f.secondlevel;
    var s = f.thirdlevel;
    clearList(s);
    ctr = 0;
    for (i=0; i<thirdlevel.length; i++) {
      if (thirdlevel[i].id2 == s2.options[s2.selectedIndex].value) {      
        s.options[ctr+1] = new Option(thirdlevel[i].name, thirdlevel[i].id3);
        ctr++;
      }
    }
    if (ctr>0) {
      s.options[0] = new Option('Select a subcategory');
      s.disabled=false;     
      s.selectedIndex = 0;
    } else {
      s.options[0] = new Option('No subcategory');
      s.disabled=true;    
    }
  }

  // Define Objects
  function first_level(name, id1) {
    this.name = name;
    this.id1 = id1;
  }
  
  function second_level(name, id2, id1) {
    this.name = name;
    this.id2 = id2;
    this.id1 = id1;
  }
  
  function third_level(name, id3, id2, id1) {
    this.name = name;
    this.id3 = id3;
    this.id2 = id2;
    this.id1 = id1;
  }
  
  function pushValue1(name, id1) {
    var newitem = new first_level(name, id1);
    firstlevel.push(newitem);
  }
  
  function pushValue2(name, id2, id1) {
    var newitem = new second_level(name, id2, id1);
    secondlevel.push(newitem);
  }

  function pushValue3(name, id3, id2, id1) {
    var newitem = new third_level(name, id3, id2, id1);
    thirdlevel.push(newitem);
  }

  var firstlevel = new Array;
  var secondlevel = new Array;
  var thirdlevel = new Array;
