function cat_ismain(cats, index){ return cats.options[index].text.substring(0,1)=='['; }
function cat_issel(cats, index){ return cats.options[index].className=='selected'; }

function cat_click(cats) {
  var index = cats.selectedIndex;
  if((index < cats.length) && (index >= 0)) {
    if (cat_ismain(cats, index)) {
      var sel = !cat_issel(cats,index)?'selected':'';
      cats.options[index].className=sel;
      for(var i=(index+1); i < cats.length; i++) {
        if (cat_ismain(cats, i)) break;
        cats.options[i].className=sel;
      }
    }else{
      var sel = !cat_issel(cats,index)?'selected':'';
      cats.options[index].className=sel;
      var main;
      for(var i=index; i>=0; i--) {
        if (cat_ismain(cats, i)) {
          main = i; break;
        }
      }
      if (sel=='') {
        for(var i=(main+1); i < cats.length; i++) {
          if (cat_ismain(cats, i)) break;
          if (cat_issel(cats,i)) {
            sel = 'selected'; break;
          }
        }
      } else {
        sel = 'selected';
      }
      cats.options[main].className=sel;
    }
    cats.options[index].selected = false;
  }

  var sel = cats.form.categories;
  sel.value = '';
  for(var i=0; i<cats.length; i++) {
    if (cat_issel(cats,i))
      sel.value += cats.options[i].value + ';';
  }
  cats.selectedIndex = index ; //-1;
}