function toggle(control,key) {

   nodes = control.parentNode.parentNode.childNodes;

   for (i=0;i<nodes.length;i++) {

      if (nodes[i].nodeType == 1 && nodes[i].className == key) {
         if (nodes[i].style.display) {
            nodes[i].style.display = '';
            control.className = 'active';
         } else {
            nodes[i].style.display = 'none';
            control.className = false;
         }
      }

   }

}

function process(form) {

   sub1 = 0;
   sub2 = 0;
   sub3 = 0;
   points1 = new Array;
   points2 = new Array;
   points3 = new Array;
   points1[1] = 0;
   points1[2] = 0;
   points2[1] = 0;
   points2[2] = 0;

   for (i=0;i<form.length;i++) {
      if (form[i].checked) {
         if (form[i].name <= 7) {
            sub1 += 1*form[i].value;
            form[subtotal1].value = sub1;
            if (!points1[form[i].value]) {
               points1[form[i].value] = 1;
            } else {
               points1[form[i].value]++;
            }
         } else if (form[i].name > 7 && form[i].name <= 15) {
            sub2 += 1*form[i].value;
            form[subtotal2].value = sub2;
            if (!points2[form[i].value]) {
               points2[form[i].value] = 1;
            } else {
               points2[form[i].value]++;
            }
         } else {
            sub3 += 1*form[i].value;
            form[subtotal3].value = sub3;
            if (!points3[form[i].value]) {
               points3[form[i].value] = 1;
            } else {
               points3[form[i].value]++;
            }
         }
      }
   }

   calc(form,sub1,sub2,sub3,points1,points2,points3);

}

function calc(form,sub1,sub2,sub3,points1,points2,points3) {

   error = false;
   check = 7;
   checked = 0;

   for (i=0;i<form.length;i++) {
      if (form[i].name <= check && form[i].checked) {
         checked++;
         if (form[i].value < 1) {
            error = true;
            break;
         }
      }
   }
   
   if (checked < check) {
      error = true;
   }

   if (sub1 && !error) {

      if (sub1>=17 && sub2>=24 && sub3>=13 && !points1[1] && !points2[1]) {
         form[total].value = excellent;
         form[total].className = 'excellent';
      } else if (sub1>=15 && sub2>=21 && sub3>=12 && points1[1]<=1 && points2[1]<=1) {
         form[total].value = good;
         form[total].className = 'good';
      } else if (sub1>=13 && sub2>=18 && sub3>=11 && points1[1]<=2 && points2[1]<=2) {
         form[total].value = adequate;
         form[total].className = 'adequate';
      } else {
         form[total].value = inadequate;
         form[total].className = 'inadequate';
      }

   } else {

      form[total].value = invalid;
      form[total].className = '';

   }

}
