/*
	Author:		Robert Hashemian (http://www.hashemian.com/)
	Modified by:	Munsifali Rashid (http://www.munit.co.uk/)
*/


function countdown(obj)
{
	this.obj		= obj;
	this.Div		= "clock";
	this.BackColor		= "white";
	this.ForeColor		= "black";
	this.TargetDate		= "12/31/2020 5:00 AM";
	this.DisplayFormat = "%%D%% Days, %%H%% Hours, %%M%% Minutes, %%S%% Seconds.";

	// SHWARE allow start date to be set
	this.NowDate = null;
	// SHWARE add individual display formats so they can be zero-suppressed
	this.SuppressLeadingZeros = false;
	this.DaysPart = "%%D%% Days, ";
	this.HoursPart = "%%H%% Hours, ";
	this.MinutesPart = "%%M%% Minutes,";
	this.SecondsPart = "%%S%% Seconds.";
	this.debugCounter = 0;
	// END SHWARE
	
	this.CountActive	= true;
	
	this.DisplayStr;

	this.Calcage		= cd_Calcage;
	this.CountBack		= cd_CountBack;
	this.Setup		= cd_Setup;
}


function cd_Calcage(secs, num1, num2)
{
  s = ((Math.floor(secs/num1))%num2).toString();
  if (s.length < 2) s = "0" + s;
  return (s);
}
function cd_CountBack(secs) {

    // SHWARE - don't display days if zero
    if ((!this.SuppressLeadingZeros) || (this.Calcage(secs, 86400, 100000) > 0)) {
        this.DisplayStr = this.DisplayFormat.replace(/%%D%%/g, this.Calcage(secs, 86400, 100000));
    }
    else {
        this.DisplayStr = this.DisplayFormat.replace(eval('/' + this.DaysPart + '/g'), '');
    }

  //this.DisplayStr = this.DisplayFormat.replace(/%%D%%D,/g, '');

  // SHWARE - don't display hours if zero
    if (!this.SuppressLeadingZeros || this.Calcage(secs, 3600, 24) > 0)
      this.DisplayStr = this.DisplayStr.replace(/%%H%%/g, this.Calcage(secs, 3600, 24));
  else
      this.DisplayStr = this.DisplayStr.replace(eval('/' + this.HoursPart + '/g'), '');

  this.DisplayStr = this.DisplayStr.replace(/%%M%%/g, this.Calcage(secs, 60, 60));
  this.DisplayStr = this.DisplayStr.replace(/%%S%%/g, this.Calcage(secs, 1, 60));

  document.getElementById(this.Div).innerHTML = this.DisplayStr;
  if (this.CountActive) setTimeout(this.obj +".CountBack(" + (secs-1) + ")", 990);
}
function cd_Setup() {
    var dthen = new Date(this.TargetDate);
    // SHWARE allow for the start date to be set
    var dnow = (this.NowDate == null) ? new Date() : new Date(this.NowDate);

	ddiff		= new Date(dthen-dnow);
	gsecs		= Math.floor(ddiff.valueOf()/1000);
	this.CountBack(gsecs);
}

