/*!
 * site lisboa v1.0.0 (https://www.lisboa.pt)
 * Copyright 2017-2019 Jose Fernandes
 * Licensed under the GPL-2.0-or-later license
 */

$(document).ready(function() {		
// hambúrguer do menu principal troca de estado (background-color etc.);
	$(function buttonMenuChange(){
		$('.navbar-toggler, #navheader .icon-search').on('click', function(){
			$('body.backendlayout-home_start #navheader, body[class^="lx-theme-"] #navheader').toggleClass('menu-click'),
			$('.navbar-toggler').toggleClass('menu-click')
		});
	});
// Clicar fora do menu e do hambúrguer e do ícone de pesquisa fecha o menu;	
	$(function menuClickOutsideClose(){
		$('html').click(function(event) {
			if ($(event.target).closest('.navbar-toggler, #navheader .icon-search, #mainnavigation').length === 0) {
				$('#mainnavigation').removeClass('show'),
				$('body.backendlayout-home_start #navheader, body[class^="lx-theme-"] #navheader').removeClass('menu-click'),
				$('#navheader .navbar-toggler').addClass('collapsed'),
				$('.navbar-toggler').removeClass('menu-click')
			}
		});
	});
	
// Navegação que expande carregando nos botões + - ;
	$(function expandMenuPlusMinus(){	
		$('.btn-plus-minus-anime' && '[data-toggle=collapse-next]').click(function(){	
			// expande o menu que é seu irmão;
			$(this).siblings('.collapse').toggleClass('show');
			// togla o ícone do próprio objecto para + ou - ;
			$(this).toggleClass('collapsed');
			// todos os botões que não este...;
			$('.btn-plus-minus-anime').not(this).each(function(){										
				if ($(this).siblings('.collapse').hasClass('show')) {
					$(this).siblings('.collapse').removeClass('show');
					$(this).addClass('collapsed');
				}
			})
		});
		// a página faz load e se o segundo nível estiver ativo..;
		if ($('li.level2.current').is(".active")) {
			$('.nav-subleft li.level1.active #level2').addClass('show');
			$('.nav-subleft li.level1.active .btn-plus-minus-anime').removeClass('collapsed');
		}
	});


	
// FILTROS 
// clica no BOTÃO e mostra caixa de filtros		
	$('.js-show-content').click(function() {
		$('.js-content-shown').toggle();
	});

	$('.js-show-content-mob').click(function() {
		$('.js-content-shown-mob').toggle();	
		$('.js-show-content-mob').toggleClass('active');
	});

// Filtros aparecerem SEMPRE em desktop mesmo quando fazes o resize da janela e eles se escondem em mobile
	$(window).resize(function(){
		if ($(window).width() > 767) {
			$(".js-content-shown-mob").css("display","block");
		}
	});
	
	// Locais/Agenda Mapa maior que o container 
	if($('.col-filter-map').offset() !== undefined) {
		$(document).ready(setHRs);
		$(window).resize(setHRs);
		function setHRs() {
			var w = $(window).width() - $('.col-filter-map').offset().left;
			$('#map_canvas.map-h100').width(w); 
			$('#googleMap.map-h100').width(w);  	
		}
	}
	

// BOTÃO ativo quando algum filtro está seleccionado 
// http://jsfiddle.net/nasxLpaL/4/
	$(".filters-group").on("change", function () {
		var selected = $('option[value="0"]:selected');
		var selectTotal = $('.select-costum').length;
		if (selected.length == selectTotal) {
			$(".btn-filter").removeClass("active");
		} else {
			$(".btn-filter").addClass("active");
		}
	});

//*********** Imagem interativa 
//** ex: https://informacoeseservicos.lisboa.pt/reforco-sismico/guia-de-boas-praticas
//** Colocar no backoffice as imagens sequencialmente numa div
//** Dar à div mãe a class img-interact
//** Colocar o HTML para os pins <ul class="interactive-pins"><a><li class="pin-interact">
//** e para as legendas <span>legenda</span></li></a></ul>
//***********

(function interactiveImage () {
var imgs = [];
imgs  = document.querySelectorAll(".img-interact .frame:not(:first-child)");
var pin = [];
pin  = document.querySelectorAll(".interactive-pins li");
var legend = [];
legend  = document.querySelectorAll(".interactive-pins li span");
var navLinks = [];
navLinks  = document.querySelectorAll(".nav-sidebar li:nth-child(2) #level2 li");

//adicionar ids e data-img ao HTML
for(let i=0; i < imgs.length; i++){
	{ 
	var imgdiv = "imgdiv";
	$(imgs[i]).attr("id",imgdiv+i);
	$(pin[i]).attr("data-img",imgdiv+i);
	$(navLinks[i]).attr("data-img",imgdiv+i);
	}
	//animação pins e legendas
	$(pin[i]).on('mouseover mouseout', function () {
		  $(legend[i]).stop().animate({
			 opacity: 'toggle', left: '34px',
			});
		  $(pin).not(this).stop().fadeToggle(500);
	});
}
//interacção menu imagens
$(".nav-sidebar").on("mouseover mouseout", "li.active ul.show li", function () {
    $("#" + $(this).data("img")).toggle();	
	$(".interactive-pins").toggle();
	$(".img-interact .frame:first-child").toggle();	
});


//interacção pins imagens
$(".interactive-pins").on("mouseover mouseout", "li", function () {
    $("#" + $(this).data("img")).toggle();
	$(".img-interact .frame:first-child").toggle();
});

//evitar primeiro toque no link (mobile)
if ('ontouchstart' in window) {
    $(".interactive-pins a").one("click", function(e) {
        e.preventDefault();
    });
}	  
})();

//***********************	
	
	/**
	*   PopUp para mostrar conteudo de outra página no seu interior
	*/
	$('.open-modal').on('click', function(e){
		e.preventDefault();
		const path = '/typo3conf/ext/site_lisboa/Resources/Public/JavaScript/Dist/modal.js';
		$.getScript(path).done(function(){
			var alvo = e.target.href;
			window.alvo = alvo;
		});
	});

	
	
	/** 
	*  Locais de Interesse - Homepage  (inicio) e, agora (nov 2019) tbm, no Visitar/explorar
	*/
	var dominioG = window.location.href; 
	if(dominioG === 'https://www.lisboa.pt/' || dominioG === 'https://www.lisboa.pt/en/' || dominioG === 'https://www.lisboa.pt/fr/'
		|| $('#c3679').length ){ // só executar na homepage e no visitar
		var teste_en,
			teste_fr,
			lingua = 0, // por defeito => tuga
			FICHEIRO_CONFIG = 'typo3conf/ext/dmc_ttaddress_espacos/espacos-config.json',
			DOMINIO_ESPACO = 'https://visitar.lisboa.pt/explorar/locais-de-interesse/',
			DOMINIO_ESPACO_FR = 'https://www.lisboa.pt/fr/la-ville/lieux-dinteret/',
			DOMINIO_ESPACO_EN = 'https://www.lisboa.pt/en/city/places-of-interest/',
			urlG, subPath,
			uidNoEspacosG,
			uidNoTemasDaCidade,
			storageIdG,
			sub_url_evento,
			PAGEDESTAQUE = 56;
		
		// vamos determinar língua e "corrigir" URL para JSON de configuração
		teste_en = /\/en\//;
		if(teste_en.test(dominioG)) {
			lingua = 1;
			dominioG = dominioG.substring( 0, dominioG.indexOf( "en/" ) );
		}
		teste_fr = /\/fr\//;
		if(teste_fr.test(dominioG)) {
			lingua = 2;
			dominioG = dominioG.substring( 0, dominioG.indexOf( "fr/" ) );
		}
		
		// chamar o serviço que disponibiliza os Destaques antecedido do pedido de dados da configuração da extensão
		//urlG = dominioG + FICHEIRO_CONFIG; // dominioG + '/' + FICHEIRO_CONFIG;
		subPath = window.location.protocol + '//' + window.location.hostname + '/'
		urlG = subPath + FICHEIRO_CONFIG;
		$.getJSON(urlG,  function(resp) {
			uidNoEspacosG  = resp.uidNoEspacos;
			uidNoTemasDaCidade = resp.uidNoTemasDaCidade;
			storageIdG     = resp.storageId;
			sub_url_evento = resp.sub_url_evento;
			//urlG = dominioG + 'typo3conf/ext/dmc_ttaddress_espacos/Resources/Public/Utility/destaques/' + uidNoEspacosG + '/' + storageIdG + '/' + lingua + '/0/' + PAGEDESTAQUE + '/0/20'; 
			urlG = subPath + 'typo3conf/ext/dmc_ttaddress_espacos/Resources/Public/Utility/destaques/' + uidNoEspacosG + '/' + storageIdG + '/' + lingua + '/0/' + PAGEDESTAQUE + '/0/20'; 
			
			$.getJSON(urlG,  function(response) {
				if(response.status == 200 && response.total > 0) {
					// vamos pôr só dois espaços ao acaso
					var results = response.data
						.sort(function() { return .5 - Math.random() }) // Shuffle array
						.slice(0, 2); // Get first 2 items
					//console.log(results);

					var html = '', htmlEl = '', htmlEvento = '', link_evt, lk2 = '', foto;
					
					html += '<div class="frame-container">';
					html += '<div class="frame-inner">';
					html += ' <div class="card-text-img text-over-img double">';
					html += '  <div id="espacosHP" class="card-group-element card-group-element-align-left card-group-element-columns-2">';
					html += '  </div>';
					html += ' </div>';
					html += '</div>';
					html += '</div>';
			
					if( $('#c1075').length ) $('#c1075').append(html);
					if( $('#c3679').length ) $('#c3679').append(html);
					
					results.forEach(function(element){		
						//var urlA = dominioG + 'typo3conf/ext/dmc_ttaddress_espacos/Resources/Public/Utility/eventos/' + element.uid + '/' + storageIdG + '/' + uidNoTemasDaCidade;
						var urlA = subPath + 'typo3conf/ext/dmc_ttaddress_espacos/Resources/Public/Utility/eventos/' + element.uid + '/' + storageIdG + '/' + uidNoTemasDaCidade;						
						$.getJSON(urlA,  function(eventos) {
							switch(lingua) {
								case 1:
									lk2 += DOMINIO_ESPACO_EN;
									break;
								case 2:
									lk2 += DOMINIO_ESPACO_FR;
									break;
								default:
									lk2 += DOMINIO_ESPACO;
							}
							
							if(element.realurl === 'n.d.'){
								//lk2 += DOMINIO_ESPACO;
								lk2 += '?tx_dmcttaddressespacos_espacosplugin%5Baddress%5D=' + element.uid;
								lk2 += '&tx_dmcttaddressespacos_espacosplugin%5Baction%5D=show';
								//lk2 += '&tx_dmcttaddressespacos_espacosplugin%5Bcontroller%5D=Address';
							}else{
								lk2 += element.realurl;
							}
	
							if(element.fotos.length>0){
								if(element.fotos[0].substr(0,4) == 'file'){  
									foto = '/' + element.fotos[0];
								}else if(element.fotos[0].substr(0,5) == '/user') {
									foto = '/fileadmin/espacos/user_upload' + element.fotos[0].substring(element.fotos[0].lastIndexOf('/'), element.fotos[0].length);
								}else{   // esta não vêm do lxi
									foto = '/fileadmin/espacos/imagens' + element.fotos[0].substring(element.fotos[0].lastIndexOf('/'), element.fotos[0].length);
								}
							}
							
							htmlEl += '<div class="card-group-element-item">';
							htmlEl += '  <div class="card card-nested-links">';
							htmlEl += '    <a href="'+ lk2 +'" title="local de interesse" target="_blank"></a>';
							htmlEl += '    <div>';
							htmlEl += '      <div class="card-img"><img alt="" src="' + foto +'" /></div>';
							htmlEl += '      <div class="card-body">';
							htmlEl += '        <div>';
                            htmlEl += '          <h3>' + element.name + '</h3>';
							if(eventos.total > 0) {
								for(var j=0, len = sub_url_evento.length; j < len; j++){
									if(sub_url_evento[j].L == lingua && sub_url_evento[j].pid == eventos.data[0].pid){
										if( eventos.data[0].url_amigavel == 'n.d.' ) {
											var data_inicio = new Date(eventos.data[0].inicio);
											//var sub = sub_url_evento[j].path;
											//link_evt = dominioG + sub.substring(1, sub.length);
											link_evt = 'https://lisboa.pt/agenda/o-que-fazer/detalhe';
											link_evt += '?tx_cal_controller%5Bview%5D=event';
											link_evt += '&tx_cal_controller%5Btype%5D=tx_cal_phpicalendar';
											link_evt += '&tx_cal_controller%5Buid%5D=' + eventos.data[0].cal_uid; 
											link_evt += '&tx_cal_controller%5Byear%5D=' + data_inicio.getFullYear();
											link_evt += '&tx_cal_controller%5Bmonth%5D=' + parseInt(data_inicio.getMonth()+1);
											link_evt += '&tx_cal_controller%5Bday%5D=' + data_inicio.getDate();
										}else{
											//console.log(sub_url_evento[j].path);
											//console.log(eventos.data[0].url_amigavel);
											// link_evt =  'https://' + sub_url_evento[j].path + eventos.data[0].url_amigavel;  OLD
											
											link_evt =  'https://';
											arrAC = eventos.data[0].all_categories;
							
											if( sub_url_evento[j].pid == 48 ){
												if(arrAC.indexOf('633') > -1) { // 633 é o uid da categoria "Consulta Publica"
													link_evt += sub_url_evento[j].path;
												}else{
													// let arrD = sub_url_evento.filter(data => (data.L == lingua) && data.xxx == 'ag_municipio');
													// IE11 doesn't support arrow functions, por isso:
													var arrD =  sub_url_evento.filter(function(data){return data.L == lingua  && data.xxx == 'ag_municipio'});
													link_evt += arrD[0].path;
												}
											}else{
												link_evt += sub_url_evento[j].path;
											}
											
											link_evt += eventos.data[0].url_amigavel;
										}
										//htmlEvento =
										htmlEl += '<span class="icon-calendar-full"></span><a class="event" href="'+ link_evt +'" title="evento">'+ eventos.data[0].title +'</a>';
									}
								}
							}
							/*if( htmlEvento.length > 0 ) { 
								htmlEl += htmlEvento;
							}*/
							htmlEl += '     </div>';
							htmlEl += '        </div>';
							htmlEl += '      </div>';
							htmlEl += '  </div>';
							htmlEl += '</div>';			
					//console.log(htmlEl);		
							$('#espacosHP').append(htmlEl);
							
							htmlEl = '';
							htmlEvento = '';
							lk2 = '';
							link_evt = '';
						});
					});					
				}
			});		
		});
	}
	/* Locais de Interesse - Homepage  (fim) */
	
	
	/**
	*  Áreas inside "Cidade"
	*  esconder blocos da agenda e notícias no caso de não existir informação para mostrar 
	*/
	// para as "Últimas notícias"
	if ($(".no-news-found").length > 0){ 
		$(".no-news-found").closest('div.frame').hide();  //$(this).closest('div.classname').hide();
		$(".no-news-found").closest('div').hide();
	}
	// para "Em agenda"
	var agenda = $("div.tx-cal-controller").text();
	agenda = agenda.trim();
	if(agenda.substring(0, 9) == 'No events') $(".tx-cal-controller").closest('div.frame').hide();
	/* Áreas inside "Cidade"  (fim) */
	
	
	/* Pesquisa de serviços
	 * redirecionar pesquisa de serviço para o domínio correspondente
	 */
	const infServicos = 'https://informacoeseservicos.lisboa.pt/servicos?termo=';
	if( $('#cx-search-services').length ){		
		$('#cx-search-services').on('keypress', function(e){
			if (e.which == 13) {
				let v = $(this).val().trim();
				goToServicos(v);
			}
		});
		$('#btn-search-services').on('click', function(){
			let v = $('#cx-search-services').val().trim();
			goToServicos(v);
		});
	}
	function goToServicos(pVal){
		let val = encodeURIComponent(pVal);
		window.location.href = infServicos + val;
	}
});


