// hero parallax used to be here

window.addEventListener('DOMContentLoaded', function() {
  const innerWidth = window.innerWidth

  // Cycle through anchor links and attach click listeners
  document.addEventListener('click', clickListener);
  document.addEventListener('touch', clickListener);

  function clickListener(event) {
    const href = event.target.getAttribute('href');

    if(href !== null) {
      let hash_split = href.split('#'),
          target = document.querySelector('[id="'+hash_split[1]+'"]'),
          coords = null;

      if(hash_split.length === 2/*  && hash_split[1].length > 0 */ && typeof target === 'object') {
        try {
          coords = target.getBoundingClientRect();
        } catch(e) {
          // Scroll to top if we can't find a target to scroll to
          coords = document.body.getBoundingClientRect();
          // console.warn('No anchor available to scroll to or something hecked up.\r\n'+e);
        }

        // Scroll the window to the anchor
        event.preventDefault();
        window.scrollTo({left: coords['x'], top: coords['y'], behavior: 'smooth'});
      }
    }
  }

  // service blocks
  let service_blocks  = document.querySelectorAll('div.saag__services--item'),
      service_details = document.querySelectorAll('div.saag__services--details > div.row');

  if(typeof service_blocks !== 'undefined'/*  && window.innerWidth > 1023 */) {
    for(let i = 0, lgth = service_blocks.length; i < lgth; i++) {
      service_blocks[i].addEventListener('mouseenter', function(e) {
        toggleServiceDetails(e, service_details);
      });
      service_blocks[i].addEventListener('mouseleave', function(e) {
        toggleServiceDetails(e, service_details);
      });
    }
  }

  function toggleServiceDetails(event, service_details) {
    if(window.innerWidth < 1024) {
      // console.info('innerWidth less than 1024px, stopping event…')

      return true
    }

    let detail_block = document.getElementById(event.target.getAttribute('data-show-service'));

    service_details.forEach(function(item) { item.classList.add('hide') } );

    if(event.type === 'mouseenter' && detail_block !== null) {
      detail_block.classList.remove('hide');
    } else if(event.type === 'mouseleave' && detail_block !== null) {
      detail_block.classList.add('hide');
      service_details[0].classList.remove('hide');
    } else {
      // do nothing
    }
  }

  // share widget
  let shareit = document.getElementById('sharetoggle');

  if(typeof shareit !== 'undefined' && shareit !== null) {
    let sharewidget = document.getElementById('sharewidget');

    shareit.addEventListener('click', function(e) {
      e.preventDefault();
      e.stopPropagation();

      sharewidget.classList.toggle('hidden');
    })
  }

  if(typeof jQuery.fn.foundation !== 'undefined' && jQuery.isFunction(jQuery.fn.foundation)) {
    jQuery(document).foundation();
  }

  if(typeof lightcase !== 'undefined' && jQuery.isFunction(jQuery.fn.lightcase)) {
    // Lightbox
    jQuery('a[data-rel^=lightcase]').lightcase();
  }

  if(typeof flatpickr !== 'undefined') {
    dateboxes = document.querySelectorAll('.datepicker');

    for(i = 0, dlen = dateboxes.length; i < dlen; i++) {
      flatpickr(dateboxes[i], { allowInput: true, altFormat: 'M j, Y \@ h:iK', altInput: true, dateFormat: 'Y-m-d H:i:00', enableTime: true });
    }
  }

  // Height matching script
  if(typeof rightHeight !== 'undefined') {
    rightHeight.init();
  }

  // bottom fan – parallax effect
  if(typeof ScrollMagic !== 'undefined' && typeof ScrollMagic === 'function') {
    const controller = new ScrollMagic.Controller()

    let pf2          = document.querySelector('.fan__two'),
        pf3          = document.querySelector('.fan__three'),
        hero_layer1  = document.querySelectorAll('.parallax__wrapper > .layer1'),
        hero_layer2  = document.querySelectorAll('.parallax__wrapper > .layer2'),
        hero_layer3  = document.querySelectorAll('.parallax__wrapper > .layer3'),
        hero_layer4  = document.querySelectorAll('.parallax__wrapper > .layer4'),
        hero_trigger = document.getElementById('copyarea'),
        trigger      = document.getElementById('fanTrigger')

    // hero image(s)
    try {
      // console.log('Attempting to tween hero layers…')

      let tweenHL1 = new TweenMax.to(hero_layer1, 0.25, { y: '-5%'}),
          tweenHL2 = new TweenMax.to(hero_layer2, 0.5, { y: '-10%'}),
          tweenHL3 = new TweenMax.to(hero_layer3, 0.8, { y: '-15%'}),
          tweenHL4 = new TweenMax.to(hero_layer4, 1.5, { y: '-20%'})
      // tweenHeroes = new TweenMax.to(hero_layers, 0.75, { y: '-25%'})

      sceneHL1 = new ScrollMagic.Scene({
        triggerElement: hero_trigger,
        triggerHook: 1
      }).setTween(tweenHL1).addTo(controller)

      sceneHL2 = new ScrollMagic.Scene({
        triggerElement: hero_trigger,
        triggerHook: 1
      }).setTween(tweenHL2).addTo(controller)

      sceneHL3 = new ScrollMagic.Scene({
        triggerElement: hero_trigger,
        triggerHook: 1
      }).setTween(tweenHL3).addTo(controller)

      sceneHL4 = new ScrollMagic.Scene({
        triggerElement: hero_trigger,
        triggerHook: 1
      }).setTween(tweenHL4).addTo(controller)

    } catch(err) {
      console.error('asdf: '+err.toString())
    }

    // bottom fan
    try {
      let pf2Tween = new TweenMax.to(pf2, 0.25, { top: '-175px' }),
          pf3Tween = new TweenMax.to(pf3, 0.35, { top: '-275px' })

      pf2Scene = new ScrollMagic.Scene({
        triggerElement: trigger,
      }).setTween(pf2Tween).addTo(controller)

      pf3Scene = new ScrollMagic.Scene({
        triggerElement: trigger,
      }).setTween(pf3Tween).addTo(controller)
    } catch(err) {
      console.error('Failed to add parallax effect to bottom fan with error: '+err.toString())
    }
  }

  // reviews slider
  if(typeof tns !== 'undefined') {
    let reviewSlider = tns ({
      autoHeight: true,
      autoplay: true,
      autoplayButtonOutput: false,
      container: '.client-testimonials__slider',
      controls: true,
      items: 1,
      nextButton: '.tns-next',
      prevButton: '.tns-prev',
      slideBy: 'page',
    })
  }

  if(typeof InfiniteScroll !== 'undefined' && document.querySelector('.nav-next > a') !== null) {
    let infScroll = new InfiniteScroll('.items-leading', {
      append: '.items-leading > .column',
      button: '.inf-view-more',
      checkLastPage: true,
      hideNav: '.pagination',
      history: false,
      path: '.nav-next > a',
      scrollThreshold: false,
      status: '.scroll-status',
    })

    infScroll.button.element.classList.remove('hide')
  }

  // bxSlider
  // Mode choices: horizontal, fade
  if(typeof jQuery.fn.bxSlider !== 'undefined' && jQuery.isFunction(jQuery.fn.bxSlider)) {
    slider = jQuery('.bxslider').bxSlider({
      adaptiveHeight: true,
      auto:           true,
      autoHover:      true,
      controls:       false,
      mode:           'horizontal',
      pager:          false,
      pause:          4000,
      speed:          300,
      touchEnabled:   false,
      onSliderLoad:   function() {
        let s = this[0],
            redraw = false,
            slides = s.querySelectorAll('.bannerslide');

        // Unhide slides (and redraw) if necessary
        // slides.forEach(function(v, k) {
        for(let i = 0, lgt = slides.length; i < lgt; i++) {
          let v = slides[i];

          if(v.classList.contains('hide')) {
            redraw = true;

            v.classList.remove('hide');
          }
        }

        if(redraw === true) {
          // console.log('All slides unhidden, redrawing slider.');
          this.redrawSlider();
        }
      }
    });
  }
})

// Function to re-adjust the heights of copy and sidebar
function adjustCopy() {
  if(typeof rightHeight !== 'undefined') {
    let container = document.querySelector('.copyarea > div.row');

    setTimeout(function() {
      rightHeight.adjustContainerHeight(container);
      console.log(rightHeight);
    }, 1000);
  }
}
