// Codigo javascript de la aplicacion de busqueda de itinerarios en Google Transit
$(document).init(function() {
	$("form#itinerarioGT").submit(function() {return validarItinerarioGT(this);});
	$("form#itinerarioGT").attr("target", "nav_itinerarioGT");
});

var sMensaje = "";

/**
 * Valida los datos del formulario
 * 
 * @param form Formulario
 * @return Devuelve si los datos del formulario son validos
 */
function validarItinerarioGT(form) {
	var bOk = true;
	bOk1 = validarCampo("origenGT", "value", "title");
	bOk2 = validarCampo("destinoGT", "value", "title");
	bOk3 = validarHora("horaGT", "value", "title");
	bOk4 = validarFecha("fechaGT", "value", "title");
	if ((!bOk || !bOk2 || !bOk3 || !bOk4) && (sMensaje != "")) {
		alert(sMensaje);
	} else {
		var saddr = document.getElementById("saddr")
		var daddr = document.getElementById("daddr")
		var origen = document.getElementById("origenGT");
		var destino = document.getElementById("destinoGT");
		saddr.value = origen.value+",asturias,españa";
		daddr.value = destino.value+",asturias,españa";
	}
	sMensaje = "";
	return (bOk && bOk2 && bOk3 && bOk4);
}

/**
 * Funci�n que valida el campo y a�ade el mensaje de error
 * 
 * @param nombreCampo Nombre del campo
 * @param atributoValor Nombre del atributo para validar
 * @param atributoTexto Nombre del atributo para el texto del error 
 * @return Devuelve si el campo es valido o no
 */
function validarCampo(nombreCampo, atributoValor, atributoTexto) {
	var campoOk = true;
	if ($("#" + nombreCampo).attr(atributoValor) == "") {
		addError($("#" + nombreCampo).attr(atributoTexto));
		campoOk = false;
	}
	return campoOk;
}

/**
 * Funci�n que valida la hora y a�ade el mensaje de error
 * 
 * @param nombreCampo Nombre del campo
 * @param atributoValor Nombre del atributo para validar
 * @param atributoTexto Nombre del atributo para el texto del error 
 * @return Devuelve si el campo es valido o no
 */
function validarHora(nombreCampo, atributoValor, atributoTexto) {
	
	var campoOk = true;
	hora = $("#" + nombreCampo).attr(atributoValor).split(":");
	if (hora[0] > 24 || (hora[0]==24 && hora[1]>0) || hora[1]>59) {
		addErrorFechaHora($("#" + nombreCampo).attr(atributoTexto));
		campoOk = false;
	}
	return campoOk;
}

/**
 * A�ade el error al texto del mensaje
 * 
 * @param nombreCampo Nombre del campo
 */
function addError(nombreCampo) {
	// A�ade un salto de linea para los mensajes posteriores al primero
	if (sMensaje != "") {
		sMensaje += "\n\r";
	}
	sMensaje += sPatronObligatorio.replace("null", "'" + nombreCampo + "'")
}

/**
 * A�ade el error de la hora al texto del mensaje
 * 
 * @param nombreCampo Nombre del campo
 */
function addErrorFechaHora(nombreCampo) {
	// A�ade un salto de linea para los mensajes posteriores al primero
	if (sMensaje != "") {
		sMensaje += "\n\r";
	}
	sMensaje += sPatronIncorrecto.replace("null", "'" + nombreCampo + "'")
}

function validarFecha(nombreCampo, atributoValor, atributoTexto) {
	var campoOk = true;
	fecha = $("#" + nombreCampo).attr(atributoValor).split("/");
	var dia = fecha[0];
	var mes = fecha[1];
	var ano = fecha[2];
	dia = dia/1;
	mes = mes/1;
	ano = ano/1;
	var dmax = 0;
	
	if (mes==1||mes==3||mes==5||mes==7||mes==8||mes==10||mes==12) {
		dmax=31;
	} else if (mes==4||mes==6||mes==9||mes==11) {
		dmax=30;
	} else if(mes==2) {
		if (ano % 4 == 0) {
			dmax=29;
		} else {
			dmax=28;
		}
	}
	 		
	if ((dia >= 1) && (dia <= dmax) && (mes >= 1) && (mes <= 12) && (ano>=1900) && (ano<=2100)) {
		campoOk = true
	} else {
		campoOk = false;
	}
	
	if (campoOk==false) {
		addErrorFechaHora($("#" + nombreCampo).attr(atributoTexto));
	}
	return campoOk;
}
