function mascara(objField, sMask, evtKeyPress) {
	var i, nCount, sValue, fldLen, mskLen,bolMask, sCod, nTecla;
	
	if(evtKeyPress.charCode) { // Internet Explorer
		 nTecla = evtKeyPress.charCode;
	} else if(evtKeyPress.keyCode) { // Nestcape
		 nTecla = evtKeyPress.keyCode;
	} else {
		 nTecla = evtKeyPress.which;
	}

	 if (nTecla == 8) {
		  return true;
	 }

	sValue = objField.value;
	// Limpa todos os caracteres de formatação que já estiverem no campo.
	while (sValue.indexOf("-")>=0){
		sValue = sValue.toString().replace( "-", "" );
	}
	while (sValue.indexOf(".")>=0){
		sValue = sValue.toString().replace( ".", "" );
	}
	while (sValue.indexOf(",")>=0){
		sValue = sValue.toString().replace( ",", "" );
	}
	while (sValue.indexOf(",")>=0){
		sValue = sValue.toString().replace( ",", "" );
	}
	while (sValue.indexOf("/")>=0){
		sValue = sValue.toString().replace( "/", "" );
	}
	while (sValue.indexOf("(")>=0){
		sValue = sValue.toString().replace( "(", "" );
	}
	while (sValue.indexOf(")")>=0){
		sValue = sValue.toString().replace( ")", "" );
	}
	while (sValue.indexOf(":")>=0){
		sValue = sValue.toString().replace( ":", "" );
	}
	while (sValue.indexOf(" ")>=0){
		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) == "/") || (sMask.charAt(i) == " "));
		
		if (bolMask) {
			 sCod += sMask.charAt(i);
			 mskLen++;
		} else {
			 sCod += sValue.charAt(nCount);
			 nCount++;
		}
		i++;
	}
	objField.value = sCod;
	if(sMask.charAt(0) == "C"){
		return ((nTecla == 8) || (nTecla == 32) || (nTecla > 64) && (nTecla < 91) || (nTecla > 96) && (nTecla < 123) || (nTecla > 191) && (nTecla < 256));// apenas backspace, espaço, letras de a-z e A-Z com e sem acento
	} else {
		if(sMask.charAt(0) == "L"){
			return ((nTecla > 43) && (nTecla < 46) || (nTecla > 47) && (nTecla < 58));// traço, vírgula e números de 0 a 9 
		} else {
			mask = sMask.charAt(i-1);
			switch(mask){
				case "9":
					return ((nTecla > 47) && (nTecla < 58));// números de 0 a 9
				break;
				case "Z":
					if(objField.value.length <= 0){
						if(nTecla > 47 && nTecla < 58){
							return (objField.value = 0);
						} else{
							return false;
						}
					} else {
						return ((nTecla > 47) && (nTecla < 58));// números de 0 a 9
					}
				break;
				default:
					return true;
				break;
			}
		}
	}
}