// JavaScript Document
function Timer(){
	this.defminute	= 30;
	this.defsecond	= 00;
	this.minute	 	= this.defminute; 	// default
	this.second		= this.defsecond;
	this.control	= null; 			// objetct to display time
	this.interval 	= null;
	this.stoped		= false;
	this.disabled	= false;
	
	this.onend		= function(timer){ return alert('time end.'); };
}

Timer.prototype.reset = function(){
	clearInterval(this.interval);
	this.stoped 	= false;
	this.minute	 	= this.defminute; // default
	this.second		= this.defsecond;
	this.dec();
}

Timer.prototype.dec = function(){
	if(this.stoped){ return this.onend(this); }		// stop condition
	if(this.disabled){ return; }
	this.display();	
	//control time
	if(this.minute == 0 && this.second == 0){ this.stop(); }	
	if(this.second == 0){ this.second = 60; this.minute--; }
	this.second--;
	
	var rTimer = this;
	this.interval = setTimeout(	function(){ rTimer.dec(); },1000);		
}

Timer.prototype.start = function(){
	this.disabled = false;
	this.reset();
}

Timer.prototype.stop = function(){
	clearInterval(this.interval);
	this.stoped = this.disabled = true;	
}

Timer.prototype.display = function(){
	if(this.control){
		this.control.innerHTML = ((this.minute<10)?'0'+this.minute:this.minute) +':'+((this.second<10)?'0'+this.second:this.second);
	}
}
