(function(b){var d="character",e="unmaskMoney",c=true,a=false;b.fn.maskMoney=function(d){d=b.extend({symbol:"US$",showSymbol:a,symbolStay:a,thousands:",",decimal:".",precision:2,defaultZero:c,allowZero:a,allowNegative:a},d);return this.each(function(){var g="",h="-",m="readonly",f=b(this);function n(d){d=d||window.event;var b=d.charCode||d.keyCode||d.which;if(b==undefined)return a;if(f.attr(m)&&b!=13&&b!=9)return a;if(b<48||b>57){if(b==45){f.val(r(f));return a}if(b==43){f.val(f.val().replace(h,g));return a}else if(b==13||b==9)return c;else if(b==37||b==39)return c;else{k(d);return c}}else if(f.val().length==f.attr("maxlength"))return a;else{k(d);var o=String.fromCharCode(b),e=f.get(0),i=f.getInputSelection(e),j=i.start,n=i.end;e.value=e.value.substring(0,j)+o+e.value.substring(n,e.value.length);l(e,j+1);return a}}function q(e){e=e||window.event;var g=e.charCode||e.keyCode||e.which;if(g==undefined)return a;if(f.attr(m)&&g!=13&&g!=9)return a;var b=f.get(0),i=f.getInputSelection(b),d=i.start,h=i.end;if(g==8){k(e);if(d==h){b.value=b.value.substring(0,d-1)+b.value.substring(h,b.value.length);d=d-1}else b.value=b.value.substring(0,d)+b.value.substring(h,b.value.length);l(b,d);return a}else if(g==9)return c;else if(g==46||g==63272){k(e);if(b.selectionStart==b.selectionEnd)b.value=b.value.substring(0,d)+b.value.substring(h+1,b.value.length);else b.value=b.value.substring(0,d)+b.value.substring(h,b.value.length);l(b,d);return a}else return c}function s(){var c=j();if(f.val()==c)f.val(g);else if(f.val()==g&&d.defaultZero)f.val(i(c));else f.val(i(f.val()));if(this.createTextRange){var b=this.createTextRange();b.collapse(a);b.select()}}function o(a){b.browser.msie&&n(a);if(f.val()==g||f.val()==i(j())||f.val()==d.symbol)if(!d.allowZero)f.val(g);else if(!d.symbolStay)f.val(j());else f.val(i(j()));else if(!d.symbolStay)f.val(f.val().replace(d.symbol,g));else d.symbolStay&&f.val()==d.symbol&&f.val(i(j()))}function k(b){if(b.preventDefault)b.preventDefault();else b.returnValue=a}function l(d,a){var b=f.val().length;f.val(p(d.value));var c=f.val().length;a=a-(b-c);f.setCursorPosition(a)}function p(c){c=c.replace(d.symbol,g);var n="0123456789",e=c.length,l=g,a=g,j=g;if(e!=0&&c.charAt(0)==h){c=c.replace(h,g);if(d.allowNegative)j=h}if(e==0){if(!d.defaultZero)return a;a="0.00"}for(var b=0;b<e;b++)if(c.charAt(b)!="0"&&c.charAt(b)!=d.decimal)break;for(;b<e;b++)if(n.indexOf(c.charAt(b))!=-1)l+=c.charAt(b);var f=parseFloat(l);f=isNaN(f)?0:f/Math.pow(10,d.precision);a=f.toFixed(d.precision);b=d.precision==0?0:1;for(var m=(a=a.split("."))[b].substr(0,d.precision),k=(a=a[0]).length;(k-=3)>=1;)a=a.substr(0,k)+d.thousands+a.substr(k);return d.precision>0?i(j+a+d.decimal+m+Array(d.precision+1-m.length).join(0)):i(j+a)}function t(){var a=f.val();f.val(p(a))}function j(){var a=parseFloat("0")/Math.pow(10,d.precision);return a.toFixed(d.precision).replace(new RegExp("\\.","g"),d.decimal)}function i(a){if(d.showSymbol)if(a.substr(0,d.symbol.length)!=d.symbol)return d.symbol+a;return a}function r(a){if(d.allowNegative){var b=a.val();return a.val()!=g&&a.val().charAt(0)==h?a.val().replace(h,g):h+a.val()}else return a.val()}f.bind("keypress.maskMoney",n);f.bind("keydown.maskMoney",q);f.bind("blur.maskMoney",o);f.bind("focus.maskMoney",s);f.bind("mask",t);f.one(e,function(){f.unbind(".maskMoney");if(b.browser.msie)this.onpaste=null;else b.browser.mozilla&&this.removeEventListener("input",o,a)})})};b.fn.unmaskMoney=function(){return this.trigger(e)};b.fn._mask=function(){return this.trigger("mask")};b.fn.setCursorPosition=function(a){this.each(function(f,b){if(b.setSelectionRange){b.focus();b.setSelectionRange(a,a)}else if(b.createTextRange){var e=b.createTextRange();e.collapse(c);e.moveEnd(d,a);e.moveStart(d,a);e.select()}});return this};b.fn.getInputSelection=function(b){var f=0,c=0,j,i,e,g,h;if(typeof b.selectionStart=="number"&&typeof b.selectionEnd=="number"){f=b.selectionStart;c=b.selectionEnd}else{i=document.selection.createRange();if(i&&i.parentElement()==b){g=b.value.length;j=b.value.replace(/\r\n/g,"\n");e=b.createTextRange();e.moveToBookmark(i.getBookmark());h=b.createTextRange();h.collapse(a);if(e.compareEndPoints("StartToEnd",h)>-1)f=c=g;else{f=-e.moveStart(d,-g);f+=j.slice(0,f).split("\n").length-1;if(e.compareEndPoints("EndToEnd",h)>-1)c=g;else{c=-e.moveEnd(d,-g);c+=j.slice(0,c).split("\n").length-1}}}}return{start:f,end:c}}})(jQuery);
