Вам поможет при первом визите высчитать текущее время + 30 секунд и занести это время в куки. Далее по таймеру определять, есть ли нужная кука, и если есть, то не наступил/прошёл ли нужный момент, и если он наступил/прошёл, вызывать окошко, удалять старую куку и добавлять другую, по которой будет определяться, что окошко уже всплывало. Так понятно?
Под спойлером функции, которые я дёрнул из своего проекта для проверки и занесения кук.
Функции/* Возвращает cookie */
function Get_Cookie (name)
{
var matches = document.cookie.match (new RegExp
(
"(?:^|; )" + name.replace (/([\.$?*|{}\(\)\[\]\\\/\+^])/g, '\\$1') + "=([^;]*)"
));
return matches ? decodeURIComponent (matches[1]) : undefined;
}
/* Записать в cookies */
function setCookie (name, value, options)
{
if (!options)
{
var expires = new Date ();
expires.setFullYear (expires.getFullYear () + 10);
options = {'path': '/', 'expires': expires};
}
var expires = options.expires;
if (typeof expires == "number" && expires)
{
var d = new Date ();
d.setTime (d.getTime () + expires * 1000);
expires = options.expires = d;
}
if (expires && expires.toUTCString)
{
options.expires = expires.toUTCString ();
}
value = encodeURIComponent (value);
var updatedCookie = name + "=" + value;
for (var propName in options)
{
updatedCookie += "; " + propName;
var propValue = options[propName];
if (propValue !== true)
{
updatedCookie += "=" + propValue;
}
}
document.cookie = updatedCookie;
}