(function(n){n.fn.numeric=function(t,i){typeof t=="boolean"&&(t={decimal:t});t=t||{};typeof t.negative=="undefined"&&(t.negative=!0);var r=t.decimal===!1?"":t.decimal||".",u=t.negative===!0?!0:!1,i=typeof i=="function"?i:function(){};return this.data("numeric.decimal",r).data("numeric.negative",u).data("numeric.callback",i).keypress(n.fn.numeric.keypress).keyup(n.fn.numeric.keyup).blur(n.fn.numeric.blur)};n.fn.numeric.keypress=function(t){var u=n.data(this,"numeric.decimal"),f=n.data(this,"numeric.negative"),i=t.charCode?t.charCode:t.keyCode?t.keyCode:0,r;if(i==13&&this.nodeName.toLowerCase()=="input")return!0;if(i==13)return!1;if((r=!1,t.ctrlKey&&i==97||t.ctrlKey&&i==65)||t.ctrlKey&&i==120||t.ctrlKey&&i==88||t.ctrlKey&&i==99||t.ctrlKey&&i==67||t.ctrlKey&&i==122||t.ctrlKey&&i==90||t.ctrlKey&&i==118||t.ctrlKey&&i==86||t.shiftKey&&i==45)return!0;if(i<48||i>57){if(this.value.indexOf("-")!=0&&f&&i==45&&(this.value.length==0||n.fn.getSelectionStart(this)==0))return!0;u&&i==u.charCodeAt(0)&&this.value.indexOf(u)!=-1&&(r=!1);i!=8&&i!=9&&i!=13&&i!=35&&i!=36&&i!=37&&i!=39&&i!=46?r=!1:typeof t.charCode!="undefined"&&(t.keyCode==t.which&&t.which!=0?(r=!0,t.which==46&&(r=!1)):t.keyCode!=0&&t.charCode==0&&t.which==0&&(r=!0));u&&i==u.charCodeAt(0)&&(r=this.value.indexOf(u)==-1?!0:!1)}else r=!0;return r};n.fn.numeric.keyup=function(){var t=this.value,e,o,s,h,f,c,i,r;if(t.length>0){var l=n.fn.getSelectionStart(this),u=n.data(this,"numeric.decimal"),a=n.data(this,"numeric.negative");for(u!=""&&(e=t.indexOf(u),e==0&&(this.value="0"+t),e==1&&t.charAt(0)=="-"&&(this.value="-0"+t.substring(1)),t=this.value),o=[0,1,2,3,4,5,6,7,8,9,"-",u],s=t.length,i=s-1;i>=0;i--){for(r=t.charAt(i),i!=0&&r=="-"?t=t.substring(0,i)+t.substring(i+1):i!=0||a||r!="-"||(t=t.substring(1)),h=!1,f=0;f<o.length;f++)if(r==o[f]){h=!0;break}h&&r!=" "||(t=t.substring(0,i)+t.substring(i+1))}if(c=t.indexOf(u),c>0)for(i=s-1;i>c;i--)r=t.charAt(i),r==u&&(t=t.substring(0,i)+t.substring(i+1));this.value=t;n.fn.setSelection(this,l)}};n.fn.numeric.blur=function(){var r=n.data(this,"numeric.decimal"),u=n.data(this,"numeric.callback"),t=this.value,i;t!=""&&(i=new RegExp("^\\d+$|\\d*"+r+"\\d+"),i.exec(t)||u.apply(this))};n.fn.removeNumeric=function(){return this.data("numeric.decimal",null).data("numeric.negative",null).data("numeric.callback",null).unbind("keypress",n.fn.numeric.keypress).unbind("blur",n.fn.numeric.blur)};n.fn.getSelectionStart=function(n){if(n.createTextRange){var t=document.selection.createRange().duplicate();return(t.moveEnd("character",n.value.length),t.text=="")?n.value.length:n.value.lastIndexOf(t.text)}return n.selectionStart};n.fn.setSelection=function(n,t){if(typeof t=="number"&&(t=[t,t]),t&&t.constructor==Array&&t.length==2)if(n.createTextRange){var i=n.createTextRange();i.collapse(!0);i.moveStart("character",t[0]);i.moveEnd("character",t[1]);i.select()}else n.setSelectionRange&&(n.focus(),n.setSelectionRange(t[0],t[1]))}})(jQuery)