Updates to pz:authentication documentation
[pazpar2-moved-to-github.git] / www / test2 / index.html
1 <html>
2
3 <head>
4 <script>
5
6 var xinitSession
7 var args = Array();
8 var searchstring;
9 var session = 0;
10 var asearch;
11 var shown = 0;
12
13 // Query and result management
14 // ======================================================
15
16 function check_query_start()
17 {
18     if (!args['query'])
19         return;
20     if (!args['status'] || args['status'] != 'searching')
21         start_search();
22     else
23         check_search();
24 }
25
26 function start_search()
27 {
28     var url = "search.pz2?session=" + session +
29         "&command=search" +
30         "&query=" + args['query'];
31     SendXmlHttpObject(xsearch = GetXmlHttpObject(), url, search_started);
32 }
33
34 function search_started()
35 {
36     if (xsearch.readyState != 4)
37         return;
38     var xml = xsearch.responseXML;
39     var error = xml.getElementsByTagName("error");
40     if (error[0])
41     {
42         var msg = error[0].childNodes[0].nodeValue;
43         alert(msg);
44         return;
45     }
46     location = "?" + searchstring + "&status=searching";
47 }
48
49 function check_search()
50 {
51     clearTimeout(asearch);
52     var url = "search.pz2?" +
53         "command=show" +
54         "&start=" + args['start'] +
55         "&session=" + session +
56         "&block=1";
57     SendXmlHttpObject(xshow = GetXmlHttpObject(), url, show_records);
58 }
59
60 function show_records()
61 {
62     if (xshow.readyState != 4)
63         return;
64     var i;
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
69     {
70         body.innerHTML = "No records yet";
71         asearch = setTimeout(check_search, 250);
72     }
73     else
74     {
75
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>';
83
84 /*
85         if (start + num < merged)
86             body.innerHTML += ' <a href="" ' +
87                 'onclick="startrec=' + (start + 20) +
88                 ';check_search(); return false;">Next</a>';
89
90         if (start > 0)
91             body.innerHTML += ' <a href="" ' +
92                 'onclick="startrec=' + (start - 20) +
93                 ';check_search(); return false;">Previous</a>';
94 */
95
96         body.innerHTML += '<br/>';
97         for (i = 0; i < hits.length; i++)
98         {
99             body.innerHTML += '<p>';
100             body.innerHTML += (i + start + 1) + ': ';
101             var mk = hits[i].getElementsByTagName("title");
102             if (mk[0])
103                 body.innerHTML += mk[0].childNodes[0].nodeValue;
104             body.innerHTML += '</p>';
105         }
106         shown++;
107         if (shown < 5)
108             asearch = setTimeout(check_search, 1000);
109         else
110             asearch = setTimeout(check_search, 2000);
111     }
112 }
113
114
115 // Session management
116 // ======================================================
117
118 function session_started()
119 {
120     if (xinitSession.readyState != 4)
121         return;
122     var xml = xinitSession.responseXML;
123     var sesid = xml.getElementsByTagName("session")[0].childNodes[0].nodeValue;
124     location = '?session=' + sesid;
125 }
126
127 function start_session()
128 {
129     var url="search.pz2?command=init";
130     SendXmlHttpObject(xinitSession = GetXmlHttpObject(), url, session_started);
131 }
132
133 function ping_session()
134 {
135     if (!session)
136         return;
137     var url = "search.pz2?command=ping&session=" + session;
138     SendXmlHttpObject(xpingSession = GetXmlHttpObject(), url, session_pinged);
139 }
140
141 function session_pinged()
142 {
143     if (xpingSession.readyState != 4)
144         return;
145     var xml = xpingSession.responseXML;
146     var error = xml.getElementsByTagName("error");
147     if (error[0])
148     {
149         var msg = error[0].childNodes[0].nodeValue;
150         alert(msg);
151         location = "?";
152         return;
153     }
154     setTimeout(ping_session, 50000);
155 }
156
157 function start()
158 {
159     splitargs();
160     if (!args['session'])
161         start_session();
162     else
163     {
164         session = args['session'];
165         document.getElementById("status").innerHTML = "Live";
166         document.searchform.elements['session'].value = session;
167         check_query_start();
168     }
169     setTimeout(ping_session, 50000);
170 }
171
172 // Utility
173 // ======================================================
174
175 function splitargs()
176 {
177     searchstring = location.search.substring(1);
178     var list = searchstring.split('&');
179     var l;
180     for (l in list)
181     {
182         var listparms = list[l].split('=');
183         args[listparms[0]] = listparms[1];
184     }
185 }
186
187 function GetXmlHttpObject()
188
189     var objXMLHttp=null
190     if (window.XMLHttpRequest)
191         objXMLHttp=new XMLHttpRequest()
192     else if (window.ActiveXObject)
193         objXMLHttp=new ActiveXObject("Microsoft.XMLHTTP")
194     return objXMLHttp;
195
196
197 function SendXmlHttpObject(obj, url, handler)
198 {
199     obj.onreadystatechange=handler;
200     obj.open("GET", url);
201     obj.send(null);
202 }
203
204 </script>
205 </head>
206
207 <body onload="start();">
208
209 <table width="100%" border="1" cellpadding="5">
210     <tr>
211         <td width="250" height="100" align="center">
212             <font size="+2"><b>MasterKey mk II</b></font>
213         </td>
214
215         <td>
216             <form name="searchform">
217                 <b>Search:</b> <input name="query" type="text" size="50"/>
218                 <input type="submit" value="Go"/>
219                 <input type="hidden" name="session" value=""/>
220             </form>
221
222         <td>
223     </tr>
224
225     <tr>
226         <td valign="top" id="termlist">&nbsp;</td>
227
228         <td valign="top" id="body">
229         Funky search prototype.<br><br><br><br>
230         <td>
231     </tr>
232
233     <tr>
234         <td>
235         &nbsp;
236         </td>
237
238         <td>
239             Status: <span id="status">Initializing</span> <span id="targetstatus"></span><br/><span id="stat"></span>
240         </td>
241
242     </tr>
243
244 </table>
245
246 </body>
247 </html>