var autoCompleteControls = new Array();
var nextClear = -1;
var txtToComplete = null;
var waitTime = -1;

function autoCompleteUserName(control){
	txtToComplete = control;
	if(waitTime != -1){
		clearTimeout(waitTime);
		waitTime = -1;
	}
	if(control.value != ""){
		waitTime = setTimeout("new Ajax.Request('/auto_complete/usernames/" + control.value + "');",200);
	}
}

function autoCompleteAnswer(control, question_id){
	txtToComplete = control;
	if(waitTime != -1){
		clearTimeout(waitTime);
		waitTime = -1;
	}
	if(control.value != ""){
		waitTime = setTimeout("new Ajax.Request('/auto_complete/answers/" + question_id + "/?value=" + control.value + "');",200);
	}
}

function autoCompleteList(s){
	if(txtToComplete){
		addList(txtToComplete, s );
	}
}

function addList(control, listItems){
	var list;
	if(!control.completeList){
		list = document.createElement('ul')
		list.className = "autoCompleteList";
		
		list.style.zIndex = 1000;
		list.style.position = "absolute";
		arr = findPos(control);
		list.style.top = arr[1] + 25;
		list.style.left = arr[0];
		list.style.width = '200px';
		
		autoCompleteControls[autoCompleteControls.length] = control;
		control.completeList = list;
		
		control.onmouseout = function(){ nextClear = setTimeout("clearCompleteList();", 500); };
		control.onmouseover = function(){
								if(nextClear != -1){
									clearTimeout(nextClear);
									nextClear = -1;
								}
							};
		list.onmouseover = control.onmouseover;
		list.onmouseout = control.onmouseout;
	}else{
		list = control.completeList;
		list.innerHTML = "";
	}
	
	list.style.display = 'block';
	
	lis = listItems.split(',');
	for(i=0; i < lis.length; i++){
		var li = document.createElement('li');
		
		li.innerHTML = unescape(lis[i]);
		li.onclick = new Function("document.getElementById('" + control.id + "').value='" + li.innerHTML + "';clearCompleteList();");
		
		list.appendChild(li);
	}
	
	control.parentNode.appendChild(list);
	
}

function clearCompleteList(){
	for(i=0; i<autoCompleteControls.length ;i++){
		autoCompleteControls[i].completeList.style.display='none';
	}
}

function findPos(obj) {
	var curleft = curtop = 0;
	if (obj.offsetParent) {
		do {
			curleft += obj.offsetLeft;
			curtop += obj.offsetTop;
		} while (obj = obj.offsetParent);
	}
	return [curleft,curtop];
}