
var qF;
var lURL;
var dn;
var ifn;
var lastVal="";
var val="";
var xmlHttp;
var ch=new Object();
var sr=false;
var gD;
var dF=false;
var DBC="#eeeeee";
var DHC="#CBE1EE";
var qFLength=100;
var fN;
var sbi;


function InitQueryCode(i,u,f,s){
  qF=document.getElementsByName(i).item(0);
  qF.onblur=hDv;
  qF.onkeydown=kH;
  qF.autocomplete="off";
  lURL=u;
  ifn="queryiframe";
  dn="querydiv";
	fN=f;
	sbi=s;
	lastVal=escape(qF.value);
  aCh("",new Array(),new Array());
  setTimeout("mainLoop()",100);
}


function aCh(qs,ra) {
  ch[qs]=new Array(ra);
}

mainLoop=function(){
  val=escape(qF.value);
	if( lastVal !=val && sr==false){
   var cr=ch[val];
   if( qF.value.length > 2){
    if(cr) shQd(val,cr[0],cr[1]);
    else dRq(val);
	 }
	 else {
	  sD(false);
	 }		
   lastVal=val;
  }
  setTimeout("mainLoop()",100);
  return true;
}
;


function gDv(divID){
  if(!gD){
    if(!document.getElementById(divID)){
      var nNd=document.createElement("div");
      nNd.setAttribute("id",divID);
      document.body.appendChild(nNd);
    }
    gD=document.getElementById(divID);
    var x=qF.offsetLeft;
    var y=qF.offsetTop+qF.offsetHeight;
    var w=qF.offsetWidth;
    if(/Firefox[\/\s](\d+\.\d+)/.test(navigator.userAgent)){ 
     w=w-2;
    }			
    var parent=qF;
    while(parent.offsetParent){
      parent=parent.offsetParent;
      x+=parent.offsetLeft;
      y+=parent.offsetTop;
    }
    if(!dF){
      gD.style.backgroundColor=DBC;
      gD.style.fontFamily="Arial,Tahoma,Arial,Verdana,sans-serif";
      gD.style.border="1px solid black";
      gD.style.fontSize="72%";
      gD.style.position="absolute";
      gD.style.left=(x+1)+"px";
      gD.style.top=y+"px";
      gD.style.visibility="hidden";
      gD.style.width=w+"px";
      gD.style.zIndex=10000;
      dF=true;
    }
  }
  
  return gD;
}


function shQd(qs,ra){
  var d=gDv(dn);
  while(d.childNodes.length > 0)
    d.removeChild(d.childNodes[0]);
  for(var i=0; i < ra.length; i++) {
    var r=document.createElement("div");
    r.style.cursor="pointer";
    r.style.padding="1px 3px 1px 3px";
    _uR(r);
    r.onmousedown=sRs;
    r.onmouseover=hR;
    r.onmouseout=unhR;
    var r1=document.createElement("span");
    r1.className="r1";
    r1.style.textAlign="left";
    r1.innerHTML=ra[i];
    r.appendChild(r1);
    d.appendChild(r);
  }
  if(!ch[qs]) aCh(qs,ra);
  sD(ra.length > 0);
}


function sRs(){
  _sRs(this);
}

function _sRs(item){
  var s=item.getElementsByTagName("span");
  if(s){
    for(var i=0; i < s.length; i++){
      if(s[i].className=="r1"){
        qF.value=s[i].innerHTML;
        lastVal=val=escape(qF.value);
        sr=false;
        mainLoop();
        qF.focus();
        sD(false);
        if(sbi==1)document.getElementById(fN).submit();
        return;
      }
    }
  }
}


function hR(){
  _hR(this);
}

function _hR(item){
  item.style.backgroundColor=DHC;
}


function unhR(){
  _uR(this);
}

function _uR(item){
  item.style.backgroundColor=DBC;
}


function sD(s){
  var d=gDv(dn);
  if(s)
    d.style.visibility="visible";
  else
    d.style.visibility="hidden";

  adjF();
}


function hDv(){
  sD(false);
}


function adjF(){
  if(!document.getElementById(ifn)){
    var nNd=document.createElement("iFrame");
    nNd.setAttribute("id",ifn);
    nNd.setAttribute("src","javascript:false;");
    nNd.setAttribute("scrolling","no");
    nNd.setAttribute("frameborder","0");
    document.body.appendChild(nNd);
  }
  
  ifd=document.getElementById(ifn);
  var d=gDv(dn);
  
  try{
    ifd.style.position="absolute";
    ifd.style.width=d.offsetWidth;
    ifd.style.height=d.offsetHeight;
    ifd.style.top=d.style.top;
    ifd.style.left=d.style.left;
    ifd.style.zIndex=d.style.zIndex - 1;
    ifd.style.visibility=d.style.visibility;
  } catch(e){
  }
}

function getXMLHTTP(){
  var A=null;
  
  try{
    A=new ActiveXObject("Msxml2.XMLHTTP");
  }catch(e){
    try{
      A=new ActiveXObject("Microsoft.XMLHTTP");
    } catch(oc){
      A=null;
    }
  }
  
  if(!A && typeof XMLHttpRequest !="undefined"){
    A=new XMLHttpRequest();
  }
  
  return A;
}



function dRq(queryString){
  sr=true;
  if(xmlHttp && xmlHttp.readyState !=0){
    xmlHttp.abort()
  }
  
  xmlHttp=getXMLHTTP();
  if(xmlHttp){
    xmlHttp.open("GET",lURL+queryString,true);
    xmlHttp.onreadystatechange=function(){
      if(xmlHttp.readyState==4 && xmlHttp.responseText && sr){
        eval(xmlHttp.responseText);
        sr=false;
      }
    }
   ;
    
    xmlHttp.send(null);
  }
  
}


function kH(evt){

  var d=gDv(dn);
  if(d.style.visibility=="hidden")
    return true;

  if(!evt && window.event){
    evt=window.event;
  }
  var k=evt.kCode;

  var KU=38;
  var KD=40;
  var KE=13;
  var KB=9;
  
  if((k !=KU) &&(k !=KD) &&(k !=KE) &&(k !=KB))
    return true;

  var sn=gSS(d);
  var ss=sSS(d,sn);
  
  if((k==KE) ||(k==KB)){
    if(ss)
      _sRs(ss);
    evt.cancelBubble=true;
    return false;
  } else{
    if(k==KU)
      ss=sSS(d,sn - 1);
    if(k==KD)
      ss=sSS(d,sn+1);
    if(ss)
      _hR(ss);
  }
  
  sD(true);
  return true;
}


function gSS(d){
  var c=-1;
  var s=d.getElementsByTagName("div");
  if(s){
    for(var i=0; i < s.length; i++){
      c++;
      if(s[i].style.backgroundColor !=d.style.backgroundColor)
        return c;
    }
  }
  return -1;
}


function sSS(d,sn){
  var c=-1;
  var ts;
  var s=d.getElementsByTagName("div");
  if(s){
    for(var i=0; i < s.length; i++){
      if(++c==sn){
        _hR(s[i]);
        ts=s[i];
      } else{
        _uR(s[i]);
      }
    }
  }
  
  return ts;
}

