il reload della pagina lo fa perchè cmq vadano le cose il form lo invii
onsubmit="return controlla_cb(this, 'idmessaggio');"
scatta l' alert perchè un solo checkbox non genera un array (la length di tale array è undefined): non esiste quindi nomeelemento[indice]
puoi sostituire
concodice:for (var i=0; i<cc.length; i++) { if(cc[i].checked) n++; }
ciaocodice:if(cc.length){ for (var i=0; i<cc.length; i++) { if(cc[i].checked) n++; } } else if(cc.checked) n++;