/***
 * Descrição.: formata um campo do formulário de acordo com a máscara informada
 * Parâmetros: - objForm (o Objeto Form)
 * - strField (string contendo o nome do textbox)
 * - sMask (mascara que define o formato que o dado será apresentado, usando o algarismo "9" para
 * definir números e o símbolo "!" para
 * qualquer caracter...
 * - evtKeyPress (evento)
 *
 * Uso.......: <input type="textbox" name="xxx" onkeypress="return txtBoxFormat(document.rcfDownload, 'str_cep', '99999-999', event);">
 * Observação: As máscaras podem ser representadas
 * como os exemplos abaixo:
 * CEP  -> 99999-999
 * CPF  -> 999.999.999-99
 * CNPJ -> 99.999.999/9999-99
 * C/C  -> 999999-!
 * Tel  -> (99)9999-9999
 * Tel  -> (99)999-9999
 * Data -> 99/99/9999
 * Data -> 99/9999
***/

function txtBoxFormat(objForm, strField, sMask, evtKeyPress) {
      var i, nCount, sValue, fldLen, mskLen,bolMask, sCod, nTecla;

/* Versão Original
     if(document.all) { // Internet Explorer
        nTecla = evtKeyPress.keyCode; }
      else if(document.layers) { // Nestcape
        nTecla = evtKeyPress.which;
      }
*/	  
     
	  // Nova Versão para IE e Mozilla
      var nTecla = evtKeyPress.keyCode ? evtKeyPress.keyCode : evtKeyPress.which ? evtKeyPress.which : evtKeyPress.charCode;

      //Função com Bug quando digita o Espaço. Então tiramos o espaço.
	  if (nTecla == 32) {
	    return false;
	  }       


      sValue = objForm[strField].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( " ", "" );
      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) == "/"))
        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++;
      }

      objForm[strField].value = sCod;

      if (nTecla != 8) { // backspace
        if (sMask.charAt(i-1) == "9") { // apenas números...
          return ((nTecla > 47) && (nTecla < 58)); } // números de 0 a 9
        else { // qualquer caracter...
          return true;
        } }
      else {
        return true;
      }
}
