openbackloggery/collection/core/static/js/main.js

173 lines
5.1 KiB
JavaScript

/*
Eventually by HTML5 UP
html5up.net | @ajlkn
Free for personal and commercial use under the CCA 3.0 license (html5up.net/license)
*/
(function() {
"use strict";
// Methods/polyfills.
// classList | (c) @remy | github.com/remy/polyfills | rem.mit-license.org
!function(){function t(t){this.el=t;for(var n=t.className.replace(/^\s+|\s+$/g,"").split(/\s+/),i=0;i<n.length;i++)e.call(this,n[i])}function n(t,n,i){Object.defineProperty?Object.defineProperty(t,n,{get:i}):t.__defineGetter__(n,i)}if(!("undefined"==typeof window.Element||"classList"in document.documentElement)){var i=Array.prototype,e=i.push,s=i.splice,o=i.join;t.prototype={add:function(t){this.contains(t)||(e.call(this,t),this.el.className=this.toString())},contains:function(t){return-1!=this.el.className.indexOf(t)},item:function(t){return this[t]||null},remove:function(t){if(this.contains(t)){for(var n=0;n<this.length&&this[n]!=t;n++);s.call(this,n,1),this.el.className=this.toString()}},toString:function(){return o.call(this," ")},toggle:function(t){return this.contains(t)?this.remove(t):this.add(t),this.contains(t)}},window.DOMTokenList=t,n(Element.prototype,"classList",function(){return new t(this)})}}();
// canUse
window.canUse=function(p){if(!window._canUse)window._canUse=document.createElement("div");var e=window._canUse.style,up=p.charAt(0).toUpperCase()+p.slice(1);return p in e||"Moz"+up in e||"Webkit"+up in e||"O"+up in e||"ms"+up in e};
// window.addEventListener
(function(){if("addEventListener"in window)return;window.addEventListener=function(type,f){window.attachEvent("on"+type,f)}})();
// Vars.
var $body = document.querySelector('body');
// Disable animations/transitions until everything's loaded.
$body.classList.add('is-loading');
window.addEventListener('load', function() {
window.setTimeout(function() {
$body.classList.remove('is-loading');
}, 100);
});
// Slideshow Background.
(function() {
// Settings.
var settings = {
// Images (in the format of 'url': 'alignment').
images: {
'static/images/bg01.jpg': 'center',
'static/images/bg02.jpg': 'center'
},
// Delay.
delay: 6000
};
// Vars.
var pos = 0, lastPos = 0,
$wrapper, $bgs = [], $bg,
k, v;
// Create BG wrapper, BGs.
$wrapper = document.createElement('div');
$wrapper.id = 'bg';
$body.appendChild($wrapper);
for (k in settings.images) {
// Create BG.
$bg = document.createElement('div');
$bg.style.backgroundImage = 'url("' + k + '")';
$bg.style.backgroundPosition = settings.images[k];
$wrapper.appendChild($bg);
// Add it to array.
$bgs.push($bg);
}
// Main loop.
$bgs[pos].classList.add('visible');
$bgs[pos].classList.add('top');
// Bail if we only have a single BG or the client doesn't support transitions.
if ($bgs.length == 1
|| !canUse('transition'))
return;
window.setInterval(function() {
lastPos = pos;
pos++;
// Wrap to beginning if necessary.
if (pos >= $bgs.length)
pos = 0;
// Swap top images.
$bgs[lastPos].classList.remove('top');
$bgs[pos].classList.add('visible');
$bgs[pos].classList.add('top');
// Hide last image after a short delay.
window.setTimeout(function() {
$bgs[lastPos].classList.remove('visible');
}, settings.delay / 2);
}, settings.delay);
})();
// Signup Form.
(function() {
// Vars.
var $form = document.querySelectorAll('#signup-form')[0],
$submit = document.querySelectorAll('#signup-form input[type="submit"]')[0],
$message;
// Bail if addEventListener isn't supported.
if (!('addEventListener' in $form))
return;
// Message.
$message = document.createElement('span');
$message.classList.add('message');
$form.appendChild($message);
$message._show = function(type, text) {
$message.innerHTML = text;
$message.classList.add(type);
$message.classList.add('visible');
window.setTimeout(function() {
$message._hide();
}, 3000);
};
$message._hide = function() {
$message.classList.remove('visible');
};
// Events.
// Note: If you're *not* using AJAX, get rid of this event listener.
$form.addEventListener('submit', function(event) {
event.stopPropagation();
event.preventDefault();
// Hide message.
$message._hide();
// Disable submit.
$submit.disabled = true;
// Process form.
// Note: Doesn't actually do anything yet (other than report back with a "thank you"),
// but there's enough here to piece together a working AJAX submission call that does.
window.setTimeout(function() {
// Reset form.
$form.reset();
// Enable submit.
$submit.disabled = false;
// Show message.
$message._show('success', 'Thank you!');
//$message._show('failure', 'Something went wrong. Please try again.');
}, 750);
});
})();
})();