public void start(){
		if(this.running||this.currentCount<this.repeatCount){
			return;
		}

		final Timer timer=this;
		TimerTask task=new TimerTask(){
			@Override
			public void run(){
				timer.currentCount++;
				if(timer.currentCount<=timer.repeatCount){
					Event event=new Event(TimerEvent.TIMER);
					timer.dispatchEvent(event);
				}
				if(timer.currentCount>=timer.repeatCount){
					timer.cancel();
					// timer complete
					timer.currentCount=timer.repeatCount;
					TimerEvent event=new TimerEvent(TimerEvent.TIMER_COMPLETE);
					timer.dispatchEvent(event);
				}
			}
		};
		synchronized(task){
			this.running=true;
			t.schedule(task,this.delay,this.delay);
		}
	}