Team:Concordia/JS/Avgrund
From 2013.igem.org
/*!
* avgrund 0.1 * http://lab.hakim.se/avgrund * MIT licensed * * Copyright (C) 2012 Hakim El Hattab, http://hakim.se */
var Avgrund = (function(){
var container = document.documentElement, popup = document.querySelector( '.avgrund-popup-animate' ), cover = document.querySelector( '.avgrund-cover' ), currentState = null;
container.className = container.className.replace( /\s+$/gi, ) + ' avgrund-ready';
// Deactivate on ESC function onDocumentKeyUp( event ) {
if( event.keyCode === 27 ) { deactivate(); }
}
// Deactivate on click outside function onDocumentClick( event ) {
if( event.target === cover ) { deactivate(); }
}
function activate( state ) {
document.addEventListener( 'keyup', onDocumentKeyUp, false ); document.addEventListener( 'click', onDocumentClick, false ); document.addEventListener( 'touchstart', onDocumentClick, false );
removeClass( popup, currentState ); addClass( popup, 'no-transition' ); addClass( popup, state );
setTimeout( function() { removeClass( popup, 'no-transition' ); addClass( container, 'avgrund-active' ); }, 0 );
currentState = state;
}
function deactivate() {
document.removeEventListener( 'keyup', onDocumentKeyUp, false ); document.removeEventListener( 'click', onDocumentClick, false ); document.removeEventListener( 'touchstart', onDocumentClick, false );
removeClass( container, 'avgrund-active' ); removeClass( popup, 'avgrund-popup-animate')
}
function disableBlur() {
addClass( document.documentElement, 'no-blur' );
}
function addClass( element, name ) {
element.className = element.className.replace( /\s+$/gi, ) + ' ' + name;
}
function removeClass( element, name ) {
element.className = element.className.replace( name, );
}
function show(selector){
popup = document.querySelector( selector ); addClass(popup, 'avgrund-popup-animate'); activate(); return this;
} function hide() {
deactivate();
}
return {
activate: activate, deactivate: deactivate, disableBlur: disableBlur, show: show, hide: hide
}
})();