text: (function() {
    var vexFactory;
  
    vexFactory = function($) {
      var animationEndSupport, vex;
      animationEndSupport = false;
      $(function() {
        var s;
        s = (document.body || document.documentElement).style;
        animationEndSupport = s.animation !== void 0 || s.WebkitAnimation !== void 0 || s.MozAnimation !== void 0 || s.MsAnimation !== void 0 || s.OAnimation !== void 0;
        return $(window).bind('keyup.vex', function(event) {
          if (event.keyCode === 27) {
            return vex.closeByEscape();
          }
        });
      });
      return vex = {
        globalID: 1,
        animationEndEvent: 'animationend webkitAnimationEnd mozAnimationEnd MSAnimationEnd oanimationend',
        baseClassNames: {
          vex: 'vex',
          content: 'vex-content',
          overlay: 'vex-overlay',
          close: 'vex-close',
          closing: 'vex-closing',
          open: 'vex-open'
        },
        defaultOptions: {
          content: '',
          showCloseButton: true,
          escapeButtonCloses: true,
          overlayClosesOnClick: true,
          appendLocation: 'body',
          className: '',
          css: {},
          overlayClassName: '',
          overlayCSS: {},
          contentClassName: '',
          contentCSS: {},
          closeClassName: '',
          closeCSS: {}
        },
        open: function(options) {
          options = $.extend({}, vex.defaultOptions, options);
          options.id = vex.globalID;
          vex.globalID += 1;
          options.$vex = $('<div>').addClass(vex.baseClassNames.vex).addClass(options.className).css(options.css).data({
            vex: options
          });
          options.$vexOverlay = $('<div>').addClass(vex.baseClassNames.overlay).addClass(options.overlayClassName).css(options.overlayCSS).data({
            vex: options
          });
  
          if (options.overlayClosesOnClick) {
            options.$vexOverlay.bind('click.vex', function(e) {
              if (e.target !== this) {
                return;
              }
              return vex.close($(this).data().vex.id);
            });
          }
          options.$vex.append(options.$vexOverlay);
          options.$vexContent = $('<div>').addClass(vex.baseClassNames.content).addClass(options.contentClassName).css(options.contentCSS).append(options.content).data({
            vex: options
          });
  
          if (options.beforeOpen) {
            options.beforeOpen(options.$vexContent, options);
          }
  
          options.$vex.append(options.$vexContent);
          if (options.showCloseButton) {
            options.$closeButton = $('<div>').addClass(vex.baseClassNames.close).addClass(options.closeClassName).css(options.closeCSS).data({
              vex: options
            }).bind('click.vex', function() {
              return vex.close($(this).data().vex.id);
            });
            options.$vexContent.append(options.$closeButton);
          }
          $(options.appendLocation).append(options.$vex);
          vex.setupBodyClassName(options.$vex);
          if (options.afterOpen) {
            options.afterOpen(options.$vexContent, options);
          }
          setTimeout((function() {
            return options.$vexContent.trigger('vexOpen', options);
          }), 0);
          return options.$vexContent;
        },
        getAllVexes: function() {
          return $("." + vex.baseClassNames.vex + ":not(\"." + vex.baseClassNames.closing + "\") ." + vex.baseClassNames.content);
        },
        getVexByID: function(id) {
          return vex.getAllVexes().filter(function() {
            return $(this).data().vex.id === id;
          });
        },
        close: function(id) {
          var $lastVex;
          if (!id) {
            $lastVex = vex.getAllVexes().last();
            if (!$lastVex.length) {
              return false;
            }
            id = $lastVex.data().vex.id;
          }
          return vex.closeByID(id);
        },
        closeAll: function() {
          var ids;
          ids = vex.getAllVexes().map(function() {
            return $(this).data().vex.id;
          }).toArray();
          if (!(ids != null ? ids.length : void 0)) {
            return false;
          }
          $.each(ids.reverse(), function(index, id) {
            return vex.closeByID(id);
          });
          return true;
        },
        closeByID: function(id) {
          var $vex, $vexContent, beforeClose, close, options;
          $vexContent = vex.getVexByID(id);
          if (!$vexContent.length) {
            return;
          }
          $vex = $vexContent.data().vex.$vex;
          options = $.extend({}, $vexContent.data().vex);
          beforeClose = function() {
            if (options.beforeClose) {
              return options.beforeClose($vexContent, options);
            }
          };
          close = function() {
            $vexContent.trigger('vexClose', options);
            $vex.remove();
            if (options.afterClose) {
              return options.afterClose($vexContent, options);
            }
          };
          if (animationEndSupport) {
            beforeClose();
            $vex.unbind(vex.animationEndEvent).bind(vex.animationEndEvent, function() {
              return close();
            }).addClass(vex.baseClassNames.closing);
          } else {
            beforeClose();
            close();
          }
          return true;
        },
        closeByEscape: function() {
          var $lastVex, id, ids;
          ids = vex.getAllVexes().map(function() {
            return $(this).data().vex.id;
          }).toArray();
          if (!(ids != null ? ids.length : void 0)) {
            return false;
          }
          id = Math.max.apply(Math, ids);
          $lastVex = vex.getVexByID(id);
          if ($lastVex.data().vex.escapeButtonCloses !== true) {
            return false;
          }
          return vex.closeByID(id);
        },
        setupBodyClassName: function($vex) {
          return $vex.bind('vexOpen.vex', function() {
            return $('body').addClass(vex.baseClassNames.open);
          }).bind('vexClose.vex', function() {
            if (!vex.getAllVexes().length) {
              return $('body').removeClass(vex.baseClassNames.open);
            }
          });
        },
        hideLoading: function() {
          return $('.vex-loading-spinner').remove();
        },
        showLoading: function() {
          vex.hideLoading();
          return $('body').append("<div class=\"vex-loading-spinner " + vex.defaultOptions.className + "\"></div>");
        }
      };
    };
  
    /*
    if (typeof define === 'function' && define.amd) {
      define(['jquery'], vexFactory);
    } else if (typeof exports === 'object') {
      module.exports = vexFactory(require('jquery'));
    } else {
      window.vex = vexFactory(jQuery);
    } */
  
    window.vex = vexFactory(jQuery_2_1_0_for_vex);
  
  }).call(this);
  