// JavaScript Document
//***********************************************************
//*	Criado Por:		Jaime Peixe								*
//*	Criado Em:		07/11/2007								*
//*	Modificado Por:	Jaime Peixe								*
//*	Modificado Em:	10/04/2008								*
//*	Funcionalidade:	Formata Campo com Máscara				*
//***********************************************************
function formatMask(objField, sMask, evtKeyPress) {
	try{
		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;
				}
			}
		}
	} catch(e) {
		return false;	
	}
}