function validate(form, sLanguage) {
	var aux = '';
	var allValid = true;
	var dAux = new Date();
	var dDate = new Date(dAux.getYear(), dAux.getMonth(), dAux.getDate());
	var nDia = 0;
	var nMes = 0;
	var nAno = 0;
	var nIndex = 0;
	var er_telefono = "0123456789- ";
	var er_numeros = "0123456789";
	var er_email = /^[^@\s]+@[^@\.\s]+(\.[^@\.\s]+)+$/

	if (sLanguage == 'es') {
		// Nombre
		if (form.txtNombre.value == '') {
			alert('Por favor, ingrese su Nombre');
			form.txtNombre.focus();
			return false;
		}
		
		// Apellido
		if (form.txtApellido.value == '') {
			alert('Por favor, ingrese su Apellido');
			form.txtApellido.focus();
			return false;
		}
		
		// Domicilio
		if (form.txtDomicilio.value == '') {
			alert('Por favor, ingrese su Domicilio');
			form.txtDomicilio.focus();
			return false;
		}
		
		// Ciudad
		if (form.txtCiudad.value == '') {
			alert('Por favor, ingrese su Ciudad');
			form.txtCiudad.focus();
			return false;
		}
		
		// Pais
		if (form.ddlPais.selectedIndex == 0) {
			alert('Por favor, seleccione un País');
			form.ddlPais.focus();
			return false;
		}
		
		// Telefono
		if (form.txtTel.value == '') {
			alert('Por favor, ingrese su Teléfono');
			form.txtTel.focus();
			return false;
		}
		else {
			aux = form.txtTel.value;
			allValid = true;
			for (i = 0; i < aux.length; i++) {
				for (j = 0; j < er_telefono.length; j++)
					if (aux.charAt(i) == er_telefono.charAt(j))
						break;
				if (j == er_telefono.length) {
					allValid = false;
					break;
				}
			}
			if (!allValid) {
			    alert('Por favor, ingrese correctamente su Teléfono');
				form.txtTel.focus();
				form.txtTel.select();
		        return false;
			}
		}
		
		// Fax
		aux = form.txtFax.value;
		allValid = true;
		for (i = 0; i < aux.length; i++) {
			for (j = 0; j < er_telefono.length; j++)
				if (aux.charAt(i) == er_telefono.charAt(j))
					break;
			if (j == er_telefono.length) {
				allValid = false;
				break;
			}
		}
		if (!allValid) {
		    alert('Por favor, ingrese correctamente su Fax');
			form.txtFax.focus();
			form.txtFax.select();
	        return false;
		}
			
		// Email
		if (form.txtEmail.value == '') {
			alert('Por favor, ingrese su dirección de e-mail');
			form.txtEmail.focus();
			return false;
		}
		else {
			if (!er_email.test(form.txtEmail.value)) {
				alert('Su dirección de e-mail no es correcta');
				form.txtEmail.focus();
				form.txtEmail.select();
				return false;
			}
		}
		
		// Fecha de llegada
		if (form.ddlDiaLleg.selectedIndex == 0) {
			alert('Ha ingresado un dato incorrecto en Fecha de Llegada,\n por favor verifique e intente nuevamente');
			form.ddlDiaLleg.focus();
			return false;
		}
		if (form.ddlMesLleg.selectedIndex == 0) {
			alert('Ha ingresado un dato incorrecto en Fecha de Llegada,\n por favor verifique e intente nuevamente');
			form.ddlMesLleg.focus();
			return false;
		}
		if (form.ddlAnoLleg.selectedIndex == 0) {
			alert('Ha ingresado un dato incorrecto en Fecha de Llegada,\n por favor verifique e intente nuevamente');
			form.ddlAnoLleg.focus();
			return false;
		}
		else {
			nIndex = form.ddlDiaLleg.selectedIndex;
			nDia = form.ddlDiaLleg.options[nIndex].value;
			nIndex = form.ddlMesLleg.selectedIndex;
			nMes = form.ddlMesLleg.options[nIndex].value;
			nIndex = form.ddlAnoLleg.selectedIndex;
			nAno = form.ddlAnoLleg.options[nIndex].value;
			if (nMes == 2 || nMes == 4 || nMes == 6 || nMes == 9 || nMes == 11) {
				if (nMes == 2) {
					if ( (nAno%4 == 0 && nAno%100 != 0) || nAno%400 == 0) {
						if (nDia > 29) {
							alert('Ha ingresado un dato incorrecto en Fecha de Llegada,\n por favor verifique e intente nuevamente');
							form.ddlDiaLleg.focus();
							return false;
						}
					}
					else {
						if (nDia > 28) {
							alert('Ha ingresado un dato incorrecto en Fecha de Llegada,\n por favor verifique e intente nuevamente');
							form.ddlDiaLleg.focus();
							return false;
						}
					}
				}
				else 
					if (nDia == 31) {
						alert('Ha ingresado un dato incorrecto en Fecha de Llegada,\n por favor verifique e intente nuevamente');
						form.ddlDiaLleg.focus();
						return false;
					}
			}
		}
		
		
		// Fecha de partida
		if (form.ddlDiaPart.selectedIndex == 0) {
			alert('Ha ingresado un dato incorrecto en Fecha de Partida,\n por favor verifique e intente nuevamente');
			form.ddlDiaPart.focus();
			return false;
		}
		if (form.ddlMesPart.selectedIndex == 0) {
			alert('Ha ingresado un dato incorrecto en Fecha de Partida,\n por favor verifique e intente nuevamente');
			form.ddlMesPart.focus();
			return false;
		}
		if (form.ddlAnoPart.selectedIndex == 0) {
			alert('Ha ingresado un dato incorrecto en Fecha de Partida,\n por favor verifique e intente nuevamente');
			form.ddlAnoPart.focus();
			return false;
		}
		else {
			nIndex = form.ddlDiaPart.selectedIndex;
			nDia = form.ddlDiaPart.options[nIndex].value;
			nIndex = form.ddlMesPart.selectedIndex;
			nMes = form.ddlMesPart.options[nIndex].value;
			nIndex = form.ddlAnoPart.selectedIndex;
			nAno = form.ddlAnoPart.options[nIndex].value;
			if (nMes == 2 || nMes == 4 || nMes == 6 || nMes == 9 || nMes == 11) {
				if (nMes == 2) {
					if ( (nAno%4 == 0 && nAno%100 != 0) || nAno%400 == 0) {
						if (nDia > 29) {
							alert('Ha ingresado un dato incorrecto en Fecha de Partida,\n por favor verifique e intente nuevamente');
							form.ddlDiaPart.focus();
							return false;
						}
					}
					else {
						if (nDia > 28) {
							alert('Ha ingresado un dato incorrecto en Fecha de Partida,\n por favor verifique e intente nuevamente');
							form.ddlDiaPart.focus();
							return false;
						}
					}
				}
				else 
					if (nDia == 31) {
						alert('Ha ingresado un dato incorrecto en Fecha de Partida,\n por favor verifique e intente nuevamente');
						form.ddlDiaPart.focus();
						return false;
					}
			}
		}
		
		// Comparar Fecha de llegada con Fecha de partida
		nIndex = form.ddlDiaLleg.selectedIndex;
		nDia = form.ddlDiaLleg.options[nIndex].value;
		nIndex = form.ddlMesLleg.selectedIndex;
		nMes = form.ddlMesLleg.options[nIndex].value - 1;
		nIndex = form.ddlAnoLleg.selectedIndex;
		nAno = form.ddlAnoLleg.options[nIndex].value;
		var dDateBegin = new Date(nAno, nMes, nDia);

		nIndex = form.ddlDiaPart.selectedIndex;
		nDia = form.ddlDiaPart.options[nIndex].value;
		nIndex = form.ddlMesPart.selectedIndex;
		nMes = form.ddlMesPart.options[nIndex].value - 1;
		nIndex = form.ddlAnoPart.selectedIndex;
		nAno = form.ddlAnoPart.options[nIndex].value;
		var dDateEnd = new Date(nAno, nMes, nDia);

		if (dDateBegin < dDate) {
			alert('Ha ingresado un dato incorrecto en Fecha de Llegada,\n por favor verifique e intente nuevamente');
			form.ddlDiaLleg.focus();
			return false;
		}

		if (dDateEnd < dDate) {
			alert('Ha ingresado un dato incorrecto en Fecha de Partida,\n por favor verifique e intente nuevamente');
			form.ddlDiaPart.focus();
			return false;
		}
		
		if (dDateBegin > dDateEnd) {
			alert('Ha ingresado un dato incorrecto en Fecha de Partida,\n por favor verifique e intente nuevamente');
			form.ddlDiaPart.focus();
			return false;
		}
		
		
		// Cantidad de personas
		if (form.txtCantPers.value == '') {
			alert('Por favor, ingrese la Cantidad de Personas');
			form.txtCantPers.focus();
			return false;
		}
		else {
			aux = form.txtCantPers.value;
			allValid = true;
			if (aux == 0) {
				alert('Por favor, la Cantidad de Personas no puede ser 0');
				form.txtCantPers.focus();
				form.txtCantPers.select();
		        return false;
			}
			for (i = 0; i < aux.length; i++) {
				for (j = 0; j < er_numeros.length; j++)
					if (aux.charAt(i) == er_numeros.charAt(j))
						break;
				if (j == er_numeros.length) {
					allValid = false;
					break;
				}
			}
			if (!allValid) {
			    alert('Por favor, ingrese solo números para Cantidad de Personas');
				form.txtCantPers.focus();
				form.txtCantPers.select();
		        return false;
			}
		}
		
		
		// Cantidad de habitaciones
		if (form.txtCantHab.value == '') {
			alert('Por favor, ingrese la Cantidad de Habitaciones');
			form.txtCantHab.focus();
			return false;
		}
		else {
			aux = form.txtCantHab.value;
			allValid = true;
			if (aux == 0) {
				alert('Por favor, la Cantidad de Habitaciones no puede ser 0');
				form.txtCantHab.focus();
				form.txtCantHab.select();
		        return false;
			}
			for (i = 0; i < aux.length; i++) {
				for (j = 0; j < er_numeros.length; j++)
					if (aux.charAt(i) == er_numeros.charAt(j))
						break;
				if (j == er_numeros.length) {
					allValid = false;
					break;
				}
			}
			if (!allValid) {
			    alert('Por favor, ingrese solo números para Cantidad de Habitaciones');
				form.txtCantHab.focus();
				form.txtCantHab.select();
		        return false;
			}
		}
	}
	else {
		// En
		// Surname
		if (form.txtNombre.value == '') {
			alert('Please, its Surname enters');
			form.txtNombre.focus();
			return false;
		}
		
		// Last Name
		if (form.txtApellido.value == '') {
			alert('Please, Last Name enters its');
			form.txtApellido.focus();
			return false;
		}
		
		// Address
		if (form.txtDomicilio.value == '') {
			alert('Please, its Address enters');
			form.txtDomicilio.focus();
			return false;
		}
		
		// City
		if (form.txtCiudad.value == '') {
			alert('Please, its City enters');
			form.txtCiudad.focus();
			return false;
		}
		
		// Country
		if (form.ddlPais.selectedIndex == 0) {
			alert('Please, it selects a Country');
			form.ddlPais.focus();
			return false;
		}
		
		// Telephone
		if (form.txtTel.value == '') {
			alert('Please, its Telephone enters');
			form.txtTel.focus();
			return false;
		}
		else {
			aux = form.txtTel.value;
			allValid = true;
			for (i = 0; i < aux.length; i++) {
				for (j = 0; j < er_telefono.length; j++)
					if (aux.charAt(i) == er_telefono.charAt(j))
						break;
				if (j == er_telefono.length) {
					allValid = false;
					break;
				}
			}
			if (!allValid) {
			    alert('Please, its Telephone enters correctly');
				form.txtTel.focus();
				form.txtTel.select();
		        return false;
			}
		}
		
		// Fax
		aux = form.txtFax.value;
		allValid = true;
		for (i = 0; i < aux.length; i++) {
			for (j = 0; j < er_telefono.length; j++)
				if (aux.charAt(i) == er_telefono.charAt(j))
					break;
			if (j == er_telefono.length) {
				allValid = false;
				break;
			}
		}
		if (!allValid) {
		    alert('Please, its Fax enters correctly');
			form.txtFax.focus();
			form.txtFax.select();
	        return false;
		}
			
		// Email
		if (form.txtEmail.value == '') {
			alert('Please, its direction of e-mail enters');
			form.txtEmail.focus();
			return false;
		}
		else {
			if (!er_email.test(form.txtEmail.value)) {
				alert('Its direction of e-mail is not correct');
				form.txtEmail.focus();
				form.txtEmail.select();
				return false;
			}
		}
		
		// Arival Date
		if (form.ddlDiaLleg.selectedIndex == 0) {
			alert('An incorrect data has entered, please it verifies and it tries again');
			form.ddlDiaLleg.focus();
			return false;
		}
		if (form.ddlMesLleg.selectedIndex == 0) {
			alert('An incorrect data has entered, please it verifies and it tries again');
			form.ddlMesLleg.focus();
			return false;
		}
		if (form.ddlAnoLleg.selectedIndex == 0) {
			alert('An incorrect data has entered, please it verifies and it tries again');
			form.ddlAnoLleg.focus();
			return false;
		}
		else {
			nIndex = form.ddlDiaLleg.selectedIndex;
			nDia = form.ddlDiaLleg.options[nIndex].value;
			nIndex = form.ddlMesLleg.selectedIndex;
			nMes = form.ddlMesLleg.options[nIndex].value;
			nIndex = form.ddlAnoLleg.selectedIndex;
			nAno = form.ddlAnoLleg.options[nIndex].value;
			if (nMes == 2 || nMes == 4 || nMes == 6 || nMes == 9 || nMes == 11) {
				if (nMes == 2) {
					if ( (nAno%4 == 0 && nAno%100 != 0) || nAno%400 == 0) {
						if (nDia > 29) {
							alert('An incorrect data has entered, please it verifies and it tries again');
							form.ddlDiaLleg.focus();
							return false;
						}
					}
					else {
						if (nDia > 28) {
							alert('An incorrect data has entered, please it verifies and it tries again');
							form.ddlDiaLleg.focus();
							return false;
						}
					}
				}
				else 
					if (nDia == 31) {
						alert('An incorrect data has entered, please it verifies and it tries again');
						form.ddlDiaLleg.focus();
						return false;
					}
			}
		}
		
		
		// Departure Date 
		if (form.ddlDiaPart.selectedIndex == 0) {
			alert('An incorrect data has entered, please it verifies and it tries again');
			form.ddlDiaPart.focus();
			return false;
		}
		if (form.ddlMesPart.selectedIndex == 0) {
			alert('An incorrect data has entered, please it verifies and it tries again');
			form.ddlMesPart.focus();
			return false;
		}
		if (form.ddlAnoPart.selectedIndex == 0) {
			alert('An incorrect data has entered, please it verifies and it tries again');
			form.ddlAnoPart.focus();
			return false;
		}
		else {
			nIndex = form.ddlDiaPart.selectedIndex;
			nDia = form.ddlDiaPart.options[nIndex].value;
			nIndex = form.ddlMesPart.selectedIndex;
			nMes = form.ddlMesPart.options[nIndex].value;
			nIndex = form.ddlAnoPart.selectedIndex;
			nAno = form.ddlAnoPart.options[nIndex].value;
			if (nMes == 2 || nMes == 4 || nMes == 6 || nMes == 9 || nMes == 11) {
				if (nMes == 2) {
					if ( (nAno%4 == 0 && nAno%100 != 0) || nAno%400 == 0) {
						if (nDia > 29) {
							alert('An incorrect data has entered, please it verifies and it tries again');
							form.ddlDiaPart.focus();
							return false;
						}
					}
					else {
						if (nDia > 28) {
							alert('An incorrect data has entered, please it verifies and it tries again');
							form.ddlDiaPart.focus();
							return false;
						}
					}
				}
				else 
					if (nDia == 31) {
						alert('An incorrect data has entered, please it verifies and it tries again');
						form.ddlDiaPart.focus();
						return false;
					}
			}
		}
		
		// To compare Arival Date with Departure Date 
		nIndex = form.ddlDiaLleg.selectedIndex;
		nDia = form.ddlDiaLleg.options[nIndex].value;
		nIndex = form.ddlMesLleg.selectedIndex;
		nMes = form.ddlMesLleg.options[nIndex].value - 1;
		nIndex = form.ddlAnoLleg.selectedIndex;
		nAno = form.ddlAnoLleg.options[nIndex].value;
		var dDateBegin = new Date(nAno, nMes, nDia);
		
		nIndex = form.ddlDiaPart.selectedIndex;
		nDia = form.ddlDiaPart.options[nIndex].value;
		nIndex = form.ddlMesPart.selectedIndex;
		nMes = form.ddlMesPart.options[nIndex].value - 1;
		nIndex = form.ddlAnoPart.selectedIndex;
		nAno = form.ddlAnoPart.options[nIndex].value;
		var dDateEnd = new Date(nAno, nMes, nDia);

		if (dDateBegin < dDate) {
			alert('An incorrect data in Departure Date has entered,\n please it verifies and it tries again');
			form.ddlDiaLleg.focus();
			return false;
		}
		
		if (dDateEnd < dDate) {
			alert('An incorrect data in Departure Date has entered,\n please it verifies and it tries again');
			form.ddlDiaPart.focus();
			return false;
		}
				
		if (dDateBegin > dDateEnd) {
			alert('An incorrect data in Departure Date has entered,\n please it verifies and it tries again');
			form.ddlDiaPart.focus();
			return false;
		}
		
		
		// Number of people
		if (form.txtCantPers.value == '') {
			alert('Please, the Number of People enters');
			form.txtCantPers.focus();
			return false;
		}
		else {
			aux = form.txtCantPers.value;
			allValid = true;
			if (aux == 0) {
				alert('Please, the Number of People cannot be 0');
				form.txtCantPers.focus();
				form.txtCantPers.select();
		        return false;
			}
			for (i = 0; i < aux.length; i++) {
				for (j = 0; j < er_numeros.length; j++)
					if (aux.charAt(i) == er_numeros.charAt(j))
						break;
				if (j == er_numeros.length) {
					allValid = false;
					break;
				}
			}
			if (!allValid) {
			    alert('Please, it enters single numbers for Number of People');
				form.txtCantPers.focus();
				form.txtCantPers.select();
		        return false;
			}
		}
		
		
		// Number of room
		if (form.txtCantHab.value == '') {
			alert('Please, the Number of Rooms enters');
			form.txtCantHab.focus();
			return false;
		}
		else {
			aux = form.txtCantHab.value;
			allValid = true;
			if (aux == 0) {
				alert('Please, the Number of Rooms cannot be 0');
				form.txtCantHab.focus();
				form.txtCantHab.select();
		        return false;
			}
			for (i = 0; i < aux.length; i++) {
				for (j = 0; j < er_numeros.length; j++)
					if (aux.charAt(i) == er_numeros.charAt(j))
						break;
				if (j == er_numeros.length) {
					allValid = false;
					break;
				}
			}
			if (!allValid) {
			    alert('Please, it enters single numbers for Number of Rooms');
				form.txtCantHab.focus();
				form.txtCantHab.select();
		        return false;
			}
		}
	}
	form.submit();
}