/*
Author: Billy Abbott
http://www.cowfish.org.uk

Adapted from a script by Robert Hashemian
http://www.hashemian.com/

You can use this code in any manner so long as the author's
name, Web address and this disclaimer is kept intact.
********************************************************
Usage Sample:

<script language="javascript" src="./countdown.js" />
<div>
<script language="JavaScript">
addTimer("28 April 2009 18:00",'We are done!','timer1',1000);
</script>
</div>

Above will create a countdown to the date, in a span called 'timer1' and ticking
once every 1000ms=1 second.

You can also pass an extra argument of a format string - %%D%%, %%H%%, %%M%%,
and %%S%% are days, hours minutes and seconds respectively in your output
string. It defaults if you do not pass in argument to:

%%D%% Day%%DS%%, %%H%% Hour%%HS%%, %%M%% Minute%%MS%%, %%S%% Second%%SS%%.

Which will print out something like:

1 Day, 23 Hours, 12 Minutes and 6 Seconds.
*/

function calcage(secs, num1, num2) {
  s = ((Math.floor(secs/num1))%num2).toString();
  return s;
}

function CountBack(secs, dispFormat, timeout, FinishMessage, divName) {
  if (secs < 0) {
    document.getElementById(divName).innerHTML = FinishMessage;
    return;
  }

  var days=calcage(secs,86400,100000);
  var hours=calcage(secs,3600,24);
  var minutes=calcage(secs,60,60);
  var seconds=calcage(secs,1,60);

  var days_s = days==1?'':'s';  
  var hours_s = hours==1?'':'s';
  var minutes_s = minutes==1?'':'s';  
  var seconds_s = seconds==1?'':'s';  

  DisplayStr = dispFormat.replace(/%%D%%/g, days);
  DisplayStr = DisplayStr.replace(/%%H%%/g, hours);
  DisplayStr = DisplayStr.replace(/%%M%%/g, minutes);
  DisplayStr = DisplayStr.replace(/%%S%%/g, seconds);

  DisplayStr = DisplayStr.replace(/%%DS%%/g, days_s);
  DisplayStr = DisplayStr.replace(/%%HS%%/g, hours_s);
  DisplayStr = DisplayStr.replace(/%%MS%%/g, minutes_s);
  DisplayStr = DisplayStr.replace(/%%SS%%/g, seconds_s);

  document.getElementById(divName).innerHTML = DisplayStr;
  setTimeout("CountBack(" + (secs-1) + ", '"+dispFormat+"',"+timeout+",'"+FinishMessage+"','"+divName+"')", timeout);
}

function addTimer(TargetDate, FinishMessage,divName,tick,d) {
    var dispFormat="%%D%% Day%%DS%%, %%H%% Hour%%HS%%, %%M%% Minute%%MS%%, %%S%% Second%%SS%%";
    if (d!=null) {
        dispFormat=d;
    }
   
    var dthen = new Date(TargetDate);
    var dnow = new Date();
    ddiff = new Date(dthen-dnow);
    gsecs = Math.floor(ddiff.getTime()/1000);

    document.write("<span id='"+divName+"'></span>");
    CountBack(gsecs,dispFormat, tick, FinishMessage,divName);
}

