Руки за такое отрывать..
А по делу:
- Записываем в куки время первого посещения
- Запускаем setInterval, с функцией в которой проверяем:
if ((текущее время - время в куках) > limit)
{
showModal();
clearInvertal(...);
}
Если в куках уже есть время, и оно > max_limit - сбрасываем его, и устанавливаем текущее время.