(function () {
  'use strict';

  /**
   * @copyright   (C) 2018 Open Source Matters, Inc. <https://www.joomla.org>
   * @license     GNU General Public License version 2 or later; see LICENSE.txt
   */
  (function (document) {
    document.addEventListener('DOMContentLoaded', function () {
      [].slice.call(document.querySelectorAll('input[type="password"]')).forEach(function (input) {
        var toggleButton = input.parentNode.querySelector('.input-password-toggle');

        if (toggleButton) {
          toggleButton.addEventListener('click', function () {
            var icon = toggleButton.firstElementChild;
            var srText = toggleButton.lastElementChild;

            if (input.type === 'password') {
              // Update the icon class
              icon.classList.remove('icon-eye');
              icon.classList.add('icon-eye-slash'); // Update the input type

              input.type = 'text'; // Focus the input field

              input.focus(); // Update the text for screenreaders

              srText.innerText = Joomla.Text._('JHIDEPASSWORD');
            } else if (input.type === 'text') {
              // Update the icon class
              icon.classList.add('icon-eye');
              icon.classList.remove('icon-eye-slash'); // Update the input type

              input.type = 'password'; // Focus the input field

              input.focus(); // Update the text for screenreaders

              srText.innerText = Joomla.Text._('JSHOWPASSWORD');
            }
          });
        }

        var modifyButton = input.parentNode.querySelector('.input-password-modify');

        if (modifyButton) {
          modifyButton.addEventListener('click', function () {
            var lock = !modifyButton.classList.contains('locked');

            if (lock === true) {
              // Add lock
              modifyButton.classList.add('locked'); // Reset value to empty string

              input.value = ''; // Disable the field

              input.setAttribute('disabled', ''); // Update the text

              modifyButton.innerText = Joomla.Text._('JMODIFY');
            } else {
              // Remove lock
              modifyButton.classList.remove('locked'); // Enable the field

              input.removeAttribute('disabled'); // Focus the input field

              input.focus(); // Update the text

              modifyButton.innerText = Joomla.Text._('JCANCEL');
            }
          });
        }
      });
    });
  })(document);

})();
