Dúvida JavaScript

Boa tarde pessoal!

Estou com uma dúvida em uma função javascript que estou usando em minha aplicação.
Essa função tem por finalidade formatar strings numéricas em valor fracionário, na qual funciona perfeitamente no FireFox, porém no Internet Explorer não.

Como faço para que funcione em ambos os browsers???

Segue o código:

[code]function reais(obj,event){

var whichCode = (window.event) ? event.which : event.keyCode;

if (whichCode == 8 && !documentall) {	
	if (event.preventDefault){		

		event.preventDefault();
		

		} else { 

			event.returnValue = false;

			}

	var valor = obj.value;
	var x = valor.substring(0,valor.length-1);
	obj.value= demaskvalue(x,true).formatCurrency();

	return false;

}

FormataReais(obj,'.',',',event);

return false;

}
[/code]

http://javascript.internet.com/forms/auto-currency.html

Eu precisei de uma função desta essa semana e peguei no site de um banco.

[code]
// Formata o campo valor
function formataValor(campo) {
campo.value = filtraCampo(campo);
vr = campo.value;
tam = vr.length;

if ( tam <= 2 ){ 
	campo.value = vr ; }
if ( (tam > 2) && (tam <= 5) ){
	campo.value = vr.substr( 0, tam - 2 ) + ',' + vr.substr( tam - 2, tam ) ; }
if ( (tam >= 6) && (tam <= 8) ){
	campo.value = vr.substr( 0, tam - 5 ) + '.' + vr.substr( tam - 5, 3 ) + ',' + vr.substr( tam - 2, tam ) ; }
if ( (tam >= 9) && (tam <= 11) ){
	campo.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) ){
	campo.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 <= 18) ){
	campo.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 ) ;}

}
// limpa todos os caracteres especiais do campo solicitado
function filtraCampo(campo){
var s = “”;
var cp = “”;
vr = campo.value;
tam = vr.length;
for (i = 0; i < tam ; i++) {
if (vr.substring(i,i + 1) != “/” && vr.substring(i,i + 1) != “-” && vr.substring(i,i + 1) != “.” && vr.substring(i,i + 1) != “,” ){
s = s + vr.substring(i,i + 1);}
}
campo.value = s;
return cp = campo.value
}[/code]

É só chamar a função da seguinte maneira ‘onkeyup=“formataValor(this);”’

eu usei esta e resolveu o meu problema.