// JavaScript Document

// Rutinas para validar formulario de presupuesto.

//////////////////////////////////////////////////////////////////////////////////////////////7
////////   la función vacio(s) recibe un parámetro y nos devuelve true cuando los caracteres
////////   introducidos por el usuario son caracteres en blanco o símplemente da al intro...

var espaciosEnBlanco=" \t\n\r";  //    \t es tabulador horizontal
								 //     \n es nueva línea
								 //     \r es retorno de carro
function isVacio(s)
{
	//Si la cadena pasada es nula o de longitud cero
	if ((s==null) || (s.length == 0))
		return true;
	
	//Buscar si tiene caracteres que no sean espacios en blanco
	for (i=0;i<s.length; i++)
	{
	var c=s.charAt(i);
	if (espaciosEnBlanco.indexOf(c) == -1)
		return false;
	}

// Todos los espacios son blancos
	return true;
}

///////////////////////////////////////////////////////////////////////////////////////////////
////////   la función isMail(cadena) recibe un parámetro y nos devuelve true cuando, aparentemente,
////////   presenta la forma de una dirección de correo electrónico.

function isMail(cadena)
{
 	var pos;
 	var s=cadena;
	  
	    
	if (isVacio(cadena))
		{
		alert("La dirección de correo electrónico es obligatoria.");
		document.fPre.mail.focus();
		return false;	
		}

	
	pos = s.indexOf('@',1);
	
	if (( pos == -1) || (pos == (s.length-1)) )
		{
		alert("Dirección de correo electrónico con formato no válido.");
		document.fPre.mail.focus();
		return false;
		}

	return true;
}

///////////////////////////////////////////////////////////////////////////////////////////////
////////   la función isDigito(cadena) recibe un parámetro y nos devuelve true cuando es un dígito [0-9]

 function isDigito(c)
	 {
	 return ((c>="0") && (c<="9"))
	 }






function validar() {
 var nombre,tel,fax,mail,fechaS,fechaL,horaS,horaL,ruta,tipoServicio,viajeros, i, contenido;
 nombre=document.fPre.persona_contacto.value;
 tel=document.fPre.telefono.value;
 fax=document.fPre.fax.value;
 mail=document.fPre.mail.value;
 fechaS=document.fPre.fecha_salida.value;
 fechaL=document.fPre.fecha_llegada.value;
 horaS=document.fPre.hora_salida.value;
 horaL=document.fPre.hora_llegada.value;
 tipoServicio=document.fPre.tipo_servicio.value;
 ruta= document.fPre.ruta.value;
 viajeros=document.fPre.viajeros.value;

//Comprobación del campo nombre:

if ((isVacio(nombre)) || (nombre.length < 4))
	{
		alert('En la persona de contacto escriba un nombre de, al menos, 4 caracteres');
		document.fPre.persona_contacto.focus();
		return false;
	}

//Comprobación del campo teléfono:
	
	
		if (isVacio(tel))
			{
				alert('El teléfono es un campo obligatorio. \nIntroduzca sólo números, no introduzca guiones ni paréntesis.');
				document.fPre.telefono.focus();
				return false;
			}
		
					
			for (i =0;i<tel.length;i++)
			{
				contenido=tel.charAt(i);
			
				if (!isDigito(contenido))
					{
					alert('En el teléfono, introduzca sólo números, no introduzca guiones ni paréntesis.');
					document.fPre.telefono.focus();
					return false;
					}
			}
	if (tel.length < 9 )
		{
			alert('El número de dígitos introducido es inferior a nueve; revíselo si es necesario.');	
		}

// Comprobación de la validez de la cuenta de correo electrónico....

	if (!isMail(mail))
		{
			return false;
		}


// Comprobamos las fechas de salida y de llegada; 
// No se admite valores nulos; tampoco que la fecha de llegada sea menor a la de salida.
//Comprobamos que la fecha de salida sea menor a la de llegada...
 
	if (isVacio(fechaS))
		{
		alert('Por favor, introduzca la fecha de salida; es un dato obligatorio.');
		document.fPre.fecha_salida.focus();
		return false;
		} 
		
	if (isVacio(fechaL))
		{
		alert('Por favor, introduzca la fecha de llegada; es un dato obligatorio.');
		document.fPre.fecha_llegada.focus();
		return false;
		} 
	 
	if (fechaS>fechaL)
		{
		alert('Por favor, revise las fechas introducidas.\n La fecha de salida no puede ser mayor que la de llegada.');
		document.fPre.fecha_salida.focus();
		return false;
			}

// Comprobación de las horas...

if ((horaS=='00' ) || (horaL == '00'))
	{
	alert('La hora de salida o la hora de llegada no han sido modificados; revíse ese dato si lo desea.');
	}

// Comprobación del tipo de servicio...
if (tipoServicio=='0')
	{
		alert('Por favor, introduzca uno de los tipos de servicio enumerados.');
		document.fPre.tipo_servicio.focus();
		return false;
			}




// Comprobación de la ruta...
if (isVacio(ruta))
	{
		alert('Por favor, introduzca el Origen y el Destino del viaje.\n\nSi son varias jornadas de viaje, introduzca origen y destino de cada una de ellas y los comentarios que considere oportunos.');
		document.fPre.ruta.focus();
		return false;
			}
// Comprobación de los viajeros...
if (isVacio(viajeros))
	{
		alert('Por favor, introduzca el número de viajeros.');
		document.fPre.viajeros.focus();
		return false;
			}

for (i=0;i<viajeros.length; i++)
	{
	var c=viajeros.charAt(i);

	if (!isDigito(c))
	{	alert('Ha introducido caracteres no válidos en el número de viajeros.');
		document.fPre.viajeros.focus();
		return false;
		break;
	}
	
	}

 return true;


}