const api_url =
  window.location.protocol +
  "//" +
  window.location.hostname +
  ":" +
  window.location.port;

const delay = (time) => {
  return new Promise((resolve) => setTimeout(resolve, time));
};

Object.prototype.disable = function () {
  var that = this;
  for (var i = 0, len = that.length; i < len; i++) {
    that[i].disabled = true;
  }
  return that;
};

Object.prototype.enable = function () {
  var that = this;
  for (var i = 0, len = that.length; i < len; i++) {
    that[i].disabled = false;
  }
  return that;
};

function init_main() {
  refresh_buttons();
}

function disable_automatic_control() {
  if (is_automatic_control) {
    document.getElementById("control-disabled").checked = true;
    document.body.classList.add("loading");

    fetch(api_url + "/control/disable", { method: "POST" }).then(
      async (response) => {
        let delayres = await delay(100);
        refresh_buttons();
      }
    );
  }
}

function enable_automatic_control() {
  if (!is_automatic_control) {
    document.getElementById("control-enabled").checked = true;
    document.body.classList.add("loading");
    fetch(api_url + "/control/enable", { method: "POST" }).then(
      async (response) => {
        let delayres = await delay(100);
        refresh_buttons();
      }
    );
  }
}

function update_control_buttons(data) {
  document.body.classList.remove("loading");
  console.log("got data");
  console.log(data);
  is_automatic_control = data.enabled;
  if (is_automatic_control) {
    document.getElementById("control-enabled").checked = true;
  } else {
    document.getElementById("control-disabled").checked = true;
  }
}

function refresh_buttons() {
  console.log("get data");
  console.log(api_url);
  fetch(api_url + "/control").then(async (response) => {
    console.log("got response");
    json = await response.json();
    console.log(json);
    update_control_buttons(json);
  });
}