﻿
var URLWebService;
$(document).ready(function() {
    URLWebService = GetBaseUrlWS() + '/WSPackage.asmx';
});

var departureSelected = 0;
var arrivalSelected = 0;
var dateSelected = '';

var departureResortSelected = '';
var arrivalResortSelected = '';
var dateResortSelected = '';


function LoadingDestineFX(elem, li, hide) {
    var pos = li.lastIndexOf('_');
    var parts = [];
    parts[0] = li.substring(0, pos+ 1);
    parts[1] = li.substr(pos+1, li.length-1);
    if (Number(parts[1]) == 1452)
        li = parts[0] + "0";

    if (hide) {
        $('#' + li).addClass('combo_loading');
        $('#' + elem).attr('style', 'visibility:hidden');
    }
    else {
        $('#' + li).removeClass('combo_loading');
        $('#' + elem).attr('style', 'visibility:visible');
    }
}


$(document).ready(function() {
    if ($("#" + $("#hdnIsPostBack").html()).val() == 1) {
        LoadSelectedSearch(0);
        LoadSelectedSearch(1452);
        LoadSelectedSearch(1599);

        ClearDeparture(0);
        ClearDeparture(1452);
        ClearDeparture(1599);
        
    }
    else { // Falta acertar esta entrada
        $("#" + $("#rbtNational_0" ).html()).attr("checked", true);
        $("#" + $("#ddlDeparture_0").html()).append($("#" + $("#hdnddlDeparture_0").html()).text());
        startLoadNew(0);

        $("#" + $("#rbtNational_1452").html()).attr("checked", true);
        $("#" + $("#ddlDeparture_1452").html()).append($("#" + $("#hdnddlDeparture_1452").html()).text());
        startLoadNew(1452);

        $("#" + $("#rbtNational_1599").html()).attr("checked", true);
        $("#" + $("#ddlDeparture_1599").html()).append($("#" + $("#hdnddlDeparture_1599").html()).text());
        startLoadNew(1599);   
     
    }


    ClearDestination(0);
    ClearDestination(1452);
    ClearDestination(1599);

    ClearDate(0);
    ClearDate(1452);
    ClearDate(1599);
});

function SetData(searchType) {
    
    $("#" + $("#divSelected_" + searchType).html()).val(
        $("#" + $("#ddlDeparture_" + searchType).html()).val() + ":" +
        $("#" + $("#ddlDeparture_" + searchType).html() + " option:selected").text() + ":" +
        $("#" + $("#ddlDestination_" + searchType).html()).val() + ":" +
        $("#" + $("#ddlDestination_" + searchType).html() + " option:selected").text() + ":" +
        $("#" + $("#ddlDate_" + searchType).html()).val() + ":" +
        $("#" + $("#ddlDate_" + searchType).html() + " option:selected").text()
        );
}

function ClearDeparture(searchType) {
    $("#" + $("#ddlDeparture_" + searchType).html()).find('option').remove().end();
    $("#" + $("#ddlDeparture_" + searchType).html()).find('optgroup').remove().end();
    //$("#" + $("#ddlDeparture_" + searchType).html()).append('<option value="">' + configPackageSearch.jsPackageSearchSelect + '</option>');
}

function ClearDestination(searchType) {
    $("#" + $("#ddlDestination_" + searchType).html()).find('option').remove().end();
    $("#" + $("#ddlDestination_" + searchType).html()).find('optgroup').remove().end();
    $("#" + $("#ddlDestination_" + searchType).html()).append('<option value="">' + configPackageSearch.jsPackageSearchSelectDeparture + '</option>');
}

function ClearDate(searchType) {
    $("#" + $("#ddlDate_" + searchType).html()).find('option').remove().end();
    $("#" + $("#ddlDate_" + searchType).html()).append('<option value="">' + configPackageSearch.jsPackageSearchDepartureSelect + '</option>');
}

function SetDeparture(searchType)
{
    if (searchType == 0) {
        if (departureSelected != '') {
            $("#" + $("#ddlDeparture_" + searchType).html()).val(departureSelected);
            departureSelected = '';
            LoadDestination(searchType, $("#" + $("#ddlDeparture_" + searchType).html()).val().split('|')[0]);
        }
    }
    else {
        if (searchType == 1599) {
            if (departureSelected != '') {
                $("#" + $("#ddlDeparture_" + searchType).html()).val(departureSelected);
                departureSelected = '';
                LoadDestination(searchType, $("#" + $("#ddlDeparture_" + searchType).html()).val().split('|')[0]);
            }
        }
        else {
            if (departureResortSelected != '') {
                $("#" + $("#ddlDeparture_" + searchType).html()).val(departureResortSelected);
                departureResortSelected = '';
                LoadDestination(searchType, $("#" + $("#ddlDeparture_" + searchType).html()).val().split('|')[0]);
            } 
        }
    }
}


function startLoadNew(searchType) {
    $("#" + $("#ddlDeparture_" + searchType).html()).change(function() {
        $("#" + $("#ddlDestination_" + searchType).html()).focus();

        ClearDestination(searchType);
        ClearDate(searchType);
        LoadDestination(searchType, $(this).val().split('|')[0]);
    });

    $("#" + $("#ddlDestination_" + searchType).html()).change(function() {
        $("#" + $("#ddlDate_" + searchType).html()).focus();

        ClearDate(searchType);
        LoadDate(searchType, $("#" + $("#ddlDeparture_" + searchType).html()).val().split('|')[0], $(this).val().split('|')[0]);
    });

    $("#" + $("#ddlDate_" + searchType).html()).change(function() {
        SetData(searchType);
    });

    $("#" + $("#rbtNational_" + searchType).html()).click(function() {
        $("#" + $("#ddlDeparture_" + searchType).html()).focus();

        ClearDeparture(searchType);
        ClearDestination(searchType);
        ClearDate(searchType);

        LoadDeparture(searchType);
    });

    $("#" + $("#rbtInternational_" + searchType).html()).click(function() {
        $("#" + $("#ddlDeparture_" + searchType).html()).focus();

        ClearDeparture(searchType);
        ClearDestination(searchType);
        ClearDate(searchType);

        LoadDeparture(searchType);
    });
}

function StartLoad(searchType) {
    //LoadDeparture(searchType);
    $("#" + $("#ddlDeparture_" + searchType).html()).append($("#" + $("#hdnddlDeparture_" + searchType).html()).text());
    SetDeparture(searchType);
    $("#" + $("#ddlDeparture_" + searchType).html()).change(function() {
        $("#" + $("#ddlDestination_" + searchType).html()).focus();

        ClearDestination(searchType);
        ClearDate(searchType);
        LoadDestination(searchType, $(this).val().split('|')[0]);
    });

    $("#" + $("#ddlDestination_" + searchType).html()).change(function() {
        $("#" + $("#ddlDate_" + searchType).html()).focus();

        ClearDate(searchType);
        LoadDate(searchType, $("#" + $("#ddlDeparture_" + searchType).html()).val().split('|')[0], $(this).val().split('|')[0]);
    });

    $("#" + $("#ddlDate_" + searchType).html()).change(function() {
        SetData(searchType);
    });

    $("#" + $("#rbtNational_" + searchType).html()).click(function() {
        $("#" + $("#ddlDeparture_" + searchType).html()).focus();

        ClearDeparture(searchType);
        ClearDestination(searchType);
        ClearDate(searchType);

        LoadDeparture(searchType);
    });

    $("#" + $("#rbtInternational_" + searchType).html()).click(function() {
        $("#" + $("#ddlDeparture_" + searchType).html()).focus();

        ClearDeparture(searchType);
        ClearDestination(searchType);
        ClearDate(searchType);

        LoadDeparture(searchType);
    });
}

function LoadDeparture(searchType) {
    var elemCombo = $("#ddlDeparture_" + searchType).html();
    LoadingDestineFX(elemCombo, 'liLoadingDeparture_' + searchType, true);
    $.ajax({
        type: "POST",
        url: URLWebService + "/LoadDeparture",
        data: "{isNational:" + $("#" + $("#rbtNational_" + searchType).html()).attr("checked") + ",idCategoria:" + searchType + "}",
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function (response) {
            $("#" + $("#ddlDeparture_" + searchType).html()).find('option').remove().end();
            $("#" + $("#ddlDeparture_" + searchType).html()).find('optgroup').remove().end();
            var html = '';
            var isFirst = true;
            $(response.d).each(function (index) {
                if (response.d[index].IsNewGroup) {
                    if (isFirst) {
                        html += '<optgroup label="' + response.d[index].Country + '">';
                        isFirst = false;
                    }
                    else {
                        html += '</optgroup><optgroup label="' + response.d[index].Country + '">';
                    }
                }
                else
                    html += '<option value="' + response.d[index].CityId + '" OptionGroup=' + response.d[index].Country + '>' + response.d[index].CityName + '</option>';
            });            

            $("#" + $("#ddlDeparture_" + searchType).html()).append(html + '</optgroup>');

            if (searchType == 0) {
                if (departureSelected != '') {
                    $("#" + $("#ddlDeparture_" + searchType).html()).val(departureSelected);
                    departureSelected = '';
                    LoadDestination(searchType, $("#" + $("#ddlDeparture_" + searchType).html()).val().split('|')[0]);
                }
            }
            else {
                if (departureResortSelected != '') {
                    $("#" + $("#ddlDeparture_" + searchType).html()).val(departureResortSelected);
                    departureResortSelected = '';
                    LoadDestination(searchType, $("#" + $("#ddlDeparture_" + searchType).html()).val().split('|')[0]);
                }
            }
            LoadingDestineFX(elemCombo, 'liLoadingDeparture_' + searchType, false);
        },
        failure: function (msg) {
            //alert(msg)
            LoadingDestineFX(elemCombo, 'liLoadingDeparture_' + searchType, false);
        },
        error: function (msg) {
            //alert(msg)
            LoadingDestineFX(elemCombo, 'liLoadingDeparture_' + searchType, false);
        }
    });
}

function LoadDestination(searchType, departure) {
    var elemCombo = $("#ddlDestination_" + searchType).html();
    LoadingDestineFX(elemCombo, 'liLoadingDestination_' + searchType, true);
    $.ajax({
        type: "POST",
        url: URLWebService + "/LoadDestination",
        data: "{isNational:" + $("#" + $("#rbtNational_" + searchType).html()).attr("checked") + ",departure:" + departure + ",idCategoria:" + searchType + "}",
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function(response) {
            $("#" + $("#ddlDestination_" + searchType).html()).find('option').remove().end();
            $("#" + $("#ddlDestination_" + searchType).html()).find('optgroup').remove().end();
            var html = '';
            var isFirst = true;
            $(response.d).each(function(index) {
                if (response.d[index].IsNewGroup) {
                    if (isFirst) {
                        html += '<optgroup label="' + response.d[index].Country + '">';
                        isFirst = false;
                    }
                    else {
                        html += '</optgroup><optgroup label="' + response.d[index].Country + '">';
                    }
                }
                else
                    html += '<option value="' + response.d[index].CityId + '" OptionGroup=' + response.d[index].Country + '>' + response.d[index].CityName + '</option>';
            });

            html = html.replace("Selecione", configPackageSearch.jsPackageSearchSelect);

            $("#" + $("#ddlDestination_" + searchType).html()).append(html + '</optgroup>');

            if (searchType == 0) {
                if (arrivalSelected != '') {
                    $("#" + $("#ddlDestination_" + searchType).html()).val(arrivalSelected);
                    arrivalSelected = '';
                    LoadDate(searchType, $("#" + $("#ddlDeparture_" + searchType).html()).val().split('|')[0], $("#" + $("#ddlDestination_" + searchType).html()).val().split('|')[0]);
                }
            }
            else {
                if (searchType == 1599) {
                    if (arrivalSelected != '') {
                        $("#" + $("#ddlDestination_" + searchType).html()).val(arrivalSelected);
                        arrivalSelected = '';
                        LoadDate(searchType, $("#" + $("#ddlDeparture_" + searchType).html()).val().split('|')[0], $("#" + $("#ddlDestination_" + searchType).html()).val().split('|')[0]);
                    }
                }
                else {
                    if (arrivalResortSelected != '') {
                        $("#" + $("#ddlDestination_" + searchType).html()).val(arrivalResortSelected);
                        arrivalResortSelected = '';
                        LoadDate(searchType, $("#" + $("#ddlDeparture_" + searchType).html()).val().split('|')[0], $("#" + $("#ddlDestination_" + searchType).html()).val().split('|')[0]);
                    }
                }
            }
            LoadingDestineFX(elemCombo, 'liLoadingDestination_' + searchType, false);
        },
        failure: function(msg) {
            //alert(msg.responseText);
            LoadingDestineFX(elemCombo, 'liLoadingDestination_' + searchType, false);
        },
        error: function(msg) {
            //alert(msg.responseText);
            LoadingDestineFX(elemCombo, 'liLoadingDestination_' + searchType, false);
        }
    });
}

function LoadDate(searchType, departure, destination) {
    if (typeof destination == 'undefined' || destination == '')
        return; 
    var elemCombo = $("#ddlDate_" + searchType).html();
    
    LoadingDestineFX(elemCombo, 'liLoadingData_' + searchType, true);
    
    $.ajax({
        type: "POST",
        url: URLWebService + "/LoadDate",
        data: "{departure:" + departure + ",destination:" + destination + ",idCategoria:" + searchType + "}",
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function(response) {
            $("#" + $("#ddlDate_" + searchType).html()).find('option').remove().end();
            var html = '';
            $(response.d).each(function(index) {
                html += '<option value="' + response.d[index].value + '">' + response.d[index].text + '</option>';
            });

            html = html.replace("Selecione", configPackageSearch.jsPackageSearchSelect);

            $("#" + $("#ddlDate_" + searchType).html()).append(html);

            if (searchType == 0) {
                if (dateSelected != '') {
                    $("#" + $("#ddlDate_" + searchType).html()).val(dateSelected);
                    dateSelected = '';
                    SetData(searchType);
                }
            }
            else {
                if (searchType == 1599) {
                    if (dateSelected != '') {
                        $("#" + $("#ddlDate_" + searchType).html()).val(dateSelected);
                        dateSelected = '';
                        SetData(searchType);
                    }
                }
                else {
                    if (dateResortSelected != '') {
                        $("#" + $("#ddlDate_" + searchType).html()).val(dateResortSelected);
                        dateResortSelected = '';
                        SetData(searchType);
                    }
                }
            }
            LoadingDestineFX(elemCombo, 'liLoadingData_' + searchType, false);
        },
        failure: function(msg) {
            //alert(msg.responseText);
            LoadingDestineFX(elemCombo, 'liLoadingData_' + searchType, false);

        },
        error: function(msg) {
            //alert(msg.responseText);
            LoadingDestineFX(elemCombo, 'liLoadingData_' + searchType, false);

        }
    });
}


function LoadSelectedSearch(searchType) {
    $.ajax({
        type: "POST",
        url: URLWebService + "/LoadSelectedSearch",
        data: "{searchType:" + searchType + "}",
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function(response) {
            if (response.d != null) {

                if (searchType == 1452) {
                    departureResortSelected = response.d.Departure + "|" + response.d.DepartureCountry;
                    arrivalResortSelected = response.d.Destination + "|" + response.d.DestinationCountry;
                    if (response.d.SelectedCheckIn != null)
                        dateResortSelected = response.d.SelectedCheckIn;
                }
                else {
                    departureSelected = response.d.Departure + "|" + response.d.DepartureCountry;
                    arrivalSelected = response.d.Destination + "|" + response.d.DestinationCountry;
                    if (response.d.SelectedCheckIn != null)
                        dateSelected = response.d.SelectedCheckIn;
                }
                $("#" + $("#rbtNational_" + searchType).html()).attr("checked", !response.d.IsInternational);
                $("#" + $("#rbtInternational_" + searchType).html()).attr("checked", response.d.IsInternational);
                //$("#" + $("#ddlDestination_" + searchType).html()).change();

                //LoadDestination(searchType, response.d.Departure);
                //LoadDate(searchType, response.d.Departure);
                //$("#" + $("#ddlDestination_" + searchType).html()).val(response.d.Destination + "|" + response.d.DestinationCountry)
            }
            StartLoad(searchType);
        },
        failure: function(msg) {
            //alert(msg.responseText);
        },
        error: function(msg) {
            // alert(msg.responseText);
        }
    });
}
