// Helper functions
var sortedData;

const buildTableWithApi = (data) => {
  const table = JSON.parse(data.target.response);
  window.buildTable(table.products);
}

const resetForm = () => {
  const form = document.getElementsByClassName('search-form')[0];
  form.reset();
};

const sortDataAsc = (key, data) => {
  sortedData = data.concat().sort( (a,b) => {
    if (a[key] > b[key]) {
      return 1;
    }
    if (a[key] < b[key]) {
      return -1;
    }
    return 0;
  });
  return sortedData;
};

const sortDataDesc = (key, data) => {
  sortedData = data.concat().sort( (a,b) => {
    if (a[key] < b[key]) {
      return 1;
    }
    if (a[key] > b[key]) {
      return -1;
    }
    return 0;
  });
  return sortedData;
};

const initPage1Button = () => {
  const allPageButtons = document.getElementsByClassName('table-controls-pages');
  const allPageButtonsLength = allPageButtons.length;
  for (let i = 0; i < allPageButtonsLength; i++) {
    allPageButtons[i].classList.remove('table-controls-pages--active');
  }
  const page1Button = document.getElementsByClassName('page-1')[0];
  page1Button.classList.add('table-controls-pages--active');
};

const hidePreviousAndNextButtons = (pageNumber, buttonsLength) => {
  const previousButton = document.getElementsByClassName('table-controls-previous')[0];
  const nextButton = document.getElementsByClassName('table-controls-next')[0];

  if (pageNumber === '1') {
    previousButton.style.visibility = 'hidden';
  } else {
    previousButton.style.visibility = 'visible';
  }

  if (pageNumber === buttonsLength.toString()) {
    nextButton.style.visibility = 'hidden';
  } else {
    nextButton.style.visibility = 'visible';
  }
};

const goToPreviousPage = (ev) => {
  resetForm();
  const activePage = document.getElementsByClassName('table-controls-pages--active')[0].innerHTML;
  const previousPage = document.getElementsByClassName(`page-${activePage-1}`)[0];
  previousPage.click();
};

const goToNextPage = (ev) => {
  resetForm();
  let activePage = document.getElementsByClassName('table-controls-pages--active')[0].innerHTML;
  activePage = parseInt(activePage);
  const nextPage = document.getElementsByClassName(`page-${activePage+1}`)[0];
  nextPage.click();
};