(function($){ $.Popup = function(options) { return $.Popup.open(options); }; $.Popup.extendNativeFunctionObject({ close: function(link) { jQuery(link).parents(".popup:first").remove(); var jModal = jQuery("#alert-messages .modal:last"); if (jModal.length) { jModal.before(jQuery("#alert-messages .alert-background")); } else { var jBg = jQuery("#alert-messages .alert-background"); jBg.fadeTo("normal", 0, function() { jBg.remove(); }); jQuery(window).unbind("resize", $.Popup.center); jQuery(window).unbind("resize", $.Popup.resize); jQuery(window).unbind("scroll", $.Popup.center); } if (jQuery.browser.msie && jQuery.browser.version.number() < 7 && $.Popup.count() == 0) { jQuery("select").css("visibility", "visible"); } }, count: function() { return jQuery("#alert-messages .popup").length; }, open: function(options) { /* * OPTIONS: * modal (boolean) - show shaded background * message (string|object) - default HTML/object to display * noCenter (boolean) - prevent re-centering * height (int) - starting height of message box * width (int) - starting width of message box * onClose (function) - executes after closing */ options = options || {}; var modal = options.modal; var myMessage = options.message; var msgHeight = options.height; var msgWidth = options.width; var noCenter = options.noCenter; var title = options.title; var onClose = options.onClose; var jAlertMsgs = jQuery("#alert-messages"); if (!jAlertMsgs.length) { jQuery("body").append("
"); jAlertMsgs = jQuery("#alert-messages"); } jAlertMsgs.append( ""); var jPopup = jAlertMsgs.find(".popup:last"); var jMessage = jPopup.find(".popup-message"); jPopup.find(".popup-close").click(function() { $.Popup.close(this); }); if (onClose != null) { jPopup.find(".popup-close").click(onClose); } jPopup[0].alertOptions = options; jMessage.append(myMessage || "
"); if (msgHeight) { jMessage.css(jQuery.browser.msie ? "height" : "min-height", msgHeight + "px"); } if (msgWidth) { jPopup.css("width", msgWidth + "px"); } jPopup.mousedown(function() { if (this != jQuery("#alert-messages .popup:last")[0]) { jQuery("#alert-messages").append(this); } }); var jBg = jAlertMsgs.find(".alert-background"); if (modal) { if (jBg.length) { jPopup.before(jBg[0]); } else { jPopup.before("
"); jBg = jAlertMsgs.find(".alert-background"); jBg.css({display: "none", opacity: 0}); } } if (jQuery.browser.msie && jQuery.browser.version.number("round") < 7 && $.Popup.count() == 1) { jQuery('select').css('visibility', 'hidden'); jPopup.find('select').css('visibility', 'visible'); } if (jAlertMsgs.find(".popup").length == 1) { jQuery(window).resize($.Popup.center); jQuery(window).resize($.Popup.resize); jQuery(window).scroll($.Popup.center); } $.Popup.resize(); jBg.fadeTo("normal", 0.5); if (false) { // jQuery Draggable is slow. Use Liferay Drag (lDrag) jPopup.Draggable({ handle: jPopup.find(".popup-header")[0], zIndex: Liferay.zIndex.ALERT + 1 }); } else { jPopup.lDrag({ handle: jPopup.find(".popup-header")[0], threshold: 2, dragClass: "drag-indicator" }); } if (noCenter) { $.Popup.center(); } else { $.Popup.center(msgHeight, msgWidth); } Liferay.Util.addInputType(jPopup[0]); Liferay.Util.addInputFocus(jPopup[0]); window.focus(); return jMessage[0]; }, iframe : function(url, options) { var msgHeight = options.height; var msgWidth = options.width; var message = $.Popup.open(options); var iframe = document.createElement("iframe"); message.height = ""; iframe.src = url; iframe.frameBorder = 0; if (msgWidth) iframe.style.width = "100%"; message.appendChild(iframe); if (!options.noCenter) { $.Popup.center(msgHeight, msgWidth); } return message; }, center : function(height, width) { var jPopup = jQuery("#alert-messages .popup:last"); if (!jPopup[0].alertOptions.noCenter) { jPopup.css({ top: (Viewport.scroll().y + (Viewport.frame().y/2 - jPopup.height()/2)) + "px", left: (Viewport.scroll().x + (Viewport.frame().x/2 - jPopup.width()/2)) + "px" }); } }, resize: function() { jQuery("#alert-messages .alert-background").css({ height: Viewport.page().y + "px", width: Viewport.page().x + "px" }); }, resizeIframe: function(options) { if ($.Popup.message && options) { var iframe = $.Popup.message.getElementsByTagName("iframe")[0]; var loading = jQuery.getOne(".loading-animation", $.Popup.message); if (loading) { loading.parentNode.removeChild(loading); } if (iframe) { if (options.height) { iframe.height = options.height; } if (options.width) { iframe.width = options.width; } } } $.Popup.resize(); } }); })(Liferay);