(function(){(function(n){var i,t;if(i=document.createElement("input"),i.setAttribute("type","number"),i.type==="text")n.fn.inputNumber=function(){return n(this).filter(function(){var t;return t=n(this),t.is('input[type="number"]')&&!(t.parent().is("span")&&t.next().is("div.number-spin-btn-container")&&t.next().children().first().is("div.number-spin-btn-up")&&t.next().children().eq(1).is("div.number-spin-btn-down"))}).each(function(){t.polyfills.push(new t(this))}),n(this)},t=function(i){var e,r,o,f,u=this;if(this.elem=n(i),!(this.elem.is(":root *")&&this.elem.height()>0))throw new Error("Element must be in DOM and displayed so that its height can be measured.");f=this.elem.outerHeight()/2+"px",this.upBtn=n("<div/>",{"class":"number-spin-btn number-spin-btn-up",style:"height: "+f}),this.downBtn=n("<div/>",{"class":"number-spin-btn number-spin-btn-down",style:"height: "+f}),this.btnContainer=n("<div/>",{"class":"number-spin-btn-container"}),e=n("<span/>",{style:"white-space: nowrap"}),this.upBtn.appendTo(this.btnContainer),this.downBtn.appendTo(this.btnContainer),this.elem.wrap(e),this.btnContainer.insertAfter(this.elem);this.elem.on({focus:function(){u.elem.on({DOMMouseScroll:t.domMouseScrollHandler,mousewheel:t.mouseWheelHandler},{p:u})},blur:function(){u.elem.off({DOMMouseScroll:t.domMouseScrollHandler,mousewheel:t.mouseWheelHandler})}});this.elem.on({keypress:t.elemKeypressHandler,change:t.elemChangeHandler},{p:this});this.upBtn.on("mousedown",{p:this,func:"increment"},t.elemBtnMousedownHandler);this.downBtn.on("mousedown",{p:this,func:"decrement"},t.elemBtnMousedownHandler);if(this.elem.css("textAlign","right"),this.attrMutationHandler("class"),typeof WebKitMutationObserver!="undefined"&&WebKitMutationObserver!==null||typeof r!="undefined"&&r!==null)typeof WebKitMutationObserver!="undefined"&&WebKitMutationObserver!==null&&(typeof r=="undefined"||r===null)&&(r=WebKitMutationObserver),o=new r(function(n){for(var i,r=0,f=n.length;r<f;r++)i=n[r],i.type==="attributes"&&u.attrMutationHandler(i.attributeName,i.oldValue,u.elem.attr(i.attributeName))}),o.observe(i,{attributes:!0,attributeOldValue:!0,attributeFilter:["class","style","min","max","step"]});else if(typeof MutationEvent!="undefined"&&MutationEvent!==null)this.elem.on("DOMAttrModified",function(n){u.attrMutationHandler(n.originalEvent.attrName,n.originalEvent.prevValue,n.originalEvent.newValue)})},t.polyfills=[],t.isNumber=function(n){return n!=null&&typeof n.toString=="function"?/^-?\d+(?:\.\d+)?$/.test(n.toString()):!1},t.isFloat=function(n){return n!=null&&typeof n.toString=="function"?/^-?\d+\.\d+$/.test(n.toString()):!1},t.isInt=function(n){return n!=null&&typeof n.toString=="function"?/^-?\d+$/.test(n.toString()):!1},t.isNegative=function(n){return n!=null&&typeof n.toString=="function"?/^-\d+(?:\.\d+)?$/.test(n.toString()):!1},t.raiseNum=function(n){var u,i,r;if(typeof n=="number"||typeof n=="object"&&n instanceof Number)return n%1?{num:n.toString(),precision:0}:t.raiseNum(n.toString());if(typeof n=="string"||typeof n=="object"&&n instanceof String){if(t.isFloat(n))return n=n.replace(/(\.\d)0+$/,"$1"),r=t.getPrecision(n),i=n.slice(0,-(r+1))+n.slice(-r),i=i.replace(/^(-?)0+(\d+)/,"$1$2"),u={num:i,precision:r};if(t.isInt(n))return{num:n,precision:0}}},t.raiseNumPrecision=function(n,t){var r,u;if(n.precision<t){for(i=r=u=n.precision;u<=t?r<t:r>t;i=u<=t?++r:--r)n.num+="0";n.precision=t}},t.lowerNum=function(n){if(n.precision>0){while(n.num.length<n.precision+1)n.num=t.isNegative(n.num)?n.num.slice(0,1)+"0"+n.num.slice(1):"0"+n.num;return(n.num.slice(0,-n.precision)+"."+n.num.slice(-n.precision)).replace(/\.?0+$/,"").replace(/^(-?)(\.)/,"$10$2")}return n.num},t.preciseAdd=function(n,i){var u,f,r;if((typeof n=="number"||typeof n=="object"&&n instanceof Number)&&(typeof i=="number"||typeof i=="object"&&i instanceof Number))return n%1==0&&i%1==0?(n+i).toString():t.preciseAdd(n.toString(),i.toString());if((typeof n=="string"||typeof n=="object"&&n instanceof String)&&(typeof i=="string"||typeof i=="object"&&i instanceof String))if(t.isNumber(n)){if(t.isNumber(i)){if(t.isInt(n)){if(t.isInt(i))return t.preciseAdd(parseInt(n,10),parseInt(i,10));t.isFloat(i)&&(n+=".0")}else t.isFloat(n)&&t.isInt(i)&&(i+=".0");if(u=t.raiseNum(n),f=t.raiseNum(i),u.precision<f.precision?t.raiseNumPrecision(u,f.precision):u.precision>f.precision&&t.raiseNumPrecision(f,u.precision),r=(parseInt(u.num,10)+parseInt(f.num,10)).toString(),u.precision>0){if(t.isNegative(r))while(u.precision>r.length-1)r="-0"+r.slice(1);else while(u.precision>r.length)r="0"+r;r=t.lowerNum({num:r,precision:u.precision})}return r=r.replace(/^(-?)\./,"$10."),t.isFloat(r)&&(r=r.replace(/0+$/,"")),r}throw new SyntaxError('Argument "'+i+'" is not a number.');}else throw new SyntaxError('Argument "'+n+'" is not a number.');else return t.preciseAdd(n.toString(),i.toString())},t.preciseSubtract=function(n,i){return typeof i=="number"||typeof i=="object"&&i instanceof Number?t.preciseAdd(n,-i):typeof i=="string"||typeof i=="object"&&i instanceof String?t.isNegative(i)?t.preciseAdd(n,i.slice(1)):t.preciseAdd(n,"-"+i):void 0},t.getPrecision=function(n){var r,i;if(typeof n=="number"){for(r=0,i=n;i!==Math.floor(i);)i=n*Math.pow(10,++r);return r}if(typeof n=="string"&&t.isNumber(n))return t.isFloat(n)?/^-?\d+(?:\.(\d+))?$/.exec(n)[1].length:0},t.prototype.getParams=function(){var i,n,r,u;return r=this.elem.attr("step"),n=this.elem.attr("min"),i=this.elem.attr("max"),u=this.elem.val(),t.isNumber(r)||(r=null),t.isNumber(n)||(n=null),t.isNumber(i)||(i=null),t.isNumber(u)||(u=n||0),{min:n!=null?n:null,max:i!=null?i:null,step:r!=null?r:"1",val:u!=null?u:null}},t.prototype.clipValues=function(n,t,i){return i!=null&&parseFloat(n)>parseFloat(i)?i:t!=null&&parseFloat(n)<parseFloat(t)?t:n},t.prototype.stepNormalize=function(n){var i,u,f,e,r;return f=this.getParams(),r=f.step,u=f.min,r==null?n:(r=t.raiseNum(r),i=t.raiseNum(n),i.precision>r.precision?t.raiseNumPrecision(r,i.precision):i.precision<r.precision&&t.raiseNumPrecision(i,r.precision),u!=null&&(i=t.raiseNum(t.preciseSubtract(n,u)),t.raiseNumPrecision(i,r.precision)),parseFloat(i.num)%parseFloat(r.num)==0?n:(i=t.lowerNum({num:(Math.round(parseFloat(i.num)/(e=parseFloat(r.num)))*e).toString(),precision:i.precision}),u!=null&&(i=t.preciseAdd(i,u)),i))},t.domMouseScrollHandler=function(n){var t;t=n.data.p,n.preventDefault(),n.originalEvent.detail<0?t.increment():t.decrement()},t.mouseWheelHandler=function(n){var t;t=n.data.p,n.preventDefault(),n.originalEvent.wheelDelta>0?t.increment():t.decrement()},t.elemKeypressHandler=function(n){var r,i,t;r=n.data.p,n.keyCode===38?r.increment():n.keyCode===40?r.decrement():(i=n.keyCode)!==8&&i!==9&&i!==35&&i!==36&&i!==37&&i!==39&&i!==46&&(t=n.which)!==45&&t!==46&&t!==48&&t!==49&&t!==50&&t!==51&&t!==52&&t!==53&&t!==54&&t!==55&&t!==56&&t!==57&&n.preventDefault()},t.elemChangeHandler=function(n){var u,r,i,f;i=n.data.p,i.elem.val()!==""&&(t.isNumber(i.elem.val())?(f=i.getParams(),r=i.clipValues(f.val,f.min,f.max),r=i.stepNormalize(r),r.toString()!==i.elem.val()&&i.elem.val(r).change()):(u=i.elem.attr("min"),i.elem.val(u!=null&&t.isNumber(u)?u:"0").change()))},t.elemBtnMousedownHandler=function(t){var u,i,r,f,e=this;i=t.data.p,u=t.data.func,i[u](),f=function(){i[u](),i.timeoutID=window.setTimeout(f,10)},r=function(){window.clearTimeout(i.timeoutID),n(document).off("mouseup",r),n(e).off("mouseleave",r)};n(document).on("mouseup",r);n(this).on("mouseleave",r);i.timeoutID=window.setTimeout(f,700)},t.prototype.attrMutationHandler=function(n){var e,u,f,s,o;if(n==="class"||n==="style"){for(u={},e=null,o=["opacity","visibility","-moz-transition-property","-moz-transition-duration","-moz-transition-timing-function","-moz-transition-delay","-webkit-transition-property","-webkit-transition-duration","-webkit-transition-timing-function","-webkit-transition-delay","-o-transition-property","-o-transition-duration","-o-transition-timing-function","-o-transition-delay","transition-property","transition-duration","transition-timing-function","transition-delay"],f=0,s=o.length;f<s;f++)i=o[f],(e=this.elem.css(i))!==this.btnContainer.css(i)&&(u[i]=e);u.display=this.elem.css("display")==="none"?"none":"inline-block",this.btnContainer.css(u)}else(n==="min"||n==="max"||n==="step")&&this.elem.change()},t.prototype.increment=function(){var n,i;this.elem.is(":disabled")||this.elem.is("[readonly]")||(i=this.getParams(),n=t.preciseAdd(i.val,i.step),i.max!=null&&parseFloat(n)>parseFloat(i.max)&&(n=i.max),n=this.stepNormalize(n),this.elem.val(n).change())},t.prototype.decrement=function(){var n,i;this.elem.is(":disabled")||this.elem.is("[readonly]")||(i=this.getParams(),n=t.preciseSubtract(i.val,i.step),i.min!=null&&parseFloat(n)<parseFloat(i.min)&&(n=i.min),n=this.stepNormalize(n),this.elem.val(n).change())};else{n.fn.inputNumber=function(){return n(this)};return}n(function(){n('input[type="number"]').inputNumber()})})(jQuery)}).call(this)