//Namespace que guarda variaveis necessarias para combobox relacionadas com as selecções do filtro categoria
//ex. Se selecionar restaurantes a combo de tipo de cozinha fica visivel, etc. Estes dados são preenchidos por server side 
$.ListagensPois = {
	//Chaves da combo de categoria que activam o mostrar de outras combobox da pesquisa avançada
	keysCategoria : '',
	//Dicionario com chave e id da combo. TODO poderá ser usado só este e deixar de se usar o de cima com algumas alterações...
	keysCategoriaDict : ''
}

//Esconde todos os controlos de pesquisa avançada que são dinamicos (relacionados com a combo categoria) só se estiverem na area da pesquisa avançada
var HidePesquisaCombos = function() {
		//Mover o controlo para o local original que é dentro de uma div escondida, caso não esteja já lá
		if ($('.barra-pesquisa-avancada > .InjectarControlos').length) {
			var placeHolder = $('.TmpControlos');
			var dropDowns = $('.select-box-personalizada_Dynamic');
			dropDowns.each(function () {
				if($(this).parent().attr('class') != 'TmpControlos') {
					placeHolder.append($(this));
					//Como moveu o controlo para a área e está num update panel, tem de aplicar o plugin de combo de novo
					//return false; Agora pode ter mais que 1 controlo associado por isso nao pode retornar false
				}
			});
		}
}

//Aplica o plugin para as combobox para melhorar o design...
var DrawnPesquisaCombos = function() {
	//OS SEGUINTES SCRIPT PERSONALIZAM AS COMBOBOX DE SISTEMA
    if ($('.barra-pesquisa-avancada').length) {											//COMBOBOX PRESENTES NA PESQUISA AVANCADA
        $('select.pesquisa-avancada-combobox').selectmenu({
            menuWidth: 148,
            maxHeight: 200
        });
        $('select.barra-pesquisa-avancada-botao-filtro').selectmenu({
            menuWidth: 197,
            maxHeight: 200
        });
		//Caso a comboCategoria tenha um seleccionado diferente de 0 (default) entao verificar se tem de mostrar alguma combo dinamica
		var comboCategoria = $(".barra-pesquisa-avancada > .barra-pesquisa-avancada-filtro > .barra-pesquisa-avancada-botao-filtro");
		if(comboCategoria.val() != '0' ) {
			ComboCategoriaRelatedCombos(comboCategoria.val());
		}
		else{
			HidePesquisaCombos();
		}
    };
}

/*Recebe um parametro que é a chave seleccionada na combo de categoria e com base nessa informação verifica se tem de mostrar alguma combo adicional
ex: Tipo de cozinha, Tipo de musica, etc. Se for esse o caso então mostra a respectiva combo, essa parte é feita movendo o controlo para a área
respectiva da pesquisa avançada*/
var ComboCategoriaRelatedCombos = function(selectedKey){
	HidePesquisaCombos();
	if($.ListagensPois.keysCategoria.length && $.inArray(selectedKey, $.ListagensPois.keysCategoria) > -1){
		//TODO melhorar isto para um lookup em vez de um foreach
		var aux1 = 0, aux2 = 0, aux3 = 0;
		$.each($.ListagensPois.keysCategoriaDict, function(index, value) { 
			if(value['key'] == selectedKey) { 
				/*Tem de mover o controlo para o local caso exista porque está dividido em 3 colunas, se todas 
				tiverem o mesmo numero de elementos entao vai para a primeira senao vai para a que tiver menos elementos*/
				var controlo = $('#'+value['value']).parent();
				var cols1e2 = $('.barra-pesquisa-avancada > .InjectarControlos > .barra-pesquisa-avancada-painel-coluna');
				var col1 = cols1e2.eq(0).children('.select-box-personalizada');
				var col2 = cols1e2.eq(1).children('.select-box-personalizada');
				var col3Container = $('.barra-pesquisa-avancada > .InjectarControlos > .barra-pesquisa-avancada-painel-coluna-ultima');
				var col3 = col3Container.children('.select-box-personalizada');
				if(col1.length + aux1 == col2.length +aux2 && col1.length + aux1 == col3.length + aux3){
					cols1e2.eq(0).children('.select-box-personalizada:last').append(controlo); aux1++;
				}
				else if(col3.length + aux3 < col2.length + aux2){
					col3Container.children('.select-box-personalizada:last').append(controlo); aux3++;
				}
				else{
					cols1e2.eq(1).children('.select-box-personalizada:last').append(controlo); aux2++;
				}
				//Verificar se tem items selecionados que não o primeiro e mudar a cor (Para os postbacks do updatepanel)
				var cb = controlo.children('select');
				if(cb[0].selectedIndex > 0) {
					cb.next().children('span').addClass('ui-state-active');
				}
				//Agora tem de subscrever o evento change para na selecção mudar a cor..
				cb.change(function(e) {
					$(this).next().children('span').removeClass('ui-state-active');
					if(this.selectedIndex > 0) {
						$(this).next().children('span').addClass('ui-state-active');
					}
				});
				//return false; Não pode ter isto porque pode ter maisa que 1 campo
			}
		});					
	}
}


$(document).ready(function () {

	/*RS. Mover os controlos de pesquisa avançada na listagem de POIs para dentro da area de pesquisa avançada. É necessário porque são controlos dinâmicos e tem de ficar agrupados em 3 colunas.
	Só são movidas as combobox estáticas, as dinamicas são movidas quando se seleciona algo relacionado na combo de categoria.
	Alterar a class css das combobox para quando estiver um item selecionado mudar a cor do mesmo
	*/
    if ($('.barra-pesquisa-avancada > .InjectarControlos').length) {
        var dropDowns = $('.TmpControlos > .select-box-personalizada');
        var col1 = $('<div class="barra-pesquisa-avancada-painel-coluna">');
        var col2 = $('<div class="barra-pesquisa-avancada-painel-coluna">');
        var col3 = $('<div class="barra-pesquisa-avancada-painel-coluna-ultima">');
        var conta = 1;
        dropDowns.each(function () {
            if (conta == 1)
                col1.append($(this));
            else if (conta == 2)
                col2.append($(this));
            else
                col3.append($(this));
            conta++;
           if (conta == 4)
                conta = 1;
        });
        $('.barra-pesquisa-avancada > .InjectarControlos').prepend(col3);
        $('.barra-pesquisa-avancada > .InjectarControlos').prepend(col2);
        $('.barra-pesquisa-avancada > .InjectarControlos').prepend(col1);
        //Nas checkbox colocar class "ultimo" na ultima checkbox é feito aqui porque também é dinamico (para ja nao tem impacto)
    }
	
	//Aplicar plugin para transformar as combobox
	DrawnPesquisaCombos();
	
	//Subscrever eventos nas combobox estáticas para mudar a cor na seleccção.Tem de ser aqui após desenhar as combos.
	if ($('.barra-pesquisa-avancada > .InjectarControlos').length) {
        var dropDowns = $('.select-box-personalizada');
        dropDowns.each(function () {
			//Alterar css das combobox quando muda e escolhe algo (indice 0 é não selecionado)
			var cb = $(this).children('select');
			if(cb.length){
				//Verificar se tem items selecionados que não o primeiro
				if(cb[0].selectedIndex > 0) {
					//Aqui não funciona TODO
					cb.next().children('span').addClass('ui-state-active');
				}
				//subscrever evento change para alterar a cor
				cb.change(function(e) {
					$(this).next().children('span').removeClass('ui-state-active');
					if(this.selectedIndex > 0) {
						$(this).next().children('span').addClass('ui-state-active');
					}
				});
			}
        });
    }
	
	
	//RS Nas listagens de pois a pesquisa por categoria quando se altera, deve actualizar a selecção do menu principal
    if ($(".modulo-pesquisa-avancada > [id*=hdnPesquisaCategoriaMenu]").length || $("#hdnPesquisaChangeBreadcrumb").length){
		//Guarda o texto actual do breadcrumb em variável
		$.DefaultListTitle = "";
		if($('[id*=hdnDefaultTitle]').length > 0)
			$.DefaultListTitle = $('[id*=hdnDefaultTitle]').val();
		var comboCategoria = $(".barra-pesquisa-avancada > .barra-pesquisa-avancada-filtro > .barra-pesquisa-avancada-botao-filtro");
		if($(".modulo-pesquisa-avancada > [id*=hdnPesquisaCategoriaMenu]").val() == '1' || $("#hdnPesquisaChangeBreadcrumb").length) {
			comboCategoria.change(function () {
				var textSelected = $(".barra-pesquisa-avancada > .barra-pesquisa-avancada-filtro > .barra-pesquisa-avancada-botao-filtro option:selected").text();
				if($(".modulo-pesquisa-avancada > [id*=hdnPesquisaCategoriaMenu]").val() == '1') {
					if($('.modulo-menu-transversal .sub-menu').length){
						var itemActual = $('.modulo-menu-transversal .sub-menu .activo');
						var newItem;
						if(itemActual.length) {
							itemActual.removeClass('activo');
							newItem = itemActual.parent().parent().find("span:contains('" + textSelected + "')");
						}
						else{
							newItem = $('.modulo-menu-transversal .sub-menu').find("span:contains('" + textSelected + "')");
						}
						newItem.parent().addClass('activo');
					}
					else if($('.modulo-links-directos').length){
						var itemActual = $('.modulo-links-directos > .activo');
						var newItem;
						if(itemActual.length) {
							itemActual.removeClass('activo');
							newItem = itemActual.parent().find("span:contains('" + textSelected + "')");
						}
						else{
							newItem = $('.modulo-links-directos').find("span:contains('" + textSelected + "')");
						}
						newItem.parent().addClass('activo');
					}
				}
				//Agora tem de alterar o headmenu e o breadcrumb
				if(this.selectedIndex == 0 && $("#hdnPesquisaChangeBreadcrumb").val() != '0')
					textSelected = $.DefaultListTitle;
				if($('.titulo-pagina').length > 0)
					$('.titulo-pagina').children().eq(0).text(textSelected);
				if($('.caminho-actual').length > 0)
					$('.caminho-actual').text(textSelected);
			});
		}
    }

	 //Nas listagens verticais de pois verificar se a imagem existe, se não existir então esconde. NOTA Isto obriga a aviso de segurança no browser
    //No cliente isto dá erro de access denied por isso comenta-se para já
    //    if ($('.listagem-hoteis > .listagem-hoteis-item > .coluna_imagem > img').length) {
    //        $('.listagem-hoteis > .listagem-hoteis-item > .coluna_imagem > img').each(function () {
    //            var imgContainer = $(this).parent();
    //            var imgUrl = $(this).attr('src');
    //            $.ajax(
    //			{ url: imgUrl,
    //			    type: 'HEAD',
    //			    error: function (jqXHR, textStatus, errorThrown) {
    //			        imgContainer.hide();
    //			    }
    //			});
    //        });
    //    }
	
	//MODULO "PESQUISA AVANCADA" PRESENTE NAS PAGINAS INTERIORES
    if ($('.barra-pesquisa-avancada').length) {											//SE EXISTIR O MODULO										
        $('.barra-pesquisa-avancada-painel').hide(); 								//ESCONDE O PAINEL INTERIOR EXISTENTE NO INTERIOR DO MODULO
        $('.barra-pesquisa-avancada-botoes').hide(); 								//ESCONDE OS BOTOES DA PESQUISA (PESQUISAR E CANCELAR)

        $('.barra-pesquisa-avancada-botao-painel').click(function () { 					//AO CLICAR NO BOTAO "PESQUISA AVANCADA"
            if ($(this).hasClass('aberto')) {											//VERIFICA SE JA ESTÁ ABERTO SE JÁ ESTIVER
                $('.barra-pesquisa-avancada-botoes').slideUp('slow'); 				//FECHA AS OPCAO DE PESQUISA AVANCADA E 
                $('.barra-pesquisa-avancada-painel').slideUp('slow'); 				//FECHA OS BOTOES DA PESQUISA (PESQUISAR E CANCELAR)
                $(this).removeClass('aberto'); 										//RETIRA A CLASS "ABERTO"
                //Neste caso deve também limpar as opções e executar uma nova pesquisa, obriga a um postback .net
                //encontrar o js para postback e siga....
                eval($('.barra-pesquisa-avancada-botoes .formulario-cancelar').attr("href"));
            } else {																	//SE ESTIVER FECHADO
                $('.barra-pesquisa-avancada-painel').slideDown('slow'); 				//ABRE AS OPCOES DE PESQUISA AVANCADA E
                $('.barra-pesquisa-avancada-botoes').slideDown('slow'); 				//MOSTRA OS BOTOES DA PESQUISA (PESQUISAR E CANCELAR)
                $(this).addClass('aberto'); 											//COLOCA A CLASS ACTIVO			
            }
            return false; 															//PREVINE O CLICK DO <A HREF>
        });
        $('.barra-pesquisa-avancada-botoes .formulario-cancelar').click(function () {		//AO CLICAR NO BOTAO CANCELAR
            $('.barra-pesquisa-avancada-botoes').slideUp('slow'); 					//FECHA OS BOTOES DA PESQUISA E
            $('.barra-pesquisa-avancada-painel').slideUp('slow'); 					//FECHA AS OPCOES DA PESQUISA AVANCADA 
            $('.barra-pesquisa-avancada-botao-painel').removeClass('aberto');         //RETIRA A CLASS "ABERTO"
        });
    };
	
});



