Created
May 23, 2011 18:51
-
-
Save RedWolves/987279 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* | |
* jqModal - Minimalist Modaling with jQuery | |
* http://dev.iceburg.net/jquery/jqModal/ | |
* Copyright (c) 2007 Brice Burgess <[email protected]>, http://www.iceburg.net | |
* Licensed under the MIT License: | |
* http://www.opensource.org/licenses/mit-license.php | |
* | |
* $Version: 2007.08.17 +r11 | |
* | |
*/ | |
(function($) { | |
$.fn.jqm = function(o) { | |
var _o = { | |
zIndex: 3000, | |
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 = (/^\d+$/.test(h.w.css('z-index'))) ? h.w.css('z-index') : 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); | |
(function($) { | |
// used for links to objects like video. This will overlay the video on the screen. Requires jqModal.js. | |
$.fn.objectOverlay = function(options) { | |
var o = $.extend({}, $.fn.objectOverlay.defaults, options); | |
o = $.extend({}, $.fn.objectOverlay.labels, o); | |
return this.each(function() { | |
var $this = $(this); | |
$this.bind("click", function(e) { | |
e.preventDefault(); | |
var vid = $this.attr("href"); | |
o.objHTML = o.objHTML.replace("{closeLabel}", o.closeLabel) | |
.replace("{width}", o.width) | |
.replace("{height}", o.height) | |
.replace("{fallbackLabel}", o.fallbackLabel.replace("{vid}", vid)) | |
.replace(/{vid}/g, vid); | |
$(o.objHTML).appendTo("body").jqm({ onHide: function(hash) { | |
hash.w.remove(); | |
hash.o.remove(); | |
if ($.browser.msie) | |
document.location = document.location; | |
} | |
}).jqmShow(); | |
}); | |
}); | |
}; | |
$.fn.objectOverlay.defaults = { | |
width: '640', | |
height: '480', | |
objHTML: '<div class=\"jqmWindow\">' + | |
'<a id=\"object-close\" class=\"jqmClose\" href=\"javascript:void(0);\">{closeLabel}</a>' + | |
'<object id=\"vid\" width=\"{width}\" height=\"{height}\" data=\"{vid}\">' + | |
'<param name=\"src\" value=\"{vid}\"/>' + | |
'<p>{fallbackLabel}</p>' + | |
'</object></div>', | |
closeLabel: 'Close X', | |
fallbackLabel: 'Video for {vid}' | |
}; | |
$.fn.objectOverlay.labels = function() { | |
try { | |
return labels.objectOverlay; | |
} catch (e) { | |
return {}; | |
} | |
}; | |
})(jQuery); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment