(function ($) {
  /**
   * Help manage the focusability/ accessibility of off-screen slides
   */
  function manageSlideFocusability (carouselSelector) {
    var slides = Array.from(carouselSelector.querySelectorAll('.owl-item')),
        handleMutation = function (mutations, observer) {
          observer.disconnect()
          mutations.forEach(function (mutation) {
            var slide = mutation.target;
            if (slide.classList.contains('active')) {
              slide.setAttribute('aria-hidden', 'false')
              Array.from(slide.querySelectorAll('a')).forEach(function (link) {
                link.setAttribute('tabindex', '0')
              })
            } else {
              slide.setAttribute('aria-hidden', 'true')
              Array.from(slide.querySelectorAll('a')).forEach(function (link) {
                link.setAttribute('tabindex', '-1')
              })
            }
            observer.observe(slide, { attributes: true })
          })
        },
        observer = new MutationObserver(handleMutation);

    slides.forEach(function (slide) {
      if (!slide.classList.contains('active')) {
        slide.setAttribute('aria-hidden', 'true')
        // remove focusability from links
        Array.from(slide.querySelectorAll('a')).forEach(function (link) {
          link.setAttribute('tabindex', '-1')
        })
      }
      observer.observe(slide, { attributes: true })
    })
  }

  function handleControlKeyPress (control, e) {
    if (e.key === 'Enter' || e.key === ' ' || e.key === 'Spacebar') {
      e.preventDefault()
      $(control).click()
    }
  }

  $(document).ready(function () {
    var owlCarousels = Array.from(document.querySelectorAll('.testimonials-slider')),
        simulateClick = function () {
          $(this).on('keydown', function (e) {
            if (e.key === 'Enter' || e.key === ' ' || e.key === 'Spacebar') {
              e.preventDefault()
              jQuery(this).trigger('click')
            }
          })
        }

    owlCarousels.forEach(function(carouselSelector) {
      $(carouselSelector).owlCarousel({
        items: 1,
        nav: true,
        dots: true,
        dotsContainer: '.custom-dots-' + carouselSelector.id,
        navContainer: '.custom-nav-' + carouselSelector.id,
        autoHeight: false
      });

      var dots = carouselSelector.parentNode.querySelectorAll('.owl-dot'),
          nextArrow = carouselSelector.parentNode.querySelector('.owl-next');

      dots.forEach(function(dot, index) {
        $(dot).attr({
          role: 'button',
          tabindex: '0',
          'aria-label': 'Go To Slide ' + (index + 1)
        });

        dot.addEventListener('keypress', handleControlKeyPress.bind(this, dot));
      });

      nextArrow.setAttribute('tabindex', 0);
      nextArrow.setAttribute('role', 'button');
      nextArrow.addEventListener('keypress', handleControlKeyPress.bind(this, nextArrow));

      manageSlideFocusability(carouselSelector);
    });

    $('.owl-next').html('<svg class="testimonial__owl_arrow" aria-label="Next Slide"><use href="#white-arrow-next" xlink:href="#white-arrow-next"></use></svg>');

    var dotsWidth = $('.owl-general-styles .owl-dots').width(),
      navLeftIndent = dotsWidth + 30
    $('.owl-general-styles .owl-nav').css('padding-left', navLeftIndent)


    /* Recent News Slider */
    var owlCarousels_recent = Array.from(document.querySelectorAll('.recent-slider')),
        simulateClick = function () {
          $(this).on('keydown', function (e) {
            if (e.key === 'Enter' || e.key === ' ' || e.key === 'Spacebar') {
              e.preventDefault()
              jQuery(this).trigger('click')
            }
          })
        }

    owlCarousels_recent.forEach(function(carouselSelector) {
      $(carouselSelector).owlCarousel({
        items: 3,
        nav: true,
        dots: true,
        margin: 32,
        dotsContainer: '.custom-dots-' + carouselSelector.id,
        navContainer: '.custom-nav-' + carouselSelector.id,
        autoHeight: false,
        responsive : {
          0 : {
            items: 1
          },
          600 : {
            items: 2
          },
          1024 : {
            items: 3
          }
        }
      });

    });


    /* Campus Slider */
    var owlCarousels_campus = Array.from(document.querySelectorAll('.campus-slider')),
        simulateClick = function () {
          $(this).on('keydown', function (e) {
            if (e.key === 'Enter' || e.key === ' ' || e.key === 'Spacebar') {
              e.preventDefault()
              jQuery(this).trigger('click')
            }
          })
        }

    owlCarousels_campus.forEach(function(carouselSelector) {
      $(carouselSelector).owlCarousel({
        items: 3,
        nav: true,
        loop: true,
        dots: true,
        margin: 32,
        dotsContainer: '.custom-dots-' + carouselSelector.id,
        navContainer: '.custom-nav-' + carouselSelector.id,
        autoHeight: false,
        responsive : {
          0 : {
            items: 1
          },
          600 : {
            items: 2
          },
          1024 : {
            items: 3
          }
        }
      });


    });



  })

})(jQuery)