git.sophuwu.com > mailboxxer   
              91
            
                 function ToggleSend() {
    let style = document.getElementById("sendframe").style;
    if (style.top !== "100%") {
        style.top = "100%";
    } else {
        style.top = "200%";
    }
}

function UtcToLocal(utcTime) {
    let date = new Date();
    date.setTime(Date.parse(utcTime));

    let minutes = date.getMinutes().toString().padStart(2, '0');
    let hours = date.getHours().toString().padStart(2, '0');
    let day = date.getDate().toString().padStart(2, '0');
    let month = (date.getMonth() + 1).toString().padStart(2, '0');
    let year = date.getFullYear();

    return `${hours}:${minutes} ${day}-${month}-${year}`;
}

function HtmlEscape(str) {
    return str.replaceAll("&", "&")
    .replaceAll("<", "&lt;")
    .replaceAll(">", "&gt;")
    .replaceAll("\"", "&quot;")
    .replaceAll("'", "&apos;")
    .replaceAll("{", "&#123;")
    .replaceAll("}", "&#125;");
}

function GetAddrUser(addr) {
    let name = addr.match(/"([^"]+)"/);
    if (name) {
        return name[1];
    }
    name = addr.match(/<([^>]+)>/);
    if (name) {
        return name[1];
    }
    return addr;
}

function OpenMail(id) {
    let frame = document.getElementById("contentframe");
    frame.style.visibility = "visible";
    frame.style.width = "100%";
    frame.src = "/open?id=" + id ;
}

async function SearchInbox() {
    document.getElementById("inboxframe").innerHTML = "";
    let q = document.getElementById("q").value;

    try {
        let response = await fetch("/search?q=" + q);
        if (!response.ok) throw new Error(JSON.stringify({code: response.status}));
        let result = await response.json();
        result["HtmlMetas"].forEach(element => {
            let date = UtcToLocal(element["Date"]);
            let subject = HtmlEscape(element["Subject"]);
            let to = HtmlEscape(GetAddrUser(element["To"]));
            let from = HtmlEscape(GetAddrUser(element["From"]));
            let id = element["Id"];
            let inbox = document.getElementById("inboxframe");
            inbox.innerHTML += `<div class="inbox-entry" onclick="OpenMail('${id}')">
                <div class="sidebyside"><p class="inbox-from">${from}</p><p class="inbox-to">${to}</p><p class="inbox-date">${date}</p></div>
                <p class="inbox-subject">${subject}</p>
                <hr></div>`;
        });
    } catch (errjson) {
        let err = JSON.parse(errjson.message);
        console.log(err);
        if (err.code === 404) document.getElementById("inboxframe").innerHTML = "<p>No results found.</p>";
        else document.getElementById("inboxframe").innerHTML = "<p>An error occurred.</p>";
    }
}

function pageUpOrDown(e) {
    let pf = document.getElementById("pageform");
    let v = parseInt(pf.value);
    if (e.innerHTML === "&lt;" || e.innerText === "<") {
        pf.value = (v-1).toString();
    } else if (e.innerHTML === "&gt;" || e.innerText === ">") {
        pf.value = (v+1).toString();
    } else {
        return;
    }
    pf.form.submit();
}