Есть зацикленная функция, которая заставляет мерцать параллельно 3 div блока
var a = 0;
var tm = null;
function pr() {
if  ( a == 0 || a == 1  ) {
$("#blocks div").eq(0).fadeTo(2000,a);
$("#blocks div").eq(1).fadeTo(3000,a);
$("#blocks div").eq(2).fadeTo(4000,a);
a++;
if ( a == 2) {  a = 0; }
tm = setTimeout(pr(),2000);
}
if ( a > 2)
{
$("#blocks div").eq(0).fadeTo(2000,1);
$("#blocks div").eq(1).fadeTo(3000,1);
$("#blocks div").eq(2).fadeTo(4000,1);
}
}
и кнопочка стоп 
$("#stop").click(function() {    a = 4;  clearTimeout(tm); tm = null;   } );
по нажатию на которую мерцание всех блоков должно остановиться.
Проблема в том, что по нажатию останавливается мерцание первого блока, а очередь анимаций на остальные продолжает работать.
Как можно решить эту проблему, подскажите пожалуйста товарищи форумчане.