<!DOCTYPE html>
<html>
<head>
  <title>Input.js test page</title>
  <script type="text/javascript" src="input.js"></script>
  <script type="text/javascript">
    var gamepads = [];

    function connect(e) {
      var container = document.createElement("div");
      container.setAttribute("id", "gamepad" + e.gamepad.index);
      document.body.appendChild(container);

      try {
        var gamepad = new Input.Device(e.gamepad);
      } catch (e) {
        container.innerHTML = e;
        return;
      }
      gamepads[gamepad.index] = gamepad;

      document.getElementById("start").style.display = "none";

      var header = document.createElement("h2");
      header.appendChild(document.createTextNode("Gamepad: " + gamepad.id));
      container.appendChild(header);

      header = document.createElement("h3");
      header.appendChild(document.createTextNode("Axes"));
      container.appendChild(header);

      var ul = document.createElement("ul");
      var iter = Object.keys(gamepad.axes);
      for (var i in iter) {
        var li = document.createElement("li");
        var prog = document.createElement("progress");
        prog.setAttribute("max", "2");
        prog.setAttribute("value", "1");
        prog.setAttribute("id", gamepad.id + "-" + iter[i]);
        li.appendChild(document.createTextNode(iter[i]));
        li.appendChild(prog);
        ul.appendChild(li);
      }
      container.appendChild(ul);

      header = document.createElement("h3");
      header.appendChild(document.createTextNode("Buttons"));
      container.appendChild(header);

      ul = document.createElement("ul");
      iter = Object.keys(gamepad.buttons);
      for (var i in Object.keys(gamepad.buttons)) {
        li = document.createElement("li");
        prog = document.createElement("progress");
        prog.setAttribute("max", "1");
        prog.setAttribute("value", "0");
        prog.setAttribute("id", gamepad.id + "-" + iter[i]);
        li.appendChild(document.createTextNode(iter[i]));
        li.appendChild(prog);
        ul.appendChild(li);
      }
      container.appendChild(ul);

      window.mozRequestAnimationFrame(updateStatus);
    }
    
    function updateStatus(e) {
      for (var g in gamepads) {
        var gamepad = gamepads[g];
        var id = gamepad.id + "-";

        var iter = Object.keys(gamepad.axes);
        for (var i in iter) {
          document.getElementById(id + iter[i]).setAttribute("value", gamepad.axes[iter[i]] + 1);
        }

        iter = Object.keys(gamepad.buttons);
        for (var i in iter) {
          document.getElementById(id + iter[i]).setAttribute("value", gamepad.buttons[iter[i]]);
        }
      }

      window.mozRequestAnimationFrame(updateStatus);
    }
    
    function disconnect(e) {
      var d = document.getElementById("gamepad" + e.gamepad.index);
      document.body.removeChild(d);
      delete joys[e.gamepad.index];
    }

    window.addEventListener("MozGamepadConnected", connect);
    window.addEventListener("MozGamepadDiconnected", disconnect);
  </script>
</head>
<body>
  <h1 id="start">Press a button on your controller to start</h1>
</body>
</html>