<!--
function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

function MM_swapImgRestore() { //v3.0
  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}

function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function MM_swapImage() { //v3.0
  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}

function openWindow(url,nomeJanela,propriedades,largura, altura){
		var posAltura = (screen.height - altura)/2;
		var posLargura = (screen.width - largura) /2;
		var prop = propriedades + ',left=' + posLargura + ',top=' + posAltura;
		win = window.open(url,nomeJanela,prop);
		if (parseInt(navigator.appVersion) >= 4) { win.window.focus(); };
}

function gerenciadorOpenUrl(tilesId){
 	location = "index.jsp?tiles_id="+tilesId;
	}
	
	
function navegadorSecao(elem){
	if(elem.value!="")
		location = elem.value;

}

function tachado(elem){
	elem.style.textDecoration = 'line-through';
}

//-->


// ---- essas sao minhas mesmo COPYRIGHT Trinal de Justiça do RN -------------



//////////////////////////////////////////////////////////////////////////////
// funcao que permi a digitacao de valores monetários
//////////////////////////////////////////////////////////////////////////////
function soValoresNumericos(v){
    // o que nao for digitos "," ou "." apague
	return v.replace(/[^\.,\d]/g, "")
}



//////////////////////////////////////////////////////////////////////////////
// funcao que permi a digitacao de valores de data (digitos + '/')
//////////////////////////////////////////////////////////////////////////////
function soValoresDeData(v){
    // o que nao for: "/" ou "digito" apague
	return v.replace(/[^/\d]/g, "")
}



//////////////////////////////////////////////////////////////////////////////
// faz a mesma coisa da funcao mascara so que 
// escolhe qual funcao chamar
//
// idTipoSelecao -> o id do campo hidden que guarda se eh cpf ou cnpj
//////////////////////////////////////////////////////////////////////////////
function mascara_dinamica(objeto, idTipoMascaraAplicada){
	v_obj = objeto
	
	if(document.getElementById(idTipoMascaraAplicada).value == 'cpf'){
		v_fun = cpf;
	}else{
	 	v_fun = cnpj;
	}
    
    setTimeout("execmascara()", 1)
}



///////////////////////////////////////////////////////////////////////////
// Função que limpa campos texto
//////////////////////////////////////////////////////////////////////////
function limparCampo(id) {
		document.getElementById(id).value = "";		
		document.getElementById(id).focus();		
}














//---- Função com creditos porque nesse mundo nada se cria, tudo se transforma -----

//creditos:  http://elcio.com.br/ajax/mascara

// funcao auxilar para aplicar mascaras a campos
function mascara(o, f){
    v_obj = o
    v_fun = f
    setTimeout("execmascara()", 1)
}

// outra funcao auxiliar que chama a funcao para tratar o evento
function execmascara(){
    v_obj.value = v_fun(v_obj.value)
}


// funcao que permite que apenas numeros sejam digitados no campo
function soNumeros(v){
    return v.replace(/\D/g,"")
}

// função que premite apenas letras maiúsculas, minúsculas, acentuadas ou não. Retira todos os caracteres especiais e números
function soLetras(v){
    return v.replace(/[\d\*\/\-\+\.\,\?\;\:\>\<\\\|\[\{\]\}\º\ª\"\'\!\@\#\$\%\¨\&\(\)\_\=\^\~]/g,"")
}

function telefone(v){
    v=v.replace(/\D/g,"")                //Remove tudo o que não é dígito
    v=v.replace(/^(\d\d)(\d)/g,"($1)$2") //Coloca parênteses em volta dos dois primeiros dígitos
    v=v.replace(/(\d{4})(\d)/, "$1-$2")  //Coloca hífen entre o quarto e o quinto dígitos
    return v
}

function cpf(v){
    v=v.replace(/\D/g,"")                    //Remove tudo o que não é dígito
    v=v.replace(/(\d{3})(\d)/,"$1.$2")       //Coloca um ponto entre o terceiro e o quarto dígitos
    v=v.replace(/(\d{3})(\d)/,"$1.$2")       //Coloca um ponto entre o terceiro e o quarto dígitos
                                             //de novo (para o segundo bloco de números)
    v=v.replace(/(\d{3})(\d{1,2})$/,"$1-$2") //Coloca um hífen entre o terceiro e o quarto dígitos
    return v
}

function cep(v){
    v=v.replace(/D/g,"")                //Remove tudo o que não é dígito
    v=v.replace(/^(\d{5})(\d)/,"$1-$2") //Esse é tão fácil que não merece explicações
    return v
}

function cnpj(v){
    v=v.replace(/\D/g,"")                           //Remove tudo o que não é dígito
    v=v.replace(/^(\d{2})(\d)/,"$1.$2")             //Coloca ponto entre o segundo e o terceiro dígitos
    v=v.replace(/^(\d{2})\.(\d{3})(\d)/,"$1.$2.$3") //Coloca ponto entre o quinto e o sexto dígitos
    v=v.replace(/\.(\d{3})(\d)/,".$1/$2")           //Coloca uma barra entre o oitavo e o nono dígitos
    v=v.replace(/(\d{4})(\d)/,"$1-$2")              //Coloca um hífen depois do bloco de quatro dígitos
    return v
}



//////////////////////////////////////////////////////////////////////////////
// Funcao que realiza as contas para saber se o CPF é Valido
//////////////////////////////////////////////////////////////////////////////
function valida_cpf(cpf) { 
	var numeros, digitos, soma, i, resultado, digitos_iguais; 
	digitos_iguais = 1; 
	if (cpf.length < 11) 
				return false; 
	for (i = 0; i < cpf.length - 1; i++) 
				if (cpf.charAt(i) != cpf.charAt(i + 1)) 
							{ 
							digitos_iguais = 0; 
							break; 
							} 
	if (!digitos_iguais) { 
		numeros = cpf.substring(0,9); 
		digitos = cpf.substring(9); 
		soma = 0; 
		for (i = 10; i > 1; i--) 
					soma += numeros.charAt(10 - i) * i; 
		resultado = soma % 11 < 2 ? 0 : 11 - soma % 11; 
		if (resultado != digitos.charAt(0)) 
					return false; 
		numeros = cpf.substring(0,10); 
		soma = 0; 
		for (i = 11; i > 1; i--) 
					soma += numeros.charAt(11 - i) * i; 
		resultado = soma % 11 < 2 ? 0 : 11 - soma % 11; 
		if (resultado != digitos.charAt(1)) 
					return false; 
		return true; 
	}else 
		return false; 
}

 

///////////////////////////////////////////////////////////////////////////////
// Funcao que realiza as contas para saber se o CNPJ é Valido
///////////////////////////////////////////////////////////////////////////////
function valida_cnpj(cnpj) { 
	var numeros, digitos, soma, i, resultado, pos, tamanho, digitos_iguais; 
	digitos_iguais = 1; 
	if (cnpj.length < 14 && cnpj.length < 15) 
				return false; 
	for (i = 0; i < cnpj.length - 1; i++) 
				if (cnpj.charAt(i) != cnpj.charAt(i + 1)) 
							{ 
							digitos_iguais = 0; 
							break; 
							} 
	if (!digitos_iguais){
	 
		tamanho = cnpj.length - 2 
		numeros = cnpj.substring(0,tamanho); 
		digitos = cnpj.substring(tamanho); 
		soma = 0; 
		pos = tamanho - 7; 
		for (i = tamanho; i >= 1; i--) 
					{ 
					soma += numeros.charAt(tamanho - i) * pos--; 
					if (pos < 2) 
								pos = 9; 
					} 
		resultado = soma % 11 < 2 ? 0 : 11 - soma % 11; 
		if (resultado != digitos.charAt(0)) 
					return false; 
		tamanho = tamanho + 1; 
		numeros = cnpj.substring(0,tamanho); 
		soma = 0; 
		pos = tamanho - 7; 
		for (i = tamanho; i >= 1; i--) 
					{ 
					soma += numeros.charAt(tamanho - i) * pos--; 
					if (pos < 2) 
								pos = 9; 
					} 
		resultado = soma % 11 < 2 ? 0 : 11 - soma % 11; 
		if (resultado != digitos.charAt(1)) 
					return false; 
		return true; 
	}else 
		return false; 
} 

// -------------------------------------------------------------------------



















/////////////////////////////////////////////////////////////////////////////////////////
// Função para retirar a mascara de campo de valores de moeda
// 
//     OBS.: Essa função voi feita para ser usada em conjunto com a função
// aplicaMascaraMoeda.
//
// OBS2.: Tem que ser chamada no evento onkeyup para funcionar beleza.
//
// @param campo o campo no qual vai ser aplicado a mascara
// @param evento o evento passao na chamada do método
//
/////////////////////////////////////////////////////////////////////////////////////////
function retiraMascaraMoeda(campo, evento){
	  // teste se estar usando InternetExplorer ou Firefox
	var ie = (typeof window.ActiveXObject != 'undefined');  
   
    if (ie){  
    	codigo = evento.keyCode;  
   	}else{  
   		codigo = evento.which;  
	}
     
     

    if(codigo < 37 || codigo > 40){	 // teclas: left, right, up, down
    	var data = campo.value;  // data com a mascara
			
		campo.value = '';	
		
		// retira todas os pontos e virgulas //
		data = data.replace(/\./g, '');
		data = data.replace(/,/g, '');
			     
    	campo.value = data;
    
    }

}


/////////////////////////////////////////////////////////////////////////////////////////
// Função que aplica a mascara para valores numericos ex: 00.000.000,00
// 
// OBS.: Tem que ser chamada em conjunto com a funcao <code>soValoresNumericos()</code>
// e depois da função <code>retiraMascaraMoeda()</code> para funcionar beleza.
//
// OBS2.: Tem que ser chamada no evento onkeyup para funcionar beleza.
//
// @param campo o campo no qual vai ser aplicado a mascara
// @param evento o evento passao na chamada do método
// @param separadorMilesimo o separador das casas decimais, na maioria das vezes '.'
// @param separadorDecimal o separador dos centavos, normalmente ','
// 
// copyright Tribunal de Justica do Rio Grande do Norte
/////////////////////////////////////////////////////////////////////////////////////////
function aplicaMascaraMoeda(campo, evento, separadorMilesimo, separadorDecimal){
     
     
     // teste se estar usando InternetExplorer ou Firefox
	var ie = (typeof window.ActiveXObject != 'undefined');  
   
    if (ie){  
    	codigo = evento.keyCode;  
   	}else{  
   		codigo = evento.which;  
	}
    
     
    if(codigo < 37 || codigo > 40){  // teclas: left, right, up, down
   
	     
	    var data = campo.value;  // valor sem mascara obrigatoriamente
			
		campo.value = '';	
		
			
		var tamanho  = data.length;

		// retira os ZEROS à esqueda
		
		var i = 0;
		while(i < tamanho){
			if(data.substring(0, 1) == '0'){
				data = data.substring(1, tamanho - i);
			}
			
			i = ++i;
		}
		
		
		tamanho = data.length; // novo tamanho sem ZEROS à esqueda


		switch(tamanho){
		
		   case 0:
		   		data = '0'+separadorDecimal+'00';
		   break;
		   
		   case 1:
		   		data = '0'+separadorDecimal+'0'+data;
		   break;
		   
		   case 2:
		   		data = '0'+separadorDecimal+data;
		   break;
		   
		   default:
		   
		   		var ptAnt = tamanho; // ptAnt é o ponteiro que anda de traz para frente no valor
		
		
				qtdPontos = 0; // guarda a quantidade de pontos que foram colocados na mascara
				
				
				for(ptAnt; ptAnt > 0; ptAnt--){
				
					// quando ptAnt andar duas casas coloque a virgula depois das 2 ultimos digitos ,00
					if(ptAnt == tamanho - 2){
				 		data = data.substring(0, ptAnt)+separadorDecimal+ data.substring(ptAnt, tamanho);
				 	}
				 	
				 	//    SEMPRE que o ponteiro andou 3 casas decimais (descontando os 2 ultimos 
				 	// digitos das casas decimais, a virgula e os pontos colocados anteriormente :P)
				 	// coloque um ponto.
				 	// isso em termos de algoritmo é:
				 	// Se o resto da divisao de tamanho - ptAnt por 3 for igual a ZERO.
				 	// o valor vai ser o primeiro digito + '.' + do segundo digito até
				 	// o tamanho inicial mais a virgura mais a quantidade de pontos colocados
		
				 	if( (tamanho - (ptAnt+2) ) % 3 == 0 && ptAnt < (tamanho -2) ){
				 	
				 		data = data.substring(0, ptAnt)+separadorMilesimo+ data.substring(ptAnt,    (  tamanho + 1 + qtdPontos )   );
				 	
				 		qtdPontos = qtdPontos + 1  ;
				 		
				 	}
				 	
				}
		     
		   break;
		   
		}  // fim do switch//

		
    	campo.value = data;
    	
    }
}























////////////////////////////////////////////////////////////////////////////////
// Função que aplica uma mascara de data no campo   **/**/****
// Funciona legal se for chamada no evento   *** onkeyup ***
//
//  copyright  Tribunal de Justiça do Rio Grande do Norte
/////////////////////////////////////////////////////////////////////////////////
function aplicaMascaraData(campo, event){

	// teste se estar usando InternetExplorer ou Firefox
	var ie = (typeof window.ActiveXObject != 'undefined');  
   
    if (ie){  
    	codigo = event.keyCode;  
   	}else{  
   		codigo = event.which;  
	}

	var data = campo.value;

	// se precionou backspace e teclas de navegacao (up, down, left, right) nao valida
	if(data.length > 0 && codigo != 8 && (codigo < 37 || codigo > 40) ){ 

		//retira todas as barras '/'
		data = data.replace(/\//g, "");
	
	
		// pega o dia o mes e o ano
		var dia = data.substring(0, 2);
		
		var mes = data.substring(2, 4);
		
		var ano = data.substring(4, 8);
	
	
		// aplica novamete a mascara
	
		data = dia;
		
		if(dia.length == 2){
			data = data + '/';
		}

		
		if(mes != ""){
			data = data + mes;
		}
	
		if(mes.length == 2){
			data = data + '/';
		}
	
		if(ano != ""){
			data = data + ano;
		}
		
	
		campo.value = data;

	}

} 

////////////////////////////////////////////////////////////////////////////////
// funcao que completa o codigo do ano das datas
//
// Tem que ser chamada no evento *** onkeydown *** para funcionar
//
//  copyright  Tribunal de Justiça do Rio Grande do Norte
////////////////////////////////////////////////////////////////////////////////
function completaAnoDatas(campo, event){

	// teste se estar usando InternetExplorer ou Firefox
	var ie = (typeof window.ActiveXObject != 'undefined');  
   
    if (ie){  
    	codigo = event.keyCode;  
   	}else{  
   		codigo = event.which;  
	}

	var ano = '';

	if(codigo == 9){ // o usuario precionou 'tab', completa o codigo


		var data = campo.value;  // data com a mascara
	
		
		var tamanho  = data.length;
		
		//existem 3 cituacoes onde a data precisa ser completada	
		
		if(tamanho == 7){  //  xx/xx/x
			ano = data.substring(6, 7);
			ano = '200'+ano;      //  xx/xx/200x
		}
		
		if(tamanho == 8){ //   xx/xx/xx
			ano = data.substring(6, 8);
			ano = '20'+ano;   //  xx/xx/20xx
			
			
		}
		
		if(tamanho ==9){  //   xx/xx/xxx
			ano = data.substring(6, 9);
			ano = '2'+ano;   //  xx/xx/2xxx
		}
		
		if(ano != ''){
			//  xx/xx/	+ ano	
			campo.value = data.substring(0, 6) + ano;	
		}else{
			campo.value = data;
		}
	
	}
	
}


////////////////////////////////////////////////////////////////////////////////
////////                                                                ////////                
////////       Criado por : Flavio Theruo Kaminisse                     ////////
////////           email: falecomjaps@gmail.com                         ////////
////////            url: http://www.japs.etc.br                         ////////
////////             Data Criao : 30/08/2005                            ////////
////////                                                                ////////
////////                  Adaptado por: Jadson                          ////////
////////             Data Modificação: 20/12/2007                       ////////
////////                                                                ////////
////////          - Compativel com MSIE e Firefox.                      ////////
////////////////////////////////////////////////////////////////////////////////

//
// Funcao que valida a data
// chamada no evento *** onblur*** para funcionar
//
function valida_data(idCampoData) {
	
	var date = document.getElementById(idCampoData).value;
	
	if(date.length > 0){ // so valida se tiver algo
	
		var array_data = new Array;
		
		//                                  dia          /     mes       /    ano
		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 se a data esta no formato dd/mm/yyyy e se o dia tem 2 digitos e esta entre 01 e 31
		//se o mes tem d2 digitos e esta entre 01 e 12 e o ano se tem 4 digitos e esta entre 1000 e 2999
		if ( date.search(ExpReg) == -1 )
			erro = true;
		//Valido os meses que nao tem 31 dias com execao de fevereiro
		else if ( ( ( array_data[1] == 4 ) || ( array_data[1] == 6 ) || ( array_data[1] == 9 ) || ( array_data[1] == 11 ) ) && ( array_data[0] > 30 ) )
			erro = true;
		//Valido o mes de fevereiro
		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;
		}
		if ( erro ) {
			alert("Data Inválida");
			document.getElementById(idCampoData).focus();
			document.getElementById(idCampoData).value = '';
		}
	}
	
}


///////////////////////////////////////////////////////////////////////////////
//Funcao que possiciona o cursor na ultima posicao do textBox
//Para impedir que o usuario digite os dados onde quiser
//
//Para funcionar beleza tem que ser chamada no onclick e onfocus
//
//Fonte: http://parentnode.org/javascript/working-with-the-cursor-position/
//     http://blog.vishalon.net/Post/57.aspx
///////////////////////////////////////////////////////////////////////////////
function setCaretLastPosition(elemento) {

var posicaoFinal  = elemento.value.length; //ultima posicao

if(elemento.createTextRange) {                   //para IE
   /* Create a TextRange, set the internal pointer to  
      a specified position and show the cursor at this  
      position  
   */  
   var range = elemento.createTextRange();   
   range.move("character", posicaoFinal);   
   range.select();   
} else if(elemento.selectionStart || elemento.selectionStart == '0') {  //Para FireFox
   /* Gecko is a little bit shorter on that. Simply  
      focus the element and set the selection to a  
      specified position  
   */ 
   elemento.focus();   
   elemento.setSelectionRange(posicaoFinal, posicaoFinal);   
}

}





