﻿function buscadorPaquetes(name) {
    if (name) {
        this.name = name;
    } else { 
        this.name = "xmlDoc";
    }
    this.diaSalidaStr = new Array();
    this.diaSalidaDate = new Array();
    this.xmlDocSinVuelo = new XMLRemoteRequest("xmlDocSinVuelo");
    this.xmlDocZonas = new XMLRemoteRequest("xmlDocZonas");
    this.xmlDocFechas = new XMLRemoteRequest("xmlDocFechas");
    this.xmlDocEstancias = new XMLRemoteRequest("xmlDocEstancias");
    this.xmlDocDestinos = new XMLRemoteRequest("xmlDocDestinos");
    this.msgSeleccione = "Seleccione";
    this.msgSinVuelo = "Sin Vuelo";
    this.msgMargen = "Mensaje margen";
    this.msgFaltaDest = "Falta destino";
    this.msgFaltaOri = "Falta origen";
    this.msgFaltaFecha = "Falta fecha";
    this.msgFaltaEst = "Falta estancia";


    /*inicializacion de valores del buscador*/
    this.idPaquete = "";
    this.tipoPaquete = "";
    this.Destino = "?";
    this.Origen = "?";
    this.Fecha = null;
    this.Estancia = "?";
    this.margen = 0;
    this.ClaseProducto = "";
    this.buscarPre = true;
    this.buscarPae = true;
    this.buscarDin = true;
    this.buscarCynsa = true;
    this.buscarSoltour = true;
    this.buscar5Estrellas = true;
    this.buscarSpecialTours = true;

    this.RedirigirA = "/rPaquetes/Listado.aspx";
    this.RedirigirSinDisponibilidadATodos = "/listadoProducto/listadoProducto.aspx";
    this.RedirigirSinDisponibilidadA = "/listadoPaquetes/listadoPaquetes.aspx"
    this.FormatoFecha = "dd/MM/yyyy";


    /*id's Selectores*/
    this.Form = "frmMain";
    this.idSelectorOrigen = "";
    this.idSelectorDestino = "";
    this.idLabelSinVuelo = "";
    this.idSelectorEstancia = "";
    this.idSelectorFecha = "";
    this.idSelectorHabitaciones = "";

}

buscadorPaquetes.prototype.disableAll = function() {
    this.diaSalidaStr = new Array();
    this.diaSalidaDate = new Array();
    document.getElementById(this.idLabelSinVuelo).style.display = 'none'
    document.getElementById(this.idSelectorOrigen).style.display = 'block'
    nodeRemoveAllChilds(this.idSelectorOrigen)
    document.getElementById(this.idSelectorOrigen).disabled = true;
    eval(this.idSelectorFecha + '_ActivarDesactivar(false)');
    document.getElementById(this.idSelectorEstancia).disabled = true;
}

buscadorPaquetes.prototype.ObtenerDestinos = function() {
    this.disableAll();
    var cmb = document.getElementById(this.idSelectorDestino);
    nodeRemoveAllChilds(this.idSelectorDestino);
    var url = "/rPaquetes/include/ctlBuscadorPaquetes/ashx/xmlRequest.ashx?";
    url += "action=epdest";
    url += "&clp=" + this.ClaseProducto;
    url += "&id=" + this.idPaquete;
    url += "&y=" + Math.random();
    url += "&buscarPre=" + this.buscarPre;
    url += "&buscarPae=" + this.buscarPae;
    url += "&buscarDin=" + this.buscarDin;
    url += "&buscarCynsa=" + this.buscarCynsa;
    url += "&buscarSoltour=" + this.buscarSoltour;
    url += "&buscarSpecialTours=" + this.buscarSpecialTours;
    url += "&buscar5Estrellas=" + this.buscar5Estrellas;
    this.xmlDocDestinos.getRemoteDocument(url);
    var opt = document.createElement('option');
    opt.value = "?";
    opt.innerHTML = this.msgSeleccione;
    cmb.appendChild(opt);
    var list = this.xmlDocDestinos.selectNodes("xml/zon");
    for (i = 0; i < list.length; i++) {
        opt = document.createElement('option');
        opt.value = list[i].getAttribute('cod') + '#' + list[i].getAttribute('vue') + '#' + list[i].getAttribute('fer');
        opt.innerHTML = list[i].getAttribute('nom');
        cmb.appendChild(opt);
    }
    document.getElementById(this.idSelectorDestino).style.display = 'block';
}

buscadorPaquetes.prototype.actualizarOrigen = function(actualizarFechas) {
    var aDest = new Array();
    var vuel = 0;
    var fer = 0;
    if (this.idPaquete == "") {
        aDest = cmbGetValue(this.idSelectorDestino).split('#'); //0-> idDestino; 1-> Vuelo:1/0; 2-> Ferry:1/0
        this.Destino = aDest[0];
        vuel = aDest[1];
        fer = aDest[2];
    }
    else {
        var url = "/rPaquetes/include/ctlBuscadorPaquetes/ashx/xmlRequest.ashx?";
        url += "action=epdest";
        url += "&clp=" + this.ClaseProducto;
        url += "&id=" + this.idPaquete;
        url += "&y=" + Math.random();
        this.xmlDocDestinos.getRemoteDocument(url);
        var list = this.xmlDocDestinos.selectNodes("xml/zon");
        for (i = 0; i < list.length; i++) {
            if (list[i].getAttribute('cod') == this.Destino) {
                vuel = list[i].getAttribute('vue');
                fer = list[i].getAttribute('fer')
                break;
            }
        }
    }
    this.disableAll();
    nodeRemoveAllChilds(this.idSelectorOrigen)
    nodeRemoveAllChilds(this.idSelectorEstancia)
    var cmb = document.getElementById(this.idSelectorOrigen);
    if (this.Destino != '?') {
        var opt = document.createElement('option');
        opt.value = '?';
        opt.innerHTML = this.msgSeleccione;
        cmb.appendChild(opt);
        var url = "/rPaquetes/include/ctlBuscadorPaquetes/ashx/xmlRequest.ashx?";
        url += "action=epori";
        url += "&dest=" + this.Destino;
        url += "&clp=" + this.ClaseProducto;
        url += "&id=" + this.idPaquete;
        url += "&vue=" + vuel;
        url += "&fer=" + fer;
        url += "&buscarPre=" + this.buscarPre;
        url += "&buscarPae=" + this.buscarPae;
        url += "&buscarDin=" + this.buscarDin;
        url += "&buscarCynsa=" + this.buscarCynsa;
        url += "&buscarSoltour=" + this.buscarSoltour;
        url += "&buscarSpecialTours=" + this.buscarSpecialTours;
        url += "&buscar5Estrellas=" + this.buscar5Estrellas;
        url += "&y=" + Math.random();
        //alert(url);
        this.xmlDocZonas.getRemoteDocument(url);
        //this.xmlDocZonas.getRemoteDocument("/rPaquetes/include/ctlBuscadorPaquetes/ashx/xmlRequest.ashx?action=epori&dest=" + this.Destino + "&clp=" + this.ClaseProducto + "&y=" + Math.random());
        var list = this.xmlDocZonas.selectNodes("xml/zon");
        //Lo primero es comprobar si nos devuelve sinVuelo, asi lo pintamos en primer lugar
        var insertado;
        for (var i = 0; i < list.length; i++) {
            if ((list[i].getAttribute("cod") == "-1") && (!insertado)) {
                opt = document.createElement('option');
                opt.value = '-1';
                opt.innerHTML = this.msgSinVuelo;
                cmb.appendChild(opt);
                insertado = true;
            }
        }
        cmbSelectValue(this.idSelectorOrigen, '-1');

        if (list.length > 0) {
            for (var i = 0; i < list.length; i++) {
                //Aquí ya hemos añadido sinVuelo no hay que volverlo a sacar.
                if (list[i].getAttribute("cod") != "-1") {
                    opt = document.createElement('option');
                    opt.value = list[i].getAttribute('cod');
                    opt.innerHTML = list[i].getAttribute('nom');
                    cmb.appendChild(opt);
                    cmbSelectValue(this.idSelectorOrigen, '-1');
                }
            }
            document.getElementById(this.idLabelSinVuelo).style.display = 'none'
            cmb.style.display = 'block'
            if (cmb.length == 2 && cmb.options[cmb.selectedIndex].value == "-1") {
                cmb.style.display = 'none'
                if (!this.buscarSpecialTours) { document.getElementById(this.idLabelSinVuelo).style.display = 'block' }
            }
            if (cmb.length == 2 && cmb.options[cmb.selectedIndex].value != "-1") { cmb.selectedIndex = 1; };
            if (cmb.length > 2) { cmbSelectValue(this.idSelectorOrigen, this.Origen); };
            if (actualizarFechas != false) this.actualizarFechas();
        } else {
            opt = document.createElement('option');
            opt.value = '-1';
            opt.innerHTML = this.msgSinVuelo;
            cmb.appendChild(opt);
            cmbSelectValue(this.idSelectorOrigen, '-1');
            document.getElementById(this.idSelectorOrigen).style.display = 'none'
            document.getElementById(this.idLabelSinVuelo).style.display = 'block'
            if (actualizarFechas != false) this.actualizarFechas();
        }
        document.getElementById(this.idSelectorOrigen).disabled = false;
    }
}

buscadorPaquetes.prototype.actualizarFechas = function(actualizarEstancias) {
    var fechaMin = new Date();
    var fechaMax = new Date();
    var f = '';
    if (this.idPaquete == '' || (this.tipoPaquete != "pre")) { this.Origen = cmbGetValue(this.idSelectorOrigen); } else { this.Origen = -1 }
    document.getElementById(this.idSelectorEstancia).disabled = true;
    eval(this.idSelectorFecha + '_ActivarDesactivar(false)');
    if (this.Destino != '?' && this.Origen != '?') {
        this.resetFecini();
        var url = "/rPaquetes/include/ctlBuscadorPaquetes/ashx/xmlRequest.ashx?action=epfec&dest=" + this.Destino + "&ori=" + this.Origen + "&clp=" + this.ClaseProducto + "&mrg=" + this.margen + "&id=" + this.idPaquete + "&tipo=" + this.tipoPaquete;
        url += "&buscarPre=" + this.buscarPre;
        url += "&buscarPae=" + this.buscarPae;
        url += "&buscarDin=" + this.buscarDin;
        url += "&buscarCynsa=" + this.buscarCynsa;
        url += "&buscarSoltour=" + this.buscarSoltour;
        url += "&buscarSpecialTours=" + this.buscarSpecialTours;
        url += "&buscar5Estrellas=" + this.buscar5Estrellas;
        url += "&y=" + Math.random();
        this.xmlDocFechas.getRemoteDocument(url);
        var list = this.xmlDocFechas.selectNodes("xml/fec")
        if (list.length == 0) {
            eval(this.idSelectorFecha + "_ActualizarDiasActivos(new Array())");
        } else {
            for (var i = 0; i < list.length; i++) {
                this.diaSalidaStr[i] = list[i].getAttribute('txt');
                this.diaSalidaDate[i] = new Date(this.diaSalidaStr[i]);
            }
            this.diaSalidaStr = this.diaSalidaStr.sort();
            document.getElementById(this.idSelectorFecha + "_campoFecha").value = '';
            eval(this.idSelectorFecha + "_ActualizarDiasActivos(this.diaSalidaDate)");
            eval(this.idSelectorFecha + '_ActivarDesactivar(true)');
            document.getElementById(this.idSelectorFecha + "_functionOnClose").value = this.name + ".actualizarEstancias()";
            this.inicializarFecini();
            if (actualizarEstancias != false) this.actualizarEstancias();
        }
    }
}

buscadorPaquetes.prototype.actualizarEstancias = function () {
    // Estancia
    this.Fecha = document.getElementById(this.idSelectorFecha + "_campoFecha").value;
    if (!isValidDate(this.Fecha, this.FormatoFecha)) return false;
    nodeRemoveAllChilds(this.idSelectorEstancia)
    var cmb = document.getElementById(this.idSelectorEstancia);
    var opt;
    opt = document.createElement('option');
    opt.value = '?';
    opt.innerHTML = this.msgSeleccione;
    cmb.appendChild(opt);

    var url = "";
    if (this.idPaquete != '') {
        url = "/rPaquetes/include/ctlBuscadorPaquetes/ashx/xmlRequest.ashx?action=epest&dest=" + this.Destino + "&ori=" + this.Origen + "&fsal=" + this.Fecha + "&clp=" + this.ClaseProducto + "&id=" + this.idPaquete
        url += "&buscarPre=" + this.buscarPre;
        url += "&buscarPae=" + this.buscarPae;
        url += "&buscarDin=" + this.buscarDin;
        url += "&buscarCynsa=" + this.buscarCynsa;
        url += "&buscarSoltour=" + this.buscarSoltour;
        url += "&buscarSpecialTours=" + this.buscarSpecialTours;
        url += "&buscar5Estrellas=" + this.buscar5Estrellas;
        url += "&y=" + Math.random();
    }
    if (this.Destino != "?" && this.idPaquete=="") {
        url = "/rPaquetes/include/ctlBuscadorPaquetes/ashx/xmlRequest.ashx?action=epest&dest=" + this.Destino + "&ori=" + this.Origen + "&fsal=" + this.Fecha + "&clp=" + this.ClaseProducto
        url += "&buscarPre=" + this.buscarPre;
        url += "&buscarPae=" + this.buscarPae;
        url += "&buscarDin=" + this.buscarDin;
        url += "&buscarCynsa=" + this.buscarCynsa;
        url += "&buscarSoltour=" + this.buscarSoltour;
        url += "&buscarSpecialTours=" + this.buscarSpecialTours;
        url += "&buscar5Estrellas=" + this.buscar5Estrellas;
        url += "&y=" + Math.random();
    }

    if (url != "") {
        this.xmlDocFechas.getRemoteDocument(url);
        var list = this.xmlDocFechas.selectNodes("xml/est")
        for (var i = 0; i < list.length; i++) {
            opt = document.createElement('option');
            opt.value = list[i].getAttribute('dia');
            opt.innerHTML = list[i].getAttribute('dia');
            cmb.appendChild(opt);
        }
    }
    if (cmb.length > 1) cmb.selectedIndex = 1;
    document.getElementById(this.idSelectorEstancia).disabled = false;
}


buscadorPaquetes.prototype.resetFecini = function() {
    this.diaSalidaStr = new Array();
    this.diaSalidaDate = new Array();
}

buscadorPaquetes.prototype.inicializarFecini = function() {
    var selDay = new Date(this.diaSalidaStr[0]);
    var inpFecini = document.getElementById(this.idSelectorFecha + "_campoFecha");
    inpFecini.value = DateToString(selDay, this.FormatoFecha);
}


/*Inicialización del buscador*/
buscadorPaquetes.prototype.inicializarBuscador = function() {
    //if (this.idPaquete == "") this.ObtenerDestinos();
    if (this.Destino != '?') {
        if (this.idPaquete == "") cmbSelectSimilarValue(this.idSelectorDestino, this.Destino);
        if (this.idPaquete == "" || this.tipoPaquete != "pre") {
            this.actualizarOrigen(false);
            if (this.Origen != '?') cmbSelectValue(this.idSelectorOrigen, this.Origen);
        }
        this.actualizarFechas(false);
        if (this.Fecha != null) {
            document.getElementById(this.idSelectorFecha + "_campoFecha").value = this.Fecha;
        }
        this.actualizarEstancias();
        if (this.estancia != '?') cmbSelectValue(this.idSelectorEstancia, this.estancia);
    }
}



/*Buscar Paquetes*/

buscadorPaquetes.prototype.validarFormulario = function() {
    var fmt = "<%=BookingEngine.config.FormatoFecha%>";
    var errmsg = '';
    if (this.idPaquete == '') {
        if (cmbGetValue(this.idSelectorDestino) == '?') errmsg += '\n ' + this.msgFaltaDest;
        if (cmbGetValue(this.idSelectorOrigen) == '?') errmsg += '\n ' + this.msgFaltaOri;
    }
    if (document.getElementById(this.idSelectorFecha + "_campoFecha").value == '') errmsg += '\n ' + this.msgFaltaFecha;
    var dis = document.getElementById(this.idSelectorEstancia).disabled;
    document.getElementById(this.idSelectorEstancia).disabled = false;
    if (cmbGetValue(this.idSelectorEstancia) == '?' || document.getElementById(this.idSelectorEstancia).disabled == true) errmsg += '\n ' + this.msgFaltaEst;
    document.getElementById(this.idSelectorEstancia).disabled = dis;
    if (errmsg == '') {
//        var arrayFEnt = document.getElementById(this.idSelectorFecha + "_campoFecha").value.split("/");
        //        var fEnt = new Date(arrayFEnt[2], arrayFEnt[1] - 1, arrayFEnt[0]);
        var fEnt = StringToDate(document.getElementById(this.idSelectorFecha + "_campoFecha").value, fmt);
        var diaMg = new Date();
        diaMg.setDate(diaMg.getDate() + this.margen);
        diaMg.setHours(0, 0, 0, 0);
        if ((fEnt < diaMg)) errmsg += "* " + this.msgMargen + ".\n";
    }
    if (errmsg == '') { return true; } else { alert(errmsg); return false; }
}


buscadorPaquetes.prototype.buscarVuelosGdsAlo = function (tipo, Paqid) {
    var frmMain = document.getElementById(this.Form);
    if (this.validarFormulario()) {
        var parametros = "";
        if (this.idPaquete == '') {
            var aDest = cmbGetValue(this.idSelectorDestino).split('#');
            parametros += "&idZonaDestino=" + aDest[0];
            parametros += "&idZonaOrigen=" + document.getElementById(this.idSelectorOrigen).value;
            if (this.buscarPre) { parametros += "&buscarPre=true" } else { parametros += "&buscarPre=false" }
            if (this.buscarPae) { parametros += "&buscarPae=true" } else { parametros += "&buscarPae=false" }
            if (this.buscarDin) { parametros += "&buscarDin=true" } else { parametros += "&buscarDin=false" }
        } else {
            parametros += "&idPaq=" + this.idPaquete;
            parametros += "&tipoPaq=" + this.tipoPaquete;
            switch (this.tipoPaquete) {
                case "pre": parametros += "&buscarPre=true&buscarPae=false&buscarDin=false"; break;
                case "est": parametros += "&buscarPre=false&buscarPae=true&buscarDin=false"; break;
                case "din": parametros += "&buscarPre=false&buscarPae=false&buscarDin=true"; break;
            }
            if (this.Destino != "") parametros += "&idZonaDestino=" + this.Destino;
            if (document.getElementById(this.idSelectorOrigen)) parametros += "&idZonaOrigen=" + document.getElementById(this.idSelectorOrigen).value;
        }
        parametros += "&fIni=" + document.getElementById(this.idSelectorFecha + "_campoFecha").value;
        var dis = document.getElementById(this.idSelectorEstancia).disabled;
        document.getElementById(this.idSelectorEstancia).disabled = false;
        parametros += "&estancia=" + document.getElementById(this.idSelectorEstancia).value;
        document.getElementById(this.idSelectorEstancia).disabled = dis;
        parametros += "&lhabi=" + eval(this.idSelectorHabitaciones + "_obtenerDistribucionlHabi()");
        parametros += "&CLP=" + this.ClaseProducto;
        parametros += "&tipo=" + tipo;
        parametros += "&CodMant=" + Paqid;
        var UrlPost = this.RedirigirA;
        if (this.buscarSpecialTours) { //Al tener paquetes antiguos, tenemos que condicionar para specialtours y vaya por los nuevos
            var accion = "searchPaqGen";
        } else {
            var accion = "buscarPaq";
        }

        submit(frmMain, UrlPost, accion, parametros, true);
    }
}

buscadorPaquetes.prototype.buscarSinDisponibilidad = function () {
    var parametros = ""
    parametros += "tipo=P";
    if (document.getElementById(this.idSelectorDestino).value == "?") { alert(this.msgFaltaDest); return };
    parametros += "&idzon=" + document.getElementById(this.idSelectorDestino).value;
    if (!IsNullOrEmpty(this.ClaseProducto)) parametros += "&CLP=" + this.ClaseProducto;
    var UrlPost = this.RedirigirSinDisponibilidadATodos;
    var accion = "buscarProducto";
    window.location.href = UrlPost + "?" + parametros + "&accion=buscarProducto";
}

buscadorPaquetes.prototype.buscarPaquetesDisp = function (tipo, form) {
    var parametros = ""
    parametros += "tipo=" + tipo;
    if (document.getElementById(this.idSelectorDestino).value == "?") { alert(this.msgFaltaDest); return };
    parametros += "&idzon=" + document.getElementById(this.idSelectorDestino).value.split("#")[0];
    //parametros += "&Fini=" + document.getElementById('_ctl0_derecha_ctlBuscadorPaquetes_FechaPaquete_campoFecha').value;
    parametros += "&Fini=" + document.getElementById(this.idSelectorFecha + "_campoFecha").value;
    parametros += "&DiasEst=" + document.getElementById(this.idSelectorEstancia).value;
    parametros += "&lhabi=" + eval(this.idSelectorHabitaciones + "_obtenerDistribucionlHabi()");
    parametros += "&Origen=" + document.getElementById(this.idSelectorOrigen).value.split("#")[0];
    //alert(parametros);
    if (!IsNullOrEmpty(this.ClaseProducto)) parametros += "&CLP=" + this.ClaseProducto;
    var UrlPost = this.RedirigirSinDisponibilidadA;
    var accion = "buscarProducto";
    //window.location.href = UrlPost + "?" + parametros + "&accion=buscarProducto";
    submit(form, UrlPost, accion, parametros, true);
}

    
