$(document).ready(function(){

	// Debounce do Lodash
	debounce = function(func, wait, immediate) {
		var timeout;
		return function() {
			var context = this, args = arguments;
			var later = function() {
				timeout = null;
				if (!immediate) func.apply(context, args);
			};
			var callNow = immediate && !timeout;
			clearTimeout(timeout);
			timeout = setTimeout(later, wait);
			if (callNow) func.apply(context, args);
		};
	};	
	
	$(window).on('load', function(){
		$('.pub-diario-legislacao').each(function(){
			var splitFontSize = $('body').css('fontSize').split("px"),
				fontSize = Math.floor(parseFloat(splitFontSize[0]) * 1.6875),
				sectionHeight = fontSize * 3,
				lastParagraph = $(this).children('p:last-of-type'),			
				divPublicacao = $(this).parent(),
				esconderIcone = divPublicacao.children('svg');
			setTimeout(function(){
				var lastParagraphHeight = lastParagraph.height();
				console.log(lastParagraphHeight + " - " + sectionHeight);
				if(lastParagraphHeight <= sectionHeight){
					esconderIcone.hide('ease');
				}
			}, 1500);
			
		});
	});

	if(window.FormContato) {
		new FormContato({
			form: "#form-contato", // seletor do formulário
			button: "#enviar-contato", // seletor do botão
			erro: "<div id='form-erro'><h2>Erro ao enviar as informações.</h2><p>Tente novamente mais tarde ou encaminhe diretamente para um dos e-mails ao lado.</p></div>", // mensagem de erro
			sucesso: "<div id='form-sucesso'><h2>Informações enviadas com sucesso</h2><p>Entraremos em contato em breve.</p></div>", // mensagem de sucesso
		});
	}

	if(window.FormOuvidoria) {
		new FormOuvidoria({
			form: "#form-ouvidoria", // seletor do formulário
			button: "#enviar-ouvidoria", // seletor do botão
			erro: "<div id='form-erro'><h2>Erro ao enviar as informações.</h2><p>Tente novamente mais tarde ou encaminhe diretamente para um dos e-mails ao lado.</p></div>", // mensagem de erro
			sucesso: "<div id='form-sucesso'><h2>Informações enviadas com sucesso</h2><p>Entraremos em contato em breve.</p></div>", // mensagem de sucesso
		});
	}

	if(window.FormVisita) {
		new FormVisita({
			form: "#form-visita", // seletor do formulário
			button: "#enviar-visita", // seletor do botão
			erro: "<div id='form-erro'><h2>Erro ao enviar as informações.</h2><p>Tente novamente mais tarde ou encaminhe diretamente para um dos e-mails ao lado.</p></div>", // mensagem de erro
			sucesso: "<div id='form-sucesso'><h2>Informações enviadas com sucesso</h2><p>Entraremos em contato em breve.</p></div>", // mensagem de sucesso
		});
	}

	// Acrescenta a classe active ao popup se houver algum disponível
	setTimeout(function(){
		$('.avisos').addClass('active');
	},300);

	// Slider
	(function(){
		function slider(sliderName, velocidade) {
			var sliderClass = '.' + sliderName,
					findPopup = [],
					activeClass = 'active',
					inactiveClass = 'inactive',
					rotate = setInterval(rotateSlide, velocidade);
			
			$(sliderClass + ' > :first').addClass(activeClass);

			$(sliderClass).hover(function(){
				clearInterval(rotate);
			}, function() {
				rotate = setInterval(rotateSlide, velocidade);
			});
			
			function rotateSlide() {
				if(findPopup.length > 1) {
					var activeSlide = $(sliderClass + ' > .' + activeClass),
							nextSlide = activeSlide.next(),
							popupDataClick = $('.conteudo-popup').parent().find('[data-click]'),
							nextDataTarget = $(nextSlide).data('target'),
							nextDataClick = $('.conteudo-popup').parent().find(`[data-click=${nextDataTarget}]`);

					if(nextSlide.length == 0) {
						nextSlide = $(sliderClass + ' > :first');
						nextDataClick = $('.conteudo-popup').parent().find(`[data-click]:first`);
					}
					activeSlide.addClass(inactiveClass);
					
					setTimeout(function(){
						activeSlide.removeClass(activeClass);
						activeSlide.removeClass(inactiveClass);
						nextSlide.addClass(activeClass);
						popupDataClick.removeClass(activeClass);
						nextDataClick.addClass(activeClass);
					}, 100);
				}
			}

			$('.conteudo-popup > [data-target]').each(function(){
				findPopup.push($(this).data('target'));
			});

			var addPopup = $('.popup').html();
			if(findPopup.length > 1) {
				for(var i = 0; i < findPopup.length; i++) {
					var	findPopupLength = findPopup.length - 1;
					if(i == 0) {
						addPopup += "<ul>";
					}

					addPopup += `<li data-click='${findPopup[i]}'></li>`;

					if(i == findPopupLength) {
						addPopup += "</ul>";
						$('.popup').html(addPopup);
					}

				}
			}

		}

	slider('conteudo-popup', 10000);
	})();


	$('area[href^="#"]').on('click', function(e) {
		e.preventDefault();
		var classe = '.mapa-consorciados',
			targetOffSet = $(classe).offset().top;
		$('html, body').animate({
			scrollTop: targetOffSet - 250
		}, 700);
	});

	$('a[href^="#"]').on('click', function(e) {
		e.preventDefault();
		var id = $(this).attr('href'),
			targetOffSet = $(id).offset().top;
		$('html, body').animate({ 
			scrollTop: targetOffSet - 150
		}, 700);
	});

		
	$("select#departamento-contato").change(function(){
		$(".setores .secao-inativa").fadeOut(500);
		$(".setores .secao-ativa").fadeIn(500);
	});
	

	$(".secao-consorciados").ready(function() {
	$("area[href^='#']").click(function(){
		$(".info-consorciados.secao-inativa").fadeOut(700);
	});
	$("area[href^='#']").click(function(){
		$(".info-consorciados.secao-ativa").fadeIn(700);
	});
	});



	$(".secao-interna").ready(function(){
	$(".menu-secao-interna a").click(function(){
		$(".secao-principal .secao-inativa").fadeOut(500);
	});
	$(".menu-secao-interna a").click(function(){
		$(".secao-principal .secao-ativa").fadeIn(500);
	});
	});

	// Mudar tab ao click
	$('[data-group]').each(function(){

		var $allTarget = $(this).find('[data-target]'),
				$allClick = $(this).find('[data-click]'),
				contatoForm = $(this).data('group'),
				activeClass = 'active',
				homePage = window.location.origin + '/';

		// As informações para contato na página principal só devem ser abertas ao serem clicadas
		// Na página de contato deve aparecer normalmente
		if(contatoForm != "contact-form" || window.location.href!=homePage) {
			$allTarget.first().addClass(activeClass);
			$allClick.first().addClass(activeClass);
		}
		
		if(window.location.href!=homePage) {
			var section = sessionStorage.getItem('targetSecao');
		
			if(section!=''){
				var openSection = '[data-target="' + section + '"]',
					selectClick = '[data-click="' + section + '"]';
			}

			$('main [data-target]').each(function(){
				$(this).removeClass('active');
				if(section){
					$(openSection).addClass('active');
				} else {
					$allTarget.first().addClass(activeClass);
				}
				sessionStorage.setItem('targetSecao', '');
			});

			$('main [data-click]').each(function(){
				$(this).removeClass('active');
				if(section){
					$(selectClick).addClass('active');
				} else {
					$allClick.first().addClass(activeClass);
				}
			});
		}

		$allClick.click(function(e){
			e.preventDefault();
			
			var id = $(this).data('click'),
					$target = $('[data-target="' + id + '"]');

			$allClick.removeClass(activeClass);
			$allTarget.removeClass(activeClass);
			
			$target.addClass(activeClass);
			$(this).addClass(activeClass);
		});
	});	

	var dataContrast = sessionStorage.getItem('hasContrast'),
		dataFontSize = sessionStorage.getItem('fontSize');
	$('body').addClass(dataContrast);
	$('body').css({fontSize: `${dataFontSize}`});
	if(dataContrast == 'contraste') {
		var logoActive = $('header img').attr('src');
		logoActive = logoActive.split('.svg');
		newLogo = logoActive[0] + '-contraste.svg';
		$('header img').attr('src', `${newLogo}`);
	}


	// Muda as informações das seções que possuem um select como seletor para o que está visível
	$('[data-change]').each(function(){

		var $allTarget = $(this).find('[data-selected]'),
				$allSelect = $(this).find('[data-select]'),
				activeClass = 'active';
		
		$allTarget.first().addClass(activeClass);
		$allSelect.first().addClass(activeClass);
		
		$allSelect.change(function(e){
			e.preventDefault();
			
			var id = $(this).find(':selected').data('option'),
					$target = $('[data-selected="' + id + '"]');

			$allTarget.hide(200);
			setTimeout(function(){
				$allSelect.removeClass(activeClass);
				$allTarget.removeClass(activeClass);

				$target.addClass(activeClass);
				$(this).addClass(activeClass);
				$target.show(500);
			}, 150);
		});
	});

	// Mudar tab ao click
	$('[data-menu]').each(function(){

		var $allTarget = $(this).find('[data-target]'),
				$allClick = $(this).find('[data-click]'),
				activeClass = 'active';

		$allTarget.addClass(activeClass);
		$allTarget.slideToggle("slow");

		$allClick.click(function(e){
			e.preventDefault();
			
			var id = $(this).data('click'),
					$target = $('[data-target="' + id + '"]');
			
			if($target == '[data-target="menu-header"]'){
				$target.slideToggle("fast");
			} else {
				$target.slideToggle("slow");
			}
			
			$(this).toggleClass(activeClass);
		});
	});

	// Ao clicar nos itens do menu no footer, será armazenado a seção que será aberta quando for redirecionado para uma página interna
	$('[data-menu] [data-target] li > a').click(function(){
		var section = $(this).data('section');
		sessionStorage.setItem('targetSecao', `${section}`);
	});

	// Scroll suave para link interno
	$('.menu-nav a[href^="#"]').click(function(e){
		e.preventDefault();
		var id = $(this).attr('href'),
				menuHeight = $('.menu').innerHeight(),
				targetOffset = $(id).offset().top;
		$('html, body').animate({
			scrollTop: targetOffset - menuHeight
		}, 500);
	});

	// Mudar para active o menu de acordo com a área
	$('section').each(function(){
		var height = $(this).height(),
				offsetTop = $(this).offset().top,
				menuHeight = $('.menu').innerHeight(),
				id = $(this).attr('id'),
				$itemMenu = $('a[href="#' + id + '"]');
		
		$(window).scroll(debounce(function(){
			var scrollTop = $(window).scrollTop();
			if(offsetTop - menuHeight < scrollTop && offsetTop + height - menuHeight > scrollTop) {
				$itemMenu.addClass('active');
			} else {
				$itemMenu.removeClass('active');
			}
		}, 200));
	});

	// Botão do menu
	// Além de abrir o menu, ele acrescenta uma margem para que o menu não fique sobre o conteúdo
	// Ao fechar o menu, a margem é retirada	
	$('.menu-btn').click(function(){
		var	$headerHeight = $('header').height(),
			$windowHeight = $(window).height(),
			$windowHeight = ($windowHeight - $headerHeight),
			windowHeight = $windowHeight + 'px';
		$(this).toggleClass('active');
		$('.menu-header').toggleClass('active');
		$('header').toggleClass('mobile-fixed');
		$('.menu-header').css({'max-height': `${windowHeight}`});
		var menuAtivo = $('.menu-header').attr('class');
		if(menuAtivo == 'menu-header top active' || menuAtivo == 'menu-header active'){				
			$('header').css({'margin-right': '357px'});;
			$('main').css({'margin-right': '357px'});;
			$('footer').css({'margin-right': '357px'});;
			$('.back-top').css({'margin-right': '357px'});;
		} else {
			$('header').css({'margin-right': '0px'});;
			$('main').css({'margin-right': '0px'});;
			$('footer').css({'margin-right': '0px'});;
			$('.back-top').css({'margin-right': '0px'});;
		}
	});

	// Animação ao Scroll
	(function(){
		var $target = $('[data-anime="scroll"]'),
				animationClass = 'animate',
				offset = $(window).height() * 3/4;

		function animeScroll() {
			var documentTop = $(document).scrollTop();

			$target.each(function(){
				var itemTop = $(this).offset().top;
				if (documentTop > itemTop - offset) {
					$(this).addClass(animationClass);
				} else {
					$(this).removeClass(animationClass);
				}
			});
		}

		animeScroll();

		$(document).scroll(debounce(function(){
			animeScroll();
		}, 200));
	})();


	// Retornar ao topo
	jQuery(document).ready(function() {
		// Exibe ou oculta o botão
		jQuery(window).scroll(function() {
			if (jQuery(this).scrollTop() > 0) {
				jQuery('.back-top').fadeIn(200);
			} else {
				jQuery('.back-top').fadeOut(200);
			}
		});
		
		// Faz animação para subir
		jQuery('.back-top').click(function(e) {
			e.preventDefault();
			jQuery('html, body').animate({scrollTop: 0}, 300);
		})
	});

	// Animação dos campos do formulário da ouvidoria
	$('#tipo-solicitante input').click(function(){
		var tpSolicitante = document.querySelector('input[name="ftp-solicitante"]:checked').value;

		if(tpSolicitante == 'a') {
			var inativar = document.querySelectorAll('#form-ouvidoria > div');

			for(var i = 0; i < inativar.length; i++){
				inativar[i].classList.add('inactive');
				inativar[i].classList.remove('active');
			}

			var opObr = document.querySelectorAll('div.op-obrigatorias');

			for(var i = 0; i < opObr.length; i++){
				opObr[i].classList.remove('inactive');
				opObr[i].classList.add('active');
			}

			$('#form-ouvidoria div.inactive').hide(500);

		} else {
			var ativar = document.querySelectorAll('#form-ouvidoria > div.inactive');

			for(var i = 0; i < ativar.length; i++){
				ativar[i].classList.remove('inactive');
				ativar[i].classList.add('active');
			}

			$('#form-ouvidoria div.active').show(500);
		}
	});

	//Abre e fecha as seções de publicações
	$('.secao-publicacoes .abrir-secao').each(function(){
		var parent = $(this).parent('div'),
			child = parent.children('div'),
			granChild = child.children('div.documentos-publicacao');

		$(this).click(function(){
			$(this).toggleClass('rotate');
			$(child).toggleClass('active');
			$(granChild).toggleClass('active');
		});
	});

	// Comandos para fechar o popup quando houver algum ativo
	// Apertando ESC
	$(window).on('keyup',function(event){
		if(event.keyCode==27){
			$(".avisos").removeClass('active');
		}
	});

	// Clicando no "X" no canto superior direito do popup
	$('.fechar-popup').click(function(){
		$(".avisos").removeClass('active');
	});

	// Clicando na área em volta do popup
	$('.background-avisos').click(function(){
		$(".avisos").removeClass('active');
	});

	// Controla a opacidade do conteúdo dos banners
	$('.banner-sistemas').hover(function(){
		var descBanner = '.banner-sistemas > div > *';
		$(descBanner).css({opacity: '0'});
		setTimeout(function(){	
			$(descBanner).css({opacity: '1'});
		}, 700);
	}, function(){
		var descBanner = '.banner-sistemas > div > *';
		setTimeout(function(){
			$(descBanner).css({opacity: '0'});
		}, 10);
	});

	// Controla os botões de acessibilidade do site
	$('.acessibilidade > button').click(function(){
		var idBotao = $(this).attr('id'),
			fontSize = $('body').css('font-size'),
			fontValue = parseInt(fontSize.split('px'));

		if(idBotao == 'aumentar-fonte') {
			fontValue += 2;
			fontValue /= 16;
			fontValue += 'em';
			$('body').css({'font-size': `${fontValue}`});
			sessionStorage.setItem('fontSize', `${fontValue}`);
		} else if(idBotao == 'diminuir-fonte') {
			fontValue -= 2;
			fontValue /= 16;
			fontValue += 'em';
			$('body').css({'font-size': `${fontValue}`});
			sessionStorage.setItem('fontSize', `${fontValue}`);
		} else if(idBotao == 'fonte-padrao') {
			fontValue = 1;
			fontValue += 'em';
			$('body').css({'font-size': `${fontValue}`});
			sessionStorage.setItem('fontSize', `${fontValue}`);
		}else if(idBotao == 'mudar-contraste') {
			// Alterar a imagem da logo de acordo com o contraste
			var logoActive = $('header img').attr('src'),
				contrastClass = $('body').attr('class');

			if(typeof(contrastClass) == 'string'){
				hasContrast = contrastClass.match('contraste');
			} else {
				hasContrast = false;
			}

			if(hasContrast) {
				// Se o body possuir a classe contraste irá trocar para a logo normal
				logoActive = logoActive.split('-contraste');
				newLogo = logoActive[0] + logoActive[1];
				sessionStorage.setItem('hasContrast', '');
			} else {
				// Se o body não possuir a classe contraste irá trocar para a logo toda em branco
				logoActive = logoActive.split('.svg');
				newLogo = logoActive[0] + '-contraste.svg';
				sessionStorage.setItem('hasContrast', 'contraste');
			}
			$('header img').attr('src', `${newLogo}`);

			// Inclui ou retira a classe contraste do body
			$('body').toggleClass('contraste');

			// Inclui ou retira a classe active do botão de contraste
			$('#mudar-contraste').toggleClass('active');
		}
	});


	$('.abrir-busca').click(function(e){
		e.preventDefault();
		$('.input-busca').addClass('active');
		$(this).addClass('icone-busca');
		$(this).removeClass('abrir-busca');
		$(this).unbind(e);
	});

	// // Aumenta e diminui o tamanho do header de acordo com a posição na página
	// // Se estiver no topo, ele retira a classe small da logo e acrescenta a classe top ao main, footer e ao menu
	// // Fora do topo, ele acrescenta a classe small e retira a classe top ao main, footer e ao menu
	// function changeHeader(){
	// 	var topOffset = $(document).scrollTop();
	// 	if(topOffset>0){
	// 		$('.header .logo').addClass('small');
	// 		$('main').removeClass('top');
	// 		$('footer').removeClass('top');
	// 		$('.menu-header').removeClass('top');
	// 	} else {
	// 		$('.header .logo').removeClass('small');
	// 		$('main').addClass('top');
	// 		$('footer').addClass('top');
	// 		$('.menu-header').addClass('top');
	// 	}
		
	// 	console.log(topOffset);
	// }

	// changeHeader();	
	// $(window).scroll(debounce(function(){
	// 	var topOffset = $(document).scrollTop();
	// 	if(topOffset>0){
	// 		changeHeader();
	// 	}
	// 	var	$headerHeight = $('header').height(),
	// 		$windowHeight = $(window).height(),
	// 		$windowHeight = ($windowHeight - $headerHeight),
	// 		windowHeight = $windowHeight + 'px';
	// 		// console.log(windowHeight);
	// 		// console.log($headerHeight);
	// 	$('.menu-header').css({'max-height': `${windowHeight}`});
	// }, 100));

	$('.flex-8.mapa-municipios [data-click]').click(function(){
		$('.flex-8.mapa-municipios').removeClass('flex-8');
		$('.mapa-municipios').addClass('flex-4');
		$('.info-municipios').addClass('active');
	});

	jQuery(function($){
		$(".masked-tel").mask("(99) 9999-9999");
		$(".masked-cel").mask("(99) 99999-9999");
		$(".masked-cep").mask("99999-999");
	});
});