13 // Query and result management
14 // ======================================================
16 function check_query_start()
20 if (!args['status'] || args['status'] != 'searching')
26 function start_search()
28 var url = "search.pz2?session=" + session +
30 "&query=" + args['query'];
31 SendXmlHttpObject(xsearch = GetXmlHttpObject(), url, search_started);
34 function search_started()
36 if (xsearch.readyState != 4)
38 var xml = xsearch.responseXML;
39 var error = xml.getElementsByTagName("error");
42 var msg = error[0].childNodes[0].nodeValue;
46 location = "?" + searchstring + "&status=searching";
49 function check_search()
51 clearTimeout(asearch);
52 var url = "search.pz2?" +
54 "&start=" + args['start'] +
55 "&session=" + session +
57 SendXmlHttpObject(xshow = GetXmlHttpObject(), url, show_records);
60 function show_records()
62 if (xshow.readyState != 4)
65 var xml = xshow.responseXML;
66 var body = document.getElementById("body");
67 var hits = xml.getElementsByTagName("hit");
68 if (!hits[0]) // We should never get here with blocking operations
70 body.innerHTML = "No records yet";
71 asearch = setTimeout(check_search, 250);
76 var total = Number(xml.getElementsByTagName('total')[0].childNodes[0].nodeValue);
77 var merged = Number(xml.getElementsByTagName('merged')[0].childNodes[0].nodeValue);
78 var start = Number(xml.getElementsByTagName('start')[0].childNodes[0].nodeValue);
79 var num = Number(xml.getElementsByTagName('num')[0].childNodes[0].nodeValue);
80 body.innerHTML = '<b>Records : ';
81 body.innerHTML += (start + 1) + ' to ' + (start + num) +
82 ' of ' + merged + ' (total hits: ' + total + ')</b>';
85 if (start + num < merged)
86 body.innerHTML += ' <a href="" ' +
87 'onclick="startrec=' + (start + 20) +
88 ';check_search(); return false;">Next</a>';
91 body.innerHTML += ' <a href="" ' +
92 'onclick="startrec=' + (start - 20) +
93 ';check_search(); return false;">Previous</a>';
96 body.innerHTML += '<br/>';
97 for (i = 0; i < hits.length; i++)
99 body.innerHTML += '<p>';
100 body.innerHTML += (i + start + 1) + ': ';
101 var mk = hits[i].getElementsByTagName("title");
103 body.innerHTML += mk[0].childNodes[0].nodeValue;
104 body.innerHTML += '</p>';
108 asearch = setTimeout(check_search, 1000);
110 asearch = setTimeout(check_search, 2000);
115 // Session management
116 // ======================================================
118 function session_started()
120 if (xinitSession.readyState != 4)
122 var xml = xinitSession.responseXML;
123 var sesid = xml.getElementsByTagName("session")[0].childNodes[0].nodeValue;
124 location = '?session=' + sesid;
127 function start_session()
129 var url="search.pz2?command=init";
130 SendXmlHttpObject(xinitSession = GetXmlHttpObject(), url, session_started);
136 if (!args['session'])
140 session = args['session'];
141 document.getElementById("status").innerHTML = "Live";
142 document.searchform.elements['session'].value = session;
148 // ======================================================
152 searchstring = location.search.substring(1);
153 var list = searchstring.split('&');
157 var listparms = list[l].split('=');
158 args[listparms[0]] = listparms[1];
162 function GetXmlHttpObject()
165 if (window.XMLHttpRequest)
166 objXMLHttp=new XMLHttpRequest()
167 else if (window.ActiveXObject)
168 objXMLHttp=new ActiveXObject("Microsoft.XMLHTTP")
172 function SendXmlHttpObject(obj, url, handler)
174 obj.onreadystatechange=handler;
175 obj.open("GET", url);
182 <body onload="start();">
184 <table width="100%" border="1" cellpadding="5">
186 <td width="250" height="100" align="center">
187 <font size="+2"><b>MasterKey mk II</b></font>
191 <form name="searchform">
192 <b>Search:</b> <input name="query" type="text" size="50"/>
193 <input type="submit" value="Go"/>
194 <input type="hidden" name="session" value=""/>
201 <td valign="top" id="termlist"> </td>
203 <td valign="top" id="body">
204 Funky search prototype.<br><br><br><br>
214 Status: <span id="status">Initializing</span> <span id="targetstatus"></span><br/><span id="stat"></span>