function InitDailyDealTimer(elTimer, nServerEndTime) {
    var nTimeRemaining = nServerEndTime - g_ServerTime;
    if (nTimeRemaining > 0) {
        var nEndTimeLocal = Math.round(new Date().getTime() / 1000) + nTimeRemaining;
        new Countdown(elTimer, nEndTimeLocal);
    }
}

var Countdown = Class.create({
    elClock: null,
    nEndTime: null,
    nIntervalId: null,
    bEnded: false,

    initialize: function(elClock, nEndTimeLocalTime) {
        this.elClock = elClock;
        this.nEndTime = nEndTimeLocalTime;
        this.bEnded = false;

        this.nIntervalId = window.setInterval(this.refreshClock.bind(this), 1000);
        this.refreshClock();
    },

    refreshClock: function() {
        if (this.bEnded)
            return;

        var timeCur = Math.round(new Date().getTime() / 1000);
        var secsRemaining = this.nEndTime - timeCur;

        if (secsRemaining < 0) {
            this.bEnded = true;
            secsRemaining = 0;
            window.clearInterval(this.nIntervalId);
        }

        var remainHours = Math.floor(secsRemaining / 3600);
        var remainMinutes = Math.floor((secsRemaining % 3600) / 60);
        var remainSeconds = secsRemaining % 60;
        var str = (remainHours < 10 ? '0' : '') + remainHours + ':';
        str += (remainMinutes < 10 ? '0' : '') + remainMinutes + ':';
        str += (remainSeconds < 10 ? '0' : '') + remainSeconds;

        this.elClock.update(str);
    }
});
