Máscara funciona no IE mas não funciona no Firefox

Pessoal,

Tenho uma aplicação que entro dados num form e que com uma função javascript do tipo máscara, faz com que os dados digitados sejam apenas numéricos.
No IE, tudo funciona perfeitamente.
Porém no Firefox, a caixa texto do form não aceita qualquer caracter ser digitado, inclusive numérico.

Estou utilizando o event.keycode para o IE e event.which para o Firefox.

Alguém sabe o que pode estar errado?

Seguem os códigos:

HTML:

#  <tr align="left" valign="middle">  
#         <td width="135">Nº</td>  
#            <td width="209">  
#            <html:text   property="numeroS"   
#           styleClass="input"  
#           size="30"  
#       onkeypress="return keyPressed(this,event);" />  
#             </td>  
#       </tr>  

Funções Javascript:

   1. function keyPressed(param,event){  
   2.           document.forms[0].numeroS.maxLength = 10;  
   3.       return Mascara(document.forms[0], 'numeroS', '9999999999', event);  
   4.       }  
   5.   
   6. function Mascara(a, strField, sMask, s) {  
   7. var i, nCount, sValue, fldLen, mskLen,bolMask, sCod, nTecla;  
   8. objForm = document.forms[0];  
   9.   
  10. if(document.all) { // Internet Explorer  
  11. nTecla = event.keyCode;   
  12. }  
  13. else {  
  14. nTecla = event.which;  
  15. }  
  16.   
  17. if(nTecla == 39) return false;  
  18.   
  19. //sValue = objForm[strField].value;  
  20. sValue = document.getElementById('strField').value;  
  21.   
  22. // Limpa todos os caracteres de formata&#65533;&#65533;o que  
  23. // j&#65533; estiverem no campo.  
  24. sValue = sValue.toString().replace( "-", "" );  
  25. sValue = sValue.toString().replace( "-", "" );  
  26. sValue = sValue.toString().replace( ".", "" );  
  27. sValue = sValue.toString().replace( ".", "" );  
  28. sValue = sValue.toString().replace( "/", "" );  
  29. sValue = sValue.toString().replace( "/", "" );  
  30. sValue = sValue.toString().replace( "(", "" );  
  31. sValue = sValue.toString().replace( "(", "" );  
  32. sValue = sValue.toString().replace( ")", "" );  
  33. sValue = sValue.toString().replace( ")", "" );  
  34. sValue = sValue.toString().replace( " ", "" );  
  35. sValue = sValue.toString().replace( ":", "" );  
  36. sValue = sValue.toString().replace( ",", "" );  
  37. sValue = sValue.toString().replace( "$", "" );  
  38. sValue = sValue.toString().replace( "R", "" );   
  39. fldLen = sValue.length;  
  40. mskLen = sMask.length; // = 5  
  41.   
  42. i = 0;  
  43. nCount = 0;  
  44. sCod = "";  
  45. mskLen = fldLen;  
  46.   
  47. while (i <= mskLen) {  
  48. bolMask = ((sMask.charAt(i) == "-") || (sMask.charAt(i) == ".") || (sMask.charAt(i) == "/"));  
  49. bolMask = bolMask || ((sMask.charAt(i) == "(") || (sMask.charAt(i) == ")") || (sMask.charAt(i) == " "));  
  50. bolMask = bolMask || ((sMask.charAt(i) == ":") || (sMask.charAt(i) == "$") || (sMask.charAt(i) == "R") || (sMask.charAt(i) == ","));  
  51.   
  52. if (bolMask) {  
  53. sCod += sMask.charAt(i);  
  54. mskLen++; }  
  55. else {  
  56. sCod += sValue.charAt(nCount);  
  57. nCount++;  
  58. }  
  59.   
  60. i++;  
  61. }  
  62.   
  63. objForm[strField].value = sCod;  
  64.   
  65. if (nTecla != 8) { // backspace  
  66. if (sMask.charAt(i-1) == "9") { // apenas n&#65533;meros...  
  67. return ((nTecla > 47) && (nTecla < 58)); } // n&#65533;meros de 0 a 9  
  68. else { // qualquer caracter...  
  69. return true;  
  70. } }  
  71. else {  
  72. return true;  
  73. }  
  74. }  

Bem-vindo ao maravilhoso mundo do JavaScript…
Você já deu uma olhada no console de erros do Firefox? Muitas vezes ele exibe direitinho qual é o problema, te permitindo resolver com certa facilidade. Senão, você pode tentar usar o Firebug para depurar esse script problemático.

Resolvi, o problema é que no Firefox o event não é global como no IE.

Please, edite o título do post e coloque um [Resolvido].