var xmlHttp
var ListRef
var FieldRef
var StateRef
var PCodeRef

function fnDispList(str,ListID,FieldID,StateID,PCodeID,Key)	{ 

	var KeyNum;
	var CurFocusID=document.getElementById("hdnFocusID").value;
	CurFocusID = parseInt(CurFocusID);
	
	if(window.event)  { //IE
	  KeyNum = Key.keyCode;
	}
	else if(Key.which)  {  //FF,NS,OP
	  KeyNum= Key.which;
	}
	
	try  {
	  switch (KeyNum)  {
	    case 38:  //UPARW
		  if(CurFocusID==1)  {
			var i
			for(i=10;i>=0;i--)  {
			  if(document.getElementById(i))  {
			    fnHighlight(i);
				return;
			  }
			}
		  }
		  fnReset(CurFocusID);
		  CurFocusID = CurFocusID-1;
		  fnHighlight(CurFocusID);
	      return;
	    case 40:  //DWNARW
		  if(!document.getElementById(CurFocusID+1))  {
		    CurFocusID=1;
			fnHighlight(CurFocusID);
			return;
		  }
		  if(CurFocusID!=0)  {
		    fnReset(CurFocusID);
		  }
		  CurFocusID = CurFocusID+1;
		  fnHighlight(CurFocusID);
	      return;
	    case 13:  //ENT
		  var NewVal = document.getElementById("Sub"+CurFocusID).value;
		  var StateVal = document.getElementById("State"+CurFocusID).value;
		  var PCodeVal = document.getElementById("PCode"+CurFocusID).value; 
		  fnUpdateSub(NewVal,StateVal,PCodeVal);
		  document.getElementById(FieldID).select();
		  return false;
		case 33:  //PGUP
		  fnHighlight(1);
		  return;
		case 34:  //PGDWN
		  var i
		  for(i=10;i>=0;i--)  {
			if(document.getElementById(i))  {
			  fnHighlight(i);
			  return;
			}
		  }
		case 27:  //ESC
	      fnRemoveList(ListID)
	      return;
		case 9:  //TAB
		  fnRemoveList(ListID)
	      return;
		default:
		  break;
	  }
	}
	catch(err) {
	}
	document.getElementById("hdnFocusID").value="1";
	ListRef=ListID;
	FieldRef=FieldID;
	StateRef=StateID;
	PCodeRef=PCodeID;
	xmlHttp=GetXmlHttpObject();
	
	if (xmlHttp==null)	{
	  alert ("Your browser does not support this feature.");
	  return;
	}  
		  
	var url="asyncsubs.asp";
	url=url+"?ListID="+ListRef+"&FieldID="+FieldRef+"&q="+str;
	url=url+"&sid="+Math.random();
	xmlHttp.onreadystatechange=substateChanged;
	xmlHttp.open("GET",url,true);
	xmlHttp.send(null);

}

function substateChanged()  { 
  if (xmlHttp.readyState==4)	{ 
    document.getElementById(ListRef).innerHTML=xmlHttp.responseText;
    document.getElementById(ListRef).style.display="block";
    fnHighlight(1);
  }
}

function fnHighlight(RowID)	{
	var PrevSelect = document.getElementById("hdnFocusID").value;
	PrevSelect = parseInt(PrevSelect);
	try  {
	  if(PrevSelect!=0)  {
	    fnReset(PrevSelect);
	  }
	  document.getElementById(RowID).style.background='#cfcdd4';
	  document.getElementById("S"+RowID).style.background='#ffd9d9';
	  document.getElementById(RowID).style.color='#45424e';
	  document.getElementById(RowID).style.cursor="default";
	  document.getElementById("hdnFocusID").value=RowID;
	}
	catch(err)  {
	}
}

function fnReset(RowID)	{
	document.getElementById(RowID).style.background='#45424e';
	document.getElementById("S"+RowID).style.background='#ae0004';
	document.getElementById(RowID).style.color='#ffffff';
}

function fnUpdateSub(NewVal,StateVal,PCodeVal)	{
	if (NewVal!=null)	{
		document.getElementById(FieldRef).value=NewVal;
		document.getElementById(StateRef).value=StateVal;
		document.getElementById(PCodeRef).value=PCodeVal;
		document.getElementById(ListRef).innerHTML="";
		document.getElementById(ListRef).style.display="inline";
	}
}

function fnRemoveList(ListRef)	{
    if(xmlHttp)  {
	  xmlHttp.abort();
    }
	setTimeout('fnRemoveListFinally(ListRef)',550);
}

function fnRemoveListFinally(ListRef)	{
	document.getElementById(ListRef).innerHTML="";
	document.getElementById(ListRef).style.display="inline";
	document.getElementById("hdnFocusID").value="1";
}