1
Fork 0
This repository has been archived on 2023-03-26. You can view files and clone it, but cannot push or open issues or pull requests.
theorangeone.net-legacy/static/src/js/events.js

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();
});