//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) {
        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 = "";
    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)); } 
      else { // qualquer caracter...
        return true;
      } 
    }
    else {
      return true;
    }
  }
  
  
  
  
  
documentall = document.all;   
/*  
* função para formatação de valores monetários retirada de  
* [url]http://jonasgalvez.com/br/blog/2003-08/egocentrismo[/url]  
*/  
function formatamoney(c) {   
    var t = this; if(c == undefined) c = 2;         
    var p, d = (t=t.split("."))[1].substr(0, c);   
    for(p = (t=t[0]).length; (p-=3) >= 1;) {   
           t = t.substr(0,p) + "." + t.substr(p);   
    }   
    return t+","+d+Array(c+1-d.length).join(0);   
}   
  
String.prototype.formatCurrency=formatamoney   
  
function demaskvalue(valor, currency){   
/*  
* Se currency é false, retorna o valor sem apenas com os números. Se é true, os dois últimos caracteres são considerados as   
* casas decimais  
*/  
var val2 = '';   
var strCheck = '0123456789';   
var len = valor.length;   
   if (len== 0){   
      return 0.00;   
   }   
  
   if (currency ==true){      
      /* Elimina os zeros à esquerda   
      * a variável  <i> passa a ser a localização do primeiro caractere após os zeros e   
      * val2 contém os caracteres (descontando os zeros à esquerda)  
      */  
         
      for(var i = 0; i < len; i++)   
         if ((valor.charAt(i) != '0') && (valor.charAt(i) != ',')) break;   
         
      for(; i < len; i++){   
         if (strCheck.indexOf(valor.charAt(i))!=-1) val2+= valor.charAt(i);   
      }   
  
      if(val2.length==0) return "0.00";   
      if (val2.length==1)return "0.0" + val2;   
      if (val2.length==2)return "0." + val2;   
         
      var parte1 = val2.substring(0,val2.length-2);   
      var parte2 = val2.substring(val2.length-2);   
      var returnvalue = parte1 + "." + parte2;   
      return returnvalue;   
         
   }   
   else{   
         /* currency é false: retornamos os valores COM os zeros à esquerda,   
         * sem considerar os últimos 2 algarismos como casas decimais   
         */  
         val3 ="";   
         for(var k=0; k < len; k++){   
            if (strCheck.indexOf(valor.charAt(k))!=-1) val3+= valor.charAt(k);   
         }            
   return val3;   
   }   
}   
  
function reais(obj,event){   
  
var whichCode = (window.Event) ? event.which : event.keyCode;   
/*  
Executa a formatação após o backspace nos navegadores !document.all  
*/  
if (whichCode == 8 && !documentall) {      
/*  
Previne a ação padrão nos navegadores  
*/  
   if (event.preventDefault){ //standart browsers   
         event.preventDefault();   
      }else{ // internet explorer   
         event.returnValue = false;   
   }   
   var valor = obj.value;   
   var x = valor.substring(0,valor.length-1);   
   obj.value= demaskvalue(x,true).formatCurrency();   
   return false;   
}   
/*  
Executa o Formata Reais e faz o format currency novamente após o backspace  
*/  
FormataReais(obj,'.',',',event);   
} // end reais   
  
  
function backspace(obj,event){   
/*  
Essa função basicamente altera o  backspace nos input com máscara reais para os navegadores IE e opera.  
O IE não detecta o keycode 8 no evento keypress, por isso, tratamos no keydown.  
Como o opera suporta o infame document.all, tratamos dele na mesma parte do código.  
*/  
  
var whichCode = (window.Event) ? event.which : event.keyCode;   
if (whichCode == 8 && documentall) {      
   var valor = obj.value;   
   var x = valor.substring(0,valor.length-1);   
   var y = demaskvalue(x,true).formatCurrency();   
  
   obj.value =""; //necessário para o opera   
   obj.value += y;   
      
   if (event.preventDefault){ //standart browsers   
         event.preventDefault();   
      }else{ // internet explorer   
         event.returnValue = false;   
   }   
   return false;   
  
   }// end if         
}// end backspace   
  
function FormataReais(fld, milSep, decSep, e) {   
var sep = 0;   
var key = '';   
var i = j = 0;   
var len = len2 = 0;   
var strCheck = '0123456789';   
var aux = aux2 = '';   
var whichCode = (window.Event) ? e.which : e.keyCode;   
  
//if (whichCode == 8 ) return true; //backspace - estamos tratando disso em outra função no keydown   
if (whichCode == 0 ) return true;   
if (whichCode == 9 ) return true; //tecla tab   
if (whichCode == 13) return true; //tecla enter   
if (whichCode == 16) return true; //shift internet explorer   
if (whichCode == 17) return true; //control no internet explorer   
if (whichCode == 27 ) return true; //tecla esc   
if (whichCode == 34 ) return true; //tecla end   
if (whichCode == 35 ) return true;//tecla end   
if (whichCode == 36 ) return true; //tecla home   
  
/*  
O trecho abaixo previne a ação padrão nos navegadores. Não estamos inserindo o caractere normalmente, mas via script  
*/  
  
if (e.preventDefault){ //standart browsers   
      e.preventDefault()   
   }else{ // internet explorer   
      e.returnValue = false  
}   
  
var key = String.fromCharCode(whichCode);  // Valor para o código da Chave   
if (strCheck.indexOf(key) == -1) return false;  // Chave inválida   
  
/*  
Concatenamos ao value o keycode de key, se esse for um número  
*/  
fld.value += key;   
  
var len = fld.value.length;   
var bodeaux = demaskvalue(fld.value,true).formatCurrency();   
fld.value=bodeaux;   
  
/*  
Essa parte da função tão somente move o cursor para o final no opera. Atualmente não existe como movê-lo no konqueror.  
*/  
  if (fld.createTextRange) {   
    var range = fld.createTextRange();   
    range.collapse(false);   
    range.select();   
  }   
  else if (fld.setSelectionRange) {   
    fld.focus();   
    var length = fld.value.length;   
    fld.setSelectionRange(length, length);   
  }   
  return false;   
  
} 

function SomenteNumero(){ 
	if (event.keyCode<48 || event.keyCode>57) {
	return false; 
	}else{
	
	} 
} 
<!-- Início da Função FormataReais --> 
function FormataValor(id,tammax,teclapres) {
  	if (event.keyCode<48 || event.keyCode>57) {
	return false; 
	}else{
		
        if(window.event) { // Internet Explorer
         var tecla = teclapres.keyCode; }
        else if(teclapres.which) { // Nestcape / firefox
         var tecla = teclapres.which;
        }
    

vr = document.getElementById(id).value;
vr = vr.toString().replace( "/", "" );
vr = vr.toString().replace( "/", "" );
vr = vr.toString().replace( ",", "" );
vr = vr.toString().replace( ".", "" );
vr = vr.toString().replace( ".", "" );
vr = vr.toString().replace( ".", "" );
vr = vr.toString().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 ){
document.getElementById(id).value = vr; }
if ( (tam > 2) && (tam <= 5) ){
document.getElementById(id).value = vr.substr( 0, tam - 2 ) + ',' + vr.substr( tam - 2, tam ); }
if ( (tam >= 6) && (tam <= 8) ){
document.getElementById(id).value = vr.substr( 0, tam - 5 ) + '.' + vr.substr( tam - 5, 3 ) + ',' + vr.substr( tam - 2, tam ); }
if ( (tam >= 9) && (tam <= 11) ){
document.getElementById(id).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) ){
document.getElementById(id).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) ){
document.getElementById(id).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 );}
}
}
}
//Fim da Função FormataReais --> 
function moeda(z){
	v = z.value;
	v=v.replace(/\D/g,"")//permite digitar apenas números
	v=v.replace(/[0-9]{12}/,"inválido")//limita pra máximo 999.999.999,99
	v=v.replace(/(\d{1})(\d{8})$/,"$1.$2")//coloca ponto antes dos últimos 8 digitos
	v=v.replace(/(\d{1})(\d{5})$/,"$1.$2")//coloca ponto antes dos últimos 5 digitos
	v=v.replace(/(\d{1})(\d{1,2})$/,"$1,$2")//coloca virgula antes dos últimos 2 digitos
	z.value = v;
}

