yo le daria otro enfoque al codigo, especialmente a la inicializacion del array. yo tu me olvido de comenzar el indice por 1 porque trae mas problema que beneficio. intenta la siguiente modificacion.
Código:
var mensajesp=new Array();
function seleccionaMensajePrivadoParaBorrar(id) {
var donde=document.getElementById("aseleccion"+id);
var total=document.getElementById("cuantosMensajesSeleccionados");
if(donde.value==0) {
mensajesp.push(id);
total.value=mensajesp.length;
donde.value=1;
document.getElementById("selecsionostia"+id).style.backgroundColor="yellow";
} else {
for(i=0;i<mensajesp.length;i++) {
if(mensajesp[i]==id){
mensajesp.splice(i, 1);
break; // como menciona jackson666, si los IDs son unicos, no hay porque seguir recorriendo el array;
}
}
document.getElementById("selecsionostia"+id).style.backgroundColor="";
total.value=mensajesp.length;
donde.value=0;
}
}
function borrarMensajesSeleccionados() {
var total=document.getElementById("cuantosMensajesSeleccionados");
if (!mensajesp.length) { alert('No hay mensajes seleccionados'); } else {
var todostoditos=mensajesp.join(",");
var user=top.document.getElementById("nombreUsuario").value;
}
}