/*
####################   BIBLIOTECA JAVASCRIPT DO PE  ##########################
*/

var status_count;
var status_out;
var header_div;

function validaCadastro(matricula){
	if(isNaN(matricula) || matricula.length != 9){
		return false;
	}
	var d = 0;
	for (i=0;i<matricula.length-1;i++){
		n = matricula.substring(i, i+1);
		d += n*(i+1);
	}
	d = d % 10;
	return (d == matricula.substring(8));
}

function im(){
	var tmp_msg = new String();
	tmp_msg = status_out;

	status_count = (++status_count)%(100-tmp_msg.length);
	var msg = "";
	for (i = 0;i<status_count;i++){
		msg += " ";
	}
	window.status = status_out + msg + ">>>";
	window.setTimeout('im()',25)
}

function iniStatus(msg){
	status_count = 0;
	status_out = msg;
	im();
}

function setStatus(msg){
	window.status = msg;
}

function statusOK(){
	window.status = "PRONTO, PODE UTILIZAR O SISTEMA.";
}

/*
* Seta o foco no primeiro campo da tela independente de formulário.
* Autor: Elvis e Jorge
*/
function getFocoPrimeiro() {
	var objeto = null;
	var i = 0, j = 0;
	var seleciona = true;

	try{
		_while:
		while (i < document.forms.length){
			while (j < document.forms[i].elements.length){
				if ((document.forms[i].elements[j].type != "hidden") && (document.forms[i].elements[j].disabled != true)) {
					objeto = document.forms[i].elements[j];
					if ("submit reset button select-one select-multiple".indexOf(document.forms[i].elements[j].type) != -1){
						seleciona = false;
					}
					break _while;
				}
				j++;
			}
			i++
		}

		if (objeto != null) {
			if (seleciona == true){
				objeto.select();
			}
			objeto.focus();
		}
	}catch( e ){
		return true;
	}

	window.status = "PRONTO, PODE UTILIZAR O SISTEMA.";
}


function disable(botao){
	//botao.disabled = true;
}

/*============================== Validações de Formulários ==========================*/

//function carregaCombo(frm,acao,operacao){
	//frm.action='';
	//frm.acao.value=acao;
	//frm.operacao.value=operacao;
	//frm.buscar.value="false";
	//showModelessDialog("../lib/msg_aguarde.jsp",window,"scroll:no;status:false;dialogWidth:400px;dialogHeight:400px");
	
	//frm.submit();
	
//}

//Está função serve somente caso o formulário possua um único campo
//-------------PARAMETROS-------------
//FRM - NOME DO FORMULARIO

function desabilitaBotaoPesquisa( frm )
{
	var i = 0, j = 0;
	while (i < document.forms.length){
		while (j < document.forms[i].elements.length){
			if ((document.forms[i].elements[j].value == "Buscar")||(document.forms[i].elements[j].value == "Pesquisar")) {
				document.forms[i].elements[j].disabled = true;
				desabilita = true;
			}
			j++;
		}
		i++;
	}
}

function enviar2( frm ){
    
	if (frm.acao.value=="1") {
		setStatus("VERIFICANDO OS DADOS PARA INSERÇÃO");
		if ( verificaMsgCampo(frm) ){
			desabilitaBotaoPesquisa( frm );
			return true;
		}else{
			return false;
		}
	} else if (frm.acao.value=="2" && frm.operacao.value=="2") {
		setStatus("VERIFICANDO OS DADOS PARA ALTERAÇÃO");
		if ( verificaMsgCampo(frm) ){
			setStatus("INFORME SE DESEJA ALTERAR O REGISTRO");
			if(confirm("Deseja realmente alterar este registro ?")==1){
				iniStatus("AGUARDE, O SISTEMA ESTÁ PROCESSANDO A ALTERAÇÃO");
				desabilitaBotaoPesquisa( frm );
				return true;
			}else{
				setStatus("VOCÊ ABORTOU UM PROCESSO DE ALTERAÇÃO");
				return false;
			}
		}else{
			setStatus("PREENCHA OS CAMPOS OBRIGATÓRIOS PATA ALTERAR OS DADOS");
			return false;
		}
	} else if (frm.acao.value=="3" && frm.operacao.value=="2") {
		setStatus("VERIFICANDO OS DADOS PARA EXCLUSÃO");
		if (verificaMsgCampo(frm)){
			setStatus("INFORME SE DESEJA EXCLUIR O REGISTRO");
			if(confirm("Deseja realmente excluir este registro ?")==1){
				iniStatus("AGUARDE, O SISTEMA ESTÁ PROCESSANDO A EXCLUSÃO");
				desabilitaBotaoPesquisa( frm );
				return true;
			}else{
				setStatus("VOCÊ ABORTOU UM PROCESSO DE EXCLUSÃO");
				return false;
			}
		}else{
			setStatus("PREENCHA OS CAMPOS OBRIGATÓRIOS PARA EXCLUIR OS DADOS");
			return false;
		}
	} else if (frm.acao.value=="4") {
		if (tudovazio(frm)){
			alert("Preencha o campolgum parâmetro de busca.");
			return false;
		} else {
			iniStatus("AGUARDE, O SISTEMA ESTÁ PROCURANDO AS INFORMAÇÕES");
			desabilitaBotaoPesquisa( frm );
			return true;
		}		
	} else {
		if(verificaMsgCampo(frm)){
			desabilitaBotaoPesquisa( frm );
			return true;
		}else{
			return false;
		}
	}
	
}

/* Função utilizada quando o formulário possui mais de 1 campo*/
//-------------PARAMETROS-------------
//FRM - NOME DO FORMULARIO
function enviar(frm){

	if (frm.acao.value=="1") {
		if (verificaMsgCampo(frm)) {
			submeter(frm);
		}
	} else if (frm.acao.value=="2") {
		if (verificaMsgCampo(frm)){
			if(confirm("Deseja realmente alterar este registro?")==1){
				submeter(frm);
			}
		}
	} else if (frm.acao.value=="3") {
		if (verificaMsgCampo(frm)){
			if(confirm("Deseja realmente excluir este registro?")==1){
				submeter(frm);
			}
		}
	} else if (frm.acao.value=="4") {
		if (tudovazio(frm)){
			alert("Preencha o campolgum parâmetro de busca.");
		} else {
			frm.submit();
		}
	} else {
		if (verificaMsgCampo(frm)){
			submeter(frm);
		}
	}
}


//Testa se os campos estão com o argumento necessário
//-------------PARAMETROS-------------
//FRM - NOME DO FORMULARIO
function verificaMsgCampo(frm){ 
	return send(frm);
}

//Submete o formulário
//-------------PARAMETROS-------------
//FRM - NOME DO FORMULARIO
function submeter(frm){ 
	frm.submit();
}

//Verifica se todos os campos do form estão sem nenhum parametro setado
//-------------PARAMETROS-------------
//FRM - NOME DO FORMULARIO
function tudovazio(form){
	var a=0;

	for (nI = 0; nI < form.length; nI++){

		//pega o validationmsg para IE ou Mozilla
		if(document.all) { // Internet Explorer
			var objValidationMsg = form.elements[nI].validationmsg;
		}else{
			var objValidationMsg = form.elements[nI].attributes.getNamedItem("validationmsg");
		}

		if (objValidationMsg){
			if (isVazio(form.elements[nI]) == false){
				return false;
			}
		}

	}

	return true;

}

//Verifica se todos os campos do form estão sem nenhum parametro setado
function isVazio( field ){
	if (field.type == "select-one" || field.type == "radio") {
		if(field.type == "select-one"){
			if (field.selectedIndex != 0){
				return false;
			}
		}
		if(field.type == "radio"){
			if (field.checked != false){
				return false;
			}
		}
	}else{
		value = field.value;
		if ( value!="" ){
			return false;
		}
	}
	return true;
}


// valida os campos do formulario passado como parametro
//-------------PARAMETROS-------------
//FRM - NOME DO FORMULARIO
function send(form){
	for (nI = 0; nI < form.length; nI++){

		//pega o validationmsg para IE ou Mozilla
		if(document.all) { // Internet Explorer
			var objValidationMsg = form.elements[nI].validationmsg;
		}else{
			var objValidationMsg = form.elements[nI].attributes.getNamedItem("validationmsg");
		}

		if ( objValidationMsg ){
			if ( isBlank(form.elements[nI]) == false ){
				if ( form.elements[nI].disabled == false ){
					if(document.all) { // Internet Explorer
						alert( objValidationMsg + "                 " );
					}else{
						alert( objValidationMsg.value + "                 " );
					}
					form.elements[nI].focus();
					return false;
				}
			}
		}
	}
	return true;
}

// valida os campos do formulario passados como parametro
function isBlank(field){

	if (field.type == "select-one" || field.type == "radio" || field.type == "checkbox") {
		if(field.type == "select-one"){
			if (field.selectedIndex == 0){
				return false;
			}
		}
	}else{
		value = field.value
		if ((value.length == 0) || (spaces(field.value) == true)){
			return false;
		}
	}
	return true
}

// verifica se existe espaco em branco
//--------------PARAMETROS--------------
// TEXT - VALUE DO CAMPO
function spaces(text){
	for (n = 0; n < text.length; n++){
		if (text.charAt(n) != " "){
			return false;
		}
	}
	return true;
}

// verifica se o valor passado eh numerico
//--------------PARAMETROS--------------
// FIELD - VALUE DO CAMPO
function isNumber(field){
	if ( isNaN(field.value) == true ) {
		alert("Informe um valor numérico para este campo.");
		field.value = "";
		field.focus();
		return false;
	}
	return true;
}

function findChar(obj){
	var texto;
	texto = "";
	for(var i=0; i < obj.value.length; i++){
		if (obj.value.charAt(i) != "'" && obj.value.charAt(i) != '"'){
			texto += obj.value.charAt(i);
		}
	}
	obj.value = texto;
}

// verifica se o valor passado eh numerico
function isNumber2(field){
	if (isNaN(field.value) == true) {
		field.value = "";
		field.focus();
		return false;
	}
	return true;
}

// verifica se o valor passado eh numerico
function isNumber3(field){
	if (isNaN(field.value) == true) {
		alert("Informe um valor númerico para este campo.");
		field.value = "";
		field.focus();
		return false;
	}
	return true;
}


// verifica se o valor passado possui a quantidade de caracteres especificado, se é numérico ou texto
//tipo: 1 - Numerico | 2 - Literal
//CP - NOME DO CAMPO
//MINIMO - MININO DE CARACTERES ACEITO PELO CAMPO
//MAXIMO - MAXIMO DE CARACTERES ACEITO PELO CAMPO 
function isLengthOK(cp,minimo,maximo,tipo){
	if (cp.value == ""){ return; }
	if (cp.value.length < minimo){
		alert("Preencha esse campo com no mínimo " + minimo + " caracteres");
		cp.focus();
		return false;
	}
	if (cp.value.length > maximo){
		alert("Preencha esse campo com no máximo " + maximo + " caracteres");
		cp.focus();
		return false;
	}
	if (tipo==1 && !isNumber2(cp)){
		alert("Este campo deve ser númerico");
		return false;
    }
	
	return true;
}

// esta funcao verifica se o e-mail está em um formato válido
//----------PARAMETROS----------
//email - CAMPO DO FORMULARIO

function validaEmail( obj ){
	if ( obj.value != "" ){
		validacao = /^[a-z|A-Z|0-9|_|.]+@[a-z|A-Z|0-9|_|.]+$/;
		
		return validacao.test( obj.value );
		alert(validacao.test( obj.value ));
	}
	return true;
}

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; }
    }/*elseif(typeof(mail) == "object"){
        if(er.test(mail.value)){
                    return true;
                }
    }*/else{
		alert("Informe um endereço de email válido.");
		focus();
        return false;
        }
}

function validaEmail2(email){
	if (email.value != ""){
		if (!checkMail(email)) {
			//alert("Email inválido! Por favor, informe um endereço de email válido.");
			email.focus();
			email.value = "";		
		}
	}
}

function validateCEP(cep) {
	var valid = "0123456789";
	var hyphencount = 0;
	alert(cep.value.length);
	if(cep.value.length != 0){
		if (cep.value.length < 8) {
			alert("Por favor, entre com os oitos números do cep.");
			cep.value="";
			cep.focus();
			return false;
			}
			for (var i=0; i < cep.value.length; i++) {
				temp = "" + cep.substring(i, i+1);
				if (temp == "-") hyphencount++;
				if (valid.indexOf(temp) == "-1") {
					alert("Caracteres inválidos. Tente novamente.");
					return false;
				}
			if ((hyphencount > 1) || ((cep.length==10) && ""+cep.charAt(5)!="-")) {
				alert("O caractere hífen deve ser usado com um código formatado como 5 digitos + 3, como '12345-678'. Por favor, tente de novo.");
				return false;
			}
		}
	}	
	return true;
}

// esta funcao tranforma a data de um objeto locale padrao - brasileiro
// para o padrao americano (tratado pelo javascript)
//----------PARAMETROS----------
//DATA-CAMPO DO FORMULARIO
function converteLocaleData(data){
   var dia, mes, vano, saida;
   dia = data.value.substring(0,2);
   mes = data.value.substring(3,5);
   vano = data.value.substring(6,10);
   saida = new Date(mes+'/'+dia+'/'+vano);
   return saida;
}

// funcao para testar se uma data eh menor que a outra
// posicao eh um parametro para informar o foco
function testaData(datai, dataf, parai, paraf, posicao, msg){
 
	if (converteLocaleData(dataf) < converteLocaleData(datai)){
		if( msg == null){ 
			msg = 'deve ser igual ou menor a'; 
		}
		alert(''+parai+' '+datai.value+' '+msg+' '+''+paraf+' '+dataf.value);
		if (posicao == 1){
			datai.value="";
			datai.focus();
		}else{
			dataf.value="";
			dataf.focus();
		}
		return false;
	}else{
		return true;
	}
}

// funcao para testar se uma data eh menor ou igual a outra
// posicao eh um parametro para informar o foco
function testaData2(datai, dataf, parai, paraf, posicao, msg){

	if ( converteLocaleData(dataf) <= converteLocaleData(datai) ){

		if( msg == null){ msg = 'deve ser igual ou menor a'; }

		alert(''+parai+' ('+datai.value+') '+msg+' '+''+paraf+' ('+dataf.value+').');

		if (posicao == 1){
			datai.value="";
			datai.focus();
		} else {
			dataf.value="";
			dataf.focus();
		}

		return false;

	}else{
		return true;
	}

}

function testaOrdemData(datai, dataf, parai, paraf, posicao, mensagem){
	if (mensagem == 1){
		return testaData(datai, dataf, parai, paraf, posicao);
	} else if (mensagem == 2){
		if (converteLocaleData(datai) < converteLocaleData(dataf)){
   			alert("["+parai+"] "+datai.value+" deve ser igual ou posterior a ["+paraf+"] "+dataf.value);
			if (posicao == 1){
				datai.focus();
			} else {
				dataf.focus();
			}
			return false;
		}else{
			return true;
   		}
	} 
}

// Função para testar se um valor está dentro de uma faixa
// Implementada por: Jorge Campos
function validaFaixa( objFrm, Min, Max, msg ){
	if( msg==null ){ 
		msg = 'O valor deve ser maior que '+ Min +' e menor ou igual a '+ Max; 
	}
	if( objFrm.value+'a' != 'a'){
		if( objFrm.value > Min && objFrm.value <= Max){
			return true;
		}else{
			alert( msg );
			objFrm.value = '';
			objFrm.focus();
		}
	}else{
		return true;
	}
}

function desabilitaCTRL( objFrm ){
	for ( var i = 0 ; i < objFrm.elements.length; i++ ){
		if ( objFrm.elements[i].type != "button" && objFrm.elements[i].type != "select-one" && objFrm.elements[i].type != "select-mutiple" && objFrm.elements[i].type != "hidden"){
			//objFrm.elements[i].disabled = true;
		}
	}
}

function soNumeros(e) {
	if(document.all) { // Internet Explorer
		var tecla = e.keyCode;
	}else{
		var tecla = e.which;
	}

	if ( (tecla > 47 && tecla < 58) || (tecla > 95 && tecla < 106) || tecla == 9 || tecla == 8 || tecla == 46 ) { // numeros de 0 a 9 e virgula
		return true;
	}else{
		if (tecla != 8) { // backspace
			return false;
		}else{
			return true;
		}
	}
}

function soNumerosVirgula(field) {
	/*if(document.all) { // Internet Explorer
		var tecla = e.keyCode;
	}else{
		var tecla = e.which;
	}
	if ( (tecla > 47 && tecla < 58) || tecla == 44 ) { // numeros de 0 a 9 e virgula		
		return true;		
	}else{
		if (tecla != 8) { // backspace
			return false;
		}else{
			return true;
		}
	}*/
	var n="0123456789,";
	
	for(var j=0;j<field.length;j++){
		for(var i=0;i<n.length;i++){
			if(n.charAt(i)==field.charAt(j)){
				return true;
				break;
			}else{	
				alert("Informe um valor numerico ou virgula para este campo");
				field.value = "";
				field.focus();
				return false;
			}
		}
	}		
		
}

function eNumerico(t){
	var n="0123456789,";
	var ret=false;
		for(var j=0;j<t.length;j++){
			ret=false;
			for(var i=0;i<n.length;i++){
				if(n.charAt(i)==t.charAt(j)){
					ret=true;
					break;
				}
			}
			if(!ret){
				alert("Informe um valor numerico ou virgula para este campo.");
				break;
			}
		}
	return ret;
}

function SNumerico(event){
	var t=event.wich;
	return false;
	if(t==null){
		t=event.keyCode;
	}
	return true;
}

function mostraHeader() {
	header_float.style.left=header_table.offsetLeft;
	
	if (document.body.scrollTop >= header_table.offsetTop+75) {
		header_float.style.top=document.body.scrollTop;
	}else{
		header_float.style.top=header_table.offsetTop+75;
	}
		
}

function getDataAtual(){
	var d = new Date();
	var dia = new String(d.getDate());
	var mes = new String(d.getMonth() + 1);
	var ano = new String(d.getYear());

	if(dia.length == 1){
		dia = "0" + dia;
	}

	if(mes.length == 1){
		mes = "0" + mes;
	}

	return dia + "/" + mes + "/" + ano;
}


function formata_dec(campo,tammax,teclapres) {
	// Quando eh digitado um carectere so permite a entrada de numeros e fomata como valor #.###,##
	// Essa função eh usada no onkeypress
	var tecla = teclapres.keyCode;
	vr = campo.value;
	vr = vr.replace( ",", "" );
	vr = vr.replace( ".", "" );
	vr = vr.replace( ",", "" );
	vr = vr.replace( ".", "" );
	vr = vr.replace( ".", "" );
	vr = vr.replace( ".", "" );
	vr = vr.replace( ".", "" );
	
	tam = vr.length;

	if ( tecla == 8 || tecla >= 48 && tecla <= 57 || tecla >= 96 && tecla <= 105 ){
		if ( tam <= 2 ){ 
	 		campo.value = vr ; }
	 	if ( (tam > 2) && (tam <= 5) ){
	 		campo.value = vr.substr( 0, tam - 2 ) + ',' + vr.substr( tam - 2, tam ) ; }
	 	if ( (tam >= 6) && (tam <= 8) ){
	 		campo.value = vr.substr( 0, tam - 5 ) + '.' + vr.substr( tam - 5, 3 ) + ',' + vr.substr( tam - 2, tam ) ; }
	 	if ( (tam >= 9) && (tam <= 11) ){
	 		campo.value = vr.substr( 0, tam - 8 ) + '.' + vr.substr( tam - 8, 3 ) + '.' + vr.substr( tam - 5, 3 ) + ',' + vr.substr( tam - 2, tam ) ; }
	 	if ( (tam >= 12) && (tam <= 14) ){
	 		campo.value = vr.substr( 0, tam - 11 ) + '.' + vr.substr( tam - 11, 3 ) + '.' + vr.substr( tam - 8, 3 ) + '.' + vr.substr( tam - 5, 3 ) + ',' + vr.substr( tam - 2, tam ) ; }
	 	if ( (tam >= 15) && (tam <= 17) ){
	 		campo.value = vr.substr( 0, tam - 14 ) + '.' + vr.substr( tam - 14, 3 ) + '.' + vr.substr( tam - 11, 3 ) + '.' + vr.substr( tam - 8, 3 ) + '.' + vr.substr( tam - 5, 3 ) + ',' + vr.substr( tam - 2, tam ) ;}
	}		
	
}

function replaceTotal(texto,strI,strF){
	var tam, vet, i;
	vet = texto.split(strI);
	tam = vet.length;
	for(i=0;i<tam;i++){
		texto = texto.replace( strI, strF );
	}
	return texto;
}

	function validaCombo(combo){
		if (combo.options[combo.selectedIndex].text == ".::Sem Registros::."){
			combo.options[0].selected = true;
		}
	}
