var topFromBox			= 20;
var leftFromBox			= 0;

var resultBoxClass		= "search_results";
var selectedResultClass	= "result_selected";
var searchFieldClass	= "search_field";
var searchBoxClass		= "search_box";
var searchLoaderClass	= "search_loader";
var result				= "result";

function init()
{
	var searchBoxes = document.getElementsByClassName(searchFieldClass);
	
	for(var i=0; i<searchBoxes.length; i++)
	{
		var id			= searchBoxes[i].id;
		var funcKeyUp	= function(e){ search(id,e); }
		var funcFocus	= function(){ clearSearch(id); this.select(); }
		
		Event.observe(searchBoxes[i], "keyup", funcKeyUp, true);
		Event.observe(searchBoxes[i], "focus", funcFocus, true);
	}
	
	Event.observe(document.body, "mouseup", function(){ hideResults(); }, true);
	Event.observe(document.body, "keydown", function(e){ navigateResults(e); }, true)
}

selected = null;
previousSelected = null;

function navigateResults(e)
{
	if($(resultBoxClass) != undefined && $(resultBoxClass).style.display != "none")
	{
		if(e.keyCode == 38 || e.keyCode == 40 || e.keyCode == 13)
		{
			if(selected == null){
				selected = 0;
				selectResult();
			} else {
				switch(e.keyCode)
				{
					case 38:
						if(selected != 0){
							selected--;
							selectResult();
						}
						Event.stop(e);
					break;
					case 40:
						if($(result+(selected+1)) != undefined){
							selected++;
							selectResult();
						}
						Event.stop(e);
					break;
					case 13:
						var resultDiv = $(result+selected);
						location.href = resultDiv.href;
					break;
				}
			}
			
			previousSelected = selected;
		}
	}
}

function mouseOverResult(i)
{
	selected			= i;
	previousSelected	= i;
}

function selectResult()
{
	var resultDiv = $(result+selected);
	resultDiv.className = selectedResultClass;
	clearPrevious();
}

function clearPrevious()
{
	if(previousSelected != null){
		var previousResultDiv = $(result+previousSelected);
		if(!previousResultDiv.isUndefined){
			previousResultDiv.className = result;
		}
	}
}

var searchInterval	= 200;
var typing			= 0;
var nonKeys			= [27,20,16,17,91,18,93,37,38,40,39,16,27,112,113,114,
				   115,116,117,118,119,120,121,122,123,18,35,36,33,34,45,45,144,44,145,19];

function checkReadySearch(field)
{
	typing--;
	if(typing == 0)
	{
		startSearch(field);
	}
}

function search(field, e)
{	
	if(nonKeys.indexOf(e.keyCode) == -1){	
		typing++;
		
		setTimeout(function(){ 
			checkReadySearch(field); },
		searchInterval);
	}
}

function startSearch(fieldId)
{	
	$(searchLoaderClass).style.display = "block";	

	var field = $(fieldId);
	var value = field.value;
	
	if($(resultBoxClass) == undefined){
		addResultDiv(fieldId);
	}
	
	var params = {value:value};
	
	if(value != ""){	
		var succes_actions = function(transport)
		{
			var responseText = transport.responseText;
			
			$(resultBoxClass).innerHTML = responseText;
			$(resultBoxClass).style.display = "block";
			$(searchLoaderClass).style.display = "none";
			
			selected			= null;
			previousSelected	= null;
		}
		
		new Ajax.Request(ssHost+"action.php",
		{
			method:			'post',
			onSuccess:		succes_actions,
			parameters: 	params
		});
	} else {
		hideResults();
	}
}

function hideResults(){
	if(!$(resultBoxClass).isUndefined){
		$(resultBoxClass).style.display = "none";
	}
}

function clearSearch(fieldId)
{
	var field = $(fieldId);
	var value = field.value;
	
	if(value == defaultSearchText){
		field.value = "";
		field.style.color = "black";
	}
}

window.onload = function(){ init(); }