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
codice:
  for (var i=0; i<cc.length; i++) {
    if(cc[i].checked) n++;
  }
con
codice:
  if(cc.length){
    for (var i=0; i<cc.length; i++) {
      if(cc[i].checked) n++;
    }
  }
  else if(cc.checked) n++;
ciao