(function () {
    document.querySelectorAll('input.task-checkbox[data-task-index]').forEach(function (cb) {
        cb.addEventListener('change', function () {
            var idx = cb.dataset.taskIndex;
            var checked = cb.checked;
            cb.disabled = true;
            fetch(window.location.pathname + '?toggle=' + idx, {
                method: 'POST',
                headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
                body: 'checked=' + checked
            }).then(function (res) {
                if (!res.ok) {
                    cb.checked = !checked;
                    alert('Failed to save task state (' + res.status + ')');
                }
            }).catch(function () {
                cb.checked = !checked;
                alert('Failed to save task state');
            }).finally(function () {
                cb.disabled = false;
            });
        });
    });
})();
