h2ocube_rails_assets 0.0.4 → 0.0.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (39) hide show
  1. data/h2ocube_rails_assets.gemspec +1 -1
  2. data/vendor/assets/javascripts/jquery.fileupload.js +1 -1
  3. data/vendor/assets/javascripts/jquery.ui.js +2 -14914
  4. data/vendor/assets/javascripts/jquery.ui/jquery-ui.custom.js +14879 -0
  5. data/vendor/assets/javascripts/jquery.ui/jquery.ui.accordion.js +731 -0
  6. data/vendor/assets/javascripts/jquery.ui/jquery.ui.autocomplete.js +602 -0
  7. data/vendor/assets/javascripts/jquery.ui/jquery.ui.button.js +418 -0
  8. data/vendor/assets/javascripts/jquery.ui/jquery.ui.core.js +356 -0
  9. data/vendor/assets/javascripts/jquery.ui/jquery.ui.datepicker.js +1846 -0
  10. data/vendor/assets/javascripts/jquery.ui/jquery.ui.dialog.js +858 -0
  11. data/vendor/assets/javascripts/jquery.ui/jquery.ui.draggable.js +836 -0
  12. data/vendor/assets/javascripts/jquery.ui/jquery.ui.droppable.js +294 -0
  13. data/vendor/assets/javascripts/jquery.ui/jquery.ui.effect-blind.js +82 -0
  14. data/vendor/assets/javascripts/jquery.ui/jquery.ui.effect-bounce.js +113 -0
  15. data/vendor/assets/javascripts/jquery.ui/jquery.ui.effect-clip.js +67 -0
  16. data/vendor/assets/javascripts/jquery.ui/jquery.ui.effect-drop.js +65 -0
  17. data/vendor/assets/javascripts/jquery.ui/jquery.ui.effect-explode.js +97 -0
  18. data/vendor/assets/javascripts/jquery.ui/jquery.ui.effect-fade.js +30 -0
  19. data/vendor/assets/javascripts/jquery.ui/jquery.ui.effect-fold.js +76 -0
  20. data/vendor/assets/javascripts/jquery.ui/jquery.ui.effect-highlight.js +50 -0
  21. data/vendor/assets/javascripts/jquery.ui/jquery.ui.effect-pulsate.js +63 -0
  22. data/vendor/assets/javascripts/jquery.ui/jquery.ui.effect-scale.js +318 -0
  23. data/vendor/assets/javascripts/jquery.ui/jquery.ui.effect-shake.js +74 -0
  24. data/vendor/assets/javascripts/jquery.ui/jquery.ui.effect-slide.js +64 -0
  25. data/vendor/assets/javascripts/jquery.ui/jquery.ui.effect-transfer.js +47 -0
  26. data/vendor/assets/javascripts/jquery.ui/jquery.ui.effect.js +1276 -0
  27. data/vendor/assets/javascripts/jquery.ui/jquery.ui.menu.js +610 -0
  28. data/vendor/assets/javascripts/jquery.ui/jquery.ui.mouse.js +169 -0
  29. data/vendor/assets/javascripts/jquery.ui/jquery.ui.position.js +517 -0
  30. data/vendor/assets/javascripts/jquery.ui/jquery.ui.progressbar.js +105 -0
  31. data/vendor/assets/javascripts/jquery.ui/jquery.ui.resizable.js +801 -0
  32. data/vendor/assets/javascripts/jquery.ui/jquery.ui.selectable.js +261 -0
  33. data/vendor/assets/javascripts/jquery.ui/jquery.ui.slider.js +644 -0
  34. data/vendor/assets/javascripts/jquery.ui/jquery.ui.sortable.js +1096 -0
  35. data/vendor/assets/javascripts/jquery.ui/jquery.ui.spinner.js +478 -0
  36. data/vendor/assets/javascripts/jquery.ui/jquery.ui.tabs.js +1366 -0
  37. data/vendor/assets/javascripts/jquery.ui/jquery.ui.tooltip.js +398 -0
  38. data/vendor/assets/javascripts/{jquery.ui.widget.js → jquery.ui/jquery.ui.widget.js} +39 -34
  39. metadata +37 -9
@@ -0,0 +1,858 @@
1
+ /*!
2
+ * jQuery UI Dialog 1.9.2
3
+ * http://jqueryui.com
4
+ *
5
+ * Copyright 2012 jQuery Foundation and other contributors
6
+ * Released under the MIT license.
7
+ * http://jquery.org/license
8
+ *
9
+ * http://api.jqueryui.com/dialog/
10
+ *
11
+ * Depends:
12
+ * jquery.ui.core.js
13
+ * jquery.ui.widget.js
14
+ * jquery.ui.button.js
15
+ * jquery.ui.draggable.js
16
+ * jquery.ui.mouse.js
17
+ * jquery.ui.position.js
18
+ * jquery.ui.resizable.js
19
+ */
20
+ (function( $, undefined ) {
21
+
22
+ var uiDialogClasses = "ui-dialog ui-widget ui-widget-content ui-corner-all ",
23
+ sizeRelatedOptions = {
24
+ buttons: true,
25
+ height: true,
26
+ maxHeight: true,
27
+ maxWidth: true,
28
+ minHeight: true,
29
+ minWidth: true,
30
+ width: true
31
+ },
32
+ resizableRelatedOptions = {
33
+ maxHeight: true,
34
+ maxWidth: true,
35
+ minHeight: true,
36
+ minWidth: true
37
+ };
38
+
39
+ $.widget("ui.dialog", {
40
+ version: "1.9.2",
41
+ options: {
42
+ autoOpen: true,
43
+ buttons: {},
44
+ closeOnEscape: true,
45
+ closeText: "close",
46
+ dialogClass: "",
47
+ draggable: true,
48
+ hide: null,
49
+ height: "auto",
50
+ maxHeight: false,
51
+ maxWidth: false,
52
+ minHeight: 150,
53
+ minWidth: 150,
54
+ modal: false,
55
+ position: {
56
+ my: "center",
57
+ at: "center",
58
+ of: window,
59
+ collision: "fit",
60
+ // ensure that the titlebar is never outside the document
61
+ using: function( pos ) {
62
+ var topOffset = $( this ).css( pos ).offset().top;
63
+ if ( topOffset < 0 ) {
64
+ $( this ).css( "top", pos.top - topOffset );
65
+ }
66
+ }
67
+ },
68
+ resizable: true,
69
+ show: null,
70
+ stack: true,
71
+ title: "",
72
+ width: 300,
73
+ zIndex: 1000
74
+ },
75
+
76
+ _create: function() {
77
+ this.originalTitle = this.element.attr( "title" );
78
+ // #5742 - .attr() might return a DOMElement
79
+ if ( typeof this.originalTitle !== "string" ) {
80
+ this.originalTitle = "";
81
+ }
82
+ this.oldPosition = {
83
+ parent: this.element.parent(),
84
+ index: this.element.parent().children().index( this.element )
85
+ };
86
+ this.options.title = this.options.title || this.originalTitle;
87
+ var that = this,
88
+ options = this.options,
89
+
90
+ title = options.title || "&#160;",
91
+ uiDialog,
92
+ uiDialogTitlebar,
93
+ uiDialogTitlebarClose,
94
+ uiDialogTitle,
95
+ uiDialogButtonPane;
96
+
97
+ uiDialog = ( this.uiDialog = $( "<div>" ) )
98
+ .addClass( uiDialogClasses + options.dialogClass )
99
+ .css({
100
+ display: "none",
101
+ outline: 0, // TODO: move to stylesheet
102
+ zIndex: options.zIndex
103
+ })
104
+ // setting tabIndex makes the div focusable
105
+ .attr( "tabIndex", -1)
106
+ .keydown(function( event ) {
107
+ if ( options.closeOnEscape && !event.isDefaultPrevented() && event.keyCode &&
108
+ event.keyCode === $.ui.keyCode.ESCAPE ) {
109
+ that.close( event );
110
+ event.preventDefault();
111
+ }
112
+ })
113
+ .mousedown(function( event ) {
114
+ that.moveToTop( false, event );
115
+ })
116
+ .appendTo( "body" );
117
+
118
+ this.element
119
+ .show()
120
+ .removeAttr( "title" )
121
+ .addClass( "ui-dialog-content ui-widget-content" )
122
+ .appendTo( uiDialog );
123
+
124
+ uiDialogTitlebar = ( this.uiDialogTitlebar = $( "<div>" ) )
125
+ .addClass( "ui-dialog-titlebar ui-widget-header " +
126
+ "ui-corner-all ui-helper-clearfix" )
127
+ .bind( "mousedown", function() {
128
+ // Dialog isn't getting focus when dragging (#8063)
129
+ uiDialog.focus();
130
+ })
131
+ .prependTo( uiDialog );
132
+
133
+ uiDialogTitlebarClose = $( "<a href='#'></a>" )
134
+ .addClass( "ui-dialog-titlebar-close ui-corner-all" )
135
+ .attr( "role", "button" )
136
+ .click(function( event ) {
137
+ event.preventDefault();
138
+ that.close( event );
139
+ })
140
+ .appendTo( uiDialogTitlebar );
141
+
142
+ ( this.uiDialogTitlebarCloseText = $( "<span>" ) )
143
+ .addClass( "ui-icon ui-icon-closethick" )
144
+ .text( options.closeText )
145
+ .appendTo( uiDialogTitlebarClose );
146
+
147
+ uiDialogTitle = $( "<span>" )
148
+ .uniqueId()
149
+ .addClass( "ui-dialog-title" )
150
+ .html( title )
151
+ .prependTo( uiDialogTitlebar );
152
+
153
+ uiDialogButtonPane = ( this.uiDialogButtonPane = $( "<div>" ) )
154
+ .addClass( "ui-dialog-buttonpane ui-widget-content ui-helper-clearfix" );
155
+
156
+ ( this.uiButtonSet = $( "<div>" ) )
157
+ .addClass( "ui-dialog-buttonset" )
158
+ .appendTo( uiDialogButtonPane );
159
+
160
+ uiDialog.attr({
161
+ role: "dialog",
162
+ "aria-labelledby": uiDialogTitle.attr( "id" )
163
+ });
164
+
165
+ uiDialogTitlebar.find( "*" ).add( uiDialogTitlebar ).disableSelection();
166
+ this._hoverable( uiDialogTitlebarClose );
167
+ this._focusable( uiDialogTitlebarClose );
168
+
169
+ if ( options.draggable && $.fn.draggable ) {
170
+ this._makeDraggable();
171
+ }
172
+ if ( options.resizable && $.fn.resizable ) {
173
+ this._makeResizable();
174
+ }
175
+
176
+ this._createButtons( options.buttons );
177
+ this._isOpen = false;
178
+
179
+ if ( $.fn.bgiframe ) {
180
+ uiDialog.bgiframe();
181
+ }
182
+
183
+ // prevent tabbing out of modal dialogs
184
+ this._on( uiDialog, { keydown: function( event ) {
185
+ if ( !options.modal || event.keyCode !== $.ui.keyCode.TAB ) {
186
+ return;
187
+ }
188
+
189
+ var tabbables = $( ":tabbable", uiDialog ),
190
+ first = tabbables.filter( ":first" ),
191
+ last = tabbables.filter( ":last" );
192
+
193
+ if ( event.target === last[0] && !event.shiftKey ) {
194
+ first.focus( 1 );
195
+ return false;
196
+ } else if ( event.target === first[0] && event.shiftKey ) {
197
+ last.focus( 1 );
198
+ return false;
199
+ }
200
+ }});
201
+ },
202
+
203
+ _init: function() {
204
+ if ( this.options.autoOpen ) {
205
+ this.open();
206
+ }
207
+ },
208
+
209
+ _destroy: function() {
210
+ var next,
211
+ oldPosition = this.oldPosition;
212
+
213
+ if ( this.overlay ) {
214
+ this.overlay.destroy();
215
+ }
216
+ this.uiDialog.hide();
217
+ this.element
218
+ .removeClass( "ui-dialog-content ui-widget-content" )
219
+ .hide()
220
+ .appendTo( "body" );
221
+ this.uiDialog.remove();
222
+
223
+ if ( this.originalTitle ) {
224
+ this.element.attr( "title", this.originalTitle );
225
+ }
226
+
227
+ next = oldPosition.parent.children().eq( oldPosition.index );
228
+ // Don't try to place the dialog next to itself (#8613)
229
+ if ( next.length && next[ 0 ] !== this.element[ 0 ] ) {
230
+ next.before( this.element );
231
+ } else {
232
+ oldPosition.parent.append( this.element );
233
+ }
234
+ },
235
+
236
+ widget: function() {
237
+ return this.uiDialog;
238
+ },
239
+
240
+ close: function( event ) {
241
+ var that = this,
242
+ maxZ, thisZ;
243
+
244
+ if ( !this._isOpen ) {
245
+ return;
246
+ }
247
+
248
+ if ( false === this._trigger( "beforeClose", event ) ) {
249
+ return;
250
+ }
251
+
252
+ this._isOpen = false;
253
+
254
+ if ( this.overlay ) {
255
+ this.overlay.destroy();
256
+ }
257
+
258
+ if ( this.options.hide ) {
259
+ this._hide( this.uiDialog, this.options.hide, function() {
260
+ that._trigger( "close", event );
261
+ });
262
+ } else {
263
+ this.uiDialog.hide();
264
+ this._trigger( "close", event );
265
+ }
266
+
267
+ $.ui.dialog.overlay.resize();
268
+
269
+ // adjust the maxZ to allow other modal dialogs to continue to work (see #4309)
270
+ if ( this.options.modal ) {
271
+ maxZ = 0;
272
+ $( ".ui-dialog" ).each(function() {
273
+ if ( this !== that.uiDialog[0] ) {
274
+ thisZ = $( this ).css( "z-index" );
275
+ if ( !isNaN( thisZ ) ) {
276
+ maxZ = Math.max( maxZ, thisZ );
277
+ }
278
+ }
279
+ });
280
+ $.ui.dialog.maxZ = maxZ;
281
+ }
282
+
283
+ return this;
284
+ },
285
+
286
+ isOpen: function() {
287
+ return this._isOpen;
288
+ },
289
+
290
+ // the force parameter allows us to move modal dialogs to their correct
291
+ // position on open
292
+ moveToTop: function( force, event ) {
293
+ var options = this.options,
294
+ saveScroll;
295
+
296
+ if ( ( options.modal && !force ) ||
297
+ ( !options.stack && !options.modal ) ) {
298
+ return this._trigger( "focus", event );
299
+ }
300
+
301
+ if ( options.zIndex > $.ui.dialog.maxZ ) {
302
+ $.ui.dialog.maxZ = options.zIndex;
303
+ }
304
+ if ( this.overlay ) {
305
+ $.ui.dialog.maxZ += 1;
306
+ $.ui.dialog.overlay.maxZ = $.ui.dialog.maxZ;
307
+ this.overlay.$el.css( "z-index", $.ui.dialog.overlay.maxZ );
308
+ }
309
+
310
+ // Save and then restore scroll
311
+ // Opera 9.5+ resets when parent z-index is changed.
312
+ // http://bugs.jqueryui.com/ticket/3193
313
+ saveScroll = {
314
+ scrollTop: this.element.scrollTop(),
315
+ scrollLeft: this.element.scrollLeft()
316
+ };
317
+ $.ui.dialog.maxZ += 1;
318
+ this.uiDialog.css( "z-index", $.ui.dialog.maxZ );
319
+ this.element.attr( saveScroll );
320
+ this._trigger( "focus", event );
321
+
322
+ return this;
323
+ },
324
+
325
+ open: function() {
326
+ if ( this._isOpen ) {
327
+ return;
328
+ }
329
+
330
+ var hasFocus,
331
+ options = this.options,
332
+ uiDialog = this.uiDialog;
333
+
334
+ this._size();
335
+ this._position( options.position );
336
+ uiDialog.show( options.show );
337
+ this.overlay = options.modal ? new $.ui.dialog.overlay( this ) : null;
338
+ this.moveToTop( true );
339
+
340
+ // set focus to the first tabbable element in the content area or the first button
341
+ // if there are no tabbable elements, set focus on the dialog itself
342
+ hasFocus = this.element.find( ":tabbable" );
343
+ if ( !hasFocus.length ) {
344
+ hasFocus = this.uiDialogButtonPane.find( ":tabbable" );
345
+ if ( !hasFocus.length ) {
346
+ hasFocus = uiDialog;
347
+ }
348
+ }
349
+ hasFocus.eq( 0 ).focus();
350
+
351
+ this._isOpen = true;
352
+ this._trigger( "open" );
353
+
354
+ return this;
355
+ },
356
+
357
+ _createButtons: function( buttons ) {
358
+ var that = this,
359
+ hasButtons = false;
360
+
361
+ // if we already have a button pane, remove it
362
+ this.uiDialogButtonPane.remove();
363
+ this.uiButtonSet.empty();
364
+
365
+ if ( typeof buttons === "object" && buttons !== null ) {
366
+ $.each( buttons, function() {
367
+ return !(hasButtons = true);
368
+ });
369
+ }
370
+ if ( hasButtons ) {
371
+ $.each( buttons, function( name, props ) {
372
+ var button, click;
373
+ props = $.isFunction( props ) ?
374
+ { click: props, text: name } :
375
+ props;
376
+ // Default to a non-submitting button
377
+ props = $.extend( { type: "button" }, props );
378
+ // Change the context for the click callback to be the main element
379
+ click = props.click;
380
+ props.click = function() {
381
+ click.apply( that.element[0], arguments );
382
+ };
383
+ button = $( "<button></button>", props )
384
+ .appendTo( that.uiButtonSet );
385
+ if ( $.fn.button ) {
386
+ button.button();
387
+ }
388
+ });
389
+ this.uiDialog.addClass( "ui-dialog-buttons" );
390
+ this.uiDialogButtonPane.appendTo( this.uiDialog );
391
+ } else {
392
+ this.uiDialog.removeClass( "ui-dialog-buttons" );
393
+ }
394
+ },
395
+
396
+ _makeDraggable: function() {
397
+ var that = this,
398
+ options = this.options;
399
+
400
+ function filteredUi( ui ) {
401
+ return {
402
+ position: ui.position,
403
+ offset: ui.offset
404
+ };
405
+ }
406
+
407
+ this.uiDialog.draggable({
408
+ cancel: ".ui-dialog-content, .ui-dialog-titlebar-close",
409
+ handle: ".ui-dialog-titlebar",
410
+ containment: "document",
411
+ start: function( event, ui ) {
412
+ $( this )
413
+ .addClass( "ui-dialog-dragging" );
414
+ that._trigger( "dragStart", event, filteredUi( ui ) );
415
+ },
416
+ drag: function( event, ui ) {
417
+ that._trigger( "drag", event, filteredUi( ui ) );
418
+ },
419
+ stop: function( event, ui ) {
420
+ options.position = [
421
+ ui.position.left - that.document.scrollLeft(),
422
+ ui.position.top - that.document.scrollTop()
423
+ ];
424
+ $( this )
425
+ .removeClass( "ui-dialog-dragging" );
426
+ that._trigger( "dragStop", event, filteredUi( ui ) );
427
+ $.ui.dialog.overlay.resize();
428
+ }
429
+ });
430
+ },
431
+
432
+ _makeResizable: function( handles ) {
433
+ handles = (handles === undefined ? this.options.resizable : handles);
434
+ var that = this,
435
+ options = this.options,
436
+ // .ui-resizable has position: relative defined in the stylesheet
437
+ // but dialogs have to use absolute or fixed positioning
438
+ position = this.uiDialog.css( "position" ),
439
+ resizeHandles = typeof handles === 'string' ?
440
+ handles :
441
+ "n,e,s,w,se,sw,ne,nw";
442
+
443
+ function filteredUi( ui ) {
444
+ return {
445
+ originalPosition: ui.originalPosition,
446
+ originalSize: ui.originalSize,
447
+ position: ui.position,
448
+ size: ui.size
449
+ };
450
+ }
451
+
452
+ this.uiDialog.resizable({
453
+ cancel: ".ui-dialog-content",
454
+ containment: "document",
455
+ alsoResize: this.element,
456
+ maxWidth: options.maxWidth,
457
+ maxHeight: options.maxHeight,
458
+ minWidth: options.minWidth,
459
+ minHeight: this._minHeight(),
460
+ handles: resizeHandles,
461
+ start: function( event, ui ) {
462
+ $( this ).addClass( "ui-dialog-resizing" );
463
+ that._trigger( "resizeStart", event, filteredUi( ui ) );
464
+ },
465
+ resize: function( event, ui ) {
466
+ that._trigger( "resize", event, filteredUi( ui ) );
467
+ },
468
+ stop: function( event, ui ) {
469
+ $( this ).removeClass( "ui-dialog-resizing" );
470
+ options.height = $( this ).height();
471
+ options.width = $( this ).width();
472
+ that._trigger( "resizeStop", event, filteredUi( ui ) );
473
+ $.ui.dialog.overlay.resize();
474
+ }
475
+ })
476
+ .css( "position", position )
477
+ .find( ".ui-resizable-se" )
478
+ .addClass( "ui-icon ui-icon-grip-diagonal-se" );
479
+ },
480
+
481
+ _minHeight: function() {
482
+ var options = this.options;
483
+
484
+ if ( options.height === "auto" ) {
485
+ return options.minHeight;
486
+ } else {
487
+ return Math.min( options.minHeight, options.height );
488
+ }
489
+ },
490
+
491
+ _position: function( position ) {
492
+ var myAt = [],
493
+ offset = [ 0, 0 ],
494
+ isVisible;
495
+
496
+ if ( position ) {
497
+ // deep extending converts arrays to objects in jQuery <= 1.3.2 :-(
498
+ // if (typeof position == 'string' || $.isArray(position)) {
499
+ // myAt = $.isArray(position) ? position : position.split(' ');
500
+
501
+ if ( typeof position === "string" || (typeof position === "object" && "0" in position ) ) {
502
+ myAt = position.split ? position.split( " " ) : [ position[ 0 ], position[ 1 ] ];
503
+ if ( myAt.length === 1 ) {
504
+ myAt[ 1 ] = myAt[ 0 ];
505
+ }
506
+
507
+ $.each( [ "left", "top" ], function( i, offsetPosition ) {
508
+ if ( +myAt[ i ] === myAt[ i ] ) {
509
+ offset[ i ] = myAt[ i ];
510
+ myAt[ i ] = offsetPosition;
511
+ }
512
+ });
513
+
514
+ position = {
515
+ my: myAt[0] + (offset[0] < 0 ? offset[0] : "+" + offset[0]) + " " +
516
+ myAt[1] + (offset[1] < 0 ? offset[1] : "+" + offset[1]),
517
+ at: myAt.join( " " )
518
+ };
519
+ }
520
+
521
+ position = $.extend( {}, $.ui.dialog.prototype.options.position, position );
522
+ } else {
523
+ position = $.ui.dialog.prototype.options.position;
524
+ }
525
+
526
+ // need to show the dialog to get the actual offset in the position plugin
527
+ isVisible = this.uiDialog.is( ":visible" );
528
+ if ( !isVisible ) {
529
+ this.uiDialog.show();
530
+ }
531
+ this.uiDialog.position( position );
532
+ if ( !isVisible ) {
533
+ this.uiDialog.hide();
534
+ }
535
+ },
536
+
537
+ _setOptions: function( options ) {
538
+ var that = this,
539
+ resizableOptions = {},
540
+ resize = false;
541
+
542
+ $.each( options, function( key, value ) {
543
+ that._setOption( key, value );
544
+
545
+ if ( key in sizeRelatedOptions ) {
546
+ resize = true;
547
+ }
548
+ if ( key in resizableRelatedOptions ) {
549
+ resizableOptions[ key ] = value;
550
+ }
551
+ });
552
+
553
+ if ( resize ) {
554
+ this._size();
555
+ }
556
+ if ( this.uiDialog.is( ":data(resizable)" ) ) {
557
+ this.uiDialog.resizable( "option", resizableOptions );
558
+ }
559
+ },
560
+
561
+ _setOption: function( key, value ) {
562
+ var isDraggable, isResizable,
563
+ uiDialog = this.uiDialog;
564
+
565
+ switch ( key ) {
566
+ case "buttons":
567
+ this._createButtons( value );
568
+ break;
569
+ case "closeText":
570
+ // ensure that we always pass a string
571
+ this.uiDialogTitlebarCloseText.text( "" + value );
572
+ break;
573
+ case "dialogClass":
574
+ uiDialog
575
+ .removeClass( this.options.dialogClass )
576
+ .addClass( uiDialogClasses + value );
577
+ break;
578
+ case "disabled":
579
+ if ( value ) {
580
+ uiDialog.addClass( "ui-dialog-disabled" );
581
+ } else {
582
+ uiDialog.removeClass( "ui-dialog-disabled" );
583
+ }
584
+ break;
585
+ case "draggable":
586
+ isDraggable = uiDialog.is( ":data(draggable)" );
587
+ if ( isDraggable && !value ) {
588
+ uiDialog.draggable( "destroy" );
589
+ }
590
+
591
+ if ( !isDraggable && value ) {
592
+ this._makeDraggable();
593
+ }
594
+ break;
595
+ case "position":
596
+ this._position( value );
597
+ break;
598
+ case "resizable":
599
+ // currently resizable, becoming non-resizable
600
+ isResizable = uiDialog.is( ":data(resizable)" );
601
+ if ( isResizable && !value ) {
602
+ uiDialog.resizable( "destroy" );
603
+ }
604
+
605
+ // currently resizable, changing handles
606
+ if ( isResizable && typeof value === "string" ) {
607
+ uiDialog.resizable( "option", "handles", value );
608
+ }
609
+
610
+ // currently non-resizable, becoming resizable
611
+ if ( !isResizable && value !== false ) {
612
+ this._makeResizable( value );
613
+ }
614
+ break;
615
+ case "title":
616
+ // convert whatever was passed in o a string, for html() to not throw up
617
+ $( ".ui-dialog-title", this.uiDialogTitlebar )
618
+ .html( "" + ( value || "&#160;" ) );
619
+ break;
620
+ }
621
+
622
+ this._super( key, value );
623
+ },
624
+
625
+ _size: function() {
626
+ /* If the user has resized the dialog, the .ui-dialog and .ui-dialog-content
627
+ * divs will both have width and height set, so we need to reset them
628
+ */
629
+ var nonContentHeight, minContentHeight, autoHeight,
630
+ options = this.options,
631
+ isVisible = this.uiDialog.is( ":visible" );
632
+
633
+ // reset content sizing
634
+ this.element.show().css({
635
+ width: "auto",
636
+ minHeight: 0,
637
+ height: 0
638
+ });
639
+
640
+ if ( options.minWidth > options.width ) {
641
+ options.width = options.minWidth;
642
+ }
643
+
644
+ // reset wrapper sizing
645
+ // determine the height of all the non-content elements
646
+ nonContentHeight = this.uiDialog.css({
647
+ height: "auto",
648
+ width: options.width
649
+ })
650
+ .outerHeight();
651
+ minContentHeight = Math.max( 0, options.minHeight - nonContentHeight );
652
+
653
+ if ( options.height === "auto" ) {
654
+ // only needed for IE6 support
655
+ if ( $.support.minHeight ) {
656
+ this.element.css({
657
+ minHeight: minContentHeight,
658
+ height: "auto"
659
+ });
660
+ } else {
661
+ this.uiDialog.show();
662
+ autoHeight = this.element.css( "height", "auto" ).height();
663
+ if ( !isVisible ) {
664
+ this.uiDialog.hide();
665
+ }
666
+ this.element.height( Math.max( autoHeight, minContentHeight ) );
667
+ }
668
+ } else {
669
+ this.element.height( Math.max( options.height - nonContentHeight, 0 ) );
670
+ }
671
+
672
+ if (this.uiDialog.is( ":data(resizable)" ) ) {
673
+ this.uiDialog.resizable( "option", "minHeight", this._minHeight() );
674
+ }
675
+ }
676
+ });
677
+
678
+ $.extend($.ui.dialog, {
679
+ uuid: 0,
680
+ maxZ: 0,
681
+
682
+ getTitleId: function($el) {
683
+ var id = $el.attr( "id" );
684
+ if ( !id ) {
685
+ this.uuid += 1;
686
+ id = this.uuid;
687
+ }
688
+ return "ui-dialog-title-" + id;
689
+ },
690
+
691
+ overlay: function( dialog ) {
692
+ this.$el = $.ui.dialog.overlay.create( dialog );
693
+ }
694
+ });
695
+
696
+ $.extend( $.ui.dialog.overlay, {
697
+ instances: [],
698
+ // reuse old instances due to IE memory leak with alpha transparency (see #5185)
699
+ oldInstances: [],
700
+ maxZ: 0,
701
+ events: $.map(
702
+ "focus,mousedown,mouseup,keydown,keypress,click".split( "," ),
703
+ function( event ) {
704
+ return event + ".dialog-overlay";
705
+ }
706
+ ).join( " " ),
707
+ create: function( dialog ) {
708
+ if ( this.instances.length === 0 ) {
709
+ // prevent use of anchors and inputs
710
+ // we use a setTimeout in case the overlay is created from an
711
+ // event that we're going to be cancelling (see #2804)
712
+ setTimeout(function() {
713
+ // handle $(el).dialog().dialog('close') (see #4065)
714
+ if ( $.ui.dialog.overlay.instances.length ) {
715
+ $( document ).bind( $.ui.dialog.overlay.events, function( event ) {
716
+ // stop events if the z-index of the target is < the z-index of the overlay
717
+ // we cannot return true when we don't want to cancel the event (#3523)
718
+ if ( $( event.target ).zIndex() < $.ui.dialog.overlay.maxZ ) {
719
+ return false;
720
+ }
721
+ });
722
+ }
723
+ }, 1 );
724
+
725
+ // handle window resize
726
+ $( window ).bind( "resize.dialog-overlay", $.ui.dialog.overlay.resize );
727
+ }
728
+
729
+ var $el = ( this.oldInstances.pop() || $( "<div>" ).addClass( "ui-widget-overlay" ) );
730
+
731
+ // allow closing by pressing the escape key
732
+ $( document ).bind( "keydown.dialog-overlay", function( event ) {
733
+ var instances = $.ui.dialog.overlay.instances;
734
+ // only react to the event if we're the top overlay
735
+ if ( instances.length !== 0 && instances[ instances.length - 1 ] === $el &&
736
+ dialog.options.closeOnEscape && !event.isDefaultPrevented() && event.keyCode &&
737
+ event.keyCode === $.ui.keyCode.ESCAPE ) {
738
+
739
+ dialog.close( event );
740
+ event.preventDefault();
741
+ }
742
+ });
743
+
744
+ $el.appendTo( document.body ).css({
745
+ width: this.width(),
746
+ height: this.height()
747
+ });
748
+
749
+ if ( $.fn.bgiframe ) {
750
+ $el.bgiframe();
751
+ }
752
+
753
+ this.instances.push( $el );
754
+ return $el;
755
+ },
756
+
757
+ destroy: function( $el ) {
758
+ var indexOf = $.inArray( $el, this.instances ),
759
+ maxZ = 0;
760
+
761
+ if ( indexOf !== -1 ) {
762
+ this.oldInstances.push( this.instances.splice( indexOf, 1 )[ 0 ] );
763
+ }
764
+
765
+ if ( this.instances.length === 0 ) {
766
+ $( [ document, window ] ).unbind( ".dialog-overlay" );
767
+ }
768
+
769
+ $el.height( 0 ).width( 0 ).remove();
770
+
771
+ // adjust the maxZ to allow other modal dialogs to continue to work (see #4309)
772
+ $.each( this.instances, function() {
773
+ maxZ = Math.max( maxZ, this.css( "z-index" ) );
774
+ });
775
+ this.maxZ = maxZ;
776
+ },
777
+
778
+ height: function() {
779
+ var scrollHeight,
780
+ offsetHeight;
781
+ // handle IE
782
+ if ( $.ui.ie ) {
783
+ scrollHeight = Math.max(
784
+ document.documentElement.scrollHeight,
785
+ document.body.scrollHeight
786
+ );
787
+ offsetHeight = Math.max(
788
+ document.documentElement.offsetHeight,
789
+ document.body.offsetHeight
790
+ );
791
+
792
+ if ( scrollHeight < offsetHeight ) {
793
+ return $( window ).height() + "px";
794
+ } else {
795
+ return scrollHeight + "px";
796
+ }
797
+ // handle "good" browsers
798
+ } else {
799
+ return $( document ).height() + "px";
800
+ }
801
+ },
802
+
803
+ width: function() {
804
+ var scrollWidth,
805
+ offsetWidth;
806
+ // handle IE
807
+ if ( $.ui.ie ) {
808
+ scrollWidth = Math.max(
809
+ document.documentElement.scrollWidth,
810
+ document.body.scrollWidth
811
+ );
812
+ offsetWidth = Math.max(
813
+ document.documentElement.offsetWidth,
814
+ document.body.offsetWidth
815
+ );
816
+
817
+ if ( scrollWidth < offsetWidth ) {
818
+ return $( window ).width() + "px";
819
+ } else {
820
+ return scrollWidth + "px";
821
+ }
822
+ // handle "good" browsers
823
+ } else {
824
+ return $( document ).width() + "px";
825
+ }
826
+ },
827
+
828
+ resize: function() {
829
+ /* If the dialog is draggable and the user drags it past the
830
+ * right edge of the window, the document becomes wider so we
831
+ * need to stretch the overlay. If the user then drags the
832
+ * dialog back to the left, the document will become narrower,
833
+ * so we need to shrink the overlay to the appropriate size.
834
+ * This is handled by shrinking the overlay before setting it
835
+ * to the full document size.
836
+ */
837
+ var $overlays = $( [] );
838
+ $.each( $.ui.dialog.overlay.instances, function() {
839
+ $overlays = $overlays.add( this );
840
+ });
841
+
842
+ $overlays.css({
843
+ width: 0,
844
+ height: 0
845
+ }).css({
846
+ width: $.ui.dialog.overlay.width(),
847
+ height: $.ui.dialog.overlay.height()
848
+ });
849
+ }
850
+ });
851
+
852
+ $.extend( $.ui.dialog.overlay.prototype, {
853
+ destroy: function() {
854
+ $.ui.dialog.overlay.destroy( this.$el );
855
+ }
856
+ });
857
+
858
+ }( jQuery ) );