
/**
 * Hack # scroll to in order to scroll below header
 * @param dest
 */
function hackScrollTo(dest, moreOffset = false) {
    try {
        if ($(dest).length) {
            var topOffset = $('.nav-main').outerHeight()  + 40;
            if(moreOffset) {
                // add still more offset if this is a tab, so we can see tab nav too
                topOffset += 80;
            }
            var destOffset = $(dest).offset().top;
            if(!$(dest).is(':visible')) {
                destOffset = $(dest).parent().offset().top;
            }
            if ($('.event-nav').length) {
                topOffset += $('.event-nav').height();
            }
            if ($('.navbar-sub').length) {
                topOffset += $('.navbar-sub').height();
            }
            $('body,html').animate({
                    scrollTop: destOffset - topOffset
                }, 600
            );
        }

    } catch(e) {
        console.log('catched');
    }
}

$(document).ready(function () {
    $('.accordion').on('show.bs.collapse', function (e) {
        window.location.hash = $(e.target).attr('id');
    })
    if (window.location.hash) {
        var dest = window.location.hash;
        var $tabLink = $('.nav-tabs a[href="' + dest + '"]');
        var moreOffset = false;
        if ($tabLink.length > 0) {
            $('.nav-tabs a').removeClass('active');
            $tabLink.tab('show');
            moreOffset = true;
        } else if ($('a[href="' + dest + '"][data-toggle="collapse"]').length) {
            var $accordionItem = $('a[href="' + dest + '"][data-toggle="collapse"]');
            $accordionItem.click();
        }
        hackScrollTo(dest, moreOffset);
    }

    $("a[href^='#']").off('click').on('click', function(e) {
        var navDest = $(this).attr('href');
        if (!$(this).parents('.nav-tabs, .nav-pills').length) {
            e.preventDefault();
            hackScrollTo(navDest, false);
            history.pushState(null, null, window.location.pathname + $(this).attr('href'));
        }

    });
});
