function calcage(useimages, element, secs, num1, num2, zeros, images) {
  s = ((Math.floor(secs/num1))%num2).toString();
  if (zeros && s.length < 2)
    s = "0" + s;
  if(useimages){
    var img = "";
    for (var i = 1; i <= s.length; i++)
    {
      img += "<img src='" + images[s.substring((i - 1), i)] + "'/>";
    }
    return img;
  }  
  else{
    return "<span id='cntdwn"+element+"'>" + s + "</span>";
  }
}

function CountBack(TargetElement, UseNumberImages, SetTimeOutPeriod, FinishMessage, DisplayFormat, Seconds, LeadingZero, CountActive, CountStepper, Images) {
  if (Seconds < 0) {
    document.getElementById(TargetElement).innerHTML = FinishMessage;
    return;
  }
  DisplayStr = DisplayFormat.replace(/%%D%%/g, calcage(UseNumberImages,"days",Seconds,86400,100000,LeadingZero,Images));
  DisplayStr = DisplayStr.replace(/%%H%%/g, calcage(UseNumberImages,"hours",Seconds,3600,24,LeadingZero,Images));
  DisplayStr = DisplayStr.replace(/%%M%%/g, calcage(UseNumberImages,"minutes",Seconds,60,60,LeadingZero,Images));
  DisplayStr = DisplayStr.replace(/%%S%%/g, calcage(UseNumberImages,"secs",Seconds,1,60,LeadingZero,Images));

  document.getElementById(TargetElement).innerHTML = DisplayStr;
  if (CountActive){
    var f = function() {CountBack(TargetElement, UseNumberImages, SetTimeOutPeriod, FinishMessage, DisplayFormat, Seconds+CountStepper, LeadingZero, CountActive, CountStepper, Images); };
    setTimeout(f, SetTimeOutPeriod);
  }
}

function putspan(backcolor, forecolor) {
 document.write("<span id='cntdwn' style='background-color:" + backcolor + 
                "; color:" + forecolor + "'></span>");
}

function CountDownInit(TargetDate, CountActive, CountStepper, LeadingZero, DisplayFormat, FinishMessage, TargetElement, BackColor, ForeColor, Images){
    
    if (typeof(BackColor)=="undefined")
      BackColor = "white";
    if (typeof(ForeColor)=="undefined")
      ForeColor= "black";
    if (typeof(TargetDate)=="undefined")
      TargetDate = "12/31/2020 5:00 AM";
    if (typeof(DisplayFormat)=="undefined")
      DisplayFormat = "%%D%% Days, %%H%% Hours, %%M%% Minutes, %%S%% Seconds.";
    if (typeof(CountActive)=="undefined")
      CountActive = true;
    if (typeof(FinishMessage)=="undefined")
      FinishMessage = "";
    if (typeof(CountStepper)!="number")
      CountStepper = -1;
    if (typeof(LeadingZero)=="undefined")
      LeadingZero = true;
    
    var UseNumberImages = false;
    if(Images.length > 0)
      UseNumberImages = true;

    CountStepper = Math.ceil(CountStepper);
    if (CountStepper == 0)
      CountActive = false;
    var SetTimeOutPeriod = (Math.abs(CountStepper)-1)*1000 + 990;
    //putspan(BackColor, ForeColor);
    var dthen = new Date(TargetDate);
    var dnow = new Date();
    if(CountStepper>0)
      ddiff = new Date(dnow-dthen);
    else
      ddiff = new Date(dthen-dnow);
    gsecs = Math.floor(ddiff.valueOf()/1000);
    
    CountBack(TargetElement, UseNumberImages, SetTimeOutPeriod, FinishMessage, DisplayFormat, gsecs, LeadingZero, CountActive, CountStepper, Images);
}

