Object.extend(String.prototype, { pad : function(side, len, chr) { if (!chr) chr = ' '; var s = this; var left = side.toLowerCase()=='left'; while (s.lengthInternationalization * is not supported * @param {string} the decimal character * @return {float|null} null if string does not represent a float value */ toDouble : function(decimalchar) { decimalchar = decimalchar || "."; var exp = new RegExp("^\\s*([-\\+])?(\\d+)?(\\" + decimalchar + "(\\d+))?\\s*$"); var m = this.match(exp); if (m == null) return null; var cleanInput = m[1] + (m[2].length>0 ? m[2] : "0") + "." + m[4]; var num = parseFloat(cleanInput); return (isNaN(num) ? null : num); }, /** * Convert strings that represent a currency value (e.g. a float with grouping * characters) to float. E.g. "10,000.50" will become "10000.50". The number * of dicimal digits, grouping and decimal characters can be specified. * The currency input format is very strict, null will be returned if * the pattern does not match. * @param {string} the grouping character, default is "," * @param {int} number of decimal digits * @param {string} the decimal character, default is "." * @type {float|null} the currency value as float. */ toCurrency : function(groupchar, digits, decimalchar) { groupchar = groupchar || ","; decimalchar = decimalchar || "."; digits = typeof(digits) == "undefined" ? 2 : digits; var exp = new RegExp("^\\s*([-\\+])?(((\\d+)\\" + groupchar + ")*)(\\d+)" + ((digits > 0) ? "(\\" + decimalchar + "(\\d{1," + digits + "}))?" : "") + "\\s*$"); var m = this.match(exp); if (m == null) return null; var intermed = m[2] + m[5] ; var cleanInput = m[1] + intermed.replace( new RegExp("(\\" + groupchar + ")", "g"), "") + ((digits > 0) ? "." + m[7] : ""); var num = parseFloat(cleanInput); return (isNaN(num) ? null : num); } });