120 lines
3.4 KiB
JavaScript
120 lines
3.4 KiB
JavaScript
/* global $ */
|
|
var is_navbar_attached = false;
|
|
function position_navbar() {
|
|
if ($(window).width() < 862) { // @screen-sm
|
|
$('.navbar-icon').removeClass('ion-ios-arrow-up').addClass('ion-ios-arrow-down');
|
|
return;
|
|
}
|
|
if ($(window).scrollTop() > $('#navbar-anchor').offset().top) {
|
|
if(!is_navbar_attached) {attach_navbar(); is_navbar_attached = true;}
|
|
} else if (is_navbar_attached) {
|
|
detach_navbar();
|
|
is_navbar_attached = false;
|
|
}
|
|
$('.dropdown-menu').each(function(){
|
|
var direction = ($(this).height() + 10 < $('nav').offset().top - $(window).scrollTop()) ? 'up' : 'down';
|
|
flip_dropdowns($(this), direction);
|
|
});
|
|
}
|
|
|
|
$(window).load(function(){
|
|
$(window).trigger('scroll').trigger('resize');
|
|
});
|
|
|
|
function detach_navbar() {
|
|
$('#navbar-container').removeClass('stick-top').addClass('align');
|
|
$('.dropdown-menu').removeClass('dropdown').addClass('dropup');
|
|
}
|
|
|
|
|
|
function set_page_sizes() {
|
|
var win_height = $(window).height();
|
|
var win_width = $(window).width();
|
|
$('.page-height').each(function() {
|
|
$(this).height(win_height);
|
|
});
|
|
$('.page-width').each(function() {
|
|
$(this).width(win_width);
|
|
});
|
|
}
|
|
|
|
|
|
function attach_navbar() {
|
|
$('#navbar-container').removeClass('align').addClass('stick-top');
|
|
$('.dropdown-menu').removeClass('dropup').addClass('dropdown');
|
|
}
|
|
|
|
|
|
function flip_dropdowns(obj, direction) {
|
|
if (obj.hasClass('drop'+direction)){ return; }
|
|
var reverse = direction == 'up' ? 'down' : 'up';
|
|
obj.removeClass('drop' + reverse).addClass('drop' + direction);
|
|
obj.prev().children().removeClass('ion-ios-arrow-' + reverse).addClass('ion-ios-arrow-' + direction);
|
|
}
|
|
|
|
|
|
function space_navbar() { //This really should be CSS!
|
|
if ($(window).width() < 862) {return;} // @screen-sm
|
|
var nav_width = $('#navigation').outerWidth(true);
|
|
var full_width = $('nav > .container-fluid').outerWidth(true) - $('.home-button').outerWidth(true);
|
|
var margin = (full_width - nav_width) / 2;
|
|
$('#navigation').css('margin-left', margin);
|
|
}
|
|
|
|
|
|
function checkDomain(url) {
|
|
if ( url.indexOf('//') === 0 ) { url = location.protocol + url; }
|
|
return url.toLowerCase().replace(/([a-z])?:\/\//,'$1').split('/')[0];
|
|
}
|
|
|
|
|
|
function isExternal(url) {
|
|
return ( ( url.indexOf(':') > -1 || url.indexOf('//') > -1 ) && checkDomain(location.href) !== checkDomain(url) );
|
|
}
|
|
|
|
|
|
function is_on_screen(elm) {
|
|
var vpH = $(window).height(), // Viewport Height
|
|
st = $(window).scrollTop(), // Scroll Top
|
|
y = $(elm).offset().top,
|
|
elementHeight = $(elm).height();
|
|
return ((y < (vpH + st)) && (y > (st - elementHeight)));
|
|
}
|
|
|
|
|
|
function navTo(url){
|
|
location.href=url;
|
|
}
|
|
|
|
$(function() { // https://css-tricks.com/snippets/jquery/smooth-scrolling/
|
|
$('a[href*=#]:not([href=#])').click(function() {
|
|
if (location.pathname.replace(/^\//, '') === this.pathname.replace(/^\//, '')
|
|
&& location.hostname === this.hostname) {
|
|
var target = $(this.hash);
|
|
target = target.length ? target : $('[name=' + this.hash.slice(1) + ']');
|
|
if (target.length) {
|
|
$('html,body').animate({
|
|
scrollTop: target.offset().top
|
|
}, 1000);
|
|
return false;
|
|
}
|
|
}
|
|
});
|
|
});
|
|
|
|
$('a[href="soon"]').click(function (e) {
|
|
e.preventDefault();
|
|
alert('Content coming soon, stand by!');
|
|
});
|
|
|
|
|
|
|
|
$(window).scroll(function() {
|
|
position_navbar();
|
|
});
|
|
|
|
|
|
$(window).resize(function() {
|
|
set_page_sizes();
|
|
space_navbar();
|
|
});
|