'use strict';

// DIALOG-FILE - Old version https://resumeperk.com/examples OUR SAMPLES pdf viewer
(function () {
  var body = document.body;
  var overlay = body.querySelector('.overlay');
  if (!overlay) {
    return false;
  }
  var dialog = overlay.querySelector('.dialog-file');
  var dialogCloseBtn = dialog.querySelector('.dialog-file__close');
  var examples = document.querySelectorAll('.example__content');
  var dialogTitle = dialog.querySelector('.dialog-file__title');
  var dialogFile = dialog.querySelector('.dialog-file__file');
  var dialogVersionBtns = dialog.querySelectorAll('.dialog-file__btn-version');
  var focusedElBeforeOpen;

  dialogCloseBtn.addEventListener('click', function () {
    closeDialog();
  });

  overlay.addEventListener('click', function (evt) {
    if (evt.target === overlay) {
      closeDialog();
    }
  });

  document.addEventListener('keydown', function (evt) {
    handleKeyDown(evt);
  });

  for (var i = 0; i < examples.length; i++) {
    examples[i].addEventListener('click', function (evt) {
      if (evt.target.classList.contains('example__button')) {
        setDialogData(evt);
      }
    });
  }

  // Set dialog data
  function setDialogData(evt) {
    var exampleTitle = evt.currentTarget.querySelector('.example__title').innerHTML;
    dialogTitle.innerHTML = exampleTitle;
    var exampleId = evt.currentTarget.dataset.id;
    var exampleVersion = evt.target.dataset.version || 'current';

    if (evt.target.dataset.version) {
      for (var j = 0; j < dialogVersionBtns.length; j++) {
        dialogVersionBtns[j].style.display = '';
        if (exampleVersion === dialogVersionBtns[j].dataset.version) {
          dialogVersionBtns[j].classList.add('active');
        } else {
          dialogVersionBtns[j].classList.remove('active');
        }

        dialogVersionBtns[j].addEventListener('click', function (evt) {
          openAnotherVersion(evt);
        });
      }
    } else {
      for (var x = 0; x < dialogVersionBtns.length; x++) {
        dialogVersionBtns[x].style.display = 'none';
      }
    }

    setDialogFile();
    showDialog();

    // Open a different version of the file
    function openAnotherVersion(evt) {
      if (exampleVersion !== evt.currentTarget.dataset.version) {
        closeDialog(true);

        exampleVersion = evt.target.dataset.version;
        setDialogFile(exampleVersion);

        for (var y = 0; y < dialogVersionBtns.length; y++) {
          if (exampleVersion === dialogVersionBtns[y].dataset.version) {
            dialogVersionBtns[y].classList.add('active');
          } else {
            dialogVersionBtns[y].classList.remove('active');
          }
        }

        setTimeout(function () {
          showDialog();
        }, 300);
      }
    }

    // Set dialog file
    function setDialogFile(version) {
      if (version) {
        exampleVersion = version;
      }
      dialogFile.innerHTML = '<iframe class="dialog-file__iframe" src="/t/perk/other/pdf/' + exampleId + '/' + exampleVersion + '.pdf" height="400" width="500" title="' + exampleTitle + '"></iframe>';
    }
  }

  // Show dialog
  function showDialog() {
    focusedElBeforeOpen = document.activeElement;
    body.classList.add('has-dialog');
    overlay.style.display = 'block';
    setTimeout(function () {
      overlay.classList.add('active');
      dialog.classList.add('active');
      dialog.setAttribute('aria-expanded', 'true');
    }, 100);
    dialogCloseBtn.focus();
  }

  // Close dialog
  function closeDialog(showOverlay) {
    dialog.setAttribute('aria-expanded', 'false');
    dialog.classList.remove('active');
    if (!showOverlay) {
      overlay.classList.remove('active');
    }
    if (!showOverlay) {
      setTimeout(function () {
        body.classList.remove('has-dialog');
        overlay.style.display = 'none';
      }, 300);
    }

    if (focusedElBeforeOpen) {
      focusedElBeforeOpen.focus();
    }
  }

  // Handle keydown
  function handleKeyDown(evt) {
    var KEY_ESC = 27;

    if (evt.keyCode === KEY_ESC) {
      closeDialog();
    }
  }
  return true;
}());
