--- trunk2/out/js/search.js 2004/10/23 18:18:11 534 +++ trunk2/out/js/search.js 2004/10/23 23:30:40 535 @@ -35,6 +35,9 @@ var results = null; var index_path = ""; +// wildcard data about found keys URLs and position +var wildcard_url_pos = new Array(); + var watchdog_id = 0; var watchdog_callback = null; @@ -69,11 +72,6 @@ results = output; } -/* - From David Flanagan's, _Javascript:_The Definitive_Guide_, pg. 294-5, - published by O'Reilly, 4th edition, 2002 -*/ - var debug_div = null; function debug(msg) { @@ -131,7 +129,7 @@ watchdog_callback = result_handler; watchdog_id=setTimeout("watchdog()", 20000); - debug("setTimeout = "+watchdog_id); + //debug("setTimeout = "+watchdog_id); try { // Use the standard DOM Level 2 technique, if it is supported @@ -192,7 +190,7 @@ catch(ex) { clearTimeout(watchdog_id); - debug("clearTimeout = "+watchdog_id); + //debug("clearTimeout = "+watchdog_id); debug ("CAUGHT EXCEPTION!"); result_handler(new Array()); return false; @@ -218,7 +216,7 @@ function loadData_intersect(xmldoc, url, pos, result_handler) { data = new Array(); - if (loadData(xmldoc, url, pos, result_handler)) { + if (loadData(xmldoc, url, pos)) { intersect_results(data); search_query_left(result_handler); } else { @@ -227,10 +225,10 @@ } } -function loadData(xmldoc, url, pos, result_handler) { +function loadData(xmldoc, url, pos) { clearTimeout(watchdog_id); - debug("clearTimeout = "+watchdog_id); + //debug("clearTimeout = "+watchdog_id); debug ("loadData("+url+","+pos+")"); @@ -274,9 +272,19 @@ return a.frequency - b.frequency; } +function end_traverseTree(wildcard,query,result_handler) { + if (! wildcard) { + debug("Unable to locate key "+query); + result_handler(new Array()); + } else { + debug("wildcard "+query+" produced "+(wildcard_url_pos.length / 2)+" results: "+wildcard_url_pos.join(" ")); + } + +} + function traverseTree(xmldoc, url, query, result_handler) { clearTimeout(watchdog_id); - debug("clearTimeout = "+watchdog_id); + //debug("clearTimeout = "+watchdog_id); debug("traverseTree("+xmldoc+","+url+","+query+")"); @@ -296,58 +304,30 @@ for(i = 0; i < keys.length; i++) { var key = keys[i].firstChild.data; - if (wildcard) { - key = key.substr(0,qlen); - debug("wildcard key "+key+"*"); - } + if (wildcard) key = key.substr(0,qlen); - debug("traverseTree: "+key+"=="+query); + debug("? "+key+" -- "+query); if (key != '' && key != null) { // Case where current key is greater than query, descend if (key > query) { - if (key != '' && key != null) { - if (! loadXML(url.replace(".xml","/"+convert(i)+".xml"), traverseTree,query_full,result_handler)) { - debug("Unable to locate key "+query); - result_handler(new Array()); - } - // make sure of garbage collection - xmldoc=null; - return; + if (! loadXML(url.replace(".xml","/"+convert(i)+".xml"), traverseTree, query_full, result_handler)) { + end_traverseTree(wildcard, query_full, result_handler); } + // make sure of garbage collection + xmldoc=null; + return; } // Found it! else if (key==query) { if (wildcard) { - data = new Array(); - while (xmldoc && keys[i].firstChild.data.substr(0,qlen) == query) { - var url2 = url; - if (loadXML(url2.replace(/(\w+\.xml)/, "_$1"), loadData, i, result_handler)) { - // add loaded data to results - if (! results) { - results = data; - debug("wildcard loop: "+i+" created "+data.length+" results"); - } else { - for (var j=0; j