(function($) { /*--------------------------- defaults for reveal ----------------------------*/ /*--------------------------- listener for data-reveal-id attributes ----------------------------*/ $('a[data-reveal-id]').live('click', function(e) { e.preventdefault(); var modallocation = $(this).attr('data-reveal-id'); $('#'+modallocation).reveal($(this).data()); }); /*--------------------------- extend and execute ----------------------------*/ $.fn.reveal = function(options) { var defaults = { animation: 'fadeandpop', //fade, fadeandpop, none animationspeed: 300, //how fast animtions are closeonbackgroundclick: true, //if you click background will modal close? dismissmodalclass: 'close-reveal-modal' //the class of a button or element that will close an open modal }; //extend dem' options var options = $.extend({}, defaults, options); return this.each(function() { /*--------------------------- global variables ----------------------------*/ var modal = $(this), topmeasure = parseint(modal.css('top')), topoffset = modal.height() + topmeasure, locked = false, modalbg = $('.reveal-modal-bg'); /*--------------------------- create modal bg ----------------------------*/ if(modalbg.length == 0) { modalbg = $('
').insertafter(modal); } /*--------------------------- open & close animations ----------------------------*/ //entrance animations modal.bind('reveal:open', function () { modalbg.unbind('click.modalevent'); $('.' + options.dismissmodalclass).unbind('click.modalevent'); if(!locked) { lockmodal(); if(options.animation == "fadeandpop") { modal.css({'top': $(document).scrolltop()-topoffset, 'opacity' : 0, 'visibility' : 'visible'}); modalbg.fadein(options.animationspeed/2); modal.delay(options.animationspeed/2).animate({ "top": $(document).scrolltop()+topmeasure + 'px', "opacity" : 1 }, options.animationspeed,unlockmodal()); } if(options.animation == "fade") { modal.css({'opacity' : 0, 'visibility' : 'visible', 'top': $(document).scrolltop()+topmeasure}); modalbg.fadein(options.animationspeed/2); modal.delay(options.animationspeed/2).animate({ "opacity" : 1 }, options.animationspeed,unlockmodal()); } if(options.animation == "none") { modal.css({'visibility' : 'visible', 'top':$(document).scrolltop()+topmeasure}); modalbg.css({"display":"block"}); unlockmodal() } } modal.unbind('reveal:open'); }); //closing animation modal.bind('reveal:close', function () { if(!locked) { lockmodal(); if(options.animation == "fadeandpop") { modalbg.delay(options.animationspeed).fadeout(options.animationspeed); modal.animate({ "top": $(document).scrolltop()-topoffset + 'px', "opacity" : 0 }, options.animationspeed/2, function() { modal.css({'top':topmeasure, 'opacity' : 1, 'visibility' : 'hidden'}); unlockmodal(); }); } if(options.animation == "fade") { modalbg.delay(options.animationspeed).fadeout(options.animationspeed); modal.animate({ "opacity" : 0 }, options.animationspeed, function() { modal.css({'opacity' : 1, 'visibility' : 'hidden', 'top' : topmeasure}); unlockmodal(); }); } if(options.animation == "none") { modal.css({'visibility' : 'hidden', 'top' : topmeasure}); modalbg.css({'display' : 'none'}); } } modal.unbind('reveal:close'); }); /*--------------------------- open and add closing listeners ----------------------------*/ //open modal immediately modal.trigger('reveal:open') //close modal listeners var closebutton = $('.' + options.dismissmodalclass).bind('click.modalevent', function () { modal.trigger('reveal:close') $(".media").remove(); }); if(options.closeonbackgroundclick) { modalbg.css({"cursor":"pointer"}) modalbg.bind('click.modalevent', function () { modal.trigger('reveal:close') $(".media").remove(); }); } /* $('body').keyup(function(e) { if(e.which===27){ modal.trigger('reveal:close'); } // 27 is the keycode for the escape key $(".media").remove(); }); */ /*--------------------------- animations locks ----------------------------*/ function unlockmodal() { locked = false; } function lockmodal() { locked = true; } });//each call }//orbit plugin call })(jquery);