Hola:
Simplemente tienes que recorrer esos checkboxes y activar un interruptor (sin desactivar...)
El error parece ser que que se cambia el estado de la variable "recolectora"... pues si solo quieres saber si tienes un check, debes usar el operador OR...
estado=false; for (i = 0, total = controles.length; i < total; i ++) estado = estado || controles[i].checked;...
Si no comprendes el código, pon lo que tienes para intentar adaptarlo (no se promete nada)
Saludos