¿La cuenta regresiva de GreaseMonkey no funciona?

Estoy muy confundido, con greasemonkey setTimeout simplemente no funciona, nunca llama a la función, la gente en línea dice que greasemonkey no es compatible con setTimeout, ¿hay alguna forma de hacer que mi objetivo (a continuación) funcione?

function countdown(time, id) {
   if(document.getElementById(id)) {
       var name = document.getElementById(id);
       var hrs = Math.floor(time / 3600); 
       var minutes = Math.floor((time - (hrs * 3600)) / 60); 
       var seconds = Math.floor(time - (hrs * 3600) - minutes * 60);

       if(hrs>0) {
            name.innerhtml = hrs + 'h ' + minutes + 'm';
       } else if(minutes>0) {
            name.innerhtml = minutes + 'm ' + seconds + 's';
       } else {
            name.innerhtml = seconds + 's';
       }
   } else {
       setTimeout('countdown(' + --time + ',' + id + ')', 100);
   }

   if(time <= 0)
      window.location.reload();
   else
      setTimeout('countdown(' + --time + ',' + id + ')', 1000);
} 

Respuestas a la pregunta(2)

Su respuesta a la pregunta