var autocomplete_stops = {
  
  initialize: function(){
    var theBody = document.getElementsByTagName('body').item(0);
    var Result_div = document.createElement('div');
    Result_div.setAttribute('id', 'Result_div');
	Result_div.setAttribute('class', 'ac_result');
	Result_div.style.position = 'absolute';
	Result_div.style.border = '1px solid #67AEDA';
	Result_div.style.background = '#EAF7FF';
	Result_div.style.width = '138px';
    theBody.appendChild(Result_div);
  },

  fill: function(val){
	var Result_div = document.getElementById('Result_div');
    this.input_element.value = val;
    this.input_element.style.background = 'transparent';
    Result_div.innerHTML = '';
    Result_div.style.display = 'none';
  },

  change: function(obj, event, arr){
	  autocomplete_clicked = autocomplete_clicked + 1;
		var check = autocomplete_clicked;
		this.obj = obj;
		this.event = event;
		this.arr = arr;

		setTimeout("autocomplete_stops.doChange(" + check + " , " + event.keyCode + ")" , 500);
//this.doChange(obj, event, arr, check);
  },


	doChange: function(check , keycode){
		if(check == autocomplete_clicked)
		{//alert(autocomplete_clicked);

		var	obj = this.obj;
		var	arr = this.arr;
		var	event = this.event;
		var input_element = this.obj;
		var Result_div = document.getElementById('Result_div');


	if(autocomplete_in_progress || 
		!(input_element.value.length > 2) 
		|| keycode == 13  
		|| keycode == 46
		|| keycode == 16
		|| input_element.value == '' 
	){


		input_element.style.color = '#5D5D5D';
      Result_div.style.display = 'none';
      Result_div.innerHTML = '';
	}
    else{
	  autocomplete_in_progress = 1;
		this.input_element = input_element;
      if(obj.offsetParent){
        x = obj.offsetLeft;
        y = obj.offsetTop;
        h = obj.offsetHeight;
        w = obj.offsetWidth;
        while(obj = obj.offsetParent){
          x += obj.offsetLeft;
          y += obj.offsetTop;
        }
      }

      var totalChars = input_element.value.length;
      var resultsTotal = 0;

	  Result_div.innerHTML = '';
      var exactItem = false;
	  var count = 0;
	  var textbox_value = input_element.value;
      for(i=0;i<arr.length;i++){
		if(count > 10)
		{
			break;
		}
        if(arr[i].substr(0, totalChars).toLowerCase() == input_element.value.substr(0, totalChars).toLowerCase()){
          if(resultsTotal == 0 && keycode !== 8){textbox_value = arr[i];}
		if(resultsTotal > 0) Result_div.innerHTML += '<hr class="achr">';          resultsTotal++;
		  resultsStyle = 'font-family: arial; font-size: 12px; color: #5D5D5D; text-decoration: none; padding: 3px;padding-left: 5px; display: block;';
		  Result_div.innerHTML += '<a href="javascript:autocomplete_stops.fill(\'' + arr[i] + '\')" style="' + resultsStyle + '">' + arr[i] + '</a>';
			count++;
        }
        if(arr[i].toLowerCase() == input_element.value.toLowerCase()){
			exactItem = true;
			}
      }
      if(resultsTotal)
		{
			input_element.style.background = 'transparent';
			input_element.style.color = '#5D5D5D';
		}

      if(keycode !== 8){
			input_element.value = textbox_value;
        if(document.all){
          var theRange = input_element.createTextRange();
          theRange.moveStart('character', totalChars);
          theRange.moveEnd('character', input_element.value.length);
          theRange.select();
        }
        else{
          input_element.setSelectionRange(totalChars, input_element.value.length);
        }
        input_element.focus();
      }

      if(exactItem && resultsTotal < 2){
        input_element.style.background = 'transparent';
		input_element.style.color = '#5D5D5D';
        Result_div.innerHTML = '';
        Result_div.style.display = 'none';
      }
      else if(resultsTotal == 0){
        //input_element.style.background = '#ffaaaa';
		input_element.style.color = '#ff0000';
        Result_div.innerHTML = '';
        Result_div.style.display = 'none';
      }
      else{
        Result_div.style.left = (x-8) + 'px';
        Result_div.style.top = (y + h + 3) + 'px';
        Result_div.style.display = 'block';
      }
		setTimeout("finish_autocomplete()" , 100);
	}}
  }
}

function finish_autocomplete()
{
	autocomplete_in_progress = 0;
}

