// MÁSCARA DE VALORES
function txtBoxFormat(objeto, sMask, evtKeyPress) {
    var i, nCount, sValue, fldLen, mskLen,bolMask, sCod, nTecla;
	
	if(document.all) {
		// Internet Explorer
	    nTecla = evtKeyPress.keyCode;
	} else if(document.layers) {
		// Nestcape
	    nTecla = evtKeyPress.which;
	} else {
	    nTecla = evtKeyPress.which;
	    
	    if ((nTecla == 8) || (nTecla == 13) || (nTecla == 0)) {
	        return true;
	    }
	}
	
    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 = "";
    
    if (objeto.value.length == 0) {
    	mskLen = fldLen;
    } else {
    	mskLen = fldLen - 1;
    }
	
    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));
		} else {
			// qualquer caracter...
			return false;
		}
	} else {
		return true;
	}
}


// FORMATAÇÃO DE CAMPOS TIPO DOUBLE (MÁSCARA DE VALOR)
function FormataValor(obj) {
	//if (!obj.readOnly) {
		obj.onkeypress = exibirValorFormatado;
		obj.onkeydown = capturaCodTecla;
		
		//obj.value = "0,00"
		
		if ((obj.maxLength == -1) || (obj.maxLength == 2147483647) || (obj.maxLength == "undefined")) {
			obj.maxLength = 17;
		}
	//}
}


// FUNÇÃO DE SUPORTE À FUNÇÃO "FormataValor"
function exibirValorFormatado(e) {
	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;
}


// FUNÇÃO DE SUPORTE À FUNÇÃO "FormataValor"
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;
		}
	}
}


// FUNÇÃO DE SUPORTE À FUNÇÃO "FormataValor"
function soNumero(e) {
	var keyNumber = (isIE) ? event.keyCode : e.which;
	if ( ( ((keyNumber<48)||(keyNumber>57)) && ((keyNumber<95)||(keyNumber>106)) ) && (keyNumber!=13) && (keyNumber!="0") && (keyNumber!=8) && (keyNumber!=116) && (keyNumber!=17) ) {
		if (isIE) {
			event.keyCode=0
		}
		return false;
	}
	return true;
}


// FUNÇÃO DE SUPORTE À FUNÇÃO "FormataValor"
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;
}


// FUNÇÃO DE SUPORTE À FUNÇÃO "formatarValor"
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;
}

//Função para formatar valores sem a utilização de campos input com o numero de casas decimais desejado.
function format(expr, decplaces) 
{
	var str = "" + Math.round (eval(expr) * Math.pow(10,decplaces))
	
	while (str.length <= decplaces) 
	{
		str = "0" + str
	}
	
	var decpoint = str.length - decplaces
	return str.substring(0,decpoint) + "," + str.substring(decpoint,str.length);
}