
function doTest() {
    var settings = new CountDownSettings("cntdwn");
    var settings2 = new CountDownSettings("cntdwn2");
    settings2.TargetDate = "07/12/2010 12:00 AM";
    CountDown(settings);
    CountDown(settings2);
}

function CountDownSettings(_target) {
    this.TargetElement = document.getElementById(_target);
    this.TargetDate = "12/31/2020 5:00 AM";
    this.ServerDate = "12/31/2020 5:00 AM";
    this.DisplayFormat = "%%D%% Dagen, %%H%% Uur, %%M%% Minuten, %%S%% Seconden.";
    this.FinishMessage = "Klaar";
    this.CountActive = true;
    this.LeadingZero = true;
    this.CountStepper = -1;
    this.SetTimeOutPeriod = null;
}

function CountDown(settings) {
    CountStepper = Math.ceil(settings.CountStepper);
    if (settings.CountStepper == 0)
        settings.CountActive = false;
    
    settings.SetTimeOutPeriod = (Math.abs(settings.CountStepper) - 1) * 1000 + 990;
    var dthen = new Date(settings.TargetDate);
    var dnow = new Date(settings.ServerDate);
    if (settings.CountStepper > 0)
        ddiff = new Date(dnow - dthen);
    else
        ddiff = new Date(dthen - dnow);

    gsecs = Math.floor(ddiff.valueOf() / 1000);
    //alert(settings.TargetDate);
    CountBack(gsecs, settings);
}


function calcage(secs, num1, num2, settings) {
    s = ((Math.floor(secs / num1)) % num2).toString();
    //alert(secs + "|" + num1 + "|" + num2)
  if (settings.LeadingZero && s.length < 2)
    s = "0" + s;
  return s;  
    
}

function CountTimeOut(secs, settings) {
    if (secs < 0) {
        window.location = window.location;
        return;
    }
    CountBack(secs, settings);
}

function bold(value) {
    return '<strong>' + value + '</strong>';
}

function CountBack(secs,settings) {
    if (secs >= 0) {
        //alert(secs);
        var days = calcage(secs, 86400, 100000, settings);
        var hours = calcage(secs, 3600, 24, settings);
        var mins = calcage(secs, 60, 60, settings);
        var sec = calcage(secs, 1, 60, settings);

        var displayStr = '';
        if (days > 0) displayStr += bold(days) + ' dagen ';
        if (hours > 0 || days > 0) displayStr += bold(hours) + ' uur ';
        displayStr += bold(mins) + ' min. ';
        displayStr += bold(sec) + ' sec.';

        //DisplayStr = settings.DisplayFormat.replace(/%%D%%/g, calcage(secs,86400,100000, settings));
        //DisplayStr = DisplayStr.replace(/%%H%%/g, calcage(secs, 3600, 24, settings));
        //DisplayStr = DisplayStr.replace(/%%M%%/g, calcage(secs, 60, 60, settings));
        //DisplayStr = DisplayStr.replace(/%%S%%/g, calcage(secs, 1, 60, settings));

        settings.TargetElement.innerHTML = displayStr;

        if (settings.CountActive) {
            var f = function () { CountTimeOut(secs + settings.CountStepper, settings); }
            setTimeout(f, settings.SetTimeOutPeriod);  
        }
    }
}

