(function ($, Drupal, once) {
  "use strict";
  
  Drupal.behaviors.innerMenu = {
    attach: function (context, settings) {
      
      var paddingLeft = 20;
      
      if($('.search-escopedia').css('display') === 'none') {
        $('#block-oe-esco-escopediamenu').css('display','none');
        $('.search-escopedia').css('display','block');
      }else {
        $('#block-oe-esco-escopediamenu').css('display','block');
        $('.search-escopedia').css('display','none');
      }
      
      
      $('#hierarchyview').on("click", function(e) {
          $('#block-oe-esco-escopediamenu').toggle(0);
          $('.search-escopedia').toggle(0);
      });
      
      $('.ecl-button--primary').on('click', function(e) {
        $('#block-oe-esco-escopediamenu').css('display', 'none');
          
        if($('#block-oe-esco-escopediamenu').css('display') === 'none') {
          $('.search-escopedia').css('display', 'block');
        }
          
      });
      
      //Reset the menu and add a class to groups that have children
      $('#block-oe-esco-escopediamenu > ul').find('ul').slideUp(0);
      $('.escopedia-has-child').remove();
      $("#block-oe-esco-escopediamenu").children().find('ul').each(function (index, element) {
        $("<span class='escopedia-has-child'></span>").insertBefore($(element).parent().children('ul'));
      });
      
      $("#block-oe-esco-escopediamenu").children().find('ul > li > .escopedia-item').each(function (index, element) {
        $(element).css('padding-left', paddingLeft + 'px');
          paddingLeft += 10;
          if(element.nextElementSibling == undefined){
            paddingLeft = 20;
          }
      });
      //When clicking on a parent with a child
      $("#block-oe-esco-escopediamenu > ul > li").on("click", function (e) {
        e.preventDefault();
        //If the target is a content link
        if($(e.target).is('a')){
          $('li').removeClass('link-selected');
          $('.field-content > a').removeClass('content-selected');
          $(e.target).parent().addClass('link-selected');
          
          let languaje = settings.path.currentLanguage;
          if (languaje == "pt-pt") {
            languaje = "pt";
          }
          
          loadAjax(drupalSettings.path.baseUrl, languaje, e.target.dataset.drupalLinkSystemPath);
        }
        if($(e.target).parent().children('ul').length > 0 && !$(e.target).is('a')){
          $(e.target).parent().children('ul').slideToggle(0);
        }else if($(e.target).children('ul').length > 0 && !$(e.target).is('a')) {
          $(e.target).children('ul').slideToggle(0);
        }
        
        if($(e.target).parent().children('span').hasClass('escopedia-has-child') && !$(e.target).is('a')){
          if(!$(e.target.nextElementSibling).is('ul')){
            $(e.target.nextElementSibling).toggleClass('escopedia-minus');
          }else {
            $(e.target).toggleClass('escopedia-minus');
          }
            
        }
      });
    }
  };
  
  function loadAjax(baseUrl, language, linkSystem) {
    $.ajax({
      type: 'GET',
      url: baseUrl + language + "/inner-menu/content?id=" + linkSystem,
      success: function (result) {
        $("#block-mainpagecontent .layout__region--second").html(result);
        $('.breadcrumb-items > a').on("click", function(e) {
          e.preventDefault();
          loadAjax(baseUrl, language, 'node/' + $(e.target).attr('value'));
          $("li").removeClass('link-selected');
          
          openMenu($(e.target).text().trim());
          
          $("#block-mainpagecontent .layout__region--second").html(result);
        });
      }
    });
  }
  
  function openMenu (target) {
    
    $("#block-oe-esco-escopediamenu").children().find('ul > li > .escopedia-item').each(function (index, element) {
      if($(element).text().trim() == target){
        $(element).parent().addClass('link-selected');
        $(element).parents('li').children('.escopedia-has-child').each(function (index, element) {
          
          if(!$(element).hasClass('escopedia-minus') && index == 0 && $(element).parent().find('ul > li > .escopedia-has-child').length == 0) {
            $(element).click();
          } else if ($(element).parents('li').children('.escopedia-has-child').length == 1 && !$(element).hasClass('escopedia-minus')) {
            $(element).click();
          }else if (!$(element).hasClass('escopedia-minus') && index > 0) {
            $(element).click();
          }
          
        });
      }
    });
    
  }
  
  Drupal.behaviors.ESCOpediaList = {
    attach: function (context, settings) {
      $('.field-content > a').on("click", function(e) {
         e.preventDefault();
          $("li").removeClass('link-selected');
          
          openMenu($(e.target).text().trim());
          
          $('.field-content > a').removeClass('content-selected');
          $(e.target).addClass('content-selected');
          let languaje = settings.path.currentLanguage;
          if (languaje == "pt-pt") {
            languaje = "pt";
          }
          
          loadAjax(drupalSettings.path.baseUrl, languaje, e.target.dataset.drupalLinkSystemPath);
      });
    }
  }

})(jQuery, Drupal, once);
