var cityIndex=new Array(26)
var savedIndex,startIndex,endIndex;
var savedInput="";
var txt,lay;

//-------------------------------------------------------------------------------------
function initAutoFill(){
	txt=document.all("S4Location");
	lay=document.getElementById("result");
	savedIndex=-1;
	startIndex=-1;
	endIndex=-1;
	doIndexCity();
}
//----------------------------------------------------------------------------------------------------	
function doIndexCity(){
	var i=0;
	var j=0;
	var lastIndex=0
	var found=false;
	for(i=0;i<cityIndex.length;i++){
		charCode=65+i;
		found=false;
		for(j=lastIndex;j<arrCity.length;j++){
			if(charCode==arrCity[j].charCodeAt(0)){
				found=true;
				lastIndex=j;
				break;
				}				
			}
			if(found)
				cityIndex[i]=j;
			else
				cityIndex[i]=-1;							
	}	
}	
//--------------------------------------------------------------------------------------	
function doMatch(){	
	var boolFound=false;
	var i=0;			
	var txtRange;
	var strToMatch=txt.value
	var len=strToMatch.length;
	var startCharCode=0;
	if(len==0){
		savedIndex=-1;
		startIndex=-1;
		endIndex=-1;
		}
	if(event.keyCode==13){
		hideLayer();		
		return true;		
	}
		
	if(len>0){
		if(event.keyCode==40){
			if(savedIndex<endIndex-1)
				savedIndex++;				
			if(savedIndex>=0){									
				boolFound=true;			
				len=arrCity[savedIndex].length;				
				}			
			displayResult(boolFound,len);
			return true;
		}
		else if(event.keyCode==38){		
				if(savedIndex>startIndex)
					savedIndex--;			
				if(savedIndex>=0){									
					boolFound=true;			
					len=arrCity[savedIndex].length;			
					}				
				displayResult(boolFound,len);
				return true
		}			
	if((event.keyCode>=65 && event.keyCode<=90)||event.keyCode==32 || event.keyCode==8){		
			setIndexes(strToMatch);  //set startIndex, endIndex
			boolFound=findAMatch(strToMatch,len,startIndex,endIndex);			
			displayResult(boolFound,len);
			return true;
		 }
	}	
	else{
		hideLayer();	
		}
}
//-----------------------------------------------------------------------------
function findAMatch(strInput,matchLength,fromIndex,toIndex){
	var n=0;
	for(n=fromIndex;n<toIndex;n++){
		if(strInput.toLowerCase()==arrCity[n].substr(0,matchLength).toLowerCase()){		
		savedIndex=n;
		return true;
		}
	}
	return false;				
}
//-------------------------------------------------------------------------------
function createARange(matchIndex,matchLength){
	var txtRange;
	txt.focus();	
	txt.value=arrCity[matchIndex];								
	txtRange=txt.createTextRange();			
	txtRange.moveStart("character",matchLength);	
	txtRange.moveEnd("character",arrCity[matchIndex].length-matchLength);				
	txtRange.select();	
}
//-------------------------------------------------------------------------------
function setIndexes(strInput){
	var startCharCode=0;
	startCharCode=strInput.toUpperCase().charCodeAt(0);
	startIndex=cityIndex[startCharCode-65];			
	if(startIndex==-1){
		startIndex=0;
		endIndex=0;
		}
		else{
			i=(startCharCode-65)+1
			while(i<cityIndex.length){
				endIndex=cityIndex[i];
				if(endIndex!=-1)
					break;
				else
					i++;							
			}
			if(endIndex==-1){
				endIndex=arrCity.length;
			}
		}
//	window.status =startIndex+"-->"+endIndex;
}
//---------------------------------------------------------------------
function displayResult(flag,matchLength){
	if(flag){					
		if(event.keyCode!=8){
			createARange(savedIndex,matchLength)
		}
		showOtherMatches(startIndex,endIndex,savedIndex);
	}else{		
		lay.style.visibility="hidden";
		startIndex=-1;
		endIndex=-1;
		savedIndex=-1;
	}
}
//--------------------------------------------------------------------------------------------------
function onFocusMatch(){
	var boolFound=false;
	var strToMatch=txt.value
	var len=strToMatch.length;
	if(len>0){
		setIndexes(strToMatch);  //set startIndex, endIndex
		boolFound=findAMatch(strToMatch,len,startIndex,endIndex);
		}
	displayResult(boolFound,len);	
}
//------------------------------------------------------------------------------------------------------	
function showOtherMatches(begin,end,matchIndex){
var i
var lay=document.getElementById("result");
var html="";
for(i=begin;i<end;i++){
	 if(matchIndex==i)
		 html=html+"<tr><td class=\"tdSelect\">"+arrCity[i]+"</td></tr>";
	else
		 html=html+"<tr><td class=\"tdleadLabel\">"+arrCity[i]+"</td></tr>";
 }	 
 lay.innerHTML="<table width=\"100%\" cellpadding=\"3\" cellspacing=\"0\">"+html+"</table>"
 lay.style.visibility="visible";
}
//---------------------------------------------------------------------------------------------------
function hideLayer(){
	var lay=document.getElementById("result");
	lay.style.visibility="hidden";	
	startIndex=-1;
	endIndex=-1;
	savedIndex=-1;	
}

