var position;
var oxmlm,ohttp;
var maxrows;
var container1,input1;
var ismouseover;
var nn6=document.getElementById&&!document.all;

function getasp(page,spar)
{par=""+spar;
  if(window.XMLHttpRequest) ohttp=new XMLHttpRequest();
  else if(window.ActiveXObject) ohttp=new ActiveXObject("Microsoft.XMLHTTP");
  ohttp.onreadystatechange=filloxml
  ohttp.open("POST",page,true);
  ohttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
  ohttp.setRequestHeader("Content-length", par.length);
  ohttp.setRequestHeader("Connection", "close");
  ohttp.send(par);
  try{ret=ohttp.responseText;}  //nothing to return with async=true when open, must use onreadystatechange
  catch(err){err1=err.description;ret="";}
  return ret;
}
function filloxml() {if(ohttp.readyState==4 && ohttp.status==200) {oxmlm=loadxml(ohttp.responseText);updatecontainer2();}}

function loadxml(stxt)
{var sxml;
  if(window.DOMParser) {parser=new DOMParser();sxml=parser.parseFromString(stxt,"text/xml");}
  else {sxml=new ActiveXObject("Microsoft.XMLDOM");sxml.async="false";sxml.loadXML(stxt);}
  return sxml;
}

function getmaxrows(sxml,spath)
{if(sxml.evaluate) maxr=sxml.evaluate(spath, sxml, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null).snapshotLength;
  else if(sxml.selectNodes("/")) maxr=sxml.selectNodes(spath).length
  return maxr
}

function getvalue(sxml,spath,spos)
{if(sxml.evaluate) ret=sxml.evaluate(spath, sxml, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null).snapshotItem(spos);
  else if(sxml.selectNodes("/")) ret=sxml.selectNodes(spath).item(spos)
  //else return sxml.getElementsByTagName(tbl)[spos].getAttribute(fld)
  if(ret) return ret.nodeValue;
  else return "";
}

function getxml(what)
{otxt=getasp("srchajax.asp","act=select&what="+what);
  if(otxt!="") {oxml=loadxml(otxt);return oxml;} //can use directly ohttp.responseXML;
  else return null;
}

function updatecontainer(e,me)
{ev=nn6?e:event;
  //me=nn6?ev.target:ev.srcElement;
  rwhat=new String(me.value);
  if(ev.keyCode==40 || ev.keyCode==38) return;
  else if(rwhat.length<=1) {container1.style.display='none';return;}
  oxmlm=getxml(rwhat);
  if(oxmlm!=null) updatecontainer2();
}

function updatecontainer2()
{maxrows=getmaxrows(oxmlm,"//searchkeys/@id");
  ss=""
  for(i=0;i<maxrows;i++)
  {ss+='<a href="#" class="item" onclick="suggest(this.innerHTML)">'+getvalue(oxmlm,"//searchkeys/@keyname",i).toLowerCase()+"</a><br />"
  }
  container1.innerHTML=ss;
  if(maxrows>0) container1.style.display="";
  position=-1;
}

function suggest(sgst)
{input1.value=sgst;
  container1.style.display="none";
}

function closecontainer()
{if(ismouseover==0) container1.style.display='none';
}

function dokeypress(e)
{ev=nn6?e:event;
  if(maxrows>0)
  {if(ev.keyCode==40) {if(position<maxrows-1) position++;suggest(container1.childNodes[2*position].innerHTML);}
    if(ev.keyCode==38) {if(position>0) position--;suggest(container1.childNodes[2*position].innerHTML);}
  }
}

