﻿var UTDStatus = {

    UIStatus: "",
    EventID: 0,
    StageID: 0,
    Ticks: 0,

    IntervalID: 0,

    Setup: function (uiStatus, eventID, stageId) {
        UTDStatus.UIStatus = uiStatus;
        UTDStatus.EventID = eventID;
        UTDStatus.StageID = stageId;

        $(UTDStatus.UIStatus).show();

        UTDStatus.PreInit();
    },

    PreInit: function () {
        $(UTDStatus.UIStatus).addClass("checking").html("Initialising auto-refresh...");
        window.setTimeout(UTDStatus.Init, 3000);
    },

    Init: function () {
        OPMS.AutoScore.Website.UTDStatus.Init(UTDStatus.EventID, UTDStatus.StageID, UTDStatus.InitSuccess, UTDStatus.InitFail);
    },

    InitSuccess: function (result) {
        if (result > 0) {
            UTDStatus.Ticks = result;
            UTDStatus.IsUTD();
            UTDStatus.IntervalID = window.setInterval(UTDStatus.PreCheck, 60000);
        } else {
            $(UTDStatus.UIStatus).removeClass("checking").hide();
        }
    },

    InitFail: function (error) {
        window.clearInterval(UTDStatus.IntervalID);
        $(UTDStatus.UIStatus).removeClass("checking").hide();
    },

    PreCheck: function () {
        $(UTDStatus.UIStatus).addClass("checking").html("Checking for updates...");
        window.setTimeout(UTDStatus.Check, 1500);
    },

    Check: function () {
        OPMS.AutoScore.Website.UTDStatus.Check(UTDStatus.EventID, UTDStatus.StageID, UTDStatus.Ticks, UTDStatus.CheckSuccess, UTDStatus.CheckFail);
    },

    CheckSuccess: function (result) {
        if (!result) {
            UTDStatus.IsUTD();
        } else {
            window.clearInterval(UTDStatus.IntervalID);

            $(UTDStatus.UIStatus).html("Refreshing...");
            window.setTimeout(UTDStatus.Refresh, 1500);
        }
    },

    CheckFail: function (error) {
        window.clearInterval(UTDStatus.IntervalID);
        $(UTDStatus.UIStatus).removeClass("checking").hide();
    },

    Refresh: function () {
        location.reload(true);
    },

    IsUTD: function () {
        var d = new Date();
        var h = d.getHours();
        var m = "" + d.getMinutes();

        if (m.length < 2)
            m = "0" + m;

        var f = h + ":" + m;

        $(UTDStatus.UIStatus).removeClass("checking").html("Up-to-date @ " + f);
    }
};
