function selectFromGroupHideAll(except) {
  $$(".divCheckboxGroup").each( function(element) {
    if (element.id == except) return;
    Element.hide(element);
  } );
}
function selectFromGroupToggle(list) {
  selectFromGroupHideAll("divCheckboxGroup_"+list);
  Element.toggle("divCheckboxGroup_"+list);
  selectFromGroupUpdateText(list);
  clearSearchKeywordField();
}

function selectFromGroupUpdateText(list) {
  var aSelected = getMultiTitlesSelect(list);
  if (!aSelected || ! $("aCheckboxGroup_"+list)) return;
  $("aCheckboxGroup_"+list).innerHTML = (aSelected.length) ? aSelected.join(", ") : "<i>" + $("aCheckboxGroup_"+list).title + "</i>";
  (aSelected.length) ? Element.show("aSelectClearAll_"+list) : Element.hide("aSelectClearAll_"+list);
}

/* Select all checkboxes with the given list name */
function selectAll(list) {
  $A( Form.getInputs("frmSearch", null, "search_"+list) ).each( function(element) {
    element.checked = true;
  } );
}

/* Deselect all checkboxes with the given list name */
function selectNone(list) {
  $A( Form.getInputs("frmSearch", null, "search_"+list) ).each( function(element) {
    element.checked = false;
  } );
}

function selectClearAll(list) {
  selectNone(list);
  selectFromGroupUpdateText(list);
}
function clearSearchKeywordField() {
  Form.getInputs("frmSearch", null, "search_keyword").first().value = '';
}

/* Return all checked checkboxes with a given list name */
function getMultiValuesSelect(list, seperator) {
  var aItems = $A();
  $A( Form.getInputs("frmSearch", null, "search_"+list) ).each( function(element) {
    if (element.checked) aItems.push(element.value);
  } );
  return aItems;
}

/* Return all checked checkboxes with a given list name (returns titles) */
function getMultiTitlesSelect(list, seperator) {
  var aItems = $A();
  $A( Form.getInputs("frmSearch", null, "search_"+list) ).each( function(element) {
    if (element.checked) aItems.push(element.title);
  } );
  return aItems;
}