diff options
Diffstat (limited to 'static/development-bundle/ui/ui.dialog.js')
-rw-r--r-- | static/development-bundle/ui/ui.dialog.js | 671 |
1 files changed, 671 insertions, 0 deletions
diff --git a/static/development-bundle/ui/ui.dialog.js b/static/development-bundle/ui/ui.dialog.js new file mode 100644 index 0000000..fdd5b26 --- /dev/null +++ b/static/development-bundle/ui/ui.dialog.js | |||
@@ -0,0 +1,671 @@ | |||
1 | /* | ||
2 | * jQuery UI Dialog 1.7.2 | ||
3 | * | ||
4 | * Copyright (c) 2009 AUTHORS.txt (http://jqueryui.com/about) | ||
5 | * Dual licensed under the MIT (MIT-LICENSE.txt) | ||
6 | * and GPL (GPL-LICENSE.txt) licenses. | ||
7 | * | ||
8 | * http://docs.jquery.com/UI/Dialog | ||
9 | * | ||
10 | * Depends: | ||
11 | * ui.core.js | ||
12 | * ui.draggable.js | ||
13 | * ui.resizable.js | ||
14 | */ | ||
15 | (function($) { | ||
16 | |||
17 | var setDataSwitch = { | ||
18 | dragStart: "start.draggable", | ||
19 | drag: "drag.draggable", | ||
20 | dragStop: "stop.draggable", | ||
21 | maxHeight: "maxHeight.resizable", | ||
22 | minHeight: "minHeight.resizable", | ||
23 | maxWidth: "maxWidth.resizable", | ||
24 | minWidth: "minWidth.resizable", | ||
25 | resizeStart: "start.resizable", | ||
26 | resize: "drag.resizable", | ||
27 | resizeStop: "stop.resizable" | ||
28 | }, | ||
29 | |||
30 | uiDialogClasses = | ||
31 | 'ui-dialog ' + | ||
32 | 'ui-widget ' + | ||
33 | 'ui-widget-content ' + | ||
34 | 'ui-corner-all '; | ||
35 | |||
36 | $.widget("ui.dialog", { | ||
37 | |||
38 | _init: function() { | ||
39 | this.originalTitle = this.element.attr('title'); | ||
40 | |||
41 | var self = this, | ||
42 | options = this.options, | ||
43 | |||
44 | title = options.title || this.originalTitle || ' ', | ||
45 | titleId = $.ui.dialog.getTitleId(this.element), | ||
46 | |||
47 | uiDialog = (this.uiDialog = $('<div/>')) | ||
48 | .appendTo(document.body) | ||
49 | .hide() | ||
50 | .addClass(uiDialogClasses + options.dialogClass) | ||
51 | .css({ | ||
52 | position: 'absolute', | ||
53 | overflow: 'hidden', | ||
54 | zIndex: options.zIndex | ||
55 | }) | ||
56 | // setting tabIndex makes the div focusable | ||
57 | // setting outline to 0 prevents a border on focus in Mozilla | ||
58 | .attr('tabIndex', -1).css('outline', 0).keydown(function(event) { | ||
59 | (options.closeOnEscape && event.keyCode | ||
60 | && event.keyCode == $.ui.keyCode.ESCAPE && self.close(event)); | ||
61 | }) | ||
62 | .attr({ | ||
63 | role: 'dialog', | ||
64 | 'aria-labelledby': titleId | ||
65 | }) | ||
66 | .mousedown(function(event) { | ||
67 | self.moveToTop(false, event); | ||
68 | }), | ||
69 | |||
70 | uiDialogContent = this.element | ||
71 | .show() | ||
72 | .removeAttr('title') | ||
73 | .addClass( | ||
74 | 'ui-dialog-content ' + | ||
75 | 'ui-widget-content') | ||
76 | .appendTo(uiDialog), | ||
77 | |||
78 | uiDialogTitlebar = (this.uiDialogTitlebar = $('<div></div>')) | ||
79 | .addClass( | ||
80 | 'ui-dialog-titlebar ' + | ||
81 | 'ui-widget-header ' + | ||
82 | 'ui-corner-all ' + | ||
83 | 'ui-helper-clearfix' | ||
84 | ) | ||
85 | .prependTo(uiDialog), | ||
86 | |||
87 | uiDialogTitlebarClose = $('<a href="#"/>') | ||
88 | .addClass( | ||
89 | 'ui-dialog-titlebar-close ' + | ||
90 | 'ui-corner-all' | ||
91 | ) | ||
92 | .attr('role', 'button') | ||
93 | .hover( | ||
94 | function() { | ||
95 | uiDialogTitlebarClose.addClass('ui-state-hover'); | ||
96 | }, | ||
97 | function() { | ||
98 | uiDialogTitlebarClose.removeClass('ui-state-hover'); | ||
99 | } | ||
100 | ) | ||
101 | .focus(function() { | ||
102 | uiDialogTitlebarClose.addClass('ui-state-focus'); | ||
103 | }) | ||
104 | .blur(function() { | ||
105 | uiDialogTitlebarClose.removeClass('ui-state-focus'); | ||
106 | }) | ||
107 | .mousedown(function(ev) { | ||
108 | ev.stopPropagation(); | ||
109 | }) | ||
110 | .click(function(event) { | ||
111 | self.close(event); | ||
112 | return false; | ||
113 | }) | ||
114 | .appendTo(uiDialogTitlebar), | ||
115 | |||
116 | uiDialogTitlebarCloseText = (this.uiDialogTitlebarCloseText = $('<span/>')) | ||
117 | .addClass( | ||
118 | 'ui-icon ' + | ||
119 | 'ui-icon-closethick' | ||
120 | ) | ||
121 | .text(options.closeText) | ||
122 | .appendTo(uiDialogTitlebarClose), | ||
123 | |||
124 | uiDialogTitle = $('<span/>') | ||
125 | .addClass('ui-dialog-title') | ||
126 | .attr('id', titleId) | ||
127 | .html(title) | ||
128 | .prependTo(uiDialogTitlebar); | ||
129 | |||
130 | uiDialogTitlebar.find("*").add(uiDialogTitlebar).disableSelection(); | ||
131 | |||
132 | (options.draggable && $.fn.draggable && this._makeDraggable()); | ||
133 | (options.resizable && $.fn.resizable && this._makeResizable()); | ||
134 | |||
135 | this._createButtons(options.buttons); | ||
136 | this._isOpen = false; | ||
137 | |||
138 | (options.bgiframe && $.fn.bgiframe && uiDialog.bgiframe()); | ||
139 | (options.autoOpen && this.open()); | ||
140 | |||
141 | }, | ||
142 | |||
143 | destroy: function() { | ||
144 | (this.overlay && this.overlay.destroy()); | ||
145 | this.uiDialog.hide(); | ||
146 | this.element | ||
147 | .unbind('.dialog') | ||
148 | .removeData('dialog') | ||
149 | .removeClass('ui-dialog-content ui-widget-content') | ||
150 | .hide().appendTo('body'); | ||
151 | this.uiDialog.remove(); | ||
152 | |||
153 | (this.originalTitle && this.element.attr('title', this.originalTitle)); | ||
154 | }, | ||
155 | |||
156 | close: function(event) { | ||
157 | var self = this; | ||
158 | |||
159 | if (false === self._trigger('beforeclose', event)) { | ||
160 | return; | ||
161 | } | ||
162 | |||
163 | (self.overlay && self.overlay.destroy()); | ||
164 | self.uiDialog.unbind('keypress.ui-dialog'); | ||
165 | |||
166 | (self.options.hide | ||
167 | ? self.uiDialog.hide(self.options.hide, function() { | ||
168 | self._trigger('close', event); | ||
169 | }) | ||
170 | : self.uiDialog.hide() && self._trigger('close', event)); | ||
171 | |||
172 | $.ui.dialog.overlay.resize(); | ||
173 | |||
174 | self._isOpen = false; | ||
175 | |||
176 | // adjust the maxZ to allow other modal dialogs to continue to work (see #4309) | ||
177 | if (self.options.modal) { | ||
178 | var maxZ = 0; | ||
179 | $('.ui-dialog').each(function() { | ||
180 | if (this != self.uiDialog[0]) { | ||
181 | maxZ = Math.max(maxZ, $(this).css('z-index')); | ||
182 | } | ||
183 | }); | ||
184 | $.ui.dialog.maxZ = maxZ; | ||
185 | } | ||
186 | }, | ||
187 | |||
188 | isOpen: function() { | ||
189 | return this._isOpen; | ||
190 | }, | ||
191 | |||
192 | // the force parameter allows us to move modal dialogs to their correct | ||
193 | // position on open | ||
194 | moveToTop: function(force, event) { | ||
195 | |||
196 | if ((this.options.modal && !force) | ||
197 | || (!this.options.stack && !this.options.modal)) { | ||
198 | return this._trigger('focus', event); | ||
199 | } | ||
200 | |||
201 | if (this.options.zIndex > $.ui.dialog.maxZ) { | ||
202 | $.ui.dialog.maxZ = this.options.zIndex; | ||
203 | } | ||
204 | (this.overlay && this.overlay.$el.css('z-index', $.ui.dialog.overlay.maxZ = ++$.ui.dialog.maxZ)); | ||
205 | |||
206 | //Save and then restore scroll since Opera 9.5+ resets when parent z-Index is changed. | ||
207 | // http://ui.jquery.com/bugs/ticket/3193 | ||
208 | var saveScroll = { scrollTop: this.element.attr('scrollTop'), scrollLeft: this.element.attr('scrollLeft') }; | ||
209 | this.uiDialog.css('z-index', ++$.ui.dialog.maxZ); | ||
210 | this.element.attr(saveScroll); | ||
211 | this._trigger('focus', event); | ||
212 | }, | ||
213 | |||
214 | open: function() { | ||
215 | if (this._isOpen) { return; } | ||
216 | |||
217 | var options = this.options, | ||
218 | uiDialog = this.uiDialog; | ||
219 | |||
220 | this.overlay = options.modal ? new $.ui.dialog.overlay(this) : null; | ||
221 | (uiDialog.next().length && uiDialog.appendTo('body')); | ||
222 | this._size(); | ||
223 | this._position(options.position); | ||
224 | uiDialog.show(options.show); | ||
225 | this.moveToTop(true); | ||
226 | |||
227 | // prevent tabbing out of modal dialogs | ||
228 | (options.modal && uiDialog.bind('keypress.ui-dialog', function(event) { | ||
229 | if (event.keyCode != $.ui.keyCode.TAB) { | ||
230 | return; | ||
231 | } | ||
232 | |||
233 | var tabbables = $(':tabbable', this), | ||
234 | first = tabbables.filter(':first')[0], | ||
235 | last = tabbables.filter(':last')[0]; | ||
236 | |||
237 | if (event.target == last && !event.shiftKey) { | ||
238 | setTimeout(function() { | ||
239 | first.focus(); | ||
240 | }, 1); | ||
241 | } else if (event.target == first && event.shiftKey) { | ||
242 | setTimeout(function() { | ||
243 | last.focus(); | ||
244 | }, 1); | ||
245 | } | ||
246 | })); | ||
247 | |||
248 | // set focus to the first tabbable element in the content area or the first button | ||
249 | // if there are no tabbable elements, set focus on the dialog itself | ||
250 | $([]) | ||
251 | .add(uiDialog.find('.ui-dialog-content :tabbable:first')) | ||
252 | .add(uiDialog.find('.ui-dialog-buttonpane :tabbable:first')) | ||
253 | .add(uiDialog) | ||
254 | .filter(':first') | ||
255 | .focus(); | ||
256 | |||
257 | this._trigger('open'); | ||
258 | this._isOpen = true; | ||
259 | }, | ||
260 | |||
261 | _createButtons: function(buttons) { | ||
262 | var self = this, | ||
263 | hasButtons = false, | ||
264 | uiDialogButtonPane = $('<div></div>') | ||
265 | .addClass( | ||
266 | 'ui-dialog-buttonpane ' + | ||
267 | 'ui-widget-content ' + | ||
268 | 'ui-helper-clearfix' | ||
269 | ); | ||
270 | |||
271 | // if we already have a button pane, remove it | ||
272 | this.uiDialog.find('.ui-dialog-buttonpane').remove(); | ||
273 | |||
274 | (typeof buttons == 'object' && buttons !== null && | ||
275 | $.each(buttons, function() { return !(hasButtons = true); })); | ||
276 | if (hasButtons) { | ||
277 | $.each(buttons, function(name, fn) { | ||
278 | $('<button type="button"></button>') | ||
279 | .addClass( | ||
280 | 'ui-state-default ' + | ||
281 | 'ui-corner-all' | ||
282 | ) | ||
283 | .text(name) | ||
284 | .click(function() { fn.apply(self.element[0], arguments); }) | ||
285 | .hover( | ||
286 | function() { | ||
287 | $(this).addClass('ui-state-hover'); | ||
288 | }, | ||
289 | function() { | ||
290 | $(this).removeClass('ui-state-hover'); | ||
291 | } | ||
292 | ) | ||
293 | .focus(function() { | ||
294 | $(this).addClass('ui-state-focus'); | ||
295 | }) | ||
296 | .blur(function() { | ||
297 | $(this).removeClass('ui-state-focus'); | ||
298 | }) | ||
299 | .appendTo(uiDialogButtonPane); | ||
300 | }); | ||
301 | uiDialogButtonPane.appendTo(this.uiDialog); | ||
302 | } | ||
303 | }, | ||
304 | |||
305 | _makeDraggable: function() { | ||
306 | var self = this, | ||
307 | options = this.options, | ||
308 | heightBeforeDrag; | ||
309 | |||
310 | this.uiDialog.draggable({ | ||
311 | cancel: '.ui-dialog-content', | ||
312 | handle: '.ui-dialog-titlebar', | ||
313 | containment: 'document', | ||
314 | start: function() { | ||
315 | heightBeforeDrag = options.height; | ||
316 | $(this).height($(this).height()).addClass("ui-dialog-dragging"); | ||
317 | (options.dragStart && options.dragStart.apply(self.element[0], arguments)); | ||
318 | }, | ||
319 | drag: function() { | ||
320 | (options.drag && options.drag.apply(self.element[0], arguments)); | ||
321 | }, | ||
322 | stop: function() { | ||
323 | $(this).removeClass("ui-dialog-dragging").height(heightBeforeDrag); | ||
324 | (options.dragStop && options.dragStop.apply(self.element[0], arguments)); | ||
325 | $.ui.dialog.overlay.resize(); | ||
326 | } | ||
327 | }); | ||
328 | }, | ||
329 | |||
330 | _makeResizable: function(handles) { | ||
331 | handles = (handles === undefined ? this.options.resizable : handles); | ||
332 | var self = this, | ||
333 | options = this.options, | ||
334 | resizeHandles = typeof handles == 'string' | ||
335 | ? handles | ||
336 | : 'n,e,s,w,se,sw,ne,nw'; | ||
337 | |||
338 | this.uiDialog.resizable({ | ||
339 | cancel: '.ui-dialog-content', | ||
340 | alsoResize: this.element, | ||
341 | maxWidth: options.maxWidth, | ||
342 | maxHeight: options.maxHeight, | ||
343 | minWidth: options.minWidth, | ||
344 | minHeight: options.minHeight, | ||
345 | start: function() { | ||
346 | $(this).addClass("ui-dialog-resizing"); | ||
347 | (options.resizeStart && options.resizeStart.apply(self.element[0], arguments)); | ||
348 | }, | ||
349 | resize: function() { | ||
350 | (options.resize && options.resize.apply(self.element[0], arguments)); | ||
351 | }, | ||
352 | handles: resizeHandles, | ||
353 | stop: function() { | ||
354 | $(this).removeClass("ui-dialog-resizing"); | ||
355 | options.height = $(this).height(); | ||
356 | options.width = $(this).width(); | ||
357 | (options.resizeStop && options.resizeStop.apply(self.element[0], arguments)); | ||
358 | $.ui.dialog.overlay.resize(); | ||
359 | } | ||
360 | }) | ||
361 | .find('.ui-resizable-se').addClass('ui-icon ui-icon-grip-diagonal-se'); | ||
362 | }, | ||
363 | |||
364 | _position: function(pos) { | ||
365 | var wnd = $(window), doc = $(document), | ||
366 | pTop = doc.scrollTop(), pLeft = doc.scrollLeft(), | ||
367 | minTop = pTop; | ||
368 | |||
369 | if ($.inArray(pos, ['center','top','right','bottom','left']) >= 0) { | ||
370 | pos = [ | ||
371 | pos == 'right' || pos == 'left' ? pos : 'center', | ||
372 | pos == 'top' || pos == 'bottom' ? pos : 'middle' | ||
373 | ]; | ||
374 | } | ||
375 | if (pos.constructor != Array) { | ||
376 | pos = ['center', 'middle']; | ||
377 | } | ||
378 | if (pos[0].constructor == Number) { | ||
379 | pLeft += pos[0]; | ||
380 | } else { | ||
381 | switch (pos[0]) { | ||
382 | case 'left': | ||
383 | pLeft += 0; | ||
384 | break; | ||
385 | case 'right': | ||
386 | pLeft += wnd.width() - this.uiDialog.outerWidth(); | ||
387 | break; | ||
388 | default: | ||
389 | case 'center': | ||
390 | pLeft += (wnd.width() - this.uiDialog.outerWidth()) / 2; | ||
391 | } | ||
392 | } | ||
393 | if (pos[1].constructor == Number) { | ||
394 | pTop += pos[1]; | ||
395 | } else { | ||
396 | switch (pos[1]) { | ||
397 | case 'top': | ||
398 | pTop += 0; | ||
399 | break; | ||
400 | case 'bottom': | ||
401 | pTop += wnd.height() - this.uiDialog.outerHeight(); | ||
402 | break; | ||
403 | default: | ||
404 | case 'middle': | ||
405 | pTop += (wnd.height() - this.uiDialog.outerHeight()) / 2; | ||
406 | } | ||
407 | } | ||
408 | |||
409 | // prevent the dialog from being too high (make sure the titlebar | ||
410 | // is accessible) | ||
411 | pTop = Math.max(pTop, minTop); | ||
412 | this.uiDialog.css({top: pTop, left: pLeft}); | ||
413 | }, | ||
414 | |||
415 | _setData: function(key, value){ | ||
416 | (setDataSwitch[key] && this.uiDialog.data(setDataSwitch[key], value)); | ||
417 | switch (key) { | ||
418 | case "buttons": | ||
419 | this._createButtons(value); | ||
420 | break; | ||
421 | case "closeText": | ||
422 | this.uiDialogTitlebarCloseText.text(value); | ||
423 | break; | ||
424 | case "dialogClass": | ||
425 | this.uiDialog | ||
426 | .removeClass(this.options.dialogClass) | ||
427 | .addClass(uiDialogClasses + value); | ||
428 | break; | ||
429 | case "draggable": | ||
430 | (value | ||
431 | ? this._makeDraggable() | ||
432 | : this.uiDialog.draggable('destroy')); | ||
433 | break; | ||
434 | case "height": | ||
435 | this.uiDialog.height(value); | ||
436 | break; | ||
437 | case "position": | ||
438 | this._position(value); | ||
439 | break; | ||
440 | case "resizable": | ||
441 | var uiDialog = this.uiDialog, | ||
442 | isResizable = this.uiDialog.is(':data(resizable)'); | ||
443 | |||
444 | // currently resizable, becoming non-resizable | ||
445 | (isResizable && !value && uiDialog.resizable('destroy')); | ||
446 | |||
447 | // currently resizable, changing handles | ||
448 | (isResizable && typeof value == 'string' && | ||
449 | uiDialog.resizable('option', 'handles', value)); | ||
450 | |||
451 | // currently non-resizable, becoming resizable | ||
452 | (isResizable || this._makeResizable(value)); | ||
453 | break; | ||
454 | case "title": | ||
455 | $(".ui-dialog-title", this.uiDialogTitlebar).html(value || ' '); | ||
456 | break; | ||
457 | case "width": | ||
458 | this.uiDialog.width(value); | ||
459 | break; | ||
460 | } | ||
461 | |||
462 | $.widget.prototype._setData.apply(this, arguments); | ||
463 | }, | ||
464 | |||
465 | _size: function() { | ||
466 | /* If the user has resized the dialog, the .ui-dialog and .ui-dialog-content | ||
467 | * divs will both have width and height set, so we need to reset them | ||
468 | */ | ||
469 | var options = this.options; | ||
470 | |||
471 | // reset content sizing | ||
472 | this.element.css({ | ||
473 | height: 0, | ||
474 | minHeight: 0, | ||
475 | width: 'auto' | ||
476 | }); | ||
477 | |||
478 | // reset wrapper sizing | ||
479 | // determine the height of all the non-content elements | ||
480 | var nonContentHeight = this.uiDialog.css({ | ||
481 | height: 'auto', | ||
482 | width: options.width | ||
483 | }) | ||
484 | .height(); | ||
485 | |||
486 | this.element | ||
487 | .css({ | ||
488 | minHeight: Math.max(options.minHeight - nonContentHeight, 0), | ||
489 | height: options.height == 'auto' | ||
490 | ? 'auto' | ||
491 | : Math.max(options.height - nonContentHeight, 0) | ||
492 | }); | ||
493 | } | ||
494 | }); | ||
495 | |||
496 | $.extend($.ui.dialog, { | ||
497 | version: "1.7.2", | ||
498 | defaults: { | ||
499 | autoOpen: true, | ||
500 | bgiframe: false, | ||
501 | buttons: {}, | ||
502 | closeOnEscape: true, | ||
503 | closeText: 'close', | ||
504 | dialogClass: '', | ||
505 | draggable: true, | ||
506 | hide: null, | ||
507 | height: 'auto', | ||
508 | maxHeight: false, | ||
509 | maxWidth: false, | ||
510 | minHeight: 150, | ||
511 | minWidth: 150, | ||
512 | modal: false, | ||
513 | position: 'center', | ||
514 | resizable: true, | ||
515 | show: null, | ||
516 | stack: true, | ||
517 | title: '', | ||
518 | width: 300, | ||
519 | zIndex: 1000 | ||
520 | }, | ||
521 | |||
522 | getter: 'isOpen', | ||
523 | |||
524 | uuid: 0, | ||
525 | maxZ: 0, | ||
526 | |||
527 | getTitleId: function($el) { | ||
528 | return 'ui-dialog-title-' + ($el.attr('id') || ++this.uuid); | ||
529 | }, | ||
530 | |||
531 | overlay: function(dialog) { | ||
532 | this.$el = $.ui.dialog.overlay.create(dialog); | ||
533 | } | ||
534 | }); | ||
535 | |||
536 | $.extend($.ui.dialog.overlay, { | ||
537 | instances: [], | ||
538 | maxZ: 0, | ||
539 | events: $.map('focus,mousedown,mouseup,keydown,keypress,click'.split(','), | ||
540 | function(event) { return event + '.dialog-overlay'; }).join(' '), | ||
541 | create: function(dialog) { | ||
542 | if (this.instances.length === 0) { | ||
543 | // prevent use of anchors and inputs | ||
544 | // we use a setTimeout in case the overlay is created from an | ||
545 | // event that we're going to be cancelling (see #2804) | ||
546 | setTimeout(function() { | ||
547 | // handle $(el).dialog().dialog('close') (see #4065) | ||
548 | if ($.ui.dialog.overlay.instances.length) { | ||
549 | $(document).bind($.ui.dialog.overlay.events, function(event) { | ||
550 | var dialogZ = $(event.target).parents('.ui-dialog').css('zIndex') || 0; | ||
551 | return (dialogZ > $.ui.dialog.overlay.maxZ); | ||
552 | }); | ||
553 | } | ||
554 | }, 1); | ||
555 | |||
556 | // allow closing by pressing the escape key | ||
557 | $(document).bind('keydown.dialog-overlay', function(event) { | ||
558 | (dialog.options.closeOnEscape && event.keyCode | ||
559 | && event.keyCode == $.ui.keyCode.ESCAPE && dialog.close(event)); | ||
560 | }); | ||
561 | |||
562 | // handle window resize | ||
563 | $(window).bind('resize.dialog-overlay', $.ui.dialog.overlay.resize); | ||
564 | } | ||
565 | |||
566 | var $el = $('<div></div>').appendTo(document.body) | ||
567 | .addClass('ui-widget-overlay').css({ | ||
568 | width: this.width(), | ||
569 | height: this.height() | ||
570 | }); | ||
571 | |||
572 | (dialog.options.bgiframe && $.fn.bgiframe && $el.bgiframe()); | ||
573 | |||
574 | this.instances.push($el); | ||
575 | return $el; | ||
576 | }, | ||
577 | |||
578 | destroy: function($el) { | ||
579 | this.instances.splice($.inArray(this.instances, $el), 1); | ||
580 | |||
581 | if (this.instances.length === 0) { | ||
582 | $([document, window]).unbind('.dialog-overlay'); | ||
583 | } | ||
584 | |||
585 | $el.remove(); | ||
586 | |||
587 | // adjust the maxZ to allow other modal dialogs to continue to work (see #4309) | ||
588 | var maxZ = 0; | ||
589 | $.each(this.instances, function() { | ||
590 | maxZ = Math.max(maxZ, this.css('z-index')); | ||
591 | }); | ||
592 | this.maxZ = maxZ; | ||
593 | }, | ||
594 | |||
595 | height: function() { | ||
596 | // handle IE 6 | ||
597 | if ($.browser.msie && $.browser.version < 7) { | ||
598 | var scrollHeight = Math.max( | ||
599 | document.documentElement.scrollHeight, | ||
600 | document.body.scrollHeight | ||
601 | ); | ||
602 | var offsetHeight = Math.max( | ||
603 | document.documentElement.offsetHeight, | ||
604 | document.body.offsetHeight | ||
605 | ); | ||
606 | |||
607 | if (scrollHeight < offsetHeight) { | ||
608 | return $(window).height() + 'px'; | ||
609 | } else { | ||
610 | return scrollHeight + 'px'; | ||
611 | } | ||
612 | // handle "good" browsers | ||
613 | } else { | ||
614 | return $(document).height() + 'px'; | ||
615 | } | ||
616 | }, | ||
617 | |||
618 | width: function() { | ||
619 | // handle IE 6 | ||
620 | if ($.browser.msie && $.browser.version < 7) { | ||
621 | var scrollWidth = Math.max( | ||
622 | document.documentElement.scrollWidth, | ||
623 | document.body.scrollWidth | ||
624 | ); | ||
625 | var offsetWidth = Math.max( | ||
626 | document.documentElement.offsetWidth, | ||
627 | document.body.offsetWidth | ||
628 | ); | ||
629 | |||
630 | if (scrollWidth < offsetWidth) { | ||
631 | return $(window).width() + 'px'; | ||
632 | } else { | ||
633 | return scrollWidth + 'px'; | ||
634 | } | ||
635 | // handle "good" browsers | ||
636 | } else { | ||
637 | return $(document).width() + 'px'; | ||
638 | } | ||
639 | }, | ||
640 | |||
641 | resize: function() { | ||
642 | /* If the dialog is draggable and the user drags it past the | ||
643 | * right edge of the window, the document becomes wider so we | ||
644 | * need to stretch the overlay. If the user then drags the | ||
645 | * dialog back to the left, the document will become narrower, | ||
646 | * so we need to shrink the overlay to the appropriate size. | ||
647 | * This is handled by shrinking the overlay before setting it | ||
648 | * to the full document size. | ||
649 | */ | ||
650 | var $overlays = $([]); | ||
651 | $.each($.ui.dialog.overlay.instances, function() { | ||
652 | $overlays = $overlays.add(this); | ||
653 | }); | ||
654 | |||
655 | $overlays.css({ | ||
656 | width: 0, | ||
657 | height: 0 | ||
658 | }).css({ | ||
659 | width: $.ui.dialog.overlay.width(), | ||
660 | height: $.ui.dialog.overlay.height() | ||
661 | }); | ||
662 | } | ||
663 | }); | ||
664 | |||
665 | $.extend($.ui.dialog.overlay.prototype, { | ||
666 | destroy: function() { | ||
667 | $.ui.dialog.overlay.destroy(this.$el); | ||
668 | } | ||
669 | }); | ||
670 | |||
671 | })(jQuery); | ||