Function formatnumber (Num, pattern ){
VaR strarr = num? Num. tostring (). Split ('.'): ['0'];
VaR fmtarr = pattern? Pattern. Split ('.'): [''];
VaR retstr = '';
// Integer part
VaR STR = strarr [0];
VaR FMt = fmtarr [0];
VaR I = Str. Length-1;
VaR comma = false;
For (var f = FMT. Length-1; F> = 0; f --){
Switch (FMT. substr (F, 1 )){
Case '#':
If (I> = 0) retstr = Str. substr (I --, 1) + retstr;
Break;
Case '0 ':
If (I> = 0) retstr = Str. substr (I --, 1) + retstr;
Else retstr = '0' + retstr;
Break;
Case ',':
Comma = true;
Retstr = ',' + retstr;
Break;
}
}
If (I> = 0 ){
If (comma ){
VaR L = Str. length;
For (; I> = 0; I --){
Retstr = Str. substr (I, 1) + retstr;
If (I> 0 & (l-I) % 3) = 0) retstr = ',' + retstr;
}
}
Else retstr = Str. substr (0, I + 1) + retstr;
}
Retstr = retstr + '.';
// Process the fractional part
STR = strarr. length> 1? Strarr [1]: '';
FMt = fmtarr. length> 1? Fmtarr [1]: '';
I = 0;
For (VAR f = 0; F <FMT. length; F ++ ){
Switch (FMT. substr (F, 1 )){
Case '#':
If (I <Str. Length) retstr + = Str. substr (I ++, 1 );
Break;
Case '0 ':
If (I <Str. Length) retstr + = Str. substr (I ++, 1 );
Else retstr + = '0 ';
Break;
}
}
Return retstr. Replace (/^, +/, ''). Replace (//. $ /,'');
}