(function () {
  'use strict';

  /**
   * @copyright  (C) 2017 Open Source Matters, Inc. <https://www.joomla.org>
   * @license    GNU General Public License version 2 or later; see LICENSE.txt
   */
  (function (Joomla, document) {
    /**
     * Javascript to insert the link
     * View element calls jSelectContact when a contact is clicked
     * jSelectContact creates the link tag, sends it to the editor,
     * and closes the select frame.
     */
    window.jSelectMenuItem = function (id, title, uri, object, link, lang) {
      var thislang = '';
      if (!Joomla.getOptions('xtd-menus')) {
        // Something went wrong!
        window.parent.Joomla.Modal.getCurrent().close();
        throw new Error('core.js was not properly initialised');
      }

      // eslint-disable-next-line prefer-destructuring
      var editor = Joomla.getOptions('xtd-menus').editor;
      if (lang !== '') {
        thislang = '&lang=';
      }
      var tag = "<a href=\"" + (uri + thislang + lang) + "\">" + title + "</a>";

      // Insert the link in the editor
      if (window.parent.Joomla.editors.instances[editor].getSelection()) {
        window.parent.Joomla.editors.instances[editor].replaceSelection("<a href=\"" + (uri + thislang + lang) + "\">" + window.parent.Joomla.editors.instances[editor].getSelection() + "</a>");
      } else {
        window.parent.Joomla.editors.instances[editor].replaceSelection(tag);
      }

      // Close the modal
      if (window.parent.Joomla && window.parent.Joomla.Modal) {
        window.parent.Joomla.Modal.getCurrent().close();
      }
    };

    // Get the elements
    var elements = [].slice.call(document.querySelectorAll('.select-link'));
    elements.forEach(function (element) {
      // Listen for click event
      element.addEventListener('click', function (event) {
        event.preventDefault();
        var functionName = event.target.getAttribute('data-function');
        if (functionName === 'jSelectMenuItem') {
          // Used in xtd_contacts
          window[functionName](event.target.getAttribute('data-id'), event.target.getAttribute('data-title'), event.target.getAttribute('data-uri'), null, null, event.target.getAttribute('data-language'));
        } else {
          // Used in com_menus
          window.parent[functionName](event.target.getAttribute('data-id'), event.target.getAttribute('data-title'), null, null, event.target.getAttribute('data-uri'), event.target.getAttribute('data-language'), null);
        }

        // Close the modal
        if (window.parent.Joomla.Modal) {
          window.parent.Joomla.Modal.getCurrent().close();
        }
      });
    });
  })(Joomla, document);

})();
