Statistics
| Branch: | Tag: | Revision:

root / snf-astakos-app / astakos / im / static / im / js / jquery.alerts.js @ d2a553dc

History | View | Annotate | Download (7.5 kB)

1 50dce93a Olga Brani
// jQuery Alert Dialogs Plugin
2 50dce93a Olga Brani
//
3 50dce93a Olga Brani
// Version 1.1
4 50dce93a Olga Brani
//
5 50dce93a Olga Brani
// Cory S.N. LaViska
6 50dce93a Olga Brani
// A Beautiful Site (http://abeautifulsite.net/)
7 50dce93a Olga Brani
// 14 May 2009
8 50dce93a Olga Brani
//
9 50dce93a Olga Brani
// Visit http://abeautifulsite.net/notebook/87 for more information
10 50dce93a Olga Brani
//
11 50dce93a Olga Brani
// Usage:
12 50dce93a Olga Brani
//                jAlert( message, [title, callback] )
13 50dce93a Olga Brani
//                jConfirm( message, [title, callback] )
14 50dce93a Olga Brani
//                jPrompt( message, [value, title, callback] )
15 50dce93a Olga Brani
// 
16 50dce93a Olga Brani
// History:
17 50dce93a Olga Brani
//
18 50dce93a Olga Brani
//                1.00 - Released (29 December 2008)
19 50dce93a Olga Brani
//
20 50dce93a Olga Brani
//                1.01 - Fixed bug where unbinding would destroy all resize events
21 50dce93a Olga Brani
//
22 50dce93a Olga Brani
// License:
23 50dce93a Olga Brani
// 
24 50dce93a Olga Brani
// This plugin is dual-licensed under the GNU General Public License and the MIT License and
25 50dce93a Olga Brani
// is copyright 2008 A Beautiful Site, LLC. 
26 50dce93a Olga Brani
//
27 50dce93a Olga Brani
(function($) {
28 50dce93a Olga Brani
        
29 50dce93a Olga Brani
        $.alerts = {
30 50dce93a Olga Brani
                
31 50dce93a Olga Brani
                // These properties can be read/written by accessing $.alerts.propertyName from your scripts at any time
32 50dce93a Olga Brani
                
33 50dce93a Olga Brani
                verticalOffset: -75,                // vertical offset of the dialog from center screen, in pixels
34 50dce93a Olga Brani
                horizontalOffset: 0,                // horizontal offset of the dialog from center screen, in pixels/
35 50dce93a Olga Brani
                repositionOnResize: true,           // re-centers the dialog on window resize
36 50dce93a Olga Brani
                overlayOpacity: .01,                // transparency level of overlay
37 50dce93a Olga Brani
                overlayColor: '#FFF',               // base color of overlay
38 50dce93a Olga Brani
                draggable: true,                    // make the dialogs draggable (requires UI Draggables plugin)
39 50dce93a Olga Brani
                okButton: ' OK ',         // text for the OK button
40 50dce93a Olga Brani
                cancelButton: ' Cancel ', // text for the Cancel button
41 50dce93a Olga Brani
                dialogClass: null,                  // if specified, this class will be applied to all dialogs
42 50dce93a Olga Brani
                
43 50dce93a Olga Brani
                // Public methods
44 50dce93a Olga Brani
                
45 50dce93a Olga Brani
                alert: function(message, title, callback) {
46 50dce93a Olga Brani
                        if( title == null ) title = 'Alert';
47 50dce93a Olga Brani
                        $.alerts._show(title, message, null, 'alert', function(result) {
48 50dce93a Olga Brani
                                if( callback ) callback(result);
49 50dce93a Olga Brani
                        });
50 50dce93a Olga Brani
                },
51 50dce93a Olga Brani
                
52 50dce93a Olga Brani
                confirm: function(message, title, callback) {
53 50dce93a Olga Brani
                        if( title == null ) title = 'Confirm';
54 50dce93a Olga Brani
                        $.alerts._show(title, message, null, 'confirm', function(result) {
55 50dce93a Olga Brani
                                if( callback ) callback(result);
56 50dce93a Olga Brani
                        });
57 50dce93a Olga Brani
                },
58 50dce93a Olga Brani
                        
59 50dce93a Olga Brani
                prompt: function(message, value, title, callback) {
60 50dce93a Olga Brani
                        if( title == null ) title = 'Prompt';
61 50dce93a Olga Brani
                        $.alerts._show(title, message, value, 'prompt', function(result) {
62 50dce93a Olga Brani
                                if( callback ) callback(result);
63 50dce93a Olga Brani
                        });
64 50dce93a Olga Brani
                },
65 50dce93a Olga Brani
                
66 50dce93a Olga Brani
                // Private methods
67 50dce93a Olga Brani
                
68 50dce93a Olga Brani
                _show: function(title, msg, value, type, callback) {
69 50dce93a Olga Brani
                        
70 50dce93a Olga Brani
                        $.alerts._hide();
71 50dce93a Olga Brani
                        $.alerts._overlay('show');
72 50dce93a Olga Brani
                        
73 50dce93a Olga Brani
                        $("BODY").append(
74 50dce93a Olga Brani
                          '<div id="popup_container">' +
75 50dce93a Olga Brani
                            '<h1 id="popup_title"></h1>' +
76 50dce93a Olga Brani
                            '<div id="popup_content">' +
77 50dce93a Olga Brani
                              '<div id="popup_message"></div>' +
78 50dce93a Olga Brani
                                '</div>' +
79 50dce93a Olga Brani
                          '</div>');
80 50dce93a Olga Brani
                        
81 50dce93a Olga Brani
                        if( $.alerts.dialogClass ) $("#popup_container").addClass($.alerts.dialogClass);
82 50dce93a Olga Brani
                        
83 50dce93a Olga Brani
                        // IE6 Fix
84 50dce93a Olga Brani
                        var pos = ($.browser.msie && parseInt($.browser.version) <= 6 ) ? 'absolute' : 'fixed'; 
85 50dce93a Olga Brani
                        
86 50dce93a Olga Brani
                        $("#popup_container").css({
87 50dce93a Olga Brani
                                position: pos,
88 50dce93a Olga Brani
                                zIndex: 99999,
89 50dce93a Olga Brani
                                padding: 0,
90 50dce93a Olga Brani
                                margin: 0
91 50dce93a Olga Brani
                        });
92 50dce93a Olga Brani
                        
93 50dce93a Olga Brani
                        $("#popup_title").text(title);
94 50dce93a Olga Brani
                        $("#popup_content").addClass(type);
95 50dce93a Olga Brani
                        $("#popup_message").text(msg);
96 50dce93a Olga Brani
                        $("#popup_message").html( $("#popup_message").text().replace(/\n/g, '<br />') );
97 50dce93a Olga Brani
                        
98 50dce93a Olga Brani
                        $("#popup_container").css({
99 50dce93a Olga Brani
                                minWidth: $("#popup_container").outerWidth(),
100 50dce93a Olga Brani
                                maxWidth: $("#popup_container").outerWidth()
101 50dce93a Olga Brani
                        });
102 50dce93a Olga Brani
                        
103 50dce93a Olga Brani
                        $.alerts._reposition();
104 50dce93a Olga Brani
                        $.alerts._maintainPosition(true);
105 50dce93a Olga Brani
                        
106 50dce93a Olga Brani
                        switch( type ) {
107 50dce93a Olga Brani
                                case 'alert':
108 50dce93a Olga Brani
                                        $("#popup_message").after('<div id="popup_panel"><input type="button" value="' + $.alerts.okButton + '" id="popup_ok" /></div>');
109 50dce93a Olga Brani
                                        $("#popup_ok").click( function() {
110 50dce93a Olga Brani
                                                $.alerts._hide();
111 50dce93a Olga Brani
                                                callback(true);
112 50dce93a Olga Brani
                                        });
113 50dce93a Olga Brani
                                        $("#popup_ok").focus().keypress( function(e) {
114 50dce93a Olga Brani
                                                if( e.keyCode == 13 || e.keyCode == 27 ) $("#popup_ok").trigger('click');
115 50dce93a Olga Brani
                                        });
116 50dce93a Olga Brani
                                break;
117 50dce93a Olga Brani
                                case 'confirm':
118 50dce93a Olga Brani
                                        $("#popup_message").after('<div id="popup_panel"><input type="button" value="' + $.alerts.okButton + '" id="popup_ok" /> <input type="button" value="' + $.alerts.cancelButton + '" id="popup_cancel" /></div>');
119 50dce93a Olga Brani
                                        $("#popup_ok").click( function() {
120 50dce93a Olga Brani
                                                $.alerts._hide();
121 50dce93a Olga Brani
                                                if( callback ) callback(true);
122 50dce93a Olga Brani
                                        });
123 50dce93a Olga Brani
                                        $("#popup_cancel").click( function() {
124 50dce93a Olga Brani
                                                $.alerts._hide();
125 50dce93a Olga Brani
                                                if( callback ) callback(false);
126 50dce93a Olga Brani
                                        });
127 50dce93a Olga Brani
                                        $("#popup_ok").focus();
128 50dce93a Olga Brani
                                        $("#popup_ok, #popup_cancel").keypress( function(e) {
129 50dce93a Olga Brani
                                                if( e.keyCode == 13 ) $("#popup_ok").trigger('click');
130 50dce93a Olga Brani
                                                if( e.keyCode == 27 ) $("#popup_cancel").trigger('click');
131 50dce93a Olga Brani
                                        });
132 50dce93a Olga Brani
                                break;
133 50dce93a Olga Brani
                                case 'prompt':
134 50dce93a Olga Brani
                                        $("#popup_message").append('<br /><input type="text" size="30" id="popup_prompt" />').after('<div id="popup_panel"><input type="button" value="' + $.alerts.okButton + '" id="popup_ok" /> <input type="button" value="' + $.alerts.cancelButton + '" id="popup_cancel" /></div>');
135 50dce93a Olga Brani
                                        $("#popup_prompt").width( $("#popup_message").width() );
136 50dce93a Olga Brani
                                        $("#popup_ok").click( function() {
137 50dce93a Olga Brani
                                                var val = $("#popup_prompt").val();
138 50dce93a Olga Brani
                                                $.alerts._hide();
139 50dce93a Olga Brani
                                                if( callback ) callback( val );
140 50dce93a Olga Brani
                                        });
141 50dce93a Olga Brani
                                        $("#popup_cancel").click( function() {
142 50dce93a Olga Brani
                                                $.alerts._hide();
143 50dce93a Olga Brani
                                                if( callback ) callback( null );
144 50dce93a Olga Brani
                                        });
145 50dce93a Olga Brani
                                        $("#popup_prompt, #popup_ok, #popup_cancel").keypress( function(e) {
146 50dce93a Olga Brani
                                                if( e.keyCode == 13 ) $("#popup_ok").trigger('click');
147 50dce93a Olga Brani
                                                if( e.keyCode == 27 ) $("#popup_cancel").trigger('click');
148 50dce93a Olga Brani
                                        });
149 50dce93a Olga Brani
                                        if( value ) $("#popup_prompt").val(value);
150 50dce93a Olga Brani
                                        $("#popup_prompt").focus().select();
151 50dce93a Olga Brani
                                break;
152 50dce93a Olga Brani
                        }
153 50dce93a Olga Brani
                        
154 50dce93a Olga Brani
                        // Make draggable
155 50dce93a Olga Brani
                        if( $.alerts.draggable ) {
156 50dce93a Olga Brani
                                try {
157 50dce93a Olga Brani
                                        $("#popup_container").draggable({ handle: $("#popup_title") });
158 50dce93a Olga Brani
                                        $("#popup_title").css({ cursor: 'move' });
159 50dce93a Olga Brani
                                } catch(e) { /* requires jQuery UI draggables */ }
160 50dce93a Olga Brani
                        }
161 50dce93a Olga Brani
                },
162 50dce93a Olga Brani
                
163 50dce93a Olga Brani
                _hide: function() {
164 50dce93a Olga Brani
                        $("#popup_container").remove();
165 50dce93a Olga Brani
                        $.alerts._overlay('hide');
166 50dce93a Olga Brani
                        $.alerts._maintainPosition(false);
167 50dce93a Olga Brani
                },
168 50dce93a Olga Brani
                
169 50dce93a Olga Brani
                _overlay: function(status) {
170 50dce93a Olga Brani
                        switch( status ) {
171 50dce93a Olga Brani
                                case 'show':
172 50dce93a Olga Brani
                                        $.alerts._overlay('hide');
173 50dce93a Olga Brani
                                        $("BODY").append('<div id="popup_overlay"></div>');
174 50dce93a Olga Brani
                                        $("#popup_overlay").css({
175 50dce93a Olga Brani
                                                position: 'absolute',
176 50dce93a Olga Brani
                                                zIndex: 99998,
177 50dce93a Olga Brani
                                                top: '0px',
178 50dce93a Olga Brani
                                                left: '0px',
179 50dce93a Olga Brani
                                                width: '100%',
180 50dce93a Olga Brani
                                                height: $(document).height(),
181 50dce93a Olga Brani
                                                background: $.alerts.overlayColor,
182 50dce93a Olga Brani
                                                opacity: $.alerts.overlayOpacity
183 50dce93a Olga Brani
                                        });
184 50dce93a Olga Brani
                                break;
185 50dce93a Olga Brani
                                case 'hide':
186 50dce93a Olga Brani
                                        $("#popup_overlay").remove();
187 50dce93a Olga Brani
                                break;
188 50dce93a Olga Brani
                        }
189 50dce93a Olga Brani
                },
190 50dce93a Olga Brani
                
191 50dce93a Olga Brani
                _reposition: function() {
192 50dce93a Olga Brani
                        var top = (($(window).height() / 2) - ($("#popup_container").outerHeight() / 2)) + $.alerts.verticalOffset;
193 50dce93a Olga Brani
                        var left = (($(window).width() / 2) - ($("#popup_container").outerWidth() / 2)) + $.alerts.horizontalOffset;
194 50dce93a Olga Brani
                        if( top < 0 ) top = 0;
195 50dce93a Olga Brani
                        if( left < 0 ) left = 0;
196 50dce93a Olga Brani
                        
197 50dce93a Olga Brani
                        // IE6 fix
198 50dce93a Olga Brani
                        if( $.browser.msie && parseInt($.browser.version) <= 6 ) top = top + $(window).scrollTop();
199 50dce93a Olga Brani
                        
200 50dce93a Olga Brani
                        $("#popup_container").css({
201 50dce93a Olga Brani
                                top: top + 'px',
202 50dce93a Olga Brani
                                left: left + 'px'
203 50dce93a Olga Brani
                        });
204 50dce93a Olga Brani
                        $("#popup_overlay").height( $(document).height() );
205 50dce93a Olga Brani
                },
206 50dce93a Olga Brani
                
207 50dce93a Olga Brani
                _maintainPosition: function(status) {
208 50dce93a Olga Brani
                        if( $.alerts.repositionOnResize ) {
209 50dce93a Olga Brani
                                switch(status) {
210 50dce93a Olga Brani
                                        case true:
211 50dce93a Olga Brani
                                                $(window).bind('resize', $.alerts._reposition);
212 50dce93a Olga Brani
                                        break;
213 50dce93a Olga Brani
                                        case false:
214 50dce93a Olga Brani
                                                $(window).unbind('resize', $.alerts._reposition);
215 50dce93a Olga Brani
                                        break;
216 50dce93a Olga Brani
                                }
217 50dce93a Olga Brani
                        }
218 50dce93a Olga Brani
                }
219 50dce93a Olga Brani
                
220 50dce93a Olga Brani
        }
221 50dce93a Olga Brani
        
222 50dce93a Olga Brani
        // Shortuct functions
223 50dce93a Olga Brani
        jAlert = function(message, title, callback) {
224 50dce93a Olga Brani
                $.alerts.alert(message, title, callback);
225 50dce93a Olga Brani
        }
226 50dce93a Olga Brani
        
227 50dce93a Olga Brani
        jConfirm = function(message, title, callback) {
228 50dce93a Olga Brani
                $.alerts.confirm(message, title, callback);
229 50dce93a Olga Brani
        };
230 50dce93a Olga Brani
                
231 50dce93a Olga Brani
        jPrompt = function(message, value, title, callback) {
232 50dce93a Olga Brani
                $.alerts.prompt(message, value, title, callback);
233 50dce93a Olga Brani
        };
234 50dce93a Olga Brani
        
235 50dce93a Olga Brani
})(jQuery);