﻿// JScript File

var AddonPollTimer = 0;
var Addon_Poll_Initialized = false;
var Addon_Poll_Target = "";
var Addon_Poll_CurrentPollId = 0;
var PollhideTimer = 0;
var Addon_Poll_PopupId = "poll"

function Addon_Poll_Activate() {
    if (!Addon_Poll_Initialized) {
        Addon_Poll_Paint();
        Addon_Poll_Initialized = true;
        DoDebug("Poll initialized");
        try {
            theView.HidePopup(Addon_Poll_PopupId);
            Addon_Poll_Target = "Popup";
        } catch (e) { }
        try {
            if (demoMode) {
                Addon_Poll_doEvent("POLL", AddonPollArr[0][0]);
                theView.ShowInfoPanel("Poll");
                outp = "<div class='pollQuestion'>Demo poll</div>";

                for (var i = 0; i < 3; i++) {
                    outp += "<li class='pollAnswer' >Antwoord " + (i + 1) + "</li>";
                }
                document.getElementById("cwc_infoPanelContent_Poll").innerHTML = outp;
            }
        } catch (e) { }
    } else {
        Addon_Poll_UpdateTab();
    }
}

function Addon_Poll_Clear() {
    if (Addon_Poll_Target == "Popup") {
        theView.HidePopup(Addon_Poll_PopupId);
    } else {
        theView.HideInfoPanel("Poll");
    }
}

function Addon_Poll_doEvent(aCmd, aValue) {
    if (aCmd == "POLL") {
        //get poll questions 
        Addon_Poll_CurrentPollId = aValue;
        PlayerService_QueueServerEvent("getpoll", {}, PlayerService_Priority.high, Addon_Poll_CheckPoll)
    }
    if (aCmd == "HIDE") {
        Addon_Poll_Clear();
        document.getElementById("cwc_infoPanelContent_Poll").innerHTML = "";
    }
}

function Addon_Poll_CheckPoll(result) {
    if (result.Values["poll"] != undefined && result.Values["poll"] != "") {
        eval(result.Values["poll"]);
    } else {
        DoDebug("check poll failed", "#ffaa66");
    }
    //check if user has answered poll
    PlayerService_QueueServerEvent("checkpoll", { "pollquestionid": Addon_Poll_CurrentPollId }, PlayerService_Priority.high, Addon_Poll_ShowPoll)
}

function Addon_Poll_SelectAnswer(aPollId, aAnswerNr) {
    Addon_Poll_SelectedAnswer = aAnswerNr;
    document.getElementById("pollAnswer_" + aPollId + "_" + aAnswerNr).checked = true;
    Addon_Poll_SelectedAnswer = aAnswerNr;
}

function Addon_Poll_SubmitClicked(aPollId) {
    var answer = 0;
    for (var i = 1; i < 11; i++) {
        var radio = document.getElementById("pollAnswer_" + aPollId + "_" + i);
        if (radio != null) {
            if (radio.checked) {
                answer = i; 
                break; 
            }
        }
    }
    Addon_Poll_Vote(aPollId, answer);
}

var Addon_Poll_CurrentQuestionId = -1;

function Addon_Poll_ShowPoll(result) {
    clearTimeout(PollhideTimer);
    PollhideTimer = 0;
    //DoDebug("CALLBACK showPoll , count:" + result.Values["pollCount"])

    Addon_Poll_CurrentQuestionId = result.Values["pollQuestionId"];
    var myArr = FindArrayInDoubleArray(Addon_Poll_CurrentQuestionId, AddonPollArr);
    var outp = "<div class='pollQuestion'>" + myArr[1] + "</div><div class='pollQuestionBody'>";
    outp += "<table>";
    for (var i = 0; i < 10; i++) {
        var answerText = myArr[i + 2][0];
        if (answerText != "") {
            var answerNr = i + 1;
            outp += "<tr><td><input type='radio' name='pollAnswer_" + Addon_Poll_CurrentQuestionId + "' id='pollAnswer_" + Addon_Poll_CurrentQuestionId + "_" + answerNr + "'  onclick='Addon_Poll_SelectAnswer(" + Addon_Poll_CurrentQuestionId + "," + answerNr + ");' /></td>";
            outp += "<td><span class='pollAnswer' onclick='Addon_Poll_SelectAnswer(" + Addon_Poll_CurrentQuestionId + "," + answerNr + ");'>" + answerText + "</span></td></tr>";
        }
    }
    outp += "<tr><td collspan='2'><input type='button' value='Ok' onclick='Addon_Poll_SubmitClicked(" + Addon_Poll_CurrentQuestionId + ");' /></td></tr></table>";
    outp += "</div>";
        
    if (result.Values["pollCount"] == 0) //user hasnt answered yet
    {
        if (Addon_Poll_Target == "Popup") {
            var myTitle = AddonPollLangArr[3];
            
            if (myTitle == "") {
                myTitle = "Poll";
            }

            theView.ShowPopup(myTitle, outp, Addon_Poll_PopupId);
            DoDebug("show poll popup " + result.Values["pollQuestionId"]);
        } else {
            theView.ShowInfoPanel("Poll");
            document.getElementById("cwc_infoPanelContent_Poll").innerHTML = outp;
        }
        
        if (theLiveStatusId == 4) {
            AddonPollTimer = setTimeout("Addon_Poll_UpdateTab()", 20000);
        }
    } else if (typeof (result.Values["pollAnswer"]) != "undefined") {
        Addon_Poll_Vote(result.Values["pollQuestionId"], result.Values["pollAnswer"]);
    }
}

function Addon_Poll_UpdateTab() {
    //DoDebug("poll timer: " + AddonPollTimer);
    clearTimeout(AddonPollTimer);
    
    if (document.getElementById("cwc_tabContent_Poll") != null) {
        
        if (theLiveStatusId == 4) {
            AddonPollTimer = setTimeout("Addon_Poll_UpdateTab()", 20000);
        }

        if (document.getElementById("cwc_tabContent_Poll").style.display != "none") {
            PlayerService_QueueServerEvent("getpoll", null, PlayerService_Priority.high, Addon_Poll_UpdateTabComplete);
        }
    }
}

function Addon_Poll_UpdateTabComplete(result) {
    if (typeof (result.Values["poll"]) != "undefined" && result.Values["poll"] != "") {
        eval(result.Values["poll"]);
        Addon_Poll_Paint();
    }
}

function Addon_Poll_Vote(poll, answer) {
    if (answer > 0) {
        DoDebug("Send answer " + answer + " of poll " + poll);
        PlayerService_QueueServerEvent("answerpoll", { "poll": poll, "answer": answer }, PlayerService_Priority.high, Addon_Poll_AnswerCallback);
    } else {
        DoDebug("Answer " + answer + " of poll " + poll + " not send, answer should be > 0");
    }
}

function Addon_Poll_AnswerCallback(result) {
    DoDebug("PollAnswer:" + result.Values["pollAnswers"]);
    Addon_Poll_UpdateTab();

    if (AddonPollLangArr[0] == 'true') {
        var answers = result.Values["pollAnswers"];

        if (answers.length > 0) {
            var myArr = FindArrayInDoubleArray(Addon_Poll_CurrentQuestionId, AddonPollArr);
            var outp = "<div class='pollQuestion'>" + myArr[1] + "</div><div class='pollQuestionBody'>";
            for (var i = 0; i < 10; i++) {
                if (myArr[i + 2][0] != "") {
                    outp += "&nbsp;<li class='pollAnswerNoLink' >" + myArr[i + 2][0] + "</li>";
                }
            }
            
            var outp = outp + "<br/>" + AddonPollLangArr[1] + " " + answers[0];

            if (answers.length > 1 && !AddonPollHideCorrectAnswer) {
                outp += "<br/>" + AddonPollLangArr[2] + " ";

                for (var i = 1; i < answers.length; i++) {
                    outp += answers[i] + ". ";
                }
            }
            outp += "</div>";
            if (Addon_Poll_Target == "Popup") {
                var myTitle = AddonPollLangArr[3];
                if (myTitle == "") myTitle = "Poll";
                theView.ShowPopup(myTitle, outp, Addon_Poll_PopupId);
                PollhideTimer = setTimeout('theView.HidePopup("' + Addon_Poll_PopupId + '");', 10000);
            } else {
                theView.ShowInfoPanel("Poll");
                document.getElementById("cwc_infoPanelContent_Poll").innerHTML = outp;
            }
        } else {
            Addon_Poll_Clear();
        }
    } else {
        Addon_Poll_Clear();
    }
}

function Addon_Poll_Paint() {
    var outp = "";

    if (AddonPollArr.length == 0) {
        outp = AddonPollLangArr[4] + "<hr class='pollHr'/>";
    } else {

        for (j = 0; j < AddonPollArr.length; j++) {
            outp += "<div class='pollQuestionStatic'>" + AddonPollArr[j][1] + "</div>";
            var count = 0;
            var total = 0;

            for (var i = 0; i < 10; i++) {

                if (AddonPollArr[j][i + 2][0].length > 0) {
                    count++;
                    total += AddonPollArr[j][i + 2][1];
                }
            }

            for (var i = 0; i < 10; i++) {

                if (AddonPollArr[j][i + 2][0].length > 0) {
                    perc = 0;

                    if (total > 0) {
                        perc = Math.round(AddonPollArr[j][i + 2][1] / total * 100);
                    }
                    
                    outp += "<div class='pollAnswerStatic'>" + AddonPollArr[j][i + 2][0] + "</div>";
                    outp += "<table><tr><td><div class='pollAnswerBar' style='width:" + ((AddonPollArr[j][i + 2][1] / total * 300) + 2) + "px'></div></td>";
                    outp += "<td class='pollAnswerPercentage'>" + perc + "%</td></tr></table>";
                }
            }
            outp += "<hr class='pollHr'/>";
        }
    }
    try {
        document.getElementById("cwc_tabContent_Poll").innerHTML = outp;
    } catch (ex) { }
}
