(function($) { $.fn.jqm = function(o) { var _o = { zIndex: 300, overlay: 50, overlayClass: 'jqmOverlay', closeClass: 'jqmClose', trigger: '.jqModal', ajax: false, target: false, modal: false, toTop: false, onShow: false, onHide: false, onLoad: false }; return this.each(function() { if (this._jqm) return; s++; this._jqm = s; H[s] = { c: $.extend(_o, o), a: false, w: $(this).addClass('jqmID' + s), s: s }; if (_o.trigger) $(this).jqmAddTrigger(_o.trigger) }) }; $.fn.jqmAddClose = function(e) { hs(this, e, 'jqmHide'); return this }; $.fn.jqmAddTrigger = function(e) { hs(this, e, 'jqmShow'); return this }; $.fn.jqmShow = function(t) { return this.each(function() { if (!H[this._jqm].a) $.jqm.open(this._jqm, t) }) }; $.fn.jqmHide = function(t) { return this.each(function() { if (H[this._jqm].a) $.jqm.close(this._jqm, t) }) }; $.jqm = { hash: {}, open: function(s, t) { var h = H[s], c = h.c, cc = '.' + c.closeClass, z = c.zIndex, o = $('<div></div>').css({ height: '100%', width: '100%', position: 'fixed', left: 0, top: 0, 'z-index': z - 1, opacity: c.overlay / 100 }); h.t = t; h.a = true; h.w.css('z-index', z); if (c.modal) { if (!A[0]) F('bind'); A.push(s); o.css('cursor', 'wait') } else if (c.overlay > 0) h.w.jqmAddClose(o); else o = false; h.o = (o) ? o.addClass(c.overlayClass).prependTo('body') : false; 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.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 false }, close: function(s) { var h = H[s]; h.a = false; if (A[0]) { A.pop(); if (!A[0]) F('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 false } }; var s = 0, H = $.jqm.hash, A = [], ie6 = $.browser.msie && ($.browser.version == "6.0"), 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 (e) { } }, F = 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, e, y) { var s = []; w.each(function() { s.push(this._jqm) }); $(e).each(function() { if (this[y]) $.extend(this[y], s); else { this[y] = s; $(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 false }) } }) } })(jQuery);