﻿var bln_campo_editado = false;
/*INICIO IDENTIFICAÇÃO DE BROWSER--------------------------------------------------------------
	Identificação de browser
	Data - 22/01/2008
	-----------------------------------------------------*/
var isNav4, isNav, isIE;
if (parseInt(navigator.appVersion.charAt(0)) >= 4) {
  isNav = (navigator.appName=="Netscape") ? true : false;
  isIE = (navigator.appName.indexOf("Microsoft") != -1) ? true : false;
}

if (navigator.appName=="Netscape") {
	isNav4 = (parseInt(navigator.appVersion.charAt(0))==4);
}

function formatarMascara(e) {

    var src;

    src = (isNav) ? e.target : event.srcElement;

    var mask = '##/##/####';
    var i = src.value.length;
    var saida = mask.substring(0, 1);
    var texto = mask.substring(i)
    if (texto.substring(0, 1) != saida) {
        src.value += texto.substring(0, 1);
    }
}

/*FIM IDENTIFICAÇÃO DE BROWSER------------------------------------------------------------*/

/*----------------------------------------------------------------------------------------
	aplicacarFormatacaoCampos - Encarregado do comportamento dos campos num formulário
	Data - 22/01/2008


	Descrição:
		Formata os campos de um formulário HTML de acordo com o texto das primeiras três letras
		do nome do campo.
		
		O valores possíveis são:
			* num - Numérico
			* vlr - Valor
			* aln - alphanumérico
			* alp - alpha	
			* cpf - Campo CPF
			* cpj - Campo CNPJ
			* pfj - campo CPFCNPJ
			* eml - campo de email
----------------------------------------------------------------------------------------*/
function aplicacarFormatacaoCampos(objForm){
	var i, numEl, j;
	numEl = objForm.elements.length; 
	for (i=0; i<numEl; i++){
		var tipo, prefixo;
		
		if(objForm.elements[i].name == undefined){
		    prefixo = '';
		}else{
		    j = objForm.elements[i].name.length ;
		    if ((j - 4) >= 0 ) { j = j - 4;}
		    prefixo = objForm.elements[i].name.substr(j,4);
		}
		
		switch (prefixo) {
			case "_num" :  //campo numérico

			    objForm.elements[i].onkeydown = soNumero;
			    
			break;
			
			case "_aln" : //campo alfanumerico - nao permite a insercao de letras acentuadas
				objForm.elements[i].onkeypress	= soAlfaNumerico;
			break;
			
			case "_alp" : //campo alfanumerico - nao permite a insercao de letras acentuadas
				objForm.elements[i].onkeypress	= soAlfa;
			break;

			case "_vlr" :  //campo valor
				objForm.elements[i].onkeypress					= exibirValorFormatado;
				objForm.elements[i].onkeydown					= capturaCodTecla;
				
				if ((objForm.elements[i].maxLength == -1)||(objForm.elements[i].maxLength == 2147483647)||(objForm.elements[i].maxLength == "undefined")){
					objForm.elements[i].maxLength				= 17								
				}
				if (navigator.appName != "Netscape"){
					objForm.elements[i].style.textAlign			= "right";
				}
			break; 
			
			case "_dtt" :  //campo data
			
				objForm.elements[i].onkeypress				    = formatarMascara;
				objForm.elements[i].onkeydown					= capturaCodTeclaCPData;
			    objForm.elements[i].onblur                      = ValidaData;
			    objForm.elements[i].maxLength = 10
			    
			break;
			
			case "_dtm" :  //campo data
				objForm.elements[i].onkeypress					= exibirDataFormatadaMenor;
				objForm.elements[i].onkeydown					= capturaCodTeclaCPData;
				objForm.elements[i].onfocus						= limparValorLabel;
				objForm.elements[i].onblur						= exibirValorLabel;
				objForm.elements[i].maxLength					= 5
			break;

			case "_alf" :  //campo alfa - só permite a ditação de letras sem acento
				objForm.elements[i].onkeypress	= soAlfa;
			break;
			
			case "_eml" :  //campo email - só permite a ditação de letras sem acento, números e os caracteres (@ _ - . /)
				objForm.elements[i].onkeypress	= soEmail;
			break;
			
			case "_cnj" :
			    objForm.elements[i].onkeyup = "this.value = this.value.toCNPJ()";
            break;			    
			
			case "_cpf" : //campo cpf - só permite valores numéricos formatando no padrão de cpf.
				objForm.elements[i].onkeypress	= soCPF;
				objForm.elements[i].onkeychange	= soCPF;
				objForm.elements[i].onblur      = ValidaCPF;
			break;
			
			case "_cpj" : //campo cnpj - só permite valores numéricos formatando no padrão de cnpj.
				objForm.elements[i].onkeypress	= soCNPJ;
				objForm.elements[i].onkeychange	= soCNPJ;
				objForm.elements[i].onblur      = ValidaCNPJ;
		    break;
		}
	}	
}

/*INICIO - FORMATAÇÃO DE CAMPOS------------------------------------------------------------------*/
/* -----------------------------------------------------------------------------------------------
  variável que armazena a tecla que foi digita pelo usuário
	Essa variável é usa na função: "exibirValorFormatado"
	---------------------------------------------------------------------------------------*/
var codTeclaKeyDown;

/* -----------------------------------------------------------------------------------------------
	exibirValorFormatado - Encarregada de exibir uma string com formatação de valor num campo text
	Data - 22/01/2008
	-----------------------------------------------------*/
function exibirValorFormatado(e) {
        bln_campo_editado = true;
		var obj,tecla;
		//verificando se o que foi digitado é um número
		if (!soNumero(e)){
			return false;
		}
		obj   = (isNav) ? e.target : event.srcElement;
		codTecla = (isNav) ? e.which : event.keyCode;
		switch (codTeclaKeyDown) {
			case 8:
				obj.value = formatarValor(obj.value.substring(0,obj.value.length-1));
				break;
			case 9:
				return true;
				break;
			case 46:
				obj.value = formatarValor(obj.value.substring(0,obj.value.length-1));	
				break;
			default :
					if ((codTecla>47)&&(codTecla<58)) {
						if (obj.maxLength>obj.value.length){
						obj.value = formatarValor(obj.value + String.fromCharCode(codTecla));
						}
					}	
		}
		return false;
}


/* -----------------------------------------------------------------------------------------------
	exibirDataFormatadaMenor - Encarregada de exibir uma string com formatação de data num campo text
	Data - 22/01/2008
	-----------------------------------------------------*/

function exibirDataFormatadaMenor(e) {
        bln_campo_editado = true;
		var obj,tecla;
		//verificando se o que foi digitado é um número
		obj   = (isNav) ? e.target : event.srcElement;
		codTecla = (isNav) ? e.which : event.keyCode;
		switch (codTeclaKeyDown) {
			case 8:
				obj.value = formatarDataMenor(obj.value.substring(0,obj.value.length-1));
				return false;
			case 9:
				return true;
			case 46:
				obj.value = formatarDataMenor(obj.value.substring(0,obj.value.length-1));
				return false;
			default :
					if ((codTecla>47)&&(codTecla<58)) {
						if (obj.maxLength>obj.value.length){
						obj.value = formatarDataMenor(obj.value + String.fromCharCode(codTecla));
						}
		            }
		            if (isIE) {
		                event.keyCode = 0;
		            }
		            return false;
		}
}

/* -----------------------------------------------------------------------------------------------
	exibirDataFormatada - Encarregada de exibir uma string com formatação de data num campo text
	Data - 22/01/2008
	-----------------------------------------------------*/

function exibirDataFormatada(e) {

    bln_campo_editado = true;
    var obj, codTecla;
    
    obj = (isNav) ? e.target : event.srcElement;
    codTecla = (isNav) ? e.which : event.keyCode;

    switch (codTeclaKeyDown) {
        case 8:
            obj.value = formatarData(obj.value.substring(0, obj.value.length - 1));
            return false;
        case 46:
            obj.value = formatarData(obj.value.substring(0, obj.value.length - 1));
            return false;
    }

    return true;
		
}

function limparValorLabel(e)
{
	var obj = (isNav) ? e.target : event.srcElement;
		
	if(obj.value == "dd/mm/aaaa")
	{
		obj.value = "";
	}
	else if(obj.value == "mm/aa")
	{
		obj.value = "";
	}
}

function exibirValorLabel(e)
{
	var obj = (isNav) ? e.target : event.srcElement;
		
	if(obj.value == "")
	{
		if(obj.maxLength == 10)
			obj.value = "dd/mm/aaaa";
		else
			obj.value = "mm/aa";
	}
}

//Validar data

    function ValidaData(e) {     

        var obj = (isNav) ? e.target : event.srcElement;

        var RegExPattern = /^((((0?[1-9]|[12]\d|3[01])[\.\-\/](0?[13578]|1[02])[\.\-\/]((1[6-9]|[2-9]\d)?\d{2}))|((0?[1-9]|[12]\d|30)[\.\-\/](0?[13456789]|1[012])[\.\-\/]((1[6-9]|[2-9]\d)?\d{2}))|((0?[1-9]|1\d|2[0-8])[\.\-\/]0?2[\.\-\/]((1[6-9]|[2-9]\d)?\d{2}))|(29[\.\-\/]0?2[\.\-\/]((1[6-9]|[2-9]\d)?(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00)|00)))|(((0[1-9]|[12]\d|3[01])(0[13578]|1[02])((1[6-9]|[2-9]\d)?\d{2}))|((0[1-9]|[12]\d|30)(0[13456789]|1[012])((1[6-9]|[2-9]\d)?\d{2}))|((0[1-9]|1\d|2[0-8])02((1[6-9]|[2-9]\d)?\d{2}))|(2902((1[6-9]|[2-9]\d)?(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00)|00))))$/;

        if (obj.value != "") {
            if (!(obj.value.match(RegExPattern))){
                alert("Data inválida.");
                obj.value = "";
                obj.focus();
            }
        }
    }

// Validar Cpf

function ValidaCPF(e){

    var obj = (isNav) ? e.target : event.srcElement;

    var cpf = obj.value;

    if (cpf != '') {

        exp = /\.|\-/g
        cpf = cpf.toString().replace(exp, ""); 

        var a = [];
        var b = new Number;
        var c = 11;
        for (i = 0; i < 11; i++) {
            a[i] = cpf.charAt(i);
            if (i < 9) b += (a[i] * --c);
        }
        if ((x = b % 11) < 2) { a[9] = 0 } else { a[9] = 11 - x }
        b = 0;
        c = 11;
        for (y = 0; y < 10; y++) b += (a[y] * c--);
        if ((x = b % 11) < 2) { a[10] = 0; } else { a[10] = 11 - x; }
        if ((cpf.charAt(9) != a[9]) || (cpf.charAt(10) != a[10])) {
            alert('Atenção: CPF Inválido!');
            obj.value = '';
            obj.focus();
        };
       
    };
}

function ValidaCNPJ(e)
{
    var obj = (isNav) ? e.target : event.srcElement;

    var cnpj = obj.value;

    if (cnpj != '') {
	    var valida = new Array(6,5,4,3,2,9,8,7,6,5,4,3,2);
        var dig1= new Number;
        var dig2= new Number;
        
        exp = /\.|\-|\//g
        cnpj = cnpj.toString().replace( exp, "" ); 
        var digito = new Number(eval(cnpj.charAt(12)+cnpj.charAt(13)));
            
        for(i = 0; i<valida.length; i++){
            dig1 += (i>0? (cnpj.charAt(i-1)*valida[i]):0);    
            dig2 += cnpj.charAt(i)*valida[i];    
        }
        dig1 = (((dig1%11)<2)? 0:(11-(dig1%11)));
        dig2 = (((dig2%11)<2)? 0:(11-(dig2%11)));
        
        if ((cnpj == '11111111111111' || cnpj == '22222222222222' || cnpj == '33333333333333' || cnpj == '44444444444444' || cnpj == '55555555555555' || cnpj == '66666666666666' || cnpj == '77777777777777' || cnpj == '88888888888888' || cnpj == '99999999999999' || cnpj == '00000000000000') || (((dig1*10)+dig2) != digito)){    
            alert('Atenção: CNPJ Inválido!');
            obj.value = '';
            obj.focus();
            return false;
        }
        else {
            return true;
        }
    }
		
} //isCnpj

/* -----------------------------------------------------------------------------------------------
	capturaCodTecla - Função encarregada obter a tecla digitada pelo usuário
	apresentando comportamento distinto para o netScape e IE.
	Data - 22/01/2008
	-----------------------------------------------------*/

function capturaCodTecla(e){
	codTeclaKeyDown = (isNav) ? e.which : event.keyCode;
	if (isIE) {
		switch (codTeclaKeyDown) {
			case 8:
				event.srcElement.value = formatarValor(event.srcElement.value.substring(0,event.srcElement.value.length-1));
				return false;
			    break;
			case 46:
				event.srcElement.value = formatarValor(event.srcElement.value.substring(0,event.srcElement.value.length-1));
				return false;
				break;
            default:
                return true;
		}
	}
}


/* -----------------------------------------------------------------------------------------------
	capturaCodTeclaCPData - Função encarregada obter a tecla digitada pelo usuário
	apresentando comportamento distinto para o netScape e IE.
	Data - 22/01/2008
	----------------------------------------------------*/

function capturaCodTeclaCPData(e){
	codTeclaKeyDown = (isNav) ? e.which : event.keyCode;
	if (isIE) {
	   switch (codTeclaKeyDown) {
			case 8:
				event.srcElement.value = formatarData(event.srcElement.value.substring(0,event.srcElement.value.length-1));
				return false;
			    break;
			case 46:
				event.srcElement.value = formatarData(event.srcElement.value.substring(0,event.srcElement.value.length-1));
				return false;
				break;
            default:
                if (!soNumero(codTeclaKeyDown)) {
                    return false;
                }
		}
    }
    return true;
}


/* -----------------------------------------------------------------------------------------------
	formatarValor - Formata uma string no padrão de valor: xx.xxx.xxx,xx
	Data - 22/01/2008
	-----------------------------------------------------*/
	
function formatarValor(str){
  var decimal,inteiro;
  var i,count;
  STR = new String(str);
  STR = tirarZerosEsquerda(STR);
  inteiro='';
		if (STR.length == 1){
			  inteiro  = '0';
			  decimal = '0' + STR;
			}
			else { 
			  if (STR.length == 2){
				  inteiro  = '0';
				  decimal = STR;
				}
				else{
				  decimal = STR.substring(STR.length-2,STR.length);
				  i=3;
				  count=0;
				  while (i<=STR.length){
			 		if (count==3) {
					  inteiro = '.' + inteiro;
					  count = 0;
					}
				    inteiro = STR.charAt(STR.length-i) + inteiro;
					count++;
					i++;
				  }
				}
			}
		if (inteiro == '') {
		  inteiro = '0';
		}
		if (decimal == '') {
		  decimal = '00';
		}
		return inteiro+','+decimal;
}

/* -----------------------------------------------------------------------------------------------
	formatarData - Formata uma string no padrão de data: DD/MM/AAAA
	Data - 22/01/2008
	-----------------------------------------------------*/
	function formatarData(str){
		  var data,re,T;
		  re = /\//g;
		  data = new String(str);
		  data = data.replace(re,"");
		  data = data.substr(0,8);
		  T = data.length;
		  if (T>2 && T<5) {
			data = data.substr(0,2) + "/" + data.substr(2,2);
		  }
		  if (T>4) {
			data = data.substr(0,2) +"/"+ data.substr(2,2) +"/"+ data.substr(4,4);
		  }
		  return data;
	}

/* -----------------------------------------------------------------------------------------------
	formatarDataMenor - Formata uma string no padrão de data: MM/AA
	Data - 22/01/2008
	-----------------------------------------------------*/
	function formatarDataMenor(str){
		  var data,re,T;
		  re = /\//g;
		  data = new String(str);
		  data = data.replace(re,"");
		  data = data.substr(0,4);
		  T = data.length;
		  if (T>2 && T<5) {
			data = data.substr(0,2) + "/" + data.substr(2,2);
		  }
		  if (T<3) {
			data = data;
		  }
		  return data;
	}
/* -----------------------------------------------------------------------------------------------
	tirarZerosEsquerda - função que tira todos os "0", "," e "." da string
	passada como argumento
	Data - 22/01/2008
	-----------------------------------------------------*/

function tirarZerosEsquerda(STR){
	var sAux = '';
	STR = new String(STR);  
	var i = 0;
	while (i < STR.length ){
		if ((STR.charAt(i)!='.') && (STR.charAt(i)!=',')){
			sAux += STR.charAt(i);
		}
		i++
	}
  STR = new String(sAux);
  sAux = '';
  i = 0;
  while (i < STR.length ){
    if (STR.charAt(i) != '0'){
      sAux = STR.substring(i,STR.length)
	  i = STR.length;
	}
    i++;
  }
  return  sAux;
}

/* -----------------------------------------------------------------------------------------------
	tirarZerosEsquerda - função que tira todos os "0", "," e "." da string
	passada como argumento
	Data - 22/01/2008
	------------------------------------------------------*/
function soNumero(e) {
    bln_campo_editado = true;
	var keyNumber = (isIE) ? event.keyCode : e.which;
	//if (((keyNumber<48)||(keyNumber>57)) && (keyNumber!=13) && (keyNumber!="0") && (keyNumber!=8)) {

	//Verifica se é número

	if (((keyNumber > 95) && (keyNumber < 106)) || ((keyNumber > 47) && (keyNumber < 58))) {
	    return true;
	}
		
	if ((keyNumber != 13) && (keyNumber != 8) && (keyNumber != 9)) {
		if (isIE) {
			event.keyCode=0
		}
		return false;
	}
	return true;
}
/*FIM - FORMATAÇÃO DE VALOR---------------------------------------------------------------------*/


/* -----------------------------------------------------------------------------------------------
	validarData - Verifica se a data passada é valida
	o retorno da função é booleano, se data válida retorna true senão retorna false
	Data - 22/01/2008
	------------------------------------------------------*/
	function validarData(DIA,MES,ANO){
		MES = MES-1;
		data = new Date(ANO,MES,DIA);
		if ( (data.getDate()!=DIA) || (data.getMonth()!=MES) || (data.getFullYear()!=ANO) ){
				return false;
		}
		return true;
	}
/*-----------------------------------------------------------------------------------------------*/

/* -----------------------------------------------------------------------------------------------
	verifDataSelMenorDataAtual - Verifica se a data selecionada é menor que a data atual
	o retorno da função é booleano, se data selecionada for menor que data atual retorna true senão 
	retorna false
	Data - 22/01/2008
	------------------------------------------------------*/
	function verifDataSelMenorDataAtual(diaAtual,mesAtual,anoAtual,diaSelecionado,mesSelecionado,anoSelecionado){
		var dataAtual = anoAtual + mesAtual + diaAtual;
		var dataSelec = anoSelecionado + mesSelecionado + diaSelecionado;
		dataAtual = parseInt(dataAtual);
		dataSelec = parseInt(dataSelec);
		if (dataSelec<dataAtual){
			return true;
		}
		return false;
	}

/* -----------------------------------------------------------------------------------------------
	dataDifDias - Retorna a diferenca entre duas datas, todos os parametros são strings
	Data - 22/01/2008
	------------------------------------------------------*/	
	function dataDifDias(diaSelecionado,mesSelecionado,anoSelecionado,diaAtual,mesAtual,anoAtual){
		data1= new Date(anoAtual, mesAtual-1, diaAtual);
		data2= new Date(anoSelecionado, mesSelecionado-1, diaSelecionado);
		var difDias = data2-data1;
		difDias /= 86400000;
		return difDias;
	}

/* -----------------------------------------------------------------------------------------------
	validarAgCta - Verifica se a agencia conta digita é válida
	o retorno da função é booleano, se a AG/CTA for válida retorna true senão retorna false
	Data - 22/01/2008
	------------------------------------------------------*/	
	function validarAgCta(ag,cta){
		ag = new String(ag);
		cta = new String(cta);

		if ((ag.length4)||(cta.length7)){
			return false;
		}

		var AG_CTA_AUX = new String(ag + cta);
		var i=0;
		strRes = '';
		peso = 1;
		for (i=0;i<10;i++)  {
			strRes +=  (AG_CTA_AUX.charAt(i) * peso);
			peso = ( peso == 1 )? 2 : 1;
		}
		soma = 0;
		for (i=0; i<strRes.length ;i++)  {
			soma += parseInt(strRes.charAt(i));
		}
		dv = 10 - (soma % 10);
		if (dv == 10){ 
			dv = 0;
		}
		if (cta.charAt(6)== dv){
			return true;
		}
		return false;
		
	}
	
/* -----------------------------------------------------------------------------------------------
	soAlfaNumerico - só permite a digitação de letras não acentuadas e números
	Data - 22/01/2008	
	------------------------------------------------------*/
function soAlfaNumerico(e) {
bln_campo_editado = true;
	var keyNumber = (isIE) ? event.keyCode : e.which;
	if 	(
			!( 
				( 	
					((keyNumber > 47) && (keyNumber<58))  ||
					((keyNumber > 64) && (keyNumber<91))  ||
					((keyNumber > 96) && (keyNumber<123)) ||
					(keyNumber==32) || 
					(keyNumber==8)   
				) && 
				(keyNumber!=168)
			)
		)
	{
		if (isIE) {
			event.keyCode=0
		}
		return false;
	}
	return true;
}

/* -----------------------------------------------------------------------------------------------
	soAlfa - só permite a digitação de letras não acentuadas 
	Data - 22/01/2008
	------------------------------------------------------*/
function soAlfa(e) {
bln_campo_editado = true;
	var keyNumber = (isIE) ? event.keyCode : e.which;
	if 	(
			!( 
				( 	
					((keyNumber > 64) && (keyNumber<91))  ||
					((keyNumber > 96) && (keyNumber<123)) ||
					(keyNumber==32) || 
					(keyNumber==8)   
				) && 
				(keyNumber!=168)
			)
		)
	{
		if (isIE) {
			event.keyCode=0
		}
		return false;
	}
	return true;
}


/* -----------------------------------------------------------------------------------------------------------------
	soEmail - Validacao de campo e-mail.
	Data - 22/01/2008
	------------------------------------------------------------------------------*/
	
function soEmail(e) {
	var keyNumber = (isIE) ? event.keyCode : e.which;
	if 	(
			!( 
				( 	
					((keyNumber > 43) && (keyNumber<58))  ||
					((keyNumber > 63) && (keyNumber<91))  ||
					((keyNumber > 96) && (keyNumber<123)) ||
					((keyNumber > 191) && (keyNumber<221)) ||
					((keyNumber > 223) && (keyNumber<253)) ||
					(keyNumber==32) || 
					(keyNumber==8) ||
					(keyNumber==95)
				) && 
				(keyNumber!=168)
			)
		)
	{
		if (isIE) {
			event.keyCode=0
		}
		return false;
	}
	return true;
}

/* ----------------------------------------------------------------
	soCPF - Formata o campo no padrão de CPF ("999.999.999-99")
	Data - 22/01/2008
-----------------------------------------------------------------*/
function soCPF(e)
{
	var keyNumber = (isIE) ? event.keyCode : e.which;
	if (((keyNumber<48)||(keyNumber>57)) && (keyNumber!="0") && (keyNumber!=8)) {
		if (isIE) {
			event.keyCode=0
		}
		return false;
	}
	
	obj = (isNav) ? e.target : event.srcElement;
	
	if((keyNumber!="0") && (keyNumber!=8))
	{
		var i, nCount, sValue, fldLen, mskLen,bolMask, sCod, nTecla;
		
		objForm = document.forms[0];
		
		sMask = '999.999.999-99';
		
		sValue = obj.value;

		// Limpa todos os caracteres de formatação que já estiverem no campo.
		sValue = sValue.toString().replace( "-", "" );
		sValue = sValue.toString().replace( "-", "" );
		sValue = sValue.toString().replace( ".", "" );
		sValue = sValue.toString().replace( ".", "" );
		sValue = sValue.toString().replace( "/", "" );
		sValue = sValue.toString().replace( "/", "" );
		sValue = sValue.toString().replace( "(", "" );
		sValue = sValue.toString().replace( "(", "" );
		sValue = sValue.toString().replace( ")", "" );
		sValue = sValue.toString().replace( ")", "" );
		sValue = sValue.toString().replace( " ", "" );
		sValue = sValue.toString().replace( " ", "" );
		fldLen = sValue.length;
		mskLen = sMask.length;

		i = 0;
		nCount = 0;
		sCod = "";
		mskLen = fldLen;

		while (i <= mskLen) 
		{
			bolMask = ((sMask.charAt(i) == "-") || (sMask.charAt(i) == ".") || (sMask.charAt(i) == "/"))
			bolMask = bolMask || ((sMask.charAt(i) == "(") || (sMask.charAt(i) == ")") || (sMask.charAt(i) == " "))

			if (bolMask) 
			{
				sCod += sMask.charAt(i);
				mskLen++; 
			}
			else 
			{
				sCod += sValue.charAt(nCount);
				nCount++;
			}

			i++;
		}

		obj.value = sCod;
	}
	
	return true;
}

/* ----------------------------------------------------------------
	soCPF - Formata o campo no padrão de CPF ("999.999.999-99")
	Data - 17/09/2008
-----------------------------------------------------------------*/
function soCNPJ(e){

	var keyNumber = (isIE) ? event.keyCode : e.which;
	if (((keyNumber<48)||(keyNumber>57)) && (keyNumber!="0") && (keyNumber!=8)) {
		if (isIE) {
			event.keyCode=0
		}
		return false;
	}
	
	obj = (isNav) ? e.target : event.srcElement;
	
	if((keyNumber!="0") && (keyNumber!=8)){
	
		var i, nCount, sValue, fldLen, mskLen,bolMask, sCod, nTecla;
		
		objForm = document.forms[0];
		
		sMask = '99.999.999/9999-99';
		
		sValue = obj.value;

		// Limpa todos os caracteres de formatação que já estiverem no campo.
		sValue = sValue.toString().replace( "-", "" );
		sValue = sValue.toString().replace( "-", "" );
		sValue = sValue.toString().replace( ".", "" );
		sValue = sValue.toString().replace( ".", "" );
		sValue = sValue.toString().replace( "/", "" );
		sValue = sValue.toString().replace( "/", "" );
		sValue = sValue.toString().replace( "(", "" );
		sValue = sValue.toString().replace( "(", "" );
		sValue = sValue.toString().replace( ")", "" );
		sValue = sValue.toString().replace( ")", "" );
		sValue = sValue.toString().replace( " ", "" );
		sValue = sValue.toString().replace( " ", "" );
		fldLen = sValue.length;
		mskLen = sMask.length;

		i = 0;
		nCount = 0;
		sCod = "";
		mskLen = fldLen;
		
		while (i <= mskLen) 
		{
			bolMask = ((sMask.charAt(i) == "-") || (sMask.charAt(i) == ".") || (sMask.charAt(i) == "/"))
			bolMask = bolMask || ((sMask.charAt(i) == "(") || (sMask.charAt(i) == ")") || (sMask.charAt(i) == " "))

			if (bolMask) 
			{
				sCod += sMask.charAt(i);
				mskLen++; 
			}
			else 
			{
				sCod += sValue.charAt(nCount);
				nCount++;
			}

			i++;
		}

		obj.value = sCod;
	
	}
	
    return true;
}


/* ----------------------------------------------------------------------------------
	validarValores - Valida todos os campo de valor no formulario
	Parametros:
		objForm - formulario a ser varrido
	Data - 22/01/2008
------------------------------------------------------------------------------------*/
function validarValores(objForm){
	var i, numEl;
	var bErro = false;
	var numEl = objForm.elements.length; 
	
	for (i=0; i < numEl; i++){
		var prefixo = objForm.elements[i].name.substring(0,3);
		
		if(prefixo == "vlr")
		{
			//Limpa espaços a direita e a esquerda
			objForm.elements[i].value = trim(objForm.elements[i].value);
			
			//verifica se tem algum caracter não numerico
			if(!verificarNumeros(objForm.elements[i].value))
				bErro = true;
			
			//compara o valor formatado com o valor do campo
			var sFormatado = formatarValor(objForm.elements[i].value);
			if(sFormatado != objForm.elements[i].value)
				bErro = true;
		}
	}
	
	if(bErro)
	{
		alert("Um ou mais valores informados estão incorretos.");
		return false;
	}
	
	return true;
}
function trim(value){
	var temp = value;
	var obj = /^(\s*)([\W\w]*)(\b\s*$)/;
	if (obj.test(temp)) { temp = temp.replace(obj, '$2'); }
	var obj = / +/g;
	temp = temp.replace(obj, " ");
	if (temp == " ") { temp = ""; }
	return temp;
}
function verificarNumeros(sValor)
{
	for(x=0; x < sValor.length; x++)
	{
		if(isNaN(sValor.substring(x, x+1)) || sValor.substring(x, x+1) == " ")
			if(sValor.substring(x, x+1) != "," && sValor.substring(x, x+1) != ".")
				return false;
	}
	
	return true;
}

