Во первых в своей функции ты пишешь:
var intervalId = setInterval (function(){...}// что означает локальную переменную, которая доступна внутри функции.
Далее ты вызываешь снова эту функцию передаешь флаг, и о чудо почему то не работает. А потому что
clearInterval(intervalId);//этот intervalId это уже другой, а не тот что ты запустил при прошлом вызове функции.
другими словами состояние setInterval хранить в глобальной переменной, например window['myInterval'] = setInterval...... и его уже останавливать и переопределять. Кстати советую в качестве флага передавать не строку а просто true Или false и проверять соответственно не на строку.