var objCD = new CountDown();

var objImg = new ImageList();

window.onload = function()

{

  objCD.setTarget(new Date(2009, 5, 21, 0, 00, 00));

  objImg.setImage(0, "./images/cd/0.gif");

  objImg.setImage(1, "./images/cd/1.gif");

  objImg.setImage(2, "./images/cd/2.gif");

  objImg.setImage(3, "./images/cd/3.gif");

  objImg.setImage(4, "./images/cd/4.gif");

  objImg.setImage(5, "./images/cd/5.gif");

  objImg.setImage(6, "./images/cd/6.gif");

  objImg.setImage(7, "./images/cd/7.gif");

  objImg.setImage(8, "./images/cd/8.gif");

  objImg.setImage(9, "./images/cd/9.gif");

  ChangeImage(objCD.getArrivalTime());

}

function ChangeImage(atTime)

{

  var tagCount = document.getElementById("counter");

  var tagHtml = "";

  var atDate, atHour, atMinite, atSecond;

  atDate = Math.floor(atTime / 86400);

  atTime %= 86400;

  atHour = Math.floor(atTime / 3600);

  atTime %= 3600;

  atMinite = Math.floor(atTime / 60);

  atTime %= 60;

  atSecond = (atTime < 0 ? 0 : atTime);

 //日をイメージに差し替え

  if( atDate > 0 )

  {

    atDate = "" + atDate;

    for(var ix = 0; ix < atDate.length; ix++)

      tagHtml += "<" + "img src=\"" + objImg.getImage(atDate.substring(ix, ix + 1)).src + "\">";

    tagHtml += "日";

  }

 //時間をイメージに差し替え

  if( atDate > 0 || atHour > 0 )

  {

    atHour = (atHour < 10 ? "0" : "") + atHour;

    for(var ix = 0; ix < atHour.length; ix++)

      tagHtml += "<img src=\"" + objImg.getImage(atHour.substring(ix, ix + 1)).src + "\">";

    tagHtml += "時間";

  }

 //分をイメージに差し替え

  if( atDate > 0 || atHour > 0 || atMinite > 0 )

  {

    atMinite = (atMinite < 10 ? "0" : "") + atMinite;

    for(var ix = 0; ix < atMinite.length; ix++)

      tagHtml += "<img src=\"" + objImg.getImage(atMinite.substring(ix, ix + 1)).src + "\">";

    tagHtml += "分";

  }

 //秒をイメージに差し替え

  atSecond = (atSecond < 10 ? "0" : "") + atSecond;

  for(var ix = 0; ix < atSecond.length; ix++)

    tagHtml += "<img src=\"" + objImg.getImage(atSecond.substring(ix, ix + 1)).src + "\">";

  tagHtml += "秒";

  tagCount.innerHTML = tagHtml;

  setTimeout("ChangeImage(objCD.getArrivalTime())", 500);

}

function CountDown()

{

  this.targetTime = new Date();

 /** 到達時間を取得します。

  * @param argTime Dateオブジェクトで指定する現在時刻。

  * @return 目標までの到達時間を秒数で返します。

  */

  this.getArrivalTime = function(argTime)

  {

    var nowTime;

    if( argTime instanceof Date )

      nowTime = argTime;

     else

      nowTime = new Date();

    var countTime = Math.floor((this.targetTime.getTime() - nowTime.getTime()) / 1000);

    return countTime;

  }

 /** 目標時間を設定します。

  *  @param argTime Dateオブジェクトで指定する目標時間。

  */

  this.setTarget = function(argTime)

  {

    if( !(argTime instanceof Date) )

      return;

    this.targetTime = argTime;

  }

}

function ImageList()

{

  this.imageFile = new Array(10);

 /** 数値をイメージに変換します。

  * @return 設定されたイメージファイルを返します。

  */

  this.getImage = function(ixNum)

  {

    if( this.imageFile[ixNum] == undefined )

      return null;

    return this.imageFile[ixNum];

  }

 /** イメージファイルを設定します。

  * @param ixNum 設定するイメージの数値です。

  * @param numUrl 設定するイメージを表すパスです。

  */

  this.setImage = function(ixNum, numUrl)

  {

    if( !isFinite(ixNum) )

      return;

    this.imageFile[ixNum] = new Image();

    this.imageFile[ixNum].src = numUrl;

  }

}
