var client 			= new XMLHttpRequest();
var selected 		= -1;
var delay;	
function show(data) {
	if (data){	
		selected = -1;
		document.getElementById('loader').style.visibility = 'hidden';	
		document.getElementById('results').innerHTML = data;
		document.getElementById('results').style.display = 'block';		
	} else {
		document.getElementById('results').innerHTML = null;
		document.getElementById('results').style.display = 'none';
	}
}
function handler() {
	if(this.readyState == 4 && this.status == 200) {
		if(this.responseText != null){
			show(this.responseText);
		} else {
			show(null);
		} 
	} else if (this.readyState == 4 && this.status != 200) {
		show(null);
	}
}
function lookup(){
	if (document.getElementById('keywords').value){
		client.onreadystatechange = handler;
		client.open("GET", "/html5/tinus/lookup.php?chars="+document.getElementById('keywords').value);
		client.send();
		document.getElementById('loader').style.visibility = 'visible';
	} else {
		show(null);
	}
}
function pressed(event){
	var keyCode = event.keyCode;
	if (keyCode != 40 && keyCode != 38 && keyCode != 13){
		clearTimeout(delay);
		delay = setTimeout(lookup,200);
	} else {
		arrow(keyCode);
	}
}
function add(id){
	var selectedCount = document.getElementById('list').getElementsByClassName('contact').length;
	if (!selectedCount) selectedCount = 0;
	var div 				= document.getElementById('list')
	var newDiv 				= document.createElement('div');
	newDiv.setAttribute('class','contact');
	newDiv.setAttribute('id','selected'+selectedCount);
	newDiv.innerHTML		= document.getElementById(id).innerHTML;
	div.appendChild(newDiv);
	addEvent(newDiv,'click',function(){removeObj(this)});
	document.getElementById(id).style.display = 'none';
	document.getElementById('selectedSection').style.display = 'block';	
	document.getElementById('keywords').focus();
}
function removeObj(obj){
	obj.parentNode.removeChild(obj);
	var selectedCount = document.getElementById('list').getElementsByClassName('contact').length;
	if (!selectedCount) document.getElementById('selectedSection').style.display = 'none';	
	document.getElementById('keywords').focus();	
}
function addEvent( obj, type, fn ){
	if (obj.addEventListener)
		obj.addEventListener( type, fn, false );
	else if (obj.attachEvent){
		obj["e"+type+fn] = fn;
		obj[type+fn] = function() { obj["e"+type+fn]( window.event ); }
		obj.attachEvent( "on"+type, obj[type+fn] );
	}
}
function arrow(keyCode){
	var contactCount = document.getElementById('results').getElementsByClassName('contact').length;

	id = selected;

	if (id>-1) document.getElementById('contact'+id).className = 'contact';			
	
	if (keyCode == 13) {
		add('contact'+id);							// Enter
		return;
	}
	if (keyCode == 38) id = id-1;					// Go down		
	if (keyCode == 40) id = id+1;					// Go up
	if (id < 0) id = contactCount-1;				// Go to bottom
	if (id >= contactCount) id = 0;					// Go to top
	
	var obj = document.getElementById('contact'+id);
	selected = id;	
	
	if (obj.style.display != 'none'){
		obj.className = 'contact selected';					
	} else {
		arrow(keyCode);			
	}	
}