Sys.Timer=function(){Sys.Timer.initializeBase(this),this._interval=1e3,this._enabled=!1,this._timer=null},Sys.Timer.prototype={get_interval:function(){return this._interval},set_interval:function(t){this._interval!==t&&(this._interval=t,this.raisePropertyChanged("interval"),this.get_isUpdating()||null===this._timer||(this._stopTimer(),this._startTimer()))},get_enabled:function(){return this._enabled},set_enabled:function(t){t!==this.get_enabled()&&(this._enabled=t,this.raisePropertyChanged("enabled"),this.get_isUpdating()||(t?this._startTimer():this._stopTimer()))},add_tick:function(t){this.get_events().addHandler("tick",t)},remove_tick:function(t){this.get_events().removeHandler("tick",t)},dispose:function(){this.set_enabled(!1),this._stopTimer(),Sys.Timer.callBaseMethod(this,"dispose")},updated:function(){Sys.Timer.callBaseMethod(this,"updated"),this._enabled&&(this._stopTimer(),this._startTimer())},_timerCallback:function(){var t=this.get_events().getHandler("tick");t&&t(this,Sys.EventArgs.Empty)},_startTimer:function(){this._timer=window.setInterval(Function.createDelegate(this,this._timerCallback),this._interval)},_stopTimer:function(){window.clearInterval(this._timer),this._timer=null}},Sys.Timer.descriptor={properties:[{name:"interval",type:Number},{name:"enabled",type:Boolean}],events:[{name:"tick"}]},Sys.Timer.registerClass("Sys.Timer",Sys.Component);