(function($){$.formatCurrency={};$.formatCurrency.regions=[];$.formatCurrency.regions[""]={symbol:"$",positiveFormat:"%s%n",negativeFormat:"(%s%n)",decimalSymbol:".",digitGroupSymbol:",",groupDigits:true}; $.fn.formatCurrency=function(destination,settings){if(arguments.length==1&&typeof destination!=="string"){settings=destination;destination=false }var defaults={name:"formatCurrency",colorize:false,region:"",global:true,roundToDecimalPlace:2,eventOnDecimalsEntered:false};defaults=$.extend(defaults,$.formatCurrency.regions[""]); settings=$.extend(defaults,settings);if(settings.region.length>0){settings=$.extend(settings,getRegionOrCulture(settings.region))}return this.each(function(){$this=$(this); var num="0";num=$this[$this.is("input, select, textarea")?"val":"html"]();if(num.search("\\(")>=0){num="-"+num}var trimRegex=new RegExp("[^\\d"+settings.decimalSymbol+"-]","g"); num=num.replace(trimRegex,"");if(settings.decimalSymbol!="."){num=num.replace(settings.decimalSymbol,".")}if(isNaN(num)){num="0"}var numParts=String(num).split("."); num=numParts[0];var isPositive=(num==(num=Math.abs(num)));var hasDecimals=(numParts.length>1);var decimals=(hasDecimals?numParts[1].toString():"0"); if(settings.roundToDecimalPlace>=0){decimals=parseFloat("1."+decimals);decimals=decimals.toFixed(settings.roundToDecimalPlace);if(decimals.substring(0,1)=="2"){num=Number(num)+1 }decimals=decimals.substring(2)}num=String(num);if(settings.groupDigits){for(var i=0;i0){num+=settings.decimalSymbol+decimals}var format=isPositive?settings.positiveFormat:settings.negativeFormat; var money=format.replace(/%s/g,settings.symbol);money=money.replace(/%n/g,num);var $destination=$([]);if(!destination){$destination=$this}else{$destination=$(destination) }$destination[$destination.is("input, select, textarea")?"val":"html"](money);if(hasDecimals&&settings.eventOnDecimalsEntered){$destination.trigger("decimalsEntered",decimals) }if(settings.colorize){$destination.css("color",isPositive?"black":"red")}})};$.fn.toNumber=function(settings){var defaults=$.extend({name:"toNumber",region:"",global:true},$.formatCurrency.regions[""]); settings=jQuery.extend(defaults,settings);if(settings.region.length>0){settings=$.extend(settings,getRegionOrCulture(settings.region))}return this.each(function(){var method=$(this).is("input, select, textarea")?"val":"html"; var trimRegex=new RegExp("[^\\d"+settings.decimalSymbol+"-]","g");$(this)[method]($(this)[method]().replace(trimRegex,""))})};$.fn.asNumber=function(settings){var defaults=$.extend({name:"asNumber",region:"",parse:true,parseType:"Float",global:true},$.formatCurrency.regions[""]); settings=jQuery.extend(defaults,settings);if(settings.region.length>0){settings=$.extend(settings,getRegionOrCulture(settings.region))}settings.parseType=validateParseType(settings.parseType); var method=$(this).is("input, select, textarea")?"val":"html";var trimRegex=new RegExp("[^\\d"+settings.decimalSymbol+"-]","g");var num=$(this)[method](); num=num?num:"";num=num.replace(trimRegex,"");if(!settings.parse){return num}if(num.length==0){num="0"}if(settings.decimalSymbol!="."){num=num.replace(settings.decimalSymbol,".") }return window["parse"+settings.parseType](num)};function getRegionOrCulture(region){var regionInfo=$.formatCurrency.regions[region];if(regionInfo){return regionInfo }else{if(/(\w+)-(\w+)/g.test(region)){var culture=region.replace(/(\w+)-(\w+)/g,"$1");return $.formatCurrency.regions[culture]}}return null}function validateParseType(parseType){switch(parseType.toLowerCase()){case"int":return"Int"; case"float":return"Float";default:throw"invalid parseType"}}})(jQuery);