--- trunk/bfilter.js 2004/09/07 08:33:53 1
+++ trunk/bfilter.js 2004/09/07 08:37:14 2
@@ -3,6 +3,8 @@
Dobrica Pavlinusic, dpavlin@rot13.org 2004-09-06
*/
+var debug = 1;
+
function bfilter_init() {
show_status();
}
@@ -57,10 +59,48 @@
}
}
+// modified binary search to find first element with substring
+function binarySearch(arr, find) {
+ if (!arr ||
+ typeof (arr) != "object" ||
+ typeof (find) == "undefined" || !arr.length) {
+ return null;
+ }
+ var low = 0;
+ var high = arr.length - 1;
+ var middlearr = parseInt(arr.length / 2);
+ var lastTry;
+ while (low <= high) {
+ var mid = (low + high) / 2;
+ var aTry = (mid < 1) ? 0 : parseInt(mid);
+
+ var curr = arr[aTry].substr(0,find.length).toLowerCase();
+ if (debug) { results("low="+low+" high="+high+" lastTry="+lastTry+" "+aTry+": "+curr+"
"); }
+ if (curr < find) {
+ low = aTry + 1;
+ continue;
+ }
+ if (curr > find) {
+ high = aTry - 1;
+ continue;
+ }
+ if (curr == find) {
+ high = aTry - 1;
+ lastTry = aTry;
+ continue;
+ }
+ return aTry;
+ }
+ if (debug) { results("lastTry="+lastTry+"
"); }
-function bfilter(document, id, find, arr) {
+ if (typeof (lastTry) != "undefined") {
+ return lastTry;
+ } else {
+ return null;
+ }
+}
- var debug = 0;
+function bfilter(document, id, find, arr) {
results('',1);
hits = 0;
@@ -89,33 +129,31 @@
if (find.length == min_len) {
var html = '';
for (var i = 0; i < arr[part].length; i++) {
- html += "