Initial commit

This commit is contained in:
czmj
2017-08-31 12:44:57 +01:00
commit 9006bea1b0
57 changed files with 27411 additions and 0 deletions

43
js/_events.js Normal file
View File

@ -0,0 +1,43 @@
var cj = cj ? cj : {};
(function($) {
/**
* Publish events using Pub/Sub
* @namespace events
* @see {@link https://github.com/cowboy/jquery-tiny-pubsub}
*/
$.extend(cj, {
/**
* Publish event when the page is ready.
* @function pageReady
*/
pageReady: function() {
var self = this;
$.publish('pageReady_prioritise', self);
$.publish('pageReady', self);
self.pageLoaded();
},
/**
* Publish event when the page has loaded.
* @function pageLoaded
*/
pageLoaded: function() {
var self = this;
self.settings.$window.on('load', function() {
$.publish('pageLoaded', self);
});
},
/**
* Publish event when an AJAX request has finished.
* @function ajaxLoaded
*/
ajaxLoaded: function() {
var self = this;
$.publish('ajaxLoaded', self);
}
});
}(jQuery));

3
js/_init.js Normal file
View File

@ -0,0 +1,3 @@
$(function(){
var init = (cj !== undefined) ? cj.pageReady() : null;
});

12
js/_settings.js Normal file
View File

@ -0,0 +1,12 @@
var cj = cj ? cj : {};
(function($) {
$.extend(cj, {
settings: {
// cache some common variables
$window: $(window),
$html: $('html'),
$body: $('body'),
$htmlbody: $('html,body')
}
});
}(jQuery));

58
js/fixHeader.js Normal file
View File

@ -0,0 +1,58 @@
var cj = cj ? cj : {};
(function($) {
$.extend(cj, {
fixHeader: {
// jQuery DOM caching
$nav: null,
$header: null,
// CSS selectors
navSelector: '.navigation',
headerSelector: '.header',
// Classes
fixedClass: 'navigation--fixed',
// Misc
navHeight: 0,
headerHeight: 0,
init: function() {
var self = this;
self.$nav = $(self.navSelector);
self.$header = $(self.headerSelector);
if (!self.$nav || !self.$nav.length) {
return;
}
if (!self.$header || !self.$header.length) {
return;
}
self.navHeight = self.$nav.outerHeight();
self.headerHeight = self.$header.outerHeight() - self.navHeight;
self.$navigationClone = self.$nav.clone();
self.$navigationClone.addClass('navigation--clone');
self.$navigationClone.appendTo(self.$header);
self.$navigationClone.hide();
self.bindEvents();
},
bindEvents: function() {
var self = this;
$(window).scroll(function () {
if ($(this).scrollTop() > self.headerHeight) {
self.$nav.addClass(self.fixedClass);
self.$navigationClone.show();
} else {
self.$nav.removeClass(self.fixedClass);
self.$navigationClone.hide();
}
});
}
}
});
$.subscribe('pageReady', function() {
cj.fixHeader.init();
});
}(jQuery));

21
js/pageClasses.js Normal file
View File

@ -0,0 +1,21 @@
var cj = cj ? cj : {};
(function($) {
$.extend(cj, {
pageReadyClass: function() {
var self = this;
self.settings.$html.addClass('page-ready');
},
pageLoadedClass: function() {
var self = this;
self.settings.$html.addClass('page-loaded');
}
});
$.subscribe('pageReady', function() {
cj.pageReadyClass();
});
$.subscribe('pageLoaded', function() {
cj.pageLoadedClass();
});
}(jQuery));

52
js/scrollTo.js Normal file
View File

@ -0,0 +1,52 @@
var cj = cj ? cj : {};
(function($) {
$.extend(cj, {
scrollTo: {
// jQuery DOM caching
$scrollTo: null,
// CSS selectors
scrollToSelector: '[data-scroll-to-id]',
// Classes
// Misc
speed: 500,
init: function() {
var self = this;
self.$scrollTo = $(self.scrollToSelector);
if (!self.$scrollTo || !self.$scrollTo.length) {
return;
}
self.bindEvents();
},
bindEvents: function() {
var self = this;
self.$scrollTo.on('click', function(e){
e.preventDefault();
self.scrollToId($(this));
});
},
scrollToId: function($trigger) {
var self = this,
id = $trigger.attr('href'),
offset = $trigger.attr('data-scroll-offset') || 0,
speed = $trigger.attr('data-scroll-speed') || self.speed;
// if (history.pushState && window.location.hash !== id) {
// history.pushState(null, null, id);
// }
cj.settings.$htmlbody.animate({
scrollTop: ($(id).offset().top - offset)
}, speed);
}
}
});
$.subscribe('pageReady', function() {
cj.scrollTo.init();
});
}(jQuery));