Ext.ux.form.Spinner.Strategy=function(A){Ext.apply(this,A)};Ext.extend(Ext.ux.form.Spinner.Strategy,Ext.util.Observable,{defaultValue:0,minValue:undefined,maxValue:undefined,incrementValue:1,alternateIncrementValue:5,validationTask:new Ext.util.DelayedTask(),onSpinUp:function(A){this.spin(A,false,false)},onSpinDown:function(A){this.spin(A,true,false)},onSpinUpAlternate:function(A){this.spin(A,false,true)},onSpinDownAlternate:function(A){this.spin(A,true,true)},spin:function(A,C,B){this.validationTask.delay(500,function(){A.validate()})},fixBoundries:function(A){return A}});Ext.ux.form.Spinner.NumberStrategy=function(A){Ext.ux.form.Spinner.NumberStrategy.superclass.constructor.call(this,A)};Ext.extend(Ext.ux.form.Spinner.NumberStrategy,Ext.ux.form.Spinner.Strategy,{allowDecimals:true,decimalPrecision:2,spin:function(B,E,C){Ext.ux.form.Spinner.NumberStrategy.superclass.spin.call(this,B,E,C);var A=parseFloat(B.getValue());var D=(C==true)?this.alternateIncrementValue:this.incrementValue;(E==true)?A-=D:A+=D;A=(isNaN(A))?this.defaultValue:A;A=this.fixBoundries(A);B.setRawValue(A)},fixBoundries:function(B){var A=B;if(this.minValue!=undefined&&A<this.minValue){A=this.minValue}if(this.maxValue!=undefined&&A>this.maxValue){A=this.maxValue}return this.fixPrecision(A)},fixPrecision:function(B){var A=isNaN(B);if(!this.allowDecimals||this.decimalPrecision==-1||A||!B){return A?"":B}return parseFloat(parseFloat(B).toFixed(this.decimalPrecision))}});Ext.ux.form.Spinner.DateStrategy=function(A){Ext.ux.form.Spinner.DateStrategy.superclass.constructor.call(this,A)};Ext.extend(Ext.ux.form.Spinner.DateStrategy,Ext.ux.form.Spinner.Strategy,{defaultValue:new Date(),format:"Y-m-d",incrementValue:1,incrementConstant:Date.DAY,alternateIncrementValue:1,alternateIncrementConstant:Date.MONTH,spin:function(D,G,E){Ext.ux.form.Spinner.DateStrategy.superclass.spin.call(this);var A=D.getRawValue();A=Date.parseDate(A,this.format);var C=(G==true)?-1:1;var F=(E==true)?this.alternateIncrementValue:this.incrementValue;var B=(E==true)?this.alternateIncrementConstant:this.incrementConstant;if(typeof this.defaultValue=="string"){this.defaultValue=Date.parseDate(this.defaultValue,this.format)}A=(A)?A.add(B,C*F):this.defaultValue;A=this.fixBoundries(A);D.setRawValue(Ext.util.Format.date(A,this.format))},fixBoundries:function(B){var D=B;var C=(typeof this.minValue=="string")?Date.parseDate(this.minValue,this.format):this.minValue;var A=(typeof this.maxValue=="string")?Date.parseDate(this.maxValue,this.format):this.maxValue;if(this.minValue!=undefined&&D<C){D=C}if(this.maxValue!=undefined&&D>A){D=A}return D}});Ext.ux.form.Spinner.TimeStrategy=function(A){Ext.ux.form.Spinner.TimeStrategy.superclass.constructor.call(this,A)};Ext.extend(Ext.ux.form.Spinner.TimeStrategy,Ext.ux.form.Spinner.DateStrategy,{format:"H:i",incrementValue:1,incrementConstant:Date.MINUTE,alternateIncrementValue:1,alternateIncrementConstant:Date.HOUR});