-澳门凯发
/**
* 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);