*/
var currencyTemplate;
CRM.formatMoney = function(value, onlyNumber, format) {
- var decimal, separator, sign, i, j, result;
+ var precision, decimal, separator, sign, i, j, result;
if (value === 'init' && format) {
currencyTemplate = format;
return;
}
format = format || currencyTemplate;
- result = /1(.?)234(.?)56/.exec(format);
- if (result === null) {
+ if ((result = /1(.?)234(.?)56/.exec(format)) !== null) { // If value is formatted to 2 decimals
+ precision = 2;
+ }
+ else if ((result = /1(.?)234(.?)6/.exec(format)) !== null) { // If value is formatted to 1 decimal
+ precision = 1;
+ }
+ else if ((result = /1(.?)235/.exec(format)) !== null) { // If value is formatted to zero decimals
+ precision = false;
+ }
+ else {
return 'Invalid format passed to CRM.formatMoney';
}
separator = result[1];
- decimal = result[2];
+ decimal = precision ? result[2] : false;
sign = (value < 0) ? '-' : '';
//extracting the absolute value of the integer part of the number and converting to string
i = parseInt(value = Math.abs(value).toFixed(2)) + '';
j = ((j = i.length) > 3) ? j % 3 : 0;
- result = sign + (j ? i.substr(0, j) + separator : '') + i.substr(j).replace(/(\d{3})(?=\d)/g, "$1" + separator) + (2 ? decimal + Math.abs(value - i).toFixed(2).slice(2) : '');
- if ( onlyNumber ) {
+ result = sign + (j ? i.substr(0, j) + separator : '') + i.substr(j).replace(/(\d{3})(?=\d)/g, "$1" + separator) + (precision ? decimal + Math.abs(value - i).toFixed(precision).slice(2) : '');
+ if (onlyNumber) {
return result;
}
- return format.replace(/1.*234.*56/, result);
+ switch (precision) {
+ case 2:
+ return format.replace(/1.*234.*56/, result);
+ case 1:
+ return format.replace(/1.*234.*6/, result);
+ case false:
+ return format.replace(/1.*235/, result);
+ }
};
CRM.angRequires = function(name) {