Team:NCTU Formosa/animatedModal.js 3
/*=========================================
* animatedModal.js: Version 1.0 * author: João Pereira * website: http://www.joaopereira.pt * email: joaopereirawd@gmail.com * Licensed MIT
=========================================*/
(function ($) {
$.fn.animatedModal = function(options) { var modal = $(this); //Defaults var settings = $.extend({ modalTarget:'animatedModal', position:'fixed', width:'100%', height:'100%', top:'0px', left:'0px', zIndexIn: '9999', zIndexOut: '-9999', color: '#39BEB9', opacityIn:'1', opacityOut:'0', animatedIn:'zoomIn', animatedOut:'zoomOut', animationDuration:'.6s', overflow:'auto', // Callbacks beforeOpen: function() {}, afterOpen: function() {}, beforeClose: function() {}, afterClose: function() {}
}, options); var closeBt = $('.close-'+settings.modalTarget);
//console.log(closeBt)
var href = $(modal).attr('href'), id = $('body').find('#'+settings.modalTarget), idConc = '#'+id.attr('id'); //console.log(idConc); // Default Classes id.addClass('animated'); id.addClass(settings.modalTarget+'-off');
//Init styles var initStyles = { 'position':settings.position, 'width':settings.width, 'height':settings.height, 'top':settings.top, 'left':settings.left, 'background-color':settings.color, 'overflow-y':settings.overflow, 'z-index':settings.zIndexOut, 'opacity':settings.opacityOut, '-webkit-animation-duration':settings.animationDuration }; //Apply stles id.css(initStyles);
modal.click(function(event) { event.preventDefault(); $('body, html').css({'overflow':'hidden'}); if (href == idConc) { if (id.hasClass(settings.modalTarget+'-off')) { id.removeClass(settings.animatedOut); id.removeClass(settings.modalTarget+'-off'); id.addClass(settings.modalTarget+'-on'); }
if (id.hasClass(settings.modalTarget+'-on')) { settings.beforeOpen(); id.css({'opacity':settings.opacityIn,'z-index':settings.zIndexIn}); id.addClass(settings.animatedIn); id.one('webkitAnimationEnd mozAnimationEnd MSAnimationEnd oanimationend animationend', afterOpen); }; } });
closeBt.click(function(event) { event.preventDefault(); $('body, html').css({'overflow':'auto'});
settings.beforeClose(); //beforeClose if (id.hasClass(settings.modalTarget+'-on')) { id.removeClass(settings.modalTarget+'-on'); id.addClass(settings.modalTarget+'-off'); }
if (id.hasClass(settings.modalTarget+'-off')) { id.removeClass(settings.animatedIn); id.addClass(settings.animatedOut); id.one('webkitAnimationEnd mozAnimationEnd MSAnimationEnd oanimationend animationend', afterClose); };
});
function afterClose () { id.css({'z-index':settings.zIndexOut}); settings.afterClose(); //afterClose }
function afterOpen () { settings.afterOpen(); //afterOpen }
}; // End animatedModal.js
}(jQuery));