function fn_enableCheckboxes(strBase,objRef)
{
	var objForm=objRef.form;
	var bState=objRef.checked;
	//var aCheckboxes=fn_getCheckboxes(objForm,strBase+'[');
	var aCheckboxes=fn_getCheckboxes(objForm,strBase);
	for(var i=0;i<aCheckboxes.length;i++) objForm[aCheckboxes[i]].checked=bState;
}

function fn_setRootCheckbox(strRootCheckboxName,objRef)
{
	var objForm=objRef.form;
	var bState=objRef.checked;
	var aMainCheckboxes=fn_getCheckboxes(objForm,strRootCheckboxName);
	var numPos=objRef.name.indexOf('[')+1;
	var aCheckboxes=fn_getCheckboxes(objForm,objRef.name.substr(0,numPos),1);
	
	if(aMainCheckboxes.length && (bState || !aCheckboxes.length) )
	{
		for(var i=0;i<aMainCheckboxes.length;i++)
		{
			objForm[aMainCheckboxes[i]].checked=bState;
		}
	}
}

function fn_getCheckboxes(objForm,strCheckboxPrefix,bState)
{
	var objCh;
	var aReturn=new Array();
	var numBaseLength=strCheckboxPrefix.length;
	var bAllow=false;
	for(var i=0;i<objForm.elements.length;i++)
	{
		objCh=objForm.elements[i];
		if(objCh.name.substr(0,numBaseLength)==strCheckboxPrefix)
		{
			bAllow=false;
			switch(bState)
			{
				case 1: if(objCh.checked) bAllow=true; break;	//   
				case 0: if(!objCh.checked) bAllow=true; break;	//   
				default: bAllow=true; break;					//     
			}
			if(bAllow) aReturn[aReturn.length]=objCh.name;
		}
	}
	
	return aReturn;
}
