﻿var dtoBusquedaVuelos;
var listaPuntosMapa;
var sentidoIda = 1;
var sentidoVuelta = 2
var sentidoIdaVuelta = 3;
var RespuestaListadoVuelos;
var msgErrorSolicitud="Se ha producido un error en la solicitud de vuelos";
var msgVuelosNoDisponibles = "No se han encontrado vuelos disponibles para este trayecto";
var urlListadoVuelos = "/RecuperaListadoVuelos.ashx";
var capaEsperaClass = ".Espera";
var classListadoVuelos = "#contenedoraListado";
var paginaActual=1;
var regXPagina = 8;
var capaPaginadorVuelos = "#paginadorVuelos";
var numeroPropuestaTotales;
var paginasTotales;
var ordenPrecioAscendente = true;
var urlServidor;
var urlServidorMultimedia;
var idHtmlPropuestaVuelo = ".htmlPropuestaVuelo";
var idHtmlContenedoraListado = "#contenedoraListado";
var idHtmlTablaVuelo = ".htmlTablaVuelo";
var idCapaListadoVuelos = "#capaListadoVuelos";
var idHtmlPrecioVuelo = ".htmlPrecioVuelo";
var idHtmlEscalas = ".htmlEscalas";
var idHtmlPropuesta = ".htmlPropuesta";
var idHtmlPropuestaVuelo = ".htmlPropuestaVuelo";
var idHtmlFilaVuelo = ".htmlFilaVuelo";
var idFiltroVuelos = "#filtroVuelos";
var idTablaOperadores = "#tbOperadores";
var idHtmlResumen = ".resumen";
var PlantillaHtmlEscalas;
var PlantillaHtmlTablaVuelo;
var PlantillaHtmlPrecioVuelo;
var PlantillaHtmlPropuesta;
var PlantillaHtmlPropuestaVuelo;
var PlantillaHtmlFilaVuelo;
var PlantillaHtmlResumen;
var temPropuesta;
var temPropuestaVuelo;
var nodoVuelo;
var temPrecioVuelo;
var tempResumenVuelo;

var urlReserva;

var textoMasDetalles = "Más detalles";
var textoMasDetalles = "Ocultar";
var textoPasajeros;

var imgBlank = new Image();
var imgEscalas = new Image();
var imgAvionIda = new Image();
var imgAvionVuelta = new Image();
var imgIda = new Image();
var imgVuelta = new Image();
var imgRdbSeleccionado = new Image();
var imgRdbDesseleccionado = new Image();
var imgInformacion = new Image();
var imgFlecha = new Image();
var numeroGruposRdb=0;
var companiaOperadora;
var iataOperador;
var sentido;
var numeroInfos = 0;
var nodFilaEscala;
var imgOperador;
var numeroVuelos = 0;
var SliderIda;
var SliderVuelta;
var horaIdaMinimo=0;
var horaIdaMaximo=24;
var horaVueltaMinimo=0;
var horaVueltaMaximo = 24;

var PeticionFiltrado;
var RegistrosFiltrados;

// Identificacion Vuelo
var tipoPropuesta;
var PropuestaSinMezclar = 1;
var PropuestaMezclada = 2;

var inputVueloIdaSeleccionado;
var inputVueloVueltaSeleccionado;
var inputTipoPropuesta;

var ClassInputHiddenIda = ".inputGuidIda";
var ClassInputHiddenVuelta = ".inputGuidVuelta";
var ClassInputHiddenTipoPropuesta = ".tipoPropuesta";


var PlantillaHtmlInputHiddenIda;
var PlantillaHtmlInputHiddenVuelta;
var PlantillaHtmlInputHiddenTipoPropuesta;


/* Filtro Escalas */
var idBtnEscalas = "#btnEscalas";
var sinEscalas=false;
var numeroEscalasMinimo = 2;


/* Inicio Solicitudes */

function InicializaPeticionVuelos() {
    if (dtoBusquedaVuelos != null && dtoBusquedaVuelos.hashBusqueda!=null) {
        SolicitudAjax=$.ajax({ url: urlListadoVuelos, type: 'POST', data: { idBusqueda: dtoBusquedaVuelos.hashBusqueda }, dataType: 'json',
        success: ContinuaPeticionVuelos, error: ErrorPeticionVuelos});
    }
    PrecargarImagenes();
}

function ErrorPeticionVuelos() {
        AjaxError();
    }

function ContinuaPeticionVuelos(data) {

    if (data.PeticionCorrecta == true) {
        RespuestaListadoVuelos = data;       
        ProcesarPropuestasVuelos();        
    }
    else {
        //alert(msgErrorSolicitud);
        // MostrarCapaError();
        MostrarCapaSinResultados(true);
    }
}


/* Fin Solicitudes */

/* Inicio Mezclado vuelos */

function ProcesarPropuestasVuelos() {

    listaPuntosMapa = RespuestaListadoVuelos.ListaAeropuertos;
    if (RespuestaListadoVuelos.ListaPropuestaIda != null && RespuestaListadoVuelos.ListaPropuestaIda.length > 0) 
        $(RespuestaListadoVuelos.ListaPropuestaIda).each(MezclarVuelos);

  
 
    RespuestaListadoVuelos.ListaPropuestaVuelta = null;
    RespuestaListadoVuelos.ListaPropuestaIda = null;

    if (RespuestaListadoVuelos.ListaPropuestaIdaVuelta.length > 0) {
        RespuestaListadoVuelos.ListaPropuestaIdaVuelta.sort(OrdenarVuelos);
        $(RespuestaListadoVuelos.ListaPropuestaIdaVuelta).each(function() { this.visible = true; });        
        numeroPropuestaTotales = RespuestaListadoVuelos.ListaPropuestaIdaVuelta.length;       
        BindNumeroPasajeros();
        BindPlantillas();
        MostrarFiltroYPestanas();
      
        MostrarListado(false);
        MostrarOperadores();
        $(capaEsperaClass).fadeOut("fast", function() { $(classListadoVuelos).fadeIn(); })  
    }
    else {       
        MostrarCapaSinResultados(true);
    }
}

function MostrarFiltroYPestanas() {
    $(idFiltroVuelos).show();
}



function BindNumeroPasajeros() {
    textoPasajeros = RespuestaListadoVuelos.NumeroPasajeros + " Pasajero";
    if (RespuestaListadoVuelos.NumeroPasajeros > 1) textoPasajeros += "s";
}

function BindPlantillas() {
    PlantillaHtmlEscalas = $(idHtmlEscalas).clone(true);  
    PlantillaHtmlFilaVuelo = $(idHtmlFilaVuelo).clone(true);
    $(idHtmlTablaVuelo + " " + idHtmlFilaVuelo).empty();
    $(idHtmlTablaVuelo + " " + idHtmlEscalas).empty();
    PlantillaHtmlTablaVuelo = $(idHtmlTablaVuelo).clone(true);    
    PlantillaHtmlPrecioVuelo = $(idHtmlPrecioVuelo).clone(true);
    PlantillaHtmlResumen = $(idHtmlResumen).clone(true);
    $(idHtmlPropuestaVuelo).empty();
    PlantillaHtmlPropuestaVuelo = $(idHtmlPropuestaVuelo).clone(true);
    PlantillaHtmlInputHiddenIda = $(ClassInputHiddenIda).clone(true);
    PlantillaHtmlInputHiddenVuelta = $(ClassInputHiddenVuelta).clone(true);
    PlantillaHtmlInputHiddenTipoPropuesta = $(ClassInputHiddenTipoPropuesta).clone(true);           

    BorrarContenidoCentral();

    PlantillaHtmlPropuesta = $(idHtmlPropuesta).clone(true);  
}

function BorrarContenidoCentral() {
    
    $(idHtmlPropuesta + " .cen").empty();
    //Esto equivale a:
//    $(idHtmlTablaVuelo).empty();
//    $(idHtmlEscalas).empty();
//    $(idHtmlPrecioVuelo).empty();
}
function MezclarVuelos(contador) {
    var propuestaIda = this;

    var precioTotalParcial = propuestaIda.PrecioTotal;
    var precioFeeParcial = propuestaIda.PrecioFee;
    var precioBaseParcial = propuestaIda.PrecioBase;
    var precioTasasParcial = propuestaIda.PrecioTasas;
    var precioTotalSinEmision = propuestaIda.PrecioTotalSinEmision;
    var precioGDSParcial = propuestaIda.PrecioGDS;

    $(RespuestaListadoVuelos.ListaPropuestaVuelta).each(function(contador) {
        var nuevaPropuesta;
        nuevaPropuesta = $.extend(nuevaPropuesta, propuestaIda);
        nuevaPropuesta.PrecioTotal = SumaPrecios(precioTotalParcial, this.PrecioTotal);
        nuevaPropuesta.PrecioBase = SumaPrecios(precioBaseParcial, this.PrecioBase);
        nuevaPropuesta.PrecioFee = SumaPrecios(precioFeeParcial, this.PrecioFee);
        nuevaPropuesta.PrecioGDS = SumaPrecios(precioGDSParcial, this.PrecioGDS);

        nuevaPropuesta.PrecioTasas = SumaPrecios(precioTasasParcial, this.PrecioTasas);
        nuevaPropuesta.PrecioTotalSinEmision = SumaPrecios(precioTotalSinEmision, this.PrecioTotalSinEmision);
        //nuevaPropuesta.CompaniaOperadora = this.CompaniaOperadora;
        nuevaPropuesta.TipoPropuesta = this.TipoPropuesta;
        nuevaPropuesta.SentidoTrayecto = this.SentidoTrayecto;
        nuevaPropuesta.ListaVuelosIda = jQuery.map(propuestaIda.ListaVuelosIda, function(n, i) { return n; });
        nuevaPropuesta.ListaVuelosVuelta = jQuery.map(this.ListaVuelosIda, function(n, i) { return n; });
        nuevaPropuesta.IataOperadorVuelta = this.IataOperadorIda;

        // Se verifica que no haya vuelos de vuelta que salgan antes que los de ida
        var primeraFechaIda = ParseaFechaANeutro(nuevaPropuesta.ListaVuelosIda[0].fechaLlegada, nuevaPropuesta.ListaVuelosIda[0].horaLlegada)
        var topArray = nuevaPropuesta.ListaVuelosVuelta.length;
        for (cont = 0; cont < topArray; cont++) {
            var fechaVuelta = ParseaFechaANeutro(nuevaPropuesta.ListaVuelosVuelta[cont].fechaSalida, nuevaPropuesta.ListaVuelosVuelta[cont].horaSalida)
            if (fechaVuelta <= primeraFechaIda) {
                nuevaPropuesta.ListaVuelosVuelta.splice(cont, 1);
                cont--;
                topArray--;
            }
        }

        // Se verifica que haya vuelos de vuelta que salgan despues que el de ida
        if (nuevaPropuesta.ListaVuelosVuelta.length > 0) {
            var ultimaFechaVuelta = ParseaFechaANeutro(nuevaPropuesta.ListaVuelosVuelta[nuevaPropuesta.ListaVuelosVuelta.length - 1].fechaSalida, nuevaPropuesta.ListaVuelosVuelta[nuevaPropuesta.ListaVuelosVuelta.length - 1].horaSalida)
            var topArray = nuevaPropuesta.ListaVuelosIda.length;
            for (cont = 0; cont < topArray; cont++) {
                var fechaIda = ParseaFechaANeutro(nuevaPropuesta.ListaVuelosIda[cont].fechaLlegada, nuevaPropuesta.ListaVuelosIda[cont].horaLlegada)
                if (ultimaFechaVuelta <= fechaIda) {
                    nuevaPropuesta.ListaVuelosIda.splice(cont, 1);
                    cont--;
                    topArray--;
                }
            }
        }


        if (nuevaPropuesta.ListaVuelosVuelta.length > 0 && nuevaPropuesta.ListaVuelosIda.length > 0)
            RespuestaListadoVuelos.ListaPropuestaIdaVuelta[RespuestaListadoVuelos.ListaPropuestaIdaVuelta.length] = nuevaPropuesta;
    });
}


function OrdenarVuelos(vuelo1, vuelo2) {

    if (ordenPrecioAscendente == true) {
        return PrecioToNeutralFormat(vuelo1.PrecioTotalSinEmision) - PrecioToNeutralFormat(vuelo2.PrecioTotalSinEmision);
    }
    else
        return PrecioToNeutralFormat(vuelo2.PrecioTotalSinEmision) - PrecioToNeutralFormat(vuelo1.PrecioTotalSinEmision);
     
}

/* Fin Mezclado Vuelos*/

/*Inicio HTML */

function MostrarListado(ordenar) {
    //if (ordenar)  RegistrosFiltrados.sort(OrdenarVuelos);
    RenderPaginador();
    RenderVuelos();
    //Dispose(); 
}

function Dispose() {
    RegistrosFiltrados = null;
}

function MostrarOperadores() {
    var numOperadores = RespuestaListadoVuelos.ListaOperadores.length;
    var tablaOperadores = $(idTablaOperadores);
    for (var contador = 0; contador < numOperadores; contador++) {
        RespuestaListadoVuelos.ListaOperadores[contador].Activo = true;
        $(tablaOperadores).append(CrearTrOperador(RespuestaListadoVuelos.ListaOperadores[contador]));
    }
    $(tablaOperadores).find("img.chkOperador").each(ActivateChkOperador);
    $(tablaOperadores).find("a.exclusivo").each(ActivateChkOperadorEsclusivo);
    $(idFiltroVuelos).find("a.todas").each(ActivateChkOperadorEsclusivo);
    
}

function CrearTrOperador(operador) {
    var html = "<tr><td class=\"c1\"><img class=\"chkOperador\" rel=\""+ operador.Key;
    html +="\" src=\"/images/radio_bot_selec.gif\" alt=\"-\" title=\"\"></td><td class=\"c2\">" + operador.Value;
    html += "</td><td class=\"c3\"><a class=\"exclusivo\" href=\"#\" rel=\"" + operador.Key + "\" title=\"Sólo esta\"><span>Sólo esta*</span></a></td><tr>"; 
    return html;

}

function RenderPaginador() {

    paginasTotales = RecuperaPaginasTotales();
    $(capaPaginadorVuelos).empty();
    var inicioPaginador = parseInt(paginaActual) - 9;
    if (inicioPaginador < 1) inicioPaginador = 1;

    var finPaginador = parseInt(paginaActual) + 9;
    if (finPaginador > paginasTotales) finPaginador = paginasTotales

    var htmlPaginador = "<ul>";

    paginaAnterior = inicioPaginador - 1;
    paginaPosterior = finPaginador + 1;

    if (inicioPaginador > 1) htmlPaginador += "<li rel=\"" + paginaAnterior + "\">Anteriores</li>";
   
    
    for (var contador = inicioPaginador; contador <= finPaginador; contador++) {
    
        
        if (contador == paginaActual)
            htmlPaginador += "<li class=\"actual\" rel=\"" + contador + "\">" + contador + "</li>";
        else
            htmlPaginador += "<li rel=\"" + contador + "\">" + contador + "</li>";

    }
    
    if (finPaginador < paginasTotales) htmlPaginador += "<li rel=\"" + paginaPosterior + "\">Siguientes</li>";
    htmlPaginador += "</ul><p> Pagina: " + paginaActual + " de " + paginasTotales + "</p>";
    $(capaPaginadorVuelos).append(htmlPaginador);
    $("#paginadorVuelos ul li").bind("click", CambioPagina);
    $("#paginadorVuelos ul li").hover(HovePagina, MouseOutPaqina);
    $("#paginadorVuelos ul li.actual").css("cursor", "default");  

}

function RenderVuelos() {
    IniciarContadores();
    $(idCapaListadoVuelos).empty();   
    var registroInferior = DevuelveRegInferior();
    var registroSuperior = DevuelveRegSuperior();
    var registrosVisibles = -1;
    var listaVuelos=RespuestaListadoVuelos.ListaPropuestaIdaVuelta.length
    for (var contador = 0; contador < listaVuelos; contador++) {
        var propuesta = RespuestaListadoVuelos.ListaPropuestaIdaVuelta[contador];
        if (propuesta.visible == true) {
            registrosVisibles++;         
            if (registrosVisibles < registroInferior) continue; 
            AnadirPropuestaVuelo(propuesta, contador);
            if (registrosVisibles == registroSuperior) break;
            
          
        }
    }
    BindSinEscalas();
}


function AnadirPropuestaVuelo(propuestaVuelo, contador) {

    var precioTotalSinEmision = new Number(PrecioToNeutralFormat(propuestaVuelo.PrecioTotalSinEmision)).toFixed(2);
    var precioSplit = precioTotalSinEmision.toString().split(".");
    var precioEntero = precioSplit[0];
    var precioDecimal = precioSplit[1];


    iataOperador = propuestaVuelo.IataOperadorIda;
    companiaOperadora = RecuperaOperador(iataOperador).Value;


    temPropuesta = PlantillaHtmlPropuesta.clone(true);

    inputVueloIdaSeleccionado = PlantillaHtmlInputHiddenIda.clone();
    inputVueloVueltaSeleccionado = PlantillaHtmlInputHiddenVuelta.clone();
    inputTipoPropuesta = PlantillaHtmlInputHiddenTipoPropuesta.clone();
    $(inputTipoPropuesta).val(propuestaVuelo.TipoPropuesta);
    tipoPropuesta = propuestaVuelo.TipoPropuesta;
    

    temPropuestaVuelo = $(PlantillaHtmlPropuestaVuelo).clone(true);    

    sentido = "Ida";   
    BindCabeceraTablaVuelo();
    $(propuestaVuelo.ListaVuelosIda).each(AnadirVuelo);
    numeroGruposRdb++;
    BindChkButton();
    $(temPropuestaVuelo).append(nodoVuelo.clone(true));



    sentido = "Vuelta";
    BindCabeceraTablaVuelo();

    ///Correccion de caja en el caso de que sea vuelo de ida solamente
    if (dtoBusquedaVuelos.soloIda == true) {
        $(idCapaListadoVuelos).find(".resumen p.separador").css("margin", "2em auto 1em");
        /// Evita que se muestre el vuelo de vuelta vacio
        //$(idCapaListadoVuelos).find(".htmlTablaVuelo[rel!='Ida']").hide(); 
          
    }
    else 
    {
        if (propuestaVuelo.IataOperadorVuelta) {
            iataOperador = propuestaVuelo.IataOperadorVuelta;
            companiaOperadora = RecuperaOperador(iataOperador).Value;
        }
        $(propuestaVuelo.ListaVuelosVuelta).each(AnadirVuelo);
        numeroGruposRdb++;
        BindChkButton();
    }
    //$(temPropuestaVuelo).attr("rel", tipoPropuesta);
    //$(temPropuestaVuelo).attr("rel", propuestaVuelo.TipoPropuesta);
    $(temPropuestaVuelo).append(nodoVuelo.clone(true));  

    BindPrecioPropuesta(precioEntero, precioDecimal);
    BindResumenPropuesta(propuestaVuelo);

    $(temPropuestaVuelo).append(tempResumenVuelo.clone(true));

    var capaCentral = $(temPropuesta).find(".cen");
    $(capaCentral).append(inputVueloIdaSeleccionado);
    $(capaCentral).append(inputVueloVueltaSeleccionado);
    $(capaCentral).append(inputTipoPropuesta);    
    $(capaCentral).append(temPropuestaVuelo);
    $(capaCentral).append(temPrecioVuelo.clone(true));
       
    $(idCapaListadoVuelos).append(temPropuesta);

}





/// Se rellena informacion interior de la tabla
function AnadirVuelo(contador) {


    if (contador == 0) {
        BindTipoPropuesta(this);
        $(nodoVuelo).attr("rel", sentido);
        //tipoPropuesta = this.TipoPropuesta;
    }
        
    if (this.Activo!=null && this.Activo==false) return;
    numeroVuelos++;    
    var nodFilaVuelo = $(PlantillaHtmlFilaVuelo).clone(true);
    
    
    if (parseInt(this.escalas) > 1) 
        $(nodFilaVuelo).find(".cel7").append($(imgEscalas).clone(true));    
    else 
        $(nodFilaVuelo).find(".cel7").append(imgBlank); 
   
    $(nodFilaVuelo).find(".cel3").text(this.fechaSalida);
    $(nodFilaVuelo).find(".cel4").text(this.aeropuertoSalida);    
    $(nodFilaVuelo).find(".cel6").text(this.aeropuertoLlegada);
    $(nodFilaVuelo).find(".cel8").text(this.horaSalida + "-" + this.horaLlegada);
    $(nodFilaVuelo).find(".cel85").text(this.duracion);

    
    
    imgOperador = new Image();
    imgOperador.src=urlServidorMultimedia + "/images/companias/"  + iataOperador + ".gif";
    imgOperador.alt= iataOperador;
    imgOperador.title = companiaOperadora;
    $(nodFilaVuelo).find(".cel9").append(imgOperador);
    $(nodFilaVuelo).find(".cel10").append(iataOperador);

    $(nodFilaVuelo).attr("rel", this.id);
    $(nodFilaVuelo).find(".cel11 a").attr("rel", numeroVuelos);
    $(nodFilaVuelo).find(".cel11 a").bind("click", MostrarEscalas);    
    $(nodoVuelo).append(nodFilaVuelo);
    
    $(this.trayectos).each(AnadirEscala);
 


}



function AnadirEscala(contador) {

    var alterno1 = "";
    var alterno2 = "";

    if (contador % 2 == 0)
        alterno2 = "morado";
    else
        alterno1 = "morado";
    
    
    nodFilaEscala=$(PlantillaHtmlEscalas).clone(true);
 
    var aeropuertoSalida = RecuperaAeropuerto(this.aS);
    var aeropuertoLlegada = RecuperaAeropuerto(this.aL);
    var origen = aeropuertoSalida.nombre;
    var destino = aeropuertoLlegada.nombre;
    if (this.tS.length > 0) origen +=" - terminal " + this.tS;
    if (this.tL.length > 0) destino +=" - terminal " + this.tL;

    $(nodFilaEscala).find(".cel1").html("<span class=\"" + alterno1 + "\">" + origen + " </span>");

    var imgInformacionNuevo = $(imgInformacion).clone(true);
    $(imgInformacionNuevo).attr("rel", "info" + numeroVuelos);

    numeroInfos++;


    if (aeropuertoSalida.descripcion != null && aeropuertoSalida.descripcion.length > 0) {
        $(nodFilaEscala).find(".cel1").append(CreaImgInformacion());
        $(nodFilaEscala).find(".cel1").append(CreaTextoInformacion(aeropuertoSalida.descripcion,"izq"));
    }

    numeroInfos++;
    $(nodFilaEscala).find(".cel2").html("<span class=\"" + alterno2 + "\">" + destino + " </span>");

   
    if (aeropuertoLlegada.descripcion!=null && aeropuertoLlegada.descripcion.length > 0) {
        $(nodFilaEscala).find(".cel2").append(CreaImgInformacion());
        $(nodFilaEscala).find(".cel2").append(CreaTextoInformacion(aeropuertoLlegada.descripcion,"der"));
    }

    $(nodFilaEscala).find(".cel3").append(this.fS + "-<span class=\"naranja\">" + this.hS + "</span> ");
    $(nodFilaEscala).find(".cel3").append($(imgFlecha).clone(true));
    $(nodFilaEscala).find(".cel3").append(" " + this.fL + "-<span class=\"naranja\">" + this.hL + "</span>");
    $(nodFilaEscala).find(".cel5").append($(imgOperador).clone(true));
    $(nodFilaEscala).find(".cel5").append(" " + this.cO);
    $(nodFilaEscala).find(".cel6").html("<span>Código de vuelo: </span>" + "<span class=\"resaltado\">" + this.nV + "</span>");

    $(nodFilaEscala).attr("rel", numeroVuelos);
    $(nodFilaEscala).find("img.masInfo").hover(MostrarInformacion, MostrarInformacion);
    
    $(nodoVuelo).append(nodFilaEscala);
}

function CreaTextoInformacion(informacion, lado) {
    var estilo="masInformacion";
    if (lado == "der") estilo = "masInformacion masInformacion2";
    return "<p class=\"" + estilo +  "\" rel=\"info" + numeroInfos + "\">"+ informacion +"</p>";
}

function CreaImgInformacion() {
    var imgInformacionNuevo = $(imgInformacion).clone(true);
    $(imgInformacionNuevo).attr("rel", "info" + numeroInfos);
    return imgInformacionNuevo;
  }


function RecuperaAeropuerto(iataCode) {

    var numeroAeropuertos =RespuestaListadoVuelos.ListaAeropuertos.length; 
    for (var contador = 0; contador<numeroAeropuertos ; contador++) {
        var aeropuerto = RespuestaListadoVuelos.ListaAeropuertos[contador];
        if (aeropuerto.iataCode == iataCode) return aeropuerto;    
    }
}

function RecuperaOperador(iataCode) {

    var numeroOperadores = RespuestaListadoVuelos.ListaOperadores.length;
    for (var contador = 0; contador < numeroOperadores; contador++) {
        var operador = RespuestaListadoVuelos.ListaOperadores[contador];
        if (operador.Key == iataCode) return operador;
    }
}

function BindPrecioPropuesta(precioEntero, precioDecimal) {
   
    temPrecioVuelo = $(PlantillaHtmlPrecioVuelo).clone(true);
    $(temPrecioVuelo).find("span.total").append(precioEntero + ",");
    $(temPrecioVuelo).find("span.decimal").append(precioDecimal);
    $(temPrecioVuelo).find("a[title='Reservar']").attr("href", MontaEnlaceBtnReserva());

}



function BindResumenPropuesta(propuesta) {
    tempResumenVuelo = $(PlantillaHtmlResumen).clone(true);
    var resumen = "(Precio medio del billete: " + retornaPrecioMedio(propuesta.PrecioGDS) + " &euro; + Tasas: " + retornaPrecioMedio(propuesta.PrecioTasas) + " &euro;) x " + textoPasajeros;
    $(tempResumenVuelo).find(".precio").append(resumen);
}

function retornaPrecioMedio(precio) {

    var precioMedio = new Number(PrecioToNeutralFormat(precio));
    return PrecioNeutralToSpanishFormat((precioMedio / RespuestaListadoVuelos.NumeroPasajeros).toFixed(2));
    
}

function BindCabeceraTablaVuelo() {
    nodoVuelo = $(PlantillaHtmlTablaVuelo).clone(true);    
    if (sentido == "Ida") 
    {
        $(nodoVuelo).find(".cel1").append(imgAvionIda);
        $(nodoVuelo).find(".cel2").append(imgIda);
    }
    else 
    {
        $(nodoVuelo).find(".cel1").append(imgAvionVuelta);
        $(nodoVuelo).find(".cel2").append(imgVuelta);
    }
}

function BindSinEscalas() {
    $(idBtnEscalas).bind("click",ActivarSinEscalas);
}

function ActivarSinEscalas() {

    var imgchkEscalas = $(this);
    if (imgchkEscalas.attr("rel") == "0") {
        this.src = imgRdbSeleccionado.src;
        imgchkEscalas.attr("rel","1");
    }
    else {
        this.src = imgRdbDesseleccionado.src;
        imgchkEscalas.attr("rel","0");
    }
    sinEscalas = !sinEscalas;
    StartFiltrado(true);
}

function IniciarContadores() {
    numeroGruposRdb = 0;
    numeroInfos = 0;
    numeroVuelos = 0;
}



function BindChkButton(n) {

    $(nodoVuelo).find(".pointer").each(ActivateChk);    
}

function ActivateChk(n) {

    if (n == 0) {
        this.src = imgRdbSeleccionado.src;        
    }
    else
        this.src = imgRdbDesseleccionado.src;
    $(this).attr("rel", "grupo" + numeroGruposRdb.toString());
    $(this).bind("click",ClickRdbEvent);
}

function BindTipoPropuesta(vuelo) {
   // tipoPropuesta = vuelo.TipoPropuesta;
    if (sentido == "Ida") 
        $(inputVueloIdaSeleccionado).attr("rel",vuelo.id);  
    else
        $(inputVueloVueltaSeleccionado).attr("rel",vuelo.id);
}


/* Fin HTML */


/* Inicio Filtro */

function NuevoFiltro() {

   
    paginaActual = 1;
    numeroPropuestaTotales = 0;
    FiltraOperadoresYHorarios();   
    if (numeroPropuestaTotales == 0) {
        MostrarCapaFiltrosinResultados(true);
        return;
    }
   
}


function FiltraOperadoresYHorarios() {
    for (var contador = 0; contador < RespuestaListadoVuelos.ListaPropuestaIdaVuelta.length; contador++) {
        FiltraPropuesta(contador);
    }    
      
}


var operadorCorrecto;
function FiltraPropuesta(contador) {

        var propuesta = RespuestaListadoVuelos.ListaPropuestaIdaVuelta[contador];
        operadorCorrecto = false;
        propuesta.visible = false;

        //FiltraOperadores
        var iataIda = propuesta.IataOperadorIda;
        var iataVuelta = propuesta.IataOperadorVuelta;
        operadorCorrecto = EstaOperadorActivo(iataIda)
        if (iataVuelta != null) operadorCorrecto = operadorCorrecto && EstaOperadorActivo(iataVuelta);

        //FiltraHOrarios
        if (operadorCorrecto == true) {
            operadorCorrecto = false;
            
            
            $(propuesta.ListaVuelosIda).each(ProcesarHorariosEscalasIda);           
            if (operadorCorrecto == true && propuesta.ListaVuelosVuelta != null && propuesta.ListaVuelosVuelta.length > 0) {
                operadorCorrecto = false;
                $(propuesta.ListaVuelosVuelta).each(ProcesarHorariosEscalasVuelta);             
            }
        }
        if (operadorCorrecto == true) {
            numeroPropuestaTotales++;
            propuesta.visible = true;
        }
}


function ProcesarHorariosEscalasIda(n) {

    if (sinEscalas==true && this.escalas >= numeroEscalasMinimo) {
        this.Activo = false;
        return;
    }
    vuelo = this;
   ProcesarHorarios(horaIdaMinimo, horaIdaMaximo);
}

function ProcesarHorariosEscalasVuelta(n) {
    if (sinEscalas == true && this.escalas >= numeroEscalasMinimo) {
        this.Activo = false;
        return;
    }
    vuelo = this;
    ProcesarHorarios( horaVueltaMinimo, horaVueltaMaximo);
}

var vuelo;
function ProcesarHorarios(horaMinimo, horaMaximo) {
    var horaSalida = parseInt(vuelo.horaSalida.split(":")[0]);
    var minutoSalida = parseInt(vuelo.horaSalida.split(":")[1]);
    var correccion = minutoSalida > 0 ? 1 : 0;
    if (horaSalida >= horaMinimo && (horaSalida + correccion) <= horaMaximo) {
        operadorCorrecto = true;
        vuelo.Activo = true;
    }
    else
        vuelo.Activo = false;
}



function EstaOperadorActivo(keyOperador) {
    var numOperadores=RespuestaListadoVuelos.ListaOperadores.length;
    for (var contador = 0; contador < numOperadores; contador++)
    {
        var operador= RespuestaListadoVuelos.ListaOperadores[contador];
        if (operador.Key == keyOperador && operador.Activo == true) return true;
    }
    return false;
}

function StartFiltrado(value) {
    PeticionFiltrado = value;
    window.scrollTo(0, 0);
    MostrarCapaFiltrosinResultados(false);
    $(idHtmlContenedoraListado).fadeOut("medium", ContinuaFiltrado);
}

function ContinuaFiltrado() {
    $(capaEsperaClass).fadeIn("medium", FinFiltrado);
}

function FinFiltrado() {
    if (PeticionFiltrado) NuevoFiltro();
    if (numeroPropuestaTotales > 0) {
        MostrarListado(false);
        $(capaEsperaClass).fadeOut("medium", function() { $(idHtmlContenedoraListado).fadeIn("medium"); });
    }
}


/* Fin Filtro */

/* Inicio Paginacion*/

function CambioPagina() {

    paginaSolicitada = $(this).attr("rel");
    if (paginaActual == paginaSolicitada)
        return;
    paginaActual = paginaSolicitada;
    StartFiltrado(false);
}

function DevuelveRegInferior() {
    return (paginaActual - 1) * regXPagina;
}

function DevuelveRegSuperior() {
    var regSuperior = (paginaActual - 1) * regXPagina + (regXPagina - 1);
    if (regSuperior > numeroPropuestaTotales) regSuperior = numeroPropuestaTotales - 1;
    return regSuperior;
}

function RecuperaPaginasTotales() {
    var totales = Math.floor(numeroPropuestaTotales / regXPagina);
    if ((numeroPropuestaTotales % regXPagina) > 0) totales += 1;
    return totales;
}

/* Fin Paginacion*/

/* Eventos */

function ActivateChkOperador(n) {    
    $(this).bind("click",ClickRdbOperadorEvent);
}

function ActivateChkOperadorEsclusivo(n) {
    $(this).bind("click", ClickRdbOperadorEventExclusivo);
}

function ClickRdbOperadorEvent() {
    var iataCodeOperador = $(this).attr("rel");
    var operador = RecuperaOperador(iataCodeOperador);   
    if (operador.Activo) 
        this.src = urlServidor + "/images/radio_bot.gif";   
    else
        this.src = urlServidor + "/images/radio_bot_selec.gif";
    operador.Activo = !operador.Activo;
    StartFiltrado(true);
}


function ClickRdbOperadorEventExclusivo() {
    var numOperadores = RespuestaListadoVuelos.ListaOperadores.length;
    iataOperadorSeleccionado = this.rel;
    
    if (iataOperadorSeleccionado == "todas") {
        $(idTablaOperadores).find("img.chkOperador").each(function() { this.src = urlServidor + "/images/radio_bot_selec.gif"; });
        $(RespuestaListadoVuelos.ListaOperadores).each(function() { this.Activo = true; });
        StartFiltrado(true);
        return;
    }
    
    $(idTablaOperadores).find("img.chkOperador").each(function(){this.src= urlServidor + "/images/radio_bot.gif";});
    $(idTablaOperadores).find("img.chkOperador[rel='" + iataOperadorSeleccionado + "']").each(function(){this.src = urlServidor + "/images/radio_bot_selec.gif"});
    for(var contador=0; contador<numOperadores;contador++)
    {
        if (RespuestaListadoVuelos.ListaOperadores[contador].Key != iataOperadorSeleccionado) 
            RespuestaListadoVuelos.ListaOperadores[contador].Activo = false;
        else
            RespuestaListadoVuelos.ListaOperadores[contador].Activo = true;
    }
    StartFiltrado(true);
}

function HovePagina() {

    if ($(this).text() == paginaActual) return;
    $(this).attr("class", "resaltado");
}

function MouseOutPaqina() {
    if ($(this).text() == paginaActual)
        $(this).attr("class", "actual");
    else
        $(this).attr("class", "");
}



function ClickRdbEvent() {

    if ($(this).src == imgRdbSeleccionado.src) return;  
    
    
    
    var grupo = $(this).attr("rel");
    $("img.pointer[rel='" + grupo + "']").attr("src", imgRdbDesseleccionado.src);
    this.src = imgRdbSeleccionado.src;
    
    filaVuelo = $(this).parent().parent()
    var guidVueloSolicitado = $(filaVuelo).attr("rel");
    
    tablaVuelo = $(filaVuelo).parent().parent()
    sentido = $(tablaVuelo).attr("rel");
    

    tablaPropuesta = $(tablaVuelo).parent();
    tipoPropuesta = $(tablaPropuesta).parent().find("input.tipoPropuesta").val();



    var capaCentral = $(tablaPropuesta).parent();
    inputVueloIdaSeleccionado = $(capaCentral).find(ClassInputHiddenIda);
    inputVueloVueltaSeleccionado = $(capaCentral).find(ClassInputHiddenVuelta);
    if (sentido == "Ida")
        inputVueloIdaSeleccionado.attr("rel", guidVueloSolicitado);
    else
        inputVueloVueltaSeleccionado.attr("rel", guidVueloSolicitado);

    $(capaCentral).find(idHtmlPrecioVuelo).find("a[title='Reservar']").attr("href", MontaEnlaceBtnReserva());
    
   
   
} 

function ActivarCapaEspera(value) {

    if (value==true) {
        $(classListadoVuelos).hide("medium", function() { $(capaEsperaClass).show(); });
              
    }
    else {

        $(capaEsperaClass).hide("medium", function() { $(classListadoVuelos).show(); });
         
    }
}

/* Fin Eventos */

/* Inicio Sliders */



function SliderIdaMoved(sender, eventArgs) {
    horaIdaMinimo = sender.get_selectionStart();
    horaIdaMaximo = sender.get_selectionEnd();
    $(idFiltroVuelos).find("p.horaIda span.valor").text(CreaTextoHora(horaIdaMinimo, horaIdaMaximo));
    StartFiltrado(true);
}


function SliderVueltaMoved(sender, eventArgs) {
    horaVueltaMinimo = sender.get_selectionStart();
    horaVueltaMaximo = sender.get_selectionEnd();
    $(idFiltroVuelos).find("p.horaVuelta span.valor").text(CreaTextoHora(horaVueltaMinimo, horaVueltaMaximo));
    StartFiltrado(true);
}


function SliderVueltaCambiando(sender, eventArgs) {
    var valorAntiguo = eventArgs.get_oldValue();  
    if (valorAntiguo == horaVueltaMinimo)
        horaVueltaMinimo = sender.get_selectionStart();   
    else
        horaVueltaMaximo = sender.get_selectionEnd();
    $(idFiltroVuelos).find("p.horaVuelta span.valor").text(CreaTextoHora(horaVueltaMinimo, horaVueltaMaximo));
}


function SliderIdaCambiando(sender, eventArgs) {
    var valorAntiguo = eventArgs.get_oldValue();

    if (valorAntiguo == horaVueltaMinimo)
        horaVueltaMinimo = sender.get_selectionStart();
    else
        horaVueltaMaximo = sender.get_selectionEnd();
    $(idFiltroVuelos).find("p.horaIda span.valor").text(CreaTextoHora(horaVueltaMinimo, horaVueltaMaximo));
}




function CreaTextoHora(horaMinima, horaMaxima) {

    return "De " + CompletaHora(horaMinima) + " a " + CompletaHora(horaMaxima);
}

function CompletaHora(_hora) {
    var hora = _hora.toString();
    if (hora.length == 1) hora = "0" + hora;
    return hora + "h.";
    
}


/* Fin Sliders */

/* Inicio Auxiliares */


function MostrarCapaSinResultados(value) {
    MostrarCapaMensajeria(value,"mensajeriaBusqueda");
}

function MostrarCapaFiltrosinResultados(value) {
    MostrarCapaMensajeria(value,"mensajeriaFiltro");
}

function MostrarCapaMensajeria(value,capa) {

    $(idCapaListadoVuelos).empty();
    $(capaPaginadorVuelos).empty();
    if (value == true)
        $(capaEsperaClass).fadeOut("medium", function() { $(".mensajeria." + capa).fadeIn("medium"); });
    else
        $(".mensajeria." + capa).hide();

}

function SumaPrecios(precioParcial, precioVuelta) {
    var precio = new Number(PrecioToNeutralFormat(precioParcial) + PrecioToNeutralFormat(precioVuelta));
    return PrecioNeutralToSpanishFormat(precio.toFixed(2));
}


function PrecioToNeutralFormat(precio) {

    return parseFloat(precio.toString().replace(",", "."));
}

function PrecioNeutralToSpanishFormat(precio) {

    return precio.toString().replace(".", ",");
}

function MontaEnlaceBtnReserva() {

    var url =urlReserva + "/Reservas/ReservaVuelos.aspx?id=" + RespuestaListadoVuelos.IdSolicitud + "&tp=" + tipoPropuesta + "&ji=" + $(inputVueloIdaSeleccionado).attr("rel");
    journeyVuelta = $(inputVueloVueltaSeleccionado).attr("rel");
    if (journeyVuelta && journeyVuelta.length > 0) url += "&jv=" + journeyVuelta;
    return url;

}

function PrecargarImagenes() {
    imgBlank.src =urlServidor + "/images/blank1x1.gif";
    imgEscalas.src = urlServidor + "/images/ico_escalas.gif";
    imgEscalas.alt = "Vuelo con Escalas";
    imgEscalas.title = "Vuelo con Escalas";
    imgAvionIda.src = urlServidor + "/images/Avion_ida.gif";
    imgAvionIda.alt = "Ida";
    imgAvionVuelta.src = urlServidor + "/images/Avion_vuelta.gif";
    imgAvionVuelta.alt = "Vuelta";
    imgIda.src = urlServidor + "/images/ida.png";
    imgVuelta.src = urlServidor + "/images/vuelta.png";
    imgRdbSeleccionado.src = urlServidor + "/images/radio_bot_selec.gif";
    imgRdbDesseleccionado.src = urlServidor + "/images/radio_bot.gif";
    imgInformacion.src="/images/ico_informacion.gif";
    imgInformacion.alt = "Información general";
    $(imgInformacion).attr("class", "masInfo");
    imgFlecha.src = urlServidor + "/images/bullet_masInfor.gif";
    imgFlecha.alt = " > ";
}



/* Fin Auxiliares */

    
