var termtimer;
var stattimer;
var startrec;
+var session_cells = Array('query');
+var old_session = session_read();
function GetXmlHttpObject()
{
var xml = xshow.responseXML;
var body = document.getElementById("body");
var hits = xml.getElementsByTagName("hit");
- if (!hits[0])
+ if (!hits[0]) // We should never get here with blocking operations
{
body.innerHTML = "No records yet";
searchtimer = setTimeout(check_search, 250);
}
shown++;
if (shown < 5)
- searchtimer = setTimeout(check_search, 400);
- else if (shown < 10)
searchtimer = setTimeout(check_search, 1000);
else
- searchtimer = setTimeout(check_search, 4000);
+ searchtimer = setTimeout(check_search, 2000);
}
+ if (!termtimer)
+ termtimer = setTimeout(check_termlist, 1000);
}
function check_search()
var url = "search.pz2?" +
"command=show" +
"&start=" + startrec +
- "&session=" + session;
+ "&num=15" +
+ "&session=" + session +
+ "&block=1";
xshow = GetXmlHttpObject();
xshow.onreadystatechange=show_records;
xshow.open("GET", url);
function refine_query (obj) {
var query_cell = document.getElementById('query');
-
- query_cell.value += ' and su=' + obj.innerHTML;
+ var subject = obj.innerHTML;
+
+ subject = subject.replace(/[\(\)]/g, '');
+ query_cell.value += ' and su=(' + subject + ')';
start_search();
}
{
if (xtermlist.readyState != 4)
return;
+
var i;
var xml = xtermlist.responseXML;
var body = document.getElementById("termlist");
var hits = xml.getElementsByTagName("term");
if (!hits[0])
{
- termtimer = (check_termlist, 1000);
+ termtimer = setTimeout(check_termlist, 1000);
+
}
else
{
alert(msg);
return;
}
- searchtimer = setTimeout(check_search, 250);
- termtimer = setTimeout(check_termlist, 1000);
+ check_search();
stattimer = setTimeout(check_stat, 1000);
}
function start_search()
{
clearTimeout(termtimer);
+ termtimer = 0;
clearTimeout(searchtimer);
+ searchtimer = 0;
clearTimeout(stattimer);
+ stattimer = 0;
clearTimeout(showtimer);
+ showtimer = 0;
if (!targets_loaded)
{
alert("Please load targets first");
xsearch.send(null);
document.getElementById("termlist").innerHTML = '';
document.getElementById("body").innerHTML = '';
+ update_history();
shown = 0;
startrec = 0;
}
+
+function session_encode ()
+{
+ var i;
+ var session = '';
+
+ for (i = 0; i < session_cells.length; i++)
+ {
+ var name = session_cells[i];
+ var value = escape(document.getElementById(name).value);
+ session += '&' + name + '=' + value;
+ }
+
+ return session;
+}
+
+
+function session_restore (session)
+{
+ var fields = session.split(/&/);
+ var i;
+
+ for (i = 1; i < fields.length; i++)
+ {
+ var pair = fields[i].split(/=/);
+ var key = pair[0];
+ var value = pair[1];
+ var cell = document.getElementById(key);
+
+ cell.value = value;
+ }
+
+}
+
+
+function session_read ()
+{
+ var ses = window.location.hash.replace(/^#/, '');
+ return ses;
+}
+
+
+function session_store (new_value)
+{
+ window.location.hash = '#' + new_value;
+}
+
+
+function update_history ()
+{
+ var session = session_encode();
+ session_store(session);
+ old_session= session;
+}
+
+
+function session_check ()
+{
+ var session = session_read();
+
+ clearInterval(url_surveillence);
+
+ if ( session != old_session )
+ {
+ session_restore(session);
+ start_search();
+
+ }
+
+ url_surveillence = setInterval(session_check, 200);
+}
+
+
+var url_surveillence = setInterval(session_check, 200);
+
</script>
</head>