	/************************************************************************************************************
	(C) www.dhtmlgoodies.com, April 2006
	
	This is a script from www.dhtmlgoodies.com. You will find this and a lot of other scripts at our website.	
	
	Terms of use:
	You are free to use this script as long as the copyright message is kept intact. However, you may not
	redistribute, sell or repost it without our permission.
	
	Thank you!
	
	www.dhtmlgoodies.com
	Alf Magne Kalleland
	
	************************************************************************************************************/	

	var ajax1Box_offsetX = 0;
	var ajax1Box_offsetY = 0;
	var ajax1_list_externalFile = 'city.asp';	// Path to external file
	var minimumLettersBeforeLookup = 1;	// Number of letters entered before a lookup is performed.
	
	var ajax1_list_objects = new Array();
	var ajax1_list_cachedLists = new Array();
	var ajax1_list_activeInput = false;
	var ajax1_list_activeItem;
	var ajax1_list_optionDivFirstItem = false;
	var ajax1_list_currentLetters = new Array();
	var ajax1_optionDiv = false;
	var ajax1_optionDiv_iframe = false;

	var ajax1_list_MSIE = false;
	if(navigator.userAgent.indexOf('MSIE')>=0 && navigator.userAgent.indexOf('Opera')<0)ajax1_list_MSIE=true;
	
	function ajax1_getTopPos(inputObj)
	{
		
	  var returnValue = inputObj.offsetTop;
	  while((inputObj = inputObj.offsetParent) != null){
	  	returnValue += inputObj.offsetTop;
	  }
	  return returnValue;
	}
	function ajax1_list_cancelEvent()
	{
		return false;
	}
	
	function ajax1_getLeftPos(inputObj)
	{
	  var returnValue = inputObj.offsetLeft;
	  while((inputObj = inputObj.offsetParent) != null)returnValue += inputObj.offsetLeft;
	  
	  return returnValue;
	}
	
	function ajax1_option_setValue(e,inputObj)
	{
		if(!inputObj)inputObj=this;
		ajax1_list_activeInput.value = inputObj.innerHTML;
		if(document.getElementById(ajax1_list_activeInput.name + '_hidden'))document.getElementById(ajax1_list_activeInput.name + '_hidden').value = inputObj.id; 
		ajax1_options_hide();
	}
	
	function ajax1_options_hide()
	{
		ajax1_optionDiv.style.display='none';	
		if(ajax1_optionDiv_iframe)ajax1_optionDiv_iframe.style.display='none';
	}

	function ajax1_options_rollOverActiveItem(item,fromKeyBoard)
	{
		if(ajax1_list_activeItem)ajax1_list_activeItem.className='optionDiv';
		item.className='optionDivSelected';
		ajax1_list_activeItem = item;
		
		if(fromKeyBoard){
			if(ajax1_list_activeItem.offsetTop>ajax1_optionDiv.offsetHeight){
				ajax1_optionDiv.scrollTop = ajax1_list_activeItem.offsetTop - ajax1_optionDiv.offsetHeight + ajax1_list_activeItem.offsetHeight + 2 ;
			}
			if(ajax1_list_activeItem.offsetTop<ajax1_optionDiv.scrollTop)
			{
				ajax1_optionDiv.scrollTop = 0;	
			}
		}
	}
	
	function ajax1_option_list_buildList(letters,paramToExternalFile)
	{
		
		ajax1_optionDiv.innerHTML = '';
		ajax1_list_activeItem = false;
		if(ajax1_list_cachedLists[paramToExternalFile][letters].length<=1){
			ajax1_options_hide();
			return;			
		}
		ajax1_list_optionDivFirstItem = false;
		var optionsAdded = false;
		for(var no=0;no<ajax1_list_cachedLists[paramToExternalFile][letters].length;no++){
			if(ajax1_list_cachedLists[paramToExternalFile][letters][no].length==0)continue;
			optionsAdded = true;
			var div = document.createElement('DIV');
			var items = ajax1_list_cachedLists[paramToExternalFile][letters][no].split(/###/gi);
			div.innerHTML = items[items.length-1];
			div.id = items[0];
			div.className='optionDiv';
			div.onmouseover = function(){ ajax1_options_rollOverActiveItem(this,false) }
			div.onclick = ajax1_option_setValue;
			if(!ajax1_list_optionDivFirstItem)ajax1_list_optionDivFirstItem = div;
			ajax1_optionDiv.appendChild(div);
		}	
		if(optionsAdded){
			ajax1_optionDiv.style.display='block';
			if(ajax1_optionDiv_iframe)ajax1_optionDiv_iframe.style.display='';
		}
					
	}
	
	function ajax1_option_list_showContent(ajax1Index,inputObj,paramToExternalFile)
	{
		var letters = inputObj.value;
		var content = ajax1_list_objects[ajax1Index].response;
		var elements = content.split('|');
		ajax1_list_cachedLists[paramToExternalFile][letters] = elements;
		ajax1_option_list_buildList(letters,paramToExternalFile);
		
	}
	
	function ajax1_option_resize(inputObj)
	{
		ajax1_optionDiv.style.top = (ajax1_getTopPos(inputObj) + inputObj.offsetHeight + ajax1Box_offsetY) + 'px';
		ajax1_optionDiv.style.left = (ajax1_getLeftPos(inputObj) + ajax1Box_offsetX) + 'px';
		if(ajax1_optionDiv_iframe){
			ajax1_optionDiv_iframe.style.left = ajax1_optionDiv.style.left;
			ajax1_optionDiv_iframe.style.top = ajax1_optionDiv.style.top;			
		}		
		
	}
	
	function ajax1_showOptions(inputObj,paramToExternalFile)
	{
		
		if(ajax1_list_currentLetters[inputObj.name]==inputObj.value)return;
		if(!ajax1_list_cachedLists[paramToExternalFile])ajax1_list_cachedLists[paramToExternalFile] = new Array();
		ajax1_list_currentLetters[inputObj.name] = inputObj.value;
		if(!ajax1_optionDiv){
			ajax1_optionDiv = document.createElement('DIV');
			ajax1_optionDiv.id = 'ajax1_listOfOptions';	
			document.body.appendChild(ajax1_optionDiv);
			
			if(ajax1_list_MSIE){
				ajax1_optionDiv_iframe = document.createElement('IFRAME');
				ajax1_optionDiv_iframe.border='0';
				ajax1_optionDiv_iframe.style.width = ajax1_optionDiv.clientWidth + 'px';
				ajax1_optionDiv_iframe.style.height = ajax1_optionDiv.clientHeight + 'px';
				ajax1_optionDiv_iframe.id = 'ajax1_listOfOptions_iframe';
				
				document.body.appendChild(ajax1_optionDiv_iframe);
			}
			
			var allInputs = document.getElementsByTagName('INPUT');
			for(var no=0;no<allInputs.length;no++){
				if(!allInputs[no].onkeyup)allInputs[no].onfocus = ajax1_options_hide;
			}			
			var allSelects = document.getElementsByTagName('SELECT');
			for(var no=0;no<allSelects.length;no++){
				allSelects[no].onfocus = ajax1_options_hide;
			}

			var oldonkeydown=document.body.onkeydown;
			if(typeof oldonkeydown!='function'){
				document.body.onkeydown=ajax1_option_keyNavigation;
			}else{
				document.body.onkeydown=function(){
					oldonkeydown();
				ajax1_option_keyNavigation() ;}
			}
			var oldonresize=document.body.onresize;
			if(typeof oldonresize!='function'){
				document.body.onresize=function() {ajax1_option_resize(inputObj); };
			}else{
				document.body.onresize=function(){oldonresize();
				ajax1_option_resize(inputObj) ;}
			}
				
		}
		
		if(inputObj.value.length<minimumLettersBeforeLookup){
			ajax1_options_hide();
			return;
		}
				

		ajax1_optionDiv.style.top = (ajax1_getTopPos(inputObj) + inputObj.offsetHeight + ajax1Box_offsetY) + 'px';
		ajax1_optionDiv.style.left = (ajax1_getLeftPos(inputObj) + ajax1Box_offsetX) + 'px';
		if(ajax1_optionDiv_iframe){
			ajax1_optionDiv_iframe.style.left = ajax1_optionDiv.style.left;
			ajax1_optionDiv_iframe.style.top = ajax1_optionDiv.style.top;			
		}
		
		ajax1_list_activeInput = inputObj;
		ajax1_optionDiv.onselectstart =  ajax1_list_cancelEvent;
		
		if(ajax1_list_cachedLists[paramToExternalFile][inputObj.value]){
			ajax1_option_list_buildList(inputObj.value,paramToExternalFile);			
		}else{
			ajax1_optionDiv.innerHTML = '';
			var ajax1Index = ajax1_list_objects.length;
			ajax1_list_objects[ajax1Index] = new sack();
			var url = ajax1_list_externalFile + '?' + paramToExternalFile + '=1&letters=' + inputObj.value;
		
			ajax1_list_objects[ajax1Index].requestFile = url;	// Specifying which file to get
			ajax1_list_objects[ajax1Index].onCompletion = function(){ ajax1_option_list_showContent(ajax1Index,inputObj,paramToExternalFile); };	// Specify function that will be executed after file has been found
			ajax1_list_objects[ajax1Index].runajax1();		// Execute ajax1 function		
		}
		
			
	}
	
	function ajax1_option_keyNavigation(e)
	{
		if(document.all)e = event;
		
		if(!ajax1_optionDiv)return;
		if(ajax1_optionDiv.style.display=='none')return;
		
		if(e.keyCode==38){	// Up arrow
			if(!ajax1_list_activeItem)return;
			if(ajax1_list_activeItem && !ajax1_list_activeItem.previousSibling)return;
			ajax1_options_rollOverActiveItem(ajax1_list_activeItem.previousSibling,true);
		}
		
		if(e.keyCode==40){	// Down arrow
			if(!ajax1_list_activeItem){
				ajax1_options_rollOverActiveItem(ajax1_list_optionDivFirstItem,true);
			}else{
				if(!ajax1_list_activeItem.nextSibling)return;
				ajax1_options_rollOverActiveItem(ajax1_list_activeItem.nextSibling,true);
			}
		}
		
		if(e.keyCode==13 || e.keyCode==9){	// Enter key or tab key
			if(ajax1_list_activeItem && ajax1_list_activeItem.className=='optionDivSelected')ajax1_option_setValue(false,ajax1_list_activeItem);
			if(e.keyCode==13)return false; else return true;
		}
		if(e.keyCode==27){	// Escape key
			ajax1_options_hide();			
		}
	}
