// Inicializa el mapa de Google Maps
function initialize(lang) {
	if (GBrowserIsCompatible()) {
		var localizacion = new GLatLng(43.336365, -5.924798);
		var map = new GMap2(document.getElementById("map_canvas"));
		map.enableScrollWheelZoom();
		map.addControl(new GMapTypeControl());
		map.addControl(new GSmallMapControl());
		map.addControl(new GOverviewMapControl());
		
		switch (lang) {
			case "fr_FR":
				var centro = new GLatLng(44.351896, 2.896912);
				var texto = "<b>LA CASONA DE PRIORIO</b><br /><br />Vous pouvez faire d&eacute;filer la carte et zoom<br />pour voir la position plus en d&eacute;tail.";
				map.setCenter(centro, 5);
				break;
			case "de_DE":
			case "en_EN":
				var centro = new GLatLng(46.351896, 2.896912);
				var texto = "<b>LA CASONA DE PRIORIO</b><br /><br />You can drag the map and zoom in and out<br />to see the location in detail.";
				map.setCenter(centro, 5);
				break;
			case "es_ES":
			default:
				var centro = new GLatLng(43.351896, -5.896912);
				var texto = "<b>LA CASONA DE PRIORIO</b><br /><br />Puede desplazar el mapa y amplir o reducir el zoom<br />para ver la localizaci&oacute;n con m&aacute;s detalle.<br /><br />Tambi&eacute;n puede visualizar como llegar introduciendo<br />en el recuadro inferior la ciudad de origen.";
				map.setCenter(centro, 7);
				break;
		}
		
        map.addOverlay(new GMarker(localizacion));
		map.openInfoWindowHtml(localizacion, texto);
		gdir = new GDirections(map, document.getElementById("indicaciones"));
		GEvent.addListener(gdir, "error", manejar_errores);
	}
}

// Calcular la ruta con Google Maps
function calcular_ruta(origen, idioma) {
	gdir.load("from: " + origen + " to: Priorio",{ "locale": idioma });
	
	return false;
}

//Manejo de errores de Google Maps
function manejar_errores(){
	if (gdir.getStatus().code == G_GEO_UNKNOWN_ADDRESS)
		alert("No se puede calcular la ruta desde la direccion indicada. Compruebe que esta bien escrita y que no sea ambigua.");
	else if (gdir.getStatus().code == G_GEO_SERVER_ERROR)
		alert("Error desconocido.");
	else if (gdir.getStatus().code == G_GEO_MISSING_QUERY)
		alert("No se ha introducido una direccion de inicio.");
	else if (gdir.getStatus().code == G_GEO_BAD_KEY)
		alert("La clave usada por el mapa no es valida o no se corresponde con el dominio desde el que se usa.");
	else if (gdir.getStatus().code == G_GEO_BAD_REQUEST)
		alert("La direccion no puede ser procesada.");
	else
		alert("Ha ocurrido un error.");
}

function onGDirectionsLoad(){ 
}


// Comprueba si una cadena tiene formato de fecha dd/mm/aaaa
function esFecha(sFecha) {
	var FECHA = ("undefined" == typeof(sFecha)) ? "" : sFecha; // Fecha de entrada
	var reFecha = /^(0?[1-9]|[12][0-9]|3[01])([-\/\.])(0?[1-9]|1[0-2])\2(\d{1,4})$/;

	return reFecha.test(FECHA);	
}

// Comprueba si una cadena tiene formato de email
function esEmail(sEmail) {
	var EMAIL = ("undefined" == typeof(sEmail)) ? "" : sEmail; // Fecha de entrada
	var reEmail = /^([a-zA-Z0-9]{3,})(((\.|\-|\_)[a-zA-Z0-9]{2,})+)?@([a-z]{3,})(\-[a-z0-9]{3,})?(\.[a-z]{2,})+$/i

	return reEmail.test(EMAIL);	
}

function validar() {
	var div_error = document.getElementById('div_error');
	var campos = new Array("solicitante", "fecha_entrada", "fecha_salida", "numero_plazas", "correo_electronico", "confirmar_correo_electronico", "telefono");

	// Ponemos el fondo blanco a todos los campos
	for (var i = 0; i < campos.length; i++) {
		document.getElementById(campos[i]).style.backgroundColor = "#ffffff";
	}

	var faltanDatos = false;
	for (i = 0; i < campos.length; i++) {
	// Si alguno de los campos obligatorios esta en blanco o es incorrecto, lo resaltamos y mostramos un mensaje
		if ("" == document.getElementById(campos[i]).value) {
			document.getElementById(campos[i]).style.backgroundColor = "#ffe0e0";
			faltanDatos = true;
		}
	}

	// Si faltan datos obligatorios, mostramos un mensaje
	if (faltanDatos) {
		div_error.innerHTML = "Los campos resaltados son obligatorios";
		return false;
	}
	
	// Si la fecha de entrada no cumple con el formato que le corresponde, mostramos un mensaje
	if (!esFecha(document.getElementById('fecha_entrada').value)) {
		document.getElementById('fecha_entrada').style.backgroundColor = "#e0e0ff";
		div_error.innerHTML = "La fecha de entrada no tiene un formato correcto";
		return false;
	}
	
	// Si la fecha de salida no cumple con el formato que le corresponde, mostramos un mensaje
	if (!esFecha(document.getElementById('fecha_salida').value)) {
		document.getElementById('fecha_salida').style.backgroundColor = "#e0e0ff";
		div_error.innerHTML = "La fecha de salida no tiene un formato correcto";
		return false;
	}

	// Si la direccion de correo no cumple con el formato que le corresponde, mostramos un mensaje
	if (!esEmail(document.getElementById('correo_electronico').value)) {
		document.getElementById('correo_electronico').style.backgroundColor = "#e0e0ff";
		div_error.innerHTML = "No es una direccion de correo valida";
		return false;
	}
	
	// Si la direccion de correo y la de confirmacion no son iguales, mostramos un mensaje
	if (document.getElementById('correo_electronico').value != document.getElementById('confirmar_correo_electronico').value) {
		document.getElementById('correo_electronico').style.backgroundColor = "#e0e0ff";
		document.getElementById('confirmar_correo_electronico').style.backgroundColor = "#e0e0ff";
		div_error.innerHTML = "Las direcciones no coinciden";
		return false;
	}
	
	return true;

}
