// -------------------------------------------- wChainSelect ------------------------------

var alloptions = new Array();
var options_maincat = new Array();
var emptySelectCaption = "";
var emptySelectValue   = "";

// Return list of maincat
function findMaincat(sa, sv) {
  var retval = new Array();
  for( i = 0; i < sa.length; i++) {
    if (sa[i].caption == sv)
      retval[retval.length] = sa[i].maincat;
  }
  return retval;
}

function findIndex(sa,sv) {
  var retval = -1;
  for (i = 0; i < sa.length; i++) {
    if (sa[i] == sv) retval = i;
  }
  return retval;
}

function wChainSelectUpdateParent(c, p, b) {
// document.getElementById('debug').innerHTML = "UpdateParent <br />";
   var j = 0;
   var pv = p.options[p.selectedIndex];
   pv = pv.value;
   var cv = c.options[c.selectedIndex];
   ct = cv.text;
   cv = cv.value.split("@")[0];
   p.options.length = 0;
//   p.options[p.options.length]=new Option(emptySelectCaption, emptySelectValue);
   p.options[0] = new Option( options_maincat[b][0].caption, options_maincat[b][0].maincat);
   if (cv>0){
     var maincat_list = findMaincat(alloptions[b], ct);
     for ( j = 1; j < options_maincat[b].length; j++ ) {
       var cur_index = -1;
       cur_index = findIndex(maincat_list, options_maincat[b][j].maincat);
       if ((cur_index >= 0) || (options_maincat[b][j].maincat == pv)) { 
         p.options[p.options.length]=new Option(options_maincat[b][j].caption, options_maincat[b][j].maincat);
// document.getElementById('debug').innerHTML += p.options.length +"="+ options_maincat[b][j].caption +":"+ p.options[p.options.length-1].value +"<br />";
       }
       if (options_maincat[b][j].maincat == pv) { p.selectedIndex = p.options.length-1; }
     }
   }
   else {
     for ( j = 1; j < options_maincat[b].length; j++ ) {
         p.options[p.options.length]=new Option(options_maincat[b][j].caption, options_maincat[b][j].maincat);
         if (options_maincat[b][j].maincat == pv) { p.selectedIndex = p.options.length-1; }
       }
   }
   if (p.options.length == 2) { p.options.selectedIndex = 1; }
// document.getElementById('debug').innerHTML += "<br />"+p.options.length+"<pre>"+db_DumpTree(p.innerHTML,'')+"</pre>";
}

function wChainSelectUpdateChild(p,subcat,b) {
   var pv = p.options[p.selectedIndex];
   pv = pv.value;
   var cv = subcat.options[subcat.selectedIndex];
   cv = cv.value;
   subcat.options.length=0
//   subcat.options[subcat.options.length]=new Option(emptySelectCaption, emptySelectValue);
   subcat.options[0] = new Option( alloptions[b][0].caption, alloptions[b][0].maincat);
   if (pv != "" ){
     for ( i = 1; i < alloptions[b].length; i++ ) {
       if (alloptions[b][i].maincat == pv) {
         subcat.options[subcat.options.length]=new Option(alloptions[b][i].caption, alloptions[b][i].subcat+"@"+pv);
       }
       if (alloptions[b][i].subcat == cv.split("@")[0]) { subcat.selectedIndex = subcat.options.length-1; }
     }
   }
   else {
     for ( i = 1; i < alloptions[b].length; i++ ) {
         subcat.options[subcat.options.length]=new Option(alloptions[b][i].caption, alloptions[b][i].subcat+"@"+pv);
         if (alloptions[b][i].subcat == cv.split("@")[0]) { subcat.selectedIndex = subcat.options.length-1;  }
     }
   }
   if (subcat.options.length == 2) { subcat.options.selectedIndex = 1; }
}

function wChainSelectSaveParentOptions(p,b)
{
  options_maincat[b] = new Array();
  for(i = 0; i < p.length; i++)
  {
    cat_value = p.options[i].value;
    cat_text = p.options[i].text;
    maincat = cat_value;
    subcat  = 0;
    var o = options_maincat[b][options_maincat[b].length] = new Object();
    o.caption = cat_text;
    o.maincat = maincat;
    o.subcat  = subcat;
  }
}

function wChainSelectSaveChildOptions(p,b)
{
  alloptions[b] = new Array();
  for(i = 0; i < p.length; i++)
  {
    cat_value = p.options[i].value;
    cat_text = p.options[i].text;
    maincat = cat_value.split("@")[1];
    subcat  = cat_value.split("@")[0];
    var o = alloptions[b][alloptions[b].length] = new Object();
    o.caption = cat_text;
    o.maincat = maincat;
    o.subcat  = subcat;
  }
}

function wChainSelectInitialize(p,c,b)
{
  wChainSelectSaveChildOptions(c,b); wChainSelectSaveParentOptions(p,b);
}

//-->
