﻿function SWCalendar() { }
SWCalendar.paintfunction;

SWCalendar.getCalendar = function (data, callb = SWOpties.getOpties, callb_name = 'SWOpties.getOpties') {
    SWCalendar.paintfunction = callb;

    let parts = data.dict.datum.split("-");
    let d = new Date(parts[0], parts[1] - 1, parts[2]).getMonth();

    let html = "";
    html += "<table class=\"calendar table\">";

    html += "<thead><tr>";
    html += "<th>" + SWCalendar.getPrevHtml() + "</th>";
    html += "<th class=\"text-center\" colspan=\"5\">" + SWCalendar.getMaandNaam(SWOpties.zoekdatum) + "</th>";
    html += "<th><div onclick=\"SWCalendar.getNextMonth()\" class=\"nav\"><i class=\"fa-solid fa-angle-right\"></i></div></th>";
    html += "</tr></thead>";

    html += "<tbody>";
    html += "<tr class=\"dagen\">";
    html += "<td>zo</td>";
    html += "<td>ma</td>";
    html += "<td>di</td>";
    html += "<td>wo</td>";
    html += "<td>do</td>";
    html += "<td>vr</td>";
    html += "<td>za</td>";
    html += "</tr>";

    html += "<tr>";

    var nu = new Date().getTime();
    for (i = 0; i < data.data.length; i++) {
        if (i != 0 && i != data.data.length && i % 7 == 0) {
            html += "</tr><tr>";
        }

        var style = "open";
        var beschikbaar = true;

        //Check of datum niet gesloten of bezet is
        if (!data.data[i].open || data.data[i].bezet) {
            style = "gesloten";
            beschikbaar = false;
        }

        //Check of datum groter is dan vandaag
        var dag = Date.parse(data.data[i].datum + "T23:59:59");
        if (dag < nu) {
            style = "gesloten";
            beschikbaar = false;
        }

        //Check of datum in volgende maand valt
        let dd = new Date(data.data[i].datum).getMonth();
        if (dd > d) {
            style += " nextM";
        }

        //Check of datum in vorige maand valt
        dd = new Date(data.data[i].datum).getMonth();
        if (dd < d) {
            style += " prevM";
        }

        let datum1parts = data.data[i].datum.split("-");
        let datum2parts = data.dict.datum.split("-");

        //Check welke dag op wordt gezocht
        if (new Date(datum1parts[0], datum1parts[1] - 1, datum1parts[2]).getTime() == new Date(datum2parts[0], datum2parts[1] - 1, datum2parts[2]).getTime()) {
            style += " selected";
            document.getElementById("hidden-datum").value = data.data[i].datum;
        }

        html += "<td class=\"" + style + "\">";

        if (beschikbaar) {
            html += `<div onclick="${callb_name}(${parseInt(SWPortalData.data.user_id)},'${data.data[i].datum}')">`;
        }

        html += data.data[i].dagVanDeMaand;

        if (beschikbaar) {
            html += "</div>";
        }

        html += "</td>";
    }

    html += "</tr>";
    html += "</tbody></table>";

    document.getElementById("calendar-holder").innerHTML = html;
}

SWCalendar.getMaandNaam = function (datum) {
    let sd = datum.split("-");

    let d = sd[1] - 1;
    let j = sd[0];

    var monthNames = ["Januari", "Februari", "Maart", "April", "Mei", "Juni", "Juli", "Augustus", "September", "Oktober", "November", "December"];

    return monthNames[d] + " " + j;
}

SWCalendar.getPrevMonth = function () {
    let datum = new Date(document.getElementById("hidden-datum").value.split("-").join("/"));

    let jaar = datum.getFullYear();
    let maand = datum.getMonth();

    maand = maand - 1;

    if (maand < 0) {
        jaar = jaar - 1;
        maand = 11;
    }

    SWCalendar.paintfunction(parseInt(SWPortalData.data.user_id), jaar + "-" + (maand + 1) + "-1")
}

SWCalendar.getPrevHtml = function () {
    let html = "";

    let zdparts = SWOpties.zoekdatum.split("-");
    let zd = new Date(zdparts[0], zdparts[1] - 1, zdparts[2]);
    let nu = new Date();

    let zjd = zd.getFullYear();
    let zmd = zd.getMonth();

    let nuj = nu.getFullYear();
    let num = nu.getMonth();

    if ((zmd > num && nuj == zjd) || (zmd < num && nuj < zjd) || (zmd >= num && nuj < zjd)) {
        html += "<div onclick=\"SWCalendar.getPrevMonth()\" class=\"nav\"><i class=\"fa-solid fa-angle-left\"></i></div>";
    }

    return html;
}

SWCalendar.getNextMonth = function () {
    let sd = document.getElementById("hidden-datum").value.split("-");

    let jaar = sd[0];
    let maand = sd[1] - 1;
    maand = maand + 1;

    if (maand > 11) {
        jaar = parseInt(jaar) + 1;
        maand = 0;
    }

    SWCalendar.paintfunction(parseInt(SWPortalData.data.user_id), jaar + "-" + (maand + 1) + "-1")
}