function submitStartForm() {
    if (startState == 1) {
        document.startForm.submit();
    }
}

function toggleState() {
    var currentState = 0;
    var allChecked = 1;
    for (i in bbCategories) {
        el = document.getElementById("bb_C_id_" + i);
        if(!el) {
            continue;
        }
        if (el.checked) {
            currentState = 1;
            // break;
        } else {
            allChecked = 0;
        }
    }
    if (allChecked) {
        document.getElementById("bb_all").checked = true;
    } else {
        document.getElementById("bb_all").checked = false;
    }
    if (currentState != startState) {
        startState = currentState;
        elEnabled = document.getElementById("gameStartEnabled");
        elDisabled = document.getElementById("gameStartDisabled");
        if (startState == 0) {
            elEnabled.className = "gameNotVisible";
            elDisabled.className = "gameVisible";
        } else {
            elDisabled.className = "gameNotVisible";
            elEnabled.className = "gameVisible";
        }
    }
}

function toggleAllCategories() {
    el = document.getElementById("bb_all");
    if(!el) {
        return;
    }
    checked = el.checked;
    for (i in bbCategories) {
        el = document.getElementById("bb_C_id_" + i);
        if(!el) {
            continue;
        }
        el.checked = checked;
    }
    toggleState();
}

function countBack(q, sec) {
    var el = document.getElementById('countDown');
    var elDots = document.getElementById('gameDots');

    if (usrAnswers[q]) {
        return;
    }
    
    if (sec < 0) {
        el.innerHTML = ':0';
        usrAnswers[question] = -1;
        // incQuestion();
        classNameCor = 'gameOption' + bbAnswers[question];
        document.getElementById(classNameCor).className = 'gameOptionNumber-correct';
        document.getElementById('gameStatusWrong').className = 'gameVisible';

        classNameCont = 'bbCont' + question;
        document.getElementById(classNameCont).className = 'gameVisible';
        document.getElementById('gameDots').className = 'gameNotVisible';

        setTimeout("incQuestion()", mSecsWait);
        return;
    }

    el.innerHTML = ':' + sec;
    elDots.style.backgroundPosition = '0 -' + ((secsStart-sec)*cdOffset) + 'px';
    setTimeout("countBack(" + q + ", "+ (sec-1) + ")", 1000);
}

function incQuestion() {
    document.forms['scoreForm'].usrScore.value = score;
    if (question < totalBuzzbites) {
        if (question % numRefresh == 0) {
            question++;
            document.forms['scoreForm'].usrQuestion.value = question;
            document.forms['scoreForm'].pageActions.value = 'continue';
            document.forms['scoreForm'].submit();
            return;
        }
        
        classNameCont = 'bbCont' + question;
        document.getElementById(classNameCont).className = 'gameNotVisible';
        document.getElementById('gameDots').className = 'gameVisible';
        
        document.getElementById('gameStatusRight').className = 'gameNotVisible';
        document.getElementById('gameStatusWrong').className = 'gameNotVisible';

        question++;
        fillQuestion(question);
    } else {
        document.forms['scoreForm'].submit();
    }
}

function markAnswer(a) {
    if (a > 0 && !usrAnswers[question]) {
        usrAnswers[question] = a;
        
        classNameSel = 'gameOption' + a;
        classNameCor = 'gameOption' + bbAnswers[question];
        if (a == bbAnswers[question]) {
            document.getElementById(classNameSel).className = 'gameOptionNumber-correct';
            score++;
            document.getElementById('currentScore').innerHTML = score;
            document.getElementById('gameStatusRight').className = 'gameVisible';
        } else {
            document.getElementById(classNameSel).className = 'gameOptionNumber-wrong';
            document.getElementById(classNameCor).className = 'gameOptionNumber-correct';
            document.getElementById('gameStatusWrong').className = 'gameVisible';
        }
        classNameCont = 'bbCont' + question;
        document.getElementById(classNameCont).className = 'gameVisible';
        document.getElementById('gameDots').className = 'gameNotVisible';
        
        setTimeout("incQuestion()", mSecsWait);
    }
}

function fillQuestion(q) {
    var elQuestionNumberTop = document.getElementById('questionNumberTop');
    var elQuestionNumber = document.getElementById('gameQuestionNumber');
    var elQuestion = document.getElementById('gameQuestion');
    var elAnswers = document.getElementById('gameAnswers');
    var elAnswersNumber = document.getElementById('gameAnswersNumber');
    
    elQuestionNumberTop.innerHTML = elQuestionNumber.innerHTML = q;
    elQuestion.innerHTML = '<B>' + bbQuestions[q] + '</B>';
    var stringOptions = '';
    var stringOptionsNumber = '';
    for (row = 1; row < bbOptions[q].length; row++) {
        stringOptions += '<div class="gameOption" onclick="markAnswer(' + row + '); return false;">' + bbOptions[q][row] + '</div>';
        stringOptionsNumber += '<div class="gameOptionNumber" id="gameOption' + row + '" onclick="markAnswer(' + row + '); return false;">' + row + '</div>';
    }
    elAnswers.innerHTML = stringOptions;
    elAnswersNumber.innerHTML = stringOptionsNumber;
    
    countBack(q, secs);
    
    return true;
}
