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