var resultSet = [];

var redParent = document.querySelector(".red .balls-wp");
var allRedItems = redParent.children;
var blueParent = document.querySelector(".blue .balls-wp");
var allBlueItems = blueParent.children;

function restore() {
  var str1 = "";
  var str2 = "";

  for (var i = 1; i <= 33; i++) {
    str1 += "<b>" + (i >= 10 ? i : "0" + i) + "</b>";
  }

  for (var j = 1; j <= 16; j++) {
    str2 += "<b>" + (j >= 10 ? j : "0" + j) + "</b>";
  }

  redParent.innerHTML = str1;
  blueParent.innerHTML = str2;
}

function randomFn() {
  var redBlockRandomNums = getRandomNums(33, 6).sort(function (a, b) {
    return parseInt(a) - parseInt(b);
  });
  var blueBlockRandomNums = getRandomNums(16, 1);
  var resultStr =
    redBlockRandomNums.join(",") + "|" + blueBlockRandomNums.join("");
  if (resultSet.includes(resultStr)) {
    randomFn();
    return;
  }
  resultSet.push(resultStr);
  restore();
  var selectedRedItems = [];
  var unselectedRedItems = [];

  for (var item of allRedItems) {
    var val = item.innerText;
    item.classList.remove("active");
    if (redBlockRandomNums.includes(val)) {
      item.classList.add("active");
      selectedRedItems.push(item);
    } else {
      unselectedRedItems.push(item);
    }
  }

  var selectedBlueItems = [];
  var unselectedBlueItems = [];

  for (var item of allBlueItems) {
    var val = item.innerText;
    item.classList.remove("active");
    if (blueBlockRandomNums.includes(val)) {
      item.classList.add("active");
      selectedBlueItems.push(item);
    } else {
      unselectedBlueItems.push(item);
    }
  }

  redParent.innerHTML = "";
  selectedRedItems = selectedRedItems.sort(function (first, last) {
    return first.innerText - last.innerText;
  });
  selectedRedItems.concat(unselectedRedItems).forEach(function (item) {
    redParent.appendChild(item);
  });

  blueParent.innerHTML = "";
  selectedBlueItems = selectedBlueItems.sort(function (first, last) {
    return first.innerText - last.innerText;
  });
  selectedBlueItems.concat(unselectedBlueItems).forEach(function (item) {
    blueParent.appendChild(item);
  });

  return redBlockRandomNums.join(",") + "|" + blueBlockRandomNums.join("");
}

function getRandomNums(base, numCount) {
  var existNums = [];

  while (existNums.length < numCount) {
    var num = Math.floor(Math.random() * base + 1);
    var fNum = num >= 10 ? String(num) : "0" + num;
    if (!existNums.includes(fNum)) {
      existNums.push(fNum);
    }
  }

  return existNums;
}