function buttonOn(nomeBotao) {
    nomeBotao.className='Botao';
}

function buttonOver(nomeCampo) {
    nomeCampo.className='BotaoOn';
}

function abre(url) {
    window.open(url,'janela', 'width=750,height=500,left=10,top=30,' + 
        'screenX=10,screenY=30,toolbar=no,location=no,' +
        'directories=no,status=no,menubar=yes,scrollbars=yes,' +
        'copyhistory=no,resizable=yes');
}

function abreManual(url) {
    window.open(url,'janela','width=750,height=450,left=10,top=30,' +
        'screenX=10,screenY=30,toolbar=yes,location=no,' + 
        'directories=no,status=no,menubar=yes,scrollbars=yes,' +
        'copyhistory=no,resizable=yes');
}

function setFocus(campo) {
    document.getElementById(campo).focus();
}

/**
 * Função utilizada para retornar qual o browser o usuário está utilizando.
 * Tipos de retornos possíveis (string):
 * Opera: "opera"
 * Firefox: "firefox"
 * Internet Explorer: "ie"
 **/
function detectBrowser() {
    var ie = document.all != undefined;
    var opera = window.opera != undefined;

    if (opera) return "opera";
    if (ie) return "ie";
    if ((window)&&(window.netscape)&&(window.netscape.security)) {
        return "firefox";
    }
    return "ie"; // se não for qualquer um dos outros, retorna ie
}

/**
 * Função utilizada para retornar qual o valor adequado de display (css)
 * para exibir uma linha (tr)
 **/  
function estiloLinhaVisivel(){
    if(detectBrowser()=='firefox'){//Firefox
        return "table-row";              
    }
    else{//IE
        return "block";              
    }
}

/**
 * Função utilizada para máscara de entrada de data no formato XX/XX/XXXX
 */
function dateMask(event) {
    var sMask = "0123456789";
    var KeyTyped = String.fromCharCode(getKeyCode(event));
    // IE only version var KeyTyped = String.fromCharCode(window.event.keyCode);
    // ** IE only var srcObject = window.event.srcElement;
    var targ = getTarget(event);
    //alert(window.event.keyCode);
    keyCount = targ.value.length;
    keyCode = getKeyCode(event);
    if (keyCode < 15) /* del, backspace and other movement characters are okay */ {
        return true;
    } else if (sMask.indexOf(KeyTyped.toString()) == -1) {
        return false;
    }
	
    keyEntered = KeyTyped;
    keyCount++;
    switch (keyCount) {
	case 2:
            targ.value += keyEntered + "/";
            break;
	case 5:
            targ.value += keyEntered + "/";
            break;
	default:
            return true;
    }
    return false;
}

/**
 * Função utilizada para máscara de entrada de data e hora no formato XX/XX/XXXX XX:XX
 */
function dateHourMask(event) {
    var sMask = "0123456789";
    var KeyTyped = String.fromCharCode(getKeyCode(event));
    // IE only version var KeyTyped = String.fromCharCode(window.event.keyCode);
    // ** IE only var srcObject = window.event.srcElement;
    var targ = getTarget(event);
    //alert(window.event.keyCode);
    keyCount = targ.value.length;
    keyCode = getKeyCode(event);
    if (keyCode < 15) /* del, backspace and other movement characters are okay */ {
        return true;
    } else if (sMask.indexOf(KeyTyped.toString()) == -1) {
        return false;
    }

    keyEntered = KeyTyped;
    keyCount++;
    switch (keyCount) {
        case 2:
            targ.value += keyEntered + "/";
            break;
        case 5:
            targ.value += keyEntered + "/";
            break;
        case 10:
            targ.value += keyEntered + " ";
            break;
        case 13:
            targ.value += keyEntered + ":";
            break;
        default:
            return true;
    }
    return false;
    }

/**
 * Função utilizada para mudar o foto dos campos ao digitar. Recebe como parâmetros o componente atual, o tamanho máximo (numero de caracteres)
 * que apos este será mudado o foco, o elemento para qual irá o foco e o listener do evento utilizado (ouvinte).
 **/
function mudaFoco(componente,tamanho,proximo,event){
    keyCode = getKeyCode(event);
    if(keyCode == 32 || (keyCode > 40 && keyCode != 127 && keyCode != 144 && keyCode != 145 && keyCode != 154 && keyCode != 155 && keyCode < 224) || 
        keyCode > 227){ /* Caracteres de movimento nao entram. */
        if(document.getElementById(componente).value.length >= tamanho){
            document.getElementById(proximo).focus();
        }
    }
}

function getKeyCode(e) {
    //IE5
    if (e.srcElement) {
        return e.keyCode
    }
    // NC5
    if (e.target) {
        return e.which
    }
}

function getTarget(e) {
    // IE5
    if (e.srcElement) {
        return e.srcElement;
    }
    if (e.target) {
        return e.target;
    }
}

/**
 * Função utilizada para concatenar caracteres a esquerda de uma string utilizando o tamanho e a mascara passados
 * como parâmetro.
 *
 * Exemplo: LPad("a",  "00000"), retornaria "0000a".
 *
 * @param string string que sera concatenada
 * @param mascara mascara para concatenação
 */
function LPad(string, mascara){
    var retorno = '';
    var tamCodigo = string.length;
    var tamMascara = mascara.length;

    if(tamCodigo < tamMascara){
        retorno = mascara.substring(0, tamMascara-tamCodigo).concat(string);
    }
    else{
        retorno = string;
    }

    return (retorno);
}

/**
*Verifica se a data informada é válida.
*@Autor: Maxwell Rocha
*@Param: campo (input de texto DATA)
*@Event: onBlur=validarCampoData(this)
**/
function validarCampoData(campo)  
{
	if(campo.value.length == 10 || campo.value.length == 16)
	{			

            var arrayData = campo.value.split('/');  
		  
	    //Os dias da data  
	    var dia = Number(arrayData[0]);  
	    //O mês da data  
	    var mes = Number(arrayData[1]);  
	    //O ano da data  
	    var ano = Number(arrayData[2].substring(0,4));  
		
	    //Para guardar o total de dias que tem no mês  
	    var totalDiasMes;  
	  
	    //Nos primeiro 7 meses do ano os impares que são os meses que tem 31 dias  
	    // depois do 7 primeiros os meses que tem 31 são os pares, seta o resultado  
	    //que deve dar da operação MOD de acordo com esse padrão  
	    var mod = (mes <= 7 ? 1 : 0);  
	  
	    //Se for fevereiro tem que saber se é bissexto ou não  
	    if(mes == 2)  
	    {  
	        //Bissexto 29, senão 28  
	        totalDiasMes = (isLeap(ano) == true ? 29 : 28);  
	    }  
	    else  
	    {  
	        totalDiasMes = (mes%2==mod ? 31 : 30);  
	    }  
	  
	    //Se o dia for maior que o total de dias no mês, então ele será o ultimo  
	    if(dia > totalDiasMes)  
	    {
	        alert('O dia informado é maior que o dia permitido.');
	        campo.value="";
	        return false;
	    }
	    else if(dia <= 0)  
	    {
	        alert('O dia informado é menor que o dia permitido.');
	        campo.value="";
	        return false;
	    }
	    //Se o mês for maior que 12 então seta o mês para o ultimo mês  
	    if(mes > 12)  
	    {
	        alert('O mês informado é maior que o mês permitido.');
	        campo.value="";
	        return false;
	    }
	    else if(mes <= 0)  
	    {
	        alert('O mês informado é menor que o mês permitido.');
	        campo.value="";
	        return false;
	    }
	    //Verifica se o ano esta no intervalo permitido pelo sistema.
	    if((""+ano).length == 4)  
	    {
	    	dataAtual = new Date();
	    	anoAtual = dataAtual.getFullYear();
	    	if(parseInt(ano) >= parseInt(anoAtual)-150 && parseInt(ano) <= anoAtual)
		{
		    //Linha de codigo adicionado para validar as horas informada pelo usuário.
		    if(campo.value.length == 16)
		    {
			var hora = campo.value.charAt(11) + campo.value.charAt(12);			
			var minutos = campo.value.charAt(14) + campo.value.charAt(15)			
			if(parseInt(hora)>=25)
			{
			    alert("Hora Inválida.");
			    campo.value="";
	    	            return false;	
			}
			if(parseInt(minutos)>=60)
			{
			    alert("Minutos Inválido.");
			    campo.value="";
	    	            return false;	
			}			
		     }
		     /////////////////////////////////////////////////////////////////////////////		    


		    return true;		    	
		}
		else
		{
	            alert("Ano informado não é permitido.");
       	            campo.value="";
  	            return false;
		}
	    }
	    else
	    {
		alert("Quantidade de dígitos inválido para o ano informado.");
		campo.value="";
	        return false;
	    }		                     		

	    if((""+dia).length == 1)
	        dia = "0" + dia;  
	  
	    return ( dia + '/' + mes + '/' + ano);
	}
	else
	{
	    campo.value="";
	    return false;
	}
}  

  /**
  *Verifica se o ano passado por parâmetro é bissexto.
  *@Autor: Maxwell Rocha
  *@Param: year="ano corrente"
  **/
  function isLeap(year)  
  {  
    return (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0));    
  }  
  
  
  /**
  *Formata o um campo html com a máscara informada pelo usuário.
  *@autor: Maxwell
  *@param: campo(objeto html), mask(máscara), event(Evento do obj). 
  *@exemplo: onkeypress="return formata(this, '???.???.???-??', event)" - adiciona automaticamente a máscara de cpf.
  *@observacao:O caracter "?" define que só será permitido números
  *            O caracter "!" define que é permitido qualquer caracter
  *
  **/
  function formata(campo, mask, evt) {
	  
	  if(document.all) { // Internet Explorer
	     key = evt.keyCode; }
	     else{ // Nestcape
	        key = evt.which;
	      }

	 if (key == 8) {
	 return true;
	 }

	  string = campo.value;  
	  i = string.length;

	  if (i < mask.length) {
	   if (mask.charAt(i) == '?') {
	        return (key > 47 && key < 58);
	       } else {
	        if (mask.charAt(i) == '!') {  return true;  }
	    for (c = i; c < mask.length; c++) {
	          if (mask.charAt(c) != '?' && mask.charAt(c) != '!')
	          campo.value = campo.value + mask.charAt(c);
	       else if (mask.charAt(c) == '!'){
	                 return true;
	        } else {
	          return (key > 47 && key < 58);
	           }
	        }
	     }
	   } else return false;
	 }
  
  /**
  *Função responsável por escrever somente números nas caixas de texto.
  *@autor: Maxwell
  *@param: evento
  *@exemplo: onkeypress='return SomenteNumero(event)'
  **/
  function SomenteNumero(e){
	    var tecla=(window.event)?event.keyCode:e.which;
	    if((tecla > 47 && tecla < 58)) return true;
	    else{
	    if (tecla != 8) return false;
	    else return true;
	    }
	}
	 
	 
  /**
	*@Autor: Maxwell
	*Faz um submit para a servlet '/projudi/EstadoMunicipio' que realiza a consulta de todos os municípios cadastrado 
	*conforme estado selecionado.
	*@param1: Objeto HTML select que representa o ESTADO
	*@param2: ID do campo select que representa CIDADE
	*@Exemplo: <select name='estado' id='estado' onchange='carregarCidade(this, 'idSelectCidade')'
	**/
  function carregarCidade(selectEstado, idMunicipio)
  {
	
  	$.ajax({
            url: '/projudi/EstadoMunicipio',
            type: 'GET',
            data: 'estadoSelecionado='+selectEstado[selectEstado.selectedIndex].value,		              
            success: function(data){
				
				var array = eval(data);
				
	        	$('option', '#'+idMunicipio).remove();			        				        	
	        	$('#'+idMunicipio).append('<option value="-1" >Selecione</option>');
	        	
	        	$.each(array, function(i, val) {				        				            
	        		$('#'+idMunicipio).append('<option value="'+val.codCidade+'" >'+val.descricao+'</option>');	      
	    		});			        	
  		 },
  		 error: function(erro){
  		        
  		 }
  			        		 						
      });    
  }
  
  function retira_acentos(palavra) {
	  var com_acento = 'áàãâäéèêëíìîïóòõôöúùûüçÁÀÃÂÄÉÈÊËÍÌÎÏÓÒÕÖÔÚÙÛÜÇ';
	  var sem_acento = 'aaaaaeeeeiiiiooooouuuucAAAAAEEEEIIIIOOOOOUUUUC';
	  var nova='';
	  for(i=0;i<palavra.length;i++) {
		  var indexof = com_acento.indexOf(palavra.charAt(i));
		  if(indexof != -1) {
			  nova += sem_acento.charAt(indexof);
		  } else {
			  nova += palavra.charAt(i);
		  }
	  }
	  return nova;
  }
  
  
  /**
   * Função responsável por validar se um dígito verificador é válido ou não.
   * @return: boolean 
   * **/
  function valida_mod97(sequencial, digitoVerificador, anoExercicio, orgaoJustica, origemProcesso)
	{
		var valor1 = "";
		var resto1 = 0;
		var valor2 = "";
		var resto2 = 0;
		var valor3 = "";
		
		valor1 = preencheZeros(sequencial, 7);
		resto1 = parseInt(valor1,10) % 97;
		valor2 = preencheZeros(resto1, 2) + preencheZeros(anoExercicio, 4) + preencheZeros(orgaoJustica, 3);
		resto2 = parseInt(valor2,10) % 97;
		valor3 = preencheZeros(resto2, 2) + preencheZeros(origemProcesso, 4) + preencheZeros(digitoVerificador, 2);
		return ((parseInt(valor3,10) % 97) == 1);
	}

	
	
  /**
   * Função que devolve um número (passado por parâmetro) com preenchimentos de zeros a esquerda.
   * @return: string 
   * **/
	function preencheZeros(numero, quantidade)
	{			
		var temp = numero+"";
		var retorno = "";
		if(quantidade < temp.length)
		    return temp;
		else
		    {
			for(var i=0; i < (quantidade - temp.length); i++)
			    retorno = "0"+retorno;
			return retorno + temp;
		    }							
	}
	
	
	function retiraFormatacao(objeto)
	{
		$(objeto).val("");
		$(objeto).attr("alt","somenteNumero");
		jQuery('input:text').setMask();
		//$(objeto).focus("");   // linha para tornar o campo com foco obrigatorio, sinalizando o usuario do preenchimento do campo.
	}
	
	function calcula_mod97(sequencial, anoExercicio, orgaoJustica, origemProcesso)
	{
		var valor1 = "";
		var resto1 = 0;
		var valor2 = "";
		var resto2 = 0;
		var valor3 = "";
		valor1 = preencheZeros(sequencial, 7);
		resto1 = parseInt(valor1) % 97;
		valor2 = preencheZeros(resto1, 2) + preencheZeros(anoExercicio, 4) + preencheZeros(orgaoJustica, 3);
		resto2 = parseInt(valor2) % 97;
		valor3 = preencheZeros(resto2, 2) + preencheZeros(origemProcesso, 4) + "00";
		return preencheZeros(98 - (parseInt(valor3) % 97), 2);		
	}
	
	
	$(document).ready( function() {

	  if($("input[type='text'][alt='data'][dataNascimento='true']") != null) {
		$("input[type='text'][alt='data'][dataNascimento='true']").click( function() {
			$("#msgValidacaoNascimento").css('visibility','hidden');
			 $("input[type='image'][value='Cadastrar']").attr("src","/projudi/imagens/botoes/bot-cadastrar.gif");
			 $("input[type='image'][value='Cadastrar']").attr("disabled","");
		});
		
		$("input[type='text'][alt='data'][dataNascimento='true']").blur( function() {
			
			  var dataNasc = $(this).val().split("/");
			  dataNasc = new Date(dataNasc[2],dataNasc[1]-1,dataNasc[0]);
			  var dataAtual = new Date(); 

			  var calculoAno =  dataAtual.getFullYear() - dataNasc.getFullYear();
			  if(calculoAno>=18 && calculoAno<=100)
			  {
				return;
			  }  
			  else
			  {
					 $("#msgValidacaoNascimento").css('visibility','visible');
					 $(this).focus();$(this).focus();$(this).focus();			
	 				 $("input[type='image'][value='Cadastrar']").attr("src","/projudi/imagens/botoes/bot-cadastrarOff.gif");
	 				 $("input[type='image'][value='Cadastrar']").attr("disabled","true");
	 				
			  }							 			  
		});
	  }
	  
		
	});
  

