// JavaScript Formatadores

/*
-------------------------------------------------------------------------------------
Funções formatadas
-------------------------------------------------------------------------------------
*/

var charArray = new Array(
	' ', '!', '"', '#', '$',  '%', '&', "'", '(', ')', '*', '+', ',', '-',
	'.', '/', '0', '1', '2',  '3', '4', '5', '6', '7', '8', '9', ':', ';',
	'<', '=', '>', '?', '@',  'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I',
	'J', 'K', 'L', 'M', 'N',  'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W',
	'X', 'Y', 'Z', '[', '\\', ']', '^', '_', '`', 'a', 'b', 'c', 'd', 'e',
	'f', 'g', 'h', 'i', 'j',  'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's',
	't', 'u', 'v', 'w', 'x',  'y', 'z', '{', '|', '}', '~', '', 'Ç', 'ü',
	'é', 'â', 'ä', 'à', 'å',  'ç', 'ê', 'ë', 'è', 'ï', 'î', 'ì', 'Ä', 'Å',
	'É', 'æ', 'Æ', 'ô', 'ö',  'ò', 'û', 'ù', 'ÿ', 'Ö', 'Ü', 'ø', '£', 'Ø',
	'×', 'ƒ', 'á', 'í', 'ó',  'ú', 'ñ', 'Ñ', 'ª', 'º', '¿', '®', '¬', '½',
	'¼', '¡', '«', '»', '_',  '_', '_', '¦', '¦', 'Á', 'Â', 'À', '©', '¦',
	'¦', '+', '+', '¢', '¥',  '+', '+', '-', '-', '+', '-', '+', 'ã', 'Ã',
	'+', '+', '-', '-', '¦',  '-', '+', '¤', 'ð', 'Ð', 'Ê', 'Ë', 'È', 'i',
	'Í', 'Î', 'Ï', '+', '+',  '_', '_', '¦', 'Ì', '_', 'Ó', 'ß', 'Ô', 'Ò',
	'õ', 'Õ', 'µ', 'þ', 'Þ',  'Ú', 'Û', 'Ù', 'ý', 'Ý', '¯', '´', '­', '±',
	'_', '¾', '¶', '§', '÷',  '¸', '°', '¨', '·', '¹', '³', '²', '_', ' ');


//Troca caracteres minúsculos e/ou com acento e caracteres especiais por caracteres normais
function trocaCaracteres_UpperCase(campo){ 
	campo.value  = campo.value.toLowerCase();
	var estranha = "abcdefghijklmnopqrstuvxzwyáéíóúàèìòùâêîôûäëïöüãõ@#$%^&_*()+=-~`'´ ç1234567890";
	var correta  = "ABCDEFGHIJKLMNOPQRSTUVXZWYAEIOUAEIOUAEIOUAEIOUAO                  C1234567890";
	var retorno  = "";
	
	for(i=0;i<estranha.length;i++) {
		for(j=0;j<campo.value.length;j++) {
			retorno = campo.value.replace(estranha.substr(i,1),correta.substr(i,1));
			campo.value = retorno;
		}
	}
	
	return;
}

//Formata número tipo moeda usando o evento onKeyDown
function formataMoeda(campo, tammax, event) {
	var tecla = event.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 (tam < tammax && tecla != 8){ tam = vr.length + 1 ; }
	
	if (tecla == 8 ){ tam = tam - 1 ; }
		
	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 ) ;}
	} 
	else if(tecla == 9 || tecla == 13 || tecla == 46 || tecla >= 35 && tecla <= 40) return;
	else return false;
}

//Não permite que letras sejam digitadas em um input.
function somenteNumeros(event) {
	var key = event.keyCode;
	if(key == 8 || key == 9 || key == 13 || key == 16 || key == 35 || key == 36 || key == 46 || (key >= 48 && key <= 57) || (key >= 96 && key <= 105) || key == 116) {
		return true;
	} else {
		return false;
	}
}

//MÁSCARA DE VALORES
//Este script formata um valor, que pode ser CPF, CNPJ, RG, DATA,... ou a forma que precisar.
//EXEMPLO:
//		Data:    <input type="text" size="20" onkeypress="return formataTxt(this, '99/99/9999', event);">
//		RG:	     <input type="text" size="20" onkeypress="return formataTxt(this, '99.999.999-9', event);">
//		CPF	     <input type="text" size="20" onkeypress="return formataTxt(this, '999.999.999-99', event);">
//		CNPJ     <input type="text" size="20" onkeypress="return formataTxt(this, '99.999.999/9999-99', event);">
//		Telefone:<input type="text" size="20" onkeypress="return formataTxt(this, '(99)9999-9999', event);">
//		Código:  <input type="text" size="20" onkeypress="return formataTxt(this, '99-999', event);">
function formataTxt(objeto, sMask, event) {
    var i, 
		nCount, 
		sValue, 
		fldLen, 
		mskLen,
		bolMask, 
		sCod, 
		nTecla;
	
	nTecla = event.keyCode;
	if(nTecla == 8 || nTecla == 9 || nTecla == 13 || nTecla == 16 || nTecla == 18 || nTecla == 46 || nTecla >= 35 && nTecla <= 40) return;

	//alert(nTecla);
	
    sValue = objeto.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( ")", "" );
    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) == "/") || (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++;
	}
	
    objeto.value = sCod;

	if (nTecla != 8) { // backspace
		if (sMask.charAt(i-1) == "9") { // apenas números...
			return ((nTecla > 47) && (nTecla < 58) || (nTecla > 95) && (nTecla < 106)); 
		} else { // qualquer caracter...
			return true;
		}
	} else {
		return true;
	}
}

//Verifica cpf
function check_cpf(numcpf) {
	numcpf = LIMP(numcpf);
	
	if (
		(numcpf == "00000000000") ||
		(numcpf == "11111111111") ||
		(numcpf == "22222222222") ||
		(numcpf == "33333333333") ||
		(numcpf == "44444444444") ||
		(numcpf == "55555555555") ||
		(numcpf == "66666666666") ||
		(numcpf == "77777777777") ||
		(numcpf == "88888888888") ||
		(numcpf == "99999999999") 
	)	return false;
	
	x 		= 0;
	soma 	= 0;
	dig1 	= 0;
	dig2 	= 0;
	texto 	= "";
	numcpf1	= "";
	len 	= numcpf.length;
	x 		= len -1;
	
	for (var i=0; i <= len - 3; i++) {
		y 		= numcpf.substring(i,i+1);
		soma 	= soma + ( y * x);
		x 		= x - 1;
		texto 	= texto + y;
	}
	
	dig1 = 11 - (soma % 11);
	
	if (dig1 == 10) dig1=0 ;
	if (dig1 == 11) dig1=0 ;
	
	numcpf1 = numcpf.substring(0,len - 2) + dig1 ;
	x 	 = 11; 
	soma = 0;
	
	for (var i=0; i <= len - 2; i++) {
		soma = soma + (numcpf1.substring(i,i+1) * x);
		x 	 = x - 1;
	}
	
	dig2 = 11 - (soma % 11);
	
	if (dig2 == 10) dig2=0;
	if (dig2 == 11) dig2=0;
	
	if ((dig1 + "" + dig2) == numcpf.substring(len,len-2)) return true;
	
	return false;
}

function LIMP(c) {
	while((cx=c.indexOf("-"))!=-1) { c = c.substring(0,cx)+c.substring(cx+1); }
	while((cx=c.indexOf("/"))!=-1) { c = c.substring(0,cx)+c.substring(cx+1); }
	while((cx=c.indexOf(","))!=-1) { c = c.substring(0,cx)+c.substring(cx+1); }
	while((cx=c.indexOf("."))!=-1) { c = c.substring(0,cx)+c.substring(cx+1); }
	while((cx=c.indexOf("("))!=-1) { c = c.substring(0,cx)+c.substring(cx+1); }
	while((cx=c.indexOf(")"))!=-1) { c = c.substring(0,cx)+c.substring(cx+1); }
	while((cx=c.indexOf(" "))!=-1) { c = c.substring(0,cx)+c.substring(cx+1); }
	return(c);
}

//Verifica cnpj
function check_cnpj(CNPJ) {
	CNPJ = LIMP(CNPJ);
	
	if(isNUMB(CNPJ) != 1) {
		return(0);
	} else {
		if(CNPJ == 0) {
			return(0);
		} else {
			g=CNPJ.length-2;
			if(RealTestaCNPJ(CNPJ,g) == 1) {
				g=CNPJ.length-1;
				if(RealTestaCNPJ(CNPJ,g) == 1)
					return(1);
				else
					return(0);
					
			} else
				return(0);
				
		}
	}
}

function isNUMB(c) {
	if((cx=c.indexOf(","))!=-1) {
		c = c.substring(0,cx)+"."+c.substring(cx+1);
	}
	
	if((parseFloat(c) / c != 1)) {
		if(parseFloat(c) * c == 0)
			return(1);
		else
			return(0);
			
	} else
		return(1);
}

function RealTestaCNPJ(CNPJ,g) {
	var VerCNPJ=0;
	var ind=2;
	var tam;
	for(f=g;f>0;f--) {
		VerCNPJ+=parseInt(CNPJ.charAt(f-1))*ind;
		if(ind>8)
			ind=2;
		else
			ind++;
	}
	
	VerCNPJ%=11;
	
	if(VerCNPJ==0 || VerCNPJ==1)
		VerCNPJ=0;
	else
		VerCNPJ=11-VerCNPJ;
	
	if(VerCNPJ!=parseInt(CNPJ.charAt(g)))
		return(0);
	else
		return(1);
}

//Campo numerico
function CampoNumerico(campo) {
	var i = 0; 
	campo = campo.value;
	saida = true;
	for (i=0; i<campo.length ; i++) {
		dig = String(campo.substr(i, 1));
		if ((dig == "\*") || (dig == "\\") || (dig == "\^") || (dig == "\$") || (dig == "\?") || (dig == "\+")) {
			saida = false;
			break;
		}
		if ("0123456789,.-/".search(dig) == -1) {
			saida = false;
			break;
		}
	}
	return(saida);
}

function Validata(pStr) {
	var reDate = /^((0?[1-9]|[12]\d)\/(0?[1-9]|1[0-2])|30\/(0?[13-9]|1[0-2])|31\/(0?[13578]|1[02]))\/(19|20)?\d{2}$/;
	if (reDate.test(pStr)) return true;
	else if (pStr != null && pStr != "") return false;
}


function checa_email(obj) {
	valoremail = obj.value;
	valoremail = valoremail.toLowerCase();
	if (valoremail.indexOf("@")<1 || valoremail.indexOf(".")<1) {
		alert("O campo e-mail esta preenchido incorretamente.\n" + "Favor checar o prefixo e o sinal de '@'.");
		obj.focus();
		obj.select();
		return false;
	} else {
		if(valoremail.indexOf("@")+1 == valoremail.indexOf(".")) {
			alert("O campo e-mail esta preenchido incorretamente.\n" + "Favor checar o prefixo e o sinal de '.'.");
			obj.focus();
			obj.select();
			return false;
		} 
	}
	return true;
}
		
function retirarPontosTracos(v) {
	var expReg = /\./g;
	var ret = v.replace(expReg, '');
	expReg = /-/g;
	ret = ret.replace(expReg, '');
	return ret;
}

/*
-------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------
*/