You should probably modify the CanBeSelected property of client-side node object in order to disable its selection.
Also you should hanlde client-side onnodeevent event in order to loop through the child nodes to detect wheter or not all the child nodes of some node are checked.