/* ----------------------------------------------------

2011 © Assembleia Legislativa do Estado de Minas Gerais
O código abaixo é parte integrante do Portal da ALMG, http://www.almg.gov.br

------------------------------------------------------- */




/* ------------------------ */
/* --- JS REVISADO ALMG --- */


/* ------------------------------------------- */
/* --- Funcao para pegar parametros de url --- */
/* ------------------------------------------- */

//Fonte jQuery:
//http://jquery-howto.blogspot.com/2009/09/get-url-parameters-values-with-jquery.html

$.extend({
    getUrlVars: function () {
        var vars = [], hash;
        var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&');
        for (var i = 0; i < hashes.length; i++) {
            hash = hashes[i].split('=');
            vars.push(hash[0]);
            vars[hash[0]] = hash[1];
        }
        return vars;
    },
    getUrlVar: function (name) {
        return $.getUrlVars()[name];
    }
});


/* HOW TO:
Get object of URL parameters:
var allVars = $.getUrlVars();

Getting URL var by its nam:
var byName = $.getUrlVar('name');
*/



/* -------------------------- */
/* --- Detectar navegador --- */
/* -------------------------- */

var browserName = navigator.appName;
//browserName: 'Microsoft Internet Explorer' or else



/* ---------------------------------------------------------------- */
/* --- Valores absolutos da Barra de Rolagem e Viewport de Tela --- */
/* ---------------------------------------------------------------- */
//Capturar valores absolutos da scrollbar e da tela do usuário. Nos casos de valores do viewport, a largura e altura da barra de rolagem são desconsideradas.

// Fonte softcomplex:
// http://www.softcomplex.com/docs/get_window_size_and_scrollbar_position.html

function f_clientWidth() {
	return f_filterResults (
		window.innerWidth ? window.innerWidth : 0,
		document.documentElement ? document.documentElement.clientWidth : 0,
		document.body ? document.body.clientWidth : 0
	);
}
function f_clientHeight() {
	return f_filterResults (
		window.innerHeight ? window.innerHeight : 0,
		document.documentElement ? document.documentElement.clientHeight : 0,
		document.body ? document.body.clientHeight : 0
	);
}
function f_scrollLeft() {
	return f_filterResults (
		window.pageXOffset ? window.pageXOffset : 0,
		document.documentElement ? document.documentElement.scrollLeft : 0,
		document.body ? document.body.scrollLeft : 0
	);
}
function f_scrollTop() {
	return f_filterResults (
		window.pageYOffset ? window.pageYOffset : 0,
		document.documentElement ? document.documentElement.scrollTop : 0,
		document.body ? document.body.scrollTop : 0
	);
}
function f_filterResults(n_win, n_docel, n_body) {
	var n_result = n_win ? n_win : 0;
	if (n_docel && (!n_result || (n_result > n_docel)))
		n_result = n_docel;
	return n_body && (!n_result || (n_result > n_body)) ? n_body : n_result;
}

//alert("innerWidth: "  + f_clientWidth() +" (descontado a barra de rolagem)" + "\ninnerHeight: " + f_clientHeight() +" (descontado a barra de rolagem)" + "\npageXOffset: " + f_scrollLeft() +" (posicao X da barra de rolagem)" + "\npageYOffset: " + f_scrollTop() +" (posicao Y da barra de rolagem)");




/* -------------------------------------------------------------------------- */
/* --- Ajustar barra de rolagem quando a tela for menor do que 1024 x 768 --- */
/* -------------------------------------------------------------------------- */


function redefinirDimensao() {
	if(f_clientWidth() < 984) {
		$("body").css("overflow-x","scroll");
		
		$(".header-fixed").css("margin-left","0");
		$(".header-fixed").css("left","0");
		$(".header-fixed").css("position","relative");
		
		$(".header-barra").css("margin-left","0");
		$(".header-barra").css("left","0");
	}else{
		$("body").css("overflow-x","hidden");
		
		$(".header-fixed").css("margin-left","-492px");
		$(".header-fixed").css("left","50%");
		$(".header-fixed").css("position","fixed");
		
		$(".header-barra").css("margin-left","-492px");
		$(".header-barra").css("left","50%");
	}
}

//Rodar uma primeira vez e a cada redimensionamento
$(document).ready(function(){
	redefinirDimensao();
});
//window.captureEvents(Event.RESIZE);
//window.onresize=redefinirDimensao;
$(window).resize(function() {
	redefinirDimensao();
});



/* --------------- */
/* --- Âncoras --- */
/* --------------- */

var alturaBarra = 0;

$(".header-barra").ready(function() {
	alturaBarra = $(".header-barra").attr('offsetHeight') + 15; // Calcular a altura da barra para descontar (mais uma margem de erro)
});





/* -------------------------------- */
/* --- Âncora Animada em jQuery --- */
/* -------------------------------- */
//Links animados dentro da mesma página, versão jQuery

function goToByScroll(elementAnchor){ //funcao para ancora-jquery
	$('html,body').animate({ scrollTop: $(elementAnchor).offset().top - alturaBarra},'slow');
}




/* ------------------------------ */
/* --- Âncora animada em Html --- */
/* ------------------------------ */
//Links animados dentro da mesma página, versão Html

//Fonte:
//http://www.brandspankingnew.net/specials/anchorjump/anchorjump_01.html

var scrollInt;
var scrTime, scrSt, scrDist, scrDur, scrInt;

function replaceAnchorLinks() {
	var anchors, i, targ, targarr;

	if (!document.getElementById)
		return;
	
	// get all anchors
	anchors = document.getElementsByTagName("a");
	
	for (i=0;i<anchors.length;i++) {
	
		// check if href links to an anchor on this page
		if ( anchors[i].href.indexOf("#") != -1 && anchors[i].href.indexOf( document.URL ) != -1 ) {
			// get name of target anchor
			targ = anchors[i].href.substring( anchors[i].href.indexOf("#")+1 );
			
			// find target anchor
			targarr = document.getElementsByName( targ );
			
			if (targarr.length) {
				anchors[i].className = (targarr[0].offsetTop < anchors[i].offsetTop) ? "up" : "down";
				anchors[i].id = "__" + targ;	// save target as id with prefix (used in onclick function below)
				anchors[i].onmousedown = function () { scrollToAnchor( this.id.substring( 2 ) ); return false; };
				anchors[i].href = "#";			// rewrite href
			}
		}
	}
}
	
//Scroll Functions

function scrollPage() {
	scrTime += scrInt;
	if (scrTime < scrDur) {
		window.scrollTo( 0, easeInOut(scrTime,scrSt,scrDist,scrDur) );
	}else{
		window.scrollTo( 0, scrSt+scrDist );
		clearInterval(scrollInt);
	}
}

function scrollToAnchor(aname) {
	var anchors, i, ele;

	if (!document.getElementById)
		return;
	
	// get anchor
	anchors = document.getElementsByTagName("a");
	for (i=0;i<anchors.length;i++) {
		if (anchors[i].name == aname) {
			ele = anchors[i];
			i = anchors.length;
		}
	}
	
	// set scroll target
	if (window.scrollY)
		scrSt = window.scrollY;
	else if (document.documentElement.scrollTop)
		scrSt = document.documentElement.scrollTop;
	else
		scrSt = document.body.scrollTop;

	scrDist = (ele.offsetTop - scrSt) - alturaBarra;
	scrDur = 500;
	scrTime = 0;
	scrInt = 10;
	
	// set interval
	clearInterval(scrollInt);
	scrollInt = setInterval( scrollPage, scrInt );
}	

//Easing Functions

function easeInOut(t,b,c,d)	{
	return c/2 * (1 - Math.cos(Math.PI*t/d)) + b;
}





/* ----------------------- */
/* --- Accordion Login --- */
/* ----------------------- */

$("#js_login").ready(function() {
	$("#js_login").css("cursor","pointer");
	
	$("#js_login").hover(function () {
		$("#js_login").attr("title","Acessar o portal")
	});

	$("#js_login").click(function () {
		var elementClickedRel = $(this).attr("rel");
		$("." + elementClickedRel).slideToggle("fast");
		if ($(this).hasClass("fechado")) {
			$(this).removeClass("fechado");
			$(".imageLogin").attr("src", "/opencms/export/system/modules/br.gov.almg.site/resources/img/btn/bt-login-hover.jpg");
		} else {
			$(this).addClass("fechado");
			$(".imageLogin").attr("src", "/opencms/export/system/modules/br.gov.almg.site/resources/img/btn/btn_login.gif");
		}
		return false;
	});

});

$("#loginlink2").ready(function() {
	$("#loginlink2").css("background-color","#f90"); /* Laranja? troque essa class para #js_login2 - caso contrario, delete esse script */
	$("#loginlink2").click(function () {
		var elementClickedRel = $(this).attr("rel");
		$("." + elementClickedRel).slideToggle("fast");
		if ($(this).hasClass("fechado")) {
			$(this).removeClass("fechado");
		}else{
			$(this).addClass("fechado");
	   }
		return false;
	});
});


/* ------------------------------ */
/* --- Accordion Mapa do Site --- */
/* ------------------------------ */
//Falta nomenclatura e padronizacao js_*

$(".rodape-aberto-bg").ready(function() {
	$(".abre a").click(function () {
		var elementClickedRel = $(this).attr("rel");
		$("." + elementClickedRel).slideToggle("slow");
		if ($(this).hasClass("fechado")) {
			$(this).removeClass("fechado");
			$(this).text("Fechar Mapa do Site");
			$(".bulletMapa").attr("src", "/opencms/export/system/modules/br.gov.almg.site/resources/img/bullet-mapa-site-up.jpg");
		}else{
			$(this).addClass("fechado");
			$(this).text("Abrir Mapa do Site");
			$(".bulletMapa").attr("src", "/opencms/export/system/modules/br.gov.almg.site/resources/img/bullet-mapa-site-down.jpg");
		}
		var elementClicked = $(this).attr("href");
		var destination = $(elementClicked).offset().top;
		$("html:not(:animated),body:not(:animated)").animate({ scrollTop: destination - 20 }, 1000);
		return false;
	});
});


/* --------------------------------------------- */
/* --- Accordion "Mais opções" de Tramitação --- */
/* --------------------------------------------- */
//Futuramente deve se desvincular do global

$(".opcoesbusca").ready(function() {
	$(".abreopcao a").ready(function (){
		if ($.getUrlVar('aberto') == "1"){ //alert("ok");
			$(".abreopcao a").addClass("fechado");
			$(".abreopcao a").text("Mais opções");
			$(".opcoesbusca").show();
		};
	});
	   
	$(".abreopcao a").click(function () {
		var elementClickedRel = $(this).attr("rel");
		$("." + elementClickedRel).slideToggle("slow");
		if ($(this).hasClass("fechado")) {
			$("." + elementClickedRel).find("input").each(function(){
				$(this).attr("disabled", "");
			});
			$("." + elementClickedRel).find("select").each(function(){
				$(this).attr("disabled", "");
			});
			$(this).removeClass("fechado");
			$(this).text("Esconder opções");
		}else{
			$("." + elementClickedRel).find("input").each(function(){
				$(this).attr("disabled", "disabled");
			});
			$("." + elementClickedRel).find("select").each(function(){
				$(this).attr("disabled", "disabled");
			});
			$(this).addClass("fechado");
			$(this).text("Mais opções");
		}
		return false;
	});
});



/* ----------------------------- */
/* --- Accordion Toggle Next --- */
/* ----------------------------- */
//Accordion estilo slide-show e slide-hide no conteúdo Next

function toggleNextFunc() {
	var ElemToggle = $(".js_toggleNext");
	ElemToggle.next().hide();
	ElemToggle.css("cursor","pointer");
	ElemToggle.live("click",function(){
		$(this).toggleClass("active").next().slideToggle("slow");
	});
}

$(".js_toggleNext:last-child").ready(function() {
	toggleNextFunc();
});




/* -------------------------------------- */
/* --- Accordion Expandir All Toggles -- */
/* -------------------------------------- */


function allAcordions(elemento) {
	if(elemento.html()=="Expandir tudo"){
		elemento.html('Retrair tudo');
		$('#content-interna .js_toggleNext').next().slideDown('slow');
		$('#content-interna .js_toggleNext').addClass('active');
	}else{
		elemento.html('Expandir tudo');
		$('#content-interna .js_toggleNext').next().slideUp('slow');
		$('#content-interna .js_toggleNext').removeClass('active');
	}
}




/* ----------------------------- */
/* --- Accordion Toggle Prev --- */
/* ----------------------------- */
//Accordion estilo slide-show e slide-hide no conteúdo Next

function togglePrevFunc() {
	var ElemToggle = $(".js_togglePrev");
	ElemToggle.prev().hide();
	ElemToggle.css("cursor","pointer");
	ElemToggle.live("click",function(){
		$(this).toggleClass("active").prev().slideToggle("slow");
	});
}

$(".js_togglePrev:last-child").ready(function() {
	togglePrevFunc();
});




/* ------------------------ */
/* --- Accordion Twins  --- */
/* ------------------------ */
//Accordions que abre um e fecha o outro e vice-versa. Um em função do outro (usado na aba regimento interno da legislacao mineira)

function accordionTwins(origemTwin,outroTwin) {
	if(origemTwin.next().css("display")!="none"){
		outroTwin.next().slideDown('slow');
		origemTwin.next().slideUp('slow');

		outroTwin.addClass('ativo');
		origemTwin.removeClass('ativo');
		
		outroTwin.children().addClass('ativo'); origemTwin.children().removeClass('ativo');
	}else{
		origemTwin.next().slideDown('slow');
		outroTwin.next().slideUp('slow');

		outroTwin.removeClass('ativo');
		origemTwin.addClass('ativo');
		
		outroTwin.children().removeClass('ativo'); origemTwin.children().addClass('ativo');
	}
}

$(".js_toggleTwins2").ready(function() {

	$(".js_toggleTwins1").css("cursor","pointer");
	$(".js_toggleTwins2").css("cursor","pointer");
	
	$('.js_toggleTwins1').click(function(){
		accordionTwins($(this),$(".js_toggleTwins2"));
	});

	$('.js_toggleTwins2').click(function(){
		accordionTwins($(this),$(".js_toggleTwins1"));
	});
});






/* --------------------------- */
/* --- Accordion BreakLine --- */
/* --------------------------- */
//Accordion estilo slide-show e slide-hide após contar tag (tag default: <br>; limite default: 5)

function toggleBrFunc(){
	var exp_brElemClass = ".js_toggleBr"; //Inserir elemento para sofrer efeito	

	if( $(exp_brElemClass).length > 0 ) {
		
		/*
		var exp_brCountA = $(exp_brElemClass + ' > a').size();
		var exp_brCountP = $(exp_brElemClass + ' > p').size();
		var exp_brCountBr = $(exp_brElemClass + ' > br').size();
		alert(exp_brCountA + exp_brCountP + exp_brCountBr);
		*/
		
		var exp_brElemNumber = $(exp_brElemClass).length; //Retorna o número de elementos
		
		$(exp_brElemClass).each(function(idx, item) { //Para cada elemento, inserimos uma class seguida de um numero de indentificacao (de acordo com a ordem de renderizacao da pagina)
			$(item).removeClass("js_toggleBr").addClass("js_toggleBr"+idx);
		});
		
		$.each(new Array(exp_brElemNumber),function(m) {
			var text = $(exp_brElemClass+m).html(); //ou text()
			//Tornar case insensitive:
			text = text.replace(/A>/gi,"a>"); text = text.replace(/<A/gi,"<a"); text = text.replace(/p>/gi,"p>"); text = text.replace(/<P/gi,"<p"); text = text.replace(/BR>/gi,"br>");

			// Apos quantas unidades haverá toggle
			if($(exp_brElemClass+m).attr("data-js_toggleBrNUM")!=undefined){
				var qtdToggle = $(exp_brElemClass+m).attr("data-js_toggleBrNUM");
			}else{
				var qtdToggle = 5;
			}

			// Tag que será contada para quebrar
			if($(exp_brElemClass+m).attr("data-js_toggleBrTAG")!=undefined){
				var elementSplit = $(exp_brElemClass+m).attr("data-js_toggleBrTAG");
			}else{
				var elementSplit = "<br>"; //se usar text(), pode usar /\n/g
			}
			
			// Rótulo:
			if($(exp_brElemClass+m).attr("data-js_toggleBrLABEL")!=undefined){
				var elementLabel = $(exp_brElemClass+m).attr("data-js_toggleBrLABEL");
			}else{
				var elementLabel = "Leia Mais";
			}
			
			var eachLine = text.split(elementSplit);
			var numberLines = Number(eachLine.length-1); //colocar length-1 ou não significa desprezar a última posicao do vetor ou nao (em split <br> é melhor considera-la, já para </a>, por exemplo, nao)
			//alert( 'Numero de Linhas: ' + numberLines );
	
			if(numberLines > qtdToggle) {
				qtdToggle = qtdToggle-1; //levar em consideracao que vetor tem a posicao 0
				
				//Limpar conteúdo
				$(exp_brElemClass+m).html("");
				
				var exp_brPrev = "";
				var exp_brPoint = "";
				var exp_brAfter = "";
				
				$.each(new Array(numberLines),function(i) { //Loop nas linhas
					//alert('Vetor ' +i+ ' / Line ' +(i+1)+ ': ' + eachLine[i] + elementSplit);
					if(i < qtdToggle) {
						exp_brPrev += eachLine[i] + elementSplit;
					}else if(i == qtdToggle) {
						exp_brPoint += eachLine[i] + elementSplit;
					}else if(i > qtdToggle){
						exp_brAfter += eachLine[i] + elementSplit;
					}
				});
			
				//Insere o novo conteudo
				$(exp_brElemClass+m).append(exp_brPrev + exp_brPoint + "<a style='cursor:pointer' class='read-more brTggleBtn"+m+"'>"+elementLabel+"</a><div class='brTggleDiv"+m+"' style='padding-top:3px;'>" + exp_brAfter + "</div>");
			}

			$('.brTggleDiv'+m).hide();
			$('.brTggleBtn'+m).click(function() {
				$('.brTggleDiv'+m).slideToggle('slow'); return false;
			});
			
		});
	}
}


$(".js_toggleBr:last-child").ready(function() {
	toggleBrFunc();
});





/* ------------------------ */
/* --- Accordion Resumo --- */
/* ------------------------ */
//Accordion exclusivo para texto com um pequeno resumo. Exemplo em Legislação Mineira e Agenda

function toggleExpanderFunc(){

	var expander_pluginElemClass = ".js_toggleExpander"; //Inserir elemento para sofrer efeito
	var num_expander_pluginElemClass = $(expander_pluginElemClass).length; //Retorna o número de elementos
	

	$(expander_pluginElemClass).each(function(idx, item) { //Para cada elemento, inserimos uma class seguida de um numero de indentificacao (de acordo com a ordem de renderizacao da pagina)
		$(item).removeClass("js_toggleExpander").addClass("js_toggleExpander"+idx);
	});

	$.each(new Array(num_expander_pluginElemClass),function(i) { //Loop
		$(expander_pluginElemClass+i).before('<span id="js_toggleExpander'+i+'"></span>'); //Insere um elemento para ser a ancora. Ele tem o id igual a class do expander (para facilitar a chamada mais tarde)
		
		// Apos quantos cararacteres
		if($(expander_pluginElemClass+i).attr("data-js_toggleExpanderNUM")!=undefined){
			var caracteresToExpander = $(expander_pluginElemClass+i).attr("data-js_toggleExpanderNUM");
		}else{
			var caracteresToExpander = 360;
		}
		
		// Rotulo
		if($(expander_pluginElemClass+i).attr("data-js_toggleExpanderLABEL")!=undefined){
			var labelToExpander = $(expander_pluginElemClass+i).attr("data-js_toggleExpanderLABEL");
		}else{
			var labelToExpander = "Leia Mais";
		}

		//Plugin Expander:
		$(expander_pluginElemClass+i).expander({ // Rodar o plugin expander para cada class (poderia ser para a class comum. Entretanto, é desejável passar via class especificas (for,i) a fim de controlar ancoraras separadas)
			slicePoint: caracteresToExpander, // corte no texto (numero de caracteres)
			expandText: ' '+labelToExpander+' ',
			userCollapseText: ' &nbsp;-&nbsp; ',
			collapseTimer: 0, // re-collapses after 5 seconds; default is 0, so no re-collapsing
			//expandPrefix: '',
			//userCollapsePrefix: '',
			//afterExpand: function($thisEl) { },
			onCollapse: function($thisEl, byUser) {
				//if ( (window.pageYOffset + alturaBarra) > $("#"+$thisEl.attr('class')).offset().top) { // Só será ancorado se a posição Y da barra de rolagem for maior que a posicao da ancora
				if ( (f_scrollTop() + alturaBarra) > $("#"+$thisEl.attr('class')).offset().top) { // Só será ancorado se a posição Y da barra de rolagem for maior que a posicao da ancora
					goToByScroll("#"+$thisEl.attr('class')); //Para chamar a ancora, passamos a class do expander que é o mesmo id da ancoras (para facilitar)
				}
			} 
		});
	});
}

$(".js_toggleExpander:last-child").ready(function() {
	toggleExpanderFunc();
});





/* ------------------------- */
/* --- Impressão de divs --- */
/* ------------------------- */
//Imprimir conteúdo de divs específicas.

function goPrint(numLoop) {
	popW = 920; popH = 600;
	LeftPosition = (screen.width) ? (screen.width-popW)/2 : 0; TopPosition = (screen.height) ? (screen.height-popH)/2 : 0;
	var WindowObject = window.open('', 'Janela', 'width='+popW+',height='+popH+',top='+TopPosition+',left='+LeftPosition+',toolbars=no,scrollbars=yes,status=no,resizable=yes');
	
	WindowObject.document.writeln('<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xml:lang="pt-br" lang="pt-br" xmlns="http://www.w3.org/1999/xhtml"><head><title>Imprimir Documento</title>');
	
	//Atencao! Bug no IE ao incluir o jquery. Ao carrega-lo, a pagina trava.
	//WindowObject.document.writeln('<script type="text/javascript" src="/system/modules/br.gov.almg.site/resources/js/jquery.js"></script>');
	
	WindowObject.document.writeln("<link rel='stylesheet' type='text/css' href='/system/modules/br.gov.almg.site/resources/css/print_popup.css' media='all' />"); //chamar css
	
	WindowObject.document.writeln('</head><body>');
	WindowObject.document.writeln('<div id="header_print">');	
	WindowObject.document.writeln("<img src='/opencms/export/system/modules/br.gov.almg.site/resources/img/logo_popup-print.gif' alt='' id='popup_logo' />");
	WindowObject.document.writeln("<div id='popup_print'><a class='read-more' onclick='javascript:window.print();' title='Imprimir'>Imprimir</a></div>"); //botao de imprimir
	WindowObject.document.writeln('</div>');	
	WindowObject.document.writeln($('.js_printDiv'+numLoop).html()); //Insere a div com o conteudo para a impressao
	
	//Com o jquery nao incluido, essas exibicoes (ou nao-exibicoes) no css
	//WindowObject.document.writeln("<script type='text/javascript'>$('.js_print').each(function(idx, item) { $(item).css('display','none'); });</script>"); //Sumir com o botão		
	//WindowObject.document.writeln("<script type='text/javascript'>$('.js_printInvisible'+"+numLoop+").css('display','');</script>"); //Exibir conteudo invisivel
	//WindowObject.document.writeln("<script type='text/javascript'>$('.js_printForbidden'+"+numLoop+").css('display','none');</script>"); //Exibir conteudo invisivel
	
	WindowObject.document.writeln("</body></html>");

	WindowObject.document.close();
	WindowObject.focus();
	
	//Se quiser imprimir direto:
	//WindowObject.print();
	//WindowObject.close();
}

$(".js_print:last-child").ready(function() {
	$(".js_print").css("cursor","pointer");
	$(".js_print").attr("title","Imprimir");
	
	var goPrintElemNumber = $('.js_printDiv').length; //Retorna o número de elementos

	$(".js_printInvisible").each(function(idx, item) { //Para cada elemento invisivel, inserimos estilo display none para ficar invisivel (será visivel apenas na impressao)
		$(item).addClass("js_printInvisible"+idx);  //Para cada elemento, inserimos uma class seguida de um numero de indentificacao (de acordo com a ordem de renderizacao da pagina)
		$(item).css("display","none");
	});
	
	$('.js_print').each(function(idx, item) { //Loop nos diversos elementos que serao impressos
		$(item).addClass("js_print"+idx);  //Para cada elemento, inserimos uma class seguida de um numero de indentificacao (de acordo com a ordem de renderizacao da pagina)
	});
	
	$('.js_printDiv').each(function(idx, item) { //Loop nos diversos elementos que serao impressos
		$(item).addClass("js_printDiv"+idx);  //Para cada elemento, inserimos uma class seguida de um numero de indentificacao (de acordo com a ordem de renderizacao da pagina)
	});

	
	$.each(new Array(goPrintElemNumber),function(m) {
		  $('.js_print'+m).click(function() {
			goPrint(m);
		 });
	});
});





/* ----------------------------- */
/* --- Check box obrigatorio --- */
/* ----------------------------- */
//Habilitar Formulários com checkbox obrigatórios

var checksContainer = ".js_checkObrigatorio";

$(checksContainer+":last-child").ready(function(){
	$(checksContainer).each(function(idx, item) { //Para cada elemento, inserimos uma class seguida de um numero de indentificacao (de acordo com a ordem de renderizacao da pagina)
		$(item).addClass("js_checkObrigatorio"+idx);
		
		$(checksContainer + idx + " input[type=checkbox]").each(function(idx2, item2) {
			 $(item2).click(function() {
				checkObrigatorio($(item2),idx);
			 });
		});
	});
});


// Rodar funcao pare testar obrigatoriedade
function checkObrigatorio(checkClicado,laco) {
	var numChecekd = $(checksContainer + laco + " input[type=checkbox]:checked").length;

	if(numChecekd == 0){
		checkClicado.attr("checked", true);
	}
}





/* -------------- */
/* --- Modais --- */
/* -------------- */
//Conjunto de modais usados no portal. Ex: A Assembleia > Entenda a Assembleia > Estrutura Organizacional

var modalSpeedIn = 800;
var modalSpeedOut = 100;
var maskSpeedIn = 300;
var maskSpeedOut = 500;
var modalID;

$('.window:last-child').ready(function() {
	//$('.window:first-child').before("<div id='modal_mask' style='display:none;'></div>"); //Criar mascara uma vez só no primeiro elemento que encontrar
	/*$('.window').each(function(idx, item) { //Loop nos diversos elementos que serao impressos
		if(idx==0) { //Criar mascara uma vez só no primeiro elemento que encontrar
			$(item).before("<div id='modal_mask' style='display:none;'></div>"); 
		}
	});*/
	$('#header').before("<div id='modal_mask' style='display:none;'></div>"); //Criar mascara uma vez (#header, outros posicionamentos podem dar bug no IE)
});

$('.area[name=modal]:last-child, a[name=modal]:last-child').ready(function() {
	$('.area[name=modal], a[name=modal]').each(function(idx, item) { //Loop nos diversos elementos que serao impressos
		$(item).css("cursor","pointer");
	});
	
	$('area[name=modal], a[name=modal]').click(function() { // $('area[name=modal]:visible, a[name=modal]:visible') backup: avaliar motivos do visible
		modalID = $(this).attr('rel'); //o rel será o id a ser aberto

		$(modalID).stop().fadeTo(modalSpeedIn,1.0);
		//$(modalID).css("display","block"); $(modalID).css("opacity","0.0"); $(modalID).stop().animate( {opacity: 1.0} , modalSpeedIn);
		
		modalFunctions(modalID);
	});
});

function modalFunctions(meuElemento) {
	$('#modal_mask').stop().fadeTo(maskSpeedIn,0.6);
	//$('#modal_mask').css("display","block"); $('#modal_mask').css("opacity","0.0"); $('#modal_mask').stop().animate( {opacity: 0.6} , maskSpeedIn);
	
	$('.modal_close, #modal_mask').hover(function () {
		$('.modal_close, #modal_mask').attr('title','voltar');
	});
	
	$('.modal_close, #modal_mask').click(function () {
		$('.modal_close, #modal_mask').unbind('click'); //Deletar essa funcao, caso contrario ela seria replicada inumeras vezes a cada chamada

		$(meuElemento).stop().fadeOut(modalSpeedOut);
		//$(meuElemento+':visible').stop().animate( {opacity: 0.0} , modalSpeedOut, function () { $(meuElemento+':visible').css("display","none"); } );
		
		$('#modal_mask').stop().fadeOut(maskSpeedOut);
		//$('#modal_mask:visible').stop().animate( {opacity: 0.0} , maskSpeedOut, function () { $('#modal_mask:visible').css("display","none"); } );
	});
}






/* --------------------------------- */
/* --- Perfilar imagens (Thumbs) --- */
/* --------------------------------- */
//Procura imagens dentro de um box (elemento) e redimensiona de acordo com esse box


function perfilarImagens(){
	$(".js_thumb img:last-child").ready(function(){ // Esperamos as imagens (da class) renderizar. Depois disso, rodamos o codigo (principalmente apos paginacao ajax)
		var thumbElement = ".js_thumb";
		
		$(thumbElement).each(function(idx, item) { //Loop nos diversos elementos que serao impressos
		
			var firstScale = $(item).css("height").replace("px","") / $(item).css("width").replace("px","");
	
			var imgALT = $(item).find("img").height();
			var imgLARG = $(item).find("img").width();
			
			if(imgALT < imgLARG) { // Perfil Horizontal. Altura menor que largura
				var secondScale = imgALT/imgLARG;
				if(secondScale > firstScale) { // *** EXCECAO ***
					//alert("A "+Number(idx+1)+"ª imagem tem o perfil HORIZONTAL, mas é 'MENOS HORIZONTAL' que o box. Ela foi taxada como VERTICAL.\nOs valores foram corrigidos respeitando a sua div-box pai");
					//$(item).find("img").attr("class","perfilVertical");
					$(item).find("img").css("width",$(item).css("width"));
					$(item).find("img").css("height","auto");
					
					//$(item).find("img").css("margin-top" , -($(item).find("img").css("height").replace("px","") - $(item).css("height").replace("px",""))/2 ); //retroceder margin
				}else{
					//alert("A "+Number(idx+1)+"ª imagem tem o perfil HORIZONTAL.\nOs valores foram corrigidos respeitando a sua div-box pai");
					//$(item).find("img").attr("class","perfilHorizontal");
					$(item).find("img").css("height",$(item).css("height"));
					$(item).find("img").css("width","auto");
					
					//$(item).find("img").css("margin-left" , -($(item).find("img").css("width").replace("px","") - $(item).css("width").replace("px",""))/2 );  //retroceder margin
				}
			
			}else if(imgALT==imgLARG) { // Perfil Quadrado
				//alert("A "+Number(idx+1)+"ª imagem tem o perfil QUADRADO.\nOs valores foram corrigidos respeitando a sua div-box pai");
				//$(item).find("img").attr("class","perfilQuadrado");
				if(firstScale < 1){ //Se a div box for horizontal (maior que 1), fixamos a img-quadradas pela largura
					$(item).find("img").css("width",$(item).css("width"));
					
					//$(item).find("img").css("margin-top" , -($(item).find("img").css("height").replace("px","") - $(item).css("height").replace("px",""))/2 ); //retroceder margin
				}else{ //Se a div box for vertical (menor que 1) - ou quadrado, fixamos a img-quadradas pela altura
					$(item).find("img").css("height",$(item).css("height"));
	
					//$(item).find("img").css("margin-left" , -($(item).find("img").css("width").replace("px","") - $(item).css("width").replace("px",""))/2 );  //retroceder margin
				}
				
			}else{ // Perfil Vertical. Altura maior que largura
				var secondScale = imgALT/imgLARG;
				if(secondScale < firstScale) { // *** EXCECAO ***
					//alert("A "+Number(idx+1)+"ª imagem tem o perfil VERTICAL, mas é 'MENOS VERTICAL' que o box. Ela foi taxada como HORIZONTAL.\nOs valores foram corrigidos respeitando a sua div-box pai");
					//$(item).find("img").attr("class","perfilHorizontal");
					$(item).find("img").css("height",$(item).css("height"));
					$(item).find("img").css("width","auto");
					
					//$(item).find("img").css("margin-left" , -($(item).find("img").css("width").replace("px","") - $(item).css("width").replace("px",""))/2 );  //retroceder margin
				}else{
					//alert("A "+Number(idx+1)+"ª imagem tem o perfil VERTICAL.\nOs valores foram corrigidos respeitando a sua div-box pai");
					//$(item).find("img").attr("class","perfilVertical");
					$(item).find("img").css("width",$(item).css("width"));
					$(item).find("img").css("height","auto");
					
					//$(item).find("img").css("margin-top" , -($(item).find("img").css("height").replace("px","") - $(item).css("height").replace("px",""))/2 ); //retroceder margin
				}
			}
			
		});
	});
}

$(".js_thumb img:last-child").ready(function(){
	window.setTimeout("perfilarImagens();", 1000); //Tempo extra é necessario para navegadores como opera e safari
});



/* ------------------------------ */
/* --- Remover conteudo vazio --- */
/* ------------------------------ */

function removerVazio (objConteudo, objLimpar) {
	if( $(objConteudo).length == 0 ) {
		$(objLimpar).css("display","none");
	}
}

function removerVazioTrim (objConteudo, objLimpar) {
	if( !$.trim( $(objConteudo).html() ).length ) {
		$(objLimpar).css("display","none");
	}
}



/* ----------------------------------- */
/* --- Remover underline delicious --- */
/* ----------------------------------- */

/*
$("#box-lateral-delicious li a:last-child").ready(function() {
	$('.delicious-banner.sidebar-title a').attr("target","_blank");
	
	$("#box-lateral-delicious li a").each(function(idx, item) { //Loop nos diversos elementos que serao impressos
		$(item).attr("target","_blank");
		$(item).html($(item).html().replace("_"," ").replace("_"," "));
		
		//forçar css
		$(item).css("color","#555");
		$(item).css("background", "url('/system/modules/br.gov.almg.site/resources/img/bullet-todas-noticias.gif') no-repeat scroll 0 50% transparent");
	});
});

$(".delicious-banner a:first-child").ready(function() {
	$(".delicious-banner a:first-child").css("display","none");
});
*/





/* ------------------------------------------- */
/* --- Equalizar divs pela altura da maior --- */
/* ------------------------------------------- */



$(".js_equalDivs:visible:last-child").ready(function() {
	equalizarDivs();
});

function equalizarDivs() {
	var maxH = 0;
	$(".js_equalDivs:visible").css("height","auto"); //Deixamos a altura auto caso o estilo de css tenha herdado alguma altura

	$(".js_equalDivs:visible").each(function(){
		//alert($(this).height());
		if(maxH < $(this).height()) {
			maxH = $(this).height();
		}
	});

	$(".js_equalDivs:visible").css("height",maxH+"px");
}


/* ---------------------------------------------- */
/* --- Nivo Slider, Banner de detaque da Home --- */
/* ---------------------------------------------- */

//Fonte: http://nivo.dev7studios.com; Uso de 2 arquivos anexos

$(".slider").ready(function() {
	$('.slider').nivoSlider({
		effect: 'sliceDown', //Specify sets like: 'fold,fade,sliceDown'
		slices: 10,
		animSpeed: 500, //Slide transition speed
		pauseTime: 8000,
		startSlide: 0, //Set starting Slide (0 index)
		directionNav: true, //Next & Prev
		directionNavHide: false, //Only show on hover
		controlNav: true, //1,2,3...
		controlNavThumbs: false, //Use thumbnails for Control Nav
		controlNavThumbsFromRel: false, //Use image rel for thumbs
		controlNavThumbsSearch: '.jpg', //Replace this with...
		controlNavThumbsReplace: '_thumb.jpg', //...this in thumb Image src
		keyboardNav: true, //Use left & right arrows
		pauseOnHover: true, //Stop animation while hovering
		manualAdvance: false, //Force manual transitions
	
	
		captionOpacity: 0.8, //Universal caption opacity
		beforeChange: function () { }, //$('.nivo-caption').slideUp("slow")
		afterChange: function () { },
		slideshowEnd: function () { } //Triggers after all slides have been shown
	}).hover(function () { $('.nivo-caption').stop(true, true).slideDown("slow") }, function () { $('.nivo-caption').slideUp("slow") });
	//$('.nivo-caption').hide();
	$('.nivo-controlNav').insertAfter('.nivo-prevNav');
});



/* -------------------- */
/* --- Abas do Menu --- */
/* -------------------- */

/*
Movido para tag-menu.jsp para renderizacao em tempo de execucao no IE
*/





/* --------------------------------------- */
/* --- Funcao geral das abas do portal --- */
/* --------------------------------------- */

/* --- Backup para as abas antigas do portal. Deletar apos estabilizar a nova funcao --- */
(function ($) {
	$.fn.Aba = function (options) {
		var settings = {
			container: $(this).parents("ul").parent("div"),
			containeraba: '.myCont' 
		};

		options = jQuery.extend(settings, options);
		var link = this;
		$(link, options.container).click(function () {
			$(".js_formAlerta").html(""); $(".js_formAlerta").css("display","none");
			activeClass = $(this).attr('rel');
			showArea = '#' + $(this).attr('rel');
			if ($(this).parents("ul").hasClass(activeClass)) {
				$(this).addClass("select");
				$(this).parents("ul").addClass(activeClass + 'tab');
				return false;
			}else {
				$(link, options.container).each(function () {
					activeClass2 = $(this).attr('rel');
					$(this).parents("ul").removeClass(activeClass2);
					$(this).parents("ul").removeClass(activeClass + 'tab');
					$(this).removeClass("select");
				});
				$(this).parents("ul").addClass(activeClass);
				$(this).addClass("select");
				$(this).parents("ul").removeClass(activeClass + 'tab');
				$(options.containeraba).hide();
				$(showArea).show();
			}
			return false;
		});
	}
})(jQuery);




//Rodar funcao:
$(".myCont:last-child").ready(function(){
	if( $(".myTab").length > 0 ) {
		//Iniciar funcao:
		$(".myTab li a").Aba({
			containeraba: '.myCont'
		});
	}
});
/* --- Fim Backup --- */




/* --- Nova funcao de abas do portal --- */
(function ($) {
	$.fn.AbaFunc = function (options) {
		var settings = {
			container: $(this).parents("ul").parent("div"),
			containeraba: '.js_tabCont' 
		};

		options = jQuery.extend(settings, options);
		var link = this;
		$(link, options.container).click(function () {
			$(".js_formAlerta").html(""); $(".js_formAlerta").css("display","none");
			activeClass = $(this).attr('rel');
			showArea = '#' + $(this).attr('rel');
			
			if ($(this).parents("ul").hasClass(activeClass)) {
				return false;
			}else {
				$(link, options.container).each(function () {
					activeClass2 = $(this).attr('rel');
					$(this).parents("ul").removeClass(activeClass2);
					$(this).parents("ul").removeClass(activeClass);
					//$(this).removeClass("select");
					$(this).parents("li").removeClass("tab_atual");
				});
				$(this).parents("ul").addClass(activeClass);
				//$(this).addClass("select");
				$(this).parents("li").addClass("tab_atual");
				$(options.containeraba).hide();
				$(showArea).show();
			}
			return false;
		});
	}
})(jQuery);


//Rodar funcao para Abas (replica de subaba):
function init_abas() {
	if( $(".js_tab").length > 0 ) {

		// Sumir com todos os conteudos:
		$(".js_tabCont").css("display","none");
	
		
		/* --- Abrir conteudo default --- */
		
		//Aba default é a ultima class do ul
		var tabDefault = $(".js_tab").attr("class").split(' ').slice(-1); // A ultima class colocada no ul
		
		//Pegar parametro:
		var tabParam = $.getUrlVar('aba');
		
		//Se tiver o parametro "subaba", ela será o default:
		if(tabParam != undefined) {
			//Se tiver tralha nesse parametro, desconsideramos:
			var tabParamTratamento=tabParam.split('#'); tabParam=tabParamTratamento[0];
			$(".js_tab").removeClass(""+tabDefault+"");
			$(".js_tab").addClass(tabParam);
			// Poderia fazer assim tb: <ul id="tab" class="js_tab js_tabOutraAba">
			tabDefault = tabParam;
		}
		
		//Exibir (era invisivel no css):
		$("#"+tabDefault).css("display","block");

		// Destacar a aba inicial (o id desse conteudo tb é o rel da aba-link que chama ele. Por sua vez, o li que envolve essa aba-link deve ser destacado)
		$("a[rel="+tabDefault+"]").parents("li").addClass("tab_atual");
		/* ------------------------------- */

		// Repartir largura entre abas:
		if( $(".js_tab li").length > 1 ) { //Se tiver duas abas ou mais
			var tabLarg = $(".js_tab").css("width").replace("px","");
			
			var tabNumb = $(".js_tab li").length;
			$(".js_tab li").css("width",tabLarg/(tabNumb)+"px");
			$(".js_tab li a").css("width",tabLarg/(tabNumb)+"px");
		}else{
			$(".js_tab li a").css("padding-left","60px");
			$(".js_tab li a").css("padding-right","60px");
		}
		
		//Exibir (era invisivel no css):
		$("ul#tab li").css("visibility","visible");
		
		//bg:
		$("ul#tab").css("background","url(/system/modules/br.gov.almg.site/resources/img/abas/tab_base.gif) 0 100% repeat-x");

		// Iniciar funcao:
		$(".js_tab li a").AbaFunc({
			containeraba: '.js_tabCont'
		});
	}
}
//Iniciar funcao. O Google Chrome apresentou problemas com o evento ready
if($.browser.webkit) {
	$(window).load(function() {
		init_abas();
	});
}else{
	$(".js_tab:last-child").ready(function(){ //$(".js_tabCont:last-child").ready(function(){
		init_abas();
	});
}



//Rodar funcao para SubAbas (replica de aba):
function init_subabas() {
	if( $(".js_tabsub").length > 0 ) {
	
		// Sumir com todos os conteudos:
		$(".js_tabsubCont").css("display","none");
		
	
		/* --- Abrir conteudo default --- */
		
		//SubAba default é a ultima class do ul
		var tabsubDefault = $(".js_tabsub").attr("class").split(' ').slice(-1); // A ultima class colocada no ul
		
		//Pegar parametro:
		var tabsubParam = $.getUrlVar('subaba');
		
		//Se tiver o parametro "subaba", ela será o default:
		if(tabsubParam != undefined) {
			//Se tiver tralha nesse parametro, desconsideramos:
			var tabsubParamTratamento=tabsubParam.split('#'); tabsubParam=tabsubParamTratamento[0];
			$(".js_tabsub").removeClass(""+tabsubDefault+"");
			$(".js_tabsub").addClass(tabsubParam);
			// Poderia fazer assim tb: <ul id="tabsub" class="js_tabsub js_tabOutraAbaSub">
			tabsubDefault = tabsubParam;
		}
		
		//Exibir (era invisivel no css):
		$("#"+tabsubDefault).css("display","block");

		// Destacar a aba inicial (o id desse conteudo tb é o rel da aba-link que chama ele. Por sua vez, o li que envolve essa aba-link deve ser destacado)
		$("a[rel="+tabsubDefault+"]").parents("li").addClass("tab_atual");
		/* ------------------------------- */

		// Repartir largura entre abas:
		/* Não será usado nas subabas*/
		
		//Exibir (era invisivel no css):
		$("ul#tabsub li").css("visibility","visible");
		
		//bg:
		$("ul#tabsub").css("background","url(/system/modules/br.gov.almg.site/resources/img/abas/tabsub_base.gif) 0 100% repeat-x");
	
		// Iniciar funcao:
		$(".js_tabsub li a").AbaFunc({
			containeraba: '.js_tabsubCont'
		});
	}
}
//Iniciar funcao
$(".js_tabsub:last-child").ready(function(){ //$(".js_tabsubCont:last-child").ready(function(){
	init_subabas();
});
/* --- Fim nova funcao --- */
	







/* ----------------- */
/* --- Check All --- */
/* ----------------- */
//Marcar/Desmarcar todos checkbox

var objCheckBtn = ".js_tickCheckBtn";
var objCheckAll = ".js_tickCheckAll";
var objCheckLab = ".js_tickCheckLabel";

$(objCheckBtn+":last-child").ready(function(){
	$(objCheckBtn).each(function(idx, item) { //Para cada elemento, inserimos uma class seguida de um numero de indentificacao (de acordo com a ordem de renderizacao da pagina)
		$(item).removeClass("js_tickCheckBtn").addClass("js_tickCheckBtn" + idx);

		$(item).click(function() {
			run_action(idx,$(item).attr('checked'));
		});
	});
});


$(objCheckAll+":last-child").ready(function(){
	$(objCheckAll).each(function(idx, item) { //Para cada elemento, inserimos uma class seguida de um numero de indentificacao (de acordo com a ordem de renderizacao da pagina)
		$(item).removeClass("js_tickCheckAll").addClass("js_tickCheckAll" + idx);
		
		$(item).click(function() {
			init_action(idx);
		});
		
		init_action(idx);
	});
});

$(objCheckLab+":last-child").ready(function(){
	$(objCheckLab).each(function(idx, item) { //Para cada elemento, inserimos uma class seguida de um numero de indentificacao (de acordo com a ordem de renderizacao da pagina)
		$(item).removeClass("js_tickCheckLabel").addClass("js_tickCheckLabel" + idx);
		init_action(idx);
	});
});

/* -------------------- */

function init_action(laco) {
	if($(objCheckAll + laco + " input[type=checkbox]:checked").length > 0){
		$(objCheckBtn + laco).attr("checked", true);
		$(objCheckBtn + laco).attr('title','Desmarcar tudo');
		if($(objCheckBtn + laco).length != 0) { $(objCheckLab + laco).html("Desmarcar tudo"); }
	}else{
		$(objCheckBtn + laco).attr("checked", false);
		$(objCheckBtn + laco).attr('title','Marcar tudo');
		if($(objCheckBtn + laco).length != 0) { $(objCheckLab + laco).html("Marcar tudo"); }
	}
}

function run_action(laco,checado) {
	if(checado=="checked" || checado==true){
		$(objCheckBtn + laco).attr("checked", true);
		$(objCheckBtn + laco).attr('title','Desmarcar tudo');
		if($(objCheckBtn + laco).length != 0) { $(objCheckLab + laco).html("Desmarcar tudo"); }
		
		
		//$(objCheckAll + laco + " input[type=checkbox]").attr('checked',true);
		$(objCheckAll + laco + " input[type=checkbox]").each(function(idx, item) { //Para cada elemento
			if( $(item).attr("disabled") != true && $(item).attr("disabled") != "disabled" ){
				$(item).attr('checked',true);
			}
		});
	}else{
		$(objCheckBtn + laco).attr("checked", false);
		$(objCheckBtn + laco).attr('title','Marcar tudo');
		if($(objCheckBtn + laco).length != 0) { $(objCheckLab + laco).html("Marcar tudo"); }
		
		$(objCheckAll + laco + " input[type=checkbox]").attr('checked',false);
	}
}






/* ---------------------------------------------------------- */
/* --- Inserindo Seletores Class para todas as tags INPUT --- */
/* ---------------------------------------------------------- */

$("input:last-child").ready(function(){
	$("input[type=text], input[type=password]").each(function(idx, item) {
		$(item).addClass("js_typeTexts");
	});
	$("input[type=submit], input[type=button], input[type=reset]").each(function(idx, item) {
		$(item).addClass("js_typeButtons");
	});
	$("input[type=image]").each(function(idx, item) {
		$(item).addClass("js_typeImages");
	});
	$("input[type=radio]").each(function(idx, item) {
		$(item).addClass("js_typeRadios");
	});
	$("input[type=checkbox]").each(function(idx, item) {
		$(item).addClass("js_typeChecks");
	});
});






/* -------------------------- */
/* --- Decode INPUT value --- */
/* -------------------------- */

/*
Decodificar valor de um input
unescape e decode

HowTo:
Class "js_urlDecode" no input
Use o atributo html5 data-js_urlDecodeParam="" e coloque no valor o nome do parametro (query)

Bug Conhecido: O unescape eh realizado quando a url esta codificada, mas tb qndo nao esta codificada

Situacao: Abortado

$("input.js_urlDecode:last-child").ready(function(){
	$("input.js_urlDecode").each(function(idx, item) {
		if($(item).attr("data-js_urlDecodeParam")!=undefined){
			var paramToDecode = $(item).attr("data-js_urlDecodeParam");
			var valToDecode = $.getUrlVar(paramToDecode);
			
			if(valToDecode!=undefined){ // Realizar a troca apenas se existir o parametro		
				valToDecode = valToDecode.toString();
				valToDecode = unescape(valToDecode); //Problema: executa mesmo quando a acentuacao ja esta correta
				$(item).val(valToDecode);
			}
		}
		
	});
});
*/



/* ------------------------------------------------------------------- */
/* --- 1 de 3) Efeitos e Validacoes de formularios (Criar funcoes) --- */
/* ------------------------------------------------------------------- */

// Variavel para submeter (ou nao submeter) o formulario. Se tiver erros no form, sera false. Caso contrario, sera true
var submitFormulario; // Return geral para parar a submissão dos formularios devido a algum erro.


/* -------------------------------------- */
/* --- 1 de 3, a) Funcoes de mascaras --- */
/* -------------------------------------- */

// Desabiltar letras / habilitar somente numeros - Opcao 1
function somenteNumero(event) {
	var code = event.which;
	if (code == 8 || code == 9 || code == 46 || (code >= 33 && code <= 46) || (code >= 48 && code <= 57) || (code >= 96 && code <= 105)) {
		return true;
	}else{
		return false;
	}
}

// Desabiltar letras / habilitar somente numeros - Opcao 2
function numbersOnly(myfield, e, dec) {
	// copyright 1999 Idocs, Inc. http://www.idocs.com
	// Distribute this script freely but keep this notice in place
	
	var key; var keychar;
	
	if (window.event) { // IE
		key = window.event.keyCode;
	}else if (e){ // Safari 4, Firefox 3.0.4
		key = e.which;
	}else{
		return true;
	}
	keychar = String.fromCharCode(key);

	if ((key==null) || (key==0) || (key==8) || (key==9) || (key==13) || (key==27) ) { // control keys
		return true;
	}else if ((("0123456789").indexOf(keychar) > -1)) { // numbers
		return true;
	}else if (dec && (keychar == ".")) { // decimal point jump
		myfield.form.elements[dec].focus();
		return false;
	}else{
		return false;
	}
}

$(".js_campoNumerico:last-child").ready( function() {
	$(".js_campoNumerico").bind("keydown", function(event) {
		/*return numbersOnly(this, event);*/ return somenteNumero(event);
	});
});




// Funcao de Mascara Geral
function mascarar(campo, mascara, event) {
	var posicao = campo.val().length;
	var mascara = mascara;
	var usarMascara = true;
	var code = event.which;
	if (code == 0 || code == 8 || code == 9 || code == 46 || (code >= 33 && code <= 46))
		usarMascara = false;
	if (usarMascara) {
		if (mascara.substring(posicao, posicao + 1) != "#") {
			campo.val(campo.val() + mascara.substring(posicao, posicao + 1));
		}
	}
}


// Mascaras Especificas
$(".ddd").ready( function() {
	$(".ddd").css("text-align","center");
	$(".ddd").attr("maxlength", 2);
	$(".ddd").bind("keydown", function(event) {
		/*return numbersOnly(this, event);*/ return somenteNumero(event);
	});
	$(".ddd").bind("keypress", function(event) {
		mascarar($(this), "##", event);
	});
});
$(".telefone").ready( function() {
	$(".telefone").attr("maxlength", 8);
	$(".telefone").bind("keydown", function(event) {
		/*return numbersOnly(this, event);*/ return somenteNumero(event);
	});
	$(".telefone").bind("keypress", function(event) {
		mascarar($(this), "########", event);
	});
});
	$(".telefone_completo").ready( function() {
		$(".telefone_completo").attr("maxlength", 13);
		$(".telefone_completo").bind("keydown", function(event) {
			/*return numbersOnly(this, event);*/ return somenteNumero(event);
		});
		$(".telefone_completo").bind("keypress", function(event) {
			mascarar($(this), "(##)####-####", event);
		});
	});
	$(".hora").ready( function() {
		$(".hora").attr("maxlength", 5);
		$(".hora").bind("keydown", function(event) {
			/*return numbersOnly(this, event);*/ return somenteNumero(event);
		});
		$(".hora").bind("keypress", function(event) {
			mascarar($(this), "##:##", event);
		});
	});
$(".cep").ready( function() {
	$(".cep").attr("maxlength", 9);
	$(".cep").bind("keydown", function(event) {
		/*return numbersOnly(this, event);*/ return somenteNumero(event);
	});
	$(".cep").bind("keypress", function(event) {
		mascarar($(this), "#####-###", event);
	});
});
$(".cpf").ready( function() {
	$(".cpf").attr("maxlength", 14);
	$(".cpf").bind("keydown", function(event) {
		/*return numbersOnly(this, event);*/ return somenteNumero(event);
	});
	$(".cpf").bind("keypress", function(event) {
		mascarar($(this), "###.###.###-##", event);
	});
});
$(".cnpj").ready( function() {
	$(".cnpj").attr("maxlength", 18);
	$(".cnpj").bind("keydown", function(event) {
		/*return numbersOnly(this, event);*/ return somenteNumero(event);
	});
	$(".cnpj").bind("keypress", function(event) {
		mascarar($(this), "##.###.###/####-##", event);
	});
});
$(".datas").ready( function() { /* Mascara tooltip calendario */
	$(".datas").attr("maxlength", 10);
	$(".datas").bind("keydown", function(event) {
		/*return numbersOnly(this, event);*/ return somenteNumero(event);
	});
	$(".datas").bind("keypress", function(event) {
		mascarar($(this), "##/##/####", event);
	});

});




// Limpar mascaras
$("input[type=text]:last-child").ready( function() {
	$("input[type=text]").keypress( function() {
		if($(this).hasClass("js_formCampoErro"))
			$(this).removeClass("js_formCampoErro"); $(this).parent('li').find('label').removeClass("js_formLabelErro");
	});
});
$("input[type=password]:last-child").ready( function() {
	$("input[type=password]").keypress( function() {
		if($(this).hasClass("js_formCampoErro"))
			$(this).removeClass("js_formCampoErro"); $(this).parent('li').find('label').removeClass("js_formLabelErro");
	});
});
$("select").ready( function() {
	$("select").change( function() {
		if($(this).hasClass("js_formCampoErro"))
			$(this).removeClass("js_formCampoErro"); $(this).parent('li').find('label').removeClass("js_formLabelErro");
	});
});
$("textarea").ready( function() {
	$("textarea").keypress( function() {
		if($(this).hasClass("js_formCampoErro"))
			$(this).removeClass("js_formCampoErro"); $(this).parent('li').find('label').removeClass("js_formLabelErro");
	});
});
$(".mascarar").ready( function() {
	$(".mascarar").keypress( function(event) {
		mascarar($(this), $(this).attr("rel"), event);
	});
});





/* --------------------------------------- */
/* --- 1 de 3, b) Funcoes de validacao --- */
/* --------------------------------------- */

// Validar Obrigatorio
function validarObrigatorio(getElem) {
	if(getElem.val()=="" || getElem.val()=="0" || getElem.val()=="99" || getElem.val()=="999" || getElem.val()=="9999" || getElem.val()=="99999"  || getElem.val()==getElem.attr("rel")){
		return false
	}else{
		return true;
	}
}

// Validar UF
function validarUF(getElem) {
	if(getElem.val()!="" && getElem.val()!="0" && getElem.val()!="99" && getElem.val()!="999" && getElem.val()!="9999" && getElem.val()!="99999"  && getElem.val()!=getElem.attr("rel")
	&& getElem.val().length<2){
		return false
	}else{
		return true;
	}
}

// Validar DDD
function validarDDD(getElem) {
	if(getElem.val().length<2){
		return false
	}else{
		return true;
	}
}

// Validar Telefone
function validarTel(getElem) {
	if(getElem.val().length < 8){
		return false
	}else{
		return true;
	}
}

// Validar Cep
function validarCEP(getElem) {
	if(getElem.val().length < 8){ //8 ao inves de 9. Pq alguns ceps pre-preenchidos do apoio as camaras (fale com) aparecem sem o hifen
		return false
	}else{
		return true;
	}
}

// Validar Cpf
function validarCPF(cpf) {
	cpf = cpf.replace(".", "").replace(".", "").replace("-", "");
	erro = new String;
	if (cpf.length < 11)
		return false; 
	var nonNumbers = /\D/;
	if (nonNumbers.test(cpf))
		erro += "A verificacao de CPF suporta apenas numeros! \n\n";
	if (cpf == "00000000000" || cpf == "11111111111" || cpf == "22222222222" || cpf == "33333333333" || cpf == "44444444444" || cpf == "55555555555" || cpf == "66666666666" || cpf == "77777777777" || cpf == "88888888888" || cpf == "99999999999") {
		return false; 
	}
	var a = [];
	var b = new Number;
	var c = 11;
	for (i = 0; i < 11; i++) {
		a[i] = cpf.charAt(i);
		if (i < 9)
			b += (a[i] * --c);
	}
	if ((x = b % 11) < 2) {
		a[9] = 0
	}else{
		a[9] = 11 - x
	}
	b = 0;
	c = 11;
	for (y = 0; y < 10; y++)
		b += (a[y] * c--);
	if ((x = b % 11) < 2) {
		a[10] = 0;
	}else{
		a[10] = 11 - x;
	}
	if ((cpf.charAt(9) != a[9]) || (cpf.charAt(10) != a[10])) {
		return false;
	}
	return true;
}


// Varificar se o cnpj é válido
function validarCnpj(cnpj){
	var cnpjSemPontos = cnpj.replace(/-/g,"").replace(/\./g,"").replace(/[/]/g,"");
	if (isNaN(cnpjSemPontos)) {
	 return false;
	}
	var i;
	var c = cnpjSemPontos.substr(0,12);
	var dv = cnpjSemPontos.substr(12,2);
	var d1 = 0;
	for (i = 0; i <12; i++){
	 d1 += c.charAt(11-i)*(2+(i % 8));
	}
	if (d1 == 0){
		return false;
	}
	d1 = 11 - (d1 % 11);
	if (d1 > 9){
		d1 = 0;
	}
	if (dv.charAt(0) != d1){
	 return false;
	}
	d1 *= 2;
	for (i = 0; i < 12; i++){
		d1 += c.charAt(11-i)*(2+((i+1) % 8));
	}
	d1 = 11 - (d1 % 11);
	if (d1 > 9){
		d1 = 0;
	}
	if (dv.charAt(1) != d1){
	 return false;	
	}
	return true;
}



//Validar Data

/* DHTML date validation script. Courtesy of SmartWebby.com (http://www.smartwebby.com/dhtml/datevalidation.asp)  */
// Declaring valid date character, minimum year and maximum year
var dtCh= "/";
var minYear=1900;
var maxYear=2100;

function isInteger(s){
	var i;
    for (i = 0; i < s.length; i++){   
        // Check that current character is number.
        var c = s.charAt(i);
        if (((c < "0") || (c > "9"))) return false;
    }
    // All characters are numbers.
    return true;
}

function stripCharsInBag(s, bag){
	var i;
    var returnString = "";
    // Search through string's characters one by one.
    // If character is not in bag, append to returnString.
    for (i = 0; i < s.length; i++){   
        var c = s.charAt(i);
        if (bag.indexOf(c) == -1) returnString += c;
    }
    return returnString;
}

function daysInFebruary (year){
	// February has 29 days in any year evenly divisible by four,
    // EXCEPT for centurial years which are not also divisible by 400.
    return (((year % 4 == 0) && ( (!(year % 100 == 0)) || (year % 400 == 0))) ? 29 : 28 );
}
function DaysArray(n) {
	for (var i = 1; i <= n; i++) {
		this[i] = 31
		if (i==4 || i==6 || i==9 || i==11) {this[i] = 30}
		if (i==2) {this[i] = 29}
   } 
   return this
}

var validarDataMsg;
function validarData(dtStr){
	var daysInMonth = DaysArray(12)
	var pos1=dtStr.indexOf(dtCh)
	var pos2=dtStr.indexOf(dtCh,pos1+1)
	var strDay=dtStr.substring(0,pos1)
	var strMonth=dtStr.substring(pos1+1,pos2)
	var strYear=dtStr.substring(pos2+1)
	strYr=strYear
	if (strDay.charAt(0)=="0" && strDay.length>1) strDay=strDay.substring(1)
	if (strMonth.charAt(0)=="0" && strMonth.length>1) strMonth=strMonth.substring(1)
	for (var i = 1; i <= 3; i++) {
		if (strYr.charAt(0)=="0" && strYr.length>1) strYr=strYr.substring(1)
	}
	
	day=parseInt(strDay)
	month=parseInt(strMonth)
	year=parseInt(strYr)

	if (pos1==-1 || pos2==-1){
		validarDataMsg = "<p>Preencha uma <b>data</b> válida no formato: dd/mm/aaaa</p>";
		return validarDataMsg;
	}
	if (strDay.length<1 || day<1 || day>31 || (month==2 && day>daysInFebruary(year)) || day > daysInMonth[month]){
		validarDataMsg = "<p>Por favor, preencha um <b>dia</b> válido</p>";
		return validarDataMsg;
	}
	if (strMonth.length<1 || month<1 || month>12){
		validarDataMsg = "<p>Por favor, preencha um <b>mês</b> válido</p>";
		return validarDataMsg;
	}
	if (strYear.length != 4 || year==0 || year<minYear || year>maxYear){
		validarDataMsg = "<p>Por favor, preencha um <b>ano</b> entre "+minYear+" and "+maxYear+"</p>";
		return validarDataMsg;
	}
	if (dtStr.indexOf(dtCh,pos2+1)!=-1 || isInteger(stripCharsInBag(dtStr, dtCh))==false){
		validarDataMsg = "<p>Por favor, preencha uma <b>data</b> válida</p>";
		return validarDataMsg;
	}

	return true
}


//Validar Data Futura
function validarDataFutura(dtStr){
	var dataTotl = dtStr.split("/");
	dataTotl = dataTotl[2] + "" + dataTotl[1]  + "" + dataTotl[0];
	
	var currToday = new Date(); var currTodayDD = currToday.getDate(); var currTodayMM = currToday.getMonth()+1; //January is 0!
	var currTodayYYYY = currToday.getFullYear(); if(currTodayDD<10){currTodayDD='0'+currTodayDD} if(currTodayMM<10){currTodayMM='0'+currTodayMM}
	var currToday = currTodayYYYY + "" + currTodayMM + "" + currTodayDD;
	
	if(dataTotl < currToday){
		return false;
	}
	
	return true
}


//Validar Data Periodo
var validarDataPeriodoMsg;
function validarDataPeriodo(objeto){

	var dataTotl = $(".datas_periodoInit").val().split("/");
	dataTotl_montagem = dataTotl[2] + "" + dataTotl[1]  + "" + dataTotl[0];
	
	var dataTotl2 = $(".datas_periodoEnd").val().split("/");
	dataTotl2_montagem = dataTotl2[2] + "" + dataTotl2[1]  + "" + dataTotl2[0];
	
	if( (dataTotl!=undefined && dataTotl2==undefined) || (dataTotl!="" && dataTotl2=="") ) { //Se o campo inicial estiver preenchido e o outro nao
		validarDataPeriodoMsg = "<p>Preencha a <b>data final</b></p>";
		return validarDataPeriodoMsg;
	}
	
	if( (dataTotl==undefined && dataTotl2!=undefined) || (dataTotl=="" && dataTotl2!="") ) { //Se o campo final estiver preenchido e o outro nao
		validarDataPeriodoMsg = "<p>Preencha a <b>data inicial</b></p>";
		return validarDataPeriodoMsg;
	}
	
	if(Number(dataTotl2_montagem) < Number(dataTotl_montagem)){
		if(objeto.attr("class").indexOf("datas_periodoEnd")!=-1){ //Apenas quando for um dos objetos para nao passar a mensagem duplicada
		validarDataPeriodoMsg = "<p>A <b>data inicial</b> deve ser menor do que a <b>data final</b></p>";
		return validarDataPeriodoMsg;
		}
	}
	
	return true
}



// Validar Email
function checkMail(mail) {
	var er = new RegExp(
			/^[A-Za-z0-9_\-\.]+@[A-Za-z0-9_\-\.]{2,}\.[A-Za-z0-9]{2,}(\.[A-Za-z0-9])?/);
	if (typeof (mail) == "string") {
		if (er.test(mail)) {
			return true;
		}
	}else if (typeof (mail) == "object") {
		if (er.test(mail.value)) {
			return true;
		}
	}else {
		return false;
	}
}



//Asteriscos
function addAsterisco(obj) {
	var acharAsterico = obj.parent('li').find('label').text().split('*');
	
	if(acharAsterico[1] == undefined){ // Se ja existir um asterisco, nao colocará outro (ex: ddd e telefone estão abaixo do mesmo label. Se os dois sao obrigatorios, nao existe a necessisade de dois astericos
		obj.parent('li').find('label').append(" *"); // Inserir o asterico apos o label
		
		//obj.parent('li').find('label').html("* " + obj.parent('li').find('label').text()); // Inserir o asterisco antes do label
		
		/*var acharDoisPts = obj.parent('li').find('label').html().split(':');
		if(acharDoisPts[1] != undefined){
			obj.parent('li').find('label').html(acharDoisPts[0] + "*:" + acharDoisPts[1]); // Inserir o asterisco antes do dois pontos do label
		}*/
	}
}
function removeAsterisco(obj) {
	obj.parent('li').find('label').text( obj.parent('li').find('label').text().replace("*","") ); 
}



//Calendarios
//Falta nomenclatura e padronizacao js_*
$("a[mode=cal]:last-child").ready(function() {

	$('a[mode=cal]').click(function(){
		var _target = "#"+$(this).attr("rel");
		$("#"+$(this).attr("rel")).removeClass("js_formCampoErro");
		
		$(this).calendario({
			target:_target,
			top:19,
			//left:-127
			left:0
		});
		
		return false;
	});
});




// Tratamento js_formAlerta 1 de 4 (Rolagem automatica do alerta)
function js_formAlertaRoll(origem){
	$(".js_formAlerta").css("display","");

	if(origem == "captcha"){
		$(".js_formAlerta").css("display","block");
		window.setTimeout('goToByScroll(".js_formAlerta:visible");', 500);
	}else{
		if ( (f_scrollTop() + alturaBarra) > $(".js_formAlerta:visible").offset().top) { // Só será ancorado se a posição Y da barra de rolagem for maior que a posicao da ancora
			//window.setTimeout("$('html,body').animate({ scrollTop: $('.js_formAlerta:visible').offset().top - alturaBarra},100);", 100);
			$('html,body').animate({ scrollTop: $('.js_formAlerta:visible').offset().top - alturaBarra},100);
			//goToByScroll com vel maior p evitar bug ao rolar pag imediatamente pos a goToByScroll
		}
	}
}





/* ----------------------------------- */
/* --- Inicia document ready Geral --- */
/* ----------------------------------- */
$(document).ready(function(){


	
	/* ---------------------------------------------------------------------- */
	/* --- 2 de 3) Efeitos e Validacoes de formularios 2 de 3 (submissao) --- */
	/* ---------------------------------------------------------------------- */

	// Tratamento js_formAlerta 2 de 4 (Init do elemento-alerta)
	if($(".js_formAlerta").length > 0) { //Se existir o elemento-alerta (Para Captcha, é preciso que o elemento-vazio exista inline, pq o retorno é via jsp. Nao é uma verificacao js)
		if($(".js_formAlerta").text() == ""){ // Se o elemento-alerta estiver vazio (ainda no caso do captcha: como ele está inline, ele inicia vazio)
			$(".js_formAlerta").css("display","none"); //Iniciar invisivel
		}else{ //Se tiver conteudo (no retorno desse captcha, trara conteudo)
			js_formAlertaRoll("captcha");
		}
	}


	// Colocar astericos nos campos obrigatorios
	$(".obrigatorio").each( function(idx, item) {
		addAsterisco($(item));
	});
	
	

	/* ------------------------------------------ */
	/* --- 2 de 3, a) Submissao de formulario --- */
	/* ------------------------------------------ */
	$("form").submit(function(){
		
		// Tratamento js_formAlerta 3 de 4 (onsubmit do elemento-alerta)
		if($(this).find(".js_formAlerta").length == 0){ //Insere o elemento-alerta somente se não existir. (Para Captcha, o elemento-alerta existe inline. Após uma submissao com erros, o elemento-alerta tb ja foi criado). "visible", pq exitem formularios em abas. Nesse caso, se um recebeu o alerta e o outro nao, o primeiro tem o elemento-alerta, o segundo nao. Logo, devemos testar visible's
			$(this).find('ul').first().prepend('<li class="js_formAlerta" style="display:none;"></li>');
		}else{ //Após uma submissao com erros o elemento foi criado e possui conteudo. Numa segunda submissao, temos que limpar o conteudo
			$(".js_formAlerta").html(""); //Limpar alertas anteriores;
		}


		// Preencher pelo menos 1 campo do formulario:
		var umObrigatorioValues="";
		var umObrigatorioValidate=false;

		$(this).find(".um-obrigatorio:visible").each(function(){
			if($(this).attr("type")=="checkbox"){
				if($(this).attr("checked")=="checked" || $(this).attr("checked")==true ) {
					umObrigatorioValues += $(this).val();
				}
				umObrigatorioValidate=true;
			}else{
				umObrigatorioValues += $(this).val();
				umObrigatorioValidate=true;
			}
			
		});
		//alert(umObrigatorioValues + " / " + umObrigatorioValidate);
		if(umObrigatorioValues=="" && umObrigatorioValidate) {
			$(".js_formAlerta").append("<p>Para realizar a busca é necessário o preenchimento de um dos campos abaixo.</p>");
			js_formAlertaRoll();
		}


		/* --------------------------------------------- */
		/* --- 2 de 3, b) Validacoes de obrigatorios --- */
		/* --------------------------------------------- */
		$(this).find(":input:visible").each( function(idx, item) { //$(this).find(".obrigatorio:visible").each( function(idx, item) {
		
			//Limpar formatacoes antigas (de um form pre-avaliado com erros)
			$(this).removeClass("js_formCampoErro"); $(this).parent('li').find('label').removeClass("js_formLabelErro");
		
			if ($(this).hasClass("obrigatorio")) {
			
				/* Excecao 1 de 2 */
				if ($(this).hasClass("ddd") && !validarObrigatorio($(this))) {
					//Estilo:
					$(this).addClass("js_formCampoErro"); $(this).parent('li').find('label').addClass("js_formLabelErro");
					
					//Mensagem:
					//É uma excecao pois o ddd e o telefone geralemente estao juntos. Logo, o label é compartilhado. Para nao duplicar a mesma mensagem, criamos essa excecao
					$(".js_formAlerta").append("<p>Preencha o <b>ddd</b></p>");
					
				/* Padrao */
				}else if (!validarObrigatorio($(this))) {
					//Estilo:
					$(this).addClass("js_formCampoErro"); $(this).parent('li').find('label').addClass("js_formLabelErro");
		
					//Mensagem:
					if($(this).parents('li').find('label').html() != null ) { //Se existir um label acima do campo, usamos o valor desse label para identificar o aviso:
						
						/* Excecao 2 de 2 */
						if($(this).parents('li').find('label').text().indexOf("Captcha")!=-1) { //Se o label for Captcha, inserimos uma mensagem mais amigavel
							$(".js_formAlerta").append("<p>Digite as palavras que aparecem ao final do formulário</p>");
						}else{ //Padrao: Pegamos o label e inserimos no alerta
							$(".js_formAlerta").append("<p>Preencha o campo <b>"+$(this).parents('li').find('label').html().replace(':','').replace('*','').replace($(".hint").html(),'')+"</b></p>");
						}
						
					}else{ //Se nao existir label
						$(".js_formAlerta").append("<p>Preencha o <b>" + Number(idx+1) + "&ordm;</b> campo abaixo</p>");
					}
				}
			}


			/* -------------------------------------------- */
			/* --- 2 de 3, c) Validacoes de confirmacao --- */
			/* -------------------------------------------- */
			
			//Senha entre 6 e 20 caracteres
			if ($(this).hasClass("senha")) {
				if($(this).val().length>0 && ($(this).val().length<6 || $(this).val().length>20)){
					//Estilo
					$(this).addClass("js_formCampoErro"); $(this).parent('li').find('label').addClass("js_formLabelErro");
					
					//Mensagem:
					$(".js_formAlerta").append("<p>A <strong>senha</strong> precisa ter entre <strong>6 e 20 caracteres</strong></p>");
				}
			}
			
			//Confirmar Senha:
			if ($(this).hasClass("confirmarSenha")) {
				if($(".senha").val().length>0 && $(this).val()!=$(".senha").val()) {
					//Estilo
					$(this).addClass("js_formCampoErro"); $(this).parent('li').find('label').addClass("js_formLabelErro");
					
					//Mensagem:
					$(".js_formAlerta").append("<p>O campo <strong>confirmar senha</strong> está diferente da senha informada.</p>");
				}
			}
			
			//Confirmar Email:
			if ($(this).hasClass("confirmarEmail")) {
				if($(".email").val().length>0 && $(this).val() != $(".email").val()) {
					//Estilo:
					$(this).addClass("js_formCampoErro"); $(this).parent('li').find('label').addClass("js_formLabelErro");
					
					//Mensagem:
					$(".js_formAlerta").append("<p>O Campo <strong>confirmar email</strong> está diferente do email informado.</p>");
				}
			}
			
			
			/* ---------------------------------------------------------------------------- */
			/* --- 2 de 3, d) Validacoes de NAO obrigatorios, mas que foram preenchidos --- */
			/* ---------------------------------------------------------------------------- */
			
			//UF:
			if ($(this).hasClass("uf")) {
				if ($(this).val()!="" &&  !validarUF($(this))) {
					//Estilo:
					$(this).addClass("js_formCampoErro"); $(this).parent('li').find('label').addClass("js_formLabelErro");
					
					//Mensagem:
					$(".js_formAlerta").append("<p>Selecione uma <b>UF</b> válida</p>");
				}
			}
			
			//DDD:
			if ($(this).hasClass("ddd")) {
				if ($(this).val()!="" &&  !validarDDD($(this))) {
					//Estilo:
					$(this).addClass("js_formCampoErro"); $(this).parent('li').find('label').addClass("js_formLabelErro");
					
					//Mensagem:
					$(".js_formAlerta").append("<p>Preencha um <b>ddd</b> válido</p>");
				}
			}
			
			//Telefone:
			if ($(this).hasClass("telefone")) {
				if ($(this).val()!="" &&  !validarTel($(this))) {
					//Estilo:
					$(this).addClass("js_formCampoErro"); $(this).parent('li').find('label').addClass("js_formLabelErro");
					
					//Mensagem:
					$(".js_formAlerta").append("<p>Preencha um <b>telefone</b> válido</p>");
				}
			}
			
			
			//Cep:
			if ($(this).hasClass("cep")) {
				if ($(this).val()!="" && !validarCEP($(this))) {
					//Estilo:
					$(this).addClass("js_formCampoErro"); $(this).parent('li').find('label').addClass("js_formLabelErro");
					
					//Mensagem:
					$(".js_formAlerta").append("<p>Informe um <b>CEP</b> válido</p>");
				}
			}
	
			//Cpf:
			if ($(this).hasClass("cpf")) {
				if ($(this).val()!="" && !validarCPF($(this).val())) {
					//Estilo:
					$(this).addClass("js_formCampoErro"); $(this).parent('li').find('label').addClass("js_formLabelErro");
					
					//Mensagem:
					$(".js_formAlerta").append("<p>Informe um <b>CPF</b> válido</p>");
				}
			}
			
			//Cnpj:
			if ($(this).hasClass("cnpj")) {
				if ($(this).val()!="" && !validarCnpj($(this).val())) {
					//Estilo:
					$(this).addClass("js_formCampoErro"); $(this).parent('li').find('label').addClass("js_formLabelErro");
					
					//Mensagem:
					$(".js_formAlerta").append("<p>Informe um <b>CNPJ</b> válido</p>");
				}
			}
			
			//Datas
			if ($(this).hasClass("datas")) {
				if ($(this).val()!="" && validarData($(this).val())!=true){
					//Estilo:
					$(this).addClass("js_formCampoErro"); $(this).parent('li').find('label').addClass("js_formLabelErro");
					
					//Mensagem:
					$(".js_formAlerta").append(validarDataMsg);
				}
			}
			
			//Datas Futuras
			if ($(this).hasClass("datas_futuras")) {
				if ($(this).val()!="" && validarDataFutura($(this).val())!=true){
					//Estilo:
					$(this).addClass("js_formCampoErro"); $(this).parent('li').find('label').addClass("js_formLabelErro");
					
					//Mensagem:
					$(".js_formAlerta").append("<p>A <b>data</b> preenchida deve ser maior que a data atual</p>");
				}
			}
			
			//Datas Periodo
			if ($(this).hasClass("datas_periodoInit") || $(this).hasClass("datas_periodoEnd")) {
				if ($(this).val()!="" && validarDataPeriodo($(this))!=true){
					//Estilo:
					$(".datas_periodoInit").addClass("js_formCampoErro"); $(".datas_periodoEnd").addClass("js_formCampoErro"); $(this).parent('li').find('label').addClass("js_formLabelErro");
					
					//Mensagem:
					$(".js_formAlerta").append(validarDataPeriodoMsg);
				}
			}
			
			//Email
			if ($(this).hasClass("email")) {
				if ($(this).val()!="" && !checkMail($(this).val())) {
					//Estilo:
					$(this).addClass("js_formCampoErro"); $(this).parent('li').find('label').addClass("js_formLabelErro");
		
					//Mensagem:
					$(".js_formAlerta").append("<p>Informe um <b>e-mail</b> válido</p>");
				}
			}
		
		});




		// Tratamento js_formAlerta 4 de 4 (retorno do alerta)
		if($(this).find(".js_formAlerta").text()!="" || $(this).find(".js_formAlertaCustom").text()!="") { //Se o js_formAlerta foi preenchido de alguma forma, significa que existe erros no form
			js_formAlertaRoll();
			submitFormulario=false;
		}else{
			$(this).find(".js_formAlerta").css("display","none");
			submitFormulario=true;
		}
		

		return submitFormulario;
	
	});
	/* ------------------------- */
	/* --- Fecha form submit --- */
	/* ------------------------- */
	
	
	
	
	
	
	
	/* ---------------------------------------------------------------------------------------------- */
	/* --- 3 de 3) Funcoes de formularios especificos (Futuramente devem se desvincular do global) --- */
	/* ---------------------------------------------------------------------------------------------- */
	
	// Especifico de Cadastro
	// Falta nomenclatura e padronizacao js_*
	// Futuramente deve se desvincular do global
	$('#ufCadastro').change(function(){
		$('#munCadastro').load('municipios.html?sigla='+$(this).val())
	});
	
	
	// Especifico de Publicacoes / Obras de referencia / Glossario de Termos Parlamentares
	// Falta nomenclatura e padronizacao js_*
	// Futuramente deve se desvincular do global
	$('input[name=chkIndiceTodos]').click(function(){
		var indiceClicado = $(this).val();
		if(this.checked){
			$('input[name=chkIndiceTodos]').attr("checked", true);
			$('input[name=chkIndice]').attr("checked", false);
			$(".resultado-radio").slideDown("slow"); 
		}else{
			$('input[name=chkIndiceTodos]').attr("checked", false);
			$(".resultado-radio").hide();
		}
	});
	$("#input-letras-glossario ul li > input").click(function(){
		var indiceClicado = $(this).val();
		if($('input[name=chkIndiceTodos]').is(':checked')){
			$('input[name=chkIndiceTodos]').attr("checked", false);
			 $(".resultado-radio").hide();
		}
		if(this.checked){
			$("#"+indiceClicado+"").slideDown("slow");
		}else{
			$("#"+indiceClicado+"").slideUp("slow");
		}
	});
	



	
	/* ------------------------------------------ */
	/* --- Ancora onload em paginas (Simples) --- */
	/* ------------------------------------------ */
	// Se tiver tralha simples na url, temos que retroceder a altura da barra do topo
	var procurarTralha = String(document.location).split('#'); //Quebrar em tralha
	if(procurarTralha[1] != undefined){ //Se tiver tralha, temos que retroceder o valor da barra do topo
		getTralha = decodeURIComponent(procurarTralha[1]);
		$('html,body').animate({ scrollTop: 0},0); //primeiro, posicionamos no topo para depois poder rolar
		if($("a[name="+getTralha+"]").length > 0) { //Somente se existir o elemento (Algumas tralhas nao sao links p/ pontos da pagina. Ou seja, nao existe um objeto). Nesse casos a tralha é apenas uma referencia no js. Ex: calendario-menor da direira #dia; #tarde; #noite.
			window.setTimeout('goToByScroll("a[name='+getTralha+']");', 500);
		}else if($("."+getTralha).length > 0) { //A prioridade é a ancora normal (if). Se nao existir, buscamos por class (É possivel usar #tralha para ancorar class) //alert('goToByScroll(".'+getTralha+'");')
			$("."+getTralha).css("display","inline"); $("."+getTralha).prev("a").addClass("active"); // Para accordions: Deixamos visivel e colocamos active no <a> anterior ao elemento (Ex: Bip, link na home)
			window.setTimeout('goToByScroll(".'+getTralha+'");', 500);
		}
	}
	


	
	/* --------------------------------------------- */
	/* --- Ancora onload em paginas (Parametros) --- */
	/* --------------------------------------------- */
	// Se a url possuir parâmetros, a página será ancorada (independente do parâmetro). Ex: para uma pesquisa pronta
	
	if($('.js_anchorPage').length > 0) {
		//$('.js_anchorPage').ready(function() {
			if(procurarTralha[1] == undefined){ //Apenas se nao tiver uma tralha. (Se tiver tralha, significa que já existe um esquema de ancora - logo, nao rolamos)	
				
				//alert($.getUrlVar("idAlb"));
				
				//if( $.getUrlVars()!="aba" || $.getUrlVars()!="aba,subaba" || $.getUrlVars().toString().indexOf("idAlb")!=-1 || $.getUrlVars().toString().indexOf("idFot")!=-1 || $.getUrlVars().toString().indexOf("idAudio")!=-1){ // Nao deve rolar: 1) Se tiver APENAS os paramentros aba ou aba e subaba; 2) Se ENCONTRAR os parametros de: album, foto e audio
				
				if( $.getUrlVars()!="aba" && $.getUrlVars()!="aba,subaba" && $.getUrlVar("idAlb")==undefined && $.getUrlVar("idFot")==undefined && $.getUrlVar("idAudio")==undefined){ // Nao deve rolar: 1) Se tiver APENAS os paramentros aba ou aba e subaba; 2) Se ENCONTRAR os parametros de: album, foto e audio
					var urlAncorar = String(document.location).split('?'); //Quebrar em parametro
					if (urlAncorar[1] != undefined) { //Se tiver parametros, entao rodamos a rolagem de pagina
						window.setTimeout('goToByScroll(".js_anchorPoint:visible:first");', 500);
					}
				}
			}
		//});
	}





	/* ------------------------------------- */
	/* --- Função Aumentar/Diminui fonte --- */
	/* ------------------------------------- */

	/* --- Backup. Aqui, o tamanho da fonte aumenta igualmente para todos ---
	var fonteInicial = Number($("body").css("font-size").replace("px",""));
	var fonteFlex = fonteInicial;

	// Excecao: Manter o corpo de fonte para alguns elementos (Coloque o seletor do elemento e dos filhos - asterisco)
	// ------------------------------------------
	// 1) Link ver todas as noticias da home e da pagina Sala da Presidencia
	// 2) Calendario da agenda da pagina Sala da Presidencia
	// 3) Links Add-this
	// 4) Breacrumbs
	// ------------------------------------------

	function fonteManter() {
		$(".todas-noticias, .todas-noticias *, .agenda-presidencia, .agenda-presidencia *, .links-comunidades, .links-comunidades *, .breadcrumbs, .breadcrumbs *, .menu-tramitacaoProjetoResumo, .menu-tramitacaoProjetoResumo *").css("font-size", fonteInicial + "px");
	}
	
	$("#js_aumentaFonte").click(function () {
		if (fonteFlex < 13) {
			fonteFlex = fonteFlex + 1;
			$("#content-home *").css({ "font-size": fonteFlex + "px" });
			$("#content-interna *").css({ "font-size": fonteFlex + "px" });
			 fonteManter();
		}
	});

	$("#js_diminuiFonte").click(function ()  {
		if (fonteFlex > 9) {
			fonteFlex = fonteFlex - 1;
			$("#content-home *").css({ "font-size": fonteFlex + "px" });
			$("#content-interna *").css({ "font-size": fonteFlex + "px" });
			 fonteManter();
		}
	});
	--- Fim Backup --- */


	/* --- Aqui, o tamanho da fonte redimensiona relativo a cada elemento --- */
	
	// Excecao: Manter o tamanho de fonte p/ alguns elementos (Coloque o seletor do elemento e dos filhos - asterisco).
	// É necessário que os elementos possuam tamanho de fonte setada no css, caso contrario, eles usam um valor herdado que, por sua vez, sofreu alteracao. Por fim, elementos com fontes não setadas podem sofrer o efeito cascateado
	// ------------------------------------------
	// 1) Link ver todas as noticias da home;
	// 2) todas as noticias da sl. presid;
	// 3) audio sl. presid;
	// 4) Agenda da Sl da Presid;
	// 5) botao biografia sl. presid;
	// 6) botao saiba mais sl presid;
	// 7) Links Add-this;
	// 8) Abas antigas;
	// 9) Abas novas;
	// 10) Historico tramit;
	// 11) Destaque da home;
	// 12) Podcast da home;
	// ------------------------------------------
	
	var fonteManter = ".todas-noticias, .todas-noticias *, .bottom_slPresid, .bottom_slPresid *, #som, #som *, .agenda-presidencia, .agenda-presidencia *, .btn-saiba-presidencia, .btn-saiba-presidencia *, .papel-presidente, .papel-presidente *, .links-comunidades, .links-comunidades *, .myTab, .myTab *, #tab, #tab *, .paginacao, .paginacao *, .menu-tramitacaoProjetoResumo, .menu-tramitacaoProjetoResumo *, .destaque-imagem, .destaque-imagem *, #lista-som-home, #lista-som-home *, h1, h2, h3";
	
	var fontePosicao = 0;
	
	$("#js_aumentaFonte").click(function () {
		if (fontePosicao < 3) {
			$("#content-home:not("+fonteManter+") *:not("+fonteManter+"), #content-interna:not("+fonteManter+") *:not("+fonteManter+")").each(function(idx, item) { //Para cada elemento
				var fontNewSize = Number($(item).css("font-size").replace("px",""));
				$(item).css("font-size", Number(fontNewSize + 1) + "px" );
			});
			fontePosicao = fontePosicao + 1;
			if(fontePosicao == 3){ $(this).css("opacity",0.3).addClass("disabled"); }else{ $(this).css("opacity",1).removeClass("disabled"); } $("#js_diminuiFonte").css("opacity",1).removeClass("disabled");
		}
	});
	
	$("#js_diminuiFonte").click(function () {
		if (fontePosicao > -3) {
			$("#content-home:not("+fonteManter+") *:not("+fonteManter+"), #content-interna:not("+fonteManter+") *:not("+fonteManter+")").each(function(idx, item) { //Para cada elemento,
				var fontNewSize = Number($(item).css("font-size").replace("px",""));
				$(item).css("font-size", Number(fontNewSize - 1) + "px" );
			});
			fontePosicao = fontePosicao - 1;
			if(fontePosicao == -3){ $(this).css("opacity",0.3).addClass("disabled"); }else{ $(this).css("opacity",1).removeClass("disabled"); } $("#js_aumentaFonte").css("opacity",1).removeClass("disabled");
		}
	});






	/* ---------------------------------- */
	/* --- Função recursiva após ajax --- */
	/* ---------------------------------- */
	$('body').bind('paginacaoCarregada',function(){
		perfilarImagens();
		toggleExpanderFunc();
		toggleBrFunc();
		togglePrevFunc();
		toggleNextFunc();
		equalizarDivs();
	});




});
/* ---------------------------------- */
/* --- Fecha document ready Geral --- */
/* ---------------------------------- */








/* --- FIM JS REVISADO ALMG --- */
/* ---------------------------- */









function carregaClickMiniatura(){
    /* Carrosel miniatura click */

	$(".historico-carrosel li a").ready(function (){
		$("#cortina-texto p").html($("#historicoTitulo0").attr("title"));
	});
	
	$(".historico-carrosel li a").click(function () {
        var url = $(this).attr("href");
        var titulo = $(this).attr("title");
            $(".img-dataConst img").attr("src", url);
            $("#cortina-texto p").html(titulo);
        activeClass = "selecionado";
        if ($(this).hasClass(activeClass)) {
            $(this).removeClass(activeClass);
        }else {
            $(".historico-carrosel li a").each(function () {
                $(".historico-carrosel li a").removeClass(activeClass);
            });
            $(this).addClass(activeClass);
        }
        return false;
    });


    $(".historico-carrosel").hover(function () {
        $("#cortina-texto").slideDown("slow");
    }, function () {
        $("#cortina-texto").slideUp("slow");
    });


    /* Carrosel miniatura Tour */
    $(".carrosel-content-tour li a").click(function () {
        var url = $(this).attr("href");
        var titulo = $(this).attr("title");
            $(".img-dataConst img").attr("src", url);
            $("#cortina-texto p").text(titulo);

        activeClass = "selecionado";
        if ($(this).hasClass(activeClass)) {
            $(this).removeClass(activeClass);
        }else{
            $(".carrosel-content-tour li a").each(function (){
				$(".carrosel-content-tour li a").removeClass(activeClass);
			});
			$(this).addClass(activeClass);
        }
        return false;
    });


    $(".carrosel-content-tour").hover(function () {
        $("#cortina-texto").slideDown("slow");
    }, function () {
		$("#cortina-texto").slideUp("slow");
    });
    

    /* Carrosel miniatura sala imprensa fotos */
    $("#lista-fotos li a").click(function () {
        var url = $(this).attr("href");
		$(".img-dataConst img").attr("src", url);

        activeClass = "selecionado";
        if ($(this).hasClass(activeClass)) {
            $(this).removeClass(activeClass);
        }else {
            $("#lista-fotos li a").each(function () {
                $("#lista-fotos li a").removeClass(activeClass);
            });
            $(this).addClass(activeClass);
        }
        return false;
    });
	
	
    /*Alteração navegação thumbs | autor: joilson.souza | 12.05.2011*/
	$("#lista-fotos-caroussel li a").live("click", function(){
		var arThumbs  = $("#lista-fotos-caroussel li a"),
			itemThumb = $.inArray($(this)[0], arThumbs),
			carousel  = $('#lista-fotos').data('jcarousel');
			
			carousel.scroll(itemThumb+1);
		return false;
	});


    /*fim | autor: joilson.souza | 12.05.2011*/
}


function paginationControl(carousel) {
	var parent = carousel.container.parents(".car");
	jQuery(".carSlide a", parent).removeClass();
	jQuery(".carSlide a[rel=" + carousel.first + "]", parent).addClass("selected");
	mostrarBotao(carousel);
};


function mycarousel_initCallback(carousel) {
    var parent = carousel.container.parents(".car");
    jQuery('.next', parent).bind('click', function () {
        carousel.next();
        return false;
    });

    jQuery('.prev', parent).bind('click', function () {
        carousel.prev();
        return false;
    });


    //Constroi LI
    var li = '';

    for (var i = 0; i < carousel.size(); i++) { li += '<a rel="' + (i + 1) + '" href="#">' + (i + 1) + '</a>'; }
    $('<li class="carSlide">' + li + '</li>').insertAfter('.itemPaginacao');

    jQuery('.carSlide a', parent).bind('click', function () {
        carousel.scroll(jQuery.jcarousel.intval(jQuery(this).text()));
        return false;
    });
};



function mostrarBotao(carousel) {
	var parent = carousel.container.parents(".car");
	if (carousel.first != 1) {
		jQuery('.prev', parent).css('background-position', '0 0');
	
	}else{
		jQuery('.prev', parent).css('background-position', '0 -16px');
	
	};
	
	if (carousel.last != carousel.size()) {
		jQuery('.next', parent).css('background-position', '-31px 0');
	
	}else{
		jQuery('.next', parent).css('background-position', '-31px -16px');
	};
}


function mycarousel_initCallback_semslider(carousel) {
	var parent = carousel.container.parents(".car");
	jQuery('.next', parent).bind('click', function () {
		carousel.next();
		return false;
	});
	
	jQuery('.prev', parent).bind('click', function () {
		carousel.prev();
		return false;
	});
};



/* --- INICIA FUNCTION GERAL --- */
$(function () {
   

	


	
	$("#buscar-por-prestacao ul li > input").click(function(){
		var indiceClicado = $(this).val();

		if($(this).attr("name") == "chkIndiceTodosGlossarioGlobal"){
			if($('input[name=chkIndiceTodosGlossarioGlobal]').is(':checked')){
				$(".resultado-radio").slideDown("slow");
				$('input[name=chkIndiceGlossarioGlobal]').attr("checked", true);
			}else{
				$(".resultado-radio").slideUp("slow");
				$('input[name=chkIndiceGlossarioGlobal]').attr("checked", false);
			}
		}else if(this.checked){
			$("#"+indiceClicado+"").slideDown("slow");
		}else{
			$("#"+indiceClicado+"").slideUp("slow");
		}
	});





	

	$('.sltMuniDenominacao').change(function(){
		$('.info-content-denominacoes').load('mostraDenominacao.html?idMuni='+$(this).val())
	});
	
    /*ONCHANGE FORMULARIO DEPUTADOS*/
    $("#form-deputados, #form-mesas, #form-comissoes-permanentes, #form-liderancas").change(function() {
        if ($(this).val()) {
            window.open($(this).val(), '_blank');
        }
    });
    
	/*PAGINACAO*/
	var paginationTagLib = $('#paginationTagLib').val();
	if (paginationTagLib != "true") {
		initPagination();
		initButtons();
	}
	

	/* --- INICIA DOCUMENT READY - CLICK --- */
	$(document).ready(function(){

		
		$("#glTds").click(function(){
			var ativo = $(this).attr("checked") ? "checked" : "";
			$(".letra").each(function(){
				$(this).attr("checked", ativo);
			});
		});

		/*
		$('.abrirModalAgenda').click(function(){
			var modal = "#" + $(this).attr("rel")
			var textoModal = $(modal).text();
			$.colorbox({
				title: "Welcome",
				html: "<div id='welcome-msg'>Welcome to my website!</div>",
				innerHeight: 350,
				innerWidth:  350
			});
		});
		*/
		
		
		/* ---------------- */
		/* --- CAROUSEL --- */
		/* ---------------- */
		
		/* Chama Carousel */
		jQuery(".js_carouselEventos").jcarousel({ /* Eventos da home */
			scroll: 1,
			initCallback: mycarousel_initCallback,
			itemLoadCallback: paginationControl,
			reloadCallback: mostrarBotao,
			// This tells jCarousel NOT to autobuild prev/next buttons
			buttonNextHTML: null,
			buttonPrevHTML: null
		});
	
		jQuery(".js_carouselNoSlide").jcarousel({ /* Varios da home */
			scroll: 1,
			initCallback: mycarousel_initCallback_semslider,
			itemLoadCallback: mostrarBotao,
			buttonNextHTML: null,
			buttonPrevHTML: null
		});		
		
		jQuery('#js_carouselVemAi').jcarousel({ /* Destaques da TV */
			vertical: true,
			scroll: 1,
			start: 1
		});
			
        jQuery('#comissoes-home').jcarousel({ /* Destaques comissões Home */
			vertical: true,
			scroll: 1,
			start: 1
		});
            
		jQuery('#mycarousel').jcarousel(); /* ? */
		
		jQuery('#lista-fotos, #lista-fotos-caroussel').jcarousel({ /* ? */
			scroll: 1
		});
		
		jQuery('#car-proposicoes').jcarousel({ /* ? */
			scroll: 1,
			itemLoadCallback: alteraContador
		});
		
		jQuery('#mycarousel-vertical, #mycarousel-vertical2, #audiencia-lista, #box-videos-relacionados').jcarousel({ /* ? */
			vertical: true,
			scroll: 1
		});
		
		jQuery('#carousel_AoVivo').jcarousel({ /* ? */
			vertical: true,
			scroll: 1,
			start: 1
		});
		
		carregaClickMiniatura();


	}); /* --- FECHA DOCUMENT READY --- */



		
		
		
	/* ? */
	function limparCampo(campo) {
		if($(campo).val() == $(campo).attr("rel"))
			$(campo).val("");
	}
	
	function preencherCampo(campo) {
		if($(campo).val() == "")
			$(campo).val($(campo).attr("rel"));
	}
	
	function limparCampoText(campo) {
		if($(campo).html() == $(campo).attr("rel"))
			$(campo).html("");
	}
	
	function preencherCampoText(campo) {
		if($(campo).html() == "")
			$(campo).html($(campo).attr("rel"));
	}
	

		
		
		
		
	
	/* Tabs Agenda */
	/*
	$(".programacaoAgendaAba .myTab2 li a").Aba({
		containeraba: '.myCont2'
	});
	
		
	marcaAbaHorario();
		
	function marcaAbaHorario(){
		var classe = "",
		d = new Date(),
		hora = d.getHours();
				
		if(hora >= 6 && hora < 11){
			classe = "manha";
			//marcaHorario(0);
		}else if(hora >= 12 && hora <= 17){
			classe = "tarde";
			//marcaHorario(1);			
		}else{
			classe = "noite";
			//marcaHorario(2);
		}
		marcaHorario(0);
		marcaHorario(1);
		marcaHorario(2);
		
		$(".programacaoAgendaAba .myTab2 > li > a").removeClass("select");
		$(".programacaoAgendaAba .myTab2 > li > a[rel="+classe+"]").addClass("select");
		$(".programacaoAgendaAba .myTab2").removeAttr("class").attr("class", "myTab2 primeira "+classe);
		
		$(".programacaoAgendaAba .myCont2").hide();
		$(".programacaoAgendaAba .myCont2#"+classe).show();
	
		function marcaHorario(index){ 
			var h = 0,			
			arHora = $(".programacaoAgendaAba .myCont2:eq("+index+") .lkhorario > span > a");
				
			var goNext = false; var goNextFor =false;
			var _cont = "";

			for(var i=0; i<arHora.length; i++){ 
				if(goNextFor) return;
				h = $(arHora[i]).text().split("h"); 
				h = h[0];
				val = $(arHora[i]).attr("rel");
				var temItem = _cont = $(".programacaoAgendaAba .myCont2:eq("+index+") .item-slide-agenda:eq("+i+")").has("div.texto-horarioAgendaTv").size()!=0;
				
				if(hora==h){//se é a hora atual
					if(temItem){
						$(".programacaoAgendaAba .myCont2:eq("+index+") > .ui-slider").slider("value", val); 
						goNextFor=true;
					}
				}else{

					if((!goNext )){
						val = $(arHora[i]).attr("rel");
						_cont = $(".programacaoAgendaAba .myCont2:eq("+index+") .item-slide-agenda:eq("+i+")").has("div.texto-horarioAgendaTv").size();
						//console.log(index, i, _cont)
						if(_cont > 0 || arHora.length-1==i) { //se tem a div, ou é o último elemento do slider
							//console.log("entrou no if", val)
							$(".programacaoAgendaAba .myCont2:eq("+index+") > .ui-slider").slider("value", val); goNext = true; goNextFor=true;
						}
						//else
						//goNext = true;
					}
					
				}
			}
		}
	};
	
	
	$(".myTab3 li a").Aba({
		containeraba: '.myCont3'
	});

	$(".myTab4 li a").Aba({
		containeraba: '.myCont4'
	});
	$(".myTab5 li a").Aba({
		containeraba: '.myCont5'
	});
	$(".myTab6 li a").Aba({
		containeraba: '.myCont6'
	});
	$(".myTab7 li a").Aba({
		containeraba: '.myCont7'
	});
	$(".myTab8 li a").Aba({
		containeraba: '.myCont8'
	});
	
	$("#box-comentario").find(".paginacao a").click(function(){
		respostasComentarios();    	
		return false;
	});
	*/
	
	
	
	respostasComentarios();
	/* --- Responder --- */
	function respostasComentarios() {
		$(".inf-comentario > a[title=Responder]").click(function(){ 
			$(this).parent().nextAll("form.responder").slideToggle(); return false;  
		});
		$(".inf-comentario > a[title=Reportar abuso]").click(function(){ 
			$(this).parent().nextAll("form.abuso").slideToggle(); return false;  
		});
		$(".inf-comentario > a.resposta").click(function(){ 
			$(this).siblings("div.resposta").slideToggle(); return false;  
		});
	}
		
	/*
	Paginacao respostas
	if($(".listaPaginada").length>0) {
		for(var i=0; i<$(".listaPaginada").length; i++){

			var listaPai = $(".listaPaginada:eq("+i+")");

			$(".listaPaginada:eq("+i+") .paginas").paginate({
				count : $(".listaPaginada:eq("+i+") .lista li").length,
				start : 1,
				display : 10,
				border : true,
				border_color : '#fff',
				text_color : '#fff',
				background_color : '#AB0000',	
				border_hover_color : '#ccc',
				text_hover_color : '#555',
				background_hover_color : '#fff', 
				images : false,
				mouse : 'press',
				onChange : function(page, obj){
					var id = obj.children("ul").attr("id");
					$('._current','#'+id+'.lista').removeClass('_current').hide();
					$('#'+id+'_'+page).addClass('_current').show();
				}
			});
		}
	}
	*/
		
		
		
		
		
		
	
	
		


	function alteraContador(a, b) {
		if(b == "next")
			$(".numAtual").html((parseInt($(".numAtual").html()) + 1));
		if(b == "prev")
			$(".numAtual").html((parseInt($(".numAtual").html()) - 1));
	}
	
		
	
	/*TIMELINE HISTORICO*/
	/*
	var default_left = Math.round(($('#timeline-historico li.selected').offset() && $('#timeline-historico li.selected').offset().left || 0) - $('#timeline-historico').offset() && $('#timeline-historico').offset().left || 0);
	var default_width = $('#timeline-historico li.selected').width();

	$('#box-timeline-historico').css({ left: default_left });
	$('#box-timeline-historico .head-historico').css({ width: default_width });

	$('#timeline-historico li').hover(function () {

		left = Math.round(($(this).offset().left) -  $('#timeline-historico').offset() && $('#timeline-historico').offset().left || 0);
		width = $(this).width();

		$('#box-timeline-historico').stop(false, true).animate({ left: left }, 1000);
		$('#box-timeline-historico .head-historico').stop(false, true).animate({ width: width }, 1000);
	});
	
	$('#timeline-historico').mouseleave(function () {
		default_left = Math.round(($('#timeline-historico li.selected').offset() && $('#timeline-historico li.selected').offset().left || 0) - $('#timeline-historico').offset() && $('#timeline-historico').offset().left || 0);
		default_width = $('#timeline-historico li.selected').width();

		$('#box-timeline-historico').stop(false, true).animate({ left: default_left }, 1000);
		$('#box-timeline-historico .head-historico').stop(false, true).animate({ width: default_width }, 1000);
	});
		
	   
	$("#timeline-historico ul li a").click(function () {
		alert('asd');
		$.ajax({
			cache: false,
			url: this.href,

			success: function (data) {
				$(".content-timeline").html(data);
				carregaCarrouselMini();
				carregaClickMiniatura();
			}
		});
	
		$('#timeline-historico li').removeClass('selected');
		
		$(this).parents("li").addClass('selected');
		return false;
	});
	*/


}); /* END function geral */



function criaAgenda(idDiv) {
	jQuery(idDiv).jcarousel({
		vertical: true,
		scroll: 1
	});
}
