// jQuery Alert Dialogs Plugin // // Version 1.3 // // Cory S.N. LaViska // A Beautiful Site (http://abeautifulsite.net/) // 14 May 2009 // // Visit http://abeautifulsite.net/notebook/87 for more information // // Usage: // jAlert( message, [title, callback] ) // jConfirm( message, [title, callback] ) // jPrompt( message, [value, title, callback] ) // // History: // // 1.00 - Released (29 December 2008) // // 1.01 - Fixed bug where unbinding would destroy all resize events // // License: // // This plugin is dual-licensed under the GNU General Public License and the MIT License and // is copyright 2008 A Beautiful Site, LLC. // (function($) { var pos = 'fixed'; $.alerts = { // These properties can be read/written by accessing $.alerts.propertyName from your scripts at any time verticalOffset: -75, // vertical offset of the dialog from center screen, in pixels horizontalOffset: 0, // horizontal offset of the dialog from center screen, in pixels/ repositionOnResize: true, // re-centers the dialog on window resize overlayOpacity: .6, // transparency level of overlay overlayColor: '#000', // base color of overlay draggable: true, // make the dialogs draggable (require_onces UI Draggables plugin) okButton: ' oui ', // text for the OK button nonButton: ' non ', // text for the Cancel button cancelButton: ' non ', // text for the Cancel button dialogClass: null, // if specified, this class will be applied to all dialogs // Public methods alert: function(message, title, callback) { if (title == null) title = 'Alert'; $.alerts._show(title, message, null, 'alert', function(result) { if (callback) callback(result); }); }, confirm: function(message, title, callback) { if (title == null) title = 'Confirm'; $.alerts._show(title, message, null, 'confirm', function(result) { if (callback) callback(result); }); }, confirm2: function(message, title, callback) { if (title == null) title = 'Confirm2'; $.alerts._show(title, message, null, 'confirm2', function(result) { if (callback) callback(result); }); }, prompt: function(message, value, title, callback) { if (title == null) title = 'Prompt'; $.alerts._show(title, message, value, 'prompt', function(result) { if (callback) callback(result); }); }, // Private methods _show: function(title, msg, value, type, callback) { $.alerts._hide(); $.alerts._overlay('show'); $("BODY").append( ''); if ($.alerts.dialogClass) $("#popup_container").addClass($.alerts.dialogClass); $("#popup_container").css({ position: pos, zIndex: 99999, padding: 0, margin: 0 }); $("#popup_container").fadeIn('slow'); $("#popup_title").text(title); $("#popup_content").addClass(type); $("#popup_message").text(msg); $("#popup_message").html($("#popup_message").text().replace(/\n/g, '
')); $("#popup_container").css({ minWidth: $("#popup_container").outerWidth(), maxWidth: $("#popup_container").outerWidth() }); $.alerts._reposition(); $.alerts._maintainPosition(true); switch (type) { case 'alert': $("#popup_message").after(''); $("#popup_ok").click(function() { $.alerts._hide(); callback(true); }); $("#popup_ok").focus().keypress(function(e) { if (e.keyCode == 13 || e.keyCode == 27) $("#popup_ok").trigger('click'); }); break; case 'confirm': $("#popup_message").after(''); $("#popup_ok").click(function() { $.alerts._hide(); if (callback) callback(true); }); $("#popup_cancel").click(function() { $.alerts._hide(); if (callback) callback(false); }); $("#popup_ok").focus(); $("#popup_ok, #popup_cancel").keypress(function(e) { if (e.keyCode == 13) $("#popup_ok").trigger('click'); if (e.keyCode == 27) $("#popup_cancel").trigger('click'); }); break; case 'confirm2': // Jconfirm avec trois boutons $("#popup_message").after(''); $("#popup_ok").click(function() { $.alerts._hide(); if (callback) callback(1); }); $("#popup_non").click(function() { $.alerts._hide(); if (callback) callback(2); }); $("#popup_cancel").click(function() { $.alerts._hide(); if (callback) callback(0); }); $("#popup_ok").focus(); $("#popup_ok, #popup_cancel").keypress(function(e) { if (e.keyCode == 13) $("#popup_ok").trigger('click'); if (e.keyCode == 27) $("#popup_cancel").trigger('click'); }); break; case 'prompt': $("#popup_message").append('
').after(''); $("#popup_prompt").width($("#popup_message").width()); $("#popup_ok").click(function() { var val = $("#popup_prompt").val(); $.alerts._hide(); if (callback) callback(val); }); $("#popup_cancel").click(function() { $.alerts._hide(); if (callback) callback(null); }); $("#popup_prompt, #popup_ok, #popup_cancel").keypress(function(e) { if (e.keyCode == 13) $("#popup_ok").trigger('click'); if (e.keyCode == 27) $("#popup_cancel").trigger('click'); }); if (value) $("#popup_prompt").val(value); $("#popup_prompt").focus().select(); break; } // Make draggable if ($.alerts.draggable) { try { $("#popup_container").draggable({handle: $("#popup_title")}); $("#popup_title").css({cursor: 'move'}); } catch (e) { /* requires jQuery UI draggables */ } } }, _hide: function() { $("#popup_container").fadeOut("slow", function() { $("#popup_container").remove(); }); $.alerts._overlay('hide'); $.alerts._maintainPosition(false); }, _overlay: function(status) { switch (status) { case 'show': $.alerts._overlay('hide'); $("BODY").append(''); $("#popup_overlay").css({ position: 'absolute', zIndex: 10, top: '0px', left: '0px', width: '100%', height: $(document).height(), background: $.alerts.overlayColor, opacity: $.alerts.overlayOpacity }); $("#popup_overlay").fadeIn("slow") break; case 'hide': $("#popup_overlay").fadeOut("slow", function() { $("#popup_overlay").remove(); }); break; } }, _reposition: function() { var top = (($(window).height() / 2) - ($("#popup_container").outerHeight() / 2)) + $.alerts.verticalOffset; var left = (($(window).width() / 2) - ($("#popup_container").outerWidth() / 2)) + $.alerts.horizontalOffset; if (top < 0) top = 0; if (left < 0) left = 0; $("#popup_container").css({ top: top + 'px', left: left + 'px' }); $("#popup_overlay").height($(document).height()); }, _maintainPosition: function(status) { if ($.alerts.repositionOnResize) { switch (status) { case true: $(window).bind('resize', $.alerts._reposition); break; case false: $(window).unbind('resize', $.alerts._reposition); break; } } } } // Shortuct functions jAlert = function(message, title, callback) { $.alerts.alert(message, title, callback); } jConfirm = function(message, title, callback) { $.alerts.confirm(message, title, callback); }; jConfirm2 = function(message, title, callback) { $.alerts.confirm2(message, title, callback); }; jPrompt = function(message, value, title, callback) { $.alerts.prompt(message, value, title, callback); }; })(jQuery);