// $Id: timer.js,v 1.1 2008/09/05 00:51:28 pwh Exp $

// Timer object ----------------------------------------------------------------

function displayTimer ( elapsedTime )

{
   var seconds
   var minutes
   var hours

   elapsedTime -= elapsedTime % 1000
   elapsedTime /= 1000

   seconds = elapsedTime % 60

   elapsedTime -= seconds
   elapsedTime /= 60

   minutes = elapsedTime % 60

   elapsedTime -= minutes
   hours = elapsedTime / 60

   if ( seconds < 10 ) seconds = "0" + seconds
   if ( minutes < 10 ) minutes = "0" + minutes

   if ( hours < 10 ) hours = "&nbsp;" + hours

   document.getElementById ( "clock" ).innerHTML = "Time:&nbsp;" + hours + ":"
						+ minutes + ":" + seconds
}


function updateTimer ()

{
   var d = new Date()
   var elapsedTime = d.getTime () - this.startTime

   this.handle = setTimeout ( this.name + ".update()", 1000 -
						( elapsedTime % 1000 ) )
   this.display ( elapsedTime )
}


function startTimer ()

{
   if ( this.startTime == 0 ) {

	var d = new Date ()

	this.startTime = d.getTime ()
	this.handle = setTimeout ( this.name + ".update()", 1000 )
	this.display ( 0 )
   }
}


function stopTimer ()

{
   if ( this.startTime > 0 ) {

	var d = new Date ()

	clearTimeout ( this.handle )
	this.display ( d.getTime() - this.startTime + 500 )
   }
}


function resetTimer ()

{
   this.startTime = 0

   if ( this.handle ) {

	clearTimeout ( this.handle )
	this.handle = null
   }
}


function Timer ( name )

{
   this.name = name
   this.startTime = 0
   this.handle = null

   this.start = startTimer
   this.stop = stopTimer
   this.update = updateTimer
   this.display = displayTimer
   this.reset = resetTimer
}
