﻿/*
-----------------------------------------------------------------------------
Nome da Função: paginar(numPagina)
Objetivo: Utilizada na paginação
-----------------------------------------------------------------------------
*/
function paginar(numPagina)
{
	formulario = document.frmPaginacao;
	formulario.hdPaginaAtual.value = numPagina;
	formulario.submit();
}

/*
-----------------------------------------------------------------------------
Nome da Função: somenteNumeros(eventoTecla)
Objetivo: Permitir apenas caracteres numéricos.
Parâmetros:
		eventoTecla -> evento que representa a tecla digitada (event).
Chamada: onKeyPress="return somenteNumeros(event)"
-----------------------------------------------------------------------------
*/

function somenteNumeros(eventoTecla)
{
    // codigo ASCII da tecla pressionada
	switch (buscaNavegador()){
		case 'IE':
			codTecla = eventoTecla.keyCode;
			break;
		case 'FIREFOX':
			codTecla = eventoTecla.which;
			break;
	}
	
	if (!(((codTecla >= 48) && (codTecla <= 57)) || (codTecla == 8) || (codTecla == 9) || (codTecla == 13) || (codTecla == 0)))
        return false;
}

/*
-----------------------------------------------------------------------------
Nome da Função: buscaNavegador()
Objetivo: Busca o navegador utilizado pelo usuário
Parâmetros: Nenhum
Chamada: return buscaNavegador()
-----------------------------------------------------------------------------
*/
function buscaNavegador()
{
	agent = navigator.userAgent;
	IE = (agent.indexOf("MSIE") > -1)?true:false;
	FIREFOX = (agent.indexOf("Firefox")> -1)?true:false;

	if (IE)
		return "IE";
	else
		if (FIREFOX)
			return "FIREFOX";
}
	
/*
-----------------------------------------------------------------------------
Nome da Função: validaFormulario(formulario)
Objetivo: Valida o preenchimento dos campos do formulário.
Parâmetros:
Chamada: Botão de Envio do Formulário - evento onClick="return validaFormulario()"
-----------------------------------------------------------------------------
*/
function validaFormulario(formulario)
{
	msg = '';
	qt_campos =	formulario.length;
	
	for (i=0;i<qt_campos;i++)
	{
		if (formulario.elements[i].className.indexOf('obrigatorio') >= 0)
		{
			if (formulario.elements[i].type == 'select-one')
			{
				if ((formulario.elements[i].value == '') || (formulario.elements[i].value == 0))
				{
					titulo = formulario.elements[i].title;
					msg += 'O Campo '+ titulo +' deve ser preenchido! \n';
				}
			}
			else
			{
				if (formulario.elements[i].value == '')
				{
					titulo = formulario.elements[i].title;
					msg += 'O Campo '+ titulo +' deve ser preenchido! \n';
				}
			}
		}
	}
	if (msg != '')
	{
		msg = 'Os seguintes erros ocorreram: \n'+ msg;
		alert(msg);
		return false;
	}
	else
	{
		if (formulario.onsubmit == '')
			formulario.submit();
		else
			return true;
	}
}

/*
-----------------------------------------------------------------------------
Função: mascara(campo, tipo)
Objetivo: Aplica Máscara a um campo. 
Parâmetros:
		campo -> campo a ser aplicado a máscara.
		mascara -> máscara a a ser aplicada(data, telefone, cpf..)
Chamada: onKeyUp="mascara(this,'tipodemascara')"
-----------------------------------------------------------------------------
*/
function mascara(campo, mascara)
{
    var valorAtual = campo.value;        
    var valorNumerico = '';
    var nIndexModelo = 0;
    var nIndexString = 0;
    var valorFinal = '';
    var adicionarValor = true;
    
	switch(mascara)
	{
		case 'telefone':
			Modelo = '(##)####-####'
			break;
		case 'telefoneSimples':
			Modelo = '####-####'
			break;
		case 'data':
			Modelo = '##/##/####'
			break;
		case 'dataDiaMes':
			Modelo = '##/##'
			break;
		case 'hora':
			Modelo = '##:##'
			break;
		case 'referencia':
			Modelo = '##/####'
			break;
		case 'CPF':
			Modelo = '###.###.###-##'
			break;
		case 'CNPJ':
			Modelo = '###.###.##/####-##'
			break;
		case 'CEP':
			Modelo = '#####-###'
			break;
		case 'placa':
			Modelo = '###-####'
			break;
		case 'cartaoCredito':
			Modelo = '####-####-####-####'
			break;			
	}
     
    // limpa a string valor atual para verificar se todos os caracteres são números
    for (i=0;i<Modelo.length;i++){
        if (Modelo.substr(i,1) != '#'){
            valorAtual = valorAtual.replace(Modelo.substr(i,1),'');
        }
    }
    valorAtual = valorAtual.toUpperCase();
     
    // aplica a máscara ao campo informado usando o modelo de máscara informado
    for (i=0;i<Modelo.length;i++){
        if (Modelo.substr(i,1) == '#'){
            if (valorAtual.substr(nIndexModelo,1) != ''){
                valorFinal = valorFinal + valorAtual.substr(nIndexModelo,1);
                nIndexModelo++;nIndexString++;
            } 
            else
                adicionarValor = false;
        }
        else {
            if (adicionarValor && valorAtual.substr(nIndexModelo,1) != ''){
                valorFinal = valorFinal + Modelo.substr(nIndexString,1)
                nIndexString++;
            }
        }
    }
    campo.value = valorFinal 
}

/*
-----------------------------------------------------------------------------
Nome da Função: formataValorDecimal
Parâmetros:
		campo -> campo no formulario
		teclapress -> Evento pressionar da tecla (event)
		casasDecimais -> Quantidade de casas decimais
Objetivo: Formatar e validar campos com 4 decimais
Validacoes:
		1 - nao deixa digitar numero negativo;
Chamada:
	onKeyUp="formataValorDecimal(this,event,2)"
-----------------------------------------------------------------------------
*/
function formataValorDecimal(campo, teclapres, casasDecimais) {
	var codtecla = 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( ".", "" );
	vr = vr.replace( "-", "" );
	tam = vr.length;
	if ( codtecla == 8 || codtecla >= 48 && codtecla <= 57 || codtecla >= 96 && codtecla <= 105 ){
		if ( tam < 2 ){ 
	 		campo.value = vr ; }
		if ( tam == 2 ){ 
	 		campo.value = vr.substr( 0, 1 ) + ',' + vr.substr( 1, 2 ) ; }
	 	if ( (tam > casasDecimais + 1) && (tam <= casasDecimais + 3)){
	 		campo.value = vr.substr( 0, tam - casasDecimais ) + ',' + vr.substr( tam - casasDecimais, tam ) ; }
	 	if ( (tam > casasDecimais + 3) && (tam <= casasDecimais + 6) ){
	 		campo.value = vr.substr( 0, tam - (casasDecimais + 3)) + '.' + vr.substr( tam - (casasDecimais + 3), 3 ) + ',' + vr.substr( tam - casasDecimais, tam ) ; }
	 	if ( (tam > casasDecimais + 6) && (tam <= casasDecimais + 9) ){
	 		campo.value = vr.substr( 0, tam - (casasDecimais + 6)) + '.' + vr.substr( tam - (casasDecimais + 6), 3 ) + '.' + vr.substr( tam - (casasDecimais + 3), 3 ) + ',' + vr.substr( tam - casasDecimais, tam ) ; }
	 	if ( (tam > casasDecimais + 9) && (tam <= casasDecimais + 12) ){
	 		campo.value = vr.substr( 0, tam - (casasDecimais + 9)) + '.' + vr.substr( tam - (casasDecimais + 9), 3 ) + '.' + vr.substr( tam - (casasDecimais + 6), 3 ) + '.' + vr.substr( tam - (casasDecimais + 3), 3 ) + ',' + vr.substr( tam - casasDecimais, tam ) ; }
	}
}

/*
-----------------------------------------------------------------------------
Função: verificaData(campo)
Objetivo: Faz a validação da data digitada.
Parâmetros:
		campo -> campo a ser validado.
Chamada: onBlur="verificaData(this)"
-----------------------------------------------------------------------------
*/
function verificaData(campo)
{
	msg = ''
	bissexto = false
	tam = campo.value.length;
	if (tam == 0)
		return false;
	if ((tam < 10) && (tam > 0))
		msg = 'Data Inválida! O ano deve ter 4 dígitos!';
	if (tam == 10)
	{
		partes = campo.value.split("/");
		dia = partes[0];
		mes = partes[1];
		ano = partes[2];		
		if (!((dia >= '01')&&(dia <= '31')))
			msg = 'Dia Inválido!';
		else
		{
			if (!((mes >= '01')&&(mes <= '12')))
				msg = 'Mês Inválido!';
			else
			{
				if (((ano % 4 == 0) && (ano % 100 != 0)) || (ano % 400 == 0))
				    bissexto = true;
     			if (mes == '02')
				{
					if  ((dia > '28')  && (!bissexto))
						msg = 'O mês correspondente possui no máximo 28 dias!';
					if ((dia > '29')  && (bissexto))
						msg = 'O mês correspondente possui no máximo 29 dias!';
				}		
     			if (!((mes == '01') || (mes == '03') || (mes == '05') || (mes == '07') || (mes == '08') || (mes == '10') || (mes == '12')) && (dia == '31'))
					msg = 'O mês correspondente possui apenas 30 dias!';
			}
		}
	}
	if (msg != '')
	{
		alert(msg);
		campo.value = '';
		campo.focus();
	}
	else
		return true;
}

/*
-----------------------------------------------------------------------------
Função: verificaDataDiaMes(campo)
Objetivo: Faz a validação da data digitada.
Parâmetros:
		campo -> campo a ser validado.
Chamada: onBlur="verificaData(this)"
-----------------------------------------------------------------------------
*/
function verificaDataDiaMes(campo)
{
	msg = ''
	bissexto = false
	tam = campo.value.length;
	if (tam == 0)
		return false;
	if ((tam < 5) && (tam > 0))
		msg = 'Data Inválida!';
	if (tam == 5)
	{
		partes = campo.value.split("/");
		dia = partes[0];
		mes = partes[1];		
		if (!((dia >= '01')&&(dia <= '31')))
			msg = 'Dia Inválido!';
		else
		{
			if (!((mes >= '01')&&(mes <= '12')))
				msg = 'Mês Inválido!';
			else
			{
				if (mes == '02')
				{
					if  (dia > '29')
						msg = 'O mês correspondente possui no máximo 29 dias!';
				}		
     			if (!((mes == '01') || (mes == '03') || (mes == '05') || (mes == '07') || (mes == '08') || (mes == '10') || (mes == '12')) && (dia == '31'))
					msg = 'O mês correspondente possui apenas 30 dias!';
			}
		}
	}
	if (msg != '')
	{
		alert(msg);
		campo.value = '';
		campo.focus();
	}
	else
		return true;
}

/*
-----------------------------------------------------------------------------
Função: verificaHora(campo)
Objetivo: Faz a validação da hora digitada.
Parâmetros:
		campo -> campo a ser validado.
Chamada: OnBlur="verificaHora(this)"
-----------------------------------------------------------------------------
*/

function verificaHora(campo)
{
	msg = ''
	tam = campo.value.length;
	if (tam == 0)
		return false;
	if ((tam < 5) && (tam > 0))
		msg = 'Hora Inválida!';
	if (tam == 5)
	{
		partes = campo.value.split(":");
		hora = partes[0];
		minuto = partes[1];

		if (!((hora >= 00)&&(hora <= 23)))
			msg = 'Hora Inválida!';
		else
		{
			if (!((minuto >= 00)&&(minuto <= 59)))
				msg = 'Minuto Inválido!';
		}
	}
	if (msg != '')
	{
		alert(msg);
		campo.value = '';
		campo.focus();
	}
	else
		return true;
}

/*
-----------------------------------------------------------------------------
Nome da Função: abreJanela()
Objetivo: Abrir uma nova janela exibindo uma página com tamanho definido.
Parâmetros:
		pagina -> página a ser exibida
		largura -> largura da janela
		altura -> altura da janela
-----------------------------------------------------------------------------
*/
function abreJanela(pagina, largura, altura)
{
	window.open(pagina, 'janela','toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=no,copyhistory=no,width='+largura+',height='+altura);
}	

/*
-----------------------------------------------------------------------------
Nome da Função: habilitaCampo(campo, estiloCss)
Objetivo: Habilitar um campo do formulário, trocando também o seu estilo.
Parâmetros:
		campo -> campo a ser habilitado
		estiloCss -> estilo css a ser utilizado
-----------------------------------------------------------------------------
*/

function habilitaCampo(campo, estiloCss)
{
	campo.disabled = false;
	campo.className = estiloCss;
}

/*
-----------------------------------------------------------------------------
Nome da Função: desabilitaCampo(campo, estiloCss)
Objetivo: Desabilitar um campo do formulário, trocando também o seu estilo.
Parâmetros:
		campo -> campo a ser desabilitado
		estiloCss -> estilo css a ser utilizado
-----------------------------------------------------------------------------
*/

function desabilitaCampo(campo, estiloCss)
{
	campo.disabled = true;
	campo.className = estiloCss;
}
/*
-----------------------------------------------------------------------------
Nome da Função: validaMinimoCaracteres(campo, qtdMinima)
Objetivo: Utilizada para validar uma quantidade mínimo de caracteres digitados.
Parâmetros:
		campo -> campo a ser validado
		qtdMinima -> quantidade mínima de caracteres
-----------------------------------------------------------------------------
*/

function validaMinimoCaracteres(campo, qtdMinima)
{
	if((campo.value.length < qtdMinima) && (campo.value != '')) {
		alert("O "+ campo.title + ' tem que ter no mínimo ' + qtdMinima + ' caracteres.');	
		campo.value = "";
		campo.focus();
	}
}

/*
-----------------------------------------------------------------------------
Nome da Função: validaEmail(campo)
Objetivo: Validar o e-mail digitado.
Parâmetros:
		campo -> campo a ser validado
Chamada: onBlur="validaEmail(this);"		
-----------------------------------------------------------------------------
*/

function validaEmail(campo)
{
	emailValido = true;
	if (campo.value != "") {
		prim = campo.value.indexOf("@")
		if(prim < 2) { emailValido = false;	}
		if(campo.value.indexOf("@",prim + 1) != -1) { emailValido = false; }
		if(campo.value.indexOf(".") < 1) { emailValido = false; }
		if(campo.value.indexOf(" ") != -1) { emailValido = false; }
		if(campo.value.indexOf("meil") > 0) { emailValido = false; }
		if(campo.value.indexOf(".@") > 0) { emailValido = false; }
		if(campo.value.indexOf("@.") > 0) { emailValido = false; }
		if(campo.value.indexOf(".com.br.") > 0) { emailValido = false; }
		if(campo.value.indexOf("/") > 0) { emailValido = false; }
		if(campo.value.indexOf("[") > 0) { emailValido = false; }
		if(campo.value.indexOf("]") > 0) { emailValido = false; }
		if(campo.value.indexOf("(") > 0) { emailValido = false; }
		if(campo.value.indexOf(")") > 0) { emailValido = false; }
		if(campo.value.indexOf("..") > 0) { emailValido = false;}
	}

	if (emailValido)
		return true;
	else
	{
		alert('O e-mail informado não é válido!');
		campo.value = "";
		campo.focus();
		campo.select();
		return false;
	}
}