function autoCompletionDestoy(element) {
	if(element != null) {
		var parent = element.parentNode;
		parent.removeChild(element);
	}
	
	return; 
}


function autoCompletionDraw(element) {
	  var myDiv = document.createElement('div');
	  myDiv.id="autoComplDiv";
		
	  var mySelect = document.createElement('select');
	  mySelect.size=5;
	  mySelect.id="autoComplSelect";
	  myDiv.appendChild(mySelect);
	  
	  document.getElementById("gok").appendChild(myDiv);

   	  myDiv.style.position = 'absolute';
	  myDiv.style.left = '' + getPosition(element).x+ 'px';
      myDiv.style.top =  '' + (getPosition(element).y + 20) + 'px';
      mySelect.style.width = element.style.width;
      
      mySelect.onclick = function() {
      	element.value = mySelect.value;
      	autoCompletionDestoy(myDiv);
      	element.focus();
	  }
	  
	  mySelect.onkeyup = function(evt) {
		var key = window.event ? event.keyCode : evt.which;
      	if(key == 13) {
      		element.value = mySelect.value;
      		autoCompletionDestoy(myDiv);
      		element.focus();
      	}
    }
      
      return;
}


function autoCompletion(action, param, element, control) {
	element.onkeyup = function(evt) {
		if(eval(control) == false) {
			return;
		}
		
		var key = window.event ? event.keyCode : evt.which;
		
		if(element.value.length < 3) {
			autoCompletionDestoy(document.getElementById("autoComplDiv"));
			return;
		}
				
		if(key == 13) {
			autoCompletionDestoy(document.getElementById("autoComplDiv"));
			return;
		}
				
		if(key != 40) {
			var para = "";
			if(param != null) {
				para = "&" + eval(param);
			}

			autoCompletionDestoy(document.getElementById("autoComplDiv"));
	      	autoCompletionDraw(element);
			initSelectWithAjaxData(action, "key=" + element.value + para, document.getElementById("autoComplSelect"));

		} else {
      		var mySelect = document.getElementById("autoComplSelect");
			mySelect.selectedIndex = 0;
			mySelect.focus();
      	}
    }
	
	return;
}
