/** * @copyFrom http://Finn-Rasmussen.com/myphp-1.11/myphp-1.11-js/html/javascript/Amount.js.php * Copyrigt notice: You may copy the source code as is as long as you keep the copy right notice intact * * @package javascript * @author http://Finn-Rasmussen.com * @copyright http://Finn-Rasmussen.com * @version 1.11 * @since 27-nov-2009 */ var Amount = new function() { // Consts, do NOT change this.PERIOD = '.'; this.COMMA = ','; // local vars to customize to your locale: I.e. 1,234,567.89 this.decimalPoint = ''; this.thousandSeperator = ''; this.format = function(number) { var n = this.parse(number); var i = parseFloat(n); var s = this.parseString(i); var sign = i<0?'-' : ''; return sign + this.addThousandSeperators(s); } this.parse = function(number) { var decimals = ''; var prefix = ''; var d = number.split(this.decimalPoint); switch (d.length) { case 2: decimals = d[1]; case 1: prefix = d[0]; break; default: alert('Wrong DECIMAL_POINT, Expected=digits'+this.decimalPoint+'decimals found='+number); break; } // Strip off any thousand seperators and return a real javascript number like: 1234567.89 var digits = this.stripOfThousandSeperators(prefix); s = digits + this.PERIOD + decimals; return s; } this.parseString = function(number) { var n = number; if (isNaN(n) ) { alert('Wrong format, Expected=digits'+this.decimalPoint+'decimals, found='+number); n = 0.00; } i = Math.abs(n); i = parseInt((i + .005) * 100, 10); i = i / 100; s = new String(i); if (s.indexOf(this.PERIOD) < 0) { s += this.PERIOD+'00'; } if (s.indexOf(this.PERIOD) == (s.length - 2)) { s += '0'; } return s; } this.stripOfThousandSeperators = function(number) { var digits = ''; var t = number.split(this.thousandSeperator); for (var i=0; i < t.length; i++) { digits += t[i]; } return digits; } this.addThousandSeperators = function(number) { var s = number.replace(RegExp('[\\'+this.PERIOD+']',"g"),this.decimalPoint); var decimals = s.split(this.decimalPoint); var t = ''; if (this.thousandSeperator !== '') { // Add thousand seperators 1.234.567,89 var size = decimals[0].length; for (var i=0; i < size; i++) { t = decimals[0].substr((size-1)-i, 1) + t; if ((i+1) % 3) { // Ignore } else { if (i < size - 1) { t = this.thousandSeperator + t; } } } } else { t = s; } if (decimals.length === 2) { t += this.decimalPoint + decimals[1] } return t; } }