Greasy Fork is available in English.

EZ (PRE UPDATE VER)

Dò đáp án đúng...

このスクリプトの質問や評価の投稿はこちら通報はこちらへお寄せください。
// ==UserScript==
// @name         EZ (PRE UPDATE VER)
// @namespace    http://tampermonkey.net/
// @version      4.7
// @description  Dò đáp án đúng...
// @author       V Quan Người đã test: H Nam, K Ngoc, ...
// @match        https://lms360.edu.vn/*
// @grant        none
// ==/UserScript==

(async function() {
  'use strict';

  // URL meta.js chứa thông tin cập nhật
  const updateURL = 'https://update.greasyfork.org/scripts/513239/D%C3%B2%20%C4%90%C3%A1p%20%C3%81n%20LMS%20360%20%28UPDATE%20VER%29.meta.js';
  const currentVersion = '4.7'; // Phiên bản hiện tại của script

  // Gọi hàm kiểm tra cập nhật ngay khi script được chạy
  await checkForUpdates();

  // Hàm kiểm tra cập nhật
  async function checkForUpdates() {
    let hasUpdate = false;

    try {
      const response = await fetch(updateURL, {
        headers: { 'Content-Type': 'text/plain' }
      });

      if (!response.ok) throw new Error('Không thể tải thông tin cập nhật');

      const data = await response.text();

      // Phân tích metadata để tìm phiên bản mới
      const versionMatch = data.match(/@version\s+([\d.]+)/);
      if (versionMatch && versionMatch[1]) {
        const latestVersion = versionMatch[1];

        // So sánh phiên bản hiện tại với phiên bản mới
        hasUpdate = compareVersions(currentVersion, latestVersion);

        if (hasUpdate) {
          showNotification(`<strong>Có bản cập nhật mới (v<strong>${latestVersion}</strong>)!</strong>`, 'success', true);
        } else {
          showNotification('<strong>Không có cập nhật mới</strong>', 'info', false);
        }
      }
    } catch (error) {
      console.error('Lỗi khi kiểm tra cập nhật:', error);
      showNotification('<strong>Lỗi khi kiểm tra cập nhật</strong>', 'error', false);
    }
  }

  // Hàm so sánh phiên bản
  function compareVersions(current, latest) {
    const currentParts = current.split('.').map(Number);
    const latestParts = latest.split('.').map(Number);

    for (let i = 0; i < Math.max(currentParts.length, latestParts.length); i++) {
      const curr = currentParts[i] || 0;
      const latest = latestParts[i] || 0;
      if (curr < latest) return true;
      if (curr > latest) return false;
    }
    return false;
  }

  // Hàm hiển thị thông báo
  function showNotification(message, type, showOkButton) {
    const notificationBox = document.createElement('div');
    notificationBox.className = 'notification';
    notificationBox.style.position = 'fixed';
    notificationBox.style.bottom = '70px';
    notificationBox.style.left = '-300px';
    notificationBox.style.padding = '10px';
    notificationBox.style.backgroundColor = 'white';
    notificationBox.style.border = '1px solid #ccc';
    notificationBox.style.borderRadius = '5px';
    notificationBox.style.display = 'flex';
    notificationBox.style.alignItems = 'center';
    notificationBox.style.boxShadow = '0 2px 10px rgba(0,0,0,0.1)';
    notificationBox.style.zIndex = '9999';
    notificationBox.style.transition = 'left 0.5s ease, opacity 0.5s ease';
    notificationBox.style.opacity = '1';

    const icon = document.createElement('div');
    icon.className = 'icon';
    const notificationText = document.createElement('div');
    notificationText.className = 'text';
    notificationText.innerHTML = message;

    // Thay đổi biểu tượng và màu sắc dựa trên loại thông báo
    if (type === 'success') {
      icon.innerHTML = '<img src="https://img.icons8.com/ios-filled/50/28a745/checkmark.png" class="icon">';
      notificationText.style.color = 'green';
    } else if (type === 'error') {
      icon.innerHTML = '<img src="https://img.icons8.com/ios-filled/50/FF0000/cancel.png" class="icon">';
      notificationText.style.color = 'red';
    } else if (type === 'info') {
      icon.innerHTML = '<img src="https://cdn.iconscout.com/icon/free/png-512/free-info-icon-download-in-svg-png-gif-file-formats--information-data-user-interface-pack-icons-1604565.png?f=webp&w=256" width="30" height="30">';
      notificationText.style.color = 'blue';
    }

    icon.style.marginRight = '10px';
    notificationBox.appendChild(icon);
    notificationBox.appendChild(notificationText);

    // Tạo nút "Ok" chỉ khi có bản cập nhật mới
    if (showOkButton) {
      const okButton = document.createElement('button');
      okButton.textContent = 'Ok';
      okButton.style.marginLeft = '10px';
      okButton.style.padding = '5px 10px';
      okButton.style.border = 'none';
      okButton.style.borderRadius = '5px';
      okButton.style.backgroundColor = '#28a745';
      okButton.style.color = 'white';
      okButton.style.cursor = 'pointer';

      // Thêm sự kiện click cho nút "Ok"
      okButton.onclick = () => {
        window.open('https://update.greasyfork.org/scripts/513239/EZ%20%28PRE%20UPDATE%20VER%29.user.js');
        document.body.removeChild(notificationBox); // Đóng thông báo
      };

      notificationBox.appendChild(okButton);
    }

    document.body.appendChild(notificationBox);

    // Hiệu ứng slide vào màn hình
    setTimeout(() => {
      notificationBox.style.left = '10px';
    }, 100);

    // Tự động ẩn sau 3 giây
    setTimeout(() => {
      notificationBox.style.opacity = '0';
      notificationBox.style.left = '-300px';
      setTimeout(() => {
        document.body.removeChild(notificationBox);
      }, 500);
    }, 3000);
  }

})();

    // Tạo nút để mở cửa sổ nhỏ
    const button = document.createElement("button");
    button.innerHTML = "Open Poe.com";
    button.style.position = "fixed";
    button.style.bottom = "20px";
    button.style.right = "20px";
    button.style.padding = "10px 20px";
    button.style.backgroundColor = "#007bff";
    button.style.color = "#fff";
    button.style.border = "none";
    button.style.borderRadius = "5px";
    button.style.cursor = "pointer";
    button.style.zIndex = "9999";

    button.onclick = function() {
        // Mở cửa sổ nhỏ với kích thước 800x600
        window.open("https://poe.com/", "Poe", "width=800,height=600");
    };

    // Thêm nút vào trang
    document.body.appendChild(button);


(function() {
    'use strict';

    let hasCopied = false; // Biến kiểm tra xem đã dò đáp án chưa
    let currentQuestion = ""; // Biến để lưu câu hỏi hiện tại
    let isPanelOpen = true; // Biến kiểm soát mở/đóng bảng
    let autoCheckEnabled = false; // Biến kiểm soát tự động dò đáp án

// Hàm để lấy tên người dùng
function getUserName() {
    const userNameElement = document.querySelector("#root > div > div.gradient-9.fixed.top-0.iw-full.z-full > div.hidden.lg\\:block.iw-full > div > div.grow.flex.justify-between.items-center.ipr-30.ipy-12 > div.flex.items-center.gap-2 > div.relative.nav-user > div.relative > div.flex.flex-column.items-start.justify-content-center.ih-45.ibg-0d6.itext-13.itext-light.ipy-9.ipx-30.rounded-tr-20.rounded-br-20 > span.text-light.font-bold");

    // Kiểm tra xem phần tử có chứa chữ không
    return userNameElement && userNameElement.innerText.trim() ? userNameElement.innerText.trim() : 'Người dùng';
}

// Tạo ô thông báo tên
const greetingBox = document.createElement('div');
greetingBox.style.position = 'fixed';
greetingBox.style.left = '50%'; // Đặt ở giữa ngang
greetingBox.style.bottom = '60px'; // Cách đáy 60px để có chỗ cho ô gradient
greetingBox.style.transform = 'translateX(-50%)'; // Giữa theo chiều ngang
greetingBox.style.padding = '10px 20px'; // Thêm padding cho ô
greetingBox.style.background = 'green'; // Nền màu xanh
greetingBox.style.borderRadius = '5px';
greetingBox.style.display = 'flex';
greetingBox.style.alignItems = 'center';
greetingBox.style.boxShadow = '0 2px 10px rgba(0,0,0,0.1)';
greetingBox.style.zIndex = '9999';
greetingBox.style.transition = 'bottom 0.5s ease, opacity 0.5s ease'; // Hiệu ứng cho bottom và opacity
greetingBox.style.opacity = '1';

// Thêm nội dung thông báo tên
const userName = getUserName();
const greetingText = document.createElement('span');
greetingText.innerHTML = `<strong>Xin chào bạn ${userName}!</strong>`; // Sử dụng thẻ strong để in đậm
greetingText.style.color = 'white'; // Màu chữ đen

// Thêm phần tử vào ô thông báo tên
greetingBox.appendChild(greetingText);

// Thêm ô thông báo vào body tên
document.body.appendChild(greetingBox);

// Hiệu ứng mở đầu: trượt ra
setTimeout(() => {
    greetingBox.style.bottom = '70px'; // Đưa ô vào vị trí hiển thị
}, 1000); // Thời gian chờ trước khi mở

// Tự động ẩn ô thông báo sau 3 giây
setTimeout(() => {
    greetingBox.style.opacity = '0'; // Giảm độ mờ
    greetingBox.style.bottom = '-100px'; // Trượt vào
    setTimeout(() => {
        document.body.removeChild(greetingBox);
    }, 500); // Thời gian để ẩn
}, 3000);


// Tạo ô thông báo thành công
const notificationBox = document.createElement('div');
notificationBox.style.position = 'fixed';
notificationBox.style.bottom = '10px';
notificationBox.style.left = '-300px'; // Bắt đầu ngoài màn hình bên trái
notificationBox.style.padding = '10px';
notificationBox.style.backgroundColor = 'white';
notificationBox.style.border = '1px solid #ccc';
notificationBox.style.borderRadius = '5px';
notificationBox.style.display = 'flex';
notificationBox.style.alignItems = 'center';
notificationBox.style.boxShadow = '0 2px 10px rgba(0,0,0,0.1)';
notificationBox.style.zIndex = '9999';
notificationBox.style.transition = 'left 0.5s ease, opacity 0.5s ease'; // Hiệu ứng cho left và opacity
notificationBox.style.opacity = '1';

// Thêm biểu tượng tick
const icon = document.createElement('img');
icon.src = 'https://img.icons8.com/ios-filled/50/28a745/checkmark.png';
icon.style.width = '20px';
icon.style.height = '20px';
icon.style.marginRight = '10px';

// Thêm nội dung thông báo
const notificationText = document.createElement('span');
notificationText.innerHTML = `<strong>Tải thành công!</strong>`;
notificationText.style.color = 'green';

// Thêm phần tử vào ô thông báo
notificationBox.appendChild(icon);
notificationBox.appendChild(notificationText);

// Thêm ô thông báo vào body
document.body.appendChild(notificationBox);

// Hiệu ứng mở đầu: trượt vào
setTimeout(() => {
    notificationBox.style.left = '10px'; // Đưa ô vào vị trí hiển thị
}, 100);

// Tự động ẩn ô thông báo sau 3 giây
setTimeout(() => {
    notificationBox.style.opacity = '0'; // Giảm độ mờ
    notificationBox.style.left = '-300px'; // Trượt ra
    setTimeout(() => {
        document.body.removeChild(notificationBox);
    }, 500);
}, 3000);


    // Hàm tạo tên ngẫu nhiên với tối đa 10 ký tự
    function generateRandomName() {
        const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';
        let name = '';
        for (let i = 0; i < 10; i++) {
            name += chars.charAt(Math.floor(Math.random() * chars.length));
        }
        return name;
    }

    // Lấy tên ngẫu nhiên
    const nameText = generateRandomName();

    // Tạo bảng thông báo
    const infoBox = document.createElement('div');
    infoBox.style.position = 'fixed';
    infoBox.style.top = '50px';
    infoBox.style.right = '10px';
    infoBox.style.padding = '10px';
    infoBox.style.backgroundColor = 'white';
    infoBox.style.border = '3px solid #003366';
    infoBox.style.borderRadius = '10px';
    infoBox.style.zIndex = '9999';
    infoBox.style.cursor = 'move';
    infoBox.style.width = '250px';

    // Nút "Đáp án (không thủ công)"
    const answerButton = document.createElement('button');
    answerButton.innerText = 'Đáp án (không thủ công)';
    answerButton.style.marginTop = '10px';
    answerButton.style.padding = '5px 10px';
    answerButton.style.borderRadius = '5px';
    answerButton.style.border = '2px solid #003366';
    answerButton.style.backgroundColor = 'white';
    answerButton.style.cursor = 'pointer';

    // Khung hiển thị trung tâm
    const centerBox = document.createElement('div');
    centerBox.style.position = 'fixed';
    centerBox.style.top = '50%';
    centerBox.style.left = '50%';
    centerBox.style.transform = 'translate(-50%, -50%)';
    centerBox.style.backgroundColor = 'white';
    centerBox.style.border = '3px solid #003366';
    centerBox.style.borderRadius = '10px';
    centerBox.style.padding = '20px';
    centerBox.style.zIndex = '10000';
    centerBox.style.display = 'none';

    // Nút "Công nghệ"
    const techButton = document.createElement('button');
    techButton.innerText = 'Công nghệ';
    techButton.style.marginRight = '10px';
    techButton.style.padding = '5px 10px';
    techButton.style.borderRadius = '5px';
    techButton.style.border = '2px solid #003366';
    techButton.style.cursor = 'pointer';

    // Nút "KHTN"
    const khtnButton = document.createElement('button');
    khtnButton.innerText = 'KHTN';
    khtnButton.style.padding = '5px 10px';
    khtnButton.style.borderRadius = '5px';
    khtnButton.style.border = '2px solid #003366';
    khtnButton.style.cursor = 'pointer';

// Tạo nút đóng (icon nhỏ) hình vuông
const closeButton = document.createElement('button');
closeButton.innerHTML = '&#x2715;'; // Biểu tượng đóng
closeButton.style.position = 'absolute';
closeButton.style.top = '5px';
closeButton.style.right = '5px';
closeButton.style.width = '23px'; // Đặt chiều rộng
closeButton.style.height = '23px'; // Đặt chiều cao
closeButton.style.borderRadius = '50%';
closeButton.style.border = 'none';
closeButton.style.backgroundColor = 'red';
closeButton.style.color = 'white';
closeButton.style.cursor = 'pointer';

    // Xử lý nút "Đáp án (không thủ công)"
    answerButton.onclick = () => {
        centerBox.style.display = 'block';
    };

    // Xử lý nút "Công nghệ"
        techButton.onclick = () => {
        const answerBox = document.createElement('div');
        answerBox.style.position = 'fixed';
        answerBox.style.top = '50%';
        answerBox.style.left = '50%';
        answerBox.style.transform = 'translate(-50%, -50%)';
        answerBox.style.backgroundColor = 'white';
        answerBox.style.border = '3px solid #003366';
        answerBox.style.borderRadius = '10px';
        answerBox.style.padding = '20px';
        answerBox.style.zIndex = '10001';

        answerBox.innerHTML = `
            <h3>ĐÉO CÓ</h3>
        `;

        const closeAnswerButton = closeButton.cloneNode(true);
        closeAnswerButton.onclick = () => {
            answerBox.remove();
        };
        answerBox.appendChild(closeAnswerButton);
        document.body.appendChild(answerBox);
    };

    // Xử lý nút "KHTN"
    khtnButton.onclick = () => {
        const answerBox = document.createElement('div');
        answerBox.style.position = 'fixed';
        answerBox.style.top = '50%';
        answerBox.style.left = '50%';
        answerBox.style.transform = 'translate(-50%, -50%)';
        answerBox.style.backgroundColor = 'white';
        answerBox.style.border = '3px solid #003366';
        answerBox.style.borderRadius = '10px';
        answerBox.style.padding = '20px';
        answerBox.style.zIndex = '10001';

        answerBox.innerHTML = `
            <h3>KHTN đáp án bài mới</h3>
            <p>Câu nối:</p>
            <p>+ Vật phản xạ âm tốt: gạch men, cửa kính</p>
            <p>+ Vật phản xạ âm kém: tấm xốp, thảm len</p>
            <p>Câu nối:</p>
            <p>+Hiện tượng sóng âm được đề cập tới trong video là hiện tượng (tiếng vang)</p>
        `;

        const closeAnswerButton = closeButton.cloneNode(true);
        closeAnswerButton.onclick = () => {
            answerBox.remove();
        };
        answerBox.appendChild(closeAnswerButton);
        document.body.appendChild(answerBox);
    };

    // Xử lý nút đóng
    closeButton.onclick = () => {
        centerBox.style.display = 'none';
    };

    // Kéo thả khung trung tâm
    let isDragging = false;
    let offsetX = 0;
    let offsetY = 0;

    centerBox.onmousedown = (e) => {
        isDragging = true;
        offsetX = e.clientX - centerBox.getBoundingClientRect().left;
        offsetY = e.clientY - centerBox.getBoundingClientRect().top;
        document.body.style.userSelect = 'none';
    };

    document.onmousemove = (e) => {
        if (isDragging) {
            centerBox.style.left = `${e.clientX - offsetX}px`;
            centerBox.style.top = `${e.clientY - offsetY}px`;
        }
    };

    document.onmouseup = () => {
        isDragging = false;
        document.body.style.userSelect = '';
    };

    // Thêm các nút vào khung trung tâm
    centerBox.appendChild(techButton);
    centerBox.appendChild(khtnButton);
    centerBox.appendChild(closeButton);

    // Thêm vào trang
    infoBox.appendChild(answerButton);
    document.body.appendChild(infoBox);
    document.body.appendChild(centerBox);

// Thêm sự kiện cho việc kéo bảng thông báo
let isDraggingInfoBox = false;
let infoBoxOffsetX, infoBoxOffsetY;

infoBox.addEventListener('mousedown', (e) => {
    isDraggingInfoBox = true;
    infoBoxOffsetX = e.clientX - infoBox.getBoundingClientRect().left;
    infoBoxOffsetY = e.clientY - infoBox.getBoundingClientRect().top;
    document.body.style.userSelect = 'none'; // Ngăn chặn chọn văn bản khi kéo
});

document.addEventListener('mousemove', (e) => {
    if (isDraggingInfoBox) {
        // Cập nhật vị trí bảng thông báo
        infoBox.style.left = `${e.clientX - infoBoxOffsetX}px`;
        infoBox.style.top = `${e.clientY - infoBoxOffsetY}px`;
        infoBox.style.right = 'auto'; // Bỏ giá trị right để có thể di chuyển tự do
    }
});

document.addEventListener('mouseup', () => {
    isDraggingInfoBox = false;
    document.body.style.userSelect = ''; // Cho phép chọn văn bản lại
});

// Tạo tiêu đề cho bảng với tên người dùng
const titleBar = document.createElement('div');
titleBar.style.fontWeight = 'bold';
titleBar.style.marginBottom = '10px';
titleBar.innerHTML = `Dò Đáp Án (<span style="color: black; font-weight: bold;">${nameText}</span>)`; // Chèn tên ngẫu nhiên màu đen vào

// Tạo nút Dò và hiển thị đáp án cạnh nhau
const checkButtonContainer = document.createElement('div');
checkButtonContainer.style.display = 'flex'; // Bố trí theo hàng ngang

// Nút dò
const checkButton = document.createElement('button');
checkButton.innerText = 'Dò';
checkButton.style.marginTop = '10px';
checkButton.style.padding = '5px 10px';
checkButton.style.cursor = 'pointer';
checkButton.style.border = '2px solid #003366'; // Viền màu xanh dương đậm
checkButton.style.borderRadius = '5px'; // Bo tròn góc
checkButton.style.backgroundColor = 'white'; // Nền trắng
checkButton.style.transition = 'border-color 0.3s, background-color 0.3s'; // Hiệu ứng chuyển màu viền và nền

// Hàm để đổi màu viền RGB
let hue = 0;
function changeBorderColor() {
    hue = (hue + 1) % 360; // Giới hạn giá trị hue từ 0 đến 360
    checkButton.style.borderColor = `hsl(${hue}, 100%, 50%)`; // Thiết lập màu viền
}

// Bắt đầu đổi màu viền liên tục
setInterval(changeBorderColor, 100); // Đổi màu viền mỗi 100ms

// Thêm hiệu ứng hover cho nút
checkButton.onmouseover = () => {
    checkButton.style.backgroundColor = '#f0f0f0'; // Màu nền khi hover
};

checkButton.onmouseout = () => {
    checkButton.style.backgroundColor = 'white'; // Màu nền lại khi không hover
};

// Thêm nút vào document
infoBox.appendChild(checkButton); // Giả sử bạn đã tạo infoBox trước đó

const answerDisplay = document.createElement('div');
answerDisplay.style.marginLeft = '10px'; // Khoảng cách giữa nút Dò và đáp án
answerDisplay.style.fontWeight = 'bold';
answerDisplay.style.color = 'green';

checkButtonContainer.appendChild(checkButton);
checkButtonContainer.appendChild(answerDisplay);

// Thêm bảng thông báo vào body
document.body.appendChild(infoBox);

// Tạo nút mở/đóng nằm bên ngoài bảng
const externalToggleButton = document.createElement('button');
externalToggleButton.innerText = 'Mở/Đóng Dò Đáp Án';
externalToggleButton.style.position = 'fixed';
externalToggleButton.style.top = '10px';
externalToggleButton.style.right = '10px';
externalToggleButton.style.padding = '5px 10px';
externalToggleButton.style.cursor = 'pointer';
externalToggleButton.style.zIndex = '10000';
externalToggleButton.style.border = '3px solid #003366'; // Viền màu xanh dương đậm
externalToggleButton.style.borderRadius = '5px'; // Bo tròn góc cho nút
externalToggleButton.style.backgroundColor = 'white'; // Nền trắng cho nút
externalToggleButton.style.transition = 'background-color 0.3s'; // Hiệu ứng chuyển màu nền khi hover

// Thêm hiệu ứng hover cho nút
externalToggleButton.onmouseover = () => {
    externalToggleButton.style.backgroundColor = '#f0f0f0'; // Màu nền khi hover
};
externalToggleButton.onmouseout = () => {
    externalToggleButton.style.backgroundColor = 'white'; // Màu nền lại khi không hover
};

// Cho phép di chuyển nút bằng chuột
let isDraggingButton = false;
let buttonOffsetX, buttonOffsetY;

externalToggleButton.addEventListener('mousedown', (e) => {
    isDraggingButton = true;
    buttonOffsetX = e.clientX - externalToggleButton.getBoundingClientRect().left;
    buttonOffsetY = e.clientY - externalToggleButton.getBoundingClientRect().top;
    document.body.style.userSelect = 'none'; // Ngăn chặn chọn văn bản khi kéo
});

document.addEventListener('mousemove', (e) => {
    if (isDraggingButton) {
        // Cập nhật vị trí nút
        externalToggleButton.style.left = `${e.clientX - buttonOffsetX}px`;
        externalToggleButton.style.top = `${e.clientY - buttonOffsetY}px`;
        externalToggleButton.style.right = 'auto'; // Bỏ giá trị right để có thể di chuyển tự do
    }
});

document.addEventListener('mouseup', () => {
    isDraggingButton = false;
    document.body.style.userSelect = ''; // Cho phép chọn văn bản lại
});

// Thêm nút vào body
document.body.appendChild(externalToggleButton);


    // Tạo checkbox tùy chọn tự động dò đáp án
    const autoCheckLabel = document.createElement('label');
    autoCheckLabel.style.display = 'block';
    autoCheckLabel.style.marginTop = '10px';
    autoCheckLabel.innerHTML = 'Tự động dò đáp án + AUTO'; // Thêm " + AUTO"

    const autoCheckBox = document.createElement('input');
    autoCheckBox.type = 'checkbox';
    autoCheckBox.style.marginLeft = '5px';

    autoCheckLabel.appendChild(autoCheckBox);

    // Hàm kiểm tra câu hỏi hiện tại để reset khi thay đổi
    function checkCurrentQuestion(iframeDoc) {
        const questionElement = iframeDoc.querySelector(".h5p-question-content");
        if (questionElement) {
            const newQuestion = questionElement.innerText || ""; // Lấy nội dung câu hỏi hiện tại
            if (newQuestion !== currentQuestion) {
                currentQuestion = newQuestion;
                hasCopied = false; // Reset biến khi câu hỏi thay đổi
                answerDisplay.innerHTML = ""; // Xóa nội dung hiển thị đáp án
            }
        }
    }

function findCorrectAnswer() {
    const iframe = document.querySelector('iframe'); // Select the first iframe on the page
    if (!iframe) {
        answerDisplay.innerHTML = 'Không tìm thấy iframe.'; // If iframe not found, show an error
        return;
    }

    const iframeDoc = iframe.contentDocument || iframe.contentWindow.document; // Access the iframe's content

    checkCurrentQuestion(iframeDoc); // Check if the question has changed

    if (hasCopied) return; // Prevent rechecking if the answer has already been found

    // Function to periodically check for the correct answer
    function periodicCheck() {
        let correctAnswer = iframeDoc.querySelector(
            "body > div > div > div > div.h5p-column-content.h5p-question.h5p-single-choice-set > div.h5p-question-content > div > div.h5p-sc-set.h5p-sc-animate > div.h5p-sc-slide.h5p-sc.h5p-sc-current-slide > ul > li.h5p-sc-alternative.h5p-sc-is-correct"
        );

        if (!correctAnswer) {
            // If the correct answer is not found, keep checking with other known paths
            correctAnswer = iframeDoc.querySelector(
                "body > div > div > div.h5p-question-content > div > div.h5p-sc-set.h5p-sc-animate > div.h5p-sc-slide.h5p-sc.h5p-sc-current-slide > ul > li.h5p-sc-alternative.h5p-sc-is-correct"
            );
        }

        if (!correctAnswer) {
            correctAnswer = iframeDoc.querySelector(
                "body > div > div > div.h5p-video-wrapper.h5p-video.hardware-accelerated > div > div > div > div > div.h5p-question-content > div > div.h5p-sc-set.h5p-sc-animate > div.h5p-sc-slide.h5p-sc.h5p-sc-current-slide > ul > li.h5p-sc-alternative.h5p-sc-is-correct"
            );
        }

        if (!correctAnswer) {
            correctAnswer = iframeDoc.querySelector(
                "body > div > div > div > div.h5p-column-content.h5p-question.h5p-single-choice-set > div.h5p-question-content > div > div.h5p-sc-set.h5p-sc-animate > div.h5p-sc-slide.h5p-sc.h5p-sc-current-slide > ul > li.h5p-sc-alternative.h5p-sc-is-correct"
            );
        }

        if (!correctAnswer) {
            correctAnswer = iframeDoc.querySelector(
                "body > div > div > div.h5p-question-content > div > div.h5p-sc-set.h5p-sc-animate > div.h5p-sc-slide.h5p-sc.h5p-sc-current-slide > ul > li.h5p-sc-alternative.h5p-sc-is-correct"
            );
        }

        if (!correctAnswer) {
            correctAnswer = iframeDoc.querySelector(
                "body > div > div > div.h5p-dialog-wrapper.h5p-ie-transparent-background > div > div.h5p-dialog-inner > div > div.h5p-question-content > div > div.h5p-sc-set.h5p-sc-animate > div.h5p-sc-slide.h5p-sc.h5p-sc-current-slide > ul > li.h5p-sc-alternative.h5p-sc-is-correct"
            );
        }

        if (!correctAnswer) {
            correctAnswer = iframeDoc.querySelector(
                "body > div > div > div.h5p-dialog-wrapper.h5p-ie-transparent-background > div > div.h5p-dialog-inner > div > div.h5p-question-content > div > div.h5p-sc-set.h5p-sc-animate > div.h5p-sc-slide.h5p-sc.h5p-sc-current-slide > ul > li.h5p-sc-alternative.h5p-sc-is-correct"
            );
        }

        if (!correctAnswer) {
            correctAnswer = iframeDoc.querySelector(
                "body > div > div > div.h5p-dialog-wrapper.h5p-ie-transparent-background > div > div.h5p-dialog-inner > div > div.h5p-question-content > div > div.h5p-sc-set.h5p-sc-animate > div.h5p-sc-slide.h5p-sc.h5p-sc-current-slide > ul > li.h5p-sc-alternative.h5p-sc-is-correct"
            );
        }

        if (correctAnswer) {
            const answerText = correctAnswer.querySelector('.h5p-sc-label, .h5p-true-false-answer.correct')?.innerText || '';

            if (autoCheckEnabled) {
                correctAnswer.click(); // Auto-select the correct answer if the auto-check is enabled
            }

            // Check if there's an image associated with the answer
            const imgElement = correctAnswer.querySelector('img');
            if (imgElement) {
                const imgSrc = imgElement.src;

                if (imgSrc.startsWith('data:image/svg+xml')) {
                    const svgImage = document.createElement('img');
                    svgImage.src = imgSrc;
                    svgImage.style.maxWidth = '50px'; // Adjust the max width of the image
                    svgImage.style.marginLeft = '10px'; // Add some margin between the text and image

                    const textNode = document.createTextNode(`Đáp án: ${answerText} - Hình ảnh: `);
                    answerDisplay.appendChild(textNode);
                    answerDisplay.appendChild(svgImage);
                } else {
                    answerDisplay.innerHTML = `Đáp án: ${answerText} - Ảnh không phải SVG.`;
                }
            } else {
                answerDisplay.innerHTML = `Đáp án: ${answerText}`; // Display the correct answer
            }

            hasCopied = true; // Mark as answer found
        } else {
            answerDisplay.innerHTML = 'Không tìm thấy đáp án. Tiếp tục dò...'; // Display that it's still searching
            setTimeout(periodicCheck, 1000); // Retry after 1 second if the answer isn't found
        }
    }

    // Start checking for the correct answer periodically
    periodicCheck();
}



    // Khi nhấn nút Dò, thực hiện tìm kiếm đáp án
    checkButton.onclick = findCorrectAnswer;

    // Khi nhấn nút mở/đóng bảng
    externalToggleButton.onclick = function() {
        isPanelOpen = !isPanelOpen;
        if (isPanelOpen) {
            infoBox.style.maxHeight = '500px'; // Mở bảng
            infoBox.style.opacity = '1';
        } else {
            infoBox.style.maxHeight = '0'; // Đóng bảng
            infoBox.style.opacity = '0';
        }
    };

// Khi nhấn checkbox tự động dò đáp án
autoCheckBox.onchange = function() {
    autoCheckEnabled = autoCheckBox.checked; // Cập nhật trạng thái tự động dò
    if (autoCheckEnabled) {
        // Tự động dò nếu tùy chọn được bật
        const autoCheckInterval = setInterval(findCorrectAnswer, 1000); // Dò lại sau mỗi giây

        // Dừng tự động dò khi tắt checkbox
        autoCheckBox.onchange = function() {
            autoCheckEnabled = autoCheckBox.checked; // Cập nhật trạng thái tự động dò
            if (!autoCheckEnabled) {
                clearInterval(autoCheckInterval); // Dừng việc dò
            }
        };
    }
};


    titleBar.onmousedown = function(e) {
        isDragging = true;
        offsetX = e.clientX - infoBox.getBoundingClientRect().left;
        offsetY = e.clientY - infoBox.getBoundingClientRect().top;
    };

    document.onmousemove = function(e) {
        if (isDragging) {
            infoBox.style.left = `${e.clientX - offsetX}px`;
            infoBox.style.top = `${e.clientY - offsetY}px`;
        }
    };

    document.onmouseup = function() {
        isDragging = false;
    };

    // Thêm các phần tử vào trang
    infoBox.appendChild(titleBar);
    infoBox.appendChild(checkButtonContainer);
    infoBox.appendChild(autoCheckLabel);
    document.body.appendChild(infoBox);
    document.body.appendChild(externalToggleButton);
})();