Твой второй ответ внес еще больше неясности. Тут важно как ты аякс запрос делаешь - ибо ответ с сервера придет _после_ запуска setTimeout. Тебе надо сделать чтобы setTimeout выполнялось только после получения ответа с сервера, иначе ты затаймаутишь "старую" переменную, а не ту, что получит с сервера аякс запрос.
--
Как бы там не было, стоит изменить на var timeout = {};
Сайт-результат совсем не внушает уважения к системе:
Не валидно и коряво. Это называется говнокод. Хотя, для клиентов с деньгами, это значения не имеет.