﻿

function PollQuestionForm(iId, iAnswerCount)
{
    var This = this;

    // Implements
    Implements(This, Form, iId, true);

    // Data members
    This.Content = new Content(iId + '-content');
    This.Answers = new RadioButtonGroup();

    // Methods
    This.Show = function()
    { This.Content.Show(); }

    This.Hide = function()
    { This.Content.Hide(); }

    This.Validate = function()
    { return This.Answers.GetValue() != null; }    

    // Initialize
    {
        for (var i = 0; i < iAnswerCount; i++)
            This.Answers.Add(new RadioButton(iId + '-answer-' + i, i));
        This.Add(This.Answers);
        This.Answers.Reset();
    }
}


function Poll(iId, iAnswerCount)
{
    var This = this;

    // Data members
    This.Question = new PollQuestionForm(iId + '-question', iAnswerCount);
    This.Results = new Content(iId + '-results');
    This.ResultsButton = new Button(iId + '-resultsbutton');
    This.BackButton = new Button(iId + '-backbutton');
    This.BackContent = new Content(iId + '-backcontent');
    This.Submitted = null;

    // Methods
    This.ShowQuestion = function()
    {
        This.Question.Show();
        This.Results.Hide();
    }

    This.ShowResults = function()
    {
        This.Question.Hide();
        This.Results.Show();

        if (!This.Submitted)
            This.BackContent.Show();
        else
            This.BackContent.Hide();
    }

    This.Submission = function()
    {
        var ret = !This.Submitted;
        
        This.Submitted = true;
        This.ShowResults();

        return ret;
    }

    // Initialize
    {
        This.Submitted = (Cookies.Get('poll') != null);
    
        This.Question.OnSubmit.Add(This.Submission);
        This.ResultsButton.OnClick.Add(This.ShowResults);
        This.BackButton.OnClick.Add(This.ShowQuestion);

        if (This.Submitted)
            This.ShowResults();
        else
            This.ShowQuestion();
    }    

}
