Files
aircv/js/layout.js

176 lines
5.7 KiB
JavaScript
Executable File

var Layout = function () {
// detect mobile device
var isMobileDevice = function() {
return ((
navigator.userAgent.match(/Android/i) ||
navigator.userAgent.match(/BlackBerry/i) ||
navigator.userAgent.match(/iPhone|iPad|iPod/i) ||
navigator.userAgent.match(/Opera Mini/i) ||
navigator.userAgent.match(/IEMobile/i)
) ? true : false);
}
// handle on page scroll
var handleHeaderOnScroll = function() {
if ($(window).scrollTop() > 60) {
$("body").addClass("page-on-scroll");
} else {
$("body").removeClass("page-on-scroll");
}
}
// Handle Header
var handleOnePageHeader = function() {
// jQuery to collapse the navbar on scroll
if ($('.navbar').offset().top > 150) {
$('.navbar-fixed-top').addClass('top-nav-collapse');
}
$(window).scroll(function() {
if ($('.navbar').offset().top > 150) {
$('.navbar-fixed-top').addClass('top-nav-collapse');
} else {
$('.navbar-fixed-top').removeClass('top-nav-collapse');
}
});
var $offset = 0;
$offset = $(".navbar-fixed-top").height()-20;
// jQuery for page scrolling feature - requires jQuery Easing plugin
$('.js_nav-item a').bind('click', function(event) {
var $position = $($(this).attr('href')).offset().top;
$('html, body').stop().animate({
scrollTop: $position - $offset
}, 600);
event.preventDefault();
});
var $scrollspy = $('body').scrollspy({target: '.navbar-fixed-top', offset: $offset+2});
// Collapse Navbar When It's Clickicked
$(window).scroll(function() {
$('.navbar-collapse.in').collapse('hide');
});
}
// handle carousel
var handleCarousel = function() {
var $item = $('.carousel .item');
var $wHeight = $(window).height();
$item.eq(0).addClass('active');
$item.height($wHeight);
$item.addClass('full-screen');
$('.carousel img').each(function() {
var $src = $(this).attr('src');
var $color = $(this).attr('data-color');
$(this).parent().css({
'background-image' : 'url(' + $src + ')',
'background-color' : $color
});
$(this).remove();
});
$(window).on('resize', function (){
$wHeight = $(window).height();
$item.height($wHeight);
});
}
// handle group element heights
var handleHeight = function() {
$('[data-auto-height]').each(function() {
var parent = $(this);
var items = $('[data-height]', parent);
var height = 0;
var mode = parent.attr('data-mode');
var offset = parseInt(parent.attr('data-offset') ? parent.attr('data-offset') : 0);
items.each(function() {
if ($(this).attr('data-height') == "height") {
$(this).css('height', '');
} else {
$(this).css('min-height', '');
}
var height_ = (mode == 'base-height' ? $(this).outerHeight() : $(this).outerHeight(true));
if (height_ > height) {
height = height_;
}
});
height = height + offset;
items.each(function() {
if ($(this).attr('data-height') == "height") {
$(this).css('height', height);
} else {
$(this).css('min-height', height);
}
});
if(parent.attr('data-related')) {
$(parent.attr('data-related')).css('height', parent.height());
}
});
}
// Handle Work Popup
var handleWorkPopup = function() {
var overlay = $('.work-popup-overlay'),
close = $('.work-popup-close'),
trigger = $('.work-popup-trigger'),
content = $('.work-popup-content');
trigger.on('click', function() {
$(this).find('.work-popup-overlay').removeClass('work-popup-overlay-show');
$(this).find('.work-popup-overlay').addClass('work-popup-overlay-show');
});
close.on('click', function(e) {
e.stopPropagation();
overlay.removeClass('work-popup-overlay-show');
});
overlay.on('click', function(e) {
e.stopPropagation();
overlay.removeClass('work-popup-overlay-show');
});
}
return {
init: function () {
// initial setup for fixed header
handleHeaderOnScroll();
handleOnePageHeader(); // initial header
handleCarousel(); // initial setup for carousel
handleHeight(); // initial setup for group element height
handleWorkPopup(); // initial setup for group work popup
// handle minimized header on page scroll
$(window).scroll(function() {
handleHeaderOnScroll();
});
},
// To get the correct viewport width based on http://andylangton.co.uk/articles/javascript/get-viewport-size-javascript/
getViewPort: function() {
var e = window,
a = 'inner';
if (!('innerWidth' in window)) {
a = 'client';
e = document.documentElement || document.body;
}
return {
width: e[a + 'Width'],
height: e[a + 'Height']
};
},
};
}();
$(document).ready(function() {
Layout.init();
});