var hooked_fields = new Array();
var auto_lang;

function autocomplete_language(lang)
{
	auto_lang = lang;
}

function hook_autocomplete(input_field, results_div)
{
	var r = $(results_div);
	el_hide(results_div);
	r.className = 'autocomplete';
	input_field.onkeyup = autocomplete_key_handler;
	
	hooked_fields[input_field.name] 					= new Array();
	hooked_fields[input_field.name]['field']	 		= input_field;
	hooked_fields[input_field.name]['results_div'] 		= results_div;
	hooked_fields[input_field.name]['previous_query'] 	= '';
}

function autocomplete_mouse_blur()
{
	var field_name = this.name;
	var results_div = hooked_fields[field_name]['results_div'];	
	el_hide(results_div);
}

function autocomplete_key_handler()
{
	var field_name = this.name;
	var query = this.value;
	var results_div = hooked_fields[field_name]['results_div'];
	
	if (query.length < 3)
	{
		el_hide(results_div);
		return;
	}
	
	if (query == hooked_fields[field_name]['previous_query'])
	{
		return;
	}
	
	hooked_fields[field_name]['previous_query'].value = query;
	
	makePostRequest('recipes.php?lang=' + auto_lang + '&action=apisearch', 'field=' + field_name + '&query=' + escape(query), 'autocomplete_handler');
}

function autocomplete_handler()
{
	if (http_request.readyState == 4)
	{
		if (http_request.status == 200)
		{
			var response = http_request.responseXML.documentElement;
			var amount = response.getElementsByTagName('amount')[0].firstChild.data;
			var field = response.getElementsByTagName('field')[0].firstChild.data;
			var results_div = hooked_fields[field]['results_div'];
			
			if (Number(amount) == 0)
			{
				el_hide(results_div);
			}
			else
			{
				el_show(results_div);
				
				el_update(results_div, '');
				
				for(i = 0; i < Number(amount); i++)
				{
					var ingredient = response.getElementsByTagName('ingredient')[i].firstChild.data;
					var ingredient_div = document.createElement('div');
					ingredient_div.parent_field = field;
					ingredient_div.className = 'autocompleteitem';
					ingredient_div.innerHTML = ingredient;
					ingredient_div.onmouseover = function(){ this.className = 'autocompleteitem autocompleteitem_hover'; }
					ingredient_div.onmouseout = function(){ this.className = 'autocompleteitem'; }
					ingredient_div.onclick = function()
					{
						var field = this['parent_field'];
						hooked_fields[field]['field'].value = this.innerHTML;
						el_hide(hooked_fields[field]['results_div']);
					}
					$(results_div).appendChild(ingredient_div);
				}
				
				if (Number(amount) > 5)
				{
					$(results_div).style.height = (21 * 5) + 'px';
					$(results_div).style.overflow = 'auto';
				}
				else
				{
					$(results_div).style.height = (21 * Number(amount)) + 'px';
					$(results_div).style.overflow = '';
				}
			}
			return;
		}
	}
}
