1
0
Fork 0
mirror of https://github.com/Oreolek/ifhub.club.git synced 2024-07-08 17:34:26 +03:00
ifhub.club/engine/lib/external/jquery/jquery.jqmodal.js
2011-08-02 07:11:57 +00:00

185 lines
5.8 KiB
JavaScript

/*
* jqModal - Minimalist Modaling with jQuery
* (http://dev.iceburg.net/jquery/jqModal/)
*
* Copyright (c) 2007,2008 Brice Burgess <bhb@iceburg.net>
* Dual licensed under the MIT and GPL licenses:
* http://www.opensource.org/licenses/mit-license.php
* http://www.gnu.org/licenses/gpl.html
*
* $Version: 03/01/2009 +r14
*/
(function ($) {
$.fn.jqm = function (o) {
var p = {
overlay: 50,
overlayClass: 'jqmOverlay',
closeClass: 'jqmClose',
trigger: '.jqModal',
ajax: F,
ajaxText: '',
target: F,
modal: F,
toTop: F,
onShow: F,
onHide: F,
onLoad: F
};
return this.each(function () {
if (this._jqm) return H[this._jqm].c = $.extend({}, H[this._jqm].c, o);
s++;
this._jqm = s;
H[s] = {
c: $.extend(p, $.jqm.params, o),
a: F,
w: $(this).addClass('jqmID' + s),
s: s
};
if (p.trigger) $(this).jqmAddTrigger(p.trigger);
});
};
$.fn.jqmAddClose = function (e) {
return hs(this, e, 'jqmHide');
};
$.fn.jqmAddTrigger = function (e) {
return hs(this, e, 'jqmShow');
};
$.fn.jqmShow = function (t) {
return this.each(function () {
t = t || window.event;
$.jqm.open(this._jqm, t);
});
};
$.fn.jqmHide = function (t) {
return this.each(function () {
t = t || window.event;
$.jqm.close(this._jqm, t)
});
};
$.jqm = {
hash: {},
open: function (s, t) {
var h = H[s],
c = h.c,
cc = '.' + c.closeClass,
z = (parseInt(h.w.css('z-index'))),
z = (z > 0) ? z : 3000,
o = $('<div></div>').css({
height: '100%',
width: '100%',
position: 'fixed',
left: 0,
top: 0,
'z-index': z - 1,
opacity: c.overlay / 100
});
if (h.a) return F;
h.t = t;
h.a = true;
h.w.css('z-index', z);
if (c.modal) {
if (!A[0]) L('bind');
A.push(s);
} else if (c.overlay > 0) h.w.jqmAddClose(o);
else o = F;
h.o = (o) ? o.addClass(c.overlayClass).prependTo('body') : F;
if (ie6) {
$('html,body').css({
height: '100%',
width: '100%'
});
if (o) {
o = o.css({
position: 'absolute'
})[0];
for (var y in {
Top: 1,
Left: 1
}) o.style.setExpression(y.toLowerCase(), "(_=(document.documentElement.scroll" + y + " || document.body.scroll" + y + "))+'px'");
}
}
if (c.ajax) {
var r = c.target || h.w,
u = c.ajax,
r = (typeof r == 'string') ? $(r, h.w) : $(r),
u = (u.substr(0, 1) == '@') ? $(t).attr(u.substring(1)) : u;
r.html(c.ajaxText).load(u, function () {
if (c.onLoad) c.onLoad.call(this, h);
if (cc) h.w.jqmAddClose($(cc, h.w));
e(h);
});
} else if (cc) h.w.jqmAddClose($(cc, h.w));
if (c.toTop && h.o) h.w.before('<span id="jqmP' + h.w[0]._jqm + '"></span>').insertAfter(h.o);
(c.onShow) ? c.onShow(h) : h.w.show();
e(h);
return F;
},
close: function (s) {
var h = H[s];
if (!h.a) return F;
h.a = F;
if (A[0]) {
A.pop();
if (!A[0]) L('unbind');
}
if (h.c.toTop && h.o) $('#jqmP' + h.w[0]._jqm).after(h.w).remove();
if (h.c.onHide) h.c.onHide(h);
else {
h.w.hide();
if (h.o) h.o.remove();
}
return F;
},
params: {}
};
var s = 0,
H = $.jqm.hash,
A = [],
ie6 = $.browser.msie && ($.browser.version == "6.0"),
F = false,
i = $('<iframe src="javascript:false;document.write(\'\');" class="jqm"></iframe>').css({
opacity: 0
}),
e = function (h) {
if (ie6) if (h.o) h.o.html('<p style="width:100%;height:100%"/>').prepend(i);
else if (!$('iframe.jqm', h.w)[0]) h.w.prepend(i);
f(h);
},
f = function (h) {
try {
$(':input:visible', h.w)[0].focus();
} catch (_) {}
},
L = function (t) {
$()[t]("keypress", m)[t]("keydown", m)[t]("mousedown", m);
},
m = function (e) {
var h = H[A[A.length - 1]],
r = (!$(e.target).parents('.jqmID' + h.s)[0]);
if (r) f(h);
return !r;
},
hs = function (w, t, c) {
return w.each(function () {
var s = this._jqm;
$(t).each(function () {
if (!this[c]) {
this[c] = [];
$(this).click(function () {
for (var i in {
jqmShow: 1,
jqmHide: 1
}) for (var s in this[i]) if (H[this[i][s]]) H[this[i][s]].w[i](this);
return F;
});
}
this[c].push(s);
});
});
};
})(jQuery);