﻿/// <reference path="../JQuery/jquery-vsdoc.js" />

BuscaMapaBox.OnSelectItem = function(itemType, latitude, longitude, itemData) {
    var id = itemData.IdItemBuscaMapa.toString();
    ResultadoBuscaMapa.AtualizaPaineisInformacao(itemType, id);
    switch (itemType) {
        case TiposDeItemMapa.Continente:
            ResultadoBuscaMapa.ChangeMultipleTabsLock(false, true, true, true);
            break;
        case TiposDeItemMapa.Pais:
            ResultadoBuscaMapa.SetIdPais(id);
            Ajax.BuscaMapa.ObtemPais(id, this.End_ObtemPais);
            ResultadoBuscaMapa.ChangeMultipleTabsLock(false, false, true, true);
            break;
        case TiposDeItemMapa.Regiao:
            break;
        case TiposDeItemMapa.Cidade:
            Ajax.BuscaMapa.ObtemCidade(id, this.End_ObtemCidade);
            ResultadoBuscaMapa.ChangeMultipleTabsLock(false, false, false, true);
            break;
        case TiposDeItemMapa.Centro:
            Ajax.BuscaMapa.ObtemInstituicao(id, this.End_ObtemInstituicao);
            ResultadoBuscaMapa.ChangeMultipleTabsLock(false, false, false, false);
            break;
    }
}

BuscaMapaBox.OnChangeTipoIntercambio = function(combo) {
    ResultadoBuscaMapa.ClearSelection();
    BuscaMapaBox.OnMove();
}

Mensagens = 
{
    SemTipoIntercambio: "Selecione um tipo de intercâmbio e refine sua busca clicando nos ícones do mapa.",
    SemPais: "Navegue pelo mapa e clique no ícone do país que você deseja obter mais informações.",
    SemCentro: "Selecione um país, uma cidade e em seguida a escola que você procura, clicando nos ícones do mapa.",
    SemResultados: "Nenhum produto encontrado. Para realizar a busca avançada, <a href='javascript:void(0);' onclick='location.href = RedirecionaParaLandindTipoDeIntercambio(); return false;'> clique aqui</a>.",
    SemResultadosProduto: "Selecione um tipo de intercâmbio e refine sua busca clicando nos ícones do mapa."
}
function RedirecionaParaLandindTipoDeIntercambio()
{
    switch (BuscaMapaBox.IdTipoIntercambio)
    {
        case "1": return page.ResolveUrl("~/intercambio-estudo/"); break;
        case "2": return page.ResolveUrl("~/intercambio-trabalho/"); break;
        case "3": return page.ResolveUrl("~/pacote-turismo/"); break;
    }
}

function SelecionaMapa() 
{
    Tabs.Select($Get('ctl00_body_TabController1_tabNomeMapa'));
}

TiposDeItemMapa = 
{
    Continente: 1,
    Pais: 2,
    Regiao: 3,
    Cidade: 4,
    Centro: 5
}
ResultadoBuscaMapa =
{
    ItensPorPagina: 10,
    ChangingLocationLabel: false,
    EfetuaBuscaTimeout: null,
    IdTipoProduto: 0,
    IdContinente: 0,
    IdPais: 0,
    IdCidade: 0,
    IdInstituicao: 0,
    Ordenacao: 1,
    TotalItems: 0,
    ListaFiltrosBusca: [],
    AtualizarCamposBusca: function()
    {

    },

    GetAtributosList: function(itemBusca)
    {
        if (!itemBusca || !itemBusca.Atributos || itemBusca.Atributos.length == 0)
            return '';

        var itensPorColuna = Math.floor((itemBusca.Atributos.length + 1) / 2);
        var fnGetSpan = function(titulo, valor) { return "<span><strong>" + (titulo || "") + ": </strong> " + (valor || "") + "</span>"; }
        var fnGetLi = function(titulo, valor, fullLine) { return "<li" + (fullLine ? " class=\"full_line\"" : "") + "><strong>" + (titulo || "") + ":</strong> <span>" + (valor || "") + "</span></li>"; }
        var strRetorno = '<ul class="detalhes">';

        for (var i = 0; i < itemBusca.Atributos.length; i++)
        {
            if (itemBusca.Atributos[i].Key == 'Tipo Carga Horária')
                continue;

            if (itemBusca.Atributos[i].Key == 'Data de término')
                continue;

            strRetorno += fnGetLi(itemBusca.Atributos[i].Key, itemBusca.Atributos[i].Value, itemBusca.Atributos[i].FullLine) + '\n';
        }

        if (itemBusca.Observacoes)
            strRetorno += fnGetLi("Resumo", itemBusca.Observacoes, true) + '\n';

        strRetorno += '</ul>';

        return strRetorno;
    },
    GetUrlProduto: function(itemBusca)
    { },
    SetMessage: function(msg)
    {
        if (!msg)
            page.divMensagem.style.display = 'none';
        else
        {
            page.divMensagem.style.display = '';
            $Get('divTextoMensagem').innerHTML = msg;
        }
    },
    GetEstiloBoxPreco: function(itemBusca)
    {
        if (itemBusca.Valor && itemBusca.Valor != '')
            return '';
        else
            return ''; //display: none
    },
    GetTextoValor: function(itemBusca)
    {
        var ret = '';
        if (itemBusca.Valor && itemBusca.Valor != '')
        {
            ret += '<b> A partir de <br />' + itemBusca.Valor + '</b><br />';
            if (itemBusca.Parcela && itemBusca.Parcela != '' && itemBusca.Parcela != 0)
                ret += 'ou<br /> <b> ' + itemBusca.Parcela + '</b> de <b>' + itemBusca.ValorParcela + '</b>';
        }
        else
            ret += '<b>Sob consulta</b><br/><br/>';

        return ret;
    },
    Init: function()
    {
        page.ddlTipoIntercambioMapa.onchange = ResultadoBuscaMapa.OnChangeTipoIntercambio;

        if (page.ddlTipoIntercambioMapa.SelectedValue() != 0)
            ResultadoBuscaMapa.OnChangeTipoIntercambio();
        else
            ResultadoBuscaMapa.SetMessage(Mensagens.SemTipoIntercambio);

        $Get(divResultadoBuscaId).style.display = 'none';

        setTimeout('ResultadoBuscaMapa.EfetuaBusca();', 300);
    },
    OnChangeTipoIntercambio: function()
    {
        BuscaMapaBox.InfoWindowOpen = false;
        //alert('ResultadoBuscaMapa.OnChangeTipoIntercambio()');

        if (page.ddlTipoIntercambioMapa.SelectedValue() == 2 || page.ddlTipoIntercambioMapa.SelectedValue() == 3)
        {
            $Get('divRptMenuEstudo').style.display = 'none';
            $Get('divRptTipoProduto').style.display = '';
        }

        if (page.ddlTipoIntercambioMapa.SelectedValue() == 1)
        {
            $Get('divRptMenuEstudo').style.display = '';
            $Get('divRptTipoProduto').style.display = 'none';
        }
        $Get('divSelecioneIntercambioVazio').style.display = 'none';


        if (BuscaMapaBox.IdTipoIntercambio != 0 && page.ddlTipoIntercambioMapa.SelectedValue() != 0)
            ResultadoBuscaMapa.IdTipoProduto = BuscaMapaBox.IdTipoProduto = 0;

        if (BuscaMapaBox.IdTipoIntercambio == 2 || BuscaMapaBox.IdTipoProduto == 2)
        {
            ResultadoBuscaMapa.ChangeTabsLock(3, false);
            ResultadoBuscaMapa.ChangeTabsLock(4, false);
        }

        ResultadoBuscaMapa.ChangeMultipleTabsLock(false, false, true, true);
        BuscaMapaBox.IdTipoIntercambio = page.ddlTipoIntercambioMapa.SelectedValue();

        if (BuscaMapaBox.IdTipoIntercambio && BuscaMapaBox.IdTipoIntercambio != 0)
        {
            $Get('divParametrosTipo').style.display = '';
            Ajax.BuscaMapa.ListaTipoProdutoPorIntercambio(BuscaMapaBox.IdTipoIntercambio, ResultadoBuscaMapa.End_ListaTipoProdutoPorIntercambio);
        }
        else
            $Get('divParametrosTipo').style.display = 'none';

        //Atualiza link paises/cidades mais visitados
        if (ResultadoBuscaMapa.RetornoPaisesMaisVisitados != null)
            ResultadoBuscaMapa.End_PaisesMaisVisitados(ResultadoBuscaMapa.RetornoPaisesMaisVisitados);
        if (ResultadoBuscaMapa.RetornoCidadesMaisVisitadas != null)
            ResultadoBuscaMapa.End_CidadesMaisVisitados(ResultadoBuscaMapa.RetornoCidadesMaisVisitadas);

        BuscaMapaBox.OnMove();
        ResultadoBuscaMapa.EfetuaBusca();
    },
    OnSelectTipoProduto: function(idTipoProduto, lnk)
    {
        BuscaMapaBox.PontosMapa = [];
        $Get('divSemResultadoEstudo').style.display = 'none';
        $('.divFiltro').empty();
        BuscaMapaBox.InfoWindowOpen = false;
        if (BuscaMapaBox.IdTipoIntercambio == 2 || BuscaMapaBox.IdTipoProduto == 2)
        {
            ResultadoBuscaMapa.ChangeTabsLock(3, true);
            ResultadoBuscaMapa.ChangeTabsLock(4, true);
        }

        var endSelectTipoProduto = function(idTipoProduto, lnk)
        {
            ResultadoBuscaMapa.SetIdTipoProduto(idTipoProduto);
            HabilitaRefinamento(idTipoProduto);


            var par = lnk.parentNode;
            var lista = par.parentNode;

            for (var i = 0; i < lista.childNodes.length; i++)
            {
                if (lista.childNodes[i].tagName && lista.childNodes[i].tagName.toLowerCase() == 'p')
                    RemoveClassName(lista.childNodes[i], 'selected');

            }
        }

        if (idTipoProduto == 2 && ((ResultadoBuscaMapa.IdPais || 0) > 0) && BuscaMapaBox.GetWindowData().zoomLevel >= 4)
        {
            Ajax.BuscaMapa.ObtemPais(ResultadoBuscaMapa.IdPais, function(ret)
            {
                var pontoPais = new Tesla.Map.Point(ret.Latitude, ret.Longitude);
                var zoomLevel = 4;
                BuscaMapaBox.Map.SetCenter(pontoPais, zoomLevel, true);

                BuscaMapaBox.SetText(ret.Nome);
                ResultadoBuscaMapa.ApplyContent(ret.Nome, ret.Detalhe, 'spnNomePais', 'spnNomePaisTexto', 'parTextoPais');
                ResultadoBuscaMapa.ApplyContentPais(ret.CodigoIso, ret.Capital, ret.Idioma, ret.FusoHorario, ret.Cotacao, 'spnCodIsoPais', 'spnCapitalPais', 'spnIdiomasPais', 'spnFusoHorarioPais', 'spnCotacaoPais');
                ResultadoBuscaMapa.ChangeTabsLock(3, true);
                ResultadoBuscaMapa.ChangeTabsLock(4, true);
                endSelectTipoProduto(idTipoProduto, lnk);
            });
        }
        else
            endSelectTipoProduto(idTipoProduto, lnk);


    },
    End_ListaTipoProdutoPorIntercambio: function(ret)
    {
        ResultadoBuscaMapa.PopulaRepeaterTiposProduto(ret);
    },
    PopulaRepeaterTiposProduto: function(ret)
    {
        for (var i = 0; i < ret.length; i++)
        {
            if (ret[i].IdTipoProduto == ResultadoBuscaMapa.IdTipoProduto)
                ret[i].Estilo = 'selected';
            else
                ret[i].Estilo = '';
        }
        page.rptTipoProduto.DataBind(ret);
    },
    SetIdTipoProduto: function(idTipoProduto)
    {
        ResultadoBuscaMapa.IdTipoProduto = BuscaMapaBox.IdTipoProduto = idTipoProduto;
        BuscaMapaBox.BeginAtualizaMapa();
        ResultadoBuscaMapa.LimpaResultadosBusca();
        ResultadoBuscaMapa.EfetuaBusca();
        window.idTipoProduto = idTipoProduto; //utilizado no MenuEstudo.js
    },
    SetIdPais: function(idPais)
    {
        if (ResultadoBuscaMapa.IdPais != idPais)
            ResultadoBuscaMapa.IdInstituicao = 0;

        ResultadoBuscaMapa.IdPais = idPais;
        ResultadoBuscaMapa.LimpaResultadosBusca();
        ResultadoBuscaMapa.EfetuaBusca();
    },
    SetIdContinente: function(idContinente)
    {
        ResultadoBuscaMapa.IdContinente = idContinente;
        ResultadoBuscaMapa.LimpaResultadosBusca();
    },
    SetIdCidade: function(idCidade)
    {
        if (ResultadoBuscaMapa.IdCidade != idCidade)
            ResultadoBuscaMapa.IdInstituicao = 0;

        ResultadoBuscaMapa.IdCidade = idCidade;
        ResultadoBuscaMapa.LimpaResultadosBusca();
        ResultadoBuscaMapa.EfetuaBusca();
    },
    SetIdInstituicao: function(idInstituicao)
    {
        ResultadoBuscaMapa.IdInstituicao = idInstituicao;
        ResultadoBuscaMapa.LimpaResultadosBusca();
        ResultadoBuscaMapa.EfetuaBusca();
    },
    SetItensPorPagina: function(qtd)
    {
        this.ItensPorPagina = parseInt(qtd, 10) || 10;
        ResultadoBuscaMapa.EfetuaBusca();
    },
    SetOrdenacao: function(ordenacao)
    {
        ResultadoBuscaMapa.Ordenacao = ordenacao;
        ResultadoBuscaMapa.EfetuaBusca();
    },
    EfetuaBusca: function(pagina)
    {
        if (ResultadoBuscaMapa.EfetuaBuscaTimeout)
        {
            clearTimeout(ResultadoBuscaMapa.EfetuaBuscaTimeout);
            ResultadoBuscaMapa.EfetuaBuscaTimeout = null;
        }
        ResultadoBuscaMapa.EfetuaBuscaTimeout = setTimeout('ResultadoBuscaMapa.InternalEfetuaBusca(\'' + (pagina || 1) + '\')', 800);
    },
    InternalEfetuaBusca: function(pagina)
    {
        ResultadoBuscaMapa.EfetuaBuscaTimeout = null;
        //SetMessage
        if (!BuscaMapaBox.IdTipoIntercambio || BuscaMapaBox.IdTipoIntercambio == 0)
        {
            ResultadoBuscaMapa.SetMessage(Mensagens.SemTipoIntercambio);
            ResultadoBuscaMapa.QuantidadeProdutos = null;
            $Get(divResultadoBuscaId).style.display = 'none';
            return;
        }
        if (!ResultadoBuscaMapa.IdPais || ResultadoBuscaMapa.IdPais == 0)
        {
            ResultadoBuscaMapa.SetMessage(Mensagens.SemPais);
            ResultadoBuscaMapa.QuantidadeProdutos = null;
            $Get(divResultadoBuscaId).style.display = 'none';
            return;
        }
        if (BuscaMapaBox.IdTipoIntercambio == 1 && ResultadoBuscaMapa.IdTipoProduto != 2 && !ResultadoBuscaMapa.IdInstituicao)
        {
            ResultadoBuscaMapa.SetMessage(Mensagens.SemCentro);
            ResultadoBuscaMapa.QuantidadeProdutos = null;
            $Get(divResultadoBuscaId).style.display = 'none';
            return;
        }
        pagina = pagina || 1;
        ResultadoBuscaMapa.SetMessage();

        if ($('.divFiltro:visible').length > 0 && window.configuracaoCamposBusca && window.configuracaoCamposBusca.length > 0 && window.configuracaoCamposBusca[0].ValorPadrao != '')
        {
            BuscarFiltro();
        }
        else
        {
            var idInstituicao = 0;
            if (ResultadoBuscaMapa.IdTipoProduto != 2)
            {
                idInstituicao = ResultadoBuscaMapa.IdInstituicao
            }

            Ajax.BuscaMapa.BuscaProdutosMapa(BuscaMapaBox.IdTipoIntercambio, ResultadoBuscaMapa.IdTipoProduto, ResultadoBuscaMapa.IdContinente, ResultadoBuscaMapa.IdPais, ResultadoBuscaMapa.IdCidade, idInstituicao, ResultadoBuscaMapa.ItensPorPagina, pagina, ResultadoBuscaMapa.Ordenacao, ResultadoBuscaMapa.End_BuscaProdutosMapa);

        }

        new Function('ResultadoBuscaMapa.LimpaFiltrosBuscaMapa(); return false;');
    },
    LimpaFiltrosBuscaMapa: function()
    {
        ResultadoBuscaMapa.LimpaFiltros(BuscaMapaBox.IdTipoIntercambio, ResultadoBuscaMapa.IdTipoProduto, ResultadoBuscaMapa.IdContinente, ResultadoBuscaMapa.IdPais, ResultadoBuscaMapa.IdCidade,
                                                        ResultadoBuscaMapa.IdInstituicao, 10, 1, 1);
    },
    End_BuscaProdutosMapa: function(ret)
    {
        //window.alert('End_BuscaProdutosMapa()');

        ResultadoBuscaMapa.TotalItems = ret.TotalItems;

        document.documentElement.scrollTop = 0;
        ResultadoBuscaMapa.QuantidadeProdutos = ret.TotalItems;
        if (ret.TotalItems < 1)
        {
            $Get(divResultadoBuscaId).style.display = 'none';
            if (BuscaMapaBox.IdTipoIntercambio != 0)
                ResultadoBuscaMapa.SetMessage(Mensagens.SemResultados);
            else
                ResultadoBuscaMapa.SetMessage(Mensagens.SemResultadosProduto); 
        }
        else
        {
            //Exibe div com os resultados da busca pelo mapa
            $Get(divResultadoBuscaId).style.display = '';
            if (ResultadoBuscaMapa.IdInstituicao != 0 && page.ddlTipoIntercambioMapa.SelectedValue() == 1 && ResultadoBuscaMapa.IdTipoProduto == 0)
            {
                $Get('divSemResultadoEstudo').style.display = '';
                jQuery('#divSemResultadoEstudo').fadeIn().delay(5000).fadeOut('slow');
            }


            ResultadoBuscaMapa.SetMessage();
        }

        HabilitaRefinamento(ResultadoBuscaMapa.IdTipoProduto);

        //Exibindo <b><span></span></b> resultados
        if (ret.TotalItems <= ret.Page.length)
            $Get('lblQtdResultados').innerHTML = "Exibindo <b><span>" + ret.TotalItems + "</span></b> resultado(s)";
        else
        {
            var firstPageItem = (((ret.CurrentPage - 1) * ret.ItemsPerPage) + 1).toString();
            var lastPageItem = Math.min((ret.CurrentPage * ret.ItemsPerPage), ret.TotalItems).toString();

            $Get('lblQtdResultados').innerHTML = "Exibindo de <b><span>" + firstPageItem + '</span></b> a <b><span>' + lastPageItem + '</span></b> de um total de <b><span>' + ret.TotalItems + '</span></b> resultado(s)';
        }
        for (var i = 0; i < ret.Page.length; i++)
        {
            ret.Page[i].ListaAtributos = ResultadoBuscaMapa.GetAtributosList(ret.Page[i]);
            ret.Page[i].TextoValor = ResultadoBuscaMapa.GetTextoValor(ret.Page[i]);
            ret.Page[i].EstiloBoxPreco = ResultadoBuscaMapa.GetEstiloBoxPreco(ret.Page[i]);
        }
        page.rptResultadoBusca.DataBind(ret.Page);
        ResultadoBuscaMapa.MontaPaginador(ret);
    },
    End_BuscaEstudoEnsinoMedio: function(ret)
    {
        //window.alert('End_BuscaProdutosMapa()');
        ResultadoBuscaMapa.TotalItems = ret.TotalItems;

        document.documentElement.scrollTop = 0;
        ResultadoBuscaMapa.QuantidadeProdutos = ret.TotalItems;
        if (ret.TotalItems < 1)
        {
            $Get(divResultadoBuscaId).style.display = 'none';

            if (BuscaMapaBox.IdTipoIntercambio != 0)
                ResultadoBuscaMapa.SetMessage(Mensagens.SemResultados);
            else
                ResultadoBuscaMapa.SetMessage(Mensagens.SemResultadosProduto);
        }
        else
        {
            //Exibe div com os resultados da busca pelo mapa
            $Get(divResultadoBuscaId).style.display = '';
            if (page.ddlTipoIntercambioMapa.SelectedValue() == 1 && ResultadoBuscaMapa.IdTipoProduto == 0)
            {
                $Get('divSemResultadoEstudo').style.display = '';
                jQuery('#divSemResultadoEstudo').fadeIn().delay(5000).fadeOut('slow');
            }

            HabilitaRefinamento(ResultadoBuscaMapa.IdTipoProduto);
            ResultadoBuscaMapa.SetMessage();
        }

        //Exibindo <b><span></span></b> resultados
        if (ret.TotalItems <= ret.Page.length)
            $Get('lblQtdResultados').innerHTML = "Exibindo <b><span>" + ret.TotalItems + "</span></b> resultado(s)";
        else
        {
            var firstPageItem = (((ret.CurrentPage - 1) * ret.ItemsPerPage) + 1).toString();
            var lastPageItem = Math.min((ret.CurrentPage * ret.ItemsPerPage), ret.TotalItems).toString();

            $Get('lblQtdResultados').innerHTML = "Exibindo de <b><span>" + firstPageItem + '</span></b> a <b><span>' + lastPageItem + '</span></b> de um total de <b><span>' + ret.TotalItems + '</span></b> resultado(s)';
        }
        for (var i = 0; i < ret.Page.length; i++)
        {
            ret.Page[i].ListaAtributos = ResultadoBuscaMapa.GetAtributosList(ret.Page[i]);
            ret.Page[i].TextoValor = ResultadoBuscaMapa.GetTextoValor(ret.Page[i]);
            ret.Page[i].EstiloBoxPreco = ResultadoBuscaMapa.GetEstiloBoxPreco(ret.Page[i]);
        }

        page.rptResultadoBusca.DataBind(ret.Page);
        ResultadoBuscaMapa.MontaPaginador(ret);
    },
    LimpaFiltros: function(IdTipoIntercambio, IdTipoProduto, IdContinente, IdPais, IdCidade, IdInstituicao, ItensPorPagina, pagina, Ordenacao)
    {
        Ajax.BuscaMapa.BuscaProdutosMapa(IdTipoIntercambio, IdTipoProduto, IdContinente, IdPais, IdCidade, IdInstituicao, ItensPorPagina, pagina, Ordenacao, ResultadoBuscaMapa.End_BuscaProdutosMapa);
        jQuery(".ddlItensPorPagina option[value='10']").attr('selected', 'selected');
        jQuery(".ddlOrdenacao option[value='1']").attr('selected', 'selected');
        LimpaFiltroRefinamento();
    },
    LimpaResultadosBusca: function()
    {
        ResultadoBuscaMapa.End_BuscaProdutosMapa({ TotalItems: 0, Page: [] });
    },
    MontaPaginador: function(ret)
    {
        var div = $Get('divPaginacaoResultadoBuscaMapa');

        div.innerHTML = '';

        if (ret.TotalPages < 2) return;

        var pagesToShow = 5;
        var fnCreateLink = function(nome, pagina, cssclass)
        {
            var nelement = document.createElement('a');
            nelement.href = '#';
            nelement.onclick = new Function('ResultadoBuscaMapa.SelecionaPagina(' + pagina.toString() + '); return false;');
            nelement.className = cssclass;
            nelement.innerHTML = nome;
            return nelement;
        }
        var fnCreateSpan = function(nome, pagina, cssclass)
        {
            var nelement = document.createElement('span');
            nelement.className = cssclass;
            nelement.innerHTML = nome;
            return nelement;
        }

        if (ret.CurrentPage > 1)
            div.appendChild(fnCreateLink('Primeira', 1, 'bd_1 preenchimento_1'));
        if (ret.CurrentPage > 1)
            div.appendChild(fnCreateLink('« Anterior', ret.CurrentPage - 1, 'bd_1 preenchimento_1'));

        var firstPage = Math.max(1, ret.CurrentPage - Math.floor(pagesToShow / 2));
        var lastPage = Math.min(firstPage + (pagesToShow - 1), ret.TotalPages);

        for (var i = firstPage; i <= lastPage; i++)
        {
            if (i != ret.CurrentPage)
                div.appendChild(fnCreateLink(i.toString(), i, 'bd_1 preenchimento_2'));
            else
                div.appendChild(fnCreateSpan(i.toString(), i, 'bd_1 preenchimento_2'));
        }

        if (ret.CurrentPage < ret.TotalPages)
            div.appendChild(fnCreateLink('Próxima »', ret.CurrentPage + 1, 'bd_1 preenchimento_1'));
        if (ret.CurrentPage < ret.TotalPages)
            div.appendChild(fnCreateLink('Última', ret.TotalPages, 'preenchimento_1'));
    },
    SelecionaPagina: function(pagina)
    {
        document.scrollTop = 0;
        ResultadoBuscaMapa.EfetuaBusca(pagina);
    },
    UnLockTabs: function(tabId)
    {
        this.ChangeTabsLock(tabId, false);
    },
    LockTabs: function(tabId)
    {
        this.ChangeTabsLock(tabId, true);
    },
    ChangeMultipleTabsLock: function(tab1, tab2, tab3, tab4, tab5)
    {
        var tab5 = false;
        var tabId = !tab5 ? 5 : !tab4 ? 4 : !tab3 ? 3 : !tab2 ? 2 : !tab1 ? 1 : 0;
        this.ChangeTabsLock(1, tab1);
        this.ChangeTabsLock(2, tab2);
        this.ChangeTabsLock(3, tab3);
        this.ChangeTabsLock(4, tab4);
        this.ChangeTabsLock(5, tab5);
        //if (tabId != 0) Tabs.Select($Get(this.GetTabByID(tabId)).parentNode);
        Tabs.Select($Get(this.GetTabByID(5)).parentNode);
    },
    GetTabByID: function(id)
    {
        switch (id)
        {
            case 1: return 'spnNomeContinente';
            case 2: return 'spnNomePais';
            case 3: return 'spnNomeCidade';
            case 4: return 'spnNomeEscola';
            case 5: return 'spnNomeMapa';
        }
    },
    ChangeTabsLock: function(tabId, value)
    {
        var tabName = this.GetTabByID(tabId);
        this.ChangeTabLock(tabName, value);
    },
    ChangeTabLock: function(tabId, value)
    {
        var tab = $Get(tabId).parentNode;

        if (value)
        {
            Tabs.Lock(tab);
            tab.style.display = 'none';
        }
        else
        {
            Tabs.UnSelectTab(tab);
            Tabs.UnLock(tab);
            tab.style.display = '';
        }
    },
    AtualizaPaineisInformacao: function(itemType, id)
    {
        ResultadoBuscaMapa.ChangingLocationLabel = true;
        switch (itemType)
        {
            case TiposDeItemMapa.Continente:
                Ajax.BuscaMapa.ObtemCoontinente(id, this.End_ObtemContinente);
                break;
            case TiposDeItemMapa.Pais:
                Ajax.BuscaMapa.ObtemPais(id, this.End_ObtemPais);
                break;
            case TiposDeItemMapa.Regiao:
                break;
            case TiposDeItemMapa.Cidade:
                ResultadoBuscaMapa.SetIdCidade(id);
                Ajax.BuscaMapa.ObtemCidade(id, this.End_ObtemCidade);
                break;
            case TiposDeItemMapa.Centro:
                ResultadoBuscaMapa.SetIdInstituicao(id);
                Ajax.BuscaMapa.ObtemInstituicao(id, this.End_ObtemInstituicao);
                break;
        }
    },
    End_ObtemContinente: function(ret)
    {
        ResultadoBuscaMapa.ApplyContent(ret.Nome, ret.Detalhe, 'spnNomeContinente', 'spnNomeContinenteTexto', 'parTextoContinete');

        if (ret.IdContinente != null && ret.IdContinente != '')
            Ajax.BuscaMapa.ListaPaisesMaisVisitados(ret.IdContinente, ResultadoBuscaMapa.End_PaisesMaisVisitados);
    },
    End_ObtemPais: function(ret)
    {
        if (ret != null)
        {
            ResultadoBuscaMapa.SetIdContinente(ret.IdContinente);
            Ajax.BuscaMapa.ObtemCoontinente(ret.IdContinente, ResultadoBuscaMapa.End_ObtemContinente);

            //window.alert('End_ObtemPais(' + ret.Nome + ')');

            if (ret.IdPais != null && ret.IdPais != '')
                Ajax.BuscaMapa.ListaCidadesMaisVisitados(ret.IdPais, ResultadoBuscaMapa.End_CidadesMaisVisitados);

            $Get('pMoedaPais').style.display = 'none';
            $Get('pMoedaCotacaoPais').style.display = 'none';

            if (ret.IdMoeda != null && ret.IdMoeda != '')
                Ajax.BuscaMapa.ObtemMoedaPais(ret.IdMoeda, ResultadoBuscaMapa.End_MoedaPais);

            ResultadoBuscaMapa.ApplyContent(ret.Nome, ret.Detalhe, 'spnNomePais', 'spnNomePaisTexto', 'parTextoPais');
            ResultadoBuscaMapa.ApplyContentPais(ret.CodigoIso, ret.Capital, ret.Idioma, ret.FusoHorario, ret.Cotacao,
                                            'spnCodIsoPais', 'spnCapitalPais', 'spnIdiomasPais', 'spnFusoHorarioPais', 'spnCotacaoPais');
        }
    },
    End_MoedaPais: function(ret)
    {
        if (ret != null && ret != '')
            Ajax.BuscaMapa.ObtemCotacaoPais(ret.Descricao, ResultadoBuscaMapa.End_CotacaoPais);

        ResultadoBuscaMapa.ApplyContentMoedaPais(ret, 'spnMoedaPais');
    },
    End_CotacaoPais: function(ret)
    {
        ResultadoBuscaMapa.ApplyContentCotacaoPais(ret, 'spnCotacaoPais', 'spnMoedaCotacaoPais');
    },
    End_PaisesMaisVisitados: function(ret)
    {
        //        if (ret == 0)
        //            jQuery('#divPaisesMaisVisitados').hide();

        //        var divPaises = jQuery('#divPaisesMaisVisitados');
        //        var lnkPais = '';
        //        var url = page.ResolveUrl('~/aspx/Produtos/ResultadoBuscaMapa.aspx?');
        //        var urlTipoIntercambio = location.search.split("IdTipoIntercambio=");

        //        if (urlTipoIntercambio[1] != undefined && urlTipoIntercambio[1] != '' && urlTipoIntercambio[1] != null)
        //            urlTipoIntercambio = urlTipoIntercambio[1].substring(0, 1);

        //        divPaises.html("");

        //        for (var i = 0; i < ret.length; i++)
        //            lnkPais += "   <a href='" + url + "id=" + ret[i].IdPais + "&type=2&latitude=" + ret[i].Latitude + "&longitude=" + ret[i].Longitude + "&IdTipoIntercambio=" + urlTipoIntercambio + "'>" + ret[i].Nome + "</a>";

        //        lnkPais = lnkPais.substring(3);
        //        jQuery(divPaises).html("<strong>Países mais procurados:</strong>" + lnkPais);

        ResultadoBuscaMapa.RetornoPaisesMaisVisitados = ret;

        if (ret == 0)
            jQuery('#divPaisesMaisVisitados').hide();

        var divPaises = jQuery('#divPaisesMaisVisitados');
        var lnkPais = '';
        var url = page.ResolveUrl('~/aspx/Produtos/ResultadoBuscaMapa.aspx');

        url = url + '?type=2&id={0}&latitude={1}&longitude={2}';
        if (BuscaMapaBox.IdTipoIntercambio != 0)
            url = url + '&IdTipoIntercambio=' + BuscaMapaBox.IdTipoIntercambio;

        divPaises.html("");

        for (var i = 0; i < ret.length; i++)
            lnkPais += "   <a href='" + url.replace('{0}', ret[i].IdPais).replace('{1}', ret[i].Latitude).replace('{2}', ret[i].Longitude) + "'>" + ret[i].Nome + "</a>";


        lnkPais = lnkPais.substring(3);
        jQuery(divPaises).html("<strong>Países mais procurados:</strong>" + lnkPais);
    },
    End_CidadesMaisVisitados: function(ret)
    {
        //        if (ret == 0)
        //            jQuery('#divCidadesMaisVisitados').hide();

        //        var divCidades = jQuery('#divCidadesMaisVisitados');
        //        var lnkCidades = '';
        //        var separador = '';

        //        var url = page.ResolveUrl('~/aspx/Produtos/ResultadoBuscaMapa.aspx?');

        //        var urlTipoIntercambio = location.search.split("IdTipoIntercambio=");
        //        if (urlTipoIntercambio[1] != undefined && urlTipoIntercambio[1] != '' && urlTipoIntercambio[1] != null)
        //            urlTipoIntercambio = urlTipoIntercambio[1].substring(0, 1);

        //        divCidades.html("");

        //        for (var i = 0; i < ret.length; i++)
        //        {
        //            if (i == 3)
        //            {
        //                lnkCidades += separador + "<a href='" + url + "id=" + ret[i].IdCidade + "&type=4&latitude=" + ret[i].Latitude + "&longitude=" + ret[i].Longitude + "&IdTipoIntercambio=" + urlTipoIntercambio + "'>" + ret[i].Nome + "</a><br />";
        //                separador = '';
        //            }
        //            else
        //            {
        //                lnkCidades += separador + "<a href='" + url + "id=" + ret[i].IdCidade + "&type=4&latitude=" + ret[i].Latitude + "&longitude=" + ret[i].Longitude + "&IdTipoIntercambio=" + urlTipoIntercambio + "'>" + ret[i].Nome + "</a>";
        //                separador = " ";
        //            }
        //        }

        //        jQuery(divCidades).html("<strong>Cidades mais procuradas:</strong>" + lnkCidades);

        ResultadoBuscaMapa.RetornoCidadesMaisVisitadas = ret;

        if (ret == 0)
            jQuery('#divCidadesMaisVisitados').hide();

        var divCidades = jQuery('#divCidadesMaisVisitados');
        var lnkCidades = '';
        var separador = '';

        var url = page.ResolveUrl('~/aspx/Produtos/ResultadoBuscaMapa.aspx');

        url = url + '?type=4&id={0}&latitude={1}&longitude={2}';
        if (BuscaMapaBox.IdTipoIntercambio != 0)
            url = url + '&IdTipoIntercambio=' + BuscaMapaBox.IdTipoIntercambio;

        divCidades.html("");

        for (var i = 0; i < ret.length; i++)
        {
            lnkCidades += separador + "<a href='" + url.replace('{0}', ret[i].IdCidade).replace('{1}', ret[i].Latitude).replace('{2}', ret[i].Longitude) + "'>" + ret[i].Nome + "</a>";

            //Código anterior
            if (i == 3)
            {
                lnkCidades += "<br />";
                separador = '';
            }
            else
            {
                separador = " ";
            }
        }

        jQuery(divCidades).html("<strong>Cidades mais procuradas:</strong>" + lnkCidades);
    },
    End_ObtemRegiao: function(ret)
    {
        if (ret != null)
        {
            $Get('pEstadoCidade').style.display = 'none';
            if (ResultadoBuscaMapa.IdPais == 19)
                ResultadoBuscaMapa.ApplyContentEstadoCidade(ret.Nome, 'spnEstadoCidade');

            ResultadoBuscaMapa.SetIdPais(ret.IdPais);
            Ajax.BuscaMapa.ObtemPais(ret.IdPais, ResultadoBuscaMapa.End_ObtemPais);
        }
    },
    End_ObtemCidade: function(ret)
    {
        Ajax.BuscaMapa.ObtemRegiao(ret.IdRegiao, ResultadoBuscaMapa.End_ObtemRegiao);

        if (ret.IdRegiao != null && ret.IdRegiao != '')
            Ajax.BuscaMapa.ObtemRegiaoCidade(ret.IdRegiao, ResultadoBuscaMapa.End_ObtemEstadoCidade);

        ResultadoBuscaMapa.ApplyContent(ret.Nome, ret.Detalhe, 'spnNomeCidade', 'spnNomeCidadeTexto', 'parTextoCidade');
        ResultadoBuscaMapa.ApplyContentCidade(ret.CodigoIso, ret.Populacao, ret.FusoHorario, ret.DDD, ret.Temperatura, ret.Voltagem, ret.Idioma,
                                              'spnCodIsoCidade', 'spnPopulacaoCidade', 'spnFusoHorarioCidade', 'spnDDDCidade', 'spnTemperaturaCidade', 'spnVoltagemCidade', 'spnIdiomaCidade');
    },
    End_ObtemEstadoCidade: function(ret)
    {
        //ResultadoBuscaMapa.ApplyContentEstadoCidade(ret, 'spnEstadoCidade');
    },
    End_ObtemInstituicao: function(ret)
    {
        Ajax.BuscaMapa.ObtemCidade(ret.IdCidade, ResultadoBuscaMapa.End_ObtemCidade);
        ResultadoBuscaMapa.ApplyContent(ret.Nome, ret.Descricao, null, 'spnNomeEscolaTexto', 'parTextoEscola', ret.UrlArquivoImagem, 'divImgInstituicao');

        var newA = document.createElement('a');
        newA.name = 'spnNomeEscola';
        newA.id = 'spnNomeEscola';
        newA.innerHTML = 'Escola';
        var parentElement = $Get('spnNomeEscola').parentNode;
        parentElement.replaceChild(newA, $Get('spnNomeEscola'));
        HabilitaRefinamento(ResultadoBuscaMapa.IdTipoProduto);
    },
    ClearSelection: function()
    {
        ResultadoBuscaMapa.ApplyContent(' ', ' ', 'spnNomeContinente', 'spnNomeContinenteTexto', 'parTextoContinete');
        ResultadoBuscaMapa.ApplyContent(' ', ' ', 'spnNomePais', 'spnNomePaisTexto', 'parTextoPais');
        ResultadoBuscaMapa.ApplyContent(' ', ' ', 'spnNomeCidade', 'spnNomeCidadeTexto', 'parTextoCidade');
        ResultadoBuscaMapa.ApplyContent(' ', ' ', 'spnNomeEscola', 'spnNomeEscolaTexto', 'parTextoEscola');
        BuscaMapaBox.ResetZoom();
    },
    ApplyContent: function(nome, descricao, idSpanAba, idTituloTexto, idParTexto, urlArquivoImagem)
    {
        if (!nome) return;
        if (ResultadoBuscaMapa.ChangingLocationLabel && nome != '')
        {
            if (nome.length < 30)
            {
                page.BoxBuscaMapaControls_h3Localidade.innerHTML = nome;
                $Get('h2TituloPagina').innerHTML = String.Format('Busca por Destino - Intercâmbio: {0}', nome);
            }
            else
                page.BoxBuscaMapaControls_h3Localidade.innerHTML = 'Busca por Destino';

            ResultadoBuscaMapa.ChangingLocationLabel = false;
        }
        if (idSpanAba)
        {
            if (nome.length < 14)
            {
                var newA = document.createElement('a');
                newA.name = idSpanAba;
                newA.id = idSpanAba;
                newA.innerHTML = nome;
                var parentElement = $Get(idSpanAba).parentNode;
                parentElement.replaceChild(newA, $Get(idSpanAba));
            }
            else
            {
                var newA = document.createElement('span');
                newA.name = idSpanAba;
                newA.id = idSpanAba;
                newA.innerHTML = nome;
                var parentElement = $Get(idSpanAba).parentNode;
                parentElement.replaceChild(newA, $Get(idSpanAba));
            }
        }

        $Get(idTituloTexto).innerHTML = nome;
        $Get(idParTexto).innerHTML = (descricao || window.MsgPadrao);

        if (urlArquivoImagem != null && urlArquivoImagem != undefined && urlArquivoImagem != '')
            $Get('divImgInstituicao').src = urlArquivoImagem;
    },
    ApplyContentPaisMaisVisitado: function(id)
    {
        ResultadoBuscaMapa.SetIdPais(id);
        Ajax.BuscaMapa.ObtemPais(id, this.End_ObtemPais);
        ResultadoBuscaMapa.ChangeMultipleTabsLock(false, false, true, true);
    },
    ApplyContentCidadesMaisVisitado: function(id)
    {
        ResultadoBuscaMapa.SetIdCidade(id);
        Ajax.BuscaMapa.ObtemCidade(id, this.End_ObtemCidade);
        ResultadoBuscaMapa.ChangeMultipleTabsLock(false, false, false, true);
    },
    ApplyContentPais: function(codigoIso, capital, idioma, fusoHorario, cotacao)
    {
        //if (codigoIso == undefined && capital == undefined && idioma == undefined && fusoHorario == undefined && cotacao == undefined)
        //    jQuery('#divInfosPaises').hide();
        var dadosExibir = false;

        if (codigoIso != undefined && codigoIso != '')
        {
            $Get('spnCodIsoPais').innerHTML = codigoIso;
            $Get('pCodIsoPais').style.display = '';
            dadosExibir = true;
        }
        else
        {
            $Get('pCodIsoPais').style.display = 'none';
        }

        if (capital != undefined && capital != '')
        {
            $Get('spnCapitalPais').innerHTML = capital;
            $Get('pCapitalPais').style.display = '';
            dadosExibir = true;
        }
        else
        {
            $Get('pCapitalPais').style.display = 'none';
        }

        if (idioma != undefined && idioma != '')
        {
            $Get('spnIdiomasPais').innerHTML = idioma;
            $Get('pIdiomasPais').style.display = '';
            dadosExibir = true;
        }
        else
        {
            $Get('pIdiomasPais').style.display = 'none';
        }

        if (fusoHorario != undefined && fusoHorario != '')
        {
            $Get('spnFusoHorarioPais').innerHTML = fusoHorario;
            $Get('pFusoHorarioPais').style.display = '';
            dadosExibir = true;
        }
        else
        {
            $Get('pFusoHorarioPais').style.display = 'none';
        }

        if (cotacao != undefined && cotacao != '')
            $Get('spnCotacaoPais').innerHTML = cotacao;

        if (!dadosExibir)
            jQuery('#divInfosPaises').hide();
    },
    ApplyContentEstadoCidade: function(estado)
    {
        $Get('pEstadoCidade').style.display = 'none';
        if (estado != undefined && estado != '' && ResultadoBuscaMapa.IdPais == 19)
        {
            $Get('spnEstadoCidade').innerHTML = estado;
            $Get('pEstadoCidade').style.display = '';
        }
    },
    ApplyContentCidade: function(codigoiso, populacao, fusohorario, ddd, temperatura, voltagem, idioma)
    {
        if (codigoiso == undefined && populacao == undefined && fusohorario == undefined && ddd == undefined && temperatura == undefined && voltagem == undefined)
            jQuery('#divInfosCidades').hide();

        if (codigoiso != undefined && codigoiso != '')
        {
            $Get('spnCodIsoCidade').innerHTML = codigoiso;
            $Get('pCodIsoCidade').style.display = '';
        }
        else
        {
            $Get('pCodIsoCidade').style.display = 'none';
        }

        if (populacao != undefined && populacao != '')
        {
            $Get('spnPopulacaoCidade').innerHTML = FormataNumeroDecimal(populacao);
            $Get('pPopulacaoCidade').style.display = '';
        }
        else
        {
            $Get('pPopulacaoCidade').style.display = 'none';
        }

        if (fusohorario != undefined && fusohorario != '')
        {
            $Get('spnFusoHorarioCidade').innerHTML = fusohorario;
            $Get('pFusoHorarioCidade').style.display = '';
        }
        else
        {
            $Get('pFusoHorarioCidade').style.display = 'none';
        }

        if (ddd != undefined && ddd != '')
        {
            $Get('spnDDDCidade').innerHTML = ddd;
            $Get('pDDDCidade').style.display = '';
        }
        else
        {
            $Get('pDDDCidade').style.display = 'none';
        }

        if (temperatura != undefined && temperatura != '')
        {
            $Get('spnTemperaturaCidade').innerHTML = temperatura;
            $Get('pTemperaturaCidade').style.display = '';
        }
        else
        {
            $Get('pTemperaturaCidade').style.display = 'none';
        }

        if (voltagem != undefined && voltagem != '')
        {
            $Get('spnVoltagemCidade').innerHTML = voltagem;
            $Get('pVoltagemCidade').style.display = '';
        }
        else
        {
            $Get('pVoltagemCidade').style.display = 'none';
        }

        if (idioma != undefined && idioma != '')
        {
            $Get('spnIdiomaCidade').innerHTML = idioma;
            $Get('pIdiomaCidade').style.display = '';
        }
        else
        {
            $Get('pIdiomaCidade').style.display = 'none';
        }
    },
    ApplyContentMoedaPais: function(ret)
    {
        if (ret != null && ret != undefined && ret != '')
        {
            if (ret.Descricao != null && ret.Descricao != undefined && ret.Descricao != '')
            {
                $Get('spnMoedaPais').innerHTML = ret.Descricao;
                $Get('pMoedaPais').style.display = '';
            } else
            {
                $Get('pMoedaPais').style.display = 'none';
            }

            if (ret.Sigla != null && ret.Sigla != undefined && ret.Sigla != '')
            {
                $Get('spnMoedaCotacaoPais').innerHTML = ret.Sigla;
            } else
            {
                $Get('pMoedaCotacaoPais').style.display = 'none';
            }
        }
    },
    ApplyContentCotacaoPais: function(ret)
    {

        if (ret != undefined && ret != '')
        {
            $Get('spnCotacaoPais').innerHTML = '1 = R$ ' + ret;
            $Get('pMoedaCotacaoPais').style.display = '';
        }
    }
}

function BuscarFiltro() {
    //window.alert('BuscarFiltro()');
    
    var idade = $Get(lnkFields.txtAnos).value; //não está aceitando zero ou nulo
    var dataInicio = $Get(lnkFields.cmbDataInicio).SelectedValue(); //aceita a data completa 01/01/2011
    var duracao = $Get(lnkFields.cmbDuracao).SelectedValue();
    var cargaHoraria = $Get(lnkFields.cmbCarga).SelectedValue();
    var pagina= 1;
    var acomodacao = ($('[name=ctl00_body_lnkFields_rdbAcomodacao]:checked')[0].value == 'Sim') ? 'SIM' : 'NAO';
  
   

////    if (window.configuracaoCamposBusca != null && window.configuracaoCamposBusca != '') {
////        idade = window.configuracaoCamposBusca[0].ValorPadrao;
////        dataInicio = window.configuracaoCamposBusca[7].ValorPadrao;
////        duracao = window.configuracaoCamposBusca[8].ValorPadrao;
////        cargaHoraria = window.configuracaoCamposBusca[9].ValorPadrao;
////        window.configuracaoCamposBusca[1].Mostrar = true;
////        acomodacao;// = window.configuracaoCamposBusca[1].ValorPadrao;
////    }
   
    if (dataInicio == "[default]" || dataInicio == "-" || dataInicio == "-1")
        dataInicio = "";
    else if (dataInicio != "")
        dataInicio = "01/" + dataInicio;
        
    if (dataInicio.indexOf("|", 0) > 0)
        dataInicio = dataInicio.substring(0, dataInicio.indexOf("|", 0));
    
    if (duracao == "[default]" || duracao == "-" || duracao == "-1") duracao = "";
    
    if (duracao.indexOf("|", 0) > 0)
        duracao = duracao.substring(0, duracao.indexOf("|", 0));
    
    if (cargaHoraria == "[default]" || cargaHoraria == "-" || cargaHoraria == "-1") cargaHoraria = "";
    
    if (cargaHoraria.indexOf("|", 0) > 0)
        cargaHoraria = cargaHoraria.substring(0, cargaHoraria.indexOf("|", 0));
    
    var idInstituicao = 0;
    if (BuscaMapaBox.IdTipoIntercambio == 1)
        idInstituicao = ResultadoBuscaMapa.IdInstituicao;
    
    Ajax.BuscaMapa.BuscaProdutosMapaFiltrado(BuscaMapaBox.IdTipoIntercambio, ResultadoBuscaMapa.IdTipoProduto, idInstituicao, 
                                                    ResultadoBuscaMapa.ItensPorPagina, pagina, ResultadoBuscaMapa.Ordenacao,
                                                    idade, dataInicio, duracao, cargaHoraria, acomodacao, ResultadoBuscaMapa.End_BuscaProdutosMapa);
    
                                                
    return;
}

function HabilitaRefinamento(idTipoProduto) {
    //window.alert('HabilitaRefinamento(idTipoProduto=' + idTipoProduto + ')');
    //var divFiltro = jQuery(".jTipoProduto" + idTipoProduto + " #divFiltro");
    var divFiltro = jQuery("#divFiltro", $('.jTipoProduto' + idTipoProduto)[0]);
    var divOTR = jQuery("#divOTR");
    var divLnk;


    if (BuscaMapaBox.IdTipoIntercambio == 1)
        divLnk = jQuery('#divRptMenuEstudo #lnk_' + idTipoProduto);
    else
        divLnk = jQuery('#divRptTipoProduto #lnk_' + idTipoProduto);      

    if (ResultadoBuscaMapa.ListaFiltrosBusca.length > 0) 
    {
        if (jQuery("#divFiltro", $('.jTipoProduto' + idTipoProduto)[0])[0].style.display != "none") 
        {
            ResultadoBuscaMapa.Refinamento.PopulaDataInicio(); 
        }                    
    }

    if (divLnk.hasClass('selected') && divFiltro.html() != '') //Já está com o refinamento aberto, evita que recarregue depois q faz o refinamento
    {
        return;
    }
            
    jQuery("#ctl00_body_lnkFields_txtAnos").val(''); 
    //Desmarca todos itens marcados no menu de tipos de produto
    jQuery('#divRptMenuEstudo div p').removeClass('selected');
    jQuery('#divRptMenuEstudo div a').removeClass('selected');
    jQuery('#divRptTipoProduto a').removeClass('selected'); 
    
    //Remove o filtro, se já estiver exibindo
    //jQuery(".jTipos #divFiltro").html('');
    for (i = 0; i < 20; i++) {
        if (jQuery("#divFiltro", $('.jTipoProduto' + i)[0]) != null)
            jQuery("#divFiltro", $('.jTipoProduto' + i)[0]).html('');
    }

    //Marca o tipo de produto selecionado

    divLnk.addClass('selected');

    /*
    if ($Get(divResultadoBuscaId).style.display == 'none') {
        //Não tem resultados na busca ou ainda não marcou todas as opções necessárias (intercâmbio, tipo de produto e centro)
        return;
    }
    if (typeof(ResultadoBuscaMapa.QuantidadeProdutos) != 'number'   ) {
        return;
    }
    */

    //Se for ensino médio e não tiver pais selecionado... sai fora
    if (ResultadoBuscaMapa.IdTipoProduto == 2 && (ResultadoBuscaMapa.IdPais || 0) <= 0)
    {
        //console.log('sem pais - ensinomedio');
        return;
    }
    if (ResultadoBuscaMapa.IdTipoProduto != 2) {
        //Se não tiver centro selecionado... sai fora

        if ((ResultadoBuscaMapa.IdInstituicao || 0) <= 0)
        {
            //console.log('sem instituicao');
            return;
        }
        var achou = false;
        //Verifica se o centro selecionado previamente está na lista de pontos exibida no mapa
        for (var i = 0; i < BuscaMapaBox.PontosMapa.length; i++)
            if (achou = (BuscaMapaBox.PontosMapa[i].Tipo == TiposDeItemMapa.Centro && BuscaMapaBox.PontosMapa[i].IdItemBuscaMapa == ResultadoBuscaMapa.IdInstituicao))
            break;

        if (!achou) {
            //console.log('nao achou');
            return;
        }
    }
    

    
    if (idTipoProduto == 0)
        return; //Ainda não selecionou o tipo de produto

    if (idTipoProduto == 2 && BuscaMapaBox.IdTipoIntercambio == 1) {
        HabilitaRefinamento_End();
        return;
    }
    //Pesquisa configuração de campos, para o caso q não tinha indicado q era estudo na home do site, só indicou agora na página de busca
    if (BuscaMapaBox.IdTipoIntercambio != 1) 
    {
        HabilitaRefinamento_End();
        return;
    }
    
    Ajax.Tarifario.ListaConfiguracaoCamposEstudo(idTipoProduto, HabilitaRefinamento_End);
    return;
}

function HabilitaRefinamento_End(ret) {
    var idTipoProduto = ResultadoBuscaMapa.IdTipoProduto;

    if (window.configuracaoCamposBusca == null || window.configuracaoCamposBusca == undefined)
        window.configuracaoCamposBusca = ret;
    
    //window.alert('HabilitaRefinamento_End(idTipoProduto=' + idTipoProduto + ' -- ret=\r\n' + ret + ')');
    
    //Comentado para manter o filtro aberto, evitando que o usuário tenha que recarregar a página quando não tiver resultados para o refinamento escolhido.
    //if ($Get(divResultadoBuscaId).style.display == 'none') {
        //alert("Para refinar sua busca selecione uma escola clicando nos ícones do mapa.");
        //return;
    //}

    //var divFiltro = jQuery(".jTipoProduto" + idTipoProduto + " #divFiltro");
    var divFiltro = jQuery("#divFiltro", $('.jTipoProduto' + idTipoProduto)[0]);
    var divBoxFiltro;    
    
   if (idTipoProduto == 2) {
        divBoxFiltro = jQuery("#divEM");
    }
    else
    {
        divBoxFiltro = jQuery("#divOTR");
    }

        
    //jQuery("#ctl00_body_lnkFields_txtAnos").val(''); //Erro: Faz com que o filtro seja reiniciado depois de refinar


    divFiltro.html(divBoxFiltro.html());
    divFiltro.show();

    var valorPadrao = ResultadoBuscaMapa.Refinamento.ObtemConfiguracaoUltimaBuscaField($Get(lnkFields.txtAnos));

    if (!valorPadrao && window.configuracaoCamposBusca && window.configuracaoCamposBusca != undefined && window.configuracaoCamposBusca[0].ValorPadrao != '') {
        valorPadrao = window.configuracaoCamposBusca[0].ValorPadrao;;
    }
    if (valorPadrao && ResultadoBuscaMapa.IdTipoProduto != 2) {
        $('.divFiltro:visible #ctl00_body_lnkFields_txtAnos')[0].value = valorPadrao;
        $('.divFiltro:visible #ctl00_body_lnkFields_txtAnos')[0].onkeyup();
    }
}

function LimpaFiltroRefinamento()
{
    jQuery("#ctl00_body_lnkFields_txtAnos").val('');

    //Desmarca todos itens marcados no menu de tipos de produto
    jQuery('#divRptMenuEstudo div p').removeClass('selected');
    jQuery('#divRptMenuEstudo div a').removeClass('selected');

    //Remove o filtro, se já estiver exibindo
    jQuery(".jTipos #divFiltro").html('');

    //Marca o tipo de produto selecionado
    jQuery('#lnk_' + idTipoProduto).addClass('selected');
    
    jQuery(".jTipoProduto" + idTipoProduto + " #divFiltro").html(jQuery("#divOTR").html());
    jQuery(".jTipoProduto" + idTipoProduto + " #divFiltro").show();
}
ResultadoBuscaMapa.ConfiguracaoBuscaAnterior = {};
ResultadoBuscaMapa.Refinamento =
{
    PopulaDataInicio: function() {

        MenuEstudo.PopulaCarregando($Get(lnkFields.cmbDataInicio));
        //Ajax.Tarifario.ListaPorDataInicio(idTipoProduto, $Get(lnkFields.txtAnos).value, this.GetAcomodacao(), this.RetornaSelectedText(lnkFields.cmbIdioma), this.RetornaSelectedText(lnkFields.cmbNivelIdioma), this.RetornaSelectedText(lnkFields.cmbTipoCurso), this.RetornaSelectedText(lnkFields.cmbPais), this.RetornaSelectedText(lnkFields.cmbCidade), this.EndPopulaDataInicio);
        Ajax.BuscaMapa.RefinamentoFiltroListaPorDataInicio(BuscaMapaBox.IdTipoIntercambio, ResultadoBuscaMapa.IdTipoProduto, ResultadoBuscaMapa.IdInstituicao, $Get(lnkFields.txtAnos).value, this.EndPopulaDataInicio);
    },

    EndPopulaDataInicio: function(ret) {
        for (var i = 0; i < ret.Count(); i++) {
            ret[i].Value = ret[i].Value.substr(3);
            ret[i].Key = ret[i].Key.substr(3);
        }

        ResultadoBuscaMapa.ConfiguracaoBuscaAnterior['Idade'] = $('.divFiltro:visible #ctl00_body_lnkFields_txtAnos')[0].value;
        /*
        if (window.configuracaoCamposBusca && window.configuracaoCamposBusca.length > 0) {
        for (var i = 0; i < window.configuracaoCamposBusca.length; i++) {
        if (window.configuracaoCamposBusca[i]['Campo'] == 'Idade')
        window.configuracaoCamposBusca[i]['ValorPadrao'] = $('.divFiltro:visible #ctl00_body_lnkFields_txtAnos')[0].value;
        }
        }
        */

        ResultadoBuscaMapa.Refinamento.PopulaRetorno(ret, 'Data de início', $Get(lnkFields.cmbDataInicio), 'Value', 'Key')
    },

    DataInicioOnChange: function() {

    },

    PopulaDuracao: function() {
        //Semelhante a: MenuEstudo.PopulaDuracao

        MenuEstudo.PopulaCarregando($Get(lnkFields.cmbDuracao));
        //Ajax.Tarifario.ListaPorDuracao(idTipoProduto, $Get(lnkFields.txtAnos).value, this.GetAcomodacao(), this.RetornaSelectedText(lnkFields.cmbIdioma), this.RetornaSelectedText(lnkFields.cmbNivelIdioma), this.RetornaSelectedText(lnkFields.cmbTipoCurso), this.RetornaSelectedText(lnkFields.cmbPais), this.RetornaSelectedText(lnkFields.cmbCidade), this.RetornaSelectedTextDataInicio(lnkFields.cmbDataInicio), this.EndPopulaDuracao);
        Ajax.BuscaMapa.RefinamentoFiltroListaPorDuracao(BuscaMapaBox.IdTipoIntercambio, ResultadoBuscaMapa.IdTipoProduto, ResultadoBuscaMapa.IdInstituicao, $Get(lnkFields.txtAnos).value, MenuEstudo.RetornaSelectedTextDataInicio(lnkFields.cmbDataInicio), this.EndPopulaDuracao);
    },

    EndPopulaDuracao: function(ret) {
        ResultadoBuscaMapa.ConfiguracaoBuscaAnterior['DataInicio'] = $('.divFiltro:visible #ctl00_body_lnkFields_cmbDataInicio')[0].value.split('|')[0];
        /*
        if (window.configuracaoCamposBusca && window.configuracaoCamposBusca.length > 0) {
        for (var i = 0; i < window.configuracaoCamposBusca.length; i++) {
        if (window.configuracaoCamposBusca[i]['Campo'] == 'DataInicio')
        window.configuracaoCamposBusca[i]['ValorPadrao'] = $('.divFiltro:visible #ctl00_body_lnkFields_cmbDataInicio')[0].value.split('|')[0];
        }
        }
        */
        ResultadoBuscaMapa.Refinamento.PopulaRetorno(ret, 'Duração', $Get(lnkFields.cmbDuracao), 'Value', 'Key');
    },

    DuracaoOnChange: function() {

    },

    PopulacargaHoraria: function() {
        //Semelhante a: MenuEstudo.PopulacargaHoraria

        MenuEstudo.PopulaCarregando($Get(lnkFields.cmbCarga));
        //Ajax.Tarifario.ListaPorCargaHoraria(idTipoProduto, $Get(lnkFields.txtAnos).value, this.GetAcomodacao(), this.RetornaSelectedText(lnkFields.cmbIdioma), this.RetornaSelectedText(lnkFields.cmbNivelIdioma), this.RetornaSelectedText(lnkFields.cmbTipoCurso), this.RetornaSelectedText(lnkFields.cmbPais), this.RetornaSelectedText(lnkFields.cmbCidade), this.RetornaSelectedTextDataInicio(lnkFields.cmbDataInicio), this.RetornaSelectedText(lnkFields.cmbDuracao), this.EndPopulacargaHoraria);
        Ajax.BuscaMapa.RefinamentoFiltroListaPorCargaHoraria(BuscaMapaBox.IdTipoIntercambio, ResultadoBuscaMapa.IdTipoProduto, ResultadoBuscaMapa.IdInstituicao, $Get(lnkFields.txtAnos).value, MenuEstudo.RetornaSelectedTextDataInicio(lnkFields.cmbDataInicio), MenuEstudo.RetornaSelectedText(lnkFields.cmbDuracao), this.EndPopulacargaHoraria);
    },

    EndPopulacargaHoraria: function(ret) {
        ResultadoBuscaMapa.ConfiguracaoBuscaAnterior['Duracao'] = $('.divFiltro:visible #ctl00_body_lnkFields_cmbDuracao')[0].value.split('|')[0];
        /*
        if (window.configuracaoCamposBusca && window.configuracaoCamposBusca.length > 0) {
        for (var i = 0; i < window.configuracaoCamposBusca.length; i++) {
        if (window.configuracaoCamposBusca[i]['Campo'] == 'Duracao')
        window.configuracaoCamposBusca[i]['ValorPadrao'] = $('.divFiltro:visible #ctl00_body_lnkFields_cmbDuracao')[0].value.split('|')[0];
        }
        }
        */
        ResultadoBuscaMapa.Refinamento.PopulaRetorno(ret, 'Carga horária', $Get(lnkFields.cmbCarga), 'Value', 'Key')
        BuscarFiltro();
    },

    CargaHorariaOnChange: function() {
        ResultadoBuscaMapa.ConfiguracaoBuscaAnterior['CargaHoraria'] = $('.divFiltro:visible #ctl00_body_lnkFields_cmbCarga')[0].value.split('|')[0];
        /*
        if (window.configuracaoCamposBusca && window.configuracaoCamposBusca.length > 0) {
        for (var i = 0; i < window.configuracaoCamposBusca.length; i++) {
        if (window.configuracaoCamposBusca[i]['Campo'] == 'CargaHoraria')
        window.configuracaoCamposBusca[i]['ValorPadrao'] = $('.divFiltro:visible #ctl00_body_lnkFields_cmbCarga')[0].value.split('|')[0];
        }
        }
        */
    },
    PopulaAcomodacao: function(field) {
        //window.alert('PopulaAcomodacao()');


        var config = this.ObtemConfiguracaoField(field);
        if (config != null && config.ValorPadrao != '') //Se tem valor padrão, preenche
        {
            var radioSim = $Get(field.id + '0');
            var radioNao = $Get(field.id + '1');
            var radioSelecionado = (config.ValorPadrao == 'SIM' ? radioSim : radioNao);
            radioSelecionado.checked = true;
            radioSelecionado.OnRadioClick = field.fieldSet.OnRadioClick;
            radioSelecionado.OnRadioClick();
        }
    },
    PopulaRetorno: function(ret, titulo, objeto, texto, valor) {
        //window.alert('PopulaRetorno()');
        var itemPadrao = null;
        var defaultExisteLista = false;

        var config = this.ObtemConfiguracaoField(objeto);
        var ultimovalor = this.ObtemConfiguracaoUltimaBuscaField(objeto);

        if (!ultimovalor && config != null && config.ValorPadrao != '') {
            for (var i = 0; i < ret.length; i++) {
                if (ret[i][texto] == config.ValorPadrao) //Valor padrão já está na lista de retorno
                {
                    defaultExisteLista = true;
                    break;
                }
            }

            if (!defaultExisteLista) {
                //Adiciona valor padrão
                itemPadrao = {};
                itemPadrao[texto] = config.ValorPadrao;
                itemPadrao[valor] = this.VALOR_DEFAULT_COMBO;
                ret.unshift(itemPadrao);
            }
        }
        //Oculta campo no Refinamento da Busca, que tem alteração de tipo de produto no client e não no server
        if (!config.Mostrar) {
            objeto.style.display = 'none';
        }

        if (ret.Count() > 0) {
            objeto.disabled = false;
            objeto.DataBind(ret, texto, valor);

            ResultadoBuscaMapa.Refinamento.VerificaPopulaRetorno(ret, titulo, objeto);

            var valorSelecionar = '';
            if (ultimovalor) {
                valorSelecionar = ultimovalor;
            }
            else if (config != null) {
                if (config.ValorPadrao != null && config.ValorPadrao != '') {
                    //Seleciona o valor padrão
                    valorSelecionar = config.ValorPadrao;
                }
            }

            //Seleciona o valor padrão
            if (valorSelecionar != '') {
                for (var j = 0; j < objeto.options.length; j++) {
                    if (objeto.options[j].text == valorSelecionar) {
                        objeto.selectedIndex = j;
                        break;
                    }
                }
            }

            objeto.onchange();
            return true;
        }
        else {
            objeto.disabled = true;
            alert(String.Format('Não há dados para: {0}', titulo))
            return false;
        }
    },
    VerificaPopulaRetorno: function(ret, titulo, combo) {
        combo.AddAt(0, titulo, '');
        if (ret.Count() == 1)
            combo.options.selectedIndex = 1;
        else
            combo.options.selectedIndex = 0;
    },
    ObtemConfiguracaoUltimaBuscaField: function(field) {
        //console.log(field);
        if (lnkFields.rdbAcomodacao == field.id)
            return ResultadoBuscaMapa.ConfiguracaoBuscaAnterior['Acomodacao'];
        else if (lnkFields.txtAnos == field.id)
            return ResultadoBuscaMapa.ConfiguracaoBuscaAnterior['Idade'];
        else if (lnkFields.cmbDataInicio == field.id)
            return ResultadoBuscaMapa.ConfiguracaoBuscaAnterior['DataInicio'];
        else if (lnkFields.cmbDuracao == field.id)
            return ResultadoBuscaMapa.ConfiguracaoBuscaAnterior['Duracao'];
        else if (lnkFields.cmbCarga == field.id)
            return ResultadoBuscaMapa.ConfiguracaoBuscaAnterior['CargaHoraria'];
        else if (lnkFields.cmbAcomodacao == field.id)
            return ResultadoBuscaMapa.ConfiguracaoBuscaAnterior['TipoAcomodacao'];
    },
    ObtemConfiguracaoField: function(field) {
        var item;
        if (window.configuracaoCamposBusca && window.configuracaoCamposBusca.length > 0) {
            for (var i = 0; i < window.configuracaoCamposBusca.length; i++) {
                item = window.configuracaoCamposBusca[i];

                if (lnkFields.rdbAcomodacao == field.id && item.Campo == 'Acomodacao')
                    return item;
                else if (lnkFields.txtAnos == field.id && item.Campo == 'Idade')
                    return item;
                else if (lnkFields.cmbDataInicio == field.id && item.Campo == 'DataInicio')
                    return item;
                else if (lnkFields.cmbDuracao == field.id && item.Campo == 'Duracao')
                    return item;
                else if (lnkFields.cmbCarga == field.id && item.Campo == 'CargaHoraria')
                    return item;
                else if (lnkFields.cmbAcomodacao == field.id && item.Campo == 'TipoAcomodacao')
                    return item;
            }
        }
        return null;
    },
    //ensino médio
    PopulaDuracaoEM: function() {
        MenuEstudo.PopulaCarregando($Get(lnkFieldsEM.cmbDuracaoEM));
        Ajax.Duracao.ListMapa('-1', $Get('ctl00_body_lnkFieldsEM_cmbCidadeEM').SelectedValue(), idTipoProduto, ResultadoBuscaMapa.IdPais, this.EndPopulaDuracaoEM);
    },

    EndPopulaDuracaoEM: function(ret) {
        MenuEstudo.PopulaRetornoEM(ret, 'Duração', $Get('ctl00_body_lnkFieldsEM_cmbDuracaoEM'), 'Descricao', 'IdDuracao')
        $Get('ctl00_body_lnkFieldsEM_cmbDuracaoEM').AddAt(1, 'Indiferente', '-1');
    },

    PopulaAcomodacaoEM: function() {
        MenuEstudo.PopulaCarregando($Get('ctl00_body_lnkFieldsEM_cmbAcomodacaoEM'));
        Ajax.TipoAcomodacao.ListMapa('-1', $Get('ctl00_body_lnkFieldsEM_cmbCidadeEM').SelectedValue(), $Get('ctl00_body_lnkFieldsEM_cmbDuracaoEM').SelectedValue(), $Get('ctl00_body_lnkFieldsEM_cmbDataInicioEM').SelectedValue(), idTipoProduto, ResultadoBuscaMapa.IdPais, this.EndPopulaAcomodacaoEM);
    },

    EndPopulaAcomodacaoEM: function(ret) {
        MenuEstudo.PopulaRetornoEM(ret, 'Tipo de acomodação', $Get('ctl00_body_lnkFieldsEM_cmbAcomodacaoEM'), 'Nome', 'IdTipoAcomodacao')
        $Get('ctl00_body_lnkFieldsEM_cmbAcomodacaoEM').AddAt(1, 'Indiferente', '-1');
    },

    BuscaEM: function() {
        if (this.ValidaEM() == false)
            return false;
        Ajax.BuscaMapa.BuscaEstudoEnsinoMedio('-1', this.RetornaSelectedValue('ctl00_body_lnkFieldsEM_cmbCidadeEM'), this.RetornaSelectedValue('ctl00_body_lnkFieldsEM_cmbDuracaoEM'), this.RetornaSelectedValue('ctl00_body_lnkFieldsEM_cmbDataInicioEM'), this.RetornaSelectedValue('ctl00_body_lnkFieldsEM_cmbAcomodacaoEM'), ResultadoBuscaMapa.IdTipoProduto, ResultadoBuscaMapa.Ordenacao, ResultadoBuscaMapa.IdPais, ResultadoBuscaMapa.End_BuscaProdutosMapa);
    },

    ValidaEM: function() {
        if (this.RetornaSelectedText('ctl00_body_lnkFieldsEM_cmbCidadeEM') == "") {
            alert('Campo Cidade obrigatório');
            return false;
        }
        if (this.RetornaSelectedText('ctl00_body_lnkFieldsEM_cmbDuracaoEM') == "") {
            alert('Campo Duracao obrigatório');
            return false;
        }
        if (this.RetornaSelectedText('ctl00_body_lnkFieldsEM_cmbDataInicioEM') == "") {
            alert('Campo Data de inicio obrigatório');
            return false;
        }

        if (this.RetornaSelectedText('ctl00_body_lnkFieldsEM_cmbAcomodacaoEM') == "") {
            alert('Campo tipo de acomodação obrigatório');
            return false;
        }
        return true;
    },
    RetornaSelectedText: function(id) {
        var objeto = $Get(id);

        if (objeto == null)
            return "";
        if (objeto.selectedIndex == 0)
            return "";
        if (objeto.value == this.VALOR_DEFAULT_COMBO)
            return "";

        return objeto.SelectedText();
    },
    RetornaSelectedValue: function(id) {
        var objeto = $Get(id);

        if (objeto == null)
            return "";
        if (objeto.selectedIndex == 0)
            return "";

        var array = objeto.value.split(this.SEPARADOR_VALUE_STOP);
        if (array.length > 0)
            return array[0];

        return objeto.value;
    }
}

