
function Formatar(fsValor, foForm, foNome, fsFormato) { 

	var piLoop; 
	var psPalavra		= '';
	var psResposta		= ''; 
	var piTamanho		= 0; 
	var pParte_i		= '';
	var pParte_f		= '';
	var intDecimais		= 2;
	
	intDecimais = 2;
	
	if (window.event.keyCode != 9 && window.event.keyCode != 16){
		if (fsFormato == "cgc") fsFormato = "cnpj";
			if (window.event.keyCode != 8 &&  window.event.keyCode != 37 && window.event.keyCode != 39 && window.event.keyCode != 46) { 
				for(piLoop = 0; piLoop <= (fsValor.length-1); piLoop++) {
					switch (fsFormato) {
						case 'data': 
							if (fsValor.charAt(piLoop) != '/' && fsValor.charAt(piLoop) >= '0' && fsValor.charAt(piLoop) <= '9')
								psPalavra = psPalavra + fsValor.charAt(piLoop); 
							break; 
						case 'hora': 
	            if (fsValor.charAt(piLoop) != ':'  && fsValor.charAt(piLoop) >= '0' && fsValor.charAt(piLoop) <= '9') 
								psPalavra = psPalavra + fsValor.charAt(piLoop); 
							break; 
						case 'telefone': 
						  if (fsValor.charAt(piLoop) >= '0' && fsValor.charAt(piLoop) <= '9')
								psPalavra = psPalavra + fsValor.charAt(piLoop); 
						  break; 
						case 'moeda': 
						  if (fsValor.charAt(piLoop) != ',' && fsValor.charAt(piLoop) >= '0' && fsValor.charAt(piLoop) <= '9')
						    psPalavra = psPalavra + fsValor.charAt(piLoop); 
						  break; 
						case 'numeroformatado': 
						  if (fsValor.charAt(piLoop) != ',' && fsValor.charAt(piLoop) >= '0' && fsValor.charAt(piLoop) <= '9')
						    psPalavra = psPalavra + fsValor.charAt(piLoop); 
						  break; 

						case 'cpf': 
						  if (fsValor.charAt(piLoop) != '.' && fsValor.charAt(piLoop) != '-' && fsValor.charAt(piLoop) >= '0' && fsValor.charAt(piLoop) <= '9')
						    psPalavra = psPalavra + fsValor.charAt(piLoop); 
						  break; 
						case 'cnpj': 
						  if (fsValor.charAt(piLoop) >= '0' && fsValor.charAt(piLoop) <= '9')
						    psPalavra = psPalavra + fsValor.charAt(piLoop); 
						  break; 
						case 'cnpj_filial': 
						  if (fsValor.charAt(piLoop) >= '0' && fsValor.charAt(piLoop) <= '9')
						    psPalavra = psPalavra + fsValor.charAt(piLoop); 
						  break; 
						case 'cep': 
						  if (fsValor.charAt(piLoop) != '-' && fsValor.charAt(piLoop) >= '0' && fsValor.charAt(piLoop) <= '9')
						    psPalavra = psPalavra + fsValor.charAt(piLoop); 
						  break; 
						case 'numero': 
						  if (fsValor.charAt(piLoop) >= '0' && fsValor.charAt(piLoop) <= '9'){
						    psPalavra = psPalavra + fsValor.charAt(piLoop); 
						  }
							if (fsValor.charAt(piLoop) == '-' && psPalavra == ''){
							  psPalavra = psPalavra + fsValor.charAt(piLoop); 
							}
	            break; 
		        } 
				  } 
					for(piLoop=0; piLoop <= (psPalavra.length-1); piLoop++) {
						switch (fsFormato) {
							case 'data': 
								if (piLoop == 2) psResposta = psResposta + '/' + psPalavra.charAt(piLoop); 
								if (piLoop == 4) psResposta = psResposta + '/' + psPalavra.charAt(piLoop); 
								if (piLoop != 2 && piLoop != 4) psResposta = psResposta + psPalavra.charAt(piLoop); 
								piTamanho = 10; 
							  break; 
							case 'hora': 
								if (piLoop == 2) 
									psResposta = psResposta + ':' + psPalavra.charAt(piLoop) 
								else 
									psResposta = psResposta + psPalavra.charAt(piLoop); 
									piTamanho = 5; 
								break; 
							case 'telefone': 
									psResposta = psResposta + psPalavra.charAt(piLoop); 
									piTamanho = 9; 
									break; 
							case 'moeda': 
								if (psPalavra.length < 14){
									psResposta = psResposta + psPalavra.charAt(piLoop); 
									piTamanho = 14; 
								}else{
									psResposta = psPalavra;
								}
								break; 
							case 'numeroformatado': 
								if (psPalavra.length < 14){
									psResposta = psResposta + psPalavra.charAt(piLoop); 
									piTamanho = 14; 
									intDecimais = -1;
								}else{
									psResposta = psPalavra;
								}
								break; 

							case 'cpf': 
								if (psPalavra.length < 14){
									psResposta = psResposta + psPalavra.charAt(piLoop); 
									piTamanho = 14; 
								}else{
									psResposta = psPalavra;
								}
								break; 
							case 'cnpj': 
									psResposta = psResposta + psPalavra.charAt(piLoop); 
									piTamanho = 19; 
									break; 
							case 'cnpj_filial':
									psResposta = psResposta + psPalavra.charAt(piLoop); 
									piTamanho = 7; 
									break; 
									
							case 'cep': 
							  if (piLoop == 5) psResposta = psResposta + '-' + psPalavra.charAt(piLoop); 
							  if (piLoop != 5) psResposta = psResposta + psPalavra.charAt(piLoop); 
							  piTamanho = 9;
							  break; 
							case 'numero': 
							  psResposta = psResposta + psPalavra.charAt(piLoop); 
							  piTamanho = 50;
							  break; 
			        } 
						}

						//--- Formata Moeda
						if (fsFormato == 'moeda' && psResposta.length > intDecimais){
							for(piLoop=intDecimais; piLoop < (psResposta.length); piLoop++){
								pParte_i = psResposta.substring(0, psResposta.length- piLoop );
								pParte_f = psResposta.substring(psResposta.length-piLoop, psResposta.length);
								if (piLoop == intDecimais){
									psResposta = pParte_i + ',' + pParte_f ;
								}else{
									psResposta = pParte_i + '.' + pParte_f ;
								}
								piLoop = piLoop + 3;
							}
						}
						//--- Fim Formata Moeda
			
						//--- Numero Formatado
						if (fsFormato == 'numeroformatado' && psResposta.length > intDecimais){
							for(piLoop=intDecimais; piLoop < (psResposta.length); piLoop++){
								pParte_i = psResposta.substring(0, psResposta.length- piLoop );
								pParte_f = psResposta.substring(psResposta.length-piLoop, psResposta.length);
								if (piLoop != intDecimais){
									psResposta = pParte_i + '.' + pParte_f ;
								}
								piLoop = piLoop + 3;
							}
						}
						//--- Fim Numero Formatado


						//--- Formata CNPJ
						if (fsFormato == 'cnpj' && psResposta.length > 6){
							//psResposta = psResposta.substring(0, 19);
							pParte_i = psResposta.substring(0, psResposta.length - 2 );
							pParte_f = psResposta.substring(psResposta.length - 2, psResposta.length);
							psResposta = pParte_i + '-' + pParte_f ;
							pParte_i = psResposta.substring(0, psResposta.length - 7 );
							pParte_f = psResposta.substring(psResposta.length - 7, psResposta.length);
							psResposta = pParte_i + '/' + pParte_f ;
							for(piLoop=11; piLoop < (psResposta.length); piLoop++){
								pParte_i = psResposta.substring(0, psResposta.length- piLoop );
								pParte_f = psResposta.substring(psResposta.length-piLoop, psResposta.length);
								psResposta = pParte_i + '.' + pParte_f ;
								piLoop = piLoop + 3;
							}
						}
						//--- Fim Formata CNPJ
			
						//--- Formata CNPJ_FILIAL
						if (fsFormato == 'cnpj_filial' && psResposta.length > 4){
							psResposta = psResposta.substring(0, 7);
							pParte_i = psResposta.substring(0, psResposta.length - 2 );
							pParte_f = psResposta.substring(psResposta.length - 2, psResposta.length);
							psResposta = pParte_i + '-' + pParte_f ;
						}
						//--- Fim Formata CNPJ_FILIAL

						//--- Formata Telefone
						if (fsFormato == 'telefone' && psResposta.length > 4){
							psResposta = psResposta.substring(0, 8);
							pParte_i = psResposta.substring(0, psResposta.length - 4 );
							pParte_f = psResposta.substring(psResposta.length - 4, psResposta.length);
							psResposta = pParte_i + '-' + pParte_f ;
						}
						//--- Fim Formata Telefone
			
						//--- Formata CPF
						if (fsFormato == 'cpf' && psResposta.length > 2){
							psResposta = psResposta.substring(0, 11);
							pParte_i = psResposta.substring(0, psResposta.length - 2 );
							pParte_f = psResposta.substring(psResposta.length - 2, psResposta.length);
							psResposta = pParte_i + '-' + pParte_f ;
							for(piLoop=6; piLoop < (psResposta.length); piLoop++){
								pParte_i = psResposta.substring(0, psResposta.length- piLoop );
								pParte_f = psResposta.substring(psResposta.length-piLoop, psResposta.length);
								psResposta = pParte_i + '.' + pParte_f ;
								piLoop = piLoop + 3;
							}
						}
						//--- Fim Formata CPF

						if (fsFormato == 'moeda'){
							document.forms[foForm].elements[foNome].value = psResposta.substring(0, psResposta.length);
						}else{
							document.forms[foForm].elements[foNome].value = psResposta.substring(0, piTamanho);
						}
		 } 
	 }
 } 

function modulo(str) {
   	soma=0;
   	ind=2;
   	for(pos=str.length-1;pos>-1;pos=pos-1) {
   		soma = soma + (parseInt(str.charAt(pos)) * ind);
   		ind++;
   		if(str.length>11) {
   			if(ind>9) ind=2;
   		}
	}
   	resto = soma - (Math.floor(soma / 11) * 11);
   	if(resto < 2) {
    	return 0
   	}
   	else {
   		return 11 - resto
   	}
}



function VerificaCNPJ(valor) {
	valor= limpa_cnpj(valor);
	primeiro=valor.substr(1,1);
	falso=true;
	size=valor.length;
	if (size!=14){
		return false;
	}
	size--;
	for (i=2; i<size-1; ++i){
		proximo=(valor.substr(i,1));
		if (primeiro!=proximo) {
			falso=false
		}
	}
	
	if (falso){
		return;
	}
	
   	if(modulo(valor.substring(0,valor.length - 2)) + "" + modulo(valor.substring(0,valor.length - 1)) !=valor.substring(valor.length - 2,valor.length)) {
   		return false;
   	}
   	return true
}

function troca(stexto,sprocura,stroca){
	for (c=0;c<stexto.length;c++)
	{
		stexto = stexto.replace(sprocura,stroca)
	}
	return stexto;
}

	function VerificaEmail(email) {
		if (!email) return false;
		var  BadChars = "*|,\":<>[]{}`\';()&$#% ";
		var  GoodChars = "@.";   
		for (var i = 0; i < email.length; i++) {
			if (BadChars.indexOf(email.charAt(i)) != -1) {
				return false;
			}
		}
		for (var i = 0; i < GoodChars.length; i++) {
			if (email.indexOf(GoodChars.charAt(i)) == -1) {
				return false;
			}
		}
	 	if (email.indexOf ('@.',0) != -1 || email.indexOf ('.@',0) != -1) {
			return false;
		}
	   return true;
	} 

function limpa_cnpj(cnpj){
	var sretorno;
	sretorno = cnpj;
	sretorno = troca(sretorno,".","");
	sretorno = troca(sretorno,"-","");
	sretorno = troca(sretorno,"/","");
	sretorno = troca(sretorno," ","");
	return sretorno;
}

function limpa_cpf(cpf){
	var sretorno;
	sretorno = cpf;
	sretorno = troca(sretorno,".","");
	sretorno = troca(sretorno,"-","");
	sretorno = troca(sretorno,"/","");
	sretorno = troca(sretorno," ","");
	return sretorno;
}

function moduloCPF(str) {
   	soma=0;
   	ind=2;
   	for(pos=str.length-1;pos>-1;pos=pos-1) {
   		soma = soma + (parseInt(str.charAt(pos)) * ind);
   		ind++;
   		if(str.length>11) {
   			if(ind>9) ind=2;
   		}
	}
   	resto = soma - (Math.floor(soma / 11) * 11);
   	if(resto < 2) {
    	return 0
   	}
   	else {
   		return 11 - resto
   	}
}

function VerificaCPF(valor) {
	valor= limpa_cpf(valor);
	
	primeiro=valor.substr(1,1);
	falso=true;
	size=valor.length;
	if (size!=11){
		return false;
	}
	size--;
	for (i=2; i<size-1; ++i){
		proximo=(valor.substr(i,1));
		if (primeiro!=proximo) {
			falso=false
		}
	}
	if (falso){
		return false;
	}
   	if(moduloCPF(valor.substring(0,valor.length - 2)) + "" + moduloCPF(valor.substring(0,valor.length - 1)) != valor.substring(valor.length - 2,valor.length)) {
   		return false;
   	}
   	return true
}


