function gothrough(curNode){
if(curNode.type == "checkbox"){müßte zu einem Fehler (und damit Abbruch) führen, wenn das curNode kein type-Attribut bzw. type-Unterobjekt hat.
Erst prüfen, ob curNode.type existiert, dann, welchen Wert es hat.
Auch das ist falsch.
var test = new Object();
alert( (test.type == 'quatsch'));
du kannst auf unbekannte Attribute zugreifen, was nicht geht ist:
alert( (test2.type == 'quatsch'));
Also er müßte erst prüfen, ob curNode existiert, wenn ja kann er den test oben machen:
function gothrough(curNode){
if(curNode && curNode.type == "checkbox"){
Struppi.