I don't like the naming convention there. There is no reason scripters make unnecessary problems to themselves for the things under their own controls. In particular the naming conventions...
Also, I don't know what to assume and what not. Here is a possible version. (Only checking, no unchecking...) The rest you have to figure out yourself from the hints as shown in this particular realization.
[tt]
<html>
<head>
<title>Form</title>
<script language="javascript">
function doit() {
var sig="";
var osel=document.getElementById("sel");
var cinput=document.getElementsByTagName("input");
for (var i=0;i<cinput.length;i++) {
if (cinput.type=="checkbox") {
if (cinput.name==osel.options[osel.selectedIndex].name) {
sig=cinput.name;
break;
}
}
}
for (var i=0;i<cinput.length;i++) {
if ((cinput.type=="checkbox")&&(cinput.name.indexOf(sig)!=-1)) {
cinput.checked=true;
}
}
}
</script>
</head>
<body>
<form ACTION="#">
<select id="sel" name="sel" onchange="doit()">
<option name="t0">-select a Title-</option>
<option name="t1">TITLE 1</option>
<option name="t2">TITLE 2</option>
<option name="t3">TITLE 3</option>
</select>
<br /><br />
<input type=CHECKBOX name="t1"><b>TITLE 1</b><br></br>
<input type=CHECKBOX name="t1_1">Option 1<br>
<input type=CHECKBOX name="t1_2">Option 2<br>
<input type=CHECKBOX name="t1_3">Option 3<br><br>
<input type=CHECKBOX name="t2"><b>TITLE 2</b><br>
<input type=CHECKBOX name="t2_4">Option 4<br>
<input type=CHECKBOX name="t2_5">Option 5<br>
<input type=CHECKBOX name="t2_6">Option 6<br><br>
<input type=CHECKBOX name="t3"><b>TITLE 3</b><br>
<input type=CHECKBOX name="t3_7">Option 7<br>
<input type=CHECKBOX name="t3_8">Option 8<br>
<input type=SUBMIT value="submit">
</form>
</body>
</html>
[/tt]
Naming convention here is absolutely arbitrary and just trying to let myself to get by, that's all. A correlation of some kind between select tag and checkbox subgroups is the necessary element to make it successful.