(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};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"]();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 isPositive=(num==(num=Math.abs(num)));
num=Math.floor(num*100);var cents=num%100;num=Math.floor(num/100).toString();if(cents<10){cents="0"+cents}if(settings.groupDigits){for(var i=0;
i<Math.floor((num.length-(1+i))/3);i++){num=num.substring(0,num.length-(4*i+3))+settings.digitGroupSymbol+num.substring(num.length-(4*i+3))}}num=num+settings.decimalSymbol+cents;
var format=isPositive?settings.positiveFormat:settings.negativeFormat;var money=format.replace(/%s/g,settings.symbol);money=money.replace(/%n/g,num);
if(!destination){destination=$this}else{destination=$(destination)}destination[destination.is("input, select, textarea")?"val":"html"](money);
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]().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);