
var sel=new Array();
var opts=new Array();
function setup(formname,datasource,oneatatime,root){
 sel[formname]=new Array();
 sel[formname][0]=document.forms[formname].cat0;
 sel[formname][1]=document.forms[formname].cat1;
 sel[formname][2]=document.forms[formname].cat2;
 opts[formname]=new Array();
 opts[formname]['oneatatime']=oneatatime;
 opts[formname]['datasource']=datasource;
 fill_cat_box(formname,0,'0',root);
}
function changies(formname,me){
 var parent=sel[formname][me].options[sel[formname][me].options.selectedIndex].value;
 var text=sel[formname][me].options[sel[formname][me].options.selectedIndex].text;
 if(parent==0){
  show_only(formname,me);
 }
 else if(parent==-1){
  me--;
  if(me==0)
   sel[formname][me].options.selectedIndex=0;
  else
   sel[formname][me].options.selectedIndex=1;
  show_only(formname,me);
 }
 else if(opts[formname]['datasource'][parent]){
  if(text.charAt(0)!='(')
   fill_cat_box(formname,me+1,parent,"("+text+")");
  else
   show_only(formname,me);
 }
 else
  show_only(formname,me);
}
function fill_cat_box(formname,me,parent,base){
 sel[formname][me].options.length=0;
 var def=sel[formname][me].options.length;
 sel[formname][me].options[def] = new Option(base,parent);
 var i=0;
 while(i<opts[formname]['datasource'][parent].length){
  var parts=opts[formname]['datasource'][parent][i].split(";");
  sel[formname][me].options[sel[formname][me].options.length] = new Option(parts[1],parts[0]);
  i++;
 }
 sel[formname][me].options.selectedIndex=def;
 sel[formname][me].style.display='inline';
 show_only(formname,me);
}
function show_only(formname,me){
 var i=0;
 while(i<3){
  if(i>me){
   sel[formname][i].options.length=0;
   sel[formname][i].style.display='none';
  }
  else if(i<me){
   if(opts[formname]['oneatatime']==1)
    sel[formname][i].style.display='none';
  }
  else
   sel[formname][i].style.display='inline';
  i++;
 }
}
function select_cat(formname,me,val){
 var i=0;
 while(i<sel[formname][me].options.length){
  if(sel[formname][me].options[i].value==val){
   sel[formname][me].options.selectedIndex=i;
   changies(formname,me);
   break;
  }
  i++;
 }
}
