!function(e){function r(r){var t=e.formatCurrency.regions[r];if(t)return t;if(/(\w+)-(\w+)/g.test(r)){var n=r.replace(/(\w+)-(\w+)/g,"$1");return e.formatCurrency.regions[n]}return null}function t(e){if(""===e.symbol)return new RegExp("[^\\d"+e.decimalSymbol+"-]","g");var r=e.symbol.replace("$","\\$").replace(".","\\.");return new RegExp(r+"|[^\\d"+e.decimalSymbol+"-]","g")}e.formatCurrency={},e.formatCurrency.regions=[],e.formatCurrency.regions[""]={symbol:"$",positiveFormat:"%s%n",negativeFormat:"(%s%n)",decimalSymbol:".",digitGroupSymbol:",",groupDigits:!0},e.fn.formatCurrency=function(n,a){1==arguments.length&&"string"!=typeof n&&(a=n,n=!1);var i={name:"formatCurrency",colorize:!1,region:"",global:!0,roundToDecimalPlace:2,eventOnDecimalsEntered:!1};return i=e.extend(i,e.formatCurrency.regions[""]),(a=e.extend(i,a)).region.length>0&&(a=e.extend(a,r(a.region))),a.regex=t(a),this.each((function(){$this=e(this);var r="0";if((r=$this[$this.is("input, select, textarea")?"val":"html"]()).search("\\(")>=0&&(r="-"+r),""!==r&&("-"!==r||-1!==a.roundToDecimalPlace)){if(isNaN(r)){if(""===(r=r.replace(a.regex,""))||"-"===r&&-1===a.roundToDecimalPlace)return;"."!=a.decimalSymbol&&(r=r.replace(a.decimalSymbol,".")),isNaN(r)&&(r="0")}var t=String(r).split("."),i=r==Math.abs(r),o=t.length>1,l=o?t[1].toString():"0",s=l;if(r=Math.abs(t[0]),r=isNaN(r)?0:r,a.roundToDecimalPlace>=0&&("2"==(l=(l=parseFloat("1."+l)).toFixed(a.roundToDecimalPlace)).substring(0,1)&&(r=Number(r)+1),l=l.substring(2)),r=String(r),a.groupDigits)for(var c=0;c<Math.floor((r.length-(1+c))/3);c++)r=r.substring(0,r.length-(4*c+3))+a.digitGroupSymbol+r.substring(r.length-(4*c+3));(o&&-1==a.roundToDecimalPlace||a.roundToDecimalPlace>0)&&(r+=a.decimalSymbol+l);var g=(i?a.positiveFormat:a.negativeFormat).replace(/%s/g,a.symbol);g=g.replace(/%n/g,r);var u=e([]);(u=n?e(n):$this)[u.is("input, select, textarea")?"val":"html"](g),o&&a.eventOnDecimalsEntered&&s.length>a.roundToDecimalPlace&&u.trigger("decimalsEntered",s),a.colorize&&u.css("color",i?"black":"red")}}))},e.fn.toNumber=function(n){var a=e.extend({name:"toNumber",region:"",global:!0},e.formatCurrency.regions[""]);return(n=jQuery.extend(a,n)).region.length>0&&(n=e.extend(n,r(n.region))),n.regex=t(n),this.each((function(){var r=e(this).is("input, select, textarea")?"val":"html";e(this)[r](e(this)[r]().replace("(","(-").replace(n.regex,""))}))},e.fn.asNumber=function(n){var a=e.extend({name:"asNumber",region:"",parse:!0,parseType:"Float",global:!0},e.formatCurrency.regions[""]);(n=jQuery.extend(a,n)).region.length>0&&(n=e.extend(n,r(n.region))),n.regex=t(n),n.parseType=function(e){switch(e.toLowerCase()){case"int":return"Int";case"float":return"Float";default:throw"invalid parseType"}}(n.parseType);var i=e(this).is("input, select, textarea")?"val":"html",o=e(this)[i]();return o=(o=(o=o||"").replace("(","(-")).replace(n.regex,""),n.parse?(0==o.length&&(o="0"),"."!=n.decimalSymbol&&(o=o.replace(n.decimalSymbol,".")),window["parse"+n.parseType](o)):o}}(jQuery);