function cb_element(id) {
  return document.forms[0].elements[id];
}

function cb_remove_id(str,id) {
  var list = str.split(","), ostr = "";
  
  for(i=0;i<list.length-1;i++) {
    if (list[i] != id) ostr += list[i] + ",";
  }
  
  return ostr;
}

function cb_remove_group_id(str,id) {
  var group = id.split(":")[0], list = str.split(","), ostr = "";
  
  for(i=0;i<list.length-1;i++) {
    if (group != list[i].split(":")[0]) ostr += list[i] + ",";
  }
  
  return ostr;
}

function cb_add_id(str,id) {
  return str + id + ",";    
}

function cb_check(checkbox, client_id, checkbox_value) {  

  var selected = cb_element(client_id);
  
  if (checkbox.checked) {
    selected.value = cb_add_id(selected.value,checkbox_value);      
  } else {
    selected.value = cb_remove_id(selected.value,checkbox_value);
  }  
  
}

function cb_select(checkbox, client_id, checkbox_value) {
 
  var selected = cb_element(client_id);
    
  if (checkbox.checked) {
    selected.value = checkbox_value + ",";      
  } else {
    selected.value = "";
  }     
}

function cb_select_group(checkbox, client_id, checkbox_value) {
 
  var selected = cb_element(client_id);

  if (checkbox.checked) {
    selected.value = cb_remove_group_id(selected.value,checkbox_value);          
    selected.value = cb_add_id(selected.value,checkbox_value);      
  } else {
    selected.value = cb_remove_group_id(selected.value,checkbox_value);          
  }      
}

function cb_selected(client_id) {
  return cb_element(client_id).value;
}

function cb_selected_count(client_id) {
	return cb_element(client_id).value.split(',').length - 1;
}

function cb_toggle(checkbox, client_ids, inverse) {
	cb_set(client_ids,!checkbox.checked ^ inverse);
}

function cb_set(client_ids, disable) {
	var list = client_ids.split(",");
		
  for(i=0;i<list.length;i++) {
		var selected = cb_element(list[i]);		
		selected.disabled = disable;
  }	
}

