
function checkParent (chk, parent_id)
{
  parent_chk = document.getElementById(parent_id);
  sub_ids_to_check = document.getElementById("sub_ids_" + parent_id);
  
  if(true == chk.checked)
  {
    parent_chk.checked = true;
  }
  else
  {
    uncheck = true;
    sub_ids = sub_ids_to_check.value.split(",");
    
    for(idx in sub_ids)
    {
      sub_id = sub_ids[idx];
      sub_id_chk = document.getElementById("compcat_" + sub_id);

      if(sub_id_chk.checked)
      {
        uncheck = false;
        break;
      }
    }
    
    if(true == uncheck)
    {
      parent_chk.checked = false;
    }
  }
  
  return;
}

function uncheckChildren (parent_chk)
{
  if(false == parent_chk.checked)
  {
    parent_id = parent_chk.id;
    sub_ids_to_uncheck = document.getElementById("sub_ids_" + parent_id);
  
    if(null != sub_ids_to_uncheck)
    {
      sub_ids = sub_ids_to_uncheck.value.split(",");

      for(idx in sub_ids)
      {
        sub_id = sub_ids[idx];
        sub_id_unchk = document.getElementById("compcat_" + sub_id);
        sub_id_unchk.checked = false;
      }
    }
  }
}
