function checkers (e) {
  var i = 0,
      j = 0,
      trig = e.target || e.srcElement,
      allBoxes,
      theRow,
      dropTally;
  if (document.getElementById('dropTally')) {
    dropTally = document.getElementById('dropTally');
  } else {
    return true;
  };
  if (trig.type === 'checkbox' &&
      trig.name.indexOf('[]')>0) {
    allBoxes = document.getElementsByName(trig.name);
    i = allBoxes.length;
    while (i--) { j = (allBoxes[i].checked === true) ? ++j : j ; };
    trigName = trig.name.substring(0,(trig.name.length-2));
    togg = document.getElementsByName(trigName);
    togg[0].checked = j>0?true:false;
    dropTally.innerHTML = j;
  } else if (trig.type === 'checkbox' &&
              trig.name.indexOf('[]')<0) {
    allBoxes = document.getElementsByName(trig.name+'[]');
    i = allBoxes.length;
    while (i--) { allBoxes[i].checked = trig.checked; };
    dropTally.innerHTML = (trig.checked === true) ? allBoxes.length : '&nbsp;' ;
  } else if (trig.type === 'reset') {
    dropTally.innerHTML = '&nbsp;';
  } else if (trig.nodeName === 'TR' ||
             trig.nodeName === 'TD' ||
             trig.nodeName === 'TH') {
    if (trig.nodeName === 'TR') {
      theRow = trig;
    } else {
      theRow = trig.parentNode;
    };
    if (theRow.parentNode.nodeName === 'TBODY') {
      dropBox = theRow.getElementsByTagName('INPUT');
      dropBox = dropBox[0]?dropBox[0]:null;
      if (dropBox && dropBox.type === 'checkbox') {
        dropBox.checked = dropBox.checked === true?false:true;

        allBoxes = document.getElementsByName(dropBox.name);
        i = allBoxes.length;
        while (i--) { j = (allBoxes[i].checked === true) ? ++j : j ; };
        trigName = dropBox.name.substring(0,(dropBox.name.length-2));
        togg = document.getElementsByName(trigName);
        togg[0].checked = j>0?true:false;
        dropTally.innerHTML = j;

      };
    };
  };
  if (dropTally.innerHTML === '0') dropTally.innerHTML = '&nbsp;';
};
