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 site_search_init()
{
	var searchBoxes = jQuery("."+searchFieldClass);
	
	if(searchBoxes)
	{
		searchBoxes.each(function()
		{
			$search = jQuery(this);
			
			$search.keyup(function(e){
				search($search,e);
			});
			
			$search.focus(function(e){
				clearSearch($search); 
				this.select();
			});
		
			
		/*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);
		}*/
		
		});
		
		jQuery(document).mouseup(function(){ hideResults(); });
		jQuery(document).keydown(function(e){ navigateResults(e); });
	}
}

selected = null;
previousSelected = null;

function navigateResults(e)
{
	if(jQuery("#"+resultBoxClass) != undefined && jQuery("#"+resultBoxClass).css("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();
						}
						e.preventDefault();
					break;
					case 40:
						if(jQuery("#"+result+(selected+1)) != undefined){
							selected++;
							selectResult();
						}
						e.preventDefault();
					break;
					case 13:
						var resultDiv = jQuery("#"+result+selected);
						location.href = resultDiv.attr("href");
					break;
				}
			}
			
			previousSelected = selected;
		}
	}
}

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

function selectResult()
{
	var resultDiv = jQuery("#"+result+selected);
	resultDiv.attr("class", selectedResultClass);
	clearPrevious();
}

function clearPrevious()
{
	if(previousSelected != null){
		var previousResultDiv = jQuery("#"+result+previousSelected);
		if(!previousResultDiv.isUndefined){
			previousResultDiv.attr("class", result);
		}
	}
}

var searchInterval	= 500;
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(jQuery.inArray(e.keyCode, nonKeys ) == -1){	
		typing++;
		
		setTimeout(function(){ 
			checkReadySearch($field); },
		searchInterval);
	}
}

function startSearch($field)
{	
	jQuery("."+searchLoaderClass).show();	

	var field = $field;//jQuery("#"+fieldId);
	var value = $field.val();
	
	if(jQuery("."+resultBoxClass) == undefined){
		addResultDiv(fieldId);
	}
	
	var params = {value:value};
	
	if(value != ""){	
		var succes_actions = function(html)
		{			
			jQuery("#"+resultBoxClass).html(html);
			jQuery("#"+resultBoxClass).show();
			jQuery("#"+searchLoaderClass).hide();
			
			selected			= null;
			previousSelected	= null;
		}
		
		jQuery.ajax(
		{
			url		: ssAction,
			type	: "post",
			data	: params,
			success	: succes_actions
		});
	} else {
		hideResults();
	}
}

function hideResults(){
	jQuery("#"+resultBoxClass).hide();
}

function clearSearch($field)
{
	var value = $field.val();
	
	if(value == defaultSearchText){
		$field.val("");
		$field.css("color","black");
	}
}

jQuery(document).ready(function(e){ site_search_init(); });