﻿// JScript File

var Addon_Debug_Initialized = false;
var Addon_Debug_MoreEvents = false;
//var Addon_Debug_TimerId = 0;

function Addon_Debug_Activate() {
    if (!Addon_Debug_Initialized) {
        if (debugMode) {
            var outp = "";
            outp += "<div id='debugServiceDiv' style='border:1px solid #eeeeff;font-size:10px;'><table>" +
                "<tr><td>Player version:</td><td>" + playerVersion + "</td></tr>" +
                "<tr><td>Live service:</td><td id='debugLiveServiceTD'>nvt</td></tr>" +
                "<td>Live status:</td><td id='debugLiveStatusTD'>" + LiveStatusNames[theLiveStatusId] + "</td></tr>" +
                "<tr><td>Timeline update:</td><td id='debugEventsUpdateTD'></td></tr>" +
                "<tr><td>Stream time:</td><td id='debugTimeCodeFromStreamTD'></td></tr>" +
                "<tr><td>Next event:</td><td id='debugNextEventTD'></td></tr></table>" +
                "<input type='button' id='moreEventsButton' value='Show more events' onclick='Addon_Debug_ToggleEventView();' />" +
                "<br/><input type='text' id='debugScript' style='width:80%;' value=\"theView.HideTabs(new Array('Slides'));theView.ShowTab('Debug');\">" +
                "<a href='javascript:;' onclick=\"try{eval(document.getElementById('debugScript').value);}catch(e){alert(e.description);}\" >go</a>" +
                "</div>" +
                "<div id='debugDiv' style='border:1px solid #eeeeff; font-size:9px;'>Timeline:<br></div>" +
                "<div id='debugEventsDiv' style='border:1px solid #eeeeff;;width:100%;height:100px;'></div>";
            document.getElementById("cwc_tabContent_Debug").innerHTML = outp;
        }
        Addon_Debug_Initialized = true;
    }
    Addon_Debug_UpdateEvents();
}

function GetTime() {
    var myDate = new Date();
    return "<span style='font-size:9px;'>"+(myDate.getHours() < 10 ? "0" : "") + myDate.getHours() + ":" +
        (myDate.getMinutes() < 10 ? "0" : "") + myDate.getMinutes() + ":" +
        (myDate.getSeconds() < 10 ? "0" : "") + myDate.getSeconds() + "." +
        (myDate.getMilliseconds() < 100 ? (myDate.getMilliseconds() < 10 ? "00" : "0"):"" ) + myDate.getMilliseconds()+
        "</span>";
}

function Addon_Debug_DoDebug(aVal, aBgColor, aMore) {
    if (debugMode && Addon_Debug_MoreEvents || aMore != true) {
        var tmp = GetTime() + " <span style='background-color:" + aBgColor + "'>" + aVal + "</span><br>" + document.getElementById("debugDiv").innerHTML;
        
        if (tmp.length > 10000) {
            tmp = tmp.substr(0, 10000);
        }
        document.getElementById("debugDiv").innerHTML = tmp;
    }
}

function Addon_Debug_DoDebug_Async(aVal, aBgColor, aCallId) {
    if (debugMode) {
        var tmp = GetTime() + " <span style='background-color:" + aBgColor + "'> "  + aVal + "</span>" +
            "...<span id='DEBUGASYNC_CALLID_" + aCallId + "' ></span>" +
            "<br>" + document.getElementById("debugDiv").innerHTML;

        if (tmp.length > 10000) {
            tmp = tmp.substr(0, 10000);
        }
        document.getElementById("debugDiv").innerHTML = tmp;
    }
}

function Addon_Debug_DoDebug_Callback(aVal, aBgColor, aCallId) {
    if (debugMode) {
        try {
            document.getElementById("DEBUGASYNC_CALLID_" + aCallId).style.backgroundColor = aBgColor;
            document.getElementById("DEBUGASYNC_CALLID_" + aCallId).innerHTML += GetTime() + "> " + aVal;
        } catch (Ex) {
            DoDebug(Ex.message);
        }
    }
}

function Addon_Debug_ToggleEventView() {
    if (debugMode) {
        if (Addon_Debug_MoreEvents) {
            Addon_Debug_MoreEvents = false;
            document.getElementById("moreEventsButton").value = "Show more events";
        } else {
            Addon_Debug_MoreEvents = true;
            document.getElementById("moreEventsButton").value = "Show less events";
        }
    }
}

function Addon_Debug_UpdateEvents() {
    if (debugMode) {
        document.getElementById("debugEventsUpdateTD").innerHTML = new Date().toString();
        var outp = "";
        for (var i = 0; i < eventsArr.length; i++) {
            /*for (var j = 0; j < eventsArr[i].length; j++) {
                outp += eventsArr[i][j] + " ";
            }*/
            var t = eventsArr[i][0];
            if (t.length == 14) t = t.substr(0, 8) + " " + t.substr(8, 2) + ":" + t.substr(10, 2) + ":" + t.substr(12, 2);
            var d = eventsArr[i][3];
            if (d.length > 30) d = d.substr(0, 30) + "...";
            outp += t + " > " + eventsArr[i][1] + ":" + eventsArr[i][2] + " " + d + "<br/>";
            document.getElementById("debugEventsDiv").innerHTML = "<small>" + outp + "</small>";
        }
    }
}

function Addon_Debug_LiveService(aValue) {
    if (debugMode) document.getElementById("debugLiveServiceTD").innerHTML = aValue;
}

function Addon_Debug_LiveStatus(oldStatus, newStatus) {
    if (debugMode) document.getElementById("debugLiveStatusTD").innerHTML = LiveStatusNames[newStatus];
    DoDebug("LiveStatus Changed from " + LiveStatusNames[oldStatus] + " (" + oldStatus + ") to: " + LiveStatusNames[newStatus] + " (" + newStatus + ") ", "#FFFF00");
}

function Addon_Debug_NextEvent(aValue) {
    if (debugMode) document.getElementById("debugNextEventTD").innerHTML = aValue;
}

function Addon_Debug_TimeCodeFromStream(aValue) {
    var t = aValue;
    if (t.length == 14) t = t.substr(0, 8) + " " + t.substr(8, 2) + ":" + t.substr(10, 2) + ":" + t.substr(12, 2);
    if (debugMode) document.getElementById("debugTimeCodeFromStreamTD").innerHTML = t + " (received @" + new Date().toString() +")";
}
