  function doHint(str)
  {
    var obj = document.getElementById(regionSelectId);
    if (obj != null)
    {
      var region_id = obj.value;
      if (str.length < 2) 
      {
        var floater = document.getElementById(floaterId);
        if (!floater) return;
        floater.innerHTML = '';
        floater.className = hide_class;
        return;
      }
    }
    else
    {
      region_id = '';
    }
    DoCallback(ajaxPHPfile, 'region_id='+region_id+'&city_name='+str);
  }
  
	function populateHint()
	{
		var resp = req.responseXML;
		if (!resp) return;

		var root = resp.getElementsByTagName('locations').item(0);
		if (!root) return;

		var floater = document.getElementById(floaterId);
		if (!floater) return;

		floater.innerHTML = '';
		if (root.childNodes.length > 0)
			{ document.getElementById(floaterId).className = "div_show";}
		else
			{ document.getElementById(floaterId).className = "div_hide";}


		for (var i = 0; i < root.childNodes.length; i++)
		{
			var node  = root.childNodes.item(i);
			var id    = node.childNodes[0].childNodes[0].nodeValue;
			var name  = node.childNodes[1].childNodes[0].nodeValue;

			/*if (i == 0)
				floater.innerHTML = floater.innerHTML + "<a class=\"\" id=\"a_base_hint\" name=\"a_hints[]\" onmouseover=\"scrollOver(this, "+i+");\" onmouseout=\"scrollOut(this, "+i+");\" >"+name+"</a>";
			else*/
				floater.innerHTML = floater.innerHTML + "<a class=\"\" id=\"a_hints_"+i+"\" name=\"a_hints[]\" onmouseover=\"scrollOver(this, "+i+");\" onmouseout=\"scrollOut(this, "+i+");\" >"+name+"</a>";
		}

		var flexiHeight = ((root.childNodes.length*1.5) < 10) ? 10 : (root.childNodes.length*1.5);
		floater.innerHTML = floater.innerHTML + "<!--[if lte IE 6.5]><iframe style=\"height:"+flexiHeight+"em;\"></iframe><![endif]-->";
	}
	
	function scrollOver(obj, index)
	{
		if (index < 0) index = 0;
		obj.className += ' ie_hover';
    
		var floater = document.getElementById(floaterId);
    if (!floater) return;	
	
    document.getElementById(txtCityId).value = obj.innerHTML;
    
		if (currentIndex < 0) {currentIndex = 0; return;}
		var hints = document.getElementsByName('a_hints[]');
		
		hints[currentIndex].className = hints[currentIndex].className.replace(/\s?selected_index/, '');
		currentIndex = index;
	}
	
	function scrollOut(obj)
	{
		obj.className = obj.className.replace(/\s?ie_hover/, '');
	}
  
  function processKeyUp(e)
  {
    e = (e) ? e : window.event;
    if (e.keyCode != 37 && e.keyCode != 38 && e.keyCode != 39 && e.keyCode != 40)
    {
      var obj = document.getElementById(txtCityId);
      if (!obj) return;

      if (obj.value.length >= 2)
      {
        doHint(obj.value);
      }
      else
      {
        var floater = document.getElementById(floaterId);
        if (!floater) return;
        floater.className = 'div_hide';
      }
    }
  }
	
	function processKeyDown(e)
	{
    var floater = document.getElementById(floaterId);
		if (floater.className == 'div_hide') return;	
		
    e = (e) ? e : window.event;
    if (e.keyCode == 38 || e.keyCode == 40) scrollHint(0- (39 - e.keyCode));
	}

  function scrollHint(i)
  {
  
    currentIndex = currentIndex + i;
    if (currentIndex < 0) {currentIndex = 0; return;}
    
    var floater = document.getElementById(floaterId);
    if (!floater) return;

    var hints = document.getElementsByName('a_hints[]');
    
    if (currentIndex > (hints.length - 1)) { currentIndex = (hints.length - 1); return; }

    var pastIndex = (currentIndex + (0 - i));
    if (pastIndex >= 0) hints[pastIndex].className = hints[pastIndex].className.replace(/\s?selected_index/, '');
    hints[currentIndex].className += ' selected_index';
    
	  document.getElementById(txtCityId).value = hints[currentIndex].innerHTML;
		
		hints[currentIndex].focus();
		document.getElementById(txtCityId).focus();
  }
  
  function hide_Hints() 
  {
		currentIndex = -1;

    var floater = document.getElementById(floaterId);
    if (floater) floater.className = hide_class;	
  }
