/*
A simple jQuery modal (http://github.com/kylefox/jquery-modal)
Version 0.9.1
*/
!(function (o) {
"object" == typeof module && "object" == typeof module.exports
? o(require("jquery"), window, document)
: o(jQuery, window, document);
})(function (o, t, i, e) {
var s = [],
l = function () {
return s.length ? s[s.length - 1] : null;
},
n = function () {
var o,
t = !1;
for (o = s.length - 1; o >= 0; o--)
s[o].$blocker &&
(s[o].$blocker.toggleClass("current", !t).toggleClass("behind", t),
(t = !0));
};
(o.modal = function (t, i) {
var e, n;
if (
((this.$body = o("body")),
(this.options = o.extend({}, o.modal.defaults, i)),
(this.options.doFade = !isNaN(parseInt(this.options.fadeDuration, 10))),
(this.$blocker = null),
this.options.closeExisting)
)
for (; o.modal.isActive(); ) o.modal.close();
if ((s.push(this), t.is("a")))
if (((n = t.attr("href")), (this.anchor = t), /^#/.test(n))) {
if (((this.$elm = o(n)), 1 !== this.$elm.length)) return null;
this.$body.append(this.$elm), this.open();
} else
(this.$elm = o("
")),
this.$body.append(this.$elm),
(e = function (o, t) {
t.elm.remove();
}),
this.showSpinner(),
t.trigger(o.modal.AJAX_SEND),
o
.get(n)
.done(function (i) {
if (o.modal.isActive()) {
t.trigger(o.modal.AJAX_SUCCESS);
var s = l();
s.$elm.empty().append(i).on(o.modal.CLOSE, e),
s.hideSpinner(),
s.open(),
t.trigger(o.modal.AJAX_COMPLETE);
}
})
.fail(function () {
t.trigger(o.modal.AJAX_FAIL);
var i = l();
i.hideSpinner(), s.pop(), t.trigger(o.modal.AJAX_COMPLETE);
});
else
(this.$elm = t),
(this.anchor = t),
this.$body.append(this.$elm),
this.open();
}),
(o.modal.prototype = {
constructor: o.modal,
open: function () {
var t = this;
this.block(),
this.anchor.blur(),
this.options.doFade
? setTimeout(function () {
t.show();
}, this.options.fadeDuration * this.options.fadeDelay)
: this.show(),
o(i)
.off("keydown.modal")
.on("keydown.modal", function (o) {
var t = l();
27 === o.which && t.options.escapeClose && t.close();
}),
this.options.clickClose &&
this.$blocker.click(function (t) {
t.target === this && o.modal.close();
});
},
close: function () {
s.pop(),
this.unblock(),
this.hide(),
o.modal.isActive() || o(i).off("keydown.modal");
},
block: function () {
this.$elm.trigger(o.modal.BEFORE_BLOCK, [this._ctx()]),
this.$body.css("overflow", "hidden"),
(this.$blocker = o(
'
'
).appendTo(this.$body)),
n(),
this.options.doFade &&
this.$blocker
.css("opacity", 0)
.animate({ opacity: 1 }, this.options.fadeDuration),
this.$elm.trigger(o.modal.BLOCK, [this._ctx()]);
},
unblock: function (t) {
!t && this.options.doFade
? this.$blocker.fadeOut(
this.options.fadeDuration,
this.unblock.bind(this, !0)
)
: (this.$blocker.children().appendTo(this.$body),
this.$blocker.remove(),
(this.$blocker = null),
n(),
o.modal.isActive() || this.$body.css("overflow", ""));
},
show: function () {
this.$elm.trigger(o.modal.BEFORE_OPEN, [this._ctx()]),
this.options.showClose &&
((this.closeButton = o(
'
' +
this.options.closeText +
""
)),
this.$elm.append(this.closeButton)),
this.$elm.addClass(this.options.modalClass).appendTo(this.$blocker),
this.options.doFade
? this.$elm
.css({ opacity: 0, display: "inline-block" })
.animate({ opacity: 1 }, this.options.fadeDuration)
: this.$elm.css("display", "inline-block"),
this.$elm.trigger(o.modal.OPEN, [this._ctx()]);
},
hide: function () {
this.$elm.trigger(o.modal.BEFORE_CLOSE, [this._ctx()]),
this.closeButton && this.closeButton.remove();
var t = this;
this.options.doFade
? this.$elm.fadeOut(this.options.fadeDuration, function () {
t.$elm.trigger(o.modal.AFTER_CLOSE, [t._ctx()]);
})
: this.$elm.hide(0, function () {
t.$elm.trigger(o.modal.AFTER_CLOSE, [t._ctx()]);
}),
this.$elm.trigger(o.modal.CLOSE, [this._ctx()]);
},
showSpinner: function () {
this.options.showSpinner &&
((this.spinner =
this.spinner ||
o(
'
'
).append(this.options.spinnerHtml)),
this.$body.append(this.spinner),
this.spinner.show());
},
hideSpinner: function () {
this.spinner && this.spinner.remove();
},
_ctx: function () {
return {
elm: this.$elm,
$elm: this.$elm,
$blocker: this.$blocker,
options: this.options,
};
},
}),
(o.modal.close = function (t) {
if (o.modal.isActive()) {
t && t.preventDefault();
var i = l();
return i.close(), i.$elm;
}
}),
(o.modal.isActive = function () {
return s.length > 0;
}),
(o.modal.getCurrent = l),
(o.modal.defaults = {
closeExisting: !0,
escapeClose: !0,
clickClose: !0,
closeText: "Close",
closeClass: "",
modalClass: "modal",
blockerClass: "jquery-modal",
spinnerHtml:
'
',
showSpinner: !0,
showClose: !0,
fadeDuration: null,
fadeDelay: 1,
}),
(o.modal.BEFORE_BLOCK = "modal:before-block"),
(o.modal.BLOCK = "modal:block"),
(o.modal.BEFORE_OPEN = "modal:before-open"),
(o.modal.OPEN = "modal:open"),
(o.modal.BEFORE_CLOSE = "modal:before-close"),
(o.modal.CLOSE = "modal:close"),
(o.modal.AFTER_CLOSE = "modal:after-close"),
(o.modal.AJAX_SEND = "modal:ajax:send"),
(o.modal.AJAX_SUCCESS = "modal:ajax:success"),
(o.modal.AJAX_FAIL = "modal:ajax:fail"),
(o.modal.AJAX_COMPLETE = "modal:ajax:complete"),
(o.fn.modal = function (t) {
return 1 === this.length && new o.modal(this, t), this;
}),
o(i).on("click.modal", 'a[rel~="modal:close"]', o.modal.close),
o(i).on("click.modal", 'a[rel~="modal:open"]', function (t) {
t.preventDefault(), o(this).modal();
});
});