prima opzione, la piu' semplice
codice:
function evidenziaTd(ck){
	var flag=ck.checked;
	while(ck=ck.parentNode){
		if(ck.tagName=='TR'){
			if(!flag) ck.className=ck.className.replace(' on','');
			else if(ck.className.indexOf(' on')<0) ck.className+=' on';
		}
	}
}
tutto il resto resta come hai scritto tu