]> matita.cs.unibo.it Git - helm.git/blob - helm/searchEngine/html/index.html
- the mathql interpreter is not helm-dependent any more
[helm.git] / helm / searchEngine / html / index.html
1 <HTML>
2 <HEAD>
3 <SCRIPT language="Javascript">
4 var query="*"; // stringa che contiene la query nel suo stato attuale.
5 var storeps=1;
6 var storepv=1;
7 var storepb=1; // queste tre variabili contengono il numero da assegnare al prossimo simbolo set, val o boole per creare il link nel frame in alto a sinistra.
8 var stadd; // contiene la stringa da aggiungere alla query.
9 var fb; // contiene la stringa da aggiungere alla query prima che i set,val e boole siano convertiti in link.
10 var ltr="*"; // qui viene memorizzato qual è l' ultimo link su cui si è cliccato.
11 var norvars=0;
12 var nosvars=0;
13 var novvars1=0;
14 var novvars2=0; // queste tre variabili servono per sapere dove memorizzare i nomi delle rvar,svar e vvar inserite dall' utente. 
15 var wrong=0;
16 var ricordaliaslist=0;
17 var actinput=0;
18 var numeroazioniannullate=0;
19 var terminecic="";var listaliases="";var choices;var vlds=new Array();//contengono i parametri per dialogare col server in caso di ambiguità nella Match Conclusion.
20 aliasglob=new Array();//per conservare la lista degli alias
21 function initialize()
22         {
23         rvars=new Array(100);
24         svars=new Array(100);
25         vvars1=new Array(100);
26         vvars2=new Array(100); // contengono le rvar,svar e vvar inserite dall' utente. 
27         storia=new Array();
28         storia[0]="*";
29         norvars=0;
30         nosvars=0;
31         novvars1=0;
32         novvars2=0;
33         ltr="*";
34         query="*";
35         storeps=1;
36         storepv=1;
37         storepb=1;
38         ricordaliaslist=0;
39         vlds=new Array();
40         aliasglob=new Array();
41         actinput=0;
42         numeroazioniannullate=0;
43         }
44
45 // @variable@ will be substituted by the searchEngine with the param.variable
46 // argument value
47 var processorURL="@processorURL@";
48 var getterURL="@getterURL@";
49 var thkeys="@thkeys@";
50 var proofcheckerURL="@proofcheckerURL@";
51 var draw_graphURL="@draw_graphURL@";
52 var uri_set_queueURL="@uri_set_queueURL@";
53 var UNICODEvsSYMBOL="@UNICODEvsSYMBOL@";
54 var keys="@keys@";
55 var thkeys="@thkeys@";
56 var embedkeys="@embedkeys@";
57 var doctype_public="@doctype-public@";
58 var encoding="@encoding@";
59 var thencoding="@thencoding@";
60 var media_type="@media-type@";
61 var thmedia_type="@thmedia-type@";
62 var interfaceURL="@interfaceURL@";
63 var thinterfaceURL="@thinterfaceURL@";
64 var CICURI="@CICURI@";
65 var naturalLanguage="@naturalLanguage@";
66 var annotations="@annotations@";
67 var interface_topurl="@topurl@";
68
69 function ask_uwobo(url)
70        {
71          return (top.topurl+"/ask_uwobo?url="+
72                  escape(processorURL + "apply?" +
73                          "xmluri=" + escape(url) +
74                          "&keys=" + escape(thkeys) +
75                          "&param.processorURL=" + escape(processorURL) +
76                          "&param.getterURL=" + escape(getterURL) +
77                          "&param.proofcheckerURL=" + escape(proofcheckerURL) +
78                          "&param.draw_graphURL=" + escape(draw_graphURL) +
79                          "&param.uri_set_queueURL=" + escape(uri_set_queueURL) +
80                          "&param.UNICODEvsSYMBOL=" + escape(UNICODEvsSYMBOL) +
81                          "&param.keys=" + escape(keys) +
82                          "&param.thkeys=" + escape(thkeys) +
83                          "&param.embedkeys=" + escape(embedkeys) +
84                          "&param.doctype-public=" + escape(doctype_public) +
85                          "&param.encoding=" + escape(encoding) +
86                          "&param.thencoding=" + escape(thencoding) +
87                          "&param.media-type=" + escape(media_type) +
88                          "&param.thmedia-type=" + escape(thmedia_type) +
89                          "&param.interfaceURL=" + escape(interfaceURL) +
90                          "&param.thinterfaceURL=" + escape(thinterfaceURL) +
91                          "&param.CICURI=" + escape(CICURI) +
92                          "&param.naturalLanguage=" + escape(naturalLanguage) +
93                          "&param.annotations=" + escape(annotations) +
94                          "&param.topurl=" + escape(interface_topurl) +
95                          "&prop.method=html"));
96        }
97 function help(w) // quando invocata, visualizza l' help relativo ad un oggetto. Di solito è legata ad un evento onFocus o onMouseOver.  
98         {
99         hw.document.close();
100         switch (w)      {
101                         case -10: hw.document.write("Insert an <a href="+top.topurl+top.action+"grammarpdq.html#Id target=gw>Id</a> or an <a href="+top.topurl+top.action+"grammarpdq.html#Uri target=gw>Uri</a> here.")
102                                 break;
103                         case -9: hw.document.write("By clicking this you may add or remove aliases as you wish.")
104                                 break;
105                         case -81: hw.document.write("Allows you to recover your last input")
106                                 break;
107                         case -8: hw.document.write("Allows you to delete your last input")
108                                 break;
109                         case -7: hw.document.write("Erases your query and starts a new pre-defined query, you will keep your list of aliases.")
110                                 break;
111                         case -6: hw.document.write("Puts this string in the current cursor position. This button works only with Internet Explorer.")
112                                 break;
113                         case -5: hw.document.write("Erases your query and starts a new one.")
114                                 break;
115                         case -4: hw.document.write("If you click this your query will be processed and the results will appear in the frame above.")
116                                 break;
117                         case -3: hw.document.write("Substitutes your query with the text written in the area above. Unless you have a good knowledge of MathQL, it's recommended that you use this only to recover errors.")
118                                 break;
119                         case -2: hw.document.write("This is the edit/submit window. You can modify your query here, but be aware that no syntax check will be performed and that if you enter a <a href="+top.topurl+top.action+"grammar.html#rvar target=gw>variable</a> it won't be available for quick composition later. You may also want to add a <a href="+top.topurl+top.action+"grammar.html#set target=gw>set</a>, a <a href="+top.topurl+top.action+"grammar.html#val target=gw>val</a> or a <a href="+top.topurl+top.action+"grammar.html#boole target=gw>boole</a> somewhere in the query. If you do, write '&lt;set&gt;','&lt;val&gt;' or '&lt;bol&gt;' in the point you'd like it to appear, or use the buttons on the right if you are using IE. When you're done with the query, click the Submit button.")
120                                 break;
121                         case -1: hw.document.write("You may see the grammar here.")
122                                 break;
123                         case 0: hw.document.write("")
124                                 break;
125                         case 1: hw.document.write("You may enter an arbitrary statement here; be careful since syntax errors won't be detected.");                              
126                                 break;  
127                         case 2: hw.document.write("Enter an <a href="+top.topurl+top.action+"grammar.html#attr_list target=gw>attr_list</a> here.");
128                                 break;
129                         case 3: hw.document.write("Enter an <a href="+top.topurl+top.action+"grammar.html#id target=gw>id</a> here.");
130                                 break;
131                         case 4: hw.document.write("You must select one previously entered <a href="+top.topurl+top.action+"grammar.html#rvar target=gw>rvar</a>. If you haven't already entered at least one, you can't choose this. ");
132                                 break;
133                         case 5: hw.document.write("Enter a <a href="+top.topurl+top.action+"grammar.html#path target=gw>path</a> here.");
134                                 break;
135                         case 6: hw.document.write("You must select one previously entered <a href="+top.topurl+top.action+"grammar.html#svar target=gw>svar</a>. If you haven't already entered at least one, you can't choose this. ");
136                                 break;
137                         case 7: hw.document.write("Enter a <a href="+top.topurl+top.action+"grammar.html#string_list target=gw>string_list</a> here.");
138                                 break;
139                         case 8: hw.document.write("You must select one <a href="+top.topurl+top.action+"grammar.html#vvar target=gw>vvar</a> previously entered as an 'attr'. If you haven't already entered at least one, you can't choose this. ");
140                                 break;
141                         case 81: hw.document.write("You must select one <a href="+top.topurl+top.action+"grammar.html#vvar target=gw>vvar</a> previously entered in a 'let' statement. If you haven't already entered at least one, you can't choose this. ");
142                                 break;
143                         case 9: hw.document.write("Enter a single <a href="+top.topurl+top.action+"grammar.html#quoted_string target=gw>quoted_string</a> here.");
144                                 break;
145                         }       
146         }
147 function tpa(quotpath)
148         {
149         while (quotpath.indexOf("<")>-1)
150                 {quotpath=quotpath.replace("<","&lt;");}
151         while (quotpath.indexOf(">")>-1)
152                 {quotpath=quotpath.replace(">","&gt;");}
153         return (quotpath);
154         }
155 function idcheck(ident)
156         {
157         lettera=/[a-zA-Z]/;
158         partediid=/[a-zA-Z0-9_\-\']/;
159         if (!lettera.test(ident.charAt(0))){alert("an Id must begin with a letter.");return(0)}
160         while (ident.length>0)
161                 {
162                 ident=ident.substring(1,(ident.length));
163                 if (ident.length>0){
164                 if (!partediid.test(ident.charAt(0))){alert(ident.charAt(0)+" is not a valid character for an Id.");return(0);}
165                 }}
166         return(1)
167         }
168 function uricheck(ident)
169         {
170         cifra=/[0-9]/
171         cic=ident.substring(0,5);//alert(cic);
172         if (cic!="cic:/"){alert("an Uri must begin with the string 'cic:/'");return(0);}
173         ident=ident.substring(5,ident.length);//alert(ident);
174         if (ident.indexOf(".")<0){alert("an Uri must contain a '.'");return(0);}
175         ident1=ident.substring(0,ident.indexOf("."));//alert(ident1);
176         ident2=ident.substring(ident.indexOf(".")+1,ident.length);//alert(ident2);
177         while (ident1.length>0)
178                 {       
179                 if (ident1.indexOf("/")>-1)             
180                         {
181                         if (idcheck(ident1.substring(0,ident1.indexOf("/")))==0){return (0)}
182                         ident1=ident1.substring(ident1.indexOf("/")+1,ident1.length);//alert(ident1);
183                         }
184                 else {if (idcheck(ident1)==0){return (0)}       
185                         ident1="";}
186                 }
187         if (ident2=="con"||ident2=="var"){return(1)}
188         if (ident2.substring(0,6)!="ind#1/"){alert ("syntax error in the Uri.");return(0);}
189         ident2=ident2.substring(6,ident2.length);//alert(ident2);
190         if (!cifra.test(ident2.charAt(0))){alert ("syntax error in the Uri.");return(0);}
191         if (ident2.indexOf("/")>-1)
192                 {
193                 while (ident2.charAt(0)!="/")
194                         {
195                         //alert(ident2);
196                         if (!cifra.test(ident2.charAt(0))){alert ("syntax error in the Uri.");return(0);}
197                         ident2=ident2.substring(1,ident2.length);
198                         }
199                 }
200         while (ident2.length>0)
201                 {
202                 //alert(ident2);
203                 ident2=ident2.substring(1,ident2.length);
204                 if (ident2.length>0){
205                 if (!cifra.test(ident2.charAt(0))){alert ("syntax error in the Uri.");return(0);}
206                 }}
207         
208         return(1)
209         }
210 function gramcheck(how,what) // esegue il controllo sintattico sulla stringa "what", controllando che rispetti i requisiti indicati dalla clausola "how". Se qualcosa non è ok, la variabile "wrong" viene posta ad 1 e la stringa da aggiungere viene ignorata, mentre viene visualizzato un apposito messaggio di errore.              
211         {
212         var slash=0;
213         var alpha=/[A-Za-z:_]/
214         var numero=/[0-9]/
215         switch (how)    {               
216                         case "qsl": // lista di quoted string
217                                 if (what.charAt(0)!="{") {gramcheck("qs",what);break;}
218                                 if (what.charAt(what.length-1)!="}") {alert ("The list must end with a '}'.");wrong=1;break;}
219                                 what=what.substring(1,what.length-1);//alert (what);
220                                 while (what.indexOf("\",\"")>-1)
221                                         {
222                                         as=what.substring(0,what.indexOf("\",\"")+1);//alert(as);
223                                         what=what.substring(what.indexOf("\",\"")+2,what.length);//alert(what);
224                                         gramcheck("qs",as);
225                                         }
226                                 gramcheck("qs",what);
227                                 break;
228                         case "qp": // quoted path
229                                 if (what.charAt(0)!="\"") {alert ("A quoted string must be included between quotes."); wrong=1; break;}
230                                 if (what.charAt(what.length-1)!="\"") {alert ("A quoted string must be included between quotes."); wrong=1; break;}
231                                 while (what.indexOf("\"/\"")>-1)
232                                         {
233                                         as=what.substring(0,what.indexOf("\"/\"")+1);//alert(as);
234                                         what=what.substring(what.indexOf("\"/\"")+2,what.length);//alert(what);
235                                         gramcheck("qs",as);
236                                         }
237                                 gramcheck("qs",what);
238                                 break;
239                         case "qs": // quoted string
240                                 if (what.charAt(0)!="\"") {alert ("A quoted string must be included between quotes."); wrong=1; break;}
241                                 if (what.charAt(what.length-1)!="\"") {alert ("A quoted string must be included between quotes."); wrong=1; break;}
242                                 what=what.substring(0,what.length-1);//alert (what);
243                                 if (wrong==1) break;
244                                 else while (what.length>0)
245                                         {
246                                         what=what.substring(1,what.length);
247                                         if (what.charAt(0)=="\"" && slash==0) {alert ("A \" in a quoted string must be preceded by a \\.");wrong=1;break;} 
248                                         if (what.charAt(0)=="\\") {slash=1} else {slash=0} 
249                                         if (slash==1 && what.length==1) {alert ("A \\ in a quoted string must be followed by something.");wrong=1;}
250                                         }
251                                 break;
252                         case "vlist": // lista di vvar (tutto ciò che si trova dopo "attr")
253                                 //alert(what.substring(0,4));                           
254                                 if ((what.substring(0,4))!="attr"){wrong=1;alert("A vvar_list must begin with the word 'attr'")}
255                                 what=what.substring(5,(what.length));vl=what;
256                                 //alert(what+"what");
257                                 while (what.length>0)
258                                                         {
259                                                         if (what.indexOf(",")>0) {vv=(what.substring(0,what.indexOf(",")));}
260                                                         else {vv=what}                                  
261                                 //alert(vv+"vv");
262                                                         if (vv.charAt(0)!="$"){wrong=1;alert("A vvar must begin with a '$'");}
263                                                         if (vv.indexOf("<-")>0)
264                                                                         {
265                                                                         what=what.substring(vv.length+1,what.length);
266                                 //alert(what+" nuovowhat "+wrong);
267                                                                         path=vv.substring(vv.indexOf("<-")+2,vv.length);
268                                 //alert(path+" path "+wrong);
269                                                                         gramcheck("qp",path); 
270                                                                         vv=vv.substring(1,(vv.indexOf("<-")));
271                                 //alert(vv+" vv "+wrong);
272                                                                         gramcheck("id",vv);
273                                                                         }
274                                                         else {wrong=1;alert("An Assign must contain a '<-'.");what="";}
275                                 //alert (what+"what");  
276                                                         }
277                                 break;
278                         case "id":
279                                 //alert (what.charAt(0));
280                                 if (!alpha.test(what.charAt(0))) {wrong=1;alert("An ID must begin with a letter , ':' , or '_' .");}
281                                 while (what.length>1)   {
282                                         what=what.substring(1,(what.length));
283                                         if (!alpha.test(what.charAt(0)) && !numero.test(what.charAt(0)))
284                                         {wrong=1;alert(what.charAt(0)+" is not a valid character for an id.");}
285                                         //document.write(what+"<BR>");
286                                                         }       
287                                 break;
288                         }
289         
290         if (how=="vlist" && wrong==0) // nel caso in cui sia stato eseguito il controllo su una lista di vvar e non siano stati riscontrati errori, tutte le variabili inserite vengono memorizzate.
291                 {
292                 while (vl.length>0)
293                         {
294                         if (vl.indexOf(",")>-1)
295                                 {
296                                 vvars2[novvars2++]=vl.substring(0,vl.indexOf("<"));
297                                 vl=vl.substring(vl.indexOf(",")+1,vl.length);
298                                 }
299                         else    
300                                 {
301                                 vvars2[novvars2++]=vl.substring(0,vl.indexOf("<"));;
302                                 vl="";
303                                 }                                               
304                         }
305                 //alert ("esco dal loop");
306                 }
307         if (wrong==0) {cw.inputok=1} else stadd="";
308         }
309 function savelink(n,t) // invocata quando si clicca su un link, memorizza quale di questi debba poi essere sostituito. 
310         {
311         if (t=='s') { top.ltr="[?set"+String(n)+"]";}
312         if (t=='v') { top.ltr="[?val"+String(n)+"]";}
313         if (t=='b') { top.ltr="[?bol"+String(n)+"]";}
314 //      alert(ltr);
315         }
316 function aggcw() // invocata automaticamente ad ogni modifica della variabile "query", fa apparire nel frame in alto a destra il menu di composizione relativo al primo link della query. Consente quindi di comporre tutta la query senza mai cliccare su alcun link. 
317         {
318         pq=query;
319         while (pq.length>0)
320                 {
321                 if (pq.indexOf("[?")>-1)        
322                         {
323                         ltr=pq.slice(pq.indexOf("[?"));
324                         ltr=ltr.substring(ltr.indexOf("[?"),(ltr.length-ltr.indexOf("[?"))-(ltr.length-ltr.indexOf("]")-1));
325                         wto=ltr.substring(2,5);
326                         if (wto=="set") {window.open(top.topurl+action+"set.html","cw");pq="";}
327                         else if (wto=="val") {window.open(top.topurl+action+"val.html","cw");pq="";}
328                         else if (wto=="bol") {window.open(top.topurl+action+"boole.html","cw");pq="";}
329                         else pq=pq.substring(pq.indexOf("[?")+2,pq.length);
330                         }
331                 else {window.open(top.topurl+action+"blank.html","cw");pq="";}
332                 } 
333         }
334 function aggform() // aggiorna il form nel frame centrale. Invocata ad ogni cambio della variabile "query".
335         {
336         cquery=query;
337         while (cquery.indexOf("<")>-1)
338                 {
339                 cquery=cquery.replace(cquery.substring(cquery.indexOf("<"),cquery.indexOf(">")+1),"");
340                 //alert(cquery);
341                 }
342         while (cquery.indexOf("[?")>-1)
343                 {
344                 //alert(cquery);
345                 if (cquery.indexOf("]")>-1)
346                         {
347                         while (cquery.indexOf("]")<cquery.indexOf("[?") && cquery.indexOf("]")>-1)
348                         {cquery=cquery.replace("]","q+u+a+d+r+a+c+h+i+u+s+a");}//alert("loop"+cquery.indexOf("]")+cquery.indexOf("[?"))}
349                         ag1=cquery.slice(cquery.indexOf("[?"));//alert(ag1);
350                         ag1=ag1.substring(ag1.indexOf("[?"),(ag1.length-ag1.indexOf("[?"))-(ag1.length-ag1.indexOf("]")));//alert(ag1);
351                         ag2=ag1.substring(2,5);//alert(ag2);
352                         if (ag2=="set") cquery=cquery.replace(cquery.substring(cquery.indexOf("[?"),cquery.indexOf("]")+1),"<set>");
353                         else if (ag2=="val") cquery=cquery.replace(cquery.substring(cquery.indexOf("[?"),cquery.indexOf("]")+1),"<val>");
354                         else if (ag2=="bol") cquery=cquery.replace(cquery.substring(cquery.indexOf("[?"),cquery.indexOf("]")+1),"<boole>");
355                         else cquery=cquery.replace(cquery.substring(cquery.indexOf("[?"),cquery.indexOf("[?")+1),"q+u+a+d+r+a");
356                         //alert(cquery);
357                         }
358                 else {cquery=cquery.replace("[?","q+u+a+d+r+a?")}
359                 //alert(cquery);        
360                 }
361         while (cquery.indexOf("q+u+a+d+r+a+c+h+i+u+s+a")>-1)
362                 {
363                 cquery=cquery.replace("q+u+a+d+r+a+c+h+i+u+s+a","]");
364                 }
365         while (cquery.indexOf("q+u+a+d+r+a")>-1)
366                 {
367                 cquery=cquery.replace("q+u+a+d+r+a","[");
368                 }
369         while (cquery.indexOf("&lt;")>-1)
370                 {
371                 cquery=cquery.replace("&lt;","<");
372                 }
373         while (cquery.indexOf("&gt;")>-1)
374                 {
375                 cquery=cquery.replace("&gt;",">");
376                 }
377         top.sw.agg();
378         }
379 function ripristina()
380         {
381         //alert (actinput+" "+storia.length);
382         if (numeroazioniannullate>0)
383                 {
384                 numeroazioniannullate--;
385                 query=storia[actinput+1];actinput++;
386                 qw.document.close();
387                 qw.document.write(query);
388                 aggform();
389                 sw.apply();
390                 aggcw();
391                 cw.focus();
392                 }
393         }
394 function annulla()
395         {
396         //alert (actinput+" "+storia.length);
397         if (actinput>0)
398                 {
399                 numeroazioniannullate++;
400                 query=storia[actinput-1];actinput--;
401                 qw.document.close();
402                 qw.document.write(query);
403                 aggform();
404                 sw.apply();
405                 if (query=="*"){cw.location=top.topurl+action+"set.html";ltr="*";} else {aggcw();}
406                 cw.focus();
407                 }
408         }
409 function parse() // prende la stringa che si sta tentando di inserire nella query, aggiunge i link dove necessario e mette il risultato nella variabile "fb"
410         {
411         while (fb.indexOf("[set]")>-1){
412         if (fb.indexOf("set")>0)
413                 {
414       fb=fb.replace("[set]","<A HREF="+top.topurl+action+"set.html target=cw onclick=top.savelink("+top.storeps+",'s')>[?set"+top.storeps+"]</A>");
415                 top.storeps++;
416                 }
417                                          }
418         while (fb.indexOf("[val]")>-1){
419         if (fb.indexOf("val")>0)
420                 {
421       fb=fb.replace("[val]","<A HREF="+top.topurl+action+"val.html target=cw onclick=top.savelink("+top.storepv+",'v')>[?val"+top.storepv+"]</A>");
422                 top.storepv++;
423                 }
424                                          }
425         while (fb.indexOf("[boole]")>-1){
426         if (fb.indexOf("boole")>0)
427                 {
428                 fb=fb.replace("[boole]","<A HREF="+top.topurl+action+"boole.html target=cw onclick=top.savelink("+top.storepb+",'b')>[?bol"+top.storepb+"]</A>");
429                 top.storepb++;
430                 }
431                                          }
432         }
433 function aggq() // aggiorna la query sostituendo l' ultimo link editato con la stringa inserita, poi aggiorna tutti i frame.
434         {
435         //window.open(top.topurl+action+"summary.html","cw");
436         qw.document.close();
437         fb=stadd;       
438         nst=ltr.substring(5,(ltr.length-1));// alert(nst+" "+ltr);
439         query=query.replace("<A HREF="+top.topurl+action+"set.html target=cw onclick=top.savelink("+nst+",'s')>"+ltr+"</A>",ltr);
440         query=query.replace("<A HREF="+top.topurl+action+"val.html target=cw onclick=top.savelink("+nst+",'v')>"+ltr+"</A>",ltr);
441         query=query.replace("<A HREF="+top.topurl+action+"boole.html target=cw onclick=top.savelink("+nst+",'b')>"+ltr+"</A>",ltr);
442         parse();
443         query=query.replace(ltr,fb);
444         actinput++;storia[actinput]=query;numeroazioniannullate=0;//alert (actinput+" "+storia.length);
445         qw.document.write(query);aggform();
446         aggcw();
447         cw.focus();
448         }
449 var re1 = /(.*)\?.*/;
450 var re2 = /(.*)\/.*/;
451 var topurl=document.location+"";
452 topurl = topurl.replace(re1,"$1");
453 topurl = topurl.replace(re2,"$1");
454 //var topurl=document.location.protocol+'//'+document.location.host;
455 var action="/getpage?url=";
456 //var action="";
457
458
459 // UTILITY FUNCTIONS FOR templateambigpdq1.html
460 function templateambigpdq1_armageddon()
461         {
462         top.initialize();
463         top.window.open(top.topurl+top.action+"start.html","qw");
464         top.window.open(top.topurl+top.action+"blank.html","cw");
465         top.window.open(top.topurl+top.action+"blank.html","hw");
466         top.window.open(top.topurl+top.action+"blank.html","gw");
467         top.window.open(top.topurl+top.action+"blank.html","sw");
468         }
469
470 function templateambigpdq1_resetta()
471         {
472         if (confirm("This will erase your query and start a new one. Are you sure you want to do this?"))
473                 {templateambigpdq1_armageddon();}
474         }
475
476 function templateambigpdq1_listauri(document,elenco)
477         {
478         for (i=0;i<elenco.length;i++)
479                 {
480                 document.write("<input type=checkbox name=uricheck value="+elenco[i]+"> "+elenco[i]+"<br>"); 
481                 }
482         }
483
484 function templateambigpdq1_invia(document,top,elenco,ident)
485         {
486         vecchiavlds=top.vlds.length;
487         stringa=top.topurl+"/"+top.current_query+"?term="+top.terminecic;
488         stringa=stringa+"&aliases="+top.listaliases;
489         stringa=stringa+"&choices=";
490   var choices = "";
491         top.vlds[top.vlds.length]=ident;
492         for (j=0;j<elenco.length;j++)
493                 {
494                 if (document.disamb.uricheck[j].checked)
495                         {
496                         top.vlds[top.vlds.length]=document.disamb.uricheck[j].value;
497                         }
498                 }
499         top.vlds[top.vlds.length]=";";
500         for (j=0;j<top.vlds.length;j++)
501         {
502            choices=choices+(top.vlds[j]==";"?";":escape(top.vlds[j]))+" ";
503         }
504         choices=choices.substring(0,choices.length-2);
505   top.choices = choices;
506   stringa=stringa+escape(choices);
507         if (top.vlds.length==vecchiavlds){alert("You must select at least one of the options.");}
508         else
509         {
510            window.open(ask_uwobo(stringa),"cw");
511         }
512         } 
513
514   function templateambigpdq1_selezionaCostanti(document,elenco) {
515     for (i=0; i<elenco.length; i++) {
516       if (elenco[i].substring(elenco[i].length-4, elenco[i].length) != ".var") {
517         document.disamb.uricheck[i].checked = true;
518       } else {
519         document.disamb.uricheck[i].checked = false;
520       }
521     }
522   }
523
524
525
526 // UTILITY FUNCTIONS FOR templateambigpdq2.html
527 function templateambigpdq2_armageddon()
528         {
529         top.initialize();
530         top.window.open(top.topurl+top.action+"start.html","qw");
531         top.window.open(top.topurl+top.action+"blank.html","cw");
532         top.window.open(top.topurl+top.action+"blank.html","hw");
533         top.window.open(top.topurl+top.action+"blank.html","gw");
534         top.window.open(top.topurl+top.action+"blank.html","sw");
535         }
536
537 function templateambigpdq2_resetta()
538         {
539         if (confirm("This will erase your query and start a new one. Are you sure you want to do this?"))
540                 {templateambigpdq2_armageddon();}
541         }
542
543 function templateambigpdq2_listainterpretazioni(document,elenco,labels)
544         {
545         for (i=0;i<elenco.length;i++)
546                 {
547                       document.write("<input type=radio name=interp value="+elenco[i]+"> "+labels[i]+"<br />"); 
548                 }
549         }
550
551 function templateambigpdq2_invia(document,elenco)
552         {
553         stringa=top.topurl+"/"+top.current_query+"?term="+top.terminecic;
554         stringa=stringa+"&aliases=";
555         controllo=stringa.length;
556         for (j=0;j<elenco.length;j++)
557                 {
558                 if (document.disamb.interp[j].checked)
559                         {
560                         stringa=stringa+escape(elenco[j]);
561
562       // TODO da implementare nella terza fase
563                         //top.aliasglob[top.aliasglob.length]=document.disamb.interp[j].value;
564
565                         //for (k=0;k<top.aliasglob.length;k++){alert(top.aliasglob[k])}
566                         //top.listaliases=top.listaliases+document.disamb.interp[j].value;//in caso di query ulteriori con la stessa lista di alias
567                         }
568                         
569                 }
570         if (stringa.length!=controllo) 
571                 {
572                 window.open(ask_uwobo(stringa),"cw");
573                 }
574                 else {alert("You must choose one option.");}
575         } 
576
577
578
579 // UTILITY FUNCTIONS FOR templateambigpdq3.html
580 function templateambigpdq3_init(aliases)
581 {
582    top.aliasglob = new Array();
583    for (i=0; i<aliases.length; i++) {
584       top.aliasglob[i] = aliases[i];
585    }
586    top.vlds=new Array();
587    top.window.open(top.topurl+top.action+"editorpdq.html", "sw");
588 }
589
590 // UTILITY FUNCTIONS FOR constraints_choice_template.html
591 function get_value_of_checkbox(checkbox)
592   {
593     return (checkbox.checked ? "1" : "0");
594   }
595
596 function constraints_choice_template_invia(document,aliases,constr_obj_len,constr_rel_len,constr_sort_len)
597         {
598         stringa=top.topurl+"/"+top.current_query+"?term="+top.terminecic;
599         stringa=stringa+"&aliases="+escape(aliases);
600         stringa=stringa+"&choices="+escape(top.choices);
601         stringa=stringa+"&constraints=";
602         for (j=0;j<constr_obj_len;j++)
603          {
604           stringa += document.constraints.constr_obj[j].checked ? "1" : "0";
605       stringa += !document.constraints.obj_depth[j] ||
606                  document.constraints.obj_depth[j].value == "" ? "_" :
607                  document.constraints.obj_depth[j].value;
608       if (j < constr_obj_len - 1) { stringa += "," }
609          }
610   stringa += ":";
611         for (j=0;j<constr_rel_len;j++)
612          {
613           stringa += document.constraints.constr_rel[j].checked ? "1" : "0";
614       stringa += document.constraints.rel_depth[j].value == "" ? "_" :
615                  document.constraints.rel_depth[j].value;
616         if (j < constr_rel_len - 1) { stringa += "," }
617          }
618   stringa += ":";
619         for (j=0;j<constr_sort_len;j++)
620          {
621           stringa += document.constraints.constr_sort[j].checked ? "1" : "0";
622       stringa += document.constraints.sort_depth[j].value == "" ? "_" :
623                  document.constraints.sort_depth[j].value;
624       if (j < constr_sort_len - 1) { stringa += "," }
625          }
626   stringa += ":"+get_value_of_checkbox(document.constraints.only_obj)+
627              ":"+get_value_of_checkbox(document.constraints.only_rel)+
628              ":"+get_value_of_checkbox(document.constraints.only_sort);
629         window.open(ask_uwobo(stringa),"cw");
630         } 
631 </SCRIPT>
632 </HEAD>
633   <SCRIPT>
634     document.write(' <FRAMESET ROWS="69%,31%"> <FRAMESET COLS="40%,60%"> <FRAMESET ROWS="46%,54%"> <FRAME NAME="qw" SRC="'+topurl+action+'start.html"> <FRAME NAME="sw" SRC="'+topurl+action+'blank.html"> </FRAMESET> <FRAME NAME="cw" SRC="'+topurl+action+'blank.html"> </FRAMESET> <FRAMESET COLS="49%,51%"> <FRAME NAME="gw" SRC="'+topurl+action+'blank.html" onFocus="help(-1)";> <FRAME NAME="hw" SRC="'+topurl+action+'blank.html"> </FRAMESET> </FRAMESET>');
635   </SCRIPT>
636 </HTML>