function handleAnswerSelection(in_inputIDArray, in_thisInputId, in_maxAnswers, in_initVal, in_readonly) {

    if(in_readonly) {
        var field = document.getElementById(in_thisInputId); 
        
        if((field) && (field.type == 'checkbox')) { 
            field.checked = in_initVal;
        }
        
        return false;
    }
    else if(in_maxAnswers == 0) {
        return true;
    }
    else if(in_maxAnswers == 1) {
        // Enable a radio-button like mode...
        var i;
        
        for(i=0; i<in_inputIDArray.length; i++) {
            var field = document.getElementById(in_inputIDArray[i]); 
            
            try {
                if((field) && (field.type == 'checkbox')) {
                    field.checked = (in_inputIDArray[i] == in_thisInputId);
                }
            }
            catch(err) {
                // Ignore this...
                alert(err);
            }
        }
        
        return true;
    }
    else {
        var i;
        var count = 0;
                
        for(i=0; i<in_inputIDArray.length; i++) {
            var field = document.getElementById(in_inputIDArray[i]); 
            
            try {
                if((field) && (field.type == 'checkbox')) {
                    if(field.checked)
                        count++;
                }
            }
            catch(err) {
                // Ignore this...
                alert(err);
            }
        }
        
        if(count > in_maxAnswers) {
            var field = document.getElementById(in_thisInputId); 
            
            try {
                if((field) && (field.type == 'checkbox')) {
                    field.checked = false;
                }
            }
            catch(err) {
                // Ignore this...
                alert(err);
            }

            alert("You may select up to " + in_maxAnswers + " answers.");

            return true;
        }
        else 
            return true;
    }
} 

function handleAnswerBoolean(in_thisInputId, in_selectedInputId, in_readonly) {

    if(in_readonly) {
        if(in_thisInputId != in_selectedInputId) {
            var clickedField = document.getElementById(in_thisInputId); 
            var selectedField = document.getElementById(in_selectedInputId); 

            if((clickedField) && (clickedField.type == 'radio')) { 
                clickedField.checked = false;
            }

            if((selectedField) && (selectedField.type == 'radio')) { 
                selectedField.checked = true;
            }
        }
        
        return false;
    }
    else {
        return true;
    }
} 

function validateAnswers(in_validationRoutines) {
    var success = true;
    var i;
            
    for(i=0; (i<in_validationRoutines.length); i++) {
        var funct = in_validationRoutines[i];
        
        success &= ((!funct) || funct());
    }
    
    if(success == true) {
        return true;
    }
    else {
        var errorElement = document.getElementById('question_error_message');
        
        if(errorElement)
            errorElement.innerHTML = 'Please check your asnwers. At least one question was not answered properly. Those that need attention are in <span style="color: red;">red</span>.';
        
        return false
    }
}


function setQuestionErrorState(in_questionID, in_isError, in_message) {
    var div = document.getElementById(in_questionID);

    if(div) {
        if(in_isError) {
            div.className = "question_error";
        }
        else {
            div.className = "question";
        }
    }
}