var myTime;
var preTime;
var preData;
var rightAn = 0;
var wrongAn = 0;
var noAn = 0;

const toanRoiRac = ["ĐỒ THỊ", "ĐỆ QUY", "PHÉP TÍCH", "TUYẾN TÍNH", "MA TRẬN", "LOGIC"];
const coSoDuLieu = ["ĐẠI SỐ QUAN HỆ", "KHOÁ CHÍNH", "QUAN HỆ", "KHẢ CHUYỂN", "SUPER KEY", "DATABASE"];
const nhapMonLapTrinh = ["VÒNG LẬP", "ĐIỀU KIỆN", "NGOẠI LỆ", "KHAI BÁO", "Integer", "If Else"];
const phapLuatDaiCuong = ["TỘI PHẠM", "PHÁP LÝ", "HÀNH CHÍNH", "HÌNH SỰ", "HIẾN PHÁP", "NHÀ NƯỚC"];
const vatLyDaiCuong = ["ĐÀN HỒI", "TRỌNG LỰC", "ISSAC NEWTON", "PHẢN LỰC", "VẬN TỐC", "ÁP XUẤT"];
const danhNhanViet = ["HỒ CHÍ MINH", "QUANG TRUNG", "CAO THẮNG", "Vũ Trọng Phụng", "LÝ THƯƠNG KIỆT", "PHẠM XUÂN ẨN"];
const danhNhanNuocNgoai = ["Robert Cecil Martin", "Steve Job", "Mark Twain", "Đỗ Phủ", "Vladimir Ilyich Lenin", "Karl Marx"];

function getData() {

    var random = Math.round(Math.random() * 9);

    switch (random) {
        case 1:
            return toanRoiRac;
            break;
        case 2:
            return coSoDuLieu;
            break;
        case 3:
            return nhapMonLapTrinh;
            break;
        case 4:
            return phapLuatDaiCuong;
            break;
        case 5:
            return vatLyDaiCuong;
            break;
        case 6:
            return danhNhanViet;
            break;
        case 7:
            return danhNhanNuocNgoai;
            break;
        default:
            return nhapMonLapTrinh;
            break;
    }

}

function getName(data) {

    switch (data) {
        case toanRoiRac:
            return "Toán Rời Rạc";
            break;
        case coSoDuLieu:
            return "Cơ Sở Dữ Liệu";
            break;
        case nhapMonLapTrinh:
            return "Nhập Môn Lập Trình";
            break;
        case phapLuatDaiCuong:
            return "Pháp Luật Đại Cương";
            break;
        case vatLyDaiCuong:
            return "Vật Lý Đại Cương";
            break;
        case danhNhanViet:
            return "Danh Nhân Việt Nam";
            break;
        case danhNhanNuocNgoai:
            return "Danh Nhân Thế Giới";
            break;
        default:
            return "Nhập Môn Lập Trình";
            break;
    }
}

function showTheRule() {

    var rule = document.getElementsByClassName("text-center rule1");

    for (let i = 0; i < rule.length; i++) {

        rule[i].style.display = "block";

    }
}

function update() {

    if (f.key1.value == "r")
        rightAn++;
    else if (f.key1.value == "w")
        wrongAn++;
    else
        noAn++;

    if (f.key2.value == "r")
        rightAn++;
    else if (f.key2.value == "w")
        wrongAn++;
    else
        noAn++;

    if (f.key3.value == "r")
        rightAn++;
    else if (f.key3.value == "w")
        wrongAn++;
    else
        noAn++;

    if (f.key4.value == "r")
        rightAn++;
    else if (f.key4.value == "w")
        wrongAn++;
    else
        noAn++;

    if (f.key5.value == "r")
        rightAn++;
    else if (f.key5.value == "w")
        wrongAn++;
    else
        noAn++;

    if (f.key6.value == "r")
        rightAn++;
    else if (f.key6.value == "w")
        wrongAn++;
    else
        noAn++;

    document.getElementById("info").style.display = "block";

    document.getElementById("rightAn").innerHTML = rightAn;
    document.getElementById("wrongAn").innerHTML = wrongAn;
    document.getElementById("noAn").innerHTML = noAn;

    rightAn = 0;
    wrongAn = 0;
    noAn = 0;
    resetRadioCheck();
}

function resetRadioCheck() {

    var key1 = document.getElementsByName("key1");
    var key2 = document.getElementsByName("key2");
    var key3 = document.getElementsByName("key3");
    var key4 = document.getElementsByName("key4");
    var key5 = document.getElementsByName("key5");
    var key6 = document.getElementsByName("key6");

    for (let i = 0; i < 2; i++) {

        key1[i].checked = false;
        key2[i].checked = false;
        key3[i].checked = false;
        key4[i].checked = false;
        key5[i].checked = false;
        key6[i].checked = false;
    }
}

function isNullData(data) {

    for (let i = 0; i < data.length; i++) {
        if (data[i].innerHTML == "")
            return true;
    }
    return false;
}

function startGame() {

    var data;
    var keywordField = document.getElementsByClassName("text-sm keyword");

    resetRadioCheck();
    if (preData == null) {
        preData = getData();
        data = preData
    } else {
        data = getData();

    }

    if (data != preData) {
        preData = data;
    } else {
        return startGame();
    }


    for (let i = 0; i < keywordField.length; i++) {

        keywordField[i].innerHTML = data[i];

    }

    document.getElementById("topic").value = getName(data);


}

function showGame() {

    hideRuleAndShowRuleButton();

    document.getElementById("title").style.marginTop = "-150px";
    document.getElementById("showgame").style.display = "none";

    var play = document.getElementById("play").style.display = "flex";

}

function hideRuleAndShowRuleButton() {

    var rule = document.getElementsByClassName("text-center rule1");
    var ruleButton = document.getElementById("showrule").style.display = "none";
    for (let i = 0; i < rule.length; i++) {
        rule[i].style.display = "none";
    }
}

function stop() {
    clearTimeout(myTime);
    document.getElementById("go").style.display = "inline";
}

function resetTime() {

    document.getElementById("pause").style.display = "none";
    if (preTime == null) {
        preTime = document.getElementById("time-field").value;
    }

    stop();

    f_clock.time.value = preTime;

}

function start() {

    var keywordField = document.getElementsByClassName("text-sm keyword");
    document.getElementById("go").style.display = "none";
    document.getElementById("pause").style.display = "inline";

    if (preTime == null) {
        preTime = document.getElementById("time-field").value;
    }

    if (isNullData(keywordField)) {
        startGame();

    }


    var time = f_clock.time.value;

    var second = parseInt(time.substring(3, 5));
    var minutes = parseInt(time.substring(0, 2));


    if (second != 0) {

        second--;

        if (second < 10)
            if (minutes < 10)
                f_clock.time.value = "0" + minutes + ":0" + second;
            else
                f_clock.time.value = minutes + ":0" + second;
        else
        if (minutes < 10)
            f_clock.time.value = "0" + minutes + ":" + second;
        else

            f_clock.time.value = minutes + ":" + second;
    } else {

        minutes--;
        second = 59;
        if (minutes < 10)
            f_clock.time.value = "0" + minutes + ":" + second;
        else
            f_clock.time.value = minutes + ":" + second;
    }

    if (time == "00:00") {
        f_clock.time.value = "00:00";
        update();
    } else
        myTime = setTimeout(start, 1000);
}