
var elementoSeleccionado = -1;
var sugerencias = null;
var cacheSugerencias = {};

		Array.prototype.formateaLista = function() {
			codigoHtml = "<table style=\"cursor:pointer;\" width=\"100%\" cellpadding=\"0\" cellspacing=\"0\">";
			for(var i=0; i<this.length; i++) {
				if(i == elementoSeleccionado) {
					codigoHtml += "<tr><td class=\"seleccionado\"> "+this[i]+"</td></tr>";
				}
				else {
					codigoHtml += "<tr><td onMouseOver=\"limpia_over();this.bgColor='#000000';this.style.color='#ffffff';\" onMouseOut=\"this.bgColor='#ffffff';this.style.color='#757371';\" onclick=\"selecciona_r('"+i+"');\">&nbsp;"+this[i]+"</td></tr>";
				}
			}
			codigoHtml += "</table>";

			return codigoHtml;
			
		};

		function autocompleta() {
			var elEvento = arguments[0] || window.event;
			var tecla = elEvento.keyCode;
				if(tecla == 40) { // Flecha Abajo
					
					if(elementoSeleccionado+1 < sugerencias.length) {
						elementoSeleccionado++;
					}
					muestraSugerencias();

				}else if(tecla == 38) { // Flecha Arriba
				
					if(elementoSeleccionado > 0) {
						elementoSeleccionado--;
					}
					muestraSugerencias();

				}
				else if(tecla == 13) { // ENTER o Intro
					seleccionaElemento();
					borraLista();
					
				}else{
					var texto = document.oForm.nombre_via.value;

						// Si es la tecla de borrado y el texto es vacío, ocultar la lista
						if(tecla == 8 && texto == "") {
							borraLista();
							return;
						}
						
						if(cacheSugerencias[texto] == null) {
							var cargador = new net.CargadorContenidosCompleto("/inc/ajax/desp/autocompletamunicipios.php", 
							function() { 
								sugerencias = eval('('+this.req.responseText+')');
								if(sugerencias.length == 0) {
									sinResultados();
								}else {
									cacheSugerencias[texto] = sugerencias;
									actualizaSugerencias();
								} 
							}, 
							null, 
							"POST", 
							"municipio="+texto, 
							"application/x-www-form-urlencoded");
						}
						else {
							sugerencias = cacheSugerencias[texto];
							actualizaSugerencias();
						}
						
				}
		}
		function sinResultados() {
			document.getElementById("sugerencias").innerHTML = "<p class=\"input\">No existen municipios que empiecen con ese texto</p>";
			document.getElementById("sugerencias").style.display = "block";
			document.getElementById("bot_buscar").style.display = "none";
			document.getElementById("bot_buscar2").style.display = "none";
		}

		function actualizaSugerencias() {
			document.getElementById("bot_buscar").style.display = "";
			document.getElementById("bot_buscar2").style.display = "";
			elementoSeleccionado = -1;
			muestraSugerencias();
		}

		function selecciona_r(ciudad){
			elementoSeleccionado = ciudad
			seleccionaElemento();
			borraLista();
		}

		function seleccionaElemento(){
			if(sugerencias[elementoSeleccionado]) {
				//reemplazamos "&ntilde;" por "Ñ"
				city = sugerencias[elementoSeleccionado].replace(/&ntilde;/,"ñ");
				document.oForm.nombre_via.value = city;
				document.getElementById("bot_buscar").style.display = "";
				document.getElementById("bot_buscar2").style.display = "";
			}
		}

		function muestraSugerencias() {
			var zonaSugerencias = document.getElementById("sugerencias");
			
			zonaSugerencias.innerHTML = sugerencias.formateaLista();
			zonaSugerencias.style.display = 'block';	
		}

		function borraLista() {
			document.getElementById("sugerencias").innerHTML = "";
			document.getElementById("sugerencias").style.display = "none";
		}

		window.onload = function() {
			
			// Crear elemento de tipo <span> para mostrar las sugerencias del servidor
		//	var elSpan = document.createElement("span");
			//elSpan.id = "sugerencias";
			//document.body.appendChild(elSpan);
			document.oForm.nombre_via.onkeyup = autocompleta;
			//document.oForm.nombre_via.focus();
		}


		function limpia_over(){
			if(elementoSeleccionado != -1){
				elementoSeleccionado = -1;
				muestraSugerencias();

				//alert(elementoSeleccionado)
			}
			
		}

		function noenter(obj,e) {
			opc = true;
			tecla = (document.all) ? e.keyCode : e.which;
			
			if (tecla == 13){
				opc = false;
			}
			return opc;
		}