const replacements = new Map();
replacements.set(/<imp>([^<]*)<r>/g, function (content) {
    return `<span class="imp">${content}</span>`;
});
replacements.set(/<item>([^<]*)<r>/g, function (content) {
    return `<span class="item">${content}</span>`;
});
replacements.set(/<n>/g, function (_content) {
    return "<br>";
});
replacements.set(/<i>([^<]*)<r>/g, function (content) {
    return `<em>${content}</em>`;
});
replacements.set(/<tifisgrin>([^<]*)<r>/g, function (content) {
    return `<span class="tifisgrin">${content}</span>`;
});

$.ajax({
    url: "https://cdn.jsdelivr.net/gh/Ellpeck/ActuallyAdditions@1.12.2/src/main/resources/assets/actuallyadditions/lang/en_US.lang",
    cache: false,
    success: populateManual
});

function populateManual(lang) {
    let startIndex = lang.indexOf("#Booklet Chapters");
    let data = lang.substring(startIndex + 18);

    let entries = $("#entries");
    let sidebar = $("#sidebar");

    for (let topic of data.split("\n\n")) {
        let lines = topic.split("\n");
        let t = '<div class="entry rounded">';
        // first line is name
        let name = lines[0].substring(lines[0].indexOf("=") + 1);
        let id = lines[0].match(/chapter\.([^\.]*)\.name/)[1];
        sidebar.append(`<a href=#${id}>${name}</a>`);
        t += `<a class="anchor" id="${id}"></a>`;
        t += `<h1>${name}</h1>`;
        // following lines are content
        for (let i = 1; i < lines.length; i++) {
            let text = lines[i].substring(lines[i].indexOf("=") + 1);
            t += `<p>${replaceFormatting(text)}</p>`;
        }
        t += "</div>";
        entries.append(t);
    }

    sidebar.append("<hr>");
    sidebar.append(`<a href="https://ellpeck.de">Main Site</a>`);
    sidebar.append(`<a href="https://ellpeck.de/impressum">Impressum</a>`);
    sidebar.append(`<a href="https://ellpeck.de/privacy">Privacy</a>`);
    sidebar.append(`<a href="https://git.ellpeck.de/Ellpeck/Web">&copy; Ellpeck</a>`);
    sidebar.append("<hr>");

    forceToAnchor();
}

function replaceFormatting(text) {
    for (let [k, v] of replacements.entries()) {
        const finalV = v;
        text = text.replace(k, function (_substring, group) {
            return finalV(group);
        });
    }
    return text;
}