/**
* Script para comprobar que los valores del formulario de reserva son correctos
*/
function comprobar_solicitud_reserva()
{
	var Error = 0; //No hay errores en principio.

    try
    {
        /*En algunas versiones de ecoturismorural no existe nada referente a la
        ley de protección de datos*/
        if(!document.getElementById('lopd').checked)
        {
            Error = 1;
            document.getElementById('error_lopd_fr').className = 'error_fr';
        }
        else
        {
            document.getElementById('error_lopd_fr').className = 'no_error_fr';
        }
    }
    catch(e)
    {

    }

	if(document.getElementById('sr_nombre').value == '')
	{
		Error = 1;
		document.getElementById('error_nombre_fr').className = 'error_fr';
	}
	else
	{
		document.getElementById('error_nombre_fr').className = 'no_error_fr';
	}
	
    /* Si bien en Acantur se diferencian apellidos de nombre no pasa lo mismo en
     * ecoturismo rural.
     */
    try
    {
        if(document.getElementById('sr_apellidos').value == '')
        {
            Error = 1;
            document.getElementById('error_apellidos_fr').className = 'error_fr';
        }
        else
        {
            document.getElementById('error_apellidos_fr').className = 'no_error_fr';
        }
    }
    catch(e)
    {}

    try
    {
        if(document.getElementById('sr_movil').value == '')
        {
            Error = 1;
            document.getElementById('error_movil_fr').className = 'error_fr';
        }
        else
        {
            document.getElementById('error_movil_fr').className = 'no_error_fr';
        }
    }
    catch(e)
    {}

	
	filter=/^([a-zñA-Z0-9Ñ!#$%*/?|^{}`~&+\=_\.\-])+\@(([a-zñA-ZÑ0-9\-!#$%*/?|^{}`~&+\=_])+\.)+([a-zA-Z0-9]{2,6})+$/;
	if(document.getElementById('sr_email').value =='' || !filter.test(document.getElementById('sr_email').value))
	{
		Error = 1;
		document.getElementById('error_email_fr').className = 'error_fr';
	}
	else
	{
		document.getElementById('error_email_fr').className = 'no_error_fr';
	}
	
	if(document.getElementById('sr_llegada').value == '')
	{
		Error = 1;
		document.getElementById('error_fecha_llegada_fr').className = 'error_fr';
	}
	else
	{
		document.getElementById('error_fecha_llegada_fr').className = 'no_error_fr';
	}
	
	if(document.getElementById('sr_salida').value == '')
	{
		Error = 1;
		document.getElementById('error_fecha_salida_fr').className = 'error_fr';
	}
	else
	{
		document.getElementById('error_fecha_salida_fr').className = 'no_error_fr';
	}
	
	if(document.getElementById('sr_adultos').value == ''  || isNaN(document.getElementById('sr_adultos').value) )
	{
		Error = 1;
		document.getElementById('error_numero_adultos_fr').className = 'error_fr';
	}
	else
	{
		document.getElementById('error_numero_adultos_fr').className = 'no_error_fr';
	}
	
	//Hacemos los calculos necesarios para comprobar que las fechas están bien pasadas y formateadas
	//Obtenemos los día de entrada y salida
	var dia_entrada = document.getElementById('sr_llegada').value;
	var dia_salida  = document.getElementById('sr_salida').value;
	
	//Lo pasamos a un formato legible y comparable
	var VFechaEntrada = new Array();
	VFechaEntrada = dia_entrada.split('-');
	dia_entrada = '20'+String(VFechaEntrada[2])+String(VFechaEntrada[1])+String(VFechaEntrada[0]);
	
	var VFechaSalida = new Array();
	VFechaSalida = dia_salida.split('-');
	dia_salida = '20'+String(VFechaSalida[2])+String(VFechaSalida[1])+String(VFechaSalida[0]);
	
	//obtenemos el día de hoy
	var fecha = new Date();
	var dia_actual = fecha.getDate();
	var mes_actual = fecha.getMonth();
	var anyo_actual = fecha.getFullYear();
	if (dia_actual < 10)
	{
		dia_actual = '0'+dia_actual;
	}
	++mes_actual; //Incrementamos uno puesto que el mes se devuelve de 0 a 11
	if (mes_actual < 10)
	{
		mes_actual = '0'+mes_actual;
	}
	var hoy = String(anyo_actual)+String(mes_actual)+String(dia_actual);
	
	if (dia_salida <= dia_entrada && dia_salida != '' && dia_entrada != '')
	{
		Error = 1;
		document.getElementById('error_fecha_entrada_menor_fecha_salida_fr').className = 'error_fr';
	}
	else
	{
		document.getElementById('error_fecha_entrada_menor_fecha_salida_fr').className = 'no_error_fr';
	}
	
	if (dia_entrada <= hoy && dia_entrada != '')
	{
		Error = 1;
		document.getElementById('error_fecha_entrada_menor_fecha_hoy_fr').className = 'error_fr';
	}
	else
	{
		document.getElementById('error_fecha_entrada_menor_fecha_hoy_fr').className = 'no_error_fr';
	}
	
	//Si hay un error hay que poner el borde rojo
	if (1 == Error)
	{
		document.getElementById('error_formulario_reserva').className = 'error_formulario';
	}
	else
	{
		document.getElementById('error_formulario_reserva').className = 'no_error_formulario';
		
		//Disparamos el evento AJAX para enviar el email al cliente y encargado de reservas del establecimiento.
		DisparadorSolicitudReserva();
	}
	
	return false;
}

var url_solicitud_reserva="solicitar_reserva.php";
var isWorking = false;//Bandera para saber si el proceso ajax está trabajando (true) o ya ha parado (false).

/**
* Función que recoge los datos que se pasa por XML
*/
function handleHttpResponseFormularioReserva()
{
	if (http.readyState == 4)
	{
		if (http.responseText.indexOf("invalid") == -1)
		{
			try
			{
				var xmlDoc=http.responseXML;
				var respuesta = xmlDoc.getElementsByTagName('respuesta').item(0).firstChild.data;
				
				document.getElementById('advertencia_envio_fr').className = 'no_error_fr';
				if ('OK' == respuesta)
				{
					document.getElementById('error_formulario_reserva').className = 'noticia';					
					document.getElementById('envio_correcto_fr').className = 'error_fr';

                    try
                    {
                        var reserva = xmlDoc.getElementsByTagName('id_reserva').item(0).firstChild.data;
                        var tipo_reserva = xmlDoc.getElementsByTagName('tipo_reserva').item(0).firstChild.data;
                        if(2 == tipo_reserva)
                        {
                           document.location.href = "http://www.acantur.es/www/FichaEstablecimiento.php?Evento=SALTO_PASARELA&reserva="+reserva;
                        }
                    }
                    catch(err)
                    {}
				}
				else
				{
					document.getElementById('error_formulario_reserva').className = 'error_formulario';											
					document.getElementById('envio_no_correcto_fr').className = 'error_fr';
				}
			}
			catch(e)
			{
				document.getElementById('error_formulario_reserva').className = 'error_formulario';											
				document.getElementById('envio_no_correcto_fr').className = 'error_fr';
			}
		}
		isWorking = false;
	}
}

/**
* Función que recoge los datos que se pasa por XML
*/
function handleHttpResponseFormularioPrecio()
{
	if (http.readyState == 4)
	{
		if (http.responseText.indexOf("invalid") == -1)
		{
			try
			{
				var xmlDoc=http.responseXML;
				var respuesta = xmlDoc.getElementsByTagName('precio').item(0).firstChild.data;
                document.getElementById('muestra_precio_cantidad').innerHTML = respuesta;

                /*
				document.getElementById('advertencia_envio_fr').className = 'no_error_fr';
				if ('OK' == respuesta)
				{
					document.getElementById('error_formulario_reserva').className = 'noticia';					
					document.getElementById('envio_correcto_fr').className = 'error_fr';
				}
				else
				{
					document.getElementById('error_formulario_reserva').className = 'error_formulario';											
					document.getElementById('envio_no_correcto_fr').className = 'error_fr';
				}
                */
			}
			catch(e)
			{
                /*
				document.getElementById('error_formulario_reserva').className = 'error_formulario';											
				document.getElementById('envio_no_correcto_fr').className = 'error_fr';
                */
			}
		}
		isWorking = false;
	}
}


/**
* El disparador debe llamarse cuando se activa el evento que debe generarlo.
*
*/
function DisparadorSolicitudReserva()
{
	//Advertimos de que estamos enviando un email.
	document.getElementById('envio_correcto_fr').className = 'no_error_fr';
	document.getElementById('envio_no_correcto_fr').className = 'no_error_fr';	
	document.getElementById('advertencia_envio_fr').className = 'error_fr';
	document.getElementById('error_formulario_reserva').className = 'advertencia';	


	

	if (!isWorking && http)
	{
		//Tomamos el indice más adecuado.
		var Establecimiento = document.getElementById("id").value;
		var Nombre = document.getElementById("sr_nombre").value;
		var Direccion = document.getElementById("sr_direccion").value;
		var Telefono = document.getElementById("sr_telefono").value;
		var Fax = document.getElementById("sr_fax").value;
		var Email = document.getElementById("sr_email").value;
		var Llegada = document.getElementById("sr_llegada").value;		
		var Salida = document.getElementById("sr_salida").value;		
		var Adultos = document.getElementById("sr_adultos").value;	
		var Bebes = document.getElementById("sr_bebes").value;		
		var Observaciones = document.getElementById("sr_observaciones").value;

        /*Debido a que el formulario de reserva de ecoturismorural y acantur
         *son diferentes hay campos que no pueden ser leidos.
         */
        try
        {
            var Dni = document.getElementById("sr_dni").value;
            var Ciudad = document.getElementById("sr_ciudad").value;
            var Cp = document.getElementById("sr_cp").value;
            var Pais = document.getElementById("sr_pais").value;
            var Apellidos = document.getElementById("sr_apellidos").value;
            var Movil = document.getElementById("sr_movil").value;
            var Ninyo = document.getElementById("sr_ninyo").value;
            var Olpd = document.getElementById("lopd").checked;
            var Animal = document.getElementById("sr_animal").value;
            var TipoReserva = document.getElementById("tipo_reserva").value;
        }
        catch(e)
        {
            Dni = '';
            Ciudad = '';
            Cp = '';
            Pais = '';
            Apellidos = '';
            Movil = '';
            Ninyo = 0;
            Olpd = 0;
            Animal = '';
            TipoReserva = '';
        }

		//Envio por post
		http.open("POST", url_solicitud_reserva, true);
		http.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
		http.onreadystatechange = handleHttpResponseFormularioReserva;
		isWorking = true;
		http.send(	"establecimiento="+Establecimiento+
					"&nombre="+Nombre+
					"&apellidos="+Apellidos+
					"&dni="+Dni+
					"&ciudad="+Ciudad+
					"&cp="+Cp+
					"&pais="+Pais+
					"&direccion="+Direccion+
					"&telefono="+Telefono+
					"&movil="+Movil+
					"&fax="+Fax+
					"&email="+Email+
					"&llegada="+Llegada+
					"&salida="+Salida+
					"&adultos="+Adultos+
					"&ninyo="+Ninyo+
					"&bebes="+Bebes+
					"&animal= "+Animal+
					"&observaciones="+Observaciones+
					"&lopd="+Olpd+
                    "&tipo_reserva="+TipoReserva
				);
	}
}

/**
 * Solicitamos el calculo del precio
 */
function DisparadorSolicitudPrecio()
{
	if (!isWorking && http)
	{
		//Tomamos el indice más adecuado.
		var Establecimiento = document.getElementById("id").value;
		var Llegada = document.getElementById("sr_llegada").value;
		var Salida = document.getElementById("sr_salida").value;
		var Adultos = document.getElementById("sr_adultos").value;
		var Ninyo = document.getElementById("sr_ninyo").value;
		var Bebes = document.getElementById("sr_bebes").value;
		var Animal = document.getElementById("sr_animal").value;

        if('' != Llegada && '' != Salida && '' != Adultos)
        {
            //Adecuamos datos
            if(''!=Ninyo)
                Ninyo = 0;
            if(''!=Bebes)
                Bebes = 0;

            document.getElementById('muestra_precio_cantidad').innerHTML = '...';

            //Envio por post
            http.open("POST", 'ControlCasasRuralesXML.php?Evento=PRECIOS_RESERVA_XML&', true);
            http.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
            http.onreadystatechange = handleHttpResponseFormularioPrecio;
            isWorking = true;
            http.send(	"IdEstablecimiento="+Establecimiento+
                        "&FechaLlegada="+Llegada+
                        "&FechaSalida="+Salida+
                        "&Adultos="+Adultos+
                        "&Infantes="+Ninyo+
                        "&Bebes="+Bebes+
                        "&AnimalesPequenyos= "+Animal
                    );
        }
	}
}





/**
* Carga los scripts para el formulario de reserva
*/
function CargaBuscadorRapido()
{
	try
	{
		document.getElementById('solicitud_reserva').onsubmit = comprobar_solicitud_reserva;	
        /*document.getElementById('sr_llegada').onchange = DisparadorSolicitudPrecio;
        document.getElementById("sr_salida").onchange = DisparadorSolicitudPrecio;
        document.getElementById("sr_adultos").onchange = DisparadorSolicitudPrecio;
        document.getElementById("sr_ninyo").onchange = DisparadorSolicitudPrecio;
        document.getElementById("sr_bebes").onchange = DisparadorSolicitudPrecio;
        document.getElementById("sr_animal").onchange = DisparadorSolicitudPrecio;
        document.getElementById('sr_llegada').onblur = DisparadorSolicitudPrecio;
        document.getElementById("sr_salida").onblur = DisparadorSolicitudPrecio;
        document.getElementById("fecha_llegada_trigger").onmouseover = DisparadorSolicitudPrecio;
        document.getElementById("fecha_salida_trigger").onmouseover = DisparadorSolicitudPrecio;*/
	}
	catch(e)
	{}
}


/**
* Función básica para el manejo de llamadas AJAX
*/
function getHTTPObject()
{
	var xmlhttp;
	/*@cc_on
	@if (@_jscript_version >= 5)
	try
	{
		xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
	}
	catch (e)
	{
		try
		{
			xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
		}
		catch (E)
		{
			xmlhttp = false;
		}
	}
	@else
		xmlhttp = false;
	@end @*/
	if (!xmlhttp && typeof XMLHttpRequest != "undefined")
	{
		try
		{
			xmlhttp = new XMLHttpRequest();
			xmlhttp.overrideMimeType("text/xml");
		}
		catch (e)
		{
			xmlhttp = false;
		}
	}
	return xmlhttp;
}
var http = getHTTPObject(); // We create the HTTP Object
