De nada.
Pero creo que te has complicado un pelín sin necesidad.
La funcion formato_PC no hay que modificarla porque transformar a formato PC es siempre la misma operación, no depende de cómo prefiera el usuario la salida.
La unica función que debes modificar es formato_HUM (y todas las que la llaman). Y tampoco hacen falta tantos condicionales que ensucien tanto el código, basta con sustituir allá donde tratemos los decimales con sepDec y hallá donde tratemos los miles con sepMil.
Además si lo haces con condicionales no podremos poner lo que queramos en sepDec y en sepMil, serán puntos o comas (la verdad es que no entiendo muy bien lo que has hecho ahí).
El ejemplo práctico:
Código PHP:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title> New Document </title>
</head>
<body>
N1 <input type="text" id="caja1" size="30" value="4.532,234" /><br />
N2 <input type="text" id="caja2" size="30" value="55,56002" /><br />
N3 <input type="text" id="caja3" size="30" value="541.867,078" /><br />
N4 <input type="text" id="caja4" size="30" value="58.795,65247" /><br />
<input type="button" value="Resultado: " onclick="sumaTodos('.','\'',2)" /> <input type="text" id="resultado" size="30">
<script>
function formato_PC(n) {
return Number( n.replace(/./g,"").replace(/,/g,".") );
}
function formato_HUM(n, sepMil, sepDec, decimales) {
n=n.toFixed(decimales); // los decimales que queramos
n=String(n).split("."); //el entero es n[0] y la parte decimal es n[1]
n[0]=n[0].split("").reverse().join(""); //le damos la vuelta, asi podemos tocarlo desde atras sin complicaciones
n[0]=n[0].replace(/(d{3})(?=d)/g,"$1"+sepMil); //tratamos los miles
n[0]=n[0].split("").reverse().join(""); //lo reestablecemos a su orden original
return n.join(sepDec); //unimos la parte entera con la decimal (tratamos los decimales)
}
function suma(arr, sepMil, sepDec, decimales) {
var total=0;
for(var i=0;i<arr.length;i++)
total+=formato_PC(arr[i]);
return formato_HUM(total, sepMil, sepDec, decimales);
}
function sumaTodos(sepMil, sepDec, decimales) {
var arr=new Array();
for(var a=1; a<=4; a++) {
arr[arr.length]=document.getElementById("caja"+a).value;
}
document.getElementById("resultado").value=suma(arr, sepMil, sepDec, decimales);
}
</script>
</body>
</html>
Recuerda las contrabarras en las expresiones regulares.
La palabra debugger que hay después del { de formato_HUM tampoco la entiendo...
Un saludo.