<script lang="text/javascript">
  let host = "{{ .Host }}";
  let jsonObj = "{{ .JSON }}";
  let data = JSON.parse(jsonObj);
  let tool = "curl -q -LSsf";
  let commandBox, widgetBox, compositePath, commandStr;
  let path
  let ipQuery, portQuery
  let ipCheckBox, portCheckBox, portInput
  let ip = ''

  window.onload = (event) => {
    commandBox = document.getElementById('command');
    widgetBox = document.getElementById('output');
    ipCheckBox = document.getElementById('ipCheckBox')
    portCheckBox = document.getElementById('portCheckBox')
    portInput = document.getElementById('portInput')
    reset()
    setcommdStr()
    changeInput("ip")
  }

  function reset() {
    path = '';
    ipQuery = '';
    portQuery = '';
  }

  function setcommdStr() {
    compositePath = `${path}${portQuery}${ipQuery}`;
    commandStr = `${tool} ${host}/${compositePath}`;
    commandBox.innerText = commandStr;
  }

  function changeInput(input, button) {
    path = input
    portQuery = ""
    portInput.classList.add("hidden");
    switch (path) {
      case "json":
        output.innerText = jsonObj
        break
      case "country-iso":
        output.innerText = data["country_iso"]
        break
      case "port":
        portInput.classList.remove("hidden");
        path = "port";
        output.innerText = "{}";
        let currentPort = document.querySelector("#portInput").value;
        updatePort(currentPort);
        break
      case "ip":
        output.innerText = data["ip"]
        path = ""
        break
      default:
        output.innerText = data[path]
    }
    setcommdStr();

    // set button selected
    if (button) {
      allButtons = document.querySelectorAll(('button.selected'));
      allButtons.forEach((btn) => { btn.classList.remove("selected") })

      button.classList.add("selected");
    }
  }

  function navigate(event) {
    console.log("navigate", compositePath)
    window.location = compositePath
  }

  function updatePort(value) {
    port = value
    portQuery = `/${port}`
    setcommdStr()
  }

  function updateIP(value) {
    ip = value
    ipQuery = `?ip=${ip}`;
    setcommdStr()
    changeInput("ip", null)
  }
</script>