$(function () {
    var base = document.getElementById("base-url").getAttribute("href").slice(0, -1);
    var tz = Intl.DateTimeFormat().resolvedOptions().timeZone;

    var currentPreviewHash = "";
    function updateCronPreview() {
        var schedule = $("#schedule").val();

        // Don't try preview with empty values, or if values have not changed
        if (!schedule || schedule == currentPreviewHash)
            return;

        // OK, we're good
        currentPreviewHash = schedule;
        $("#cron-preview-title").text("Updating...");

        var token = $('input[name=csrfmiddlewaretoken]').val();
        $.ajax({
            url: base + "/checks/cron_preview/",
            type: "post",
            headers: {"X-CSRFToken": token},
            data: {schedule: schedule, tz: tz},
            success: function(data) {
                if (schedule != currentPreviewHash) {
                    return;  // ignore stale results
                }

                $("#cron-preview" ).html(data);
            }
        });
    }

    $("#common-cron-expressions button").click(function() {
        var schedule = $(this).closest("tr").find("td:nth-child(2n)").text();
        $("#schedule").val(schedule);
        updateCronPreview();
    });

    $("#schedule").on("keyup", updateCronPreview);
    updateCronPreview();
});