function $RF(el, radioGroup) {
	if ($(el) == null) return null;
    if($(el).type && $(el).type.toLowerCase() == 'radio') {
        var radioGroup = $(el).name;
        var el = $(el).form;
    } else if ($(el).tagName.toLowerCase() != 'form') {
        return false;
    }
 
    var checked = $(el).getInputs('radio', radioGroup).find(
        function(re) {return re.checked;}
    );
    return (checked) ? $F(checked) : null;
}

function updatePanels(form) {
  var f1 = $RF('f1');
  var f2 = $RF('f2');
  var f3 = $RF('f3');
  var f4 = $RF('f4');
  var f5 = $RF('f5');
  var f6 = $RF('f6');

// fill the list
  var items = new Array();
  for (i = 0; i < keys.length; i++) {
	items[keys[i]] = 1;
  }
	
  for (i = 0; i < keys.length; i++) {
    var sk = keys[i];
	items[sk] = f1 & val[sk]['v1'];
	if (items[sk] != 0 && f2 != null) items[sk] = f2 & val[sk]['v2'];
	if (items[sk] != 0 && f3 != null) items[sk] = f3 & val[sk]['v3'];
	if (items[sk] != 0 && f4 != null) items[sk] = f4 & val[sk]['v4'];
	if (items[sk] != 0 && f5 != null) items[sk] = f5 & val[sk]['v5'];
	if (items[sk] != 0 && f6 != null) items[sk] = f6 & val[sk]['v6'];
  }

  // change the panel states
  var itemcount = 0;
  for (i = 0; i < keys.length; i++) {
    if (keys[i] == undefined) continue;
    var name = "CollapsiblePanel" + (keys[i]);	
    if (items[keys[i]] == 0) {
      eval(name + ".close()");
	} else {
      eval(name + ".open()");
	  ++itemcount;
	}
  }
  $('itemcount').update(' ' + itemcount + ' items shown');
  
  return true;
}

function resetAll() {
  for (i = 0; i < keys.length; i++) {
    if (keys[i] != undefined) {
      var name = "CollapsiblePanel" + (keys[i]);
      eval(name + ".open()");
	}
  }
  $('itemcount').update(' ' + keys.length  + ' items shown');
  return true;
}
