function randint (from, to) {
  return from + Math.floor((Math.random() * (to-from)));
}

function choice (arr) {
  let ri = randint(0, arr.length-1);
  let ret = arr[ri];
  arr.splice(ri, 1);
  return ret;
}

function make_phrase (nn, terms) {
  nn.querySelector(".actor").innerHTML = choice(terms['actor']);
  nn.querySelector(".action").innerHTML = choice(terms['action']);
  if (randint(0, 2) == 0) {
    nn.querySelector(".prefix").innerHTML = choice(terms['prefix'])+'-';
  } else {
    nn.querySelector(".prefix").remove();
  }
  nn.querySelector(".sort").innerHTML = choice(terms['sort']);
  nn.querySelector(".media").innerHTML = choice(terms['media']);  
}

const sleep = delaysecs => new Promise(resolve => setTimeout(resolve, delaysecs*1000));

let limit = 25;

async function make_phrases () {
  let terms = await (await fetch("terms.json")).json();
  // console.log("terms", terms);
  let call = document.querySelector("#call");
  let template = call.querySelector(".phrase");
  template.remove();
  let count = 0;
  while (true) {
    let nn = template.cloneNode(true);
    call.appendChild(nn);
    make_phrase(nn, terms);
    if (terms['actor'].length == 0 || terms['action'].length == 0 || terms['prefix'].length == 0 || terms['sort'].length == 0 || terms['media'].length == 0) {
      console.log("out of terms, stopping");
      break;
    }
    count += 1;
    if (limit > 0 && count>=limit) { break };
    await (sleep(1.0));
  }
}

make_phrases();

// fetch("terms.json")
//   .then(response => response.json())
//   .then(terms => {
//     console.log("terms", terms);
//     let call = document.querySelector("#call");
//     let template = call.querySelector(".phrase");
//     for (var i=0; i<20; i++) {
//       let nn = template.cloneNode(true);
//       call.appendChild(nn);   
//       nn.querySelector(".actor").innerHTML = choice(terms['actor']);
//       nn.querySelector(".action").innerHTML = choice(terms['action']);
//       if (randint(0, 2) == 0) {
//         nn.querySelector(".prefix").innerHTML = choice(terms['prefix']) + '-';
//       } else {
//         nn.querySelector(".prefix").remove();
//       }
//       nn.querySelector(".sort").innerHTML = choice(terms['sort']);
//       nn.querySelector(".media").innerHTML = choice(terms['media']);
//     }
//     template.style.display = "none";
//   });
