Better g-teacher

Adds some helpful features to the website.

// ==UserScript==
// @name         Better g-teacher
// @namespace    http://tampermonkey.net/
// @version      2024-09-26
// @description  Adds some helpful features to the website.
// @author       Msix29
// @match        https://g-teacher.com/courses/*/*
// @icon         https://www.google.com/s2/favicons?sz=64&domain=g-teacher.com
// @license      MIT
// @grant        none
// ==/UserScript==

(function () {
    'use strict';

    document.querySelector("#tutor-page-wrap .tutor-course-topic > .is-active")?.click();

    const today = new Date();
    const dd = String(today.getDate()).padStart(2, "0");
    const mm = String(today.getMonth() + 1).padStart(2, "0"); // January is 0
    const yyyy = today.getFullYear();
    const currentDate = `${dd}-${mm}-${yyyy}`;

    function parseDate(dateString) {
        const [day, month, year] = dateString.split("-").map(Number);

        return new Date(year, month - 1, day);
    }

    const titles = document.querySelectorAll(".tutor-course-single-sidebar-wrapper .tutor-accordion-item-header .tutor-course-topic-title");

    let closestBefore = null;
    let closestBeforeDate = null;
    let foundExact = false;

    for (let i = 0; i < titles.length; i++) {
        const title = titles[i];
        const text = title.textContent.trim();
        const match = text.match(/(\d{2})-(\d{2})-(\d{4})/);

        if (match) {
            const dateText = match[0];
            const date = parseDate(dateText);

            if (dateText === currentDate) {
                title.scrollIntoView({ behavior: "smooth", block: "center" });
                title.click();

                break;
            } else if (date < today) {
                closestBeforeDate = date;
                closestBefore = title;
            } else {
                closestBefore.scrollIntoView({ behavior: "smooth", block: "center" });
                closestBefore.click();

                break;
            }
        }
    }
})();