
/**
 * Ajusta las persianas de pax para que su suma total no sea superior al total
 * de los pax admitidos por el establecimiento.
 *
 * @param NumeroMaximoPax   Número máximo de pax del establecimiento
 * @param Invocador         Persiana que genera el cambio
 * @param ObjAdulto         Objeto de persiana que tiene el número de adultos
 * @param Objinfante        Objeto de persiana que tiene el número de infantes
 */
function AjustarPersianasPax(NumeroMaximoPax, Invocador, ObjAdulto, ObjInfante){
    var ObjPaxAdulto = document.getElementById(ObjAdulto);
    var ObjPaxInfante = document.getElementById(ObjInfante);

    var PaxAdulto = ObjPaxAdulto.options[ObjPaxAdulto.selectedIndex].value;
    var PaxInfante = ObjPaxInfante.options[ObjPaxInfante.selectedIndex].value;

    //Ajustamos los numeros de pax
    if ((parseInt(PaxAdulto) + parseInt(PaxInfante)) > NumeroMaximoPax){
        if(ObjPaxAdulto == Invocador){
            PaxInfante = NumeroMaximoPax - PaxAdulto;
        }
        else{
            PaxAdulto = NumeroMaximoPax - PaxInfante;
        }
    }

/*
    //Vaciamos las persinas.
    while (ObjPaxAdulto.length>0)
        ObjPaxAdulto.remove(ObjPaxAdulto.length-1);
    while (ObjPaxInfante.length>0)
        ObjPaxInfante.remove(ObjPaxInfante.length-1);

    //Rellenamos las persianas
    for(Cont=1; Cont<=MaxPaxAdulto; ++Cont){
        var NuevoElementoOption=document.createElement('option');
        NuevoElementoOption.value=Cont;
        NuevoElementoOption.text=Cont;
        try{
            //Versión Mozilla
            ObjPaxAdulto.add(NuevoElementoOption,null);
        }
        catch(e){
            //Version IE
            ObjPaxAdulto.add(NuevoElementoOption);
        }
    }
    for(Cont=0; Cont<=MaxPaxInfante; ++Cont){
        var NuevoElementoOption=document.createElement('option');
        NuevoElementoOption.value=Cont;
        NuevoElementoOption.text=Cont;
        try{
            //Versión Mozilla
            ObjPaxInfante.add(NuevoElementoOption,null);
        }
        catch(e){
            //Version IE
            ObjPaxInfante.add(NuevoElementoOption);
        }
    }
*/
    //Señalamos la opcion seleccionada
    ObjPaxAdulto.selectedIndex = PaxAdulto-1;
    ObjPaxInfante.selectedIndex = PaxInfante;
}


/**
* Script para comprobar que los valores del formulario de reserva son correctos
*/
function comprobar_solicitud_reserva()
{
	var Error = 0; //No hay errores en principio.

        /*
	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';
	}
	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';
	}
	
	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';
	}
	
	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';
	}

	*/
	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';
                return false;
	}
	else
	{
		document.getElementById('error_formulario_reserva').className = 'no_error_formulario';
                return true;
		
		//Disparamos el evento AJAX para enviar el email al cliente y encargado de reservas del establecimiento.
		//DisparadorSolicitudReserva();
	}
}

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){
            var reserva = '';
            var tipo_reserva = '';
            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{
                        ResetearErrorPrecio();
                        reserva = xmlDoc.getElementsByTagName('id_reserva').item(0).firstChild.data;
                        tipo_reserva = xmlDoc.getElementsByTagName('tipo_reserva').item(0).firstChild.data;
                        if(2 == tipo_reserva){
                           document.location.href = "../www/FichaEstablecimiento.php?Evento=SALTO_PASARELA&reserva="+reserva;
                        }
                    }
                    catch(err)
                    {}
                }
                else{
                    reserva = xmlDoc.getElementsByTagName('id_reserva').item(0).firstChild.data;
                    tipo_reserva = xmlDoc.getElementsByTagName('tipo_reserva').item(0).firstChild.data;
                    document.getElementById('error_formulario_reserva').className = 'error_formulario';
                    document.getElementById('error_general_fr').className = 'error_fr';
                    if (0 == reserva && 0==tipo_reserva){
                        document.getElementById('fecha_ocupada_fr').className = 'error_fr';
                    }
                    else{
                        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;
    }
}

/**
 * Se resetean los valores de los estilos de error para que no muestre nada
 */
function ResetearErrorPrecio(){
    document.getElementById('error_formulario_precios').className = 'no_error_formulario';
    document.getElementById('error_general_fr').className = 'no_error_fr';
    document.getElementById('error_precios_no_definidos_fr').className = 'no_error_fr';
    document.getElementById('error_periodos_cierre_fr').className = 'no_error_fr';
    document.getElementById('error_suficientes_noches_fr').className = 'no_error_fr';
    document.getElementById('error_insuficientes_pax_fr').className = 'no_error_fr';
    document.getElementById('error_no_disponibilidad_fr').className = 'no_error_fr';
    document.getElementById('error_demasiados_pax_fr').className = 'no_error_fr';
    document.getElementById('error_fechas_no_anteriores_hoy_fr').className = 'no_error_fr';
    document.getElementById('error_orden_fechas_fr').className = 'no_error_fr';
    document.getElementById('error_no_precio_disponible_fr').className = 'no_error_fr';
    document.getElementById('fecha_ocupada_fr').className = 'no_error_fr';
}
/**
* Funciï¿½n que recoge los datos que se pasa por XML
*/
function handleHttpResponseFormularioPrecio(){
    if (http.readyState == 4){
        if (http.responseText.indexOf("invalid") == -1){
            var xmlDoc=http.responseXML;
            var respuesta = '';

            //Borramos anteriores muestras de error
            ResetearErrorPrecio();
            try{
                respuesta = xmlDoc.getElementsByTagName('precio').item(0).firstChild.data;
                document.getElementById('muestra_precio_cantidad').innerHTML = respuesta+'&euro;';
            }
            catch(e){
                respuesta = xmlDoc.getElementsByTagName('codigo_error').item(0).firstChild.data;
                switch(respuesta){
                    case "-1":
                        //Los precios no est&aacute;n definidos para estas fechas.
                        document.getElementById('error_precios_no_definidos_fr').className = 'error_fr';
                        respuesta = "ERROR";
                        break;
                    case "-2":
                        //El establecimiento est&aacute; cerrado en estas fechas.
                        document.getElementById('error_periodos_cierre_fr').className = 'error_fr';
                        respuesta = "ERROR";
                        break;
                    case "-3":
                        //Debe quedarse m&aacute;s noches.
                        document.getElementById('error_suficientes_noches_fr').className = 'error_fr';
                        respuesta = "ERROR";
                        break;
                    case "-4":
                        //Deben quedarse m&aacute;s personas.
                        document.getElementById('error_insuficientes_pax_fr').className = 'error_fr';
                        respuesta = "ERROR";
                        break;
                    case "-5":
                    case "-100":
                        //No hay disponibilidad.
                        document.getElementById('error_no_disponibilidad_fr').className = 'error_fr';
                        respuesta = "ERROR";
                        break;
                    case "-6":
                        //Sobrepasa la capacidad del establecimiento
                        document.getElementById('error_demasiados_pax_fr').className = 'error_fr';
                        respuesta = "ERROR";
                        break;
                    case "-7":
                        //Las fechas no pueden ser anteriores al d&iacute;a de hoy
                        document.getElementById('error_fechas_no_anteriores_hoy_fr').className = 'error_fr';
                        respuesta = "ERROR";
                        break;
                    case "-8":
                        //El d&iacute;a de salida debe ser anterior al de entrada
                        document.getElementById('error_orden_fechas_fr').className = 'error_fr';
                        respuesta = "ERROR";
                        break;
                    default:
                        //No hay precio disponible.
                        document.getElementById('error_no_precio_disponible_fr').className = 'error_fr';
                        respuesta = "ERROR";
                        break;
                }
                if ("ERROR" == respuesta){
                    document.getElementById('error_formulario_precios').className = 'error_formulario';
                    document.getElementById('error_general_fr').className = 'error_fr';
                }
                else{
                    document.getElementById('error_formulario_precios').className = 'no_error_formulario';
                    document.getElementById('muestra_precio_cantidad').innerHTML = respuesta;
                }
            }
        }
        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 Apellidos = document.getElementById("sr_apellidos").value;
            var Dni = document.getElementById("sr_dni").value;
            var Direccion = document.getElementById("sr_direccion").value;
            var Ciudad = document.getElementById("sr_ciudad").value;
            var Cp = document.getElementById("sr_cp").value;
            var Pais = document.getElementById("sr_pais").value;
            var Telefono = document.getElementById("sr_telefono").value;
            var Movil = document.getElementById("sr_movil").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 Ninyo = document.getElementById("sr_ninyo").value;
            var Bebes = document.getElementById("sr_bebes").value;
            var Animal = document.getElementById("sr_animal").value;
            var Observaciones = document.getElementById("sr_observaciones").value;
            var Olpd = document.getElementById("lopd").checked;
            var TipoReserva = document.getElementById("tipo_reserva").value;
            var IdIdioma = document.getElementById("id_idioma").value;


            //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+
                        "&idioma="+IdIdioma
                    );
	}
}

/**
 * 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;
        /*
         *Acantur quita estos dos campos.
        var x = document.getElementById("EntradaCompleta");
        var LlegadaCompleta = x.options[x.selectedIndex].value;
        x = document.getElementById("SalidaCompleta");
        var SalidaCompleta = x.options[x.selectedIndex].value;
        */
        //La llegada completa se pone a false.
        LlegadaCompleta = 0;
        SalidaCompleta = 0;

        if('' != Llegada && '' != Salida && '' != Adultos){
            //Adecuamos datos
            if('' == Ninyo)
                Ninyo = 0;
            if('' == Bebes)
                Bebes = 0;

            document.getElementById('error_complete_datos_obligatorios_fr').className = 'no_error_fr';
            document.getElementById('error_formulario_precios').className = 'no_error_formulario';

            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+
                        "&FechaLlegadaCompleto="+LlegadaCompleta+
                        "&FechaSalidaCompleto="+SalidaCompleta
                    );
        }
        else{
            document.getElementById('error_complete_datos_obligatorios_fr').className = 'error_fr';
            document.getElementById('error_formulario_precios').className = 'error_formulario';
        }
    }
    return true;
}





/**
* 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

