/* --------------------------------------------------------------------------------
Funções globais para as páginas do sítio do STF
Criado em:   02/01/2007 - José Lino de A. Neto
----------------------------------------------------------------------------------*/

/* --------------------------------------------
Declaração de variáveis
-------------------------------------------- */

//Utilizado para verificar qual o browser utilizado - Variáveis Global
var nomeBrowser	= navigator.appName;		//Retorna o nome do browser
var vsBrowser	= navigator.appVersion;		//Retorna a versão do browser
var ie			= (vsBrowser.indexOf("MSIE") != -1) ? true : false;
//[Fim]

//[INICIO] Chama a função "paginaInciar" automaticamente, após a carga da página. Essa função deve ser declarada no JS da página cliente. Caso ela não exista ou não seja necessária, nenhum erro será disparado.
$(document).ready(function() {
	try { sysPaginaIniciar(); } catch(e){};
});


//[INICIO] Função para redimencionar o tamanho do text
function sysAlterarTamanhoFonte(operacao){
	
	var corpo = document.getElementById("corpo");
	var tamanho = corpo.style.fontSize;
	var valor = ["9px", "10px", "11px", "12px", "13px", "14px", "15px"];
	
	var i = 0;
	
	if (tamanho == "")
		i = 3;
	else
		for (i = 0; i < valor.length; i++) if (tamanho == valor[i]) break;
	
	if (operacao == "+" && i < (valor.length - 1)) i++;
	if (operacao == "-" && i > 0) i--;

	corpo.style.fontSize = valor[i];
			
}

function sysObterTamanho(){
}

//[FIM]

//[INICIO] Compara as datas, Inicial e Final
function compararData(data_inicial, data_final) {
	var dtInicial = data_inicial.replace(/[\/\.\-]/g,"-").split("-");
	var dtFinal = data_final.replace(/[\/\.\-]/g,"-").split("-");

	datai= new Date(dtInicial[2],--dtInicial[1],dtInicial[0]).valueOf()
	dataf= new Date(dtFinal[2],--dtFinal[1],dtFinal[0]).valueOf()

	if (datai > dataf ){
		compara_data = -1;
	}else if (datai == dataf){
		compara_data = 0;
	}else{
		compara_data = 1;
	}
	return compara_data;
}
//[FIM]

//[INICIO] Função marcar campos do tipo chekbox
function definirChk(nomeFrm, nomeChk, status) {
	var frm = document.forms[nomeFrm];
	for(var i = 0; i < frm.elements.length ; i++) {
		if (frm.elements[i].name == nomeChk) {
			frm.elements[i].checked = status;
		}
	}
}
//[FIM]

//[INICIO] Formata um campo do formulário de acordo com a máscara informada
function formatarCampo(objForm, Mask, evento) {

	var keyNumber = (ie) ? event.keyCode : evento;

	if(keyNumber != 8){

		var i, nCount, sValue, fldLen, mskLen, bolMask, sCod, nTecla;
		nome = objForm.name;
		sValue = document.getElementById(nome).value;

		expressao = /[\.\/\-\(\) ]/gi;
		sValue = sValue.toString().replace(expressao, '');

		fldLen = sValue.length;
		mskLen = Mask.length;
		i = 0;
		nCount = 0;
		sCod = "";
		mskLen = fldLen;

		while (i<=mskLen) {
			//alert(1)
			bolMask = ((Mask.charAt(i) == "-") || (Mask.charAt(i) == ".") || (Mask.charAt(i) == "/"));
			bolMask = bolMask || ((Mask.charAt(i) == "(") || (Mask.charAt(i) == ")") || (Mask.charAt(i) == " "));
			if (bolMask) {
				sCod += Mask.charAt(i);
				mskLen++;
			} else {
				sCod += sValue.charAt(nCount);
				nCount++;
			}
			i++;
		}
		document.getElementById(nome).value = sCod;
	}
}
//[FIM]

// Utiliza a permitirTecladoString() passando o valor permitido
function permitirTecladoNumero(){
	permitirTecladoString("0123456789");
}

function sysPermitirTecladoNumero(elemento, evento){
	/* Limita os caracteres de uma caixa para numéricos somente.
	Quando a tecla Enter é pressionada, a função "{id}" + "Enter" é executada. 
	Ex: suponha que a caixa	de texto tenha o id "nome". A função javascript chamada 
	pelo enter será "nomeEnter()". Se a função não exibir, nenhum erro será gerado.
	Parâmetros: - elemento: referência para o elemento (this)
	            - evento: referência para o evento (event)
	Exemplo de chamada: onKeyPress="sysPermitirTecladoNumero(this, event);" */
	sysPermitirTecladoString(elemento, evento, "0123456789\n" + String.fromCharCode(13));
	//sysPermitirTecladoString(elemento, evento, "0123456789\n" + String.fromCharCode(13));
}

//[INICIO] Só permite a entrada pelo teclado de caracteres numericos
function sysPermitirTecladoString(elemento, evento, valorPermitido) {
	if (evento.keyCode == 13){
		try{
			eval(elemento.id + "Enter();");
		}
		catch(e){
		}
		evento.keyCode = 0;
		return;
	}
	var teclado = String.fromCharCode(evento.keyCode);
	if ((!validarString(teclado, valorPermitido))) {
		evento.keyCode = 0;
    }
}
//[FIM]


//[INICIO] Só permite a entrada pelo teclado de caracteres numericos
function permitirTecladoString(valorPermitido) {
	if (!ie) return false;
	var teclado = String.fromCharCode(event.keyCode);
	if ((!validarString(teclado, valorPermitido))) {
		event.keyCode = 0
    }
}
//[FIM]

//[INICIO] Retorna a data atual por extenso
function recuperarValorOpt(nomeFrm, nomeOpt){
	var frm = document.forms[nomeFrm];
	for(var i = 0; i < frm.elements.length ; i++) {
		if (frm.elements[i].name == nomeOpt && frm.elements[i].checked) {
			return(frm.elements[i].value);
		}
	}
	return(null);
}
//[FIM]

//[INICIO] Função para validação de data
function validarData(data) {
	var date = data;
	var array_data = new Array();
	var ExpReg = new RegExp("(0[1-9]|[12][0-9]|3[01])/(0[1-9]|1[012])/[12][0-9]{3}");
	//Vetor que contem o dia o mes e o ano
	array_data = date.split("/");
	erro = false;
	//Valido o formato dd/mm/yyyy, dia com 2 digitos, entre 01 e 31, mes com 2 digitos, entre 01 e 12, ano com 4 digitos, entre 1000 e 2999
	if (date.search(ExpReg) == -1) {
		erro = true;
	} else if (((array_data[1] == 4) || (array_data[1] == 6) || (array_data[1] == 9) || (array_data[1] == 11)) && (array_data[0]>30)) {
		erro = true;
	} else if (array_data[1] == 2) {
		//Valido ano que nao e bissexto
		if ((array_data[0]>28) && ((array_data[2]%4) != 0)) {
			erro = true;
		}
		//Valido ano bissexto 
		if ((array_data[0]>29) && ((array_data[2]%4) == 0)) {
			erro = true;
		}
	}
	//Valido os meses que nao tem 31 dias com execao de fevereiro 
	if (erro) {
		//alert("Data Invalida");
		return(false);
	}else{
		return(true);
	}
}
//[FIM]

//[INICIO] Função validação de cnpj
function validarCNPJ(CNPJ) {
	erro = new String;
	if (CNPJ.length != 14) erro += "É necessario preencher corretamente o número do CNPJ! \n\n"; 
	var nonNumbers = /\D/;
	if (nonNumbers.test(CNPJ)) erro += "A verificação de CNPJ suporta apenas números! \n\n"; 
	var a = [];
	var b = new Number;
	var c = [6,5,4,3,2,9,8,7,6,5,4,3,2];
	for (i=0; i<12; i++){
		a[i] = CNPJ.charAt(i);
		b += a[i] * c[i+1];
	}
	if ((x = b % 11) < 2) { a[12] = 0 } else { a[12] = 11-x }
		b = 0;
		for (y=0; y<13; y++) {
			b += (a[y] * c[y]); 
		}
		if ((x = b % 11) < 2) { a[13] = 0; } else { a[13] = 11-x; }
		if ((CNPJ.charAt(12) != a[12]) || (CNPJ.charAt(13) != a[13])){
			erro +="Dígito verificador com problema!";
		}
		if (erro.length > 0){			
			return false;
		}else{
			return true;
		}
	return true;
}
//[FIM]

//[INICIO] Função validação de cpf
function validarCPF(valor) {
	cpf = valor;
	cpf = cpf.replace(".","");
	cpf = cpf.replace(".","");
	cpf = cpf.replace("-","");

	erro = new String;
	if (cpf.length < 11) erro += "Sao necessarios 11 digitos para verificacao do CPF! \n\n";
	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"){
		erro += "Numero de CPF invalido!"
	}
	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])){
		erro +="O CPF está incorreto!";
	}
	if (erro.length > 0){
		//alert(erro);
		return false;
	}
	return true;
}
//[FIM]

//[INICIO] Função validação de cpf/cnpj no mesmo campo
function validarCPFCNPJ(valor){
	if (valor.length == 14 || valor.length == 11){
		if (valor.length == 11){
			valido = (validarCPF(valor));
		}
		if (valor.length == 14){
			valido = (validarCNPJ(valor));
		}
	}
	else{
		alert("Campo CNPJ/CPF inválido");
		return false;
	}
}



//[INICIO] Função para verificação de email
function validarEmail(valor)
{
	
	if (/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,6})+$/.test(valor))
	{
		return (true)
	}
	
	return (false)
}

//[FIM]

//[INICIO] Necessario para validação de numeros em browser diferente de ie
function validarNumero(valor){
    return(validarString(valor, "0123456789-."));
}
//[FIM]

//[INICIO] Verifica se o conteudo de um campo é valido de acordo com os parametros passados.
function validarString(valor, valorPermitido){
	var letraOk = false;
    for (var i = 0; i < valor.length; i++){
        if (valorPermitido.indexOf(valor.charAt(i)) == -1)
            return(false);
    }
    return(true);
}
//[FIM]

//[INICIO] Salva determinado arquivo.
function salvarComo(filename)
{
	document.execCommand('SaveAs',null,filename)
}
//[FIM] Salva determinado arquivo.

//[INICIO] Função para adicionar os conectores à pesquisa. Lino - 02/05/2007
function adicionarConector(conector,campo){
	campoPesquisa			= document.getElementById(campo)
	txtPesquisaLivre		= campoPesquisa.value;
	if(txtPesquisaLivre == "Digite aqui"){ txtPesquisaLivre = ""; }
	campoPesquisa.value		= txtPesquisaLivre + conector;
	campoPesquisa.focus();

}
//[FIM] Função para adicionar os conectores à pesquisa.

//[INICIO] Funcao para abrir nova janela pop-up no centro da tela. Neimar - 03/05/2007
function NewWindow(mypage, myname, w, h, scroll){
	var winl = (screen.width - w) / 2;
	var wint = (screen.height - h) / 2;
	winprops = 'height='+h+',width='+w+',top='+wint+',left='+winl+',scrollbars='+scroll+',resizable'
	win = window.open(mypage, myname, winprops)
	if (parseInt(navigator.appVersion) >= 4) win.window.focus();
}
//[FIM] Funcao para abrir nova janela pop-up no centro da tela.

//[INICIO] Funcao para abrir nova janela pop-up no centro da tela. Rodrigo - 24/08/2007
function sysAbrirJanela(url, nome, w, h, permitirRolagem){
	var winl = (screen.width - w) / 2;
	var wint = (screen.height - h) / 2;
	var winprops = 'height='+h+',width='+w+',top='+wint+',left='+winl+',scrollbars='+(permitirRolagem ? '1' : '')+',resizable';
	win = window.open(url, nome, winprops)
	if (parseInt(navigator.appVersion) >= 4){
		win.window.focus();
	}
}
//[FIM] Funcao para abrir nova janela pop-up no centro da tela.

//[INICIO] Funcao para redirecionar os links de Acesso Rápido. Michelle - 12/06/2007
function linkAcesso() {
	var url=document.interface.acesso.value
//	alert("URL: " + url );
	if (url == "0") {
		return(false);
	}
	document.location.href=url
}
//[FIM] Funcao para redirecionar os links de Acesso Rápido.

///[INICIO] Funções para exibir os conectores e exibir os textos de ajuda respectivos. Gabriela - 06/07/2007
//=============================================================================
function sysExibirAutoAjuda(origem, idAutoAjuda, alinhamento, ajusteX, ajusteY){
/*  Função para exibição do quadro de auto-ajuda previamente configurado,
    posicionado conforme elemento de origem e demais especificações.
    parâmetros:
    - origem: objeto que representa elemento com o alinhamento será feito
    - idAutoAjuda: id do elemento que representa o conteúdo da auto-ajuda
    - alinhamento (opcional):   2 (canto superior esquerdo)
                                3 (canto inferior esquerdo)
                                4 (canto inferior direito)
    - ajusteX (opcional): ajuste, em pixels, da coordenada X da auto-ajuda
    - ajusteY (opcional): ajuste, em pixels, da coordenada Y da auto-ajuda */

    //definir valores padrão aos parâmetros não passados
    if (!alinhamento) alinhamento = 4;
    if (!ajusteX) ajusteX = 0;
    if (!ajusteY) ajusteY = 0;

    //declarar e inicializar variáveis
    var conteudoAutoAjuda = document.getElementById("sys" + idAutoAjuda);  //div que contém o conteúdo da autoajuda
    var quadroAutoAjuda = document.getElementById("sysQuadroAutoAjuda");   //elemento com o qual o alinhamento será feito
    var x = sysObterX(origem) + origem.offsetWidth;                     //posição x padrão em relação ao elemento origem
    var y = sysObterY(origem) + origem.offsetHeight;                    //posição y padrão em relação ao elemento origem

    //abandonar caso a auto ajuda já esteja visível
    if (conteudoAutoAjuda.style.display == "block" ) return;
	
    conteudoAutoAjuda.style.display = "block";

    //efetuar a correção das coordenadas em função do alinhamento especificado
    if (alinhamento == 2){
        y -= origem.offsetHeight;
    }
    if (alinhamento == 3){
        x -= origem.offsetWidth;
    }

    //posicionar o elemento de conteúdo e o iframe para formação do fundo
    conteudoAutoAjuda.style.left = (x + ajusteX) + "px";
    conteudoAutoAjuda.style.top = (y + ajusteY) + "px";

	//posicionar iframe atrás do DIV
    sysCopiarEstilo(conteudoAutoAjuda, quadroAutoAjuda);

}
//=============================================================================

//=============================================================================
function sysOcultarAutoAjuda (idAutoAjuda){
/*  Função para ocultar exibição do quadro de auto-ajuda.
    parâmetros:
    - idAutoAjuda: id do elemento que representa o conteúdo da auto-ajuda */

    var conteudoAutoAjuda = document.getElementById("sys" + idAutoAjuda);
    var quadroAutoAjuda = document.getElementById("sysQuadroAutoAjuda");

    conteudoAutoAjuda.style.display = "none";
    quadroAutoAjuda.style.display = "none";

}
//=============================================================================

//=============================================================================
function sysCopiarEstilo(origem, destino) {
/*  Replicar configurações de posição e tamanho de elemento para outro
    parâmetros:
    - origem: elemento que representa a origem das propriedades
    - destino: elemento que receberá as propriedades da origem */

    destino.style.top = origem.style.top;
    destino.style.left = origem.style.left;
    destino.style.height = origem.offsetHeight;
    destino.style.width = origem.offsetWidth;
    destino.style.display = "block";

}
//=============================================================================

//=============================================================================
function sysObterX(elemento){
    //determinar a coordenada X absoluta de um elemento
    if (!elemento) return(0);
    return(elemento.offsetLeft + sysObterX(elemento.offsetParent));
}
//=============================================================================

//=============================================================================
function sysObterY(elemento){
    //determinar a coordenada Y absoluta de um elemento
    if (!elemento) return(0);
    return(elemento.offsetTop + sysObterY(elemento.offsetParent));
}
//=============================================================================

//=============================================================================
function sysAdicionarOperador(idCaixaTexto, operador){
    //adicionar operador na caixa de texto especificada
    var caixaTexto = document.getElementById(idCaixaTexto);
    caixaTexto.value += " " + operador + " ";
    caixaTexto.focus();
}
//[FIM] Funções para exibir os conectores e exibir os textos de ajuda respectivos

//=============================================================================
function sysImprimir(){
	if($("#chamaVerImpressao")[0]){
		sysAbrirJanela('../geral/verImpressao.asp', 'verImpressao', 500, 400, true);
	}else{
	//Função global de impressão	
	window.print();
	try{
		document.getElementById("conteudo").style.pageBreakBefore="always";
		//document.getElementById("processosJurisprudenciaAcordaosImpressao").style.pageBreakBefore="avoid";
	}
	catch(e) { }
	}
	
}
function sysVerImpressao(){
    //Função utilizada como solução nos serviços/páginas que estão apresentado erro

	sysAbrirJanela('../geral/verImpressao.asp', 'verImpressao', 500, 400, true);
	
}

//=============================================================================

//=============================================================================
function sysSalvarComo (nomeArquivo)
	//Função global para Salvar Como
{
	document.execCommand('SaveAs',null,nomeArquivo)
}
//=============================================================================

//=============================================================================
//<funcao autor="Rodrigo Azevedo">
//Retornar um objeto do tipo Date a partir de uma data e horário especificados por uma string.
//Caso a data ou o horário não seja válido a função retornará um valor nulo.
//</funcao>
//<param nome="data">String no formato "DD/MM/AAAA" a ser convertida.</param>
//<param nome="horario">String no formato "HH:MI:SS" a ser convertida. Informar em branco para utilizar o horário atual.</param>
//<retorno>Objeto do tipo Date representando a data e horário especificados.</retorno>
function sysConverterDataHorario(data, horario)
{
    if (!validarData(data)) return(null);
	
    var retorno = new Date();
    var colParteData = data.split('/');
    var colParteHorario = horario.split(':');
    
    retorno.setFullYear(parseInt(colParteData[2],10), parseInt(colParteData[1],10) - 1, parseInt(colParteData[0],10));
    if (horario != '') retorno.setHours(parseInt(colParteHorario[0],10), parseInt(colParteHorario[1],10), parseInt(colParteHorario[2],10), 0);
    
    return retorno;
}
//=============================================================================

//=============================================================================
//<funcao autor="Rodrigo Azevedo">
//Recarrega a imagem de um captcha. A chamada dessa função é automaticamente escrita pela função sysGerarImagemCaptcha.
//</funcao>
//<param nome="id">Identificação do IMG que contém o captcha.</param>
function sysRecarregarCaptcha(id) {
	var img = document.images[id];
	if (img == undefined) return;
	var now = new Date();
	img.src = img.src.split('?')[0] + '?x=' + now.toUTCString();
}
//=============================================================================

/*===========================================================================*\
Lançar mensagem para o usuário caso a condição seja verdadeira.
Param: 	- condicao: se verdadadeira, exibe a mensagem e redireciona para URL.
		- url: endereço para onde o usuário será redirecionado. Se vazio, será dado um history.back().
		- mensagem: mensagem a ser exibida caso a condição seja verdadeira.
\*===========================================================================*/
function exibirMensagemValidacao(condicao, url, mensagem){
	if (condicao) {
		alert(mensagem);
		if (url == '') { history.back(); } else { location = url; }
	}
}

/*===========================================================================*\
Processar validação de um campo do formulário e executar ações conforme condição.
Param: 	- condicao: se verdadadeira, exibe a mensagem e coloca o foco no campo informado.
		- mensagem: mensagem a ser exibida caso a condição seja verdadeira.
		- campo: define o campo que receberá o foco, após a exibição da mensagem.
Return: condição informada no primeiro parâmetro.
\*===========================================================================*/
function processarMensagemValidacao(condicao, mensagem, campo){
	if (condicao) {
		alert(mensagem);
		campo.focus();
	}
	return condicao;
}


