﻿$(function() {
    setInterval(UpdateCounter, 1000);
});

function GetTimeUntil(futureDate) {
    var days = 0;
    var hours = 0;
    var minutes = 0;

    var ONE_SECOND = 1000;
    var SECONDS_PER_MINUTE = 60;
    var SECONDS_PER_HOUR = SECONDS_PER_MINUTE * 60;
    var SECONDS_PER_DAY = SECONDS_PER_HOUR * 24;

    var difference = GetTotalMillisecondsDifference(futureDate);
    var totalSeconds = 0;
    
    if (difference > 0) {
        totalSeconds = Math.round(difference / ONE_SECOND);
        if (totalSeconds > 0) {
            days = parseInt(totalSeconds / SECONDS_PER_DAY);
            totalSeconds = totalSeconds % SECONDS_PER_DAY;
            hours = parseInt(totalSeconds / SECONDS_PER_HOUR);
            totalSeconds = totalSeconds % SECONDS_PER_HOUR;
            minutes = parseInt(totalSeconds / SECONDS_PER_MINUTE);
            totalSeconds = totalSeconds % SECONDS_PER_MINUTE;
        }
    }

    return { days: days,
        hours: hours,
        minutes: minutes,
        seconds: totalSeconds
    };
}

function UpdateCounter() {
    var time = GetTimeUntil(nextRideStartDate);

    var counter = FormatTimeComponent(time.days) + ":" +
        FormatTimeComponent(time.hours) + ":" +
        FormatTimeComponent(time.minutes) + ":" +
        FormatTimeComponent(time.seconds);
    $('.countDownContainer .counter').text(counter);
}

function FormatTimeComponent(time) {
    if (time < 10)
        return "0" + time.toString();
    else
        return time.toString();
}

function GetTotalMillisecondsDifference(futureDate) {
    var now = new Date();

    // Convert both dates to milliseconds
    var nextStart_ms = futureDate.getTime()
    var now_ms = now.getTime()

    // Calculate the difference in milliseconds
    var difference_ms = nextStart_ms - now_ms;

    return difference_ms;
}
