function createTable(name, headerData, tableData) {
    var table = document.getElementById("table");
    var tableHead = document.getElementById("thead");
    var tableBody = document.getElementById("tbody");
    var tableFooter = document.getElementById("tfoot");
  
    header = headerData;
  
    headerData.forEach(function(rowData) {
      var row = document.createElement("tr");
      var title = document.createElement("th");
      title.appendChild(document.createTextNode(name));
      
      var c = 0;
      rowData.forEach(function(cellData) {
        var cell = document.createElement("th");
        cell.appendChild(document.createTextNode(cellData));
        cell.style.textAlign = "center";
        row.appendChild(cell);
        c++;
      });
  
      title.colSpan = c;
      title.style.textAlign = "center";
      
      var footer = document.createElement("th");
      // var body = document.getElementsByTagName("body")[0];
      // body.appendChild(button);
      
      footer.appendChild(button);
      footer.colSpan = c;
      footer.style.textAlign = "center";
      
      tableHead.appendChild(title);
      tableHead.appendChild(row);
      
      tableFooter.appendChild(footer);
    });
  
    table.appendChild(tableHead);
  
    tableData.forEach(function(rowData) {
      var row = document.createElement("tr");
      var c = 0;
      rowData.forEach(function(cellData) {
        var cell = document.createElement("td");
        cell.appendChild(document.createTextNode(cellData));
        cell.style.textAlign = "center";
        row.appendChild(cell);
        if (c == 0) {
          idx.push(cellData);
          c++;
        }
      });
  
      tableBody.appendChild(row);
    });
  
    table.appendChild(tableBody);
    document.body.appendChild(table);
  }
  
  function rollOnTable(rollType) {
    var roll = Math.floor(Math.random() * rollType) + 1; // roll 1 - rollType
    var results = document.getElementById("results");
    results.innerHTML = "";
    var p = document.createElement("p");
  
    idx.forEach(function(rolls) {
      var range;
      if (rolls.indexOf("-") == -1) range = [rolls, rolls];
      else range = rolls.split("-");
  
      var msg;
      if (roll >= range[0] && roll <= range[1]) {
        msg = "Rolled (" + roll + ") for row " + rolls;
        p.appendChild(
          document.createTextNode(msg)
        );
        if (window.gamelog !== undefined)
            window.gamelog.addEntry(msg, "STORY");
      }
    });
    results.appendChild(p);
    document.body.appendChild(results);
  }
  
  function handleFileSelect(evt) {
    var files = evt.target.files; // FileList object
  
    // files is a FileList of File objects. List some properties.
    var output = [];
    for (var i = 0, f; (f = files[i]); i++) {
      output.push(
        "<li><strong>",
        escape(f.name),
        "</strong> (",
        f.type || "n/a",
        ") - ",
        f.size,
        " bytes, last modified: ",
        f.lastModifiedDate ? f.lastModifiedDate.toLocaleDateString() : "n/a",
        "</li>"
      );
    }
    document.getElementById("list").innerHTML =
      "<ul>" + output.join("") + "</ul>";
  }
  
  // document
  //   .getElementById("files")
  //   .addEventListener("change", handleFileSelect, false);
  
  var idx = [];
  var header = [];
  
  var button = document.createElement("button");
  button.innerHTML = "Roll D" + parts.rollType;
  
  button.addEventListener("click", function() {
    rollOnTable(parts.rollType);
  });
  
  createTable(parts.name, parts.data[0], parts.data[1]);