/**
 * Validación del formulario
 * 
 * @param formulario  Formulario para validar
 */
function validarReservasRutaForm(formulario) {
	var sMensaje = "";
	var bFlag = validateReservasRutaForm(formulario);
	if (bFlag) {
		var fecha = new Date();
		var mesActual=fecha.getMonth() + 1 ;
		var anioActual = fecha.getFullYear();
		var adultos = parseInt(formulario.adultos.value);
		var ninos = parseInt(formulario.ninos.value);
		var adolescentes = parseInt(formulario.adolescentes.value);
		var numeroHabitaciones = parseInt(formulario.numeroHabitaciones.value);
		if( ((formulario.mes.value < mesActual) && (formulario.anio.value == anioActual)) )
		{
			bFlag = false;
			sMensaje += errorAnio + ".\n";	
		}
		if (adultos + adolescentes + ninos > 3*numeroHabitaciones) {
			bFlag = false;
			sMensaje += errorMaxPersonas + ".\n";
		}
		if (!bFlag) {
			alert(sMensaje);
		}
	}
	return bFlag;
}

/**
 * Validación del formulario
 * 
 * @param formulario  Formulario para validar
 */
function validarExternaReservasRutaForm(formulario) {
	var sMensaje = "";
	var bFlag = validateExternaReservasRutaForm(formulario);
	if (bFlag) {
		if ((formulario.dia.value == 0))	
		{		
			bFlag = false;
			sMensaje += errorDia + ".\n";
		}
		if ((formulario.regimen.value == 0))	
		{		
			bFlag = false;
			sMensaje += errorRegimen + ".\n";
		}
		if ((formulario.proteccionDatos.value == 0))	
		{		
			bFlag = false;
			sMensaje += errorProteccionDatos + ".\n";
		}
		if (!bFlag) {
			alert(sMensaje);
		}
	}
	return bFlag;
}

/**
 * Valida las condiciones sobre paxes (adultos, adolescentes y niños) y numero de habitaciones.
 * Recarga los combos en función de estas condiciones
 */
function validarPaxes(formulario) {
	var adultos = formulario.adultos;
	var ninos = formulario.ninos;
	var adolescentes = formulario.adolescentes;
	var numeroHabitaciones = formulario.numeroHabitaciones;
	
	var asignados = parseInt(adultos.value) + parseInt(ninos.value) + parseInt(adolescentes.value);
	var maximos = 3 * numeroHabitaciones.value;
	
	if(asignados > maximos) {
		adultos.selectedIndex = 1;
		ninos.selectedIndex = 0;
		adolescentes.selectedIndex = 0;
		asignados = parseInt(adultos.value) + parseInt(ninos.value) + parseInt(adolescentes.value);
	}

	recargarOptions(maximos, asignados, adultos, 3 * parseInt(numeroHabitaciones.value));
	recargarOptions(maximos, asignados - 1, ninos, parseInt(numeroHabitaciones.value) + 1);
	recargarOptions(maximos, asignados - 1, adolescentes, parseInt(numeroHabitaciones.value) + 1);
}

/**
 * Recarga el combo en funcion de los parametros pasados por parametros.
 * @param maximos numero maximo de paxes permitidos
 * @param asignados paxes asignados totales
 * @param combo como a actualizar.
 * @param maximosCombo numero maximo de valores del combo
 */
function recargarOptions(maximos, asignados, combo, maximosCombo) {
	var posibles = maximos - (asignados - parseInt(combo.value));
	if(combo.options.length > posibles) {
		combo.options.length = posibles;
	}else if(combo.options.length > maximosCombo) {
		combo.options.length = maximosCombo;
	} else {
		for(i = combo.options.length; i < posibles; i++) {
			if(combo.options.length < maximosCombo) {
				var valor = parseInt(combo.options[combo.options.length - 1].value) + 1;
				combo.options[combo.options.length] = new Option(valor, valor);
			}
		}
	}
}
