document.getElementsByTagName("legend")[0].innerText = browser.i18n.getMessage("serverSelection");
async function updateLink(name, url) {
    let link = new URL(url);
    let tabURL = await browser.tabs.query({currentWindow: true, active: true}).then(tabs => tabs[0].url);
    link.search = new URL(tabURL).search;
    let a = document.getElementsByTagName("a")[0];
    a.href = link.toString();
    a.innerText = browser.i18n.getMessage("openCurrentPageOnServer") + `'${name}'`;
}

async function load(qualifiedName, value) {
    let serversList = await fetch(browser.runtime.getURL("servers.json")).then((response) => response.json()).then((data) => data["servers"]);
    let preferredServer = await browser.storage.sync.get('preferredServer').then(item => item.preferredServer);
    if (typeof preferredServer === "undefined" || !preferredServer.hasOwnProperty("url")) preferredServer =  serversList[0];
    for (let i = 0; i < serversList.length; i++) {
        let div = document.createElement("div");
        let input = document.createElement("input");
        input.type = "radio";
        input.id = serversList[i].url;
        input.name = "server";
        input.value = serversList[i].name;
        if (preferredServer.url === serversList[i].url) input.checked = true;
        input.addEventListener("click", saveServer);
        div.appendChild(input);
        let label = document.createElement("label");
        label.for = serversList[i].name;
        label.innerText = serversList[i].name;
        div.appendChild(label);
        document.getElementById("servers").appendChild(div);
    }
    updateLink(preferredServer.name, preferredServer.url);
}
load();
function saveServer(e) {
    browser.storage.sync.set({ preferredServer: { name: e.target.value, url: e.target.id } });
    updateLink(e.target.value, e.target.id);
}