/*
*	Copyright 2005 Connecticut Business Applications, LLC. All rights reserved.
*	@author	Jacques Almeida
*	@version	0.2
*/
var TimerMonitor={
	time:1500,
	running:false,
	reset:false,
	currentIndex:-1,
	callback:null,
test:0,
	invokeEvent:function(f,t){
/*FormDebugger.append("FormManager.currentIndex = "+FormManager.currentIndex);*/
/*FormDebugger.append("TimerMonitor.currentIndex = "+TimerMonitor.currentIndex);*/
		if(FormManager.currentIndex<0){
/*FormDebugger.append("invoke destroy");*/
			TimerMonitor.destroy();
		}
		else if(TimerMonitor.currentIndex==FormManager.currentIndex){
/*FormDebugger.append("invoke interrupt");*/
			if(TimerMonitor.running||TimerMonitor.reset)
				TimerMonitor.interrupt();
			else TimerMonitor.start();
		}
		else{
			TimerMonitor.currentIndex=FormManager.currentIndex;
/*FormDebugger.append("invoke new = "+TimerMonitor.currentIndex);*/
			if( typeof(t)!="undefined" && !isNaN(t) && 500<t )
				TimerMonitor.time=t;
			TimerMonitor.callback=typeof(f)=="function"?f:null;
			if(TimerMonitor.running||TimerMonitor.reset)
				TimerMonitor.interrupt();
			else TimerMonitor.start();
		}

/*if(++TimerMonitor.test%10==0) FormDebugger.show();*/
	},
	runIfExists:function(){
		/*FormDebugger.append("monitor runIfExists(); running="+TimerMonitor.running+", reset="+TimerMonitor.reset);*/
		if(TimerMonitor.reset){
			/*FormDebugger.append("running... interrupted");*/
			TimerMonitor.start();
		}
		else if(TimerMonitor.running){
			if(-1<TimerMonitor.currentIndex||TimerMonitor.currentIndex==FormManager.currentIndex){
				/*FormDebugger.append("running... executing");*/
				if(TimerMonitor.callback!=null)
					TimerMonitor.callback();
			}
			/*FormDebugger.append("running... destroyed");*/
			TimerMonitor.destroy();
		}
	},
	run:function(){
		/*FormDebugger.append("monitor run()");*/
		if( TimerMonitor.running ){
			/*FormDebugger.append("running...after "+TimerMonitor.time+" ms.");*/
			window.setTimeout( TimerMonitor.runIfExists, TimerMonitor.time );
		}
	},
	start:function(){
		/*FormDebugger.append("monitor start()");*/
		TimerMonitor.reset=false;
		TimerMonitor.running=true;
		TimerMonitor.run();
	},
	stop:function(){
		/*FormDebugger.append("monitor stop()");*/
		TimerMonitor.reset=false;
		TimerMonitor.running=false;
	},
	interrupt:function(){
		/*FormDebugger.append("monitor interrupt()");*/
		TimerMonitor.running=false;
		TimerMonitor.reset=true;
	},
	destroy:function(){
		/*FormDebugger.append("monitor destroy()");*/
		TimerMonitor.stop();
		TimerMonitor.currentIndex=-1;
		TimerMonitor.callback=null;
	}
};
