(function($){"use strict";

$('.sp-widget-polls').live('registered', function() {
    var $widget = $(this);
    var $polls = $('.sp-poll-wrapper', $widget);

    $polls.each(function() {
        var $results = $('.sp-poll-results', this);
        var $poll = $('.sp-poll', this);

        if ($poll.length > 0) {
            $widget.bind('loadResults', function(e, answers) {
                for (var idx = 0, answer; answer = answers[idx]; ++idx) {
                    var $answer = $('#sp-poll-answer-' + answer.id, $results);

                    $('.sp-poll-answer span', $answer).text(answer.count);
                }

                $('.action-view_results', $poll).click().hide();

                $('.action-vote', $poll).hide();
                $('.action-view_poll', $results).hide();
            });

            $('.action-view_results', $widget).click(function() {
                $poll.hide();
                $results.show();
                return false;
            });

            $('.action-view_poll', $widget).click(function() {
                $poll.show();
                $results.hide();
                return false;
            });

            $('.action-vote', $widget).click(function() {
                var poll_id = $poll.attr('id').replace(/^sp-poll-/, '');
                var answer = $('.sp-poll-answers input:checked', $poll).val();

                if (!answer) {
                    shiftpress.message("You must select a poll answer!");
                    return false;
                }

                shiftpress.api({
                    url: '/poll/' + poll_id + '/vote',
                    data: {
                        answer: answer
                    },
                    method: "post",
                    success: function(data) {
                        if (data.poll) {
                            $widget.trigger('loadResults', [ data.poll.answers ]);
                        } else if (data.error) {
                            shiftpress.message(data.error);
                        } else {
                            shiftpress.message("Unknown error");
                        }
                    }
                });

                return false;
            });

            $results.hide();
        }
    });
});

})(jQuery);

