//Como el atributo target no esta permitido usamos esta función para poder abrir enlaces en ventanas nuevas
//en el enlace debemos añadir el atributo rel="external", esta funcion lo detectará y pondrá el target mediante javascript

function externalLinks(){

if (!document.getElementsByTagName) return;
 var anchors = document.getElementsByTagName("a");
 for (var i=0; i<anchors.length; i++) {
   var anchor = anchors[i];
   if (anchor.getAttribute("href") && anchor.getAttribute("rel") == "external"){
       anchor.target = "_blank";
   }
 }
}

//Tratamiento de los botones de Servicios Generales
	function cargarUtilidades(){
		
		oServicioImprimir = document.getElementById("servicioImprimir");
		if(oServicioImprimir){
			oServicioImprimir.style.display = "inline";
		}
		
		oServicioVolver = document.getElementById("servicioVolver");
		if(oServicioVolver) {
			oServicioVolver.style.display = "inline";
		}
		
		oAtajoVolver = document.getElementById("atajoVolver");
		if(oAtajoVolver) {
			oAtajoVolver.style.display = "inline";
		}
		
	}
	
//Carga del combo de viajes en la búsqueda de reservas
//Necesita un objeto select, en función de cuyo valor cargado hará una llamada AJAX al fichero selectorViajesAJAX.asp, que se encargará
//de devolver el código a insertar dentro del selector
function cargaViajesTemporada(oSelect)
{
	var sTemporada

	try 
	{
       	caller = new ActiveXObject("Msxml2.XMLHTTP");
       } 
	catch (ex)
	{
       	try 
		{ 
           	caller = new ActiveXObject ("Microsoft.XMLHTTP");
        } 
		
		catch (EX) 
		{
           	caller = false; 
        } 
    }
        
	if (! caller && typeof XMLHttpRequest != 'undefined') 
	{
       	caller = new XMLHttpRequest();
    } 

	sTemporada = oSelect.value;

	caller.open('POST','/agencias/inc/comunes/selectorViajesAJAX.asp?temporada=' + sTemporada,false);
	caller.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
	caller.send('?temporada=' + sTemporada);

	while(1){
		if (caller.readyState == 4){
			//Se escribe la información que devuelve el servidor en pantalla
			document.getElementById('viaje').outerHTML = caller.responseText;
			break;
		}
	}
}

//Función inicializar: Hace visible el botón de vuelta atrás cuando existe. También hace que los enlaces con rel="external" se abran en
//ventana nueva
function inicializar(){
	
	document.getElementById('AtajoVolver').style.display = 'block';
	document.getElementById('enlaceAtajoVolver').onclick = function(){volver();}
	externalLinks();
	
}

//Función volver: Envía la ejecución al paso previo en el historial de navegación
function volver(){
	document.history.go(-1);
}

//Función inicializarCheck
//Hace visible el check de copia de datos fiscales a comerciales y le asigna un evento onClick
function inicializarCheck(){
	
	var oCheck = document.getElementsByName('copiaValores')[0];
	var oLabels = document.getElementsByTagName('label');
	for(x=0;x<oLabels.length;x++){
		oLabels[x].style.display = 'block';
	}
	oCheck.onclick = function(){copiaCampos();}
}

//Función copiaCampos
//Coge los valores de los campos fiscales del formulario de alta de agencia y copia sus valores en los campos comerciales
function copiaCampos(){

	//Copia campo a campo
	document.getElementById('domicilioComercial').value = document.getElementById('domicilio').value;
	document.getElementById('localidadComercial').value = document.getElementById('localidad').value;
	document.getElementById('provinciaComercial').value = document.getElementById('provincia').value;
	document.getElementById('cpComercial').value = document.getElementById('cp').value;
	document.getElementById('paisComercial').value = document.getElementById('pais').value;
	document.getElementById('telefono1Comercial').value = document.getElementById('telefono1').value;
	document.getElementById('telefono2Comercial').value = document.getElementById('telefono2').value;
	document.getElementById('faxComercial').value = document.getElementById('fax').value;
	document.getElementById('emailComercial').value = document.getElementById('email').value;
	document.getElementById('webComercial').value = document.getElementById('web').value;
	document.getElementById('contactoComercial').value = document.getElementById('contacto').value;
	document.getElementById('cargoComercial').value = document.getElementById('cargo').value;
	document.getElementById('nombre').value = document.getElementById('razonSocial').value;
}

//Función validacionReservas
//Esta función realiza una validación cliente del formulario de reservas, comprobando que se hayan rellenado todos los campos
//de nombre y apellidos, así como los campos de agente, correo y teléfono.
function validacionReservas(sIdioma){
	
	//El formulario de reservas es muy específico. Necesita una validación cliente específica porque no se crea desde un fichero XML
	// afortunadamente lo único que contiene son campos input y textareas, siendo obligatorios aquellos que se corresponden con 
	// nombres y apellidos de viajeros, el nombre y apellidos del agente, el correo electrónico del mismo y su teléfono.
	var sMensaje = '';
	var Template = /^[a-z-A-Z]+([0-9-_\.]*[a-z-A-Z-0-9]+)*@{1}[a-z-A-Z]+([0-9-_\.]+[a-z-A-Z-0-9]+)+$/i;
	var aTextos = new Array
	
	if (sIdioma == 'es'){
		aTextos[0] = 'Debe rellenar el nombre y apellidos de todos los pasajeros\n';
		aTextos[1] = 'Debe rellenar el nombre y apellidos del agente que efectúa la reserva\n';
		aTextos[2] = 'Debe rellenar la dirección de correo electrónico del agente que efectúa la reserva\n';
		aTextos[3] = 'Debe consignar una dirección de correo electrónico válida\n';
		aTextos[4] = 'Debe rellenar el teléfono del agente que efectúa la reserva\n';
		aTextos[5] = 'El teléfono debe ser un valor numérico\n';
		aTextos[6] = 'El fax debe ser un valor numérico\n';
	} else {
		aTextos[0] = 'You must fill in the form all passengers data\n';
		aTextos[1] = 'You must fill in the form the name and surname of the agent making the reserve\n';
		aTextos[2] = 'You must fill in the form the email address of the agent\n';
		aTextos[3] = 'Email address must be valid\n';
		aTextos[4] = 'You must fill in the form the phone of the agent\n';
		aTextos[5] = 'Phone must be a numeric value\n';
		aTextos[6] = 'Fax must be a numeric value\n';
	}
	
	//Almacenamiento de todos los objetos INPUT del documento
	var inputs = document.getElementsByTagName('input');
	
	//Recorrido del array de INPUT buscando los que tengan "nombre", "apellidos", "agente", "email" ó "telefono" en la propiedad name
	for(x=0;x<=inputs.length-1;x++){
		if ((inputs[x].name.indexOf('nombre') != -1 || inputs[x].name.indexOf('apellidos') != -1) && inputs[x].value == ''){ 
			sMensaje = aTextos[0];
		}
		if (inputs[x].name.indexOf('agente') != -1 && inputs[x].value == ''){
			sMensaje += aTextos[1];
		}
		if (inputs[x].name.indexOf('email') != -1){
			if (inputs[x].value == ''){ 
				sMensaje += aTextos[2];
			}
			else{
				if (!Template.test(inputs[x].value)){
					sMensaje += aTextos[3];
				}
			}
		}
		if (inputs[x].name.indexOf('telefono') != -1){
			if (inputs[x].value == ''){
				sMensaje += aTextos[4];
			}
			else{
				if (isNaN(inputs[x].value))
					sMensaje += aTextos[5];
			}
		}
		if (inputs[x].name.indexOf('fax') != -1 && inputs[x].value != '' && isNaN(inputs[x].value)){
			sMensaje += aTextos[6];
		}
	}
	
	if (sMensaje == ''){
		return true;
	}
	else{
		alert(sMensaje);
		return false;
	}
	
}

//-----------------------------------------------------------------
//Función validaViajesReserva, se encarga de hacer la validación cliente del formulario de búsqueda avanzada de reservas
//Produce: Verdadero cuando la validación es correcta y falso cuando es incorrecta
function validarViajesReserva(sIdioma){
	
	var sMensaje = '';
	var dFechaDesde, dFechaHasta, aTexto
	
	if (sIdioma == 'es'){
		aTexto = 'Las fechas deben tener un formato válido de fecha, además la fecha hasta debe ser posterior a la fecha desde.\n'; 
	}
	else{
		aTexto = 'Date format must be valid, and from date must be greater than to date.\n';
	}
		
	//Estudio de las fechas
	dFechaDesde = document.getElementById('desde_fechaSalida');
	dFechaHasta = document.getElementById('hasta_fechaSalida');
	
	if ((dFechaDesde.value != '' && !validarFechaCampo(dFechaDesde)) || (dFechaHasta.value != '' && !validarFechaCampo(dFechaHasta))){
		sMensaje += aTexto;
	}
	
	if (sMensaje == ''){
		return true;
	}
	else{
		alert(sMensaje);
		return false;
	}
		
}


//-----------------------------------------------------------------
//Función validacionDisponibilidad, se encarga de hacer la validación cliente del formulario de búsqueda de disponibilidad
//Produce: Verdadero cuando la validación es correcta y falso cuando es incorrecta
function validacionDisponibilidad(sIdioma){
	
	var sMensaje = '';
	var dFechaDesde, dFechaHasta, sTemporada, aTexto 
	var iIndividuales, iDobles, iDoblesLitera, iTriples, iMatDobles, iLit1Dobles, iLit2Dobles, iLit1Triples, iLit2Triples
	
	aTexto = new Array
	
	if (sIdioma == 'es'){
		aTexto[0] = 'Debe definir un intervalo de fechas o una temporada para buscar disponibilidad.\n';
		aTexto[1] = 'Las fechas deben tener un formato válido, además la fecha hasta debe ser posterior a la fecha desde.\n'
		aTexto[2] = 'Debe seleccionar al menos una suite individual para buscar disponibilidad.\n';
	} else {
		aTexto[0] = 'You must set a date interval or select a season to search for disponibility.\n';
		aTexto[1] = 'Date format must be valid, and from date must be greater than to date.\n';
		aTexto[2] = 'You must select at least one individual suite to search for disponibility.\n';
	}
		
	//Estudio de las fechas
	dFechaDesde = document.getElementById('desde_fechas');
	dFechaHasta = document.getElementById('hasta_fechas');
	sTemporada = document.getElementById('temporada');
	if ((dFechaDesde.value == '' || dFechaHasta.value == '') && sTemporada.value == ''){
		sMensaje += aTexto[0];
	} else if ((!validarFechaCampo(dFechaDesde) || !validarFechaCampo(dFechaHasta)) && sTemporada.value == ''){
			sMensaje += aTexto[1];
	}
	
	//Estudio de las habitaciones y las camas
	iIndividuales = parseInt(document.getElementById('individuales').value);
	iDobles = parseInt(document.getElementById('dobles').value);
	iDoblesLitera = parseInt(document.getElementById('literaDobles').value);
	iTriples = parseInt(document.getElementById('triples').value);
	if (iIndividuales == 0 && iDobles == 0 && iDoblesLitera == 0 && iTriples == 0){
		sMensaje += aTexto[2];
	}
		
	if (sMensaje == ''){
		return true;
	}
	else{
		alert(sMensaje);
		return false;
	}
	
}
//-----------------------------------------------------------------
//Función que devuelve el valor de una fecha en formato largo por petición del cliente
//Necesita el elemento input sobre el que grabar el dato
//Devuelve la fecha que se almacena en el input cambiada a formato largo.
function cargaFormatoLargo(element,sIdioma){

	var eleFormatoLargo = document.getElementsByName(element.name + '_formatolargo')[0];
		
	if (element.value != ''){
		var fecha = element.value;
		
		switch (sIdioma){
			case 'es':  var aMeses = ['Enero','Febrero','Marzo','Abril','Mayo','Junio','Julio','Agosto','Septiembre','Octubre','Noviembre','Diciembre'];
					    var sFecha = fecha.substring(0,2) + ' de ' + aMeses[eval(fecha.substring(3,5))-1] + ' de ' + fecha.substring(6,10);
						break;
			case 'en':	var aMeses = ['January','February','March','April','May','June','July','August','September','October','November','December'];
						var sDaySuffix;
						switch (parseInt(fecha.substring(0,2) % 10)){
							case 1: sDaySuffix = 'st';
									break;
							case 2: sDaySuffix = 'nd';
									break;
							case 3: sDaySuffix = 'rd';
									break;
							default: sDaySuffix = 'th';
						}
						//Caso especial, los valores 11,12 y 13 siempre llevan th
						if (parseInt(fecha.substring(0,2)) == 11 || parseInt(fecha.substring(0,2)) == 12 || parseInt(fecha.substring(0,2)) == 13){
							sDaySuffix = 'th';
						}
						var sFecha = fecha.substring(0,2) + sDaySuffix + ' ' + aMeses[eval(fecha.substring(3,5))-1] + ' ' + fecha.substring(6,10);
		}
	
		eleFormatoLargo.value = sFecha;
	}else{
		eleFormatoLargo.value = '';
	}
}

//---------------------------------------------------------------------
//Función que vuelve visible el texto de advertencia sobre las habitaciones triples
//Necesita el objeto con el DIV que contiene el texto
//Hace visible el bloque mediante estilos
function hacerVisibleTexto(oTexto){
	oTexto.style.display = 'block';
}


//--------------------------------------------------------------------
//Función que carga los eventos y hace los cambios dependientes de javascript en los textos de advertencia sobre habitaciones triples
//No necesita parámetros
//Activa el evento onClick en el titular y oculta por defecto el texto que hay debajo.
function activaFuncionesTextoTriple(){
	var oTexto = document.getElementById('textoTriples');
	var oEnlace = document.getElementById('enlaceTriples');
	
	oTexto.style.display = 'none';
	oEnlace.style.cursor = 'pointer';
	oEnlace.onclick = function(){hacerVisibleTexto(oTexto);}
}

//----------------------------------------------------------------------
//Función activarFechas
//Esta función graba en los campos de fechas el 1 de Enero y el 31 de Diciembre del año correspondiente a la temporada seleccionada.
function activarFechas(oTemporada,sIdioma){
	
	if (oTemporada.value != ''){
		document.getElementById('desde_fechas').value = '01/01/' + parseInt(oTemporada.value);
		document.getElementById('hasta_fechas').value = '31/12/' + parseInt(oTemporada.value);
	}else{
		document.getElementById('desde_fechas').value = '';
		document.getElementById('hasta_fechas').value = '';
	}
	
	cargaFormatoLargo(document.getElementById('desde_fechas'),sIdioma);
	cargaFormatoLargo(document.getElementById('hasta_fechas'),sIdioma);
}