Non ho analizzato tutto il codice, ma ho capito qualcosa delle cose che ti avevo chiesto:
> C'e` dentro un loop (quasi) infinito?
No, ma c'e` una chiamata ricorsiva tramite setTimeout
> C'e` una chiamata ricorsiva?
vedi sopra
> Come le chiami? tramite dei click?
Da come sono fatte, direi di si`
> Stai lavorando in Javascript?
Si`
> Ma le funzioni non bloccano il browser?
No, dato che non sono funzioni continue, ma sono chiamate ricorsivamente.
Stai tranquillo il tuo problema e` facimente risolvibile.
Tu non vuoi bloccare la funzione, ma vuoi bloccare il richiamo ricorsivo della funzione.
Devi introdurre un parametro in piu`, che ti dice quale e` l'ultimo bottone cliccato.
Non so se sono riuscito a spiegarmi. Comunque se hai capito, puoi prosegure da solo, altrimenti dovresti postare il codice HTML contenente gli eventi che scatenano ciascuna funzione (e` troppo complesso spiegare come modificarlo, e` piu` semplice falo vedere sul tuo esempio).
Ciao
Michele