Okay, took some time to try and figure this out. here's another one to try...
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title> Checkbox Disabler </title>
<script language="JavaScript" type="text/javascript"><!--
function getElementsByClassName(oElm, strTag, strClass) {
var arrElements = (strTag == "*" && oElm.all) ? oElm.all : oElm.getElementsByTagName(strTag);
var arrReturnElements = new Array();
strClass = strClass.replace(/\-/g, "\\-");
var oRegExp = new RegExp("(^|\\s)" + strClass + "(\\s|$)");
var oElement;
for (var i=0; i<arrElements.length; i++) {
oElement = arrElements[i];
if(oRegExp.test(oElement.className)) {
arrReturnElements.push(oElement);
}
}
return (arrReturnElements);
}
function DenableBoxes(calling, strClass) {
var set=false;
elmnts = getElementsByClassName(document, "*", strClass);
selmnts = getElementsByClassName(document, "*", calling.className);
for(var k=0; k<selmnts.length; k++) {
if(selmnts[k].checked==true) {
set=true;
}
}
for(var i=0; i<elmnts.length; i++) {
if(calling.checked==true) {
if(elmnts[i].disabled==false){
elmnts[i].disabled=true;
}
}
else {
if(set==true) {
if(elmnts[i].disabled==false) {
elmnts[i].disabled=true;
}
}
else {
if(elmnts[i].disabled==true) {
elmnts[i].disabled=false;
}
}
}
}
}
--></script>
</head>
<body>
<form action="" method="post" name="countries">
<input type="checkbox" name="country[]" class="country" value="USA" onClick="DenableBoxes(this, 'all')"> USA<br>
<input type="checkbox" name="country[]" class="country" value="Russia" onClick="DenableBoxes(this, 'all')"> Russia<br>
<input type="checkbox" name="country[]" class="country" value="Germany" onClick="DenableBoxes(this, 'all')"> Germany<br>
<br>
<input type="checkbox" name="country[]" class="all" value="all" onClick="DenableBoxes(this, 'country')"> All of above
</form>
</body>
</html>
[EDIT]
Okay, worked a bit more and got you I think what you wanted.