// BUSCADOR LOCALIDADES
$(function()
{
	var popup;
	var search;
	var searchPro = 0;
	var searchTimeout = null;
	var searchOlder = '';

	function buscar(aplazado)
	{
		if(searchTimeout) clearTimeout(searchTimeout);
		if(aplazado) { searchTimeout = setTimeout(arguments.callee, 500); return false; }

		content.empty().append("<div class='popup_cargando'>Cargando...</div>");

		$.getJSON("geo.php", {
			pro : searchPro,
			qry : search.val()
		}, function(data)
		{
			content.empty();
			if(data.length < 1)
			{
				content.html("<div class='popup_cargando'>No se ha encontrado nada.</div>");
				return;
			}

			if(!search.val().length && searchPro > 0)
				content.append("<a class='popup_item' loc='0' pro='0' style='text-align:center'>&uArr;&nbsp;&uArr;&nbsp;&uArr;</a>");
			else if(!search.val().length && 0 == searchPro)
				content.append("<a class='popup_item' loc='-1' style='text-align:center'><em>Fuera de Espaņa</em></a>");

			for(var i=0; i < data.length; i++)
			{
				var s = "<a class='popup_item'";
				for(var k in data[i]) if('titulo' != k) s += " "+k+"='"+data[i][k]+"'";
				content.append(s+">"+data[i].titulo+"</a>");
			}

			content.children("a").click(function()
			{
				var loc = parseInt($(this).attr("loc"));
				if(loc < 0)		// fuera de Espaņa
				{
					$("#loc_id").val('');
					$("#geoLocalidad").html("<input type='text' name='loc_titulo' id='loc_titulo' size='30' />").children("input").focus();
					popup.slideUp(300);
				}
				else if(!loc)	// cargar una provincia
				{
					search.val('');
					searchPro = $(this).attr('pro');
					buscar();
				}
				else			// localidad encontrada
				{
					$("#loc_id").val(loc);
					$("#geoLocalidad").html($(this).text() + " (" + $(this).attr('provincia') + ")");
					popup.slideUp(300);
				}
			});
		});
	}

	$("#geoExaminar").click(function()
	{
		$(".popup").slideUp(300);
		(popup = $("#popupGeo")).css('top', $(this).offset().top - $(this).parent().parent().parent().parent().offset().top /* WTF?! o.O */ + $(this).height());
		(search = popup.children("input").eq(0)).val('');
		popup.slideDown(300, function() { search.focus(); });
		content = popup.children(".popup_contenido").eq(0);
		popup.children(".popup_cerrar").click(function() { popup.slideUp(300); });
		searchPro = 0;

		setTimeout(function()
		{
			if(search && search.val() != searchOlder)
			{
				searchOlder = search.val();
				searchPro = 0;
				buscar(true);
			}
			setTimeout(arguments.callee, 200);
		}, 200);

		buscar();
	});
});
