
addEvent(window, "load", searchable_init);

function searchable_init() {
    // Find all tables with class searchable and make them sortable
  if (!document.getElementsByTagName) return;
  tbls = document.getElementsByTagName("input");
  for (ti=0;ti<tbls.length;ti++) {
    thisTbl = tbls[ti];
    if (((' '+thisTbl.className+' ').indexOf("searcher") != -1) && (thisTbl.id)) {
      ts_makesearchable(thisTbl);
    }
  }
}

function ts_makesearchable(elt) {
  elt.onkeypress=keypress;
}

var c=null;
function keypress(ev) {
  var code;
  if (!ev) var ev = window.event;
  if (ev.keyCode) code = ev.keyCode;
  else if (ev.which) code = ev.which;
  // ev = ev || event;
  var elt = ev.srcElement || ev.target;

  if(c!=null)window.clearTimeout(c);
  if (code==9) {
    search(elt.name,elt.getAttribute('selectname'));
    return false;
  } else {
    c=window.setTimeout('search(\''+elt.name+'\',\''+elt.getAttribute('selectname')+'\')',1000);
    return true;
  }
}

var prevs="";
var previ=-1;
function search(n1,n2) {

  var s = document.getElementsByName(n1)[0].value;
  
  scroller =  document.getElementsByName(n2)[0];

  if (s.indexOf(prevs)!=0) {
    previ = -1
  }
  var s2 = s.toUpperCase();
  var atstart = false;
  if (s2.substr(0,1) == '^') {
    s2 = s2.substring(1,s2.length);
    atstart = true;
  } 
  var found = -1;
  for (i=previ+1;i<scroller.options.length;i++) {
    var s1 = scroller.options[i].text.toUpperCase();
    var val = s1.indexOf(s2);
    if (atstart) {
      if (val == 0) {
	found = i;
	break;
      }
    } else {
      if (val != -1) {
	found = i;
	break;
      }
    }
  }
  if (found >= 0) {
    var save = scroller.options[i].selected;
    scroller.options[i].selected = true;
    scroller.options[i].selected = false;
    scroller.options[i].selected = save;
    previ = found;
  } else {
    previ = -1
  }
  prevs = s
}


