// https://www.chromestatus.com/feature/5745543795965952
// https://github.com/WICG/EventListenerOptions/blob/gh-pages/explainer.md
// https://github.com/jquery/jquery/issues/2871#issuecomment-497963776
jQuery.event.special.touchstart = {
  setup: function( _, ns, handle ){
    this.addEventListener("touchstart", handle, { passive: false });
  }
};
jQuery.event.special.mousewheel = {
  setup: function( _, ns, handle ){
    this.addEventListener("mousewheel", handle, { passive: true });
  }
};
var nHauptnaviOffset = 79;
var old_focus = false;
var pdfviewer = false;

function get_livesearch_pars() {
  if (typeof livesearch_filter_header === 'undefined') {
    livesearch_filter_header = 'Suche';
  }
  if (typeof livesearch_filter_header_EN === 'undefined') {
    livesearch_filter_header_EN = 'Search';
  }
  if (typeof livesearch_selectfeld_name === 'undefined') {
    livesearch_selectfeld_name = 'Kategorie';
  }
  if (typeof livesearch_selectfeld_name_en === 'undefined') {
    livesearch_selectfeld_name_en = 'Category';
  }
  if (typeof livesearch_rubriken === 'undefined') { // Optionen für einzelnes Menü (unter Verwendung obiger Felder)
    livesearch_rubriken = [];
  }
  if (typeof livesearch_selects === 'undefined') { // weitere Select-Menüs
    livesearch_selects = [];
  }
  if (typeof livesearch_searchclasses === 'undefined') { // weitere Select-Menüs
    livesearch_searchclasses = [];
  }
  if (typeof livesearch_list_container === 'undefined') {
    livesearch_list_container = '.livesearch';
  }
  if (typeof livesearch_list_item === 'undefined') {
    livesearch_list_item = 'li, .vcard, .vevent';
  }
  if (typeof livesearch_list_selector === 'undefined') {
    livesearch_list_selector = '.livesearch li, .livesearch .vcard, .livesearch .vevent';
  }

  return {
    'rubriken': livesearch_rubriken,
    'list_container': livesearch_list_container,
    "list_item": livesearch_list_item,
    "list_selector": livesearch_list_selector,
    "selectfeld_name": livesearch_selectfeld_name,
    "selectfeld_name_en": livesearch_selectfeld_name_en,
    "selects": livesearch_selects,
    'searchclasses': livesearch_searchclasses
  };
}

function resizeIframe(obj) {
  obj.style.height = obj.contentWindow.document.body.scrollHeight + 'px';
  $("#popupVisitenkarteRahmen").css("height", obj.contentWindow.document.body.scrollHeight + 'px');
}

jQuery(document).ready(function ($) {

  /*********************************************
   *  Doppelte (gleichlautende) Überschriften entfernen
   */
  let headline = $('h1').first().text().trim();
  //if (headline) {
    var headers = $('#main h2, #main h3, #left h1, #left h2, #left h3');
    $(headers).each(function () {
      if ($(this).text().trim() == headline) {
        $(this).hide();
      }
    });
    var header0 = $('#main header > *').first(); // erste Überschrift im Inhalt
    var headertext = $(header0).text().trim();
    if (headline == headertext) {
      $(header0).parent().css('display', 'none');
    }

    $('#instbar a').each(function () {
      if (($(this).parent().hasClass('abt') /*|| $(this).parent().hasClass('einr') || $(this).parent().hasClass('fk')*/)
        && $(this).text().trim() == headline) {
        $(this).parent().remove(); // Aus den blauen Balken entfernen
        //$('#headline h1').text('') // Seitentitel entfernen
      } else {
        if ($(this).text() == headline)
          //$(this).parent().remove(); // Aus blauem Balken entfernen
          $('#headline h1').text(''); // Seitentitel entfernen
      }
    });
  //}


  /*************************************************
   *   Linke Spalte komplett leer?
   */
  if (!($('#left *').length) && !($('#wrapper.one-column').length)) {
    $('#wrapper-content').addClass('noleft');
  }


   /*************************************************
    *  Navizeile fix positionieren
    */
   var lastScrollTop = 0;
   var maxScrollTop = 0;
   var direction;


  $('#header').append('<div id="navizeile_cont" class="container"></div>');

  window.onscroll = function() {
    myScroll()
  };

  var upScrollTop = 0;
  var downScrollTop = 0;
  var bNavizeile = $('#navizeile_platzhalter').length;
  var nNavizeileOffset = 9999999;
  if(bNavizeile) {
    nNavizeileOffset = $('#navizeile_platzhalter').offset().top;
  }

  function myScroll() {

    if (window.scrollY > ($(window).width() >= 1024 ? nNavizeileOffset - 48 : nNavizeileOffset)) {
      $('#navizeile').addClass('sticky').prependTo('#navizeile_cont');
    } else {
      $('#navizeile').removeClass('sticky').prependTo('#navizeile_platzhalter');
    }

    if ($(window).width() < 1024) {
      var scrollTop = $(this).scrollTop();
      if (lastScrollTop < scrollTop && scrollTop > $('#header').outerHeight()) {
        if (direction != 'down') {
          //Scroll down
          direction = 'down';
          downScrollTop = lastScrollTop;
        } else {
          if(scrollTop > (downScrollTop + 20)) {
            $('#header')
              //.stop()
              .addClass('out').removeClass('in'); //fadeOut();
          }
        }
      } else if (lastScrollTop > scrollTop) {
        if (direction != 'up') {
          // Scroll up
          direction = 'up';
          upScrollTop = lastScrollTop;
        } else {
          if(scrollTop < (upScrollTop - 20)) {
            $('#header')
              //.stop()
              .removeClass('out').addClass('in');
          }
        }
      }
      lastScrollTop = scrollTop;
    } else {
      $('#header').removeClass('in');
      if (window.scrollY > nHauptnaviOffset) {
        document.body.classList.add("scroll");
      } else {
        document.body.classList.remove("scroll");
      }
    }
  }


  function setNavizeileFix(mitlogo) {
    if ($('#navizeile_container').length) {
      $('#navizeile').removeClass('sticky').unwrap('#nzcont').appendTo('#navizeile_container');
    } else {
      if (mitlogo) {
        $('#navizeile.sticky').removeClass('sticky').unwrap('#nzcont').insertAfter($('#content_header img').first());
      } else {
        $('#navizeile.sticky').removeClass('sticky').unwrap('#nzcont').prependTo('#content_header');
      }
    }
  }



  $(function () {
    return $(document).scroll();
  });


  /********************************************
   * Nach-oben-Button
   */
  $(".gotop").click(function () {
    $("html,body").animate({
      scrollTop: "0px"
    }, 800);
    return false
  });


  /********************************************
   * Navizeile Touch-Bedienung
   */
  $(document).on('touchstart', '#navizeile a.bclink', function (e) {
    if ($(this).parent().hasClass('hover') || !$(this).next().length) {
      window.location.href = $(this).attr('href');
    } else {
      $('#navizeile .bcitem.hover').removeClass('hover');
      $(this).parent().addClass('hover');
      return false;
    }
  });


  /**********************************************
   * TextMedia: Text nicht mehr neben, sondern unter dem Bild darstellen, wenn für den Text sonst weniger als 250px (280px - 30px Rand) übrig bleiben
   */
  function imgUeber() {
    $('#main .ce-left:not(.ce-above) .ce-gallery, #main .ce-right:not(.ce-above) .ce-gallery, #home-portal .ce-left:not(.ce-above) .ce-gallery, #home-portal .ce-right:not(.ce-above) .ce-gallery').each(function () {
      if (!($(this).parents('.ka-panel.closed,.no-img-ueber').length)) { // nicht in geschlossenen Aufklappelementen, nicht bei .no-img-ueber
        var textbreite;
        textbreite = $(this).parent().width() - $(this).width();
        if ((textbreite >= 0) && (textbreite < 279)) {
          $(this).parent().addClass('img-ueber');
        } else {
          $(this).parent().removeClass('img-ueber');
        }
      }
    });
  }

  imgUeber();


  /*********************************************
   * News-System: Kacheloptik .news-minikachel
   */
  $('.news-minikachel .news-kacheloptik .kachel figure').each(function () {
    $(this).css({'max-width': '38%', 'margin': '6px 18px 10px 0', 'float': 'left'});
    var newstext = $(this).parents('.vc_column-inner').find('.teaser');
    $(this).parent().prependTo(newstext);
  });


  /******************************************
   * Aufklappen-Funktion (Blockstil im RTE)
   * Bewirkt, dass das dem mit .aufklappen ausgezeichneten Element direkt folgende Element durch Klicken auf- und zugeklappt wird
   * 2017-09-07#VB
   */
  if ($(".aufklappen").length) {

    $(".aufklappen")
      .prepend('<span class="aufklapp_button"></span>')
      .hover(
        function () {
          $(this).css({
            'cursor': 'pointer',
            'text-decoration': 'underline'
          });
        },
        function () {
          $(this).css({
            'text-decoration': 'none'
          });
        }
      )
      .addClass('geschlossen')
      .attr('title', 'Klicken zum Auf- und zuklappen')
      .attr('tabindex','0')
      .click(function () {
        if (!$(":animated").length) {
          if ($(this).hasClass('geschlossen'))
            $(this).removeClass('geschlossen').addClass('offen').next().slideDown();
          else
            $(this).removeClass('offen').addClass('geschlossen').next().slideUp();
        }
      })
      .next().css({
      'display': 'none'
    });
  }

  /******************************************
   * Navizeile: Kopflinks in Untermenüs ergänzen
   */
  $("#navizeile .bcitem:not(:last-child) > a").each(function(){
    if($(this).next('ul').length) {
      $(this).next('ul').prepend('<li><a href="' + $(this).attr('href') + '">→ <span class="lang_de">Übersicht</span><span class="lang_en">Overview</span></a></li>');
    }
  });

  /******************************************
   * Vordere Breadcrumb-Elemente ggfs. durch (...) ersetzen
   * 2017-09-07#VB neu
   */
  var lis = $("#navizeile .bcitem");
  if (lis.length > 5) {
    for (i = 0; i < (lis.length - 4); i++) {
      $(lis[i]).css("display", "none");
    }
    $(lis[0]).after('<li class="bcitem" id="bcpunkte"><a class="bclink" href="#" title="entfalten">[…]</a></li>');
    $("#bcpunkte a").click(function () {
      $("#navizeile .bcitem").css("display", "inline-block");
      $("#bcpunkte").css("display", "none");
      navizeile_sublinks_pos();
      return false;
    });
  }

  $('#navizeile_platzhalter').css('min-height', $('#navizeile_platzhalter').height() + 'px');


  function navizeile_sublinks_pos() {
    $("#navizeile ul.sublinks").each(function () {
      $(this).css('left', 0);
      var rechtspos = $(this).parent('li').position().left + $(this).width();
      var ueberhang = parseInt(rechtspos - $(window).width());
      if (ueberhang > 0) {
        $(this).css('left', '-' + (ueberhang + 10) + 'px');
      }
    });
  }

  navizeile_sublinks_pos();


  /******************************************
   * Herkömmlichen Mehr-Buttons neue Optik zuweisen
   * 2018-02-01#VB
   */
  $('a.morelink').addClass('innovation-button morelink style1');


  /*** Stud.IP-Visitenkarte: Nachfolgende Aufklappelemente optisch heranrücken ***/
  $('.studip_personendaten > .ka-panel:last-child').closest('.frame').next('.ka-panel').css('margin-top','6px');


  /******************************************
   * Liste-Buttons für menu_abstract: Auch den Abstract anklickbar machen
   */
  $('.frame-type-menu_abstract.frame-layout-buttons li')
    .each(function () {
      $(this).addClass('hoverClick');
    })
    .click(function () {
      $(this).find('a')[0].click();
    });


  /******************************************
   * Sprung innerhalb der Seite -> Scrollen
   * 2018-02-14#VB
   */

  $('body').on('click', 'a[href*="#c"],a[href*="#id-"]', function () {
    if ((location.hostname == this.hostname) &&
      ((location.pathname.replace(/^\//, '') == this.pathname.replace(/^\//, '')) || (this.pathname == '/'))
    ) {
      var target = this.hash;
      var $target = $(target);

      $target = $target.length && $target || $('[name=' + this.hash.slice(1) + ']');
      if ($target.length) {
        scrolleZuElement($target);
        return false;
      }
    }
  });


  /******************************************
   * Service-Navigation
   * 2020-10-16#VB
   */

  $('#service_nav a').click(function(){
    old_focus = $(this);
    let target = $(this).attr('href'),
        maxTime = 5000, // 5 seconds
        startTime = Date.now();

    let interval = setInterval(function () {
        if ($(target).is(':visible')) {
          $(target).find('a,input').first().focus();
          clearInterval(interval);
        } else {
          if (Date.now() - startTime > maxTime) {
            clearInterval(interval);
          }
        }
      },
      100
    );
  });


  /******************************************
   * Tastaturbedienung
   * 2020-01-21#VB
   */

  $('#wrapper').focus();

  // Esc-Taste schließt Popup-Fenster
  $('body').keydown(function(event) {
    if (event.keyCode == 27) {
      $('body').click();
      $('*[data-toggle="popover"]').popover('hide');
      if(old_focus) {
        old_focus.focus();
      }
      $('.ibutton.open header').click();
      $('body').find("a.leaflet-control-zoom-fullscreen.leaflet-fullscreen-on").each(function(){
        eval($(this).closest('div[id]').attr('id').replace('c','osm_') + '.toggleFullscreen();');
      });
    }
  });

  $("#sprungnavi a").on('keydown click', function (event) {
    if (event.keyCode == 13 || event.type == 'click') {
      if ($(this).attr('id') === 'sprung_inhalt') {
        $("#main").trigger('focus');
        return true;

      } else if ($(this).attr('id') === 'sprung_suche') {
        $('#service_nav .fa-search').parent().click();
        $('#suchfeld').focus();
        document.getElementById("s_extsuche").checked = localStorage.getItem("uol_extsuche") == 'goo' ? true : false;

      } else if ($(this).attr('id') === 'sprung_hauptnavi') {
        $("#nav-top a").first().trigger('focus');

      } else if ($(this).attr('id') === 'sprung_zielgr') {
        $('#service_nav .fa-info').parent().click();
        $('#tab-info-mobile a').first().trigger('focus');

      } else if ($(this).attr('id') === 'sprung_bc') {
        $("#navizeile a").first().trigger('focus');

      } else if ($(this).attr('id') === 'sprung_sprache') {
        $('#service_nav .fa-globe').parent().click();
        $('#language_menu_mobile a').first().trigger('focus');
      }
      return false;
    }
  });

  /******************************************
   * Kalendarisierte Seiten:
   * Liste der Zeiten anzeigen, wenn ein Element mit CSS-Klasse '.clandarizedPage' existiert
   * 2024-01-16#VB
   */
   if($('.calendarizedPage').length && $('#calendarizedPage').length) {
     if($('.calendarizedPage').first().hasClass('uhr')) {
       $('#calendarizedPage li').unwrap();
       $('#calendarizedPage li').contents().unwrap().wrap('<p class="mit-icon sprech"></p>');
     }
     $('#calendarizedPage').insertAfter($('.calendarizedPage').first());
   }

  /******************************************
   * Sonderbehandlung des Kontakt-Blocks (links oben) bei Mobilansicht
   * 2018-02-16#VB
   */

  function fenster_resize() {

    if ($(window).width() < 992) {
      setNavizeileFix();
      $('#infosblock').appendTo('#main');

      $('#kontaktblock header').each(function () {
        if ($(this).parent().hasClass('ka-panel') || $(this).parent().hasClass('frame-uol-info')) {
          // nix
        } else {
          $(this).parent().addClass('ka-panel neu closed');
        }
      });
      kiwi('.neu');
      $('.ka-panel.neu').removeClass('neu');

    } else {
      $('#infosblock').insertAfter('#kontaktblock');
    }
    navizeile_sublinks_pos();
    imgUeber();


    /********************************************
     * Instbar-Text bei Bedarf verkleinern (z.B. pid=48350)
     */

    var instbar_inhalt_hoehe = $('#instbar').height() - 8;
    var $instbar_inner = $('#instbar .inner').first();
    if ($instbar_inner.height() > instbar_inhalt_hoehe) {
      while ($instbar_inner.height() > instbar_inhalt_hoehe) {
        $instbar_inner.css('font-size', (parseInt($instbar_inner.css('font-size')) - 1) + 'px');
      }
    } else {
      while (($instbar_inner.height() < instbar_inhalt_hoehe) && (parseInt($instbar_inner.css('font-size')) < 16)) {
        $instbar_inner.css('font-size', (parseInt($instbar_inner.css('font-size')) + 1) + 'px');
        if ($instbar_inner.height() > instbar_inhalt_hoehe) {
          $instbar_inner.css('font-size', (parseInt($instbar_inner.css('font-size')) - 1) + 'px');
          break;
        }
      }
      if (parseInt($instbar_inner.css('font-size')) >= 16) {
        $instbar_inner.css('font-size', '');
      }
    }
    imgUeber();
  }

  function kiwi(kiwineu) {

    $('.ka-panel' + kiwineu).each(function () {
      //Erste Überschrift suchen
      $header = $('header > :header', this).first();
      //Fehler Behandlung wenn keine Überschrift vorhanden ist
      if ($header.length == 0) {
        $(this).addClass('ka-error').removeClass('ka-panel');
        console.error('This panel contains no header.', this);
      } else {
        //kleiner trick um <div class="csc-header"><h1>... abzufangen
        if ((($header.parent().find('*').length == 1) || $header.parent().is("header") || $header.parent().hasClass("csc-header")) && !$header.parent().is('.ka-panel')) {
          $header.parent().addClass('ka-handler').attr("tabindex", 0).attr('aria-expanded', 'true');
        } else {
          $header.addClass('ka-handler').attr("tabindex", 0).attr('aria-expanded', 'true');
        }

        //Inhalte umschließen für die Ansprache
        if ($header.closest('.ka-handler').next().hasClass('ka-content')) {
        } else {
          $header.closest('.ka-handler').nextAll().wrapAll('<div class="ka-content"></div>');
        }
      }
    });
// Versteckte Inhalte nicht anzeigen
    $('.ka-panel' + kiwineu + '.closed').each(function(){
      $(this).find('.ka-content').first().hide();
    });
// Für ein paar Effekte
    $('.ka-panel' + kiwineu + ' .ka-handler').hover(function () {
      $(this).closest('.ka-panel').addClass('hover');
    }, function () {
      $(this).closest('.hover').removeClass('hover');
    });
// Eventhandler
    $('.ka-panel' + kiwineu + ' .ka-handler')
      .off('click')
      .click(function (event, data) {

        $panel = $(this)/*.parents*/.closest('.ka-panel');
        $content = $panel.find('.ka-content');
        if ($panel.is('.closed')) {
          $('.ka-panel.ka-opend').removeClass('ka-opend');
          $content.first().slideDown();
          $panel.removeClass('closed').removeClass('close').addClass('open');
          $(this).attr('aria-expanded', 'true');
        } else {
          if (!data) {
            data = {clicked: -1};
          }
          if (data.clicked != $('.ka-panel').index($panel)) {
            $content.slideUp();
            $(this).attr('aria-expanded', 'false');
            $panel.removeClass('open').addClass('closed');
            $panel.find('.ka-panel').removeClass('open').addClass('closed');
          }
        }
      })
      .mouseup(function () {
        $(this).blur();
      });
    $(".ka-handler").keypress(function (event) {
      if (event.which == 13) {
        $(this).click();
      }
    });

    if (kiwineu == '') $('.ka-panel.closed').each(function() {
      $(this).find('.ka-handler').first().attr('aria-expanded', 'false');
    });
  }

  kiwi('');
  fenster_resize();

  /* Angesprungenes Aufklappelement automatisch öffnen */
  hash = window.location.hash;
  if (hash) {
    let $element = $(hash);
    if ($element.length) {
      scrolleZuElement($element);
    } else {
      $element = $(hash.replace('c','id-'));
      if ($element.length) {
        scrolleZuElement($element);
      } else {
        $element = $(hash.replace('id-','c'));
        if ($element.length) {
          scrolleZuElement($element);
        }
      }
    }
  }

  function scrolleZuElement($element) {
    let $tabpane = $element.closest('.tab-pane:not(.active)');
    if($tabpane.length) { // zum passenden Tab umschalten
      $('.nav-tabs a[href="#' + $tabpane.attr('id') + '"]').click();
    }
    let aufklapp1 = false;
    let aufklapp2 = false;
    $element.parents('.ka-panel.closed').each(function () {
      aufklapp1 = true;
      $(this).find('.ka-handler').first().click();
    });
    if($element.is('.ka-panel.closed')) {
      aufklapp2 = true;
      $element.find('.ka-handler').first().click();
    }

    let hash = '#' + $element.attr('id');
    if(hash.substring(1,13) == 'tab-content-') {
      $('a[href="'+hash+'"]').first().click(); // Tab aktivieren
    }

    var scrolle = function($element){
      let targetOffset = $element.offset().top - 140;
      $('html,body').delay(400).animate({scrollTop: targetOffset}, 600, function(){
        let id_backup = $element.attr('id');
        $element.attr("id", '');
        location.hash = '#' + id_backup;
        $element.attr('id', id_backup).focus();
      });
    }

    if(aufklapp1 || aufklapp2) {
      setTimeout( function(){ scrolle($element); }, 400);
    } else {
      scrolle($element);
    }
  }


  $(window).resize(function () {
    if( window.innerHeight != screen.height) { // kein Fullscreen (z.B. von Youtube-Video)
      fenster_resize();
    }
  });


  /*****************************
   * Bei Mouse-Out in Tabs und Dropdown-Menüs den focus-Zustand eliminieren
   */

  $('a[data-toggle="tab"],a[data-toggle="dropdown"],li.dropdown > a').mouseout(function () {
    $(this).removeClass("focus");
  });

  /* Tabs */
  $(".nav-tabs > li a").click(function(){ $(this).blur(); return true; });


  /******************************************
   * Popup-Visitenkarte
   * 2018-03-01#VB
   *
   * ToDo:
   * -
   */

  $('<div class="modal fade" id="popupVisitenkarte"><div class="modal-dialog"><div class="modal-content bmd-modalContent"><div class="modal-header"><button class="close" type="button" data-dismiss="modal">×</button><h3 class="modal-title">Person</h3></div><div class="modal-body"><div id="popupVisitenkarteRahmen" class="embed-responsive embed-responsive-16by9" style="min-height:50px;"><iframe id="popupVisitenkarteIframe" class="embed-responsive-item" frameborder="0" onload="resizeIframe(this)" style="overflow:auto;"></iframe></div></div></div></div></div>')
    .appendTo('body');

  $("a[href*='//www.uni-oldenburg.de/index/personen/'], a[href*='//uol.de/index/personen/'], a[href*='//uol.de/suche/person'], a[href*='//uol.de/en/search/person']").each(function () {
    var hrefNeu = $(this).attr("href") + '&type=88';
    $(this)
      .attr("href", hrefNeu.replace("http:", "https:"))
      .attr('data-bmdWidth', 800)
      .attr('data-bmdHeight', 800);
  });

  $('a[href*="/index/personen/"], a[href*="//uol.de/suche/person"], a[href*="//uol.de/en/search/person"]').magnificPopup({
    type: 'iframe',
    iframe: {
      markup: '<div class="mfp-iframe-scaler">' +
        '<div class="mfp-close"></div>' +
        '<h3>Person</h3>' +
        '<iframe class="mfp-iframe" frameborder="0" style="background-color:#fff" allowfullscreen></iframe>' +
        '</div>',
      patterns: {
        popupvisiten: {
          index: 'index/person',
          id: 'username=',
          src: '//uol.de/suche/person?username=%id%&type=88'
        }
      },
      srcAction: 'iframe_src',
    }
  });

  $('.lightbox-iframe a, a[href*="//bbblb02.virt.uni-oldenburg.de/playback"], a[href*="//bbb03.virt.uni-oldenburg.de/playback"]')
    .removeAttr('target')
    .magnificPopup({
      type: 'iframe',
      iframe: {
        markup: '<style>.mfp-iframe-holder .mfp-content {max-width: 90vw;max-height:90vh}</style>'+
          '<div class="mfp-iframe-scaler" >'+
          '<div class="mfp-close"></div>'+
          '<iframe class="mfp-iframe" frameborder="0" allowfullscreen></iframe>'+
          '</div></div>'
      }
    });


  /******************************************
   * Lightbox
   */

  $('.ce-gallery').has('.lightbox').each(function() {
    $(this).magnificPopup({
      delegate: 'a',
      type: 'image',
      tClose: 'Schließen (Esc)',
      tLoading: 'Bilder werden geladen ...',
      gallery: {
        enabled: true,
        tCounter: '<span class="mfp-counter">%curr% / %total%</span>',
        tPrev: 'Vorheriges (Linke Pfeil Taste)',
        tNext: 'Nächstes (Rechte Pfeil Taste)',
      },

      image: {
        // options for image content type
        titleSrc: function (item) {
          return item.el.parent('figure').find('figcaption').text();
        },
      }
    });
  });

  $('.ce-bodytext .lightbox').each(function() { // einzelne Bilder mit manuell gesetzter Klasse .lightbox im a-Tag
    $(this).magnificPopup({
      type: 'image',
      tClose: 'Schließen (Esc)', // Alt text on close button
      tLoading: 'Bilder werden geladen ...', // Text that is displayed during loading. Can contain %curr% and %total% keys

      image: {
        // options for image content type
        titleSrc: function (item) {
          return item.el.parent('figure').find('figcaption').text();
        },
      }
    });
  });

  /******************************************
   * Auf UOL-Seiten: Links zu UOL-Seiten im selben Fenster öffnen und zu externen Seiten im neuen Fenster öffnen
   */

  if(location.hostname == 'uol.de' || location.hostname.indexOf('t3.uol.de') > 0) {
    $('a[href*="www.uni-oldenburg.de"], a[href^="https://uol.de"], a[href^="/"], a[href*="www.presse.uni-oldenburg.de"] , a[href*="icbm.de"]').each(function () {
      if ($(this).attr('href').indexOf('/f/') === -1
        && $(this).attr('href').indexOf('/fileadmin/') === -1
        && $(this).attr('href').indexOf('meeting.uol.de') === -1
        && $(this).attr('href') !== 'https://uol.de/typo3') {
        $(this).attr('target', '_top');
      }
    });
  }


  /******************************************
   * Kacheln anklickbar machen
   */

  $('.frame-type-menu_pages.frame-layout-kacheln li,.frame-type-menu_subpages.frame-layout-kacheln li,.frame-type-menu_abstract.frame-layout-kacheln li').each(function () {
    $(this).css('cursor', 'pointer').click(function () {
      window.location.href = $(this).find('a').attr('href');
    });
  });


  /******************************************
   * Flexslider / Bildergalerie
   * 2018-02-21#VB
   *
   * ToDo:
   * - nachladen: https://www.uni-oldenburg.de/img/script/flexslider.css
   * - nachladen: https://www.uni-oldenburg.de/img/script/jquery.flexslider-min.js
   */

  var els_textpic = $("#main .frame-type-textmedia.frame-layout-slidegalerie .ce-gallery");
  if (els_textpic.length) {

    $(els_textpic).each(function () {
      var t3el = this;
      var els_rows = $(this).find(".ce-row");
      if (els_rows.length > 1) {

        var els_cols = $(els_rows[0]).find(".ce-column");

        if (els_cols.length === 1) {
          $(t3el).find(".ce-column").css("width", "100%");
          $(t3el).find("figure").css({marginLeft: "auto", marginRight: "auto"});
          $(t3el).find(".ce-column img").css({
            "box-sizing": "border-box",
            "border": "1px solid #fff",
            "margin": "0 auto"
          });
          $(t3el).addClass("flexslider");
          $(t3el).find(".ce-inner").addClass("slides");
          $(t3el).find(" img").each(function () {
            var fspath = $(this).attr("src");
            $(this).closest(".ce-row").attr("data-thumb", fspath);
          });
          $(t3el).flexslider({
            controlNav: "thumbnails",
            directionNav: false,
            selector: ".slides .ce-row",
            slideshow: false
          });
          var thc = $(t3el).find(".flex-control-thumbs li").length;
          if (typeof thcount === 'undefined' || thcount === null) {
            thcount = 8;
          }
          if (thc > thcount)
            thc = Math.ceil(thc / (Math.ceil(thc / thcount)));
          $(t3el).find(".flex-control-thumbs li").css("width", (100 / thc) + "%");
          $(t3el).find(".flex-control-thumbs").css({"display":"flex", "flex-flow":"row wrap", "align-items":"center"});
        }
      }
    });
  }

  var pid = $('#uol_shortlink').attr('href');
  if (pid && pid.length > 2 && pid.substr(pid.length - 2) === 'en') {
    $('#tab-search-mobile form').attr('action', '/en/search');
  } else {
    if (location.hostname == 'ome-lexikon.uni-oldenburg.de') {
      $('#tab-search-mobile form').attr('action', 'https://uol.de/suche');
    }
  }


  /**********************
   * Header-Bildwechsel, falls mehrere *
   **********************/

  if (typeof UniOlHeaderSlides !== "undefined" && UniOlHeaderSlides.length > 1) {

    var UniOlHeaderSlidesZaehler = 1;
    var UniOlHeaderSlideImages = $("#keyvisual img");
    var UniOlHeaderSlideImage1 = UniOlHeaderSlideImages[0];
    var UniOlHeaderSlidesTempo = 1000;
    var UniOlHeaderSlidesExtrabild = true;
    $("#keyvisual").prepend('<div id="bg1" style="width:' + $("#keyvisual").width() + 'px;height:' + $("#keyvisual").height() + 'px;position:absolute;z-index:2;display:none;"></div>');
    $("#keyvisual").prepend('<div id="bg2" style="width:' + $("#keyvisual").width() + 'px;height:' + $("#keyvisual").height() + 'px;position:absolute;z-index:1;display:none;"></div>');

    var UniOlHeaderSlidesRun = function () {
      if (UniOlHeaderSlidesExtrabild) {

        $(document.getElementById("bg1")).css({
          background: 'url(' + UniOlHeaderSlides[UniOlHeaderSlidesZaehler] + ') no-repeat'
          , 'background-size': 'cover'
          , width: $("#keyvisual").width() + 'px'
          , height: $("#keyvisual").height() + 'px'
        });

        $(document.getElementById("bg1")).fadeIn(UniOlHeaderSlidesTempo, function () {
          $(document.getElementById("bg2")).show();
          $(document.getElementById("bg2")).css({
            background: 'url(' + UniOlHeaderSlides[UniOlHeaderSlidesZaehler] + ') no-repeat'
            , 'background-size': 'cover'
            , width: $("#keyvisual").width() + 'px'
            , height: $("#keyvisual").height() + 'px'
          });
        });
        UniOlHeaderSlidesZaehler++;
        if (UniOlHeaderSlidesZaehler >= UniOlHeaderSlides.length)
          UniOlHeaderSlidesZaehler = 0;
        UniOlHeaderSlidesExtrabild = !UniOlHeaderSlidesExtrabild;

      } else {

        $(document.getElementById("bg2")).css({
          background: 'url(' + UniOlHeaderSlides[UniOlHeaderSlidesZaehler] + ') no-repeat'
          , 'background-size': 'cover'
        });

        UniOlHeaderSlidesZaehler++;
        if (UniOlHeaderSlidesZaehler >= UniOlHeaderSlides.length)
          UniOlHeaderSlidesZaehler = 0;
        $(document.getElementById("bg1")).fadeOut(UniOlHeaderSlidesTempo);
        UniOlHeaderSlidesExtrabild = !UniOlHeaderSlidesExtrabild;
      }
    }
    window.setInterval(UniOlHeaderSlidesRun, 6000);

  }

  /******************************************************************
   * Studip-Personendaten
   ******************************************************************/

  var pd = $('.studip_personendaten_basic');
  if (pd.length) {

    $(pd).each(function () {
      if ($(this).width() > 500) {
        $(this).find('.bildnobody').insertBefore($(this).find('h1'));
      }
      if ($(this).width() > 600) {
        var bild = $(this).find('.portrait');
        if (bild.length) {
          $(bild).css({
            'background-image': $(bild).css('background-image').replace('medium', 'normal'),
            'width': '180px',
            'height': '180px'
          })
            .parent().css({
            'width': '180px',
            'height': '180px'
          });
        }
      }
      if ($(this).width() > 500) {
        $('#main .personendaten .einr').css({
          clear: 'none',
          'margin-right': '230px'
        });
      }
    });
  }


  /******************************************
   * Owl Carousel
   */

  $('.owl-aktuell img, .owl-campus img, .owl-neuberufene img').each(function () {
    $(this).attr('data-src', $(this).attr('src')).removeAttr('src').addClass('owl-lazy');
  });

  const blaettern_button_prev = '<div class="blaettern-button prev" tabindex="0"><span>&larr;</span></div>';
  const blaettern_button_next = '<div class="blaettern-button next" tabindex="0"><span>&rarr;</span></div>';


  $('.owl-slider .grid-1c').each(function () {
    $(this).before('<div class="owl-theme"><div class="owl-nav slider"></div></div>');
    let owl_halb = $(this).closest('.owl-slider').hasClass('halb');
    let owl_drittel = $(this).closest('.owl-slider').hasClass('drittel');
    let owl_viertel = $(this).closest('.owl-slider').hasClass('viertel');
    let owl_slider_nav = $(this).prev().find('.owl-nav').first();
    $(this).owlCarousel({
      lazyLoad: true,
      lazyLoadEager: 2,
      loop: false,
      margin: 10,
      navContainer: owl_slider_nav,
      navText: [blaettern_button_prev, blaettern_button_next],
      //dots: true,
      responsiveClass: true,
      responsive: {
        0: {items: 1, nav: true, dots: false},
        750: {items: (owl_halb ? 2 : (owl_drittel ? 2 : (owl_viertel ? 2 : 1))), nav: true, dots: false},
        1150: {items: (owl_halb ? 2 : (owl_drittel ? 3 : (owl_viertel ? 4 : 1))), nav: true, margin: 20, dots: false}
      }
    });
    if ($(this).find('.owl-item').length < 2) {
      $(owl_slider_nav).hide();
    }
  });

  $('.owl-aktuell').each(function () {
    let owl_navi = $(this).prev().find('.owl-nav').first();
    let news_aktuell_responsive = {
      0: {items: 1, nav: true},
    }
    if ($(this).width() >= 640) {
      news_aktuell_responsive[640] = {items: 2}
    }
    if ($(this).width() >= 1100) {
      news_aktuell_responsive[1100] = {items: 3, margin: 21}
    }

    $(this).owlCarousel({
      lazyLoad: true,
      lazyLoadEager: 1,
      loop: false,
      margin: 15.02,
      navContainer: owl_navi,
      navText: [blaettern_button_prev, blaettern_button_next],
      dots: false,
      responsiveClass: true,
      nav: true,
      responsive: news_aktuell_responsive
    });
    if ($(this).find('.owl-item').length < 2) {
      $(owl_navi).hide();
    }
  });

  $('.owl-campus').each(function () {
    let owl_campus_nav = $(this).prev().find('.owl-nav').first();
    $(this).owlCarousel({
      lazyLoad: true,
      lazyLoadEager: 2,
      loop: false,
      margin: 10,
      navContainer: owl_campus_nav,
      navText: [blaettern_button_prev, blaettern_button_next],
      dots: false,
      responsiveClass: true,
      responsive: {
        0: {items: 1, nav: true},
        750: {items: 1, nav: true},
        1150: {items: 1, nav: true, margin: 20, dots: false}
      }
    });
    if ($(this).find('.row').length < 2) {
      $(owl_campus_nav).hide();
    }
  });


  $('.owl-neuberufene').each(function () {

    var neub_responsive = {
      0: {items: 1, nav: true},
    }
    if ($(this).width() > 480) {
      neub_responsive[480] = {items: 2}
    }
    if (($(this).width() > 720)  && (!$(this).closest('.owl-limit2').length)) {
      neub_responsive[720] = {items: 3}
    }
    if (($(this).width() > 960)  && (!$(this).closest('.owl-limit2').length) && (!$(this).closest('.owl-limit3').length)) {
      neub_responsive[960] = {items: 4}
    }

    $(this).owlCarousel({
      lazyLoad: true,
      lazyLoadEager: 1,
      loop: false,
      margin: 10,
      navContainer: '#owl-neuberufene-nav',
      navText: [blaettern_button_prev, blaettern_button_next],
      dots: false,
      nav: true,
      responsiveClass: true,
      responsive: neub_responsive
    });
  });


  let news_ohnebild_responsive = {
    0: {items: 1, nav: true},
    //738: {items: 2, nav: true, margin: 20}
  }

  // /* Auskommentiert. Wird jetzt fallbezogen mittels width eingeschaltet */
  // if ($("#home-portal").length) {
  //   news_ohnebild_responsive[970] = {items: 3, nav: true, margin: 20}
  // }

  $('.owl-zweispaltig-ohne-bild').each(function () {
    let responsive = news_ohnebild_responsive;
    let $navcontainer = $(this).closest('.news').find('.owl-nav').first();
    if ($(this).width() >= 738) {
      responsive[738] = {items: 2, nav: true, margin: 20}
    }
    if (($(this).width() >= 970) && (!$(this).closest('.owl-limit2').length)) {
      responsive[970] = {items: 3, nav: true, margin: 20}
    }
    $(this).owlCarousel({
      loop: false,
      margin: 10,
      navContainer: $navcontainer, //$(this).prev().find('.owl-nav').first(),
      navText: [blaettern_button_prev, blaettern_button_next],
      dots: false,
      responsiveClass: true,
      responsive: responsive
    });
    // if(!$(this).closest('.news').prev('header').length) {
    //   $(this).closest('.news').before('<header>');
    // }

    if($(this).closest('.news').prev('header').length) {
      $(this).closest('.news').prev('header').addClass('owl-header').append($navcontainer);
    }
    // let $header = $(this).closest('.news').prev('header');
    // $header.addClass('owl-header').append($navcontainer);
    //$navcontainer.appendTo($(this).closest('.news').prev('header'));
  });

  var cal_responsive_g = {
    0: {items: 1, nav: true},
    738: {items: 2, nav: true},
    1150: {items: 3, nav: true, loop: false, margin: 20}
  }
  var cal_responsive_m = {
    0: {items: 1, nav: true},
    738: {items: 2, nav: true}
  }
  var cal_responsive_k = {
    0: {items: 1, nav: true}
  }

  /* Workaround: Leere Kalender-Einträge löschen */
  $('.vevent').each(function () {
    if ($.trim($(this).text()) == '') {
      $(this).hide();
      $(this).remove();
    }
  });

  var parentwidth;
  var closesttabwidth;

  $('.owl-calendar').each(function () {

    parentwidth = $(this).parent().width();
    closesttabwidth = $(this).closest('.tab-content').width();
    if ($(this).parents('.kalenderarchiv, .kal-archiv').length) {
      // Archivliste ohne Blättern
      $('.owl-carousel').css('display', 'block');
    } else {

      if (parentwidth > 900 || closesttabwidth > 900) {
        var cal_responsive = cal_responsive_g;
      }
      else if (parentwidth > 500 || closesttabwidth > 500) {
        var cal_responsive = cal_responsive_m;
      }
      else {
        var cal_responsive = cal_responsive_k;
      }

      $(this).owlCarousel({
        loop: false,
        margin: 20,
        navContainerClass: 'owl-nav',
        navText: [blaettern_button_prev, blaettern_button_next],
        dots: false,
        responsiveClass: true,
        responsive: cal_responsive
      });
      let $navcontainer = $(this).closest('.calendarize').find('.owl-nav').first();
      if($(this).closest('.calendarize').prev('header').length) {
        $(this).closest('.calendarize').prev('header').addClass('owl-header').append($navcontainer);
      }
    }
  });


  $('.owl-calendar-left-col').owlCarousel({
    loop: false,
    margin: 20,
    navContainerClass: 'owl-calendar-nav-left-col',
    navText: [blaettern_button_prev, blaettern_button_next],
    dots: false,
    responsiveClass: true,
    responsive: {
      0: {items: 1, nav: true},
      700: {items: 2, nav: true},
      1200: {items: 1, nav: true, loop: false, margin: 20}
    }
  });

  // Tastaturbedienung
  $(".blaettern-button").keypress(function (event) {
    if (event.which == 13) {
      $(this).click();
    }
  });


  $('.f3-widget-paginator').each(function(){
    let li_current = $(this).find('li.current').first();
    if($(this).find('li').index(li_current) > 2) {
      $(li_current).before('<li class="pagination-all" style="display:block!important" title="alle"><span> … </span></li>');
    }
    if($(this).find('li').index($(this).find('li.next').first()) - $(this).find('li').index(li_current) > 2) {
      $(li_current).next().after('<li class="pagination-all" style="display:block!important" title="alle"><span> … </span></li>');
    }
    $(this).find('.pagination-all').css('cursor','pointer').click(function(){
      $(this).parent().addClass('all').find('.pagination-all').hide();
    });
  });

  /* .kalender-rueck - Bei Kalenderarchiv/Rückwärtssortierung etwaiges leeres Schlusselement entfernen und Lückenfüller-Element einfügen */
  $(".kalender-rueck .vevent:last-child").each(function () {
    if ($(this).text().length <= 10) {
      $(this).remove();
    }
  });
  $(".kalender-rueck .owl-calendar").each(function () {
    if ($(this).children().length % 2) {
      $(this).prepend('<dt class="vevent neu1">.</dt>');
    }
  });

  /**
   * Bei Dateilinks das ganze LI anklickbar machen
   */
  $(':not(.klappinfo) > .ce-uploads li a').click(function (event) {
    event.stopPropagation();
  });
  $(':not(.klappinfo) > .ce-uploads li')
    .each(function () {
      $(this).addClass('hoverClick').attr('title', $(this).find('.ce-uploads-fileName').first().text());
    })
    .click(function (event) {
      $(this).find('a')[0].click();
    });

  // Description aufklappbar darstellen mittels Element-Klasse .klappinfo
  $('.klappinfo .ce-uploads-description').each(function(){
    if($(this).height() > 28) {
      $(this)
        .addClass('collapsed')
        .append('<span class="expand"> mehr</span>');
    }
  });
  $('span.expand').click(function(){
    $(this).css('display','none')
      .parents('.ce-uploads-description')
      .removeClass('collapsed');
  });


  /******************************************
   * Slicknav / Mobile Navigation
   */

  $('ul#nav-top').slicknav({
    label: '&nbsp;',
    duration: 300,
    brand: 'Carl von Ossietzky Universität Oldenburg',
    closedSymbol: '&#43;',
    openedSymbol: '–',
    allowParentLinks: true,
    nestedParentLinks: false,
    appendTo: '#header',
    parentTag: 'span'
  });
  $('.slicknav_menu a[href="/50jahre"]').closest('li').addClass('j50');
  $('.x-nav-menu-toggle-inner').click(function () {
    $(this).toggleClass('x-in');
    $(".slicknav_nav").slideToggle(200);
    return false;
  })


  /******************************************
   * MainNavi Touchstart ItemNeuberufene / our-team
   */

  $(".ourteam-item .ourteam-avatar a").each(function () {
    $(this).addClass("off");
    $(this).on('touchstart', function (event) {
      if ($(this).hasClass("off")) {
        var obj = $(this);
        var overlay = $(this).parent().parent().parent().find(".over-ourteam");
        event.preventDefault();
        obj.removeClass("off");
        obj.addClass("on");
        overlay.css('height', '100%');
        overlay.click(function () {
          overlay.css('height', '30');
          obj.removeClass("on");
          obj.addClass("off");
        });
      } else {
        event.preventDefault();
        obj.removeClass("on");
        obj.addClass("off");
      }
    });
  });


  /******************************************
   * MainNavi 2.Ebene letzten Menüpunkt ausblenden, wenn eine Spalte über 50% Breite geht
   */

  $('ul#nav-top .level-2.uol-submenu > li').each(function (index) {
    if ($(this).hasClass('menu-col-mode-1')) {
      $(this).parent().addClass('max-items-3');
    }
  });


  /******************************************
   * Header functions
   */

  $("#tab-mobile .tab-pane").each(function () {
    var obj = $(this).find('.btn-close');
    obj.click(function (event) {
      event.stopPropagation();
      $(this).parent().removeClass('active');
      $(this).parent().removeClass('show');
      $(this).parent().removeClass('in');
      $('ul.nav-service li, ul.nav-service a').each(function () {
        $(this).removeClass('active');
        $(this).removeClass('show');
      })
      $('ul.nav-service li a').each(function () {
        $(this).attr('aria-expanded', 'false')
      })
    })
  });
  $(document).click(function(e) {
    if(!$(e.target).closest('.nav-pills, #tab-mobile').length) {
      $('#tab-mobile .show .btn-close').click();
      $('#navizeile .bcitem.hover').removeClass('hover');
    }
  });
  if(!$('#tab-language-menu-mobile a').length) {
    $('#service_lang').addClass('inaktiv');
  }

  $("#tab-colormode-mobile .color-mode__btn").click(function(){
    if ($(this).is('.dark')) {
      document.documentElement.setAttribute("color-mode", "dark");
      localStorage.setItem("color-mode", "dark");
    } else if ($(this).is('.light')) {
      document.documentElement.setAttribute("color-mode", "light");
      localStorage.setItem("color-mode", "light");
    } else if ($(this).is('.system')) {
      document.documentElement.setAttribute("color-mode", "system");
      localStorage.setItem("color-mode", ""); // real
      checkDarkMode(); // in page.typoscript
    }
  });


  /*******************************************************
   * Tabellen und Formulare horizontal scrollbar machen
   */

  $("main table,main form").each(function () {
    if (!($(this).is('.visitenkarte-button')) && !($(this).is('.noscroll')) && !($(this).closest('.noscroll').length)) { // Stud.IP-Visitenkarte nicht
      $(this).wrap('<div class="scroll_wrap"></div>');
    }
  });


  /******************************************
   * Bei bu_im_bild die figcaption ggf. anklickbar machen.
   *
   */

  $('.frame-layout-bu_im_bild figcaption').each(function () {
    $(this).appendTo($(this).prev('a'));
  });


  /******************************************
   * abbr-Tag anklickbar machen*
   */
  $('.ce-bodytext abbr').attr('tabindex',"0").click(function(){
    $(this).toggleClass('aktiv');
  });


  /******************************************
   * Bootstrap Popover
   */
  $('.ce-popover [data-toggle="popover"]').each(function () {
    $(this).popover({
      container: 'body',
      html: true
    })
  });


  /******************************************
   * News Single-View Slider
   */

  if ($('.news-slider-wrap').length > 0) {

    $('.news-slider-wrap').show();

    var slides_zahl = $('ul.slides img').length;
    if (slides_zahl > 1) {

      var slider_gross = $(window).width() > 860;
      if (slider_gross) {

        var slides_abstand = 4; // Prozent
        var slides_minibreite = (100 - slides_abstand) / (slides_zahl + 0.2); // Breite der Miniaturen in Prozent
        if (slides_minibreite > 20) {
          slides_minibreite = 20;
        }
        var slides_bildbreite = 100 - slides_minibreite - 4; // Breite des großen Bildes in Prozent

        if (slides_zahl > 1) {
          $('.news-slider-wrap').css({'width': slides_bildbreite + '%'});
        }
      }
      $('#news-image-slider ul li img').each(function () {
        src = $(this).attr('src');
        $(this).parent().attr('data-thumb', src);
      });

      $('#news-image-slider').flexslider({
        animation: "slide",
        controlNav: slider_gross ? 'thumbnails' : true,
        slideshow: false,
        prevText: '',
        nextText: '',
        smoothHeight: true,
      });

      if (slider_gross && (slides_zahl > 1)) {
        $('.news-slider-wrap').css({'width': '100%'});
        $('#news-image-slider > .flex-viewport').css({
          'width': slides_bildbreite + '%',
          'float': 'left',
          'margin-right': '4%'
        });
        $('#news-image-slider .flex-control-thumbs').css('width', slides_minibreite + '%');
        $('#news-image-slider .flex-control-thumbs li').css({'width': '100%', 'padding-top': '2px'});
        $('.flex-direction-nav').hide();
      }
    }
  }


  /******************************************
   * jQuery accessable mega menu
   * https://adobe-accessibility.github.io/Accessible-Mega-Menu/
   */

  $("#nav-mega").accessibleMegaMenu({
    uuidPrefix: "accessible-megamenu",
    menuClass: "nav-menu",
    topNavItemClass: "nav-item",
    panelClass: "uol-submenu",
    panelGroupClass: "menu-item ",
    hoverClass: "hover",
    focusClass: "focus",
    openClass: "open"
  });

  $('#mainmenu .level-1 > li > a').mouseout(function(){
    var mainmenuopen = $('#mainmenu .level-1 > li > a.open').length;
    if(!mainmenuopen) {
      $('body').click();
    }
  });


  // Link zur Barrierefreiheitserklärung mit aktueller URL ergänzen
  $('a[href="/barrierefreiheit"],a[href="https://uol.de/barrierefreiheit"]').click(function(){
    window.location.href= $(this).attr('href') + '?ref=' + window.location.href;
    return false;
  });


  // Meldung o.ä. ausgeben
  $.getScript('https://uol.de/aktuell/meldung.js');

  const unique = (value, index, self) => {
    return self.indexOf(value) === index;
  }

  // Livesuche
  var ls_pars = get_livesearch_pars();
  var ls_rubriken = ls_pars['rubriken'];
  var ls_list_container = ls_pars['list_container'];
  var ls_list_item = ls_pars['list_item'];
  var ls_selectfeld_name = ls_pars['selectfeld_name'];
  var ls_selectfeld_name_en = ls_pars['selectfeld_name_en'];
  var ls_selects = ls_pars['selects'];
  var ls_searchclass = ls_pars['searchclasses'];

  var ls_list_selector = ls_make_selector(ls_list_item, ls_list_container);

  var ls_selector = ls_list_container + ' ' + ls_list_item;

  if ($("" + ls_make_selector(ls_list_item, ls_list_container)).length) {

    var ls_id = typeof livesearch_id !== 'undefined' ? livesearch_id : $(ls_list_container).first().attr('id');
    var ls_en = $('html[lang="en"]').length;

    $('<div class="frame div_livesearch"><fieldset><h3>' + (ls_en ? livesearch_filter_header_EN : livesearch_filter_header) + '</h3><input type="text" class="text-input" id="livesearch_input" value="" placeholder="Text" /> <span id="livesearch_count"></span></fieldset></div>').insertBefore('#' + ls_id);

    if(!($(".ls_noselect" + ls_list_container).length)) {
      $("" + ls_make_selector(ls_list_item, "#" + ls_id)).each(function () {
        var ls_text = $(this).text();
        var ls_rubrik = ls_text.match(/\[[^\[]+\]/g); // Rubriken anhand von Begriffen in eckigen Klammern generieren
        if (ls_rubrik) ls_rubriken = ls_rubriken.concat(ls_rubrik);
      });

      if (ls_rubriken.length) {
        //ls_rubriken = [...new Set(ls_rubriken)]; // Geht nicht im IE11-
        var ls_unique = new Set();
        ls_rubriken.forEach(function (item) {
          ls_unique.add(item);
        });
        ls_rubriken = Array.from(ls_unique);

        var ls_select = $('<select id="livesearch_select" style="margin-left:5px"><option value="">- ' + (ls_en ? 'Chose ' + ls_selectfeld_name_en : ls_selectfeld_name + ' wählen') + ' -</option></select>');
        for (var i = 0; i < ls_rubriken.length; i++) {
          var ls_kat = ls_rubriken[i];
          ls_select.append('<option value="' + ls_kat + '">' + ls_kat.replace('[', '').replace(']', '') + '</option>');
        }
        $("#livesearch_input").after(ls_select);
        $(ls_select).change(function () {
          $("#livesearch_input").val(this.value);
          livesearch();
        });
      }
    }

    if(typeof ls_selects.length) {
      Object.keys(ls_selects).forEach(function(i){
        var sel = $('<select id="select-' + i + '"><option value="">- ' + i + ' -</option></select>');
        ls_selects[i].forEach(function(j){
          $('<option>' + j + '</option>').appendTo(sel);
        });
        $('#livesearch_input').after(sel);
        $(sel).change(function () {
          if(!$(this).attr('id').startsWith('select-attr-')) { // herkömmliche Select-Suche (nicht in Attribut)
            $(this).siblings().val(''); // Bei Verwendung andere Felder auf Ausgangswert setzen
            livesearch_select(this.value.toLowerCase(), ls_searchclass[i] ? ls_searchclass[i] : 'description');
          }
        });
      });
    }

    /**
     * Livesuche mittels Select-Feld
     */
    function livesearch_select(filter, searchclass) {
      var count = 0;
      var p_treffer = false;
      $("."+searchclass).each(function () {

        if ($(this).text().toLowerCase().indexOf(""+filter+"") == -1) {
          if(ls_list_item == '.'+searchclass) {
            $(this).hide();
          } else {
            $(this).closest(ls_list_item).hide();
          }

        } else {
          if(ls_list_item == '.'+searchclass) {
            $(this).show();
          } else {
            $(this).closest(ls_list_item).show();
          }
          // Gesamte description durchsuchen
          //if($(this).find('.' + searchclass).text().search(new RegExp(filter, "i")) >= 0) {
          if($(this).find('.' + searchclass).text().toLowerCase().indexOf(""+filter+"") != -1) {
            if(searchclass='description') {
              // Absätze durchsuchen
              $(this).find('.description p').each(function(){
                if ($(this).text().search(new RegExp(filter, "i")) < 0) {
                  $(this).addClass('notfound');
                } else {
                  $(this).removeClass('notfound');
                }
              });
            }
          }
          count++;
        }
      });

      // Update the count
      var livesearch_numberItems = count;
      $("#livesearch_count").text("(" + count + ")");
    }

    $("#livesearch_input").keyup(function (event) {
      if(event.keyCode == 27) {
        $("#livesearch_input").val('');
      }
      livesearch();
    });
  }

  // Selector aus Container und Item-Selector generieren
  function ls_make_selector(item, container) {
    var selector = [];
    item.split(',').forEach(function (item) {
      selector.push(container + ' ' + item);
    });
    return selector.join(', ');
  }

  function livesearch() {

    // Retrieve the input field text and reset the count to zero
    const filter = escapeRegExp($("#livesearch_input").val());
    let count = 0;

    $("" + ls_make_selector(ls_list_item, "#" + ls_id)).each(function () {
      if ($(this).text().search(new RegExp(filter, "i")) < 0) {
        $(this).fadeOut();
      } else {
        $(this).show();
        count++;
      }
    });

    //var livesearch_numberItems = count;
    $("#livesearch_count").text("(" + count + ")");
  }

  function escapeRegExp(string) {
    return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); // $& means the whole matched string
  }

  // Beschriftung
  if($('#service_nav').length) {
    $('#service_nav .fa-globe').parent().attr('title','Change language');
    $('#service_nav .fa-sign-in').parent().attr('title','Login');
    if($('html[lang="de"]').length) {
      $('#service_nav .fa-search').parent().attr('title','Suche');
      $('#service_nav .fa-info').parent().attr('title','Informationen für ...');
      $('#tab-info-mobile').prepend('<h4>Informationen für ...</h4>');
    } else {
      $('#service_nav .fa-search').parent().attr('title','Search');
      $('#service_nav .fa-info').parent().attr('title','Information for ...');
      $('#tab-info-mobile').prepend('<h4>Information for ...</h4>');
    }
  }

  if (currentTheme=='light') {
    $('#colormode-wrap a.light').addClass('aktiv');
  } else if (currentTheme=='dark') {
    $('#colormode-wrap a.dark').addClass('aktiv');
  } else if (currentTheme=='system') {
    $('#colormode-wrap a.system').addClass('aktiv');
  }

  // i-Button
  if($('.ibutton').length) {
    $('.ibutton header').attr('tabindex',0).keypress(function (event) {
        if (event.which == 13) { $(this).click(); }
      }).click(function(){
      $('.ibutton').toggleClass('open');
    });

    $('.ibutton p.mit-icon a').each(function(){
      $(this).closest('p').addClass('link');
    });

    $('.ibutton p.link').click(function(event){
      event.stopPropagation();
      let href = $(this).find('a').first().attr('href');
      if(href.substring(0,7) == 'mailto:' && href.indexOf('subject=') == -1) {
        href = href + '&subject=Info%20' + encodeURIComponent(document.location.href);
        $(this).find('a').attr('href', href);
      }
      document.location.href = href;
      return false;
    });
  }

  // Fix für OL-Listen (Indizes case-sensitive - klappt z.B. im EDGE sonst nicht)
  $('ol[type="a"]').each(function(){
    if($(this).attr('type') == 'a') $(this).addClass('k');
  });
  $('ol[type="i"]').each(function(){
    if($(this).attr('type') == 'i') $(this).addClass('k');
  });


  // Nicht verlinkte Footnotes als Link darstellen (Farbe + Cursor)
  var fndiv = $(".footnotes,.fussnoten").first().attr("id");

  if(typeof fndiv !== 'undefined') {
    $("main sup:contains('[')").each(function () {
      var fnlink = $(this).text();
      var match = (fnlink.match(/^\[\d+\]\s*$/g));
      if (fnlink == match) {
        $(this).attr('id', '_ftnref' + fnlink.match(/\d+/g)).css({color: "#00519e", cursor: "pointer"});
      }
    });
    $("main sup a:contains('['), main sup:contains('[')").click(function () {
      var fnlink = $(this).text();
      var fntext = $("#" + fndiv + " p:contains('" + fnlink + "')").html();
      $.magnificPopup.open({
        items: {
          src: $("<p style='font-size:13px;background:white;padding:10px 30px 10px 10px;box-sizing:border-box;max-width:100vw;width:750px;transform: translateX(50%);'>" + fntext + "</p>"),
          type: 'inline'
        }
      });
      return false;
    });

    $("#" + fndiv + " p").each(function () {
      var tx = $(this).html();
      $(this).html(tx.replace(/(\[\d+\])/, "<span class='enote'>$1</span>"));
    });

    $("span.enote, a.enote")
      .css({color: "#00519e", cursor: "pointer"})
      .click(function () {
        var fn = $(this).text();
        var els = $("sup:contains('" + fn + "')");
        $(els[0]).parents('.ka-content').each(function () {
          $(this).prev('.ka-handler[aria-expanded="false"]').click();
        });
        $('html, body').animate({scrollTop: ($(els[0]).offset().top - 100)}, 'slow');
        return false;
      });

    $("span.enote").parent("a").click(function (evt) {
      return false;
    });
  }

  $('.flip-card').attr('tabindex',0);
  $(".flip-card").keypress(function (event) {
    if (event.which == 13) {
      $(this).toggleClass('gewendet');
    }
  });
  $('.flip-card .ce-bodytext a').focus(function(){
    $(this).closest('.flip-card').addClass('gewendet');
  });
  $('.flip-card').mouseout(function(){
    $(this).removeClass('gewendet');
  });
  $('.flip-card').focusout(function(){
    setTimeout(() => {
      if(!($(':focus').parents('.gewendet').length)) {
        $('.flip-card.gewendet').removeClass('gewendet');
      }
    }, 100);
  });

  /* PDF-Viewer */
  pdfviewer = function() {
    let $pdfs = $('.pdfviewer a');
    if ($pdfs.length) {
      $pdfs.each(function () {
        let $bodytext = $(this).closest('.ce-bodytext');
        if ($(this).closest('.pdfviewer').is('.pdfbuttons')) {
          $bodytext.append('<p class="pdf-buttons" style="text-align:center;">\n' +
            '  <button class="pdf-miniaturen" style="margin-bottom:6px"><span class="lang_de">Seiten-Miniaturen an/aus</span><span class="lang_en">Page thumbnails on/off</span></button>\n' +
            '  <button class="pdf-vollbild" style="margin-bottom:6px"><span class="lang_de">auf Vollbild vergrößern</span><span class="lang_en">Enlarge to full screen</span></button>\n' +
            '</p>');
          $('.pdf-miniaturen').click(function () {
            $(this).parent().next().find('.df-ui-thumbnail').click();
          });
          $('.pdf-vollbild').click(function () {
            $(this).parent().next().find('.df-ui-fullscreen').click();
          });
        }
        $bodytext.append($('<div></div>')
          .addClass('_df_book')
          .attr('webgl', 'true')
          .attr('backgroundcolor', 'transparent')
          .attr('style', 'background:var(--uol-bg-stufe1);height: 500px;width:100%;max-width:900px;')
          .attr('source', $(this).attr('href')));
      });

      let pdfviewer_path = '/typo3conf/ext/unioltemplate/Resources/Public/Assets/Javascript/FlipBook/dflip/dflip/';
      $('<link><\/link>').attr('href', pdfviewer_path + 'css/dflip.min.css').attr('rel', 'stylesheet').appendTo('head');
      $('<link><\/link>').attr('href', pdfviewer_path + 'css/themify-icons.min.css').attr('rel', 'stylesheet').appendTo('head');
      $('<script><\/script>').attr('src', pdfviewer_path + 'js/dflip.min.js').appendTo('head');
    }
  }
  pdfviewer();

  /* Shortlink-KLick */
  $('#uol_shortlink').click(function(){
    let shortlink = $('#uol_shortlink').attr('href');
    if(!($('#uol_shortlink_box').length))
      $('#inhalt_infos > .container div').first().css('position','relative').append('<div id="uol_shortlink_box">Shortlink: <a id="uol_shortlink_link" href="' + shortlink /*$('#uol_shortlink').attr('href')*/ + '">' + shortlink /*$('#uol_shortlink').attr('href')*/ + '</a></div>');
    $('h2,h3,h4,h5').closest('div.frame[id^=c]').each(function(){
      $(this).addClass('uol_elementlink');
    });
    $('.uol_elementlink').each(function(){
      if(!($(this).prev().hasClass('uol_divlink')))
        $(this).prepend('<a class="uol_divlink" title="Link zu dieser Position" href="' + shortlink /* window.location.pathname */ + '#' + $(this).attr('id') + '"></a>');
    });
    return false;
  });

  $('#inhalt_infos > div > div').append('<a id="uol_qrlink" title="Zeige QR-Code" href="https://uol.de/index/qrcode/?d=' + encodeURIComponent($("a#uol_shortlink").attr('href')) + '"><i class="fa fa-qrcode" aria-hidden="true"></i></a>');
  $('#uol_qrlink').click(function(){
    if(!($("#uol_imgqrcode").length)) {
      $('#inhalt_infos > div > div').append('<br><img id="uol_imgqrcode" src="' + $(this).attr('href') + '">');
    }
    return false;
  });

  // Media2click: Hinweistext bei sehr kleinen Elementen verkleinern
  $('.media2click-wrap').each(function(){
    let wi = $(this).width();
    let norm = 320;
    if(wi < norm) {
      $(this).attr('style', 'font-size:' + (wi/norm*100) + '%;line-height:1.2;');
    }
  });

  darf_bearbeiten = $('a[href*="/typo3/module/web/layout"]').length;
  if(darf_bearbeiten) {
    $("body").append('<div id="uol_t3_feedit"></div>');
    $t3icon = $('.typo3-adminPanel-module-trigger-icon').first().clone();
    $t3icon.clone().appendTo("#uol_t3_feedit");
    $('#uol_t3_feedit').click(function(){
      if(!$('.uol_t3_feedit').length) {
        $('main div.frame[id^=c], main div.container[id^=c]').each(function(){
     		  $(this).addClass('uol_t3_fe');
        });
        $('.uol_t3_fe').append('<div class="uol_t3_feedit">' + $t3icon + '</div>');
        $('.uol_t3_feedit').each(function(){
          $(this).html('<a target="uol_t3be" href="/typo3/record/edit?edit%5Btt_content%5D%5B' +
            $(this).parent().attr('id').replace('c','') + '%5D=edit"></a>');
        });
        $('.uol_t3_feedit a').append($t3icon.clone());
        $('.uol_t3_fe.container').each(function(){
          if($(this).children('header').length == 0) {
            $(this).addClass('noheader');
          }
        });
        $('.uol_t3_feedit').hover(function(){
          $(this).parent().addClass('hover');
        }, function(){
          $(this).parent().removeClass('hover');
        });
      } else {
        $('.uol_t3_feedit').toggle();
      }
    });
  }

});
