﻿$(document).ready(function () {

    $('.side_poll').each(function (i, e) {
        var $pollUUID = $("#poll-uuid", $(e));
        var $pollCookie = $("#poll-cookie", $(e));
        var $pollVote = $("#poll-vote", $(e));
        var $pollSend = $("#poll-send", $(e));
        var $pollShowResults = $("#poll-show-results", $(e));
        var $pollResults = $("#poll-results", $(e));
        var $pollOptions = $pollVote.find("input[type='radio']");
        var pollOptions = [];
        var totalVotes = 0;

        var displayResults = $pollShowResults[0];

        $pollOptions.each(function () {
            var $pollOption = $(this);
            var uuid = $pollOption.val();
            var answer = $pollOption.next().text();
            var votes = parseInt($pollOption.attr("votes"));
            pollOptions.push({
                uuid: uuid,
                answer: answer,
                votes: votes
            });

            totalVotes += votes;
        });

        $pollSend.click(function () {
            var $checked = $pollVote.find("input[type='radio']:checked");
            if ($checked[0]) {
                var pollUUID = $pollUUID.val();
                if ($pollCookie.val() != pollUUID) { // not voted
                    var pollOptionUUID = $checked.val();

                    $.ajax({
                        type: "post",
                        contentType: "application/json",
                        url: "/Widget/Poll",
                        data: "{pollUUID: '" + pollUUID + "', pollOptionUUID: '" + pollOptionUUID + "'}",
                        dataType: "json",
                        success: function (data) {
                            if (data.Success) {
                                for (var index in pollOptions) {
                                    var pollOption = pollOptions[index];
                                    if (pollOption.uuid == pollOptionUUID) {
                                        pollOption.votes++;
                                        break;
                                    }
                                }
                                totalVotes++;
                                showResults(true); // voted

                                $pollCookie.val(pollUUID);
                            }
                        }
                    });
                } else {
                    $pollVote.hide();
                    $pollResults.show();
                    $pollResults.html("<br/><strong>Je hebt al gestemd vandaag.</strong>"); // You have Already voted today.
                }
            }
        });

        $pollShowResults.click(function () {
            showResults();
        });

        function showResults(voted) {
            if (displayResults) {
                var html = "<dl class=\"graph\">";
                var sum = 0;
                for (var index in pollOptions) {
                    var pollOption = pollOptions[index];
                    var percent = 0;
                    if (totalVotes != 0) {
                        if (index != pollOptions.length - 1) {
                            percent = parseFloat(((pollOption.votes / totalVotes) * 100).toFixed("2"));
                            sum += percent;
                        } else {
                            percent = (100 - sum);
                            if (percent < 0) {
                                percent = 0;
                            }
                        }
                    }
                    html += $.format("<dt class=\"bar-title\"><strong>{0}%</strong>{1}</dt><dd class=\"bar-container\"><div style=\"width: {0}%; display: block;\">&nbsp;</div></dd>", percent.toFixed("2"), pollOption.answer);
                }
                //html += $.format("</dl><div class=\"clear\"></div><p>Total Votes: {0}</p><p><a id=\"poll-back\" class=\"back\"></a></p>", totalVotes);
                html += "</dl><div class=\"clear\"></div><p><a id=\"poll-back\" class=\"back\"></a></p>";
                $pollResults.html(html);
            } else {
                $pollResults.html("<br/><strong>Bedankt voor uw stem.</strong>");
            }

            $pollVote.hide();
            $pollResults.show();

            // remove checked
            var $checked = $pollVote.find("input[type='radio']:checked");
            if ($checked[0]) {
                $checked.attr("checked", "");
                $checked.parent().removeClass("selected"); // Beautify input of poll
            }

            $("#poll-back", $(e)).click(function () {
                $pollVote.show();
                $pollResults.hide();
            });
        }
    
    })

    
});
