define([
'jquery', 'vars'
],
function ($, vars) {
'use strict';
$(function() {
// var parallaxVal = 1.4;
var $sections = $('.b-accordion-section');
var $accordions = $sections.filter(':has(.section-title)');
var $accordionNav = $('.b-accordion-nav');
var $accordionNavList = $('.b-accordion-nav-list');
/**
* Do not run if accordion sections are not found
*/
if ( !$accordions.length || !$accordionNav.length || !$accordionNavList.length ) {
return;
}
/**
* Generate nav tabs from sections with section titles
*/
$accordions.each(function() {
var $sectionHeader = $(this).find('.b-accordion-section-header');
// var $sectionTitle = $(this).find('.section-title');
$accordionNavList.append('
' + $sectionHeader.html() + '');
});
/**
* Scroll to top of accordion section on click
*/
$('.b-accordion-nav-item, .b-accordion-section-header, .accordion-link').on('click', function(e) {
e.preventDefault();
scrollTo( $(this).find('a').attr('href') );
});
$('.back-to-section').on('click', function(e) {
e.preventDefault();
scrollTo( $(this).attr('href') );
});
function scrollTo(href) {
var scrollTop = $(href).offset().top - vars.mastheadHeight;
$('html, body').animate({
scrollTop: scrollTop
}, 400);
//$.scrollify.move(href);
}
/**
* Initiate functions to call on window scroll
*/
$(window).on('scroll', windowScroll);
$(window).on('touchstart', windowScroll);
$(window).on('touchend', windowScroll);
$(window).on('touchcancel', windowScroll);
$(window).on('touchmove', windowScroll);
windowScroll();
function windowScroll() {
toggleNav();
toggleNavItems();
/**
* Parallax sections on scroll
*/
// sections.each(function() {
// translateOnScroll( $(this), vars.scrollBottom );
// });
}
/**
* Toggle static / fixed position of nav on scroll
*/
function toggleNav() {
var firstTop = $accordions.first().offset().top;
var firstTopNavHeight = firstTop + $accordionNav.outerHeight();
var accordionNavTop = $accordionNav.offset().top;
var accordionNavBottom = $accordionNav.offset().top + $accordionNav.outerHeight(true);
// console.log(vars.scrollBottom);
// console.log(accordionNavBottom);
// console.log("firstTop:" + firstTop);
// console.log("accordionNavTop:" + accordionNavTop);
// console.log("scrollBottom:" + vars.scrollBottom);
// console.log("accordionNavBottom:" + accordionNavBottom);
if ( vars.scrollBottom >= accordionNavBottom && !$accordionNav.hasClass('is-fixed') ) {
$accordionNav.addClass('is-fixed');
$accordions.first().addClass('inactive');
//$accordionNav.prev().css({'padding-bottom': $accordionNav.outerHeight()});
} else if ( accordionNavTop <= firstTop ) {
$accordionNav.removeClass('is-fixed');
//$accordionNav.prev().css({'padding-bottom': 0});
}
}
/**
* Show / hide individual nav tabs when scrolling past
*/
function toggleNavItems() {
$accordions.each(function(i) {
var thisOffsetTop = $(this).offset().top;
var thisId = $(this).attr('id');
var $navItem = $("a[href='#" + thisId + "']").closest('li');
var navOffsetTop = $navItem.offset().top;
// console.log(firstTop);
// console.log(navOffsetTop);
if ( navOffsetTop > thisOffsetTop ) {
$navItem.addClass('inactive');
} else if ( navOffsetTop <= thisOffsetTop ) {
$navItem.removeClass('inactive');
}
});
}
/**
* Parallax on scroll
*/
// function translateOnScroll(section, scrollBottom) {
// sectionBottom = section.position().top + section.outerHeight(true);
// sectionInner = section.find('.b-accordion-section-bg');
// if ( scrollBottom > sectionBottom)
// {
// if ( section.next().length ) {
// sectionNextTop = section.next().position().top;
// }
// // console.log(sectionNextTop);
// // console.log(scrollBottom);
// if ( scrollBottom > sectionNextTop ) {
// //console.log('next section');
// }
// scrollDifference = scrollBottom - sectionBottom;
// translateY = scrollDifference / parallaxVal;
// sectionInner.css({
// '-webkit-transform' : 'translate3d(0, ' + translateY + 'px, 0)',
// '-moz-transform' : 'translate3d(0, ' + translateY + 'px, 0)',
// '-ms-transform' : 'translate3d(0, ' + translateY + 'px, 0)',
// '-o-transform' : 'translate3d(0, ' + translateY + 'px, 0)',
// 'transform' : 'translate3d(0, ' + translateY + 'px, 0)'
// });
// }
// else
// {
// sectionInner.css({
// '-webkit-transform' : 'translate3d(0, 0, 0)',
// '-moz-transform' : 'translate3d(0, 0, 0)',
// '-ms-transform' : 'translate3d(0, 0, 0)',
// '-o-transform' : 'translate3d(0, 0, 0)',
// 'transform' : 'translate3d(0, 0, 0)'
// });
// }
// }
});
});