﻿function d3modPollsObj(answerCount, minAnswers, maxAnswers, prioritiesControl)
{
    // properties
    
    this.answerCount = answerCount;
    this.maxAnswers = maxAnswers;
    this.minAnswers = minAnswers;
    this.prioritiesControl = prioritiesControl;
    
    this.Priorities = new Array(this.answerCount);
    for (i=0; i < this.Priorities.length; i++) this.Priorities[i] = 0;
    this.PriorityImages = new Array(10);
    this.PriorityImages[0] = new Image();
    this.PriorityImages[0].src = '/system/controls/d3modPolls/images/pollPriority.jpg';
    for (i=1; i<11; i++)
    {
        this.PriorityImages[i] = new Image();
        this.PriorityImages[i].src = '/system/controls/d3modPolls/images/pollPriority'+i+'.jpg';
    }
    
    // methods
    
    this.ucPoll_trim = function(str)
    {
        return str.replace(/^\s+|\s+$/g, '');
    }

    this.CheckPollAnswer1 = function(obj, id)
    {
        var inputs = document.getElementById(id).getElementsByTagName('input');
        for (i=0; i<inputs.length; i++)
            if (inputs[i].type == 'radio')
                if (inputs[i] != obj && inputs[i].checked) inputs[i].checked = false;
    }

    this.CheckPollAnswer2 = function(id)
    {
        var answers = 0;
        var inputs = document.getElementById(id).getElementsByTagName('input');
        for (i=0; i<inputs.length; i++)
            if (inputs[i].type == 'checkbox')
                if (inputs[i].checked) answers++;
        if (answers > this.maxAnswers)
        {
            alert('You can\'t select more than '+maxAnswers+' items.');
            return false;
        }
        else return true;
    }

    this.CheckPollAnswer3 = function(img, index)
    {
        if (this.Priorities[index] == 0)
        {
            var answers = 0;
            var maxPriority = 1;
            for (i=0; i < this.Priorities.length; i++)
            {
                if (this.Priorities[i] > 0) answers++;
                if (this.Priorities[i] >= maxPriority) maxPriority = this.Priorities[i] + 1;
            }
            if (answers >= this.maxAnswers)
            {
                alert('You can\'t select more than '+maxAnswers+' items.');
                return false;
            }
            else
            {            
                this.Priorities[index] = maxPriority;
                img.src = this.PriorityImages[maxPriority].src;
            }
        }
    }

    this.ValidatePollAnswers1 = function(id)
    {
        var answerSelected = false;
        var inputs = document.getElementById(id).getElementsByTagName('input');
        for (i=0; i<inputs.length; i++)
            if (inputs[i].type == 'radio')
                if (inputs[i].checked) answerSelected = true;
        if (!answerSelected)
        {
            alert('Please select your answer.');
            return false;
        }
        else
        {
            if (inputs.length > 0)
            {
                if (inputs[inputs.length - 1].type == 'text' && inputs[inputs.length - 2].checked)
                    if (this.ucPoll_trim(inputs[inputs.length - 1].value) == '')
                    {
                        alert('Please enter your answer.');
                        inputs[inputs.length - 1].focus();
                        return false;
                    }
            }
        }
        return true;
    }

    this.ValidatePollAnswers2 = function(id)
    {
        var answers = 0;
        var inputs = document.getElementById(id).getElementsByTagName('input');
        for (i=0; i<inputs.length; i++)
            if (inputs[i].type == 'checkbox')
                if (inputs[i].checked) answers++;
        if (answers < this.minAnswers)
        {
            if (this.minAnswers == 1) alert('You have to select at least '+this.minAnswers+' item.');
            else alert('You have to select at least '+this.minAnswers+' items.');
            return false;
        }
        else
        {
            if (inputs.length > 0)
            {
                if (inputs[inputs.length - 1].type == 'text' && inputs[inputs.length - 2].checked)
                    if (this.ucPoll_trim(inputs[inputs.length - 1].value) == '')
                    {
                        alert('Please enter your answer.');
                        inputs[inputs.length - 1].focus();
                        return false;
                    }
            }
        }
        return true;
    }

    this.ValidatePollAnswers3 = function(id)
    {
        var answers = 0;
        for (i=0; i < this.Priorities.length; i++)
            if (this.Priorities[i] > 0) answers++;
        if (answers < this.minAnswers)
        {
            if (this.minAnswers == 1) alert('You have to select at least '+this.minAnswers+' item.');
            else alert('You have to select at least '+this.minAnswers+' items.');
            return false;
        }
        else
        {
            var inputs = document.getElementById(id).getElementsByTagName('input');
            if (inputs.length > 0)
            {
                if (inputs[0].type == 'text' && this.Priorities[this.Priorities.length - 1] > 0)
                    if (this.ucPoll_trim(inputs[0].value) == '')
                    {
                        alert('Please enter your answer.');
                        inputs[0].focus();
                        return false;
                    }
            }
        }
        var result = ''
        for (i=0; i < this.Priorities.length; i++)
            if (result == '') result = this.Priorities[i].toString();
            else result = result + ',' + this.Priorities[i].toString();
        this.prioritiesControl.value = result;
        return true;
    }
}
