﻿/// <reference path="../jquery-1.3.2-vsdoc2.js" />

//Métodos de acesso ao WebService ***********************************************
function GetDayPeriodFilter() {

    DayPeriodFilterIsActive = true;

    var resultsTmp = AllFlights;
    if (resultsTmp.length == 0) {
        DayPeriodFilterIsActive = false;
        LoadingDataHide();
        return;
    }

    var minHoraGo = jLinq.from(resultsTmp)
                    .orderBy("DepartureTime")
                    .select(function(f) { return f.DepartureTime; })[0];

    var maxHoraGo = jLinq.from(resultsTmp)
                   .orderBy("-DepartureTime")
                   .select(function(f) { return f.DepartureTime; })[0];

    var minHoraBk = jLinq.from(resultsTmp)
                    .orderBy("DepartureTimeBack")
                    .select(function(f) { return f.DepartureTimeBack; })[0];

    var maxHoraBk = jLinq.from(resultsTmp)
                    .orderBy("-DepartureTimeBack")
                    .select(function(f) { return f.DepartureTimeBack; })[0];


    if (minHoraGo != null && minHoraGo.split(':').length == 2) {
        createTimeSlider("Ida", minHoraGo, maxHoraGo);
    }
    $('#backTimeFilter').hide();
    if (minHoraBk != null && minHoraBk.split(':').length == 2) {
        $('#backTimeFilter').show();
        createTimeSlider("Volta", minHoraBk, maxHoraBk);
    }

    DayPeriodFilterIsActive = false;
    LoadingDataHide();
}


function createTimeSlider(dir, min, max) {


    var strHtml =
        '<div class="barra-preco2"  id="divFilterHora' + dir + '">\n' +
           '<span class="item-de" id="divFilterHora' + dir + 'Min" ></span>\n' +
           '<span class="item-ate" id="divFilterHora' + dir + 'Max" ></span>\n' +
           '<div class="slider-range" id="sliderHora' + dir + '">\n' +
           '</div>\n' +
         '</div>\n';

    $("#divDayPeriod" + dir).html(strHtml);

    $(document).ready(function() {
        var horaMin = Number(min.split(':')[0]) * 60 + Number(min.split(':')[1]) - 1;
        var horaMax = Number(max.split(':')[0]) * 60 + Number(max.split(':')[1]) + 1;


        $("#sliderHora" + dir).slider({
            range: true,
            min: horaMin,
            max: horaMax,
            values: [horaMin, horaMax],
            slide: function(event, ui) {
                $("#divFilterHora" + dir + "Min").html(formatHourMinute($("#sliderHora" + dir).slider("values", 0), 1));
                $("#divFilterHora" + dir + "Max").html(formatHourMinute($("#sliderHora" + dir).slider("values", 1), -1));
            },
            stop: function(event, ui) {
                LoadingDataShow();
                if (dir == 'Ida') {
                    DepartureGoTimeMin = formatHourMinute($("#sliderHora" + dir).slider("values", 0), 0);
                    DepartureGoTimeMax = formatHourMinute($("#sliderHora" + dir).slider("values", 1), 0);
                }
                else {
                    DepartureBkTimeMin = formatHourMinute($("#sliderHora" + dir).slider("values", 0), 0);
                    DepartureBkTimeMax = formatHourMinute($("#sliderHora" + dir).slider("values", 1), 0);
                }

                FilterData(0, false);
            }
        });
        $("#divFilterHora" + dir + "Min").html(formatHourMinute($("#sliderHora" + dir).slider("values", 0), 1));
        $("#divFilterHora" + dir + "Max").html(formatHourMinute($("#sliderHora" + dir).slider("values", 1), -1));
        LoadingDataShow();
    });
}

function formatHourMinute(hora, difer) {
    if (hora != null && typeof (hora) != 'undefined') {
        hora += difer;
        return format2Dig(Math.floor(Number(hora / 60))) + ':' + format2Dig(Math.floor(Number(hora % 60)));
    }
}

function format2Dig(num) {
    if (num <= 9)
        return '0' + num;
    return '' + num;
}

function GetAmountPriceFilter() {

    AmountPriceFilterIsActive = true;

    var resultsTmp = AllFlights;

    if (resultsTmp.length > 0) {

        //resultsTmp = jLinq.from(resultsTmp).distinct("AmountPrice");
        var AmountPriceMin = resultsTmp[0].AmountPrice //jLinq.from(resultsTmp).min("AmountPrice");
        var AmountPriceMax = resultsTmp[resultsTmp.length - 1].AmountPrice //jLinq.from(resultsTmp).max("AmountPrice");
        Currency = jLinq.from(resultsTmp).select()[0].CurrencyCode;

        var strTitle = "<h3>" + configFlightClient.jsFlightFilterPrice + "</h3>";

        if (AmountPriceMin != null) {

            var strHtml =
                   '<div class="barra-preco3">\n' +
                   '<span class="item-de"  id="divFilter3AmountMin"></span>\n' +
                   '<span class="item-ate" id="divFilter3AmountMax"></span>\n' +
                   '<div class="slider-range" id="slider">\n' +
                  '</div>\n' +
                  '</div>\n';
        }

        if (strHtml != "") {
            $("#divAmountPrice").html(strTitle + strHtml);

            $(document).ready(function() {
                var AmountPriceFilterMin = Math.round(Number(AmountPriceMin.toString().replace(",", ".")));
                var AmountPriceFilterMax = Math.round(Number(AmountPriceMax.toString().replace(",", ".")));

                AmountPriceFilterMin--;
                AmountPriceFilterMax++;

                $("#slider").slider({
                    range: true,
                    min: AmountPriceFilterMin,
                    max: AmountPriceFilterMax,
                    values: [AmountPriceFilterMin, AmountPriceFilterMax],
                    slide: function(event, ui) {
                        $("#divFilter3AmountMin").html(Currency + " " + Number($("#slider").slider("values", 0) + 1).localeFormat("N"));
                        $("#divFilter3AmountMax").html(Currency + " " + Number($("#slider").slider("values", 1) - 1).localeFormat("N") + ',00');
                    },
                    stop: function(event, ui) {
                        LoadingDataShow();
                        amountPriceMin = $("#slider").slider("values", 0);
                        amountPriceMax = $("#slider").slider("values", 1);
                        FilterData(0, false);
                    }
                });
                $("#divFilter3AmountMin").html(Currency + " " + Number($("#slider").slider("values", 0) + 1).localeFormat("N"));
                $("#divFilter3AmountMax").html(Currency + " " + Number($("#slider").slider("values", 1) - 1).localeFormat("N"));
                LoadingDataShow();
            });
        }

        AmountPriceFilterIsActive = false;
        LoadingDataHide();
    }
}

function GetAmountPriceStopFilter() {

    AmountPriceStopFilterIsActive = true;

    var resultsTmp = AllFlights;

    if (resultsTmp.length > 0) {
        Currency = jLinq.from(resultsTmp).select()[0].CurrencyCode;

        var amountPriceAll = [];
        var amountPrice0Stop = [];
        var amountPrice1Stop = [];
        var amountPrice2Stop = [];
        for (i = 0; i < resultsTmp.length; i++) {

            if (!findAmountPriceStop(amountPriceAll, resultsTmp[i]))
                amountPriceAll.push(resultsTmp[i]);
        }

        var AirlineAmountPrice = [];
        for (var i = 0; i < amountPriceAll.length; i++) {
            if (amountPriceAll[i].Stops == 0)
                amountPrice0Stop.push({ AmountPriceMin: amountPriceAll[i].AmountPrice
                });
            if (amountPriceAll[i].Stops == 1)
                amountPrice1Stop.push({ AmountPriceMin: amountPriceAll[i].AmountPrice
                });
            if (amountPriceAll[i].Stops > 1)
                amountPrice2Stop.push({ AmountPriceMin: amountPriceAll[i].AmountPrice
                });
        }
        //        var amountPriceAll = jLinq.from(resultsTmp)
        //            .groupBy("Stops")
        //            .select(function(r) {
        //                return {
        //                    Stops: r.key,
        //                    AmountPriceMin: jLinq.from(r.items).min("AmountPrice")
        //                };
        //            });

        //        var amountPrice0Stop = jLinq.from(amountPriceAll)
        //                .where(function(rec, helper) {
        //                    return (rec.Stops == 0);
        //                })
        //                .select("AmountPrice");
        //        var amountPrice1Stop = jLinq.from(amountPriceAll)
        //                .where(function(rec, helper) {
        //                    return (rec.Stops == 1);
        //                })
        //                .select("AmountPrice");

        //        var amountPrice2Stop = jLinq.from(amountPriceAll)
        //                .where(function(rec, helper) {
        //                    return (rec.Stops > 1);
        //                })
        //                .select("AmountPrice");


        var strTitle = "<h3>" + "Escalas" + "</h3>";
        var strHtml = "";

        if (amountPrice0Stop[0] != null) {
            strHtml += "<label>" +
                    "<input id='CheckBox0' " +
                        "type='checkbox' checked='checked' name='CheckBox0' " +
                         "onclick='javascript:LoadingDataShow();" +
									"amountpricestopfilterchecked.stop0=this.checked;" +
									"FilterData(0,false);' " +
                        " />" +
                    "<strong>" + configFlightClient.lblFlightResultClientDirectFlight + "</strong> " +
                    "<span>" + Currency + " " + amountPrice0Stop[0].AmountPriceMin.localeFormat("N") + " </span> " +
                "</label>";
        }
        if (amountPrice1Stop[0] != null) {
            strHtml += "<label>" +
                    "<input id='CheckBox1' " +
                        "type='checkbox' checked='checked' name='CheckBox1' " +
                         "onclick='javascript:LoadingDataShow();" +
									"amountpricestopfilterchecked.stop1=this.checked;" +
									"FilterData(0,false);' " +
                        " />" +
                    "<strong>" + configFlightClient.jsFlighFilterOneOrMoreStops + "</strong> " +
                    "<span>" + Currency + " " + amountPrice1Stop[0].AmountPriceMin.localeFormat("N") + " </span> " +
                "</label>";
        }

        if (amountPrice2Stop[0] != null) {
            strHtml += "<label>" +
                    "<input id='CheckBox2' " +
                        "type='checkbox' checked='checked' name='CheckBox2' " +
                         "onclick='javascript:LoadingDataShow();" +
									"amountpricestopfilterchecked.stop2=this.checked;" +
									"FilterData(0,false);' " +
                        " />" +
                    "<strong>" + configFlightClient.jsFlightFilter2OrMoreStops + "</strong> " +
                    "<span>" + Currency + " " + amountPrice2Stop[0].AmountPriceMin.localeFormat("N") + " </span> " +
                "</label>";
        }

        if (strHtml != "") {
            $("#divAmountPriceStop").html(strTitle + strHtml);
            LoadingDataShow();
        }
        AmountPriceStopFilterIsActive = false;
        LoadingDataHide();
    }
}

function findAmountPriceStop(matrix, matrixDados) {
    for (var i = 0; i < matrix.length; i++) {
        if (matrix[i].Stops == matrixDados.Stops) {
            return true;
        }
    }
    return false;
}

function GetCompanyFilter() {

    CompanyFilterIsActive = true;

    var resultsTmp = AllFlights;
    if (resultsTmp.length > 0) {
        Currency = jLinq.from(resultsTmp).select()[0].CurrencyCode;

        //        var AirlineAmountPrice = jLinq.from(resultsTmp)
        //        .groupBy("MainAirlineName")
        //        .select(function(r) {
        //            return {
        //                MainAirlineName: r.key,
        //                AmountPriceMin: jLinq.from(r.items).min("AmountPrice"),
        //                UrlLogo: r.items[0].UrlLogo,
        //                MainAirlineCode: r.items[0].MainAirlineCode
        //            };
        //        });

        var AirlineList = [];
        for (i = 0; i < resultsTmp.length; i++) {

            if (!findCompany(AirlineList, resultsTmp[i]))
                AirlineList.push(resultsTmp[i]);
        }

        var AirlineAmountPrice = [];
        for (var i = 0; i < AirlineList.length; i++) {
            AirlineAmountPrice.push({ MainAirlineName: AirlineList[i].MainAirlineName,
                AmountPriceMin: AirlineList[i].AmountPrice,
                UrlLogo: AirlineList[i].UrlLogo,
                MainAirlineCode: AirlineList[i].MainAirlineCode
            });
        }

        //var strTitle = "<h3>" + "Cias. Aéreas" + "</h3>";
        var strTitle = '<h3>' + configFlightClient.jsFlightFilterAirlines + '</h3>\n<ul class="filtro-cia-aerea-lista">\n';
        var strHtml = "";

        companyFilterChecked = new Array();

        //        $(AirlineAmountPrice).each(function(index) {

        //            var AmountPrice = FormatarDecimal(AirlineAmountPrice[index].AmountPriceMin);
        //            strHtml += "<div>" +
        //                                "<input id='CheckBoxAirline" + index + "' " +
        //                                    "type='checkbox' checked='checked' name='CheckBoxAirline" + index + "' " +
        //                                    "onclick='javascript:LoadingDataShow();" +
        //												"CompanyFilter(\"" + AirlineAmountPrice[index].MainAirlineCode + "\",this.checked);" +
        //												"FilterData(0,false);' " +
        //                                    "/>" +
        //                                "<img style='vertical-align:top' title='" + AirlineAmountPrice[index].MainAirlineName + "' alt='" + AirlineAmountPrice[index].MainAirlineName + "' align='middle' src='" + AirlineAmountPrice[index].UrlLogo + "' />" +
        //                                "<span>" + Currency + " " + AmountPrice + "</span>" +
        //                            "</div>";
        //            companyFilterChecked.push(new Company(AirlineAmountPrice[index].MainAirlineName, true, AirlineAmountPrice[index].MainAirlineCode));

        //        });

        $(AirlineAmountPrice).each(function(index) {

            var AmountPrice = AirlineAmountPrice[index].AmountPriceMin.localeFormat("N");
            var siglaCompany = AirlineAmountPrice[index].MainAirlineName;

            var pos = -1;
            if (siglaCompany.split("&nbsp;")[0] == "Air") {
                siglaCompany = AirlineAmountPrice[index].MainAirlineName;
            } else if ((pos = siglaCompany.indexOf('&nbsp;')) > 0) {
                siglaCompany = siglaCompany.substring(0, pos);
            }
            strHtml += "<li>\n";
            strHtml += "<span class=\"filtro-cia-aerea-check\">\n" +
                                    "<input id='CheckBoxAirline" + index + "' " +
                                    "type='checkbox' checked='checked' name='CheckBoxAirline" + index + "' " +
                                    "onclick='javascript:LoadingDataShow();" +
												"CompanyFilter(\"" + AirlineAmountPrice[index].MainAirlineCode + "\",this.checked);" +
												"FilterData(0,false);' " +
                                    "/>\n" +
                                "</span>\n" +
                                "<span class=\"filtro-cia-aerea-cia\">\n" +
                                "<img style='vertical-align:top' title='" + AirlineAmountPrice[index].MainAirlineName + "' alt='" + AirlineAmountPrice[index].MainAirlineName + "' align='middle' src='" + AirlineAmountPrice[index].UrlLogo + "' />\n" +
                                "<span style=\"color:Gray\">" + siglaCompany + "</span></span>\n" +
                                "<span class=\"filtro-cia-aerea-preco\">" + Currency + " " + AmountPrice + "</span>\n" +

                           "</li>\n";

            companyFilterChecked.push(new Company(AirlineAmountPrice[index].MainAirlineName, true, AirlineAmountPrice[index].MainAirlineCode));

        });

        if (strHtml != "") {
            $("#divCompanie").html(strTitle + strHtml);
            LoadingDataShow();
        }
        CompanyFilterIsActive = false;
        LoadingDataHide();
    }
}

function findCompany(matrix, matrixDados) {
    for (var i = 0; i < matrix.length; i++) {
        if (matrix[i].MainAirlineName == matrixDados.MainAirlineName) {
            return true;
        }
    }
    return false;
}

function GetAirportFilter() {

    AirportFilterIsActive = true;
    var GoBackIndex = -1;
    airportFilterChecked = new Array();
    var aerosIda = [];
    var aerosVolta = [];
    var resultsTmp = AllFlights;
    if (resultsTmp.length > 0) {
        Currency = jLinq.from(resultsTmp).select()[0].CurrencyCode;

        for (i = 0; i < resultsTmp.length; i++) {

            if (!findAirport(aerosIda, resultsTmp[i], 0))
                aerosIda.push(resultsTmp[i]);

            if (!findAirport(aerosVolta, resultsTmp[i], 1))
                aerosVolta.push(resultsTmp[i]);
        }
        //        var aerosIda = jLinq.from(resultsTmp)
        //                       .distinct('DepartureAirport');
        //        var aerosVolta = jLinq.from(resultsTmp)
        //                       .distinct('DepartureAirportBack');

        //        var airportDepartureFilter = jLinq.from(resultsTmp)
        //            .groupBy("DepartureAirport")
        //            .select(function(r) {
        //                return {
        //                    AirportName: jLinq.from(r.items).min("DepartureAirportName"),
        //                    Airport: r.key,
        //                    AmountPrice: jLinq.from(r.items).min("AmountPrice"),
        //                    GoBackIndex: 0
        //                };
        //            });

        //        var airportArrivalFilter = jLinq.from(resultsTmp)
        //            .groupBy("ArrivalAirport")
        //            .select(function(r) {
        //                return {
        //                    AirportName: jLinq.from(r.items).min("ArrivalAirportName"), //r.key, //jLinq.from(r.items)[0].ArrivalAirportName,
        //                    Airport: r.key,
        //                    AmountPrice: jLinq.from(r.items).min("AmountPrice"),
        //                    GoBackIndex: 1
        //                };
        //            });

        //        AirportList = jLinq.from(airportDepartureFilter).union(airportArrivalFilter).orderBy("GoBackIndex", "AirportName").select();

        // Os grupos estão em ordem crescente por preço Combo, o primeiro para cada aeroporto é o de menor preço
        var AirportList = [];
        for (var i = 0; i < aerosIda.length; i++) {
            //            for (var j = 0; j < resultsTmp.length - 1; j++)
            //if (resultsTmp[j].DepartureAirport == aerosIda[i]) {
            AirportList.push({ AirportName: aerosIda[i].DepartureAirportName,
                Airport: aerosIda[i].DepartureAirport,
                AmountPrice: aerosIda[i].AmountPrice,
                GoBackIndex: 0
            });
            //break;
        }

        for (var i = 0; i < aerosVolta.length; i++) {
            //for (var j = 0; j < resultsTmp.length - 1; j++)
            // if (resultsTmp[j].DepartureAirportBack == aerosVolta[i]) {
            AirportList.push({ AirportName: aerosVolta[i].ArrivalAirportName,
                Airport: aerosVolta[i].ArrivalAirport,
                AmountPrice: aerosVolta[i].AmountPrice,
                GoBackIndex: 1
            });
            //break;
        }

        var strHtml = "";

        airportFilterChecked_0 = new Array();
        airportFilterChecked_1 = new Array();


        $(AirportList).each(function(index) {

            if (GoBackIndex != AirportList[index].GoBackIndex) {
                if (AirportList[index].GoBackIndex == 0) {
                    strHtml += "<h3>" + configFlightClient.jsFlightFilterDepartureAirport + "</h3>";

                }
                else {
                    $("#divAirportGo").html(strHtml);
                    strHtml = "";
                    strHtml += "<h3>" + configFlightClient.jsFlightFilterArrivalAirport + "</h3>";
                }
                GoBackIndex = AirportList[index].GoBackIndex;
            }
            strHtml += "<lab" + "el>" +
                                "<span class='check'><input id='CheckBoxAirport" + index + "' " +
                                    "type='checkbox' checked='checked' name='CheckBoxAirport" + index + "' " +
                                    " GoBackIndex='" + AirportList[index].GoBackIndex + "' " +
                                    "onclick='javascript:LoadingDataShow();" +
											 "AirportFilter_" + GoBackIndex + "(\"" + AirportList[index].Airport + "\",this.checked);" +
											 "FilterData(0,false);' " +
                                    "/></span>" +
								"<span class='precoAero'>" + Currency + " " + AirportList[index].AmountPrice.localeFormat("N") + "</span>" +
                                "<span class='iataAero'>" + AirportList[index].Airport + "</span>" +
                                "<span class='nomeAero'>" + AirportList[index].AirportName + "</span>" +
                            "</lab" + "el>";
            if (GoBackIndex == 0) {
                airportFilterChecked_0.push(new Airport(AirportList[index].Airport, true));
            }
            else {
                airportFilterChecked_1.push(new Airport(AirportList[index].Airport, true));
            }

        });

        if (strHtml != "") {
            $("#divAirportBack").html(strHtml);
            LoadingDataShow();
        }
        AirportFilterIsActive = false;
        LoadingDataHide();
    }
}

function findAirport(matrix, matrixDados, type) {
    for (var i = 0; i < matrix.length; i++) {
        if (type == 0) {
            if (matrix[i].DepartureAirport == matrixDados.DepartureAirport) {
                return true;
            }
        }
        else {
            if (matrix[i].ArrivalAirport == matrixDados.ArrivalAirport) {
                return true;
            }
        }
    }
    return false;
}

//Métodos para ordenação **************************************************
function SetOrder() {
    LoadingDataShow()
    Order = $("#ddlOrderType").val();
    /*Order = $("input[name='radOrder']:checked").val();*/
    OrderType = 'asc';
    FilterData(0, false);
}

//Métodos para setagem dos filtros **************************************************

function SetFilters() {

    var tempoPreco;
    var tempoCompany;
    var tempoAirport;
    var tempoStops;

    if (FlightsFiltered == null)
        FlightsFiltered = FlightFilter();

    var tempoHora = new Date();
    GetDayPeriodFilter();
    tempoPreco = new Date();
    tempoHora = (new Date() - tempoHora) / 1000;

    GetAmountPriceFilter();
    tempoStops = new Date();
    tempoPreco = (new Date() - tempoPreco) / 1000;

    GetAmountPriceStopFilter();
    tempoCompany = new Date();
    tempoStops = (new Date() - tempoStops) / 1000;

    GetCompanyFilter();
    tempoAirport = new Date();
    tempoCompany = (new Date() - tempoCompany) / 1000;

    GetAirportFilter();
    tempoAirport = (new Date() - tempoAirport) / 1000;

    //alert("Fintros\nGetDayPeriodFilter: " + tempoHora + "\nGetAmountPriceFilter: " + tempoPreco + "\nGetAmountPriceStopFilter: " + tempoStops + "\nGetCompanyFilter" + tempoCompany + "\nGetAirportFilter" + tempoAirport);

}



//Métodos para o "loading" dos dados **************************************************
var loadingFlightFirstFinish = true;
function LoadingDataShow() {
    $("#msgEmpty").hide();
    $("#msgFilterEmpty").hide();

    if ($('#loadingFlight').css('display') == "block" || $('#divLoading').css('display') == "block") {
        loadingFlightFirstFinish = false;
    }
    if (loadingFlightFirstFinish) {
        $('#loadingData').height(document.body.offsetHeight);
        $('#loadingData').width(document.body.offsetWidth);

        $('#loadingData').show();
        $('.CarregandoPequeno').show();

    }
}

function LoadingDataHide() {
    if (!FilterIsFinished() && !IsActive && IsFinished) {
        loadingFlightFirstFinish = true
        $('#loadingData').hide();
        $('.CarregandoPequeno').hide();

        ShowLoading();
    }
}

//Métodos de Filtragem **********************************************************************
function IsInSearchVerify() {
    var bool = false;
    if ((!dayperiodfilterchecked.morning) ||
            (!dayperiodfilterchecked.afternoon) ||
            (!dayperiodfilterchecked.evening) ||
            (!dayperiodfilterchecked.night)) {
        bool = true;
    }

    if ((!amountpricestopfilterchecked.stop0) ||
            (!amountpricestopfilterchecked.stop1) ||
            (!amountpricestopfilterchecked.stop2)) {
        bool = true;
    }

    $(companyFilterChecked).each(function(index) {
        if (!companyFilterChecked[index].value) {
            bool = true;
        }
    });

    $(airportFilterChecked_0).each(function(index) {
        if (!airportFilterChecked_0[index].value) {
            bool = true;
        }
    });

    $(airportFilterChecked_1).each(function(index) {
        if (!airportFilterChecked_1[index].value) {
            bool = true;
        }
    });

    if (AmountPriceFilterMin != amountPriceMin && amountPriceMin != null) {
        bool = true;
    }
    else {
        amountPriceMin = null;
    }

    if (AmountPriceFilterMax != amountPriceMax && amountPriceMax != null) {
        bool = true;
    }
    else {
        amountPriceMax = null;
    }

    return bool;
}

function FilterData(index, reloadFilter) {
	matrixCurrentPage = 1;
    GetAllFlightClient(index, true);
    GenerateMatrix();
}

function AirportFilter_0(airport, value) {
    $(airportFilterChecked_0).each(function(index) {
        if (airportFilterChecked_0[index].airport == airport) {
            airportFilterChecked_0[index].value = value;
        }
    });
}

function AirportFilter_1(airport, value) {
    $(airportFilterChecked_1).each(function(index) {
        if (airportFilterChecked_1[index].airport == airport) {
            airportFilterChecked_1[index].value = value;
        }
    });
}

function CompanyFilter(mainairlinename, value) {
    $(companyFilterChecked).each(function(index) {
        if (companyFilterChecked[index].code == mainairlinename) {
            companyFilterChecked[index].value = value;
        }
    });
}

function Company(company, value, code) {
    this.company = company;
    this.value = value;
    this.code = code;
}

function Airport(airport, value) {
    this.airport = airport;
    this.value = value;
}

function ClearFilter(regenerateFilter) {

    $("#ClearFilterMatrix").hide();
    amountPriceMin = amountPriceMax = null;

    //    dayperiodfilterchecked.morning = true;
    //    dayperiodfilterchecked.afternoon = true;
    //    dayperiodfilterchecked.evening = true;
    //    dayperiodfilterchecked.night = true;

    amountpricestopfilterchecked.stop0 = true;
    amountpricestopfilterchecked.stop1 = true;
    amountpricestopfilterchecked.stop2 = true;

    DepartureGoTimeMin = null;
    DepartureGoTimeMax = null;
    DepartureBkTimeMin = null;
    DepartureBkTimeMax = null;

    if (regenerateFilter) {
        SetFilters();
        FilterData(0, false);
    }
    else {
        $(companyFilterChecked).each(function(index) {
            companyFilterChecked[index].value = true;
        });

        $(airportFilterChecked_0).each(function(index) {
            airportFilterChecked_0[index].value = true;
        });

        $(airportFilterChecked_1).each(function(index) {
            airportFilterChecked_1[index].value = true;
        });

        //Regera slider, porque não tem como limpar o filtro já feito.
        GetAmountPriceFilter();
        GetDayPeriodFilter();
    }
    try {
        LoadingDataHide();
        $('#loadingData').height(0);
        $('.CarregandoPequeno').hide();
    }
    catch (ex) {
        $('#loadingData').hide();
        $('.CarregandoPequeno').hide();
    }

    return false;
}

function FilterMatrix(stops, airline, price) {
    //alert(airline);
    $("#ClearFilterMatrix").show();

    //Atualiza cias aéreas
    if (airline != '') {
        $(companyFilterChecked).each(function(index) {
            $("#CheckBoxAirline" + index).attr('checked', false);
            if (companyFilterChecked[index].code == airline) {
                companyFilterChecked[index].value = true;
                $("#CheckBoxAirline" + index).attr('checked', 'checked')
            }
            else
                companyFilterChecked[index].value = false;
        });
    }
    else {
        var resultsTmp = FlightsFiltered;
        var tmp;
        if (stops == 0)
            tmp = jLinq.from(resultsTmp)
            .where(function(rec, helper) {
                return (Math.round(Number(rec.AmountPrice.toString().replace(",", "."))) == price);
            }).andLess('Stops', 1).select("MainAirlineCode");
        else
            tmp = jLinq.from(resultsTmp)
            .where(function(rec, helper) {
                return (Math.round(Number(rec.AmountPrice.toString().replace(",", "."))) == price);
            }).andEquals('Stops', stops).select("MainAirlineCode");

        $(companyFilterChecked).each(function(index) {
            $("#CheckBoxAirline" + index).attr('checked', false);
            if (jLinq.from(tmp).equals("MainAirlineCode", companyFilterChecked[index].code).select()[0] != null) {
                companyFilterChecked[index].value = true;
                $("#CheckBoxAirline" + index).attr('checked', 'checked')
            }
            else
                companyFilterChecked[index].value = false;
        });

    }

    amountpricestopfilterchecked.stop0 = false;
    amountpricestopfilterchecked.stop1 = false;
    amountpricestopfilterchecked.stop2 = false;

    //Atualiza paradas
    $("#CheckBox0").attr('checked', false)
    $("#CheckBox1").attr('checked', false)
    $("#CheckBox2").attr('checked', false)
    if (stops == 0) {
        amountpricestopfilterchecked.stop0 = true;
        $("#CheckBox0").attr('checked', 'checked')
    }
    else if (stops == 1) {
        amountpricestopfilterchecked.stop1 = true;
        $("#CheckBox1").attr('checked', 'checked')
    }
    else {
        amountpricestopfilterchecked.stop2 = true;
        $("#CheckBox2").attr('checked', 'checked')
    }

    //Atualiza slider
    $('#slider').slider('values', 0, price);
    $('#slider').slider('values', 1, price + 1);
    $("#divFilterAmountMin").html(Currency + " " + price + ',00');
    $("#divFilterAmountMax").html(Currency + " " + price + ',00');
    amountPriceMin = price;
    amountPriceMax = price;

    FilterData(0, false);
}

//**********************Ricardo Brundo - 27-09-2010************************
function FilterAirport(airport, type) {
    if (type == 0) {
        $(airportFilterChecked_0).each(function(index) {
            if (airportFilterChecked_0[index].airport != airport) {
                airportFilterChecked_0[index].value = false;
                $("#CheckBoxAirport" + index).attr('checked', false);
            }
            else {
                airportFilterChecked_0[index].value = true;
                $("#CheckBoxAirport" + index).attr('checked', 'checked')
            }
        });
    }
    else {
        $(airportFilterChecked_1).each(function(index) {
            if (airportFilterChecked_1[index].airport != airport) {
                airportFilterChecked_1[index].value = false;
                $("#CheckBoxAirport" + (index + airportFilterChecked_0.length)).attr('checked', false);
            }
            else {
                airportFilterChecked_1[index].value = true;
                $("#CheckBoxAirport" + (index + airportFilterChecked_0.length)).attr('checked', 'checked')
            }
        });
    }
    FilterData(0, false);
}
