| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178 | /* * jQuery Reveal Plugin 1.1 * www.ZURB.com * Copyright 2010, ZURB * Free to use under the MIT license. * http://www.opensource.org/licenses/mit-license.php*//*globals jQuery */(function ($) {  'use strict';  var modalQueued = false;    $('a[data-reveal-id]').live('click', function (event) {    event.preventDefault();    var modalLocation = $(this).attr('data-reveal-id');    $('#' + modalLocation).reveal($(this).data());  });  $.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      open: $.noop,      opened: $.noop,      close: $.noop,      closed: $.noop    };    options = $.extend({}, defaults, options);    return this.each(function () {      var modal    = $(this),        topMeasure = parseInt(modal.css('top'), 10),        topOffset  = modal.height() + topMeasure,        locked     = false,        modalBg    = $('.reveal-modal-bg'),        closeButton;      if (modalBg.length === 0) {        modalBg = $('<div class="reveal-modal-bg" />').insertAfter(modal);        modalBg.fadeTo('fast', 0.8);      }            function unlockModal() {        locked = false;      }      function lockModal() {        locked = true;      }            function closeOpenModals(modal) {                var openModals = $(".reveal-modal.open");        if (openModals.length === 1) {          modalQueued = true;          $(".reveal-modal.open").trigger("reveal:close");        }      }      function openAnimation() {        if (!locked) {          lockModal();          closeOpenModals(modal);          modal.addClass("open");          if (options.animation === "fadeAndPop") {            modal.css({'top': $(document).scrollTop() - topOffset, 'opacity': 0, 'visibility': 'visible', 'display' : 'block'});            modalBg.fadeIn(options.animationSpeed / 2);            modal.delay(options.animationSpeed / 2).animate({              "top": $(document).scrollTop() + topMeasure + 'px',              "opacity": 1            }, options.animationSpeed, function () {              modal.trigger('reveal:opened');            });          }          if (options.animation === "fade") {            modal.css({'opacity': 0, 'visibility': 'visible', 'display' : 'block', 'top': $(document).scrollTop() + topMeasure});            modalBg.fadeIn(options.animationSpeed / 2);            modal.delay(options.animationSpeed / 2).animate({              "opacity": 1            }, options.animationSpeed, function () {              modal.trigger('reveal:opened');            });          }          if (options.animation === "none") {            modal.css({'visibility': 'visible', 'display' : 'block', 'top': $(document).scrollTop() + topMeasure});            modalBg.css({"display": "block"});            modal.trigger('reveal:opened');          }        }      }      modal.bind('reveal:open.reveal', openAnimation);      function closeAnimation() {        if (!locked) {          lockModal();          modal.removeClass("open");          if (options.animation === "fadeAndPop") {            modal.animate({              "top":  $(document).scrollTop() - topOffset + 'px',              "opacity": 0            }, options.animationSpeed / 2, function () {              modal.css({'top': topMeasure, 'opacity': 1, 'visibility': 'hidden', 'display': 'none'});            });            if (!modalQueued) {              modalBg.delay(options.animationSpeed).fadeOut(options.animationSpeed, function () {                modal.trigger('reveal:closed');              });                         } else {              modal.trigger('reveal:closed');            }            modalQueued = false;          }          if (options.animation === "fade") {            modal.animate({              "opacity" : 0            }, options.animationSpeed, function () {              modal.css({'opacity': 1, 'visibility': 'hidden', 'display' : 'none', 'top': topMeasure});            });            if (!modalQueued) {              modalBg.delay(options.animationSpeed).fadeOut(options.animationSpeed, function () {                modal.trigger('reveal:closed');              });            } else {              modal.trigger('reveal:closed');            }          }          if (options.animation === "none") {            modal.css({'visibility': 'hidden', 'display' : 'block', 'top': topMeasure});            if (!modalQueued) {              modalBg.css({'display': 'none'});            }            modal.trigger('reveal:closed');          }        }      }      function destroy() {        modal.unbind('.reveal');        modalBg.unbind('.reveal');        $('.' + options.dismissModalClass).unbind('.reveal');        $('body').unbind('.reveal');      }      modal.bind('reveal:close.reveal', closeAnimation);      modal.bind('reveal:opened.reveal reveal:closed.reveal', unlockModal);      modal.bind('reveal:closed.reveal', destroy);            modal.bind('reveal:open.reveal', options.open);      modal.bind('reveal:opened.reveal', options.opened);      modal.bind('reveal:close.reveal', options.close);      modal.bind('reveal:closed.reveal', options.closed);            modal.trigger('reveal:open');      closeButton = $('.' + options.dismissModalClass).bind('click.reveal', function () {        modal.trigger('reveal:close');      });      if (options.closeOnBackgroundClick) {        modalBg.css({"cursor": "pointer"});        modalBg.bind('click.reveal', function () {          modal.trigger('reveal:close');        });      }      $('body').bind('keyup.reveal', function (event) {        if (event.which === 27) { // 27 is the keycode for the Escape key          modal.trigger('reveal:close');        }      });    });  };} (jQuery));
 |