-澳门凯发

/** * jmpopups * 澳门凯发 copyright (c) 2009 otavio avila (http://otavioavila.com) * licensed under gnu lesser general public license * download by http://www.codefans.net * @docs http://jmpopups.googlecode.com/ * @version 0.5.1 * */ (function($) { var openedpopups = []; var popuplayerscreenlocker = false; var focusableelement = []; var setupjquerympopups = { screenlockerbackground: "#000", screenlockeropacity: "0.5" }; $.setupjmpopups = function(settings) { setupjquerympopups = jquery.extend(setupjquerympopups, settings); return this; } $.openpopuplayer = function(settings) { if (typeof(settings.name) != "undefined" && !checkifitexists(settings.name)) { settings = jquery.extend({ width: "auto", height: "auto", parameters: {}, target: "", success: function() {}, error: function() {}, beforeclose: function() {}, afterclose: function() {}, reloadsuccess: null, cache: false }, settings); loadpopuplayercontent(settings, true); return this; } } $.closepopuplayer = function(name) { if (name) { for (var i = 0; i < openedpopups.length; i ) { if (openedpopups[i].name == name) { var thispopup = openedpopups[i]; openedpopups.splice(i,1) thispopup.beforeclose(); $("#popuplayer_" name).fadeout(function(){ $("#popuplayer_" name).remove(); focusableelement.pop(); if (focusableelement.length > 0) { $(focusableelement[focusableelement.length-1]).focus(); } thispopup.afterclose(); hidescreenlocker(name); }); break; } } } else { if (openedpopups.length > 0) { $.closepopuplayer(openedpopups[openedpopups.length-1].name); } } return this; } $.reloadpopuplayer = function(name, callback) { if (name) { for (var i = 0; i < openedpopups.length; i ) { if (openedpopups[i].name == name) { if (callback) { openedpopups[i].reloadsuccess = callback; } loadpopuplayercontent(openedpopups[i], false); break; } } } else { if (openedpopups.length > 0) { $.reloadpopuplayer(openedpopups[openedpopups.length-1].name); } } return this; } function setscreenlockersize() { if (popuplayerscreenlocker) { $('#popuplayerscreenlocker').height($(document).height() "px"); $('#popuplayerscreenlocker').width($(document.body).outerwidth(true) "px"); } } function checkifitexists(name) { if (name) { for (var i = 0; i < openedpopups.length; i ) { if (openedpopups[i].name == name) { return true; } } } return false; } function showscreenlocker() { if ($("#popuplayerscreenlocker").length) { if (openedpopups.length == 1) { popuplayerscreenlocker = true; setscreenlockersize(); $('#popuplayerscreenlocker').fadein(); } if ($.browser.msie && $.browser.version < 7) { $("select:not(.hidden-by-jmp)").addclass("hidden-by-jmp hidden-by-" openedpopups[openedpopups.length-1].name).css("visibility","hidden"); } $('#popuplayerscreenlocker').css("z-index",parseint(openedpopups.length == 1 ? 999 : $("#popuplayer_" openedpopups[openedpopups.length - 2].name).css("z-index")) 1); } else { $("body").append("
"); $("#popuplayerscreenlocker").css({ position: "absolute", background: setupjquerympopups.screenlockerbackground, left: "0", top: "0", opacity: setupjquerympopups.screenlockeropacity, display: "none" }); showscreenlocker(); $("#popuplayerscreenlocker").click(function() { $.closepopuplayer(); }); } } function hidescreenlocker(popupname) { if (openedpopups.length == 0) { screenlocker = false; $('#popuplayerscreenlocker').fadeout(); } else { $('#popuplayerscreenlocker').css("z-index",parseint($("#popuplayer_" openedpopups[openedpopups.length - 1].name).css("z-index")) - 1); } if ($.browser.msie && $.browser.version < 7) { $("select.hidden-by-" popupname).removeclass("hidden-by-jmp hidden-by-" popupname).css("visibility","visible"); } } function setpopuplayersposition(popupelement, animate) { if (popupelement) { if (popupelement.width() < $(window).width()) { var leftposition = (document.documentelement.offsetwidth - popupelement.width()) / 2; } else { var leftposition = document.documentelement.scrollleft 5; } if (popupelement.height() < $(window).height()) { var topposition = document.documentelement.scrolltop ($(window).height() - popupelement.height()) / 2; } else { var topposition = document.documentelement.scrolltop 5; } var positions = { left: leftposition "px", top: topposition "px" }; if (!animate) { popupelement.css(positions); } else { popupelement.animate(positions, "slow"); } setscreenlockersize(); } else { for (var i = 0; i < openedpopups.length; i ) { setpopuplayersposition($("#popuplayer_" openedpopups[i].name), true); } } } function showpopuplayercontent(popupobject, newelement, data) { var idelement = "popuplayer_" popupobject.name; if (newelement) { showscreenlocker(); $("body").append("
"); var zindex = parseint(openedpopups.length == 1 ? 1000 : $("#popuplayer_" openedpopups[openedpopups.length - 2].name).css("z-index")) 2; } else { var zindex = $("#" idelement).css("z-index"); } var popupelement = $("#" idelement); popupelement.css({ visibility: "hidden", width: popupobject.width == "auto" ? "" : popupobject.width "px", height: popupobject.height == "auto" ? "" : popupobject.height "px", position: "absolute", "z-index": zindex }); var linkattop = ""; var linkatbottom = ""; popupelement.html(linkattop data linkatbottom); setpopuplayersposition(popupelement); popupelement.css("display","none"); popupelement.css("visibility","visible"); if (newelement) { popupelement.fadein(); } else { popupelement.show(); } $("#" idelement " .jmp-link-at-top, " "#" idelement " .jmp-link-at-bottom").focus(function(){ $(focusableelement[focusableelement.length-1]).focus(); }); var jfocusableelements = $("#" idelement " a:visible:not(.jmp-link-at-top, .jmp-link-at-bottom), " "#" idelement " *:input:visible:not(.jmp-link-at-top, .jmp-link-at-bottom)"); if (jfocusableelements.length == 0) { var linkinsidepopup = ""; popupelement.find(".jmp-link-at-top").after(linkinsidepopup); focusableelement.push($(popupelement).find(".jmp-link-inside-popup")[0]); } else { jfocusableelements.each(function(){ if (!$(this).hasclass("jmp-link-at-top") && !$(this).hasclass("jmp-link-at-bottom")) { focusableelement.push(this); return false; } }); } $(focusableelement[focusableelement.length-1]).focus(); popupobject.success(); if (popupobject.reloadsuccess) { popupobject.reloadsuccess(); popupobject.reloadsuccess = null; } } function loadpopuplayercontent(popupobject, newelement) { if (newelement) { openedpopups.push(popupobject); } if (popupobject.target != "") { showpopuplayercontent(popupobject, newelement, $("#" popupobject.target).html()); } else { $.ajax({ url: popupobject.url, data: popupobject.parameters, cache: popupobject.cache, datatype: "html", method: "get", success: function(data) { showpopuplayercontent(popupobject, newelement, data); }, error: popupobject.error }); } } $(window).resize(function(){ setscreenlockersize(); setpopuplayersposition(); }); $(document).keydown(function(e){ if (e.keycode == 27) { $.closepopuplayer(); } }); })(jquery);
网站地图