/*

    * 2011/09/01
        * birthday

*/

var distopwatches_ar = [];
var distopwatchglobalcounter = 0;

function diStopwatch(e_id)
{
  ++distopwatchglobalcounter;
  distopwatches_ar[distopwatchglobalcounter] = this;

  this.e = _ge(e_id);
  this.result = '';
  this.epoch = new Date(1970, 1, 1, 0, 0, 0, 0).valueOf();
  this.idx = distopwatchglobalcounter;
  this.state = 0;

  this.t1 = 0;
  this.t2 = 0;

  this.timer = 0;
  this.lap = 1;

  this.len = 0;

  this.show = function()
  {
    if (this.state) this.t2 = (new Date()).valueOf();

    var v = this.format(this.len + this.t2 - this.t1);

    if (typeof this.e.value != 'undefined')
      this.e.value = v;
    else if (typeof this.e.innerHTML != 'undefined')
      this.e.innerHTML = v;

    this.result = v;
  }

  this.reset = function()
  {
    if (this.state) this.startstop();
    this.timer = this.len = this.state = this.t2 = this.t1 = 0;

    this.show();

    //_ge('lap').innerHTML = '';
    this.lap = 1;
  }

  this.startstop = function()
  {
    if (this.state)
      this.t2 = (new Date()).valueOf();
    else
      this.t1 = (new Date()).valueOf();

    this.state = 1 - this.state;

    if (this.state == 0)
    {
      clearInterval(this.timer);
      this.len += this.t2 - this.t1;

      /*
      var row=document.createElement('tr');
      var td=document.createElement('td');
      td.innerHTML=(this.lap++);
      row.appendChild(td);
      td=document.createElement('td');
      td.innerHTML=this.format(this.t2-this.t1);
      row.appendChild(td);
      td=document.createElement('td');
      td.innerHTML=this.format(this.len);
      row.appendChild(td);
      document.getElementById('lap').appendChild(row);
      */

      this.timer = this.t2 = this.t1 = 0;
      this.show();
    }
    else
    {
      eval('this.timer = setInterval(function(){distopwatches_ar['+this.idx+'].show();}, 43);');
    }
  }

  this.format = function(ms)
  {
    var d = new Date(ms + this.epoch).toString().replace(/.*([0-9][0-9]:[0-9][0-9]:[0-9][0-9]).*/, '$1');
    var x = String(ms % 1000);
    while (x.length < 3) x = '0' + x;

    return d+'.'+x;
  }
}

