// JavaScript Document
//--------------------------------------------------------------------------------
// //Formatação dos números com 15 digitos e 10 digitos da página inicial
function formata_numero(num){
	if(num.charAt(0) == '2'){
		numero = num.substr(0,4)+ '.' + num.charAt(4) + num.charAt(5) + '.'+ num.charAt(6) + num.charAt(7) +'.'+ num.charAt(8)+num.charAt(9)+num.charAt(10) + num.charAt(11) + num.charAt(12) + num.charAt(13)+ '-' + num.charAt(14);			
	}else{
		numero = num.substr(0,2)+'.'+ num.charAt(2)+ num.charAt(3)+num.charAt(4)+num.charAt(5)+num.charAt(6)+ num.charAt(7)+ num.charAt(8)+'-'+ num.charAt(9);
	}
	return numero;
}
//--------------------------------------------------------------------------------
// Função que completa o numero do processo com zeros para que fique correto
function completa_zeros(numero){
	var num, i, zeros = '';	

	if(numero.charAt(0) == '2'){	
		for(i=1; i <= 15 - numero.length;i++){
			zeros = zeros + '0';
		}		
		numero = numero.substr(0,8) + zeros + numero.substr(8,numero.length );		
	} else {
		for(i=1; i <= 10 - numero.length;i++){
			zeros = zeros + '0';
		}		
		numero = numero.substr(0,2) + zeros + numero.substr(2,numero.length );					
	}
	
	return numero;
}

//--------------------------------------------------------------------------------
// Função que extrai todos os digitos de uma string
function extrai_digitos(str){
	var str_numeros = "";
	var i;
	for(i=0; i < str.length; i++){
		if((str.charAt(i) >= '0') && (str.charAt(i) <= '9'))
			str_numeros = str_numeros + str.charAt(i);
	}
	str_numeros = completa_zeros(str_numeros);
	return str_numeros;
}

//--------------------------------------------------------------------------------
// Função que calcula o digito verificador do numero dado (com 10 digitos)
function calcula_digito1(numero){
	var digito = 0;
	var i;
	
	for(i=0; i< 9; i++){
		digito += parseInt(numero.charAt(i))*(i+1); 
	}
	digito = digito%11;
	if(digito > 9)
		digito = 0;
	return digito;
}
//--------------------------------------------------------------------------------
// Função que calcula o digito verificador do numero dado (com 15 digitos)
function calcula_digito2(numero){
	var digito = 0;
	var i;
	for(i=13; i > -1; i--){
		if(i >= 6) {
				digito += parseInt(numero.charAt(i))*(15-i); 
		}else {
			digito += parseInt(numero.charAt(i))*(7-i); 		
		}

	}
	digito = digito%11;
	if(digito > 9)
		digito = 0;
		
	return digito;
}
//---------------------------------------------------------------------------------
// Função que verifica o digito verificador do número de um processo dado no formato (99999999999)
function verifica_digito_processo(numero){
	var valido = true;
	var digito = -1;
	
	// Verifica o digito para um processo com 10 algarismos
	if(numero.length == 10){				
		digito = calcula_digito1(numero);						
		if(digito != parseInt(numero.charAt(9))){
			valido = false;
		}
	} 
	// Verifica o digito para um processo com 15algarismos	
	else if(numero.length == 15){
		digito = calcula_digito2(numero);										
		if(digito != parseInt(numero.charAt(14))){
			valido = false;
		}		
	} 
	// O número do processo não possui 10 nem 15 algarismos
	else {
		valido = false;
	}
	
	return valido;
}
//--------------------------------------------------------------------------------//
//Essa função só é utilizada se a opção for justiça comum
function retira_caracteres(str){
	var campo_final = "";
	var i;
	for(i=0; i < str.length; i++){
		if((str.charAt(i) != '/') && (str.charAt(i) != '%')&& (str.charAt(i) != '#')&& (str.charAt(i) != '$')&& (str.charAt(i) != '@'))
			campo_final = campo_final + str.charAt(i);
	}
	
	return campo_final;	
}
//--------------------------------------------------------------------------------------
function ZerosAEsquerda(str, quantidade){
	var i, zeros = '';
	for (i=0; i <= (quantidade - str.length-1); i++){
		zeros = '0'+zeros;
	}
	str = zeros+str;
	return str;
}
//--------------------------------------------------------------------------------
//Função que completa o ano com os 4 digitos
function CompletaAno(Ano){

	var anoTotal, tamanho = Ano.length;
	
	if(tamanho == 2)
		if (Ano.substr(0,1) > 5)
			anoTotal = "19"+Ano;
		else
			anoTotal = "20"+Ano;
	else if(tamanho == 1)	
		anoTotal = "200"+Ano;
	else if(tamanho == 0)
		anoTotal = (new Date()).getYear();
	else
		anoTotal = Ano;
	
	return anoTotal;
}
//--------------------------------------------------------------------------------//
function ENumero(caractere){
	if((caractere >= '0') && (caractere <= '9')){
		return true;
	}else 
		return false;
}
//----------------------------------------------------------------------------------//
//Função que verifica se o ultimo caractere é '%' e o substitui pelo digito verificador
function CompletaDigito(Processo){
	var i, novoProcesso = '',digito = '';
	
	if(Processo.charAt(Processo.length-1) == '%'){
		if(Processo.length == 10){				
			digito = calcula_digito1(Processo);	
		}
		if(Processo.length == 15){
			digito = calcula_digito2(Processo);	
		}

		for(i=0;i<Processo.length-1;i++){
			novoProcesso = novoProcesso + Processo.charAt(i);
		}		
		novoProcesso = novoProcesso + digito;
	}else
		novoProcesso = Processo;
	return novoProcesso;
}
//--------------------------------------------------------------------------------//
//Função que monta o processo. Traduzido da função em ASP de consulta processual
function montar_processo(NumProc, opcao){

	var nParteAtual = 1
	var nParteAsterisco = 0
	var Parte1 = '';
	var Parte2 = ''; 
	var Parte3 = '';
	var Parte4 = '';
	var SecaoDef = '80';
	var LocalidadeDef;
	var Pos, caractere, Processo, Secao, Localidade;
	
	if(opcao == 'jfc')
		LocalidadeDef = '00';
	else
		LocalidadeDef = '13';
		
	var Tam = NumProc.length;
	for (Pos = 0; Pos <= Tam-1; Pos++){	
		caractere =  NumProc.substr(Tam-Pos-1,1);
		if ((ENumero(caractere)) || (caractere == '-')){
			if (ENumero(caractere)){
				if (nParteAtual == 1){
					Parte1 = caractere+Parte1;
				} else if(nParteAtual == 2){
					Parte2 = caractere+Parte2;
				} else if(nParteAtual == 3){
					Parte3 = caractere+Parte3;
				}else if(nParteAtual == 4){
					Parte4 = caractere+Parte4;
				}
			}
		} else if ((caractere == '.') || (caractere == '*')){
			if (caractere == '*'){
				if(Pos == 0){
					Parte1 = '%';
					nParteAtual = nParteAtual - 1;
				} else{
					nParteAtual = nParteAtual + 1;			
					nParteAsterisco = nParteAtual;
				}
			}
			nParteAtual = nParteAtual + 1;
		}
	}

	//NUMERO ANTIGO: no caso 95.987 é formato antigo.
	if ((nParteAsterisco == 0) && (nParteAtual == 2) && (Parte2.length == 2)){
		Processo = Parte2+ZerosAEsquerda(Parte1,8);
	//NUMERO NOVO
	} else {
		//Excessao: no caso 03*987 o asterisco devia pular mais um, e 03 é o ano.
		if((nParteAsterisco == 2) && (nParteAtual == 3)){
			Parte4 = Parte3;
			Parte3 = '';
		}

		NumProcesso = Parte1;
		Localidade = Parte2;
		Secao = Parte3;
		Ano = Parte4;

		if ((NumProcesso.length > 0) && (nParteAsterisco == 0) && (nParteAtual == 1) && ((Secao.length + Localidade.length + Ano.length) == 0))
			Processo = NumProcesso;
		else {
			if (Secao.length == 0)
				Secao = SecaoDef;

			if (Localidade.length == 0)
				Localidade = LocalidadeDef;

		   	Processo =  CompletaAno(Ano) + ZerosAEsquerda(Secao,2) + ZerosAEsquerda(Localidade,2) + ZerosAEsquerda(NumProcesso,7);
		}
	}

	Processo = CompletaDigito(Processo);
	return Processo;
}
//--------------------------------------------------------------------------------
// Função que verifica o digito verificador no formulário da página inicial
function verifica_form_consulta_processo(){
	f = this.frm_consulta;
	
	var num = montar_processo(retira_caracteres(f.NumProc.value),f.opcaoEsc.value);
	
	//Verifica se o número do processo é válido de acordo com o dígito verificador	
	var valido = verifica_digito_processo(num);
	//Se o número do processo for válido, formata o número
	if ((valido) && (f.NumProc.value != '') && (f.NumProc.value != 0)) {
		
		f.NumProc.value = formata_numero(num);
		if(f.opcaoEsc.value == 'jfc'){
			f.submit();
		}else{
			location.href="http://www.jfal.gov.br/processo.php?numero="+numero;			
		}
	} else{
		alert('Número de processo inválido!');
	}	

}
//--------------------------------------------------------------------------------

function setaValorOpcaoEsc(opc){
	document.frm_consulta.opcaoEsc.value = opc;
}
//--------------------------------------------------------------------------------
// Redireciona para a tabela da contadoria escolhida
function verifica_consulta_juizado(tipo){
	if((tipo == 'parte') && (this.frm_consulta.NumProc.value == '')){
		alert('Digite o nome da parte!');
	} else if ((tipo == 'advogado') && (this.frm_consulta.NumProc.value == '')){
			alert('Digite o nome do advogado!');
	} else if (tipo == 'numero'){
		verifica_form_consulta_processo();
	} else{
		document.frm_consulta.submit();
	}
}
//--------------------------------------------------------------------------------

