|
( function (e){ function t(e){ return function (){ var t= this .element.val();e.apply( this ,arguments), this ._refresh(),t!== this .element.val()&& this ._trigger( "change" )}}e.widget( "ui.spinner" ,{version: "1.9.1" ,defaultElement: "<input>" ,widgetEventPrefix: "spin" ,options:{culture: null ,icons:{down: "ui-icon-triangle-1-s" ,up: "ui-icon-triangle-1-n" },incremental:!0,max: null ,min: null ,numberFormat: null ,page:10,step:1,change: null ,spin: null ,start: null ,stop: null },_create: function (){ this ._setOption( "max" , this .options.max), this ._setOption( "min" , this .options.min), this ._setOption( "step" , this .options.step), this ._value( this .element.val(),!0), this ._draw(), this ._on( this ._events), this ._refresh(), this ._on( this .window,{beforeunload: function (){ this .element.removeAttr( "autocomplete" )}})},_getCreateOptions: function (){ var t={},n= this .element; return e.each([ "min" , "max" , "step" ], function (e,r){ var i=n.attr(r);i!==undefined&&i.length&&(t[r]=i)}),t},_events:{keydown: function (e){ this ._start(e)&& this ._keydown(e)&&e.preventDefault()},keyup: "_stop" ,focus: function (){ this .previous= this .element.val()},blur: function (e){ if ( this .cancelBlur){ delete this .cancelBlur; return } this ._refresh(), this .previous!== this .element.val()&& this ._trigger( "change" ,e)},mousewheel: function (e,t){ if (!t) return ; if (! this .spinning&&! this ._start(e)) return !1; this ._spin((t>0?1:-1)* this .options.step,e),clearTimeout( this .mousewheelTimer), this .mousewheelTimer= this ._delay( function (){ this .spinning&& this ._stop(e)},100),e.preventDefault()}, "mousedown .ui-spinner-button" : function (t){ function r(){ var e= this .element[0]=== this .document[0].activeElement;e||( this .element.focus(), this .previous=n, this ._delay( function (){ this .previous=n}))} var n;n= this .element[0]=== this .document[0].activeElement? this .previous: this .element.val(),t.preventDefault(),r.call( this ), this .cancelBlur=!0, this ._delay( function (){ delete this .cancelBlur,r.call( this )}); if ( this ._start(t)===!1) return ; this ._repeat( null ,e(t.currentTarget).hasClass( "ui-spinner-up" )?1:-1,t)}, "mouseup .ui-spinner-button" : "_stop" , "mouseenter .ui-spinner-button" : function (t){ if (!e(t.currentTarget).hasClass( "ui-state-active" )) return ; if ( this ._start(t)===!1) return !1; this ._repeat( null ,e(t.currentTarget).hasClass( "ui-spinner-up" )?1:-1,t)}, "mouseleave .ui-spinner-button" : "_stop" },_draw: function (){ var e= this .uiSpinner= this .element.addClass( "ui-spinner-input" ).attr( "autocomplete" , "off" ).wrap( this ._uiSpinnerHtml()).parent().append( this ._buttonHtml()); this .element.attr( "role" , "spinbutton" ), this .buttons=e.find( ".ui-spinner-button" ).attr( "tabIndex" ,-1).button().removeClass( "ui-corner-all" ), this .buttons.height()>Math.ceil(e.height()*.5)&&e.height()>0&&e.height(e.height()), this .options.disabled&& this .disable()},_keydown: function (t){ var n= this .options,r=e.ui.keyCode; switch (t.keyCode){ case r.UP: return this ._repeat( null ,1,t),!0; case r.DOWN: return this ._repeat( null ,-1,t),!0; case r.PAGE_UP: return this ._repeat( null ,n.page,t),!0; case r.PAGE_DOWN: return this ._repeat( null ,-n.page,t),!0} return !1},_uiSpinnerHtml: function (){ return "<span class='ui-spinner ui-widget ui-widget-content ui-corner-all'></span>" },_buttonHtml: function (){ return "<a class='ui-spinner-button ui-spinner-up ui-corner-tr'><span class='ui-icon " + this .options.icons.up+ "'>▲</span>" + "</a>" + "<a class='ui-spinner-button ui-spinner-down ui-corner-br'>" + "<span class='ui-icon " + this .options.icons.down+ "'>▼</span>" + "</a>" },_start: function (e){ return ! this .spinning&& this ._trigger( "start" ,e)===!1?!1:( this .counter||( this .counter=1), this .spinning=!0,!0)},_repeat: function (e,t,n){e=e||500,clearTimeout( this .timer), this .timer= this ._delay( function (){ this ._repeat(40,t,n)},e), this ._spin(t* this .options.step,n)},_spin: function (e,t){ var n= this .value()||0; this .counter||( this .counter=1),n= this ._adjustValue(n+e* this ._increment( this .counter)); if (! this .spinning|| this ._trigger( "spin" ,t,{value:n})!==!1) this ._value(n), this .counter++},_increment: function (t){ var n= this .options.incremental; return n?e.isFunction(n)?n(t):Math.floor(t*t*t/5e4-t*t/500+17*t/200+1):1},_precision: function (){ var e= this ._precisionOf( this .options.step); return this .options.min!== null &&(e=Math.max(e, this ._precisionOf( this .options.min))),e},_precisionOf: function (e){ var t=e.toString(),n=t.indexOf( "." ); return n===-1?0:t.length-n-1},_adjustValue: function (e){ var t,n,r= this .options; return t=r.min!== null ?r.min:0,n=e-t,n=Math.round(n/r.step)*r.step,e=t+n,e=parseFloat(e.toFixed( this ._precision())),r.max!== null &&e>r.max?r.max:r.min!== null &&e<r.min?r.min:e},_stop: function (e){ if (! this .spinning) return ;clearTimeout( this .timer),clearTimeout( this .mousewheelTimer), this .counter=0, this .spinning=!1, this ._trigger( "stop" ,e)},_setOption: function (e,t){ if (e=== "culture" ||e=== "numberFormat" ){ var n= this ._parse( this .element.val()); this .options[e]=t, this .element.val( this ._format(n)); return }(e=== "max" ||e=== "min" ||e=== "step" )&& typeof t== "string" &&(t= this ._parse(t)), this ._super(e,t),e=== "disabled" &&(t?( this .element.prop( "disabled" ,!0), this .buttons.button( "disable" )):( this .element.prop( "disabled" ,!1), this .buttons.button( "enable" )))},_setOptions:t( function (e){ this ._super(e), this ._value( this .element.val())}),_parse: function (e){ return typeof e== "string" &&e!== "" &&(e=window.Globalize&& this .options.numberFormat?Globalize.parseFloat(e,10, this .options.culture):+e),e=== "" ||isNaN(e)? null :e},_format: function (e){ return e=== "" ? "" :window.Globalize&& this .options.numberFormat?Globalize.format(e, this .options.numberFormat, this .options.culture):e},_refresh: function (){ this .element.attr({ "aria-valuemin" : this .options.min, "aria-valuemax" : this .options.max, "aria-valuenow" : this ._parse( this .element.val())})},_value: function (e,t){ var n;e!== "" &&(n= this ._parse(e),n!== null &&(t||(n= this ._adjustValue(n)),e= this ._format(n))), this .element.val(e), this ._refresh()},_destroy: function (){ this .element.removeClass( "ui-spinner-input" ).prop( "disabled" ,!1).removeAttr( "autocomplete" ).removeAttr( "role" ).removeAttr( "aria-valuemin" ).removeAttr( "aria-valuemax" ).removeAttr( "aria-valuenow" ), this .uiSpinner.replaceWith( this .element)},stepUp:t( function (e){ this ._stepUp(e)}),_stepUp: function (e){ this ._spin((e||1)* this .options.step)},stepDown:t( function (e){ this ._stepDown(e)}),_stepDown: function (e){ this ._spin((e||1)*- this .options.step)},pageUp:t( function (e){ this ._stepUp((e||1)* this .options.page)}),pageDown:t( function (e){ this ._stepDown((e||1)* this .options.page)}),value: function (e){ if (!arguments.length) return this ._parse( this .element.val());t( this ._value).call( this ,e)},widget: function (){ return this .uiSpinner}})})(jQuery);
|