var P = new Array();
P['1']='Alava'; P['2']='Albacete'; P['3']='Alicante'; P['4']='Almería'; P['33']='Asturias'; P['5']='Avila'; P['6']='Badajoz';
P['7']='Baleares'; P['8']='Barcelona'; P['9']='Burgos'; P['10']='Cáceres'; P['11']='Cádiz'; P['39']='Cantabria'; P['12']='Castellón';
P['51']='Ceuta'; P['13']='Ciudad Real'; P['14']='Córdoba'; P['15']='A Coruña'; P['16']='Cuenca'; P['17']='Girona'; P['18']='Granada';
P['19']='Guadalajara'; P['20']='Guipuzcoa'; P['21']='Huelva'; P['22']='Huesca'; P['23']='Jaen'; P['24']='León'; P['25']='Lleida';
P['27']='Lugo'; P['28']='Madrid'; P['29']='Málaga'; P['52']='Melilla'; P['30']='Murcia'; P['31']='Navarra'; P['32']='Ourense';
P['34']='Palencia'; P['35']='Las Palmas'; P['36']='Pontevedra'; P['26']='La Rioja'; P['37']='Salamanca'; P['38']='Santa Cruz de Tenerife'; P['40']='Segovia';
P['41']='Sevilla'; P['42']='Soria'; P['43']='Tarragona'; P['44']='Teruel'; P['45']='Toledo'; P['46']='Valencia'; P['47']='Valladolid';
P['48']='Vizcaya'; P['49']='Zamora'; P['50']='Zaragoza';

function get(id) { return document.getElementById(id); }

function val(id, valor) {
	if (valor) {
		setVal(id, valor);
		return;
	}

	var obj = document.getElementById(id);
	if (obj) {
		return obj.value;
	}
	return "";
}

function setVal(id, valor) {
	var obj = document.getElementById(id);
	if (obj) {
		obj.value = valor;
	}
}

function valSelect(id) {
	return get(id).options[get(id).selectedIndex].innerHTML;
}

var geocoder = null;

function gmapsBuscarDireccionIniciar() {
	if (GBrowserIsCompatible()) {
		geocoder = new GClientGeocoder();
		
		// Comprobar si Google Maps responde
		buscarDireccion ( new Array("SPAIN"), 0, "" );
	} else {
		alert("Su navegador no soporta Google Maps.");
	}
}

function  getProps(obj, objName) {
	var output = "" ;
	for (var prop in obj) {
		output += objName + "." + prop + " = " + obj[prop] + "\n" ;
	}
	return output ;
}		

function buscarDireccion(direcciones, iDireccion, jsEncontrada, jsNoEncontrada) {
	var probando = false;
	
	if (direcciones[iDireccion] == "SPAIN") {
		probando = true;
	}
	geocoder.getLatLng(
		direcciones[iDireccion],
		function(point) {
			if (probando) {
				//if (!point) alert("Error conectando con Google Maps (comprobar Key)");
			} else {
				if (point) {
					// Encontrada
					//var sPunto = point.lng() + ", " + point.lat();
					get("gmapsLat").value = point.lat();
					get("gmapsLong").value = point.lng();
					get("gmapsCargando").innerHTML = "";
					eval(jsEncontrada);						
				} else {
					// No Encontrada, probar con otra combinación:
					if (++iDireccion < direcciones.length) {
						buscarDireccion(direcciones, iDireccion, jsEncontrada, jsNoEncontrada);
					} else {
						get("gmapsLat").value = "0";
						get("gmapsLong").value = "0";						
						get("gmapsCargando").innerHTML = "";
						eval(jsNoEncontrada);
					}
				}		
			}
	  }
	);
}

function guardarHiddens(item, valor){
	get(item).value = valor;
}

function bloquearCamposBusqueda(){
	get("calle").readOnly=true;
	get("numero").readOnly=true;
	get("idmunicipio").readOnly=true;
	get("idprovincia").readOnly=true;
	get("cp").readOnly=true;
	get("distancia").readOnly=true;
	get("unidadDistancia").disabled=true;
	if (get("tipoCentro")) get("tipoCentro").disabled=true;
	if (get("nombre")) get("nombre").readOnly=true;
	if (get("tratamiento")) get("tratamiento").readOnly=true;
	if (get("sintoma")) get("sintoma").readOnly=true;
	if (get("producto")) get("producto").readOnly=true;
}

function desBloquearCamposBusqueda(){
	get("calle").readOnly=false;
	get("numero").readOnly=false;
	get("idmunicipio").readOnly=false;
	get("idprovincia").readOnly=false;
	get("cp").readOnly=false;
	get("distancia").readOnly=false;
	get("unidadDistancia").disabled=false;
	if (get("tipoCentro")) get("tipoCentro").disabled=false;
	if (get("nombre")) get("nombre").readOnly=false;
	if (get("tratamiento")) get("tratamiento").readOnly=false;
	if (get("sintoma")) get("sintoma").readOnly=false;
	if (get("producto")) get("producto").readOnly=false;
}

 /**
 jsEncontrada, jsNoEncontrada: código javascript que se ejecutará tras la búsqueda
 */
function gmapsBuscarDireccion(jsEncontrada, jsNoEncontrada, bloquearCampos) {
	if (bloquearCampos)	bloquearCamposBusqueda();
	
	get("gmapsCargando").innerHTML = "<br /><br />Recibiendo datos de Google Maps...";	
	if (!geocoder) {
		alert ("geocoder no inicializado");
		return;	
	}
	
	var calle = val("calle");
	var numero = val("numero");
	var cp = val("cp");
	var localidad;
	if (get("localidad")) {
		localidad = val("localidad");
	} else {
		localidad = valSelect("idmunicipio");	
		if (localidad.indexOf("(") == 0) {
			localidad = "";
		}		
	}
	var provincia;
	if (get("provincia")) {
		provincia = val("provincia");
	} else {
		provincia = valSelect("idprovincia");
		if (provincia.indexOf("(") == 0) {
			provincia = "";
		}
	}
	var pais = val("pais");

	if (provincia=="" && cp>0) {
		provincia = P[Math.floor(cp/1000)];
		if (typeof provincia == "undefined") {
			provincia = "";
		}
	}

	// Probamos buscando por varias combinaciones de dirección posibles:
	var direcciones = new Array();
	direcciones[direcciones.length] =  calle + ", " + numero + ", " + cp + ", " + localidad + ", " + provincia + ", " + pais;
	direcciones[direcciones.length] =  calle + ", " + cp + ", " + localidad + ", " + provincia + ", " + pais;
	direcciones[direcciones.length] =  cp + ", " + localidad + ", " + provincia + ", " + pais;	
	direcciones[direcciones.length] =  cp + ", " + provincia + ", " + pais;		

	buscarDireccion(direcciones, 0, jsEncontrada, jsNoEncontrada);
}
