Ho modificato leggermente lo script, il secondo parametro che passo alla funzione non è + il colore di sfondo (che cambia) ma lo status del messaggio (da cui dipende direttamente il colore di sfondo). La funzione a questo punto diventa:

//### MODIFICA DEL COLORE DELLA RIGA SELEZIONATA ###
function selectMessages( n, status) {
var checked = document.forms['frmMessages'].elements['chbMsgId' + n].checked;
var strStatus=status;
var previousColor
switch (strStatus) {
case "S" :
previousColor="#28D28E";
break;
case "G" :
previousColor="#D28E28";
break;
case "R" :
previousColor="#D6D012";
break;
}
arrColors[n]=previousColor;
var rowStyle = document.getElementById( 'row' + n ).style;
rowStyle.backgroundColor = checked ? "#61c1e7" : previousColor;
}


la dichiarazione dell'array è superflua.

la seconda funzione vorrei farla basare anche in questo modo prendendo il colore di sfondo e modificando la variabile status da passare alla funzione ma c'è un problema:



function selectAll(checked) {
var n = 1;

var statusMsg;
while(document.getElementById( 'row' + n )) {
var obj=document.forms['frmMessages'].elements['chbMsgId' + n].checked;

var rowAllStyle = document.getElementById( 'row' + n ).style.backgroundColor;
arrColors[n]=rowAllStyle;

switch (arrColors[n]) {
case "#28d28e" :
statusMsg="S";
break;
case "#D28E28" :
statusMsg="G";
break;
case "#D6D012" :
statusMsg="R";
break;
}


if (obj.checked!=checked){
obj.checked=checked;
selectMessages(n, ((checked)?rowAllStyle.backgroundColor:arrColors[n]));
}
alert(statusMsg);
n++;

}

}
per qualche arcano motivo la switch non funziona. E' strano perché se metto un alert in cui visualizzo il parametro me lo stampa tranquillamente ma se poi visualizzo lo status mi dice sempre UNDEFINED. Come posso fare a sistemare la select? Sono vicino alla soluzione ma non capisco come posso terminare lo script!