Advertisement
Guest User

avgrund.js

a guest
Jan 17th, 2013
32
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. /*!
  2.  * avgrund 0.1
  3.  * http://lab.hakim.se/avgrund
  4.  * MIT licensed
  5.  *
  6.  * Copyright (C) 2012 Hakim El Hattab, http://hakim.se
  7.  */
  8. var Avgrund = (function(){
  9.  
  10.     var container = document.documentElement,
  11.         popup = document.querySelector( '.avgrund-popup-animate' ),
  12.         cover = document.querySelector( '.avgrund-cover' ),
  13.         currentState = null;
  14.  
  15.     container.className = container.className.replace( /\s+$/gi, '' ) + ' avgrund-ready';
  16.  
  17.     // Deactivate on ESC
  18.     function onDocumentKeyUp( event ) {
  19.         if( event.keyCode === 27 ) {
  20.             deactivate();
  21.         }
  22.     }
  23.  
  24.     // Deactivate on click outside
  25.     function onDocumentClick( event ) {
  26.         if( event.target === cover ) {
  27.             deactivate();
  28.         }
  29.     }
  30.  
  31.     function activate( state ) {
  32.         document.addEventListener( 'keyup', onDocumentKeyUp, false );
  33.         document.addEventListener( 'click', onDocumentClick, false );
  34.         document.addEventListener( 'touchstart', onDocumentClick, false );
  35.  
  36.         removeClass( popup, currentState );
  37.         addClass( popup, 'no-transition' );
  38.         addClass( popup, state );
  39.  
  40.         setTimeout( function() {
  41.             removeClass( popup, 'no-transition' );
  42.             addClass( container, 'avgrund-active' );
  43.         }, 0 );
  44.  
  45.         currentState = state;
  46.     }
  47.  
  48.     function deactivate() {
  49.         document.removeEventListener( 'keyup', onDocumentKeyUp, false );
  50.         document.removeEventListener( 'click', onDocumentClick, false );
  51.         document.removeEventListener( 'touchstart', onDocumentClick, false );
  52.  
  53.         removeClass( container, 'avgrund-active' );
  54.         removeClass( popup, 'avgrund-popup-animate')
  55.     }
  56.  
  57.     function disableBlur() {
  58.         addClass( document.documentElement, 'no-blur' );
  59.     }
  60.  
  61.     function addClass( element, name ) {
  62.         element.className = element.className.replace( /\s+$/gi, '' ) + ' ' + name;
  63.     }
  64.  
  65.     function removeClass( element, name ) {
  66.         element.className = element.className.replace( name, '' );
  67.     }
  68.  
  69.     function show(selector){
  70.         popup = document.querySelector( selector );
  71.         addClass(popup, 'avgrund-popup-animate');
  72.         activate();
  73.         return this;
  74.     }
  75.     function hide() {
  76.         deactivate();
  77.     }
  78.  
  79.     return {
  80.         activate: activate,
  81.         deactivate: deactivate,
  82.         disableBlur: disableBlur,
  83.         show: show,
  84.         hide: hide
  85.     }
  86.  
  87. })();
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement