jquery-rails 1.0.12 → 1.0.13

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.

Potentially problematic release.


This version of jquery-rails might be problematic. Click here for more details.

@@ -1,6 +1,11 @@
1
+ ## 1.0.13 (11 August 2011)
2
+
3
+ - Updated to latest jquery-ujs with `novalidate` support
4
+ - No more support for jquery older than v1.6
5
+
1
6
  ## 1.0.12 (23 June 2011)
2
7
 
3
- - Updated to latest jqueyr-ujs with 'blank form action' and
8
+ - Updated to latest jquery-ujs with 'blank form action' and
4
9
  data-remote support for select elements
5
10
 
6
11
  ## 1.0.11 (15 June 2011)
@@ -1,8 +1,8 @@
1
1
  module Jquery
2
2
  module Rails
3
- VERSION = "1.0.12"
4
- JQUERY_VERSION = "1.6.1"
5
- JQUERY_UI_VERSION = "1.8.12"
6
- JQUERY_UJS_VERSION = "0e742688c633bda274f8a09bf3248ffe33ecaf92"
3
+ VERSION = "1.0.13"
4
+ JQUERY_VERSION = "1.6.2"
5
+ JQUERY_UI_VERSION = "1.8.14"
6
+ JQUERY_UJS_VERSION = "cd619df9f0daad3303aacd4f992fff19158b1e5d"
7
7
  end
8
8
  end
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * jQuery UI 1.8.12
2
+ * jQuery UI 1.8.14
3
3
  *
4
4
  * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
5
5
  * Dual licensed under the MIT or GPL Version 2 licenses.
@@ -18,7 +18,7 @@ if ( $.ui.version ) {
18
18
  }
19
19
 
20
20
  $.extend( $.ui, {
21
- version: "1.8.12",
21
+ version: "1.8.14",
22
22
 
23
23
  keyCode: {
24
24
  ALT: 18,
@@ -174,6 +174,27 @@ $.each( [ "Width", "Height" ], function( i, name ) {
174
174
  });
175
175
 
176
176
  // selectors
177
+ function focusable( element, isTabIndexNotNaN ) {
178
+ var nodeName = element.nodeName.toLowerCase();
179
+ if ( "area" === nodeName ) {
180
+ var map = element.parentNode,
181
+ mapName = map.name,
182
+ img;
183
+ if ( !element.href || !mapName || map.nodeName.toLowerCase() !== "map" ) {
184
+ return false;
185
+ }
186
+ img = $( "img[usemap=#" + mapName + "]" )[0];
187
+ return !!img && visible( img );
188
+ }
189
+ return ( /input|select|textarea|button|object/.test( nodeName )
190
+ ? !element.disabled
191
+ : "a" == nodeName
192
+ ? element.href || isTabIndexNotNaN
193
+ : isTabIndexNotNaN)
194
+ // the element and all of its ancestors must be visible
195
+ && visible( element );
196
+ }
197
+
177
198
  function visible( element ) {
178
199
  return !$( element ).parents().andSelf().filter(function() {
179
200
  return $.curCSS( this, "visibility" ) === "hidden" ||
@@ -187,30 +208,13 @@ $.extend( $.expr[ ":" ], {
187
208
  },
188
209
 
189
210
  focusable: function( element ) {
190
- var nodeName = element.nodeName.toLowerCase(),
191
- tabIndex = $.attr( element, "tabindex" );
192
- if ( "area" === nodeName ) {
193
- var map = element.parentNode,
194
- mapName = map.name,
195
- img;
196
- if ( !element.href || !mapName || map.nodeName.toLowerCase() !== "map" ) {
197
- return false;
198
- }
199
- img = $( "img[usemap=#" + mapName + "]" )[0];
200
- return !!img && visible( img );
201
- }
202
- return ( /input|select|textarea|button|object/.test( nodeName )
203
- ? !element.disabled
204
- : "a" == nodeName
205
- ? element.href || !isNaN( tabIndex )
206
- : !isNaN( tabIndex ))
207
- // the element and all of its ancestors must be visible
208
- && visible( element );
211
+ return focusable( element, !isNaN( $.attr( element, "tabindex" ) ) );
209
212
  },
210
213
 
211
214
  tabbable: function( element ) {
212
- var tabIndex = $.attr( element, "tabindex" );
213
- return ( isNaN( tabIndex ) || tabIndex >= 0 ) && $( element ).is( ":focusable" );
215
+ var tabIndex = $.attr( element, "tabindex" ),
216
+ isTabIndexNaN = isNaN( tabIndex );
217
+ return ( isTabIndexNaN || tabIndex >= 0 ) && focusable( element, !isTabIndexNaN );
214
218
  }
215
219
  });
216
220
 
@@ -307,7 +311,7 @@ $.extend( $.ui, {
307
311
 
308
312
  })( jQuery );
309
313
  /*!
310
- * jQuery UI Widget 1.8.12
314
+ * jQuery UI Widget 1.8.14
311
315
  *
312
316
  * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
313
317
  * Dual licensed under the MIT or GPL Version 2 licenses.
@@ -569,7 +573,7 @@ $.Widget.prototype = {
569
573
 
570
574
  })( jQuery );
571
575
  /*!
572
- * jQuery UI Mouse 1.8.12
576
+ * jQuery UI Mouse 1.8.14
573
577
  *
574
578
  * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
575
579
  * Dual licensed under the MIT or GPL Version 2 licenses.
@@ -582,6 +586,11 @@ $.Widget.prototype = {
582
586
  */
583
587
  (function( $, undefined ) {
584
588
 
589
+ var mouseHandled = false;
590
+ $(document).mousedown(function(e) {
591
+ mouseHandled = false;
592
+ });
593
+
585
594
  $.widget("ui.mouse", {
586
595
  options: {
587
596
  cancel: ':input,option',
@@ -614,9 +623,7 @@ $.widget("ui.mouse", {
614
623
 
615
624
  _mouseDown: function(event) {
616
625
  // don't let more than one widget handle mouseStart
617
- // TODO: figure out why we have to use originalEvent
618
- event.originalEvent = event.originalEvent || {};
619
- if (event.originalEvent.mouseHandled) { return; }
626
+ if(mouseHandled) {return};
620
627
 
621
628
  // we may have missed mouseup (out of window)
622
629
  (this._mouseStarted && this._mouseUp(event));
@@ -625,7 +632,7 @@ $.widget("ui.mouse", {
625
632
 
626
633
  var self = this,
627
634
  btnIsLeft = (event.which == 1),
628
- elIsCancel = (typeof this.options.cancel == "string" ? $(event.target).parents().add(event.target).filter(this.options.cancel).length : false);
635
+ elIsCancel = (typeof this.options.cancel == "string" ? $(event.target).closest(this.options.cancel).length : false);
629
636
  if (!btnIsLeft || elIsCancel || !this._mouseCapture(event)) {
630
637
  return true;
631
638
  }
@@ -662,7 +669,8 @@ $.widget("ui.mouse", {
662
669
  .bind('mouseup.'+this.widgetName, this._mouseUpDelegate);
663
670
 
664
671
  event.preventDefault();
665
- event.originalEvent.mouseHandled = true;
672
+
673
+ mouseHandled = true;
666
674
  return true;
667
675
  },
668
676
 
@@ -725,7 +733,7 @@ $.widget("ui.mouse", {
725
733
 
726
734
  })(jQuery);
727
735
  /*
728
- * jQuery UI Draggable 1.8.12
736
+ * jQuery UI Draggable 1.8.14
729
737
  *
730
738
  * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
731
739
  * Dual licensed under the MIT or GPL Version 2 licenses.
@@ -805,6 +813,16 @@ $.widget("ui.draggable", $.ui.mouse, {
805
813
  this.handle = this._getHandle(event);
806
814
  if (!this.handle)
807
815
  return false;
816
+
817
+ $(o.iframeFix === true ? "iframe" : o.iframeFix).each(function() {
818
+ $('<div class="ui-draggable-iframeFix" style="background: #fff;"></div>')
819
+ .css({
820
+ width: this.offsetWidth+"px", height: this.offsetHeight+"px",
821
+ position: "absolute", opacity: "0.001", zIndex: 1000
822
+ })
823
+ .css($(this).offset())
824
+ .appendTo("body");
825
+ });
808
826
 
809
827
  return true;
810
828
 
@@ -879,6 +897,10 @@ $.widget("ui.draggable", $.ui.mouse, {
879
897
 
880
898
  this.helper.addClass("ui-draggable-dragging");
881
899
  this._mouseDrag(event, true); //Execute the drag once - this causes the helper not to be visible before getting its correct position
900
+
901
+ //If the ddmanager is used for droppables, inform the manager that dragging has started (see #5003)
902
+ if ( $.ui.ddmanager ) $.ui.ddmanager.dragStart(this, event);
903
+
882
904
  return true;
883
905
  },
884
906
 
@@ -938,6 +960,19 @@ $.widget("ui.draggable", $.ui.mouse, {
938
960
  return false;
939
961
  },
940
962
 
963
+ _mouseUp: function(event) {
964
+ if (this.options.iframeFix === true) {
965
+ $("div.ui-draggable-iframeFix").each(function() {
966
+ this.parentNode.removeChild(this);
967
+ }); //Remove frame helpers
968
+ }
969
+
970
+ //If the ddmanager is used for droppables, inform the manager that dragging has stopped (see #5003)
971
+ if( $.ui.ddmanager ) $.ui.ddmanager.dragStop(this, event);
972
+
973
+ return $.ui.mouse.prototype._mouseUp.call(this, event);
974
+ },
975
+
941
976
  cancel: function() {
942
977
 
943
978
  if(this.helper.is(".ui-draggable-dragging")) {
@@ -967,7 +1002,7 @@ $.widget("ui.draggable", $.ui.mouse, {
967
1002
  _createHelper: function(event) {
968
1003
 
969
1004
  var o = this.options;
970
- var helper = $.isFunction(o.helper) ? $(o.helper.apply(this.element[0], [event])) : (o.helper == 'clone' ? this.element.clone() : this.element);
1005
+ var helper = $.isFunction(o.helper) ? $(o.helper.apply(this.element[0], [event])) : (o.helper == 'clone' ? this.element.clone().removeAttr('id') : this.element);
971
1006
 
972
1007
  if(!helper.parents('body').length)
973
1008
  helper.appendTo((o.appendTo == 'parent' ? this.element[0].parentNode : o.appendTo));
@@ -1061,23 +1096,26 @@ $.widget("ui.draggable", $.ui.mouse, {
1061
1096
  var o = this.options;
1062
1097
  if(o.containment == 'parent') o.containment = this.helper[0].parentNode;
1063
1098
  if(o.containment == 'document' || o.containment == 'window') this.containment = [
1064
- (o.containment == 'document' ? 0 : $(window).scrollLeft()) - this.offset.relative.left - this.offset.parent.left,
1065
- (o.containment == 'document' ? 0 : $(window).scrollTop()) - this.offset.relative.top - this.offset.parent.top,
1099
+ o.containment == 'document' ? 0 : $(window).scrollLeft() - this.offset.relative.left - this.offset.parent.left,
1100
+ o.containment == 'document' ? 0 : $(window).scrollTop() - this.offset.relative.top - this.offset.parent.top,
1066
1101
  (o.containment == 'document' ? 0 : $(window).scrollLeft()) + $(o.containment == 'document' ? document : window).width() - this.helperProportions.width - this.margins.left,
1067
1102
  (o.containment == 'document' ? 0 : $(window).scrollTop()) + ($(o.containment == 'document' ? document : window).height() || document.body.parentNode.scrollHeight) - this.helperProportions.height - this.margins.top
1068
1103
  ];
1069
1104
 
1070
1105
  if(!(/^(document|window|parent)$/).test(o.containment) && o.containment.constructor != Array) {
1071
- var ce = $(o.containment)[0]; if(!ce) return;
1072
- var co = $(o.containment).offset();
1106
+ var c = $(o.containment);
1107
+ var ce = c[0]; if(!ce) return;
1108
+ var co = c.offset();
1073
1109
  var over = ($(ce).css("overflow") != 'hidden');
1074
1110
 
1075
1111
  this.containment = [
1076
- co.left + (parseInt($(ce).css("borderLeftWidth"),10) || 0) + (parseInt($(ce).css("paddingLeft"),10) || 0),
1077
- co.top + (parseInt($(ce).css("borderTopWidth"),10) || 0) + (parseInt($(ce).css("paddingTop"),10) || 0),
1078
- co.left+(over ? Math.max(ce.scrollWidth,ce.offsetWidth) : ce.offsetWidth) - (parseInt($(ce).css("borderLeftWidth"),10) || 0) - (parseInt($(ce).css("paddingRight"),10) || 0) - this.helperProportions.width - this.margins.left - this.margins.right,
1079
- co.top+(over ? Math.max(ce.scrollHeight,ce.offsetHeight) : ce.offsetHeight) - (parseInt($(ce).css("borderTopWidth"),10) || 0) - (parseInt($(ce).css("paddingBottom"),10) || 0) - this.helperProportions.height - this.margins.top - this.margins.bottom
1112
+ (parseInt($(ce).css("borderLeftWidth"),10) || 0) + (parseInt($(ce).css("paddingLeft"),10) || 0),
1113
+ (parseInt($(ce).css("borderTopWidth"),10) || 0) + (parseInt($(ce).css("paddingTop"),10) || 0),
1114
+ (over ? Math.max(ce.scrollWidth,ce.offsetWidth) : ce.offsetWidth) - (parseInt($(ce).css("borderLeftWidth"),10) || 0) - (parseInt($(ce).css("paddingRight"),10) || 0) - this.helperProportions.width - this.margins.left - this.margins.right,
1115
+ (over ? Math.max(ce.scrollHeight,ce.offsetHeight) : ce.offsetHeight) - (parseInt($(ce).css("borderTopWidth"),10) || 0) - (parseInt($(ce).css("paddingBottom"),10) || 0) - this.helperProportions.height - this.margins.top - this.margins.bottom
1080
1116
  ];
1117
+ this.relative_container = c;
1118
+
1081
1119
  } else if(o.containment.constructor == Array) {
1082
1120
  this.containment = o.containment;
1083
1121
  }
@@ -1119,20 +1157,32 @@ $.widget("ui.draggable", $.ui.mouse, {
1119
1157
  */
1120
1158
 
1121
1159
  if(this.originalPosition) { //If we are not dragging yet, we won't check for options
1122
-
1123
- if(this.containment) {
1124
- if(event.pageX - this.offset.click.left < this.containment[0]) pageX = this.containment[0] + this.offset.click.left;
1125
- if(event.pageY - this.offset.click.top < this.containment[1]) pageY = this.containment[1] + this.offset.click.top;
1126
- if(event.pageX - this.offset.click.left > this.containment[2]) pageX = this.containment[2] + this.offset.click.left;
1127
- if(event.pageY - this.offset.click.top > this.containment[3]) pageY = this.containment[3] + this.offset.click.top;
1160
+ var containment;
1161
+ if(this.containment) {
1162
+ if (this.relative_container){
1163
+ var co = this.relative_container.offset();
1164
+ containment = [ this.containment[0] + co.left,
1165
+ this.containment[1] + co.top,
1166
+ this.containment[2] + co.left,
1167
+ this.containment[3] + co.top ];
1168
+ }
1169
+ else {
1170
+ containment = this.containment;
1171
+ }
1172
+
1173
+ if(event.pageX - this.offset.click.left < containment[0]) pageX = containment[0] + this.offset.click.left;
1174
+ if(event.pageY - this.offset.click.top < containment[1]) pageY = containment[1] + this.offset.click.top;
1175
+ if(event.pageX - this.offset.click.left > containment[2]) pageX = containment[2] + this.offset.click.left;
1176
+ if(event.pageY - this.offset.click.top > containment[3]) pageY = containment[3] + this.offset.click.top;
1128
1177
  }
1129
1178
 
1130
1179
  if(o.grid) {
1131
- var top = this.originalPageY + Math.round((pageY - this.originalPageY) / o.grid[1]) * o.grid[1];
1132
- pageY = this.containment ? (!(top - this.offset.click.top < this.containment[1] || top - this.offset.click.top > this.containment[3]) ? top : (!(top - this.offset.click.top < this.containment[1]) ? top - o.grid[1] : top + o.grid[1])) : top;
1180
+ //Check for grid elements set to 0 to prevent divide by 0 error causing invalid argument errors in IE (see ticket #6950)
1181
+ var top = o.grid[1] ? this.originalPageY + Math.round((pageY - this.originalPageY) / o.grid[1]) * o.grid[1] : this.originalPageY;
1182
+ pageY = containment ? (!(top - this.offset.click.top < containment[1] || top - this.offset.click.top > containment[3]) ? top : (!(top - this.offset.click.top < containment[1]) ? top - o.grid[1] : top + o.grid[1])) : top;
1133
1183
 
1134
- var left = this.originalPageX + Math.round((pageX - this.originalPageX) / o.grid[0]) * o.grid[0];
1135
- pageX = this.containment ? (!(left - this.offset.click.left < this.containment[0] || left - this.offset.click.left > this.containment[2]) ? left : (!(left - this.offset.click.left < this.containment[0]) ? left - o.grid[0] : left + o.grid[0])) : left;
1184
+ var left = o.grid[0] ? this.originalPageX + Math.round((pageX - this.originalPageX) / o.grid[0]) * o.grid[0] : this.originalPageX;
1185
+ pageX = containment ? (!(left - this.offset.click.left < containment[0] || left - this.offset.click.left > containment[2]) ? left : (!(left - this.offset.click.left < containment[0]) ? left - o.grid[0] : left + o.grid[0])) : left;
1136
1186
  }
1137
1187
 
1138
1188
  }
@@ -1187,7 +1237,7 @@ $.widget("ui.draggable", $.ui.mouse, {
1187
1237
  });
1188
1238
 
1189
1239
  $.extend($.ui.draggable, {
1190
- version: "1.8.12"
1240
+ version: "1.8.14"
1191
1241
  });
1192
1242
 
1193
1243
  $.ui.plugin.add("draggable", "connectToSortable", {
@@ -1272,7 +1322,7 @@ $.ui.plugin.add("draggable", "connectToSortable", {
1272
1322
  //Now we fake the start of dragging for the sortable instance,
1273
1323
  //by cloning the list group item, appending it to the sortable and using it as inst.currentItem
1274
1324
  //We can then fire the start event of the sortable with our passed browser event, and our own helper (so it doesn't create a new one)
1275
- this.instance.currentItem = $(self).clone().appendTo(this.instance.element).data("sortable-item", true);
1325
+ this.instance.currentItem = $(self).clone().removeAttr('id').appendTo(this.instance.element).data("sortable-item", true);
1276
1326
  this.instance.options._helper = this.instance.options.helper; //Store helper option to later restore it
1277
1327
  this.instance.options.helper = function() { return ui.helper[0]; };
1278
1328
 
@@ -1342,24 +1392,6 @@ $.ui.plugin.add("draggable", "cursor", {
1342
1392
  }
1343
1393
  });
1344
1394
 
1345
- $.ui.plugin.add("draggable", "iframeFix", {
1346
- start: function(event, ui) {
1347
- var o = $(this).data('draggable').options;
1348
- $(o.iframeFix === true ? "iframe" : o.iframeFix).each(function() {
1349
- $('<div class="ui-draggable-iframeFix" style="background: #fff;"></div>')
1350
- .css({
1351
- width: this.offsetWidth+"px", height: this.offsetHeight+"px",
1352
- position: "absolute", opacity: "0.001", zIndex: 1000
1353
- })
1354
- .css($(this).offset())
1355
- .appendTo("body");
1356
- });
1357
- },
1358
- stop: function(event, ui) {
1359
- $("div.ui-draggable-iframeFix").each(function() { this.parentNode.removeChild(this); }); //Remove frame helpers
1360
- }
1361
- });
1362
-
1363
1395
  $.ui.plugin.add("draggable", "opacity", {
1364
1396
  start: function(event, ui) {
1365
1397
  var t = $(ui.helper), o = $(this).data('draggable').options;
@@ -1524,7 +1556,7 @@ $.ui.plugin.add("draggable", "zIndex", {
1524
1556
 
1525
1557
  })(jQuery);
1526
1558
  /*
1527
- * jQuery UI Droppable 1.8.12
1559
+ * jQuery UI Droppable 1.8.14
1528
1560
  *
1529
1561
  * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
1530
1562
  * Dual licensed under the MIT or GPL Version 2 licenses.
@@ -1672,7 +1704,7 @@ $.widget("ui.droppable", {
1672
1704
  });
1673
1705
 
1674
1706
  $.extend($.ui.droppable, {
1675
- version: "1.8.12"
1707
+ version: "1.8.14"
1676
1708
  });
1677
1709
 
1678
1710
  $.ui.intersect = function(draggable, droppable, toleranceMode) {
@@ -1763,6 +1795,12 @@ $.ui.ddmanager = {
1763
1795
  return dropped;
1764
1796
 
1765
1797
  },
1798
+ dragStart: function( draggable, event ) {
1799
+ //Listen for scrolling so that if the dragging causes scrolling the position of the droppables can be recalculated (see #5003)
1800
+ draggable.element.parentsUntil( "body" ).bind( "scroll.droppable", function() {
1801
+ if( !draggable.options.refreshPositions ) $.ui.ddmanager.prepareOffsets( draggable, event );
1802
+ });
1803
+ },
1766
1804
  drag: function(draggable, event) {
1767
1805
 
1768
1806
  //If you have a highly dynamic page, you might try this option. It renders positions every time you move the mouse.
@@ -1804,12 +1842,17 @@ $.ui.ddmanager = {
1804
1842
  }
1805
1843
  });
1806
1844
 
1845
+ },
1846
+ dragStop: function( draggable, event ) {
1847
+ draggable.element.parentsUntil( "body" ).unbind( "scroll.droppable" );
1848
+ //Call prepareOffsets one final time since IE does not fire return scroll events when overflow was caused by drag (see #5003)
1849
+ if( !draggable.options.refreshPositions ) $.ui.ddmanager.prepareOffsets( draggable, event );
1807
1850
  }
1808
1851
  };
1809
1852
 
1810
1853
  })(jQuery);
1811
1854
  /*
1812
- * jQuery UI Resizable 1.8.12
1855
+ * jQuery UI Resizable 1.8.14
1813
1856
  *
1814
1857
  * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
1815
1858
  * Dual licensed under the MIT or GPL Version 2 licenses.
@@ -1986,10 +2029,12 @@ $.widget("ui.resizable", $.ui.mouse, {
1986
2029
  $(this.element)
1987
2030
  .addClass("ui-resizable-autohide")
1988
2031
  .hover(function() {
2032
+ if (o.disabled) return;
1989
2033
  $(this).removeClass("ui-resizable-autohide");
1990
2034
  self._handles.show();
1991
2035
  },
1992
2036
  function(){
2037
+ if (o.disabled) return;
1993
2038
  if (!self.resizing) {
1994
2039
  $(this).addClass("ui-resizable-autohide");
1995
2040
  self._handles.hide();
@@ -2101,6 +2146,8 @@ $.widget("ui.resizable", $.ui.mouse, {
2101
2146
  // Calculate the attrs that will be change
2102
2147
  var data = trigger.apply(this, [event, dx, dy]), ie6 = $.browser.msie && $.browser.version < 7, csdif = this.sizeDiff;
2103
2148
 
2149
+ // Put this in the mouseDrag handler since the user can start pressing shift while resizing
2150
+ this._updateVirtualBoundaries(event.shiftKey);
2104
2151
  if (this._aspectRatio || event.shiftKey)
2105
2152
  data = this._updateRatio(data, event);
2106
2153
 
@@ -2159,6 +2206,32 @@ $.widget("ui.resizable", $.ui.mouse, {
2159
2206
 
2160
2207
  },
2161
2208
 
2209
+ _updateVirtualBoundaries: function(forceAspectRatio) {
2210
+ var o = this.options, pMinWidth, pMaxWidth, pMinHeight, pMaxHeight, b;
2211
+
2212
+ b = {
2213
+ minWidth: isNumber(o.minWidth) ? o.minWidth : 0,
2214
+ maxWidth: isNumber(o.maxWidth) ? o.maxWidth : Infinity,
2215
+ minHeight: isNumber(o.minHeight) ? o.minHeight : 0,
2216
+ maxHeight: isNumber(o.maxHeight) ? o.maxHeight : Infinity
2217
+ };
2218
+
2219
+ if(this._aspectRatio || forceAspectRatio) {
2220
+ // We want to create an enclosing box whose aspect ration is the requested one
2221
+ // First, compute the "projected" size for each dimension based on the aspect ratio and other dimension
2222
+ pMinWidth = b.minHeight * this.aspectRatio;
2223
+ pMinHeight = b.minWidth / this.aspectRatio;
2224
+ pMaxWidth = b.maxHeight * this.aspectRatio;
2225
+ pMaxHeight = b.maxWidth / this.aspectRatio;
2226
+
2227
+ if(pMinWidth > b.minWidth) b.minWidth = pMinWidth;
2228
+ if(pMinHeight > b.minHeight) b.minHeight = pMinHeight;
2229
+ if(pMaxWidth < b.maxWidth) b.maxWidth = pMaxWidth;
2230
+ if(pMaxHeight < b.maxHeight) b.maxHeight = pMaxHeight;
2231
+ }
2232
+ this._vBoundaries = b;
2233
+ },
2234
+
2162
2235
  _updateCache: function(data) {
2163
2236
  var o = this.options;
2164
2237
  this.offset = this.helper.offset();
@@ -2172,8 +2245,8 @@ $.widget("ui.resizable", $.ui.mouse, {
2172
2245
 
2173
2246
  var o = this.options, cpos = this.position, csize = this.size, a = this.axis;
2174
2247
 
2175
- if (data.height) data.width = (csize.height * this.aspectRatio);
2176
- else if (data.width) data.height = (csize.width / this.aspectRatio);
2248
+ if (isNumber(data.height)) data.width = (data.height * this.aspectRatio);
2249
+ else if (isNumber(data.width)) data.height = (data.width / this.aspectRatio);
2177
2250
 
2178
2251
  if (a == 'sw') {
2179
2252
  data.left = cpos.left + (csize.width - data.width);
@@ -2189,7 +2262,7 @@ $.widget("ui.resizable", $.ui.mouse, {
2189
2262
 
2190
2263
  _respectSize: function(data, event) {
2191
2264
 
2192
- var el = this.helper, o = this.options, pRatio = this._aspectRatio || event.shiftKey, a = this.axis,
2265
+ var el = this.helper, o = this._vBoundaries, pRatio = this._aspectRatio || event.shiftKey, a = this.axis,
2193
2266
  ismaxw = isNumber(data.width) && o.maxWidth && (o.maxWidth < data.width), ismaxh = isNumber(data.height) && o.maxHeight && (o.maxHeight < data.height),
2194
2267
  isminw = isNumber(data.width) && o.minWidth && (o.minWidth > data.width), isminh = isNumber(data.height) && o.minHeight && (o.minHeight > data.height);
2195
2268
 
@@ -2329,7 +2402,7 @@ $.widget("ui.resizable", $.ui.mouse, {
2329
2402
  });
2330
2403
 
2331
2404
  $.extend($.ui.resizable, {
2332
- version: "1.8.12"
2405
+ version: "1.8.14"
2333
2406
  });
2334
2407
 
2335
2408
  /*
@@ -2621,7 +2694,7 @@ var isNumber = function(value) {
2621
2694
 
2622
2695
  })(jQuery);
2623
2696
  /*
2624
- * jQuery UI Selectable 1.8.12
2697
+ * jQuery UI Selectable 1.8.14
2625
2698
  *
2626
2699
  * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
2627
2700
  * Dual licensed under the MIT or GPL Version 2 licenses.
@@ -2882,12 +2955,12 @@ $.widget("ui.selectable", $.ui.mouse, {
2882
2955
  });
2883
2956
 
2884
2957
  $.extend($.ui.selectable, {
2885
- version: "1.8.12"
2958
+ version: "1.8.14"
2886
2959
  });
2887
2960
 
2888
2961
  })(jQuery);
2889
2962
  /*
2890
- * jQuery UI Sortable 1.8.12
2963
+ * jQuery UI Sortable 1.8.14
2891
2964
  *
2892
2965
  * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
2893
2966
  * Dual licensed under the MIT or GPL Version 2 licenses.
@@ -2938,7 +3011,7 @@ $.widget("ui.sortable", $.ui.mouse, {
2938
3011
  this.refresh();
2939
3012
 
2940
3013
  //Let's determine if the items are being displayed horizontally
2941
- this.floating = this.items.length ? (/left|right/).test(this.items[0].item.css('float')) || (/inline|table-cell/).test(this.items[0].item.css('display')) : false;
3014
+ this.floating = this.items.length ? o.axis === 'x' || (/left|right/).test(this.items[0].item.css('float')) || (/inline|table-cell/).test(this.items[0].item.css('display')) : false;
2942
3015
 
2943
3016
  //Let's determine the parent's offset
2944
3017
  this.offset = this.element.offset();
@@ -3872,7 +3945,7 @@ $.widget("ui.sortable", $.ui.mouse, {
3872
3945
 
3873
3946
  // We first have to update the dom position of the actual currentItem
3874
3947
  // Note: don't do it if the current item is already removed (by a user), or it gets reappended (see #4088)
3875
- if(!this._noFinalSort && this.currentItem[0].parentNode) this.placeholder.before(this.currentItem);
3948
+ if(!this._noFinalSort && this.currentItem.parent().length) this.placeholder.before(this.currentItem);
3876
3949
  this._noFinalSort = null;
3877
3950
 
3878
3951
  if(this.helper[0] == this.currentItem[0]) {
@@ -3959,12 +4032,12 @@ $.widget("ui.sortable", $.ui.mouse, {
3959
4032
  });
3960
4033
 
3961
4034
  $.extend($.ui.sortable, {
3962
- version: "1.8.12"
4035
+ version: "1.8.14"
3963
4036
  });
3964
4037
 
3965
4038
  })(jQuery);
3966
4039
  /*
3967
- * jQuery UI Effects 1.8.12
4040
+ * jQuery UI Effects 1.8.14
3968
4041
  *
3969
4042
  * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
3970
4043
  * Dual licensed under the MIT or GPL Version 2 licenses.
@@ -4196,12 +4269,12 @@ $.effects.animateClass = function(value, duration, easing, callback) {
4196
4269
  easing = null;
4197
4270
  }
4198
4271
 
4199
- return this.queue('fx', function() {
4272
+ return this.queue(function() {
4200
4273
  var that = $(this),
4201
4274
  originalStyleAttr = that.attr('style') || ' ',
4202
4275
  originalStyle = filterStyles(getElementStyles.call(this)),
4203
4276
  newStyle,
4204
- className = that.attr('className');
4277
+ className = that.attr('class');
4205
4278
 
4206
4279
  $.each(classAnimationActions, function(i, action) {
4207
4280
  if (value[action]) {
@@ -4209,28 +4282,27 @@ $.effects.animateClass = function(value, duration, easing, callback) {
4209
4282
  }
4210
4283
  });
4211
4284
  newStyle = filterStyles(getElementStyles.call(this));
4212
- that.attr('className', className);
4285
+ that.attr('class', className);
4213
4286
 
4214
- that.animate(styleDifference(originalStyle, newStyle), duration, easing, function() {
4215
- $.each(classAnimationActions, function(i, action) {
4216
- if (value[action]) { that[action + 'Class'](value[action]); }
4217
- });
4218
- // work around bug in IE by clearing the cssText before setting it
4219
- if (typeof that.attr('style') == 'object') {
4220
- that.attr('style').cssText = '';
4221
- that.attr('style').cssText = originalStyleAttr;
4222
- } else {
4223
- that.attr('style', originalStyleAttr);
4287
+ that.animate(styleDifference(originalStyle, newStyle), {
4288
+ queue: false,
4289
+ duration: duration,
4290
+ easing: easing,
4291
+ complete: function() {
4292
+ $.each(classAnimationActions, function(i, action) {
4293
+ if (value[action]) { that[action + 'Class'](value[action]); }
4294
+ });
4295
+ // work around bug in IE by clearing the cssText before setting it
4296
+ if (typeof that.attr('style') == 'object') {
4297
+ that.attr('style').cssText = '';
4298
+ that.attr('style').cssText = originalStyleAttr;
4299
+ } else {
4300
+ that.attr('style', originalStyleAttr);
4301
+ }
4302
+ if (callback) { callback.apply(this, arguments); }
4303
+ $.dequeue( this );
4224
4304
  }
4225
- if (callback) { callback.apply(this, arguments); }
4226
4305
  });
4227
-
4228
- // $.animate adds a function to the end of the queue
4229
- // but we want it at the front
4230
- var queue = $.queue(this),
4231
- anim = queue.splice(queue.length - 1, 1)[0];
4232
- queue.splice(1, 0, anim);
4233
- $.dequeue(this);
4234
4306
  });
4235
4307
  };
4236
4308
 
@@ -4272,7 +4344,7 @@ $.fn.extend({
4272
4344
  /******************************************************************************/
4273
4345
 
4274
4346
  $.extend($.effects, {
4275
- version: "1.8.12",
4347
+ version: "1.8.14",
4276
4348
 
4277
4349
  // Saves a set of properties in a data storage
4278
4350
  save: function(element, set) {
@@ -4711,7 +4783,7 @@ $.extend($.easing,
4711
4783
 
4712
4784
  })(jQuery);
4713
4785
  /*
4714
- * jQuery UI Effects Blind 1.8.12
4786
+ * jQuery UI Effects Blind 1.8.14
4715
4787
  *
4716
4788
  * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
4717
4789
  * Dual licensed under the MIT or GPL Version 2 licenses.
@@ -4760,7 +4832,7 @@ $.effects.blind = function(o) {
4760
4832
 
4761
4833
  })(jQuery);
4762
4834
  /*
4763
- * jQuery UI Effects Bounce 1.8.12
4835
+ * jQuery UI Effects Bounce 1.8.14
4764
4836
  *
4765
4837
  * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
4766
4838
  * Dual licensed under the MIT or GPL Version 2 licenses.
@@ -4838,7 +4910,7 @@ $.effects.bounce = function(o) {
4838
4910
 
4839
4911
  })(jQuery);
4840
4912
  /*
4841
- * jQuery UI Effects Clip 1.8.12
4913
+ * jQuery UI Effects Clip 1.8.14
4842
4914
  *
4843
4915
  * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
4844
4916
  * Dual licensed under the MIT or GPL Version 2 licenses.
@@ -4892,7 +4964,7 @@ $.effects.clip = function(o) {
4892
4964
 
4893
4965
  })(jQuery);
4894
4966
  /*
4895
- * jQuery UI Effects Drop 1.8.12
4967
+ * jQuery UI Effects Drop 1.8.14
4896
4968
  *
4897
4969
  * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
4898
4970
  * Dual licensed under the MIT or GPL Version 2 licenses.
@@ -4942,7 +5014,7 @@ $.effects.drop = function(o) {
4942
5014
 
4943
5015
  })(jQuery);
4944
5016
  /*
4945
- * jQuery UI Effects Explode 1.8.12
5017
+ * jQuery UI Effects Explode 1.8.14
4946
5018
  *
4947
5019
  * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
4948
5020
  * Dual licensed under the MIT or GPL Version 2 licenses.
@@ -5021,7 +5093,7 @@ $.effects.explode = function(o) {
5021
5093
 
5022
5094
  })(jQuery);
5023
5095
  /*
5024
- * jQuery UI Effects Fade 1.8.12
5096
+ * jQuery UI Effects Fade 1.8.14
5025
5097
  *
5026
5098
  * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
5027
5099
  * Dual licensed under the MIT or GPL Version 2 licenses.
@@ -5053,7 +5125,7 @@ $.effects.fade = function(o) {
5053
5125
 
5054
5126
  })(jQuery);
5055
5127
  /*
5056
- * jQuery UI Effects Fold 1.8.12
5128
+ * jQuery UI Effects Fold 1.8.14
5057
5129
  *
5058
5130
  * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
5059
5131
  * Dual licensed under the MIT or GPL Version 2 licenses.
@@ -5109,7 +5181,7 @@ $.effects.fold = function(o) {
5109
5181
 
5110
5182
  })(jQuery);
5111
5183
  /*
5112
- * jQuery UI Effects Highlight 1.8.12
5184
+ * jQuery UI Effects Highlight 1.8.14
5113
5185
  *
5114
5186
  * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
5115
5187
  * Dual licensed under the MIT or GPL Version 2 licenses.
@@ -5159,7 +5231,7 @@ $.effects.highlight = function(o) {
5159
5231
 
5160
5232
  })(jQuery);
5161
5233
  /*
5162
- * jQuery UI Effects Pulsate 1.8.12
5234
+ * jQuery UI Effects Pulsate 1.8.14
5163
5235
  *
5164
5236
  * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
5165
5237
  * Dual licensed under the MIT or GPL Version 2 licenses.
@@ -5210,7 +5282,7 @@ $.effects.pulsate = function(o) {
5210
5282
 
5211
5283
  })(jQuery);
5212
5284
  /*
5213
- * jQuery UI Effects Scale 1.8.12
5285
+ * jQuery UI Effects Scale 1.8.14
5214
5286
  *
5215
5287
  * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
5216
5288
  * Dual licensed under the MIT or GPL Version 2 licenses.
@@ -5388,7 +5460,7 @@ $.effects.size = function(o) {
5388
5460
 
5389
5461
  })(jQuery);
5390
5462
  /*
5391
- * jQuery UI Effects Shake 1.8.12
5463
+ * jQuery UI Effects Shake 1.8.14
5392
5464
  *
5393
5465
  * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
5394
5466
  * Dual licensed under the MIT or GPL Version 2 licenses.
@@ -5445,7 +5517,7 @@ $.effects.shake = function(o) {
5445
5517
 
5446
5518
  })(jQuery);
5447
5519
  /*
5448
- * jQuery UI Effects Slide 1.8.12
5520
+ * jQuery UI Effects Slide 1.8.14
5449
5521
  *
5450
5522
  * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
5451
5523
  * Dual licensed under the MIT or GPL Version 2 licenses.
@@ -5495,7 +5567,7 @@ $.effects.slide = function(o) {
5495
5567
 
5496
5568
  })(jQuery);
5497
5569
  /*
5498
- * jQuery UI Effects Transfer 1.8.12
5570
+ * jQuery UI Effects Transfer 1.8.14
5499
5571
  *
5500
5572
  * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
5501
5573
  * Dual licensed under the MIT or GPL Version 2 licenses.
@@ -5540,7 +5612,7 @@ $.effects.transfer = function(o) {
5540
5612
 
5541
5613
  })(jQuery);
5542
5614
  /*
5543
- * jQuery UI Accordion 1.8.12
5615
+ * jQuery UI Accordion 1.8.14
5544
5616
  *
5545
5617
  * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
5546
5618
  * Dual licensed under the MIT or GPL Version 2 licenses.
@@ -6059,7 +6131,7 @@ $.widget( "ui.accordion", {
6059
6131
  });
6060
6132
 
6061
6133
  $.extend( $.ui.accordion, {
6062
- version: "1.8.12",
6134
+ version: "1.8.14",
6063
6135
  animations: {
6064
6136
  slide: function( options, additions ) {
6065
6137
  options = $.extend({
@@ -6151,7 +6223,7 @@ $.extend( $.ui.accordion, {
6151
6223
 
6152
6224
  })( jQuery );
6153
6225
  /*
6154
- * jQuery UI Autocomplete 1.8.12
6226
+ * jQuery UI Autocomplete 1.8.14
6155
6227
  *
6156
6228
  * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
6157
6229
  * Dual licensed under the MIT or GPL Version 2 licenses.
@@ -6642,12 +6714,12 @@ $.widget("ui.menu", {
6642
6714
  this.deactivate();
6643
6715
  if (this.hasScroll()) {
6644
6716
  var offset = item.offset().top - this.element.offset().top,
6645
- scroll = this.element.attr("scrollTop"),
6717
+ scroll = this.element.scrollTop(),
6646
6718
  elementHeight = this.element.height();
6647
6719
  if (offset < 0) {
6648
- this.element.attr("scrollTop", scroll + offset);
6720
+ this.element.scrollTop( scroll + offset);
6649
6721
  } else if (offset >= elementHeight) {
6650
- this.element.attr("scrollTop", scroll + offset - elementHeight + item.height());
6722
+ this.element.scrollTop( scroll + offset - elementHeight + item.height());
6651
6723
  }
6652
6724
  }
6653
6725
  this.active = item.eq(0)
@@ -6753,7 +6825,7 @@ $.widget("ui.menu", {
6753
6825
  },
6754
6826
 
6755
6827
  hasScroll: function() {
6756
- return this.element.height() < this.element.attr("scrollHeight");
6828
+ return this.element.height() < this.element[ $.fn.prop ? "prop" : "attr" ]("scrollHeight");
6757
6829
  },
6758
6830
 
6759
6831
  select: function( event ) {
@@ -6763,7 +6835,7 @@ $.widget("ui.menu", {
6763
6835
 
6764
6836
  }(jQuery));
6765
6837
  /*
6766
- * jQuery UI Button 1.8.12
6838
+ * jQuery UI Button 1.8.14
6767
6839
  *
6768
6840
  * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
6769
6841
  * Dual licensed under the MIT or GPL Version 2 licenses.
@@ -6777,17 +6849,15 @@ $.widget("ui.menu", {
6777
6849
  */
6778
6850
  (function( $, undefined ) {
6779
6851
 
6780
- var lastActive,
6852
+ var lastActive, startXPos, startYPos, clickDragged,
6781
6853
  baseClasses = "ui-button ui-widget ui-state-default ui-corner-all",
6782
6854
  stateClasses = "ui-state-hover ui-state-active ",
6783
6855
  typeClasses = "ui-button-icons-only ui-button-icon-only ui-button-text-icons ui-button-text-icon-primary ui-button-text-icon-secondary ui-button-text-only",
6784
- formResetHandler = function( event ) {
6785
- $( ":ui-button", event.target.form ).each(function() {
6786
- var inst = $( this ).data( "button" );
6787
- setTimeout(function() {
6788
- inst.refresh();
6789
- }, 1 );
6790
- });
6856
+ formResetHandler = function() {
6857
+ var buttons = $( this ).find( ":ui-button" );
6858
+ setTimeout(function() {
6859
+ buttons.button( "refresh" );
6860
+ }, 1 );
6791
6861
  },
6792
6862
  radioGroup = function( radio ) {
6793
6863
  var name = radio.name,
@@ -6860,23 +6930,54 @@ $.widget( "ui.button", {
6860
6930
  }
6861
6931
  $( this ).removeClass( hoverClass );
6862
6932
  })
6933
+ .bind( "click.button", function( event ) {
6934
+ if ( options.disabled ) {
6935
+ event.preventDefault();
6936
+ event.stopImmediatePropagation();
6937
+ }
6938
+ });
6939
+
6940
+ this.element
6863
6941
  .bind( "focus.button", function() {
6864
6942
  // no need to check disabled, focus won't be triggered anyway
6865
- $( this ).addClass( focusClass );
6943
+ self.buttonElement.addClass( focusClass );
6866
6944
  })
6867
6945
  .bind( "blur.button", function() {
6868
- $( this ).removeClass( focusClass );
6946
+ self.buttonElement.removeClass( focusClass );
6869
6947
  });
6870
6948
 
6871
6949
  if ( toggleButton ) {
6872
6950
  this.element.bind( "change.button", function() {
6951
+ if ( clickDragged ) {
6952
+ return;
6953
+ }
6873
6954
  self.refresh();
6874
6955
  });
6956
+ // if mouse moves between mousedown and mouseup (drag) set clickDragged flag
6957
+ // prevents issue where button state changes but checkbox/radio checked state
6958
+ // does not in Firefox (see ticket #6970)
6959
+ this.buttonElement
6960
+ .bind( "mousedown.button", function( event ) {
6961
+ if ( options.disabled ) {
6962
+ return;
6963
+ }
6964
+ clickDragged = false;
6965
+ startXPos = event.pageX;
6966
+ startYPos = event.pageY;
6967
+ })
6968
+ .bind( "mouseup.button", function( event ) {
6969
+ if ( options.disabled ) {
6970
+ return;
6971
+ }
6972
+ if ( startXPos !== event.pageX || startYPos !== event.pageY ) {
6973
+ clickDragged = true;
6974
+ }
6975
+ });
6875
6976
  }
6876
6977
 
6877
6978
  if ( this.type === "checkbox" ) {
6878
6979
  this.buttonElement.bind( "click.button", function() {
6879
- if ( options.disabled ) {
6980
+ if ( options.disabled || clickDragged ) {
6880
6981
  return false;
6881
6982
  }
6882
6983
  $( this ).toggleClass( "ui-state-active" );
@@ -6884,7 +6985,7 @@ $.widget( "ui.button", {
6884
6985
  });
6885
6986
  } else if ( this.type === "radio" ) {
6886
6987
  this.buttonElement.bind( "click.button", function() {
6887
- if ( options.disabled ) {
6988
+ if ( options.disabled || clickDragged ) {
6888
6989
  return false;
6889
6990
  }
6890
6991
  $( this ).addClass( "ui-state-active" );
@@ -6943,6 +7044,7 @@ $.widget( "ui.button", {
6943
7044
  // $.Widget.prototype._setOptionDisabled so it's easy to proxy and can
6944
7045
  // be overridden by individual plugins
6945
7046
  this._setOption( "disabled", options.disabled );
7047
+ this._resetButton();
6946
7048
  },
6947
7049
 
6948
7050
  _determineButtonType: function() {
@@ -7010,6 +7112,7 @@ $.widget( "ui.button", {
7010
7112
  } else {
7011
7113
  this.element.removeAttr( "disabled" );
7012
7114
  }
7115
+ return;
7013
7116
  }
7014
7117
  this._resetButton();
7015
7118
  },
@@ -7110,6 +7213,8 @@ $.widget( "ui.buttonset", {
7110
7213
  },
7111
7214
 
7112
7215
  refresh: function() {
7216
+ var ltr = this.element.css( "direction" ) === "ltr";
7217
+
7113
7218
  this.buttons = this.element.find( this.options.items )
7114
7219
  .filter( ":ui-button" )
7115
7220
  .button( "refresh" )
@@ -7122,10 +7227,10 @@ $.widget( "ui.buttonset", {
7122
7227
  })
7123
7228
  .removeClass( "ui-corner-all ui-corner-left ui-corner-right" )
7124
7229
  .filter( ":first" )
7125
- .addClass( "ui-corner-left" )
7230
+ .addClass( ltr ? "ui-corner-left" : "ui-corner-right" )
7126
7231
  .end()
7127
7232
  .filter( ":last" )
7128
- .addClass( "ui-corner-right" )
7233
+ .addClass( ltr ? "ui-corner-right" : "ui-corner-left" )
7129
7234
  .end()
7130
7235
  .end();
7131
7236
  },
@@ -7146,7 +7251,7 @@ $.widget( "ui.buttonset", {
7146
7251
 
7147
7252
  }( jQuery ) );
7148
7253
  /*
7149
- * jQuery UI Datepicker 1.8.12
7254
+ * jQuery UI Datepicker 1.8.14
7150
7255
  *
7151
7256
  * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
7152
7257
  * Dual licensed under the MIT or GPL Version 2 licenses.
@@ -7159,10 +7264,11 @@ $.widget( "ui.buttonset", {
7159
7264
  */
7160
7265
  (function( $, undefined ) {
7161
7266
 
7162
- $.extend($.ui, { datepicker: { version: "1.8.12" } });
7267
+ $.extend($.ui, { datepicker: { version: "1.8.14" } });
7163
7268
 
7164
7269
  var PROP_NAME = 'datepicker';
7165
7270
  var dpuuid = new Date().getTime();
7271
+ var instActive;
7166
7272
 
7167
7273
  /* Date picker manager.
7168
7274
  Use the singleton instance of this class, $.datepicker, to interact with the date picker.
@@ -7254,12 +7360,15 @@ function Datepicker() {
7254
7360
  autoSize: false // True to size the input for the date format, false to leave as is
7255
7361
  };
7256
7362
  $.extend(this._defaults, this.regional['']);
7257
- this.dpDiv = $('<div id="' + this._mainDivId + '" class="ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all"></div>');
7363
+ this.dpDiv = bindHover($('<div id="' + this._mainDivId + '" class="ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all"></div>'));
7258
7364
  }
7259
7365
 
7260
7366
  $.extend(Datepicker.prototype, {
7261
7367
  /* Class name added to elements to indicate already configured with a date picker. */
7262
7368
  markerClassName: 'hasDatepicker',
7369
+
7370
+ //Keep track of the maximum number of rows displayed (see #7043)
7371
+ maxRows: 4,
7263
7372
 
7264
7373
  /* Debug logging (if enabled). */
7265
7374
  log: function () {
@@ -7320,7 +7429,7 @@ $.extend(Datepicker.prototype, {
7320
7429
  drawMonth: 0, drawYear: 0, // month being drawn
7321
7430
  inline: inline, // is datepicker inline or not
7322
7431
  dpDiv: (!inline ? this.dpDiv : // presentation div
7323
- $('<div class="' + this._inlineClass + ' ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all"></div>'))};
7432
+ bindHover($('<div class="' + this._inlineClass + ' ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all"></div>')))};
7324
7433
  },
7325
7434
 
7326
7435
  /* Attach the date picker to an input field. */
@@ -7510,6 +7619,8 @@ $.extend(Datepicker.prototype, {
7510
7619
  else if (nodeName == 'div' || nodeName == 'span') {
7511
7620
  var inline = $target.children('.' + this._inlineClass);
7512
7621
  inline.children().removeClass('ui-state-disabled');
7622
+ inline.find("select.ui-datepicker-month, select.ui-datepicker-year").
7623
+ removeAttr("disabled");
7513
7624
  }
7514
7625
  this._disabledInputs = $.map(this._disabledInputs,
7515
7626
  function(value) { return (value == target ? null : value); }); // delete entry
@@ -7533,6 +7644,8 @@ $.extend(Datepicker.prototype, {
7533
7644
  else if (nodeName == 'div' || nodeName == 'span') {
7534
7645
  var inline = $target.children('.' + this._inlineClass);
7535
7646
  inline.children().addClass('ui-state-disabled');
7647
+ inline.find("select.ui-datepicker-month, select.ui-datepicker-year").
7648
+ attr("disabled", "disabled");
7536
7649
  }
7537
7650
  this._disabledInputs = $.map(this._disabledInputs,
7538
7651
  function(value) { return (value == target ? null : value); }); // delete entry
@@ -7601,7 +7714,8 @@ $.extend(Datepicker.prototype, {
7601
7714
  inst.settings.maxDate = this._formatDate(inst, maxDate);
7602
7715
  this._attachments($(target), inst);
7603
7716
  this._autoSize(inst);
7604
- this._setDateDatepicker(target, date);
7717
+ this._setDate(inst, date);
7718
+ this._updateAlternate(inst);
7605
7719
  this._updateDatepicker(inst);
7606
7720
  }
7607
7721
  },
@@ -7755,6 +7869,9 @@ $.extend(Datepicker.prototype, {
7755
7869
  return;
7756
7870
  var inst = $.datepicker._getInst(input);
7757
7871
  if ($.datepicker._curInst && $.datepicker._curInst != inst) {
7872
+ if ( $.datepicker._datepickerShowing ) {
7873
+ $.datepicker._triggerOnClose($.datepicker._curInst);
7874
+ }
7758
7875
  $.datepicker._curInst.dpDiv.stop(true, true);
7759
7876
  }
7760
7877
  var beforeShow = $.datepicker._get(inst, 'beforeShow');
@@ -7794,7 +7911,6 @@ $.extend(Datepicker.prototype, {
7794
7911
  var showAnim = $.datepicker._get(inst, 'showAnim');
7795
7912
  var duration = $.datepicker._get(inst, 'duration');
7796
7913
  var postProcess = function() {
7797
- $.datepicker._datepickerShowing = true;
7798
7914
  var cover = inst.dpDiv.find('iframe.ui-datepicker-cover'); // IE6- only
7799
7915
  if( !! cover.length ){
7800
7916
  var borders = $.datepicker._getBorders(inst.dpDiv);
@@ -7803,6 +7919,7 @@ $.extend(Datepicker.prototype, {
7803
7919
  }
7804
7920
  };
7805
7921
  inst.dpDiv.zIndex($(input).zIndex()+1);
7922
+ $.datepicker._datepickerShowing = true;
7806
7923
  if ($.effects && $.effects[showAnim])
7807
7924
  inst.dpDiv.show(showAnim, $.datepicker._get(inst, 'showOptions'), duration, postProcess);
7808
7925
  else
@@ -7818,37 +7935,21 @@ $.extend(Datepicker.prototype, {
7818
7935
  /* Generate the date picker content. */
7819
7936
  _updateDatepicker: function(inst) {
7820
7937
  var self = this;
7938
+ self.maxRows = 4; //Reset the max number of rows being displayed (see #7043)
7821
7939
  var borders = $.datepicker._getBorders(inst.dpDiv);
7940
+ instActive = inst; // for delegate hover events
7822
7941
  inst.dpDiv.empty().append(this._generateHTML(inst));
7823
7942
  var cover = inst.dpDiv.find('iframe.ui-datepicker-cover'); // IE6- only
7824
7943
  if( !!cover.length ){ //avoid call to outerXXXX() when not in IE6
7825
7944
  cover.css({left: -borders[0], top: -borders[1], width: inst.dpDiv.outerWidth(), height: inst.dpDiv.outerHeight()})
7826
7945
  }
7827
- inst.dpDiv.find('button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a')
7828
- .bind('mouseout', function(){
7829
- $(this).removeClass('ui-state-hover');
7830
- if(this.className.indexOf('ui-datepicker-prev') != -1) $(this).removeClass('ui-datepicker-prev-hover');
7831
- if(this.className.indexOf('ui-datepicker-next') != -1) $(this).removeClass('ui-datepicker-next-hover');
7832
- })
7833
- .bind('mouseover', function(){
7834
- if (!self._isDisabledDatepicker( inst.inline ? inst.dpDiv.parent()[0] : inst.input[0])) {
7835
- $(this).parents('.ui-datepicker-calendar').find('a').removeClass('ui-state-hover');
7836
- $(this).addClass('ui-state-hover');
7837
- if(this.className.indexOf('ui-datepicker-prev') != -1) $(this).addClass('ui-datepicker-prev-hover');
7838
- if(this.className.indexOf('ui-datepicker-next') != -1) $(this).addClass('ui-datepicker-next-hover');
7839
- }
7840
- })
7841
- .end()
7842
- .find('.' + this._dayOverClass + ' a')
7843
- .trigger('mouseover')
7844
- .end();
7946
+ inst.dpDiv.find('.' + this._dayOverClass + ' a').mouseover();
7845
7947
  var numMonths = this._getNumberOfMonths(inst);
7846
7948
  var cols = numMonths[1];
7847
7949
  var width = 17;
7950
+ inst.dpDiv.removeClass('ui-datepicker-multi-2 ui-datepicker-multi-3 ui-datepicker-multi-4').width('');
7848
7951
  if (cols > 1)
7849
7952
  inst.dpDiv.addClass('ui-datepicker-multi-' + cols).css('width', (width * cols) + 'em');
7850
- else
7851
- inst.dpDiv.removeClass('ui-datepicker-multi-2 ui-datepicker-multi-3 ui-datepicker-multi-4').width('');
7852
7953
  inst.dpDiv[(numMonths[0] != 1 || numMonths[1] != 1 ? 'add' : 'remove') +
7853
7954
  'Class']('ui-datepicker-multi');
7854
7955
  inst.dpDiv[(this._get(inst, 'isRTL') ? 'add' : 'remove') +
@@ -7863,7 +7964,7 @@ $.extend(Datepicker.prototype, {
7863
7964
  var origyearshtml = inst.yearshtml;
7864
7965
  setTimeout(function(){
7865
7966
  //assure that inst.yearshtml didn't change.
7866
- if( origyearshtml === inst.yearshtml ){
7967
+ if( origyearshtml === inst.yearshtml && inst.yearshtml ){
7867
7968
  inst.dpDiv.find('select.ui-datepicker-year:first').replaceWith(inst.yearshtml);
7868
7969
  }
7869
7970
  origyearshtml = inst.yearshtml = null;
@@ -7915,6 +8016,14 @@ $.extend(Datepicker.prototype, {
7915
8016
  return [position.left, position.top];
7916
8017
  },
7917
8018
 
8019
+ /* Trigger custom callback of onClose. */
8020
+ _triggerOnClose: function(inst) {
8021
+ var onClose = this._get(inst, 'onClose');
8022
+ if (onClose)
8023
+ onClose.apply((inst.input ? inst.input[0] : null),
8024
+ [(inst.input ? inst.input.val() : ''), inst]);
8025
+ },
8026
+
7918
8027
  /* Hide the date picker from view.
7919
8028
  @param input element - the input field attached to the date picker */
7920
8029
  _hideDatepicker: function(input) {
@@ -7935,10 +8044,7 @@ $.extend(Datepicker.prototype, {
7935
8044
  (showAnim == 'fadeIn' ? 'fadeOut' : 'hide'))]((showAnim ? duration : null), postProcess);
7936
8045
  if (!showAnim)
7937
8046
  postProcess();
7938
- var onClose = this._get(inst, 'onClose');
7939
- if (onClose)
7940
- onClose.apply((inst.input ? inst.input[0] : null),
7941
- [(inst.input ? inst.input.val() : ''), inst]); // trigger custom callback
8047
+ $.datepicker._triggerOnClose(inst);
7942
8048
  this._datepickerShowing = false;
7943
8049
  this._lastInput = null;
7944
8050
  if (this._inDialog) {
@@ -8154,14 +8260,24 @@ $.extend(Datepicker.prototype, {
8154
8260
  };
8155
8261
  // Extract a name from the string value and convert to an index
8156
8262
  var getName = function(match, shortNames, longNames) {
8157
- var names = (lookAhead(match) ? longNames : shortNames);
8158
- for (var i = 0; i < names.length; i++) {
8159
- if (value.substr(iValue, names[i].length).toLowerCase() == names[i].toLowerCase()) {
8160
- iValue += names[i].length;
8161
- return i + 1;
8263
+ var names = $.map(lookAhead(match) ? longNames : shortNames, function (v, k) {
8264
+ return [ [k, v] ];
8265
+ }).sort(function (a, b) {
8266
+ return -(a[1].length - b[1].length);
8267
+ });
8268
+ var index = -1;
8269
+ $.each(names, function (i, pair) {
8270
+ var name = pair[1];
8271
+ if (value.substr(iValue, name.length).toLowerCase() == name.toLowerCase()) {
8272
+ index = pair[0];
8273
+ iValue += name.length;
8274
+ return false;
8162
8275
  }
8163
- }
8164
- throw 'Unknown name at position ' + iValue;
8276
+ });
8277
+ if (index != -1)
8278
+ return index + 1;
8279
+ else
8280
+ throw 'Unknown name at position ' + iValue;
8165
8281
  };
8166
8282
  // Confirm that a literal character matches the string value
8167
8283
  var checkLiteral = function() {
@@ -8218,6 +8334,9 @@ $.extend(Datepicker.prototype, {
8218
8334
  checkLiteral();
8219
8335
  }
8220
8336
  }
8337
+ if (iValue < value.length){
8338
+ throw "Extra/unparsed characters found in date: " + value.substring(iValue);
8339
+ }
8221
8340
  if (year == -1)
8222
8341
  year = new Date().getFullYear();
8223
8342
  else if (year < 100)
@@ -8329,7 +8448,7 @@ $.extend(Datepicker.prototype, {
8329
8448
  break;
8330
8449
  case 'o':
8331
8450
  output += formatNumber('o',
8332
- (date.getTime() - new Date(date.getFullYear(), 0, 0).getTime()) / 86400000, 3);
8451
+ Math.round((new Date(date.getFullYear(), date.getMonth(), date.getDate()).getTime() - new Date(date.getFullYear(), 0, 0).getTime()) / 86400000), 3);
8333
8452
  break;
8334
8453
  case 'm':
8335
8454
  output += formatNumber('m', date.getMonth() + 1, 2);
@@ -8604,6 +8723,7 @@ $.extend(Datepicker.prototype, {
8604
8723
  var html = '';
8605
8724
  for (var row = 0; row < numMonths[0]; row++) {
8606
8725
  var group = '';
8726
+ this.maxRows = 4;
8607
8727
  for (var col = 0; col < numMonths[1]; col++) {
8608
8728
  var selectedDate = this._daylightSavingAdjust(new Date(drawYear, drawMonth, inst.selectedDay));
8609
8729
  var cornerClass = ' ui-corner-all';
@@ -8638,7 +8758,9 @@ $.extend(Datepicker.prototype, {
8638
8758
  if (drawYear == inst.selectedYear && drawMonth == inst.selectedMonth)
8639
8759
  inst.selectedDay = Math.min(inst.selectedDay, daysInMonth);
8640
8760
  var leadDays = (this._getFirstDayOfMonth(drawYear, drawMonth) - firstDay + 7) % 7;
8641
- var numRows = (isMultiMonth ? 6 : Math.ceil((leadDays + daysInMonth) / 7)); // calculate the number of rows to generate
8761
+ var curRows = Math.ceil((leadDays + daysInMonth) / 7); // calculate the number of rows to generate
8762
+ var numRows = (isMultiMonth ? this.maxRows > curRows ? this.maxRows : curRows : curRows); //If multiple months, use the higher number of rows (see #7043)
8763
+ this.maxRows = numRows;
8642
8764
  var printDate = this._daylightSavingAdjust(new Date(drawYear, drawMonth, 1 - leadDays));
8643
8765
  for (var dRow = 0; dRow < numRows; dRow++) { // create date picker rows
8644
8766
  calender += '<tr>';
@@ -8750,14 +8872,9 @@ $.extend(Datepicker.prototype, {
8750
8872
  '>' + year + '</option>';
8751
8873
  }
8752
8874
  inst.yearshtml += '</select>';
8753
- //when showing there is no need for later update
8754
- if( ! $.browser.mozilla ){
8755
- html += inst.yearshtml;
8756
- inst.yearshtml = null;
8757
- } else {
8758
- // will be replaced later with inst.yearshtml
8759
- html += '<select class="ui-datepicker-year"><option value="' + drawYear + '" selected="selected">' + drawYear + '</option></select>';
8760
- }
8875
+
8876
+ html += inst.yearshtml;
8877
+ inst.yearshtml = null;
8761
8878
  }
8762
8879
  }
8763
8880
  html += this._get(inst, 'yearSuffix');
@@ -8862,6 +8979,33 @@ $.extend(Datepicker.prototype, {
8862
8979
  }
8863
8980
  });
8864
8981
 
8982
+ /*
8983
+ * Bind hover events for datepicker elements.
8984
+ * Done via delegate so the binding only occurs once in the lifetime of the parent div.
8985
+ * Global instActive, set by _updateDatepicker allows the handlers to find their way back to the active picker.
8986
+ */
8987
+ function bindHover(dpDiv) {
8988
+ var selector = 'button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a';
8989
+ return dpDiv.bind('mouseout', function(event) {
8990
+ var elem = $( event.target ).closest( selector );
8991
+ if ( !elem.length ) {
8992
+ return;
8993
+ }
8994
+ elem.removeClass( "ui-state-hover ui-datepicker-prev-hover ui-datepicker-next-hover" );
8995
+ })
8996
+ .bind('mouseover', function(event) {
8997
+ var elem = $( event.target ).closest( selector );
8998
+ if ($.datepicker._isDisabledDatepicker( instActive.inline ? dpDiv.parent()[0] : instActive.input[0]) ||
8999
+ !elem.length ) {
9000
+ return;
9001
+ }
9002
+ elem.parents('.ui-datepicker-calendar').find('a').removeClass('ui-state-hover');
9003
+ elem.addClass('ui-state-hover');
9004
+ if (elem.hasClass('ui-datepicker-prev')) elem.addClass('ui-datepicker-prev-hover');
9005
+ if (elem.hasClass('ui-datepicker-next')) elem.addClass('ui-datepicker-next-hover');
9006
+ });
9007
+ }
9008
+
8865
9009
  /* jQuery extend now ignores nulls! */
8866
9010
  function extendRemove(target, props) {
8867
9011
  $.extend(target, props);
@@ -8913,7 +9057,7 @@ $.fn.datepicker = function(options){
8913
9057
  $.datepicker = new Datepicker(); // singleton instance
8914
9058
  $.datepicker.initialized = false;
8915
9059
  $.datepicker.uuid = new Date().getTime();
8916
- $.datepicker.version = "1.8.12";
9060
+ $.datepicker.version = "1.8.14";
8917
9061
 
8918
9062
  // Workaround for #4055
8919
9063
  // Add another global to avoid noConflict issues with inline event handlers
@@ -8921,7 +9065,7 @@ window['DP_jQuery_' + dpuuid] = $;
8921
9065
 
8922
9066
  })(jQuery);
8923
9067
  /*
8924
- * jQuery UI Dialog 1.8.12
9068
+ * jQuery UI Dialog 1.8.14
8925
9069
  *
8926
9070
  * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
8927
9071
  * Dual licensed under the MIT or GPL Version 2 licenses.
@@ -9624,7 +9768,7 @@ $.widget("ui.dialog", {
9624
9768
  });
9625
9769
 
9626
9770
  $.extend($.ui.dialog, {
9627
- version: "1.8.12",
9771
+ version: "1.8.14",
9628
9772
 
9629
9773
  uuid: 0,
9630
9774
  maxZ: 0,
@@ -9745,8 +9889,8 @@ $.extend($.ui.dialog.overlay, {
9745
9889
  width: function() {
9746
9890
  var scrollWidth,
9747
9891
  offsetWidth;
9748
- // handle IE 6
9749
- if ($.browser.msie && $.browser.version < 7) {
9892
+ // handle IE
9893
+ if ( $.browser.msie ) {
9750
9894
  scrollWidth = Math.max(
9751
9895
  document.documentElement.scrollWidth,
9752
9896
  document.body.scrollWidth
@@ -9799,7 +9943,7 @@ $.extend($.ui.dialog.overlay.prototype, {
9799
9943
 
9800
9944
  }(jQuery));
9801
9945
  /*
9802
- * jQuery UI Position 1.8.12
9946
+ * jQuery UI Position 1.8.14
9803
9947
  *
9804
9948
  * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
9805
9949
  * Dual licensed under the MIT or GPL Version 2 licenses.
@@ -10051,7 +10195,7 @@ if ( !$.offset.setOffset ) {
10051
10195
 
10052
10196
  }( jQuery ));
10053
10197
  /*
10054
- * jQuery UI Progressbar 1.8.12
10198
+ * jQuery UI Progressbar 1.8.14
10055
10199
  *
10056
10200
  * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
10057
10201
  * Dual licensed under the MIT or GPL Version 2 licenses.
@@ -10155,12 +10299,12 @@ $.widget( "ui.progressbar", {
10155
10299
  });
10156
10300
 
10157
10301
  $.extend( $.ui.progressbar, {
10158
- version: "1.8.12"
10302
+ version: "1.8.14"
10159
10303
  });
10160
10304
 
10161
10305
  })( jQuery );
10162
10306
  /*
10163
- * jQuery UI Slider 1.8.12
10307
+ * jQuery UI Slider 1.8.14
10164
10308
  *
10165
10309
  * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
10166
10310
  * Dual licensed under the MIT or GPL Version 2 licenses.
@@ -10197,7 +10341,11 @@ $.widget( "ui.slider", $.ui.mouse, {
10197
10341
 
10198
10342
  _create: function() {
10199
10343
  var self = this,
10200
- o = this.options;
10344
+ o = this.options,
10345
+ existingHandles = this.element.find( ".ui-slider-handle" ).addClass( "ui-state-default ui-corner-all" ),
10346
+ handle = "<a class='ui-slider-handle ui-state-default ui-corner-all' href='#'></a>",
10347
+ handleCount = ( o.values && o.values.length ) || 1,
10348
+ handles = [];
10201
10349
 
10202
10350
  this._keySliding = false;
10203
10351
  this._mouseSliding = false;
@@ -10211,57 +10359,35 @@ $.widget( "ui.slider", $.ui.mouse, {
10211
10359
  " ui-slider-" + this.orientation +
10212
10360
  " ui-widget" +
10213
10361
  " ui-widget-content" +
10214
- " ui-corner-all" );
10215
-
10216
- if ( o.disabled ) {
10217
- this.element.addClass( "ui-slider-disabled ui-disabled" );
10218
- }
10362
+ " ui-corner-all" +
10363
+ ( o.disabled ? " ui-slider-disabled ui-disabled" : "" ) );
10219
10364
 
10220
10365
  this.range = $([]);
10221
10366
 
10222
10367
  if ( o.range ) {
10223
10368
  if ( o.range === true ) {
10224
- this.range = $( "<div></div>" );
10225
10369
  if ( !o.values ) {
10226
10370
  o.values = [ this._valueMin(), this._valueMin() ];
10227
10371
  }
10228
10372
  if ( o.values.length && o.values.length !== 2 ) {
10229
10373
  o.values = [ o.values[0], o.values[0] ];
10230
10374
  }
10231
- } else {
10232
- this.range = $( "<div></div>" );
10233
10375
  }
10234
10376
 
10235
- this.range
10377
+ this.range = $( "<div></div>" )
10236
10378
  .appendTo( this.element )
10237
- .addClass( "ui-slider-range" );
10238
-
10239
- if ( o.range === "min" || o.range === "max" ) {
10240
- this.range.addClass( "ui-slider-range-" + o.range );
10241
- }
10242
-
10243
- // note: this isn't the most fittingly semantic framework class for this element,
10244
- // but worked best visually with a variety of themes
10245
- this.range.addClass( "ui-widget-header" );
10379
+ .addClass( "ui-slider-range" +
10380
+ // note: this isn't the most fittingly semantic framework class for this element,
10381
+ // but worked best visually with a variety of themes
10382
+ " ui-widget-header" +
10383
+ ( ( o.range === "min" || o.range === "max" ) ? " ui-slider-range-" + o.range : "" ) );
10246
10384
  }
10247
10385
 
10248
- if ( $( ".ui-slider-handle", this.element ).length === 0 ) {
10249
- $( "<a href='#'></a>" )
10250
- .appendTo( this.element )
10251
- .addClass( "ui-slider-handle" );
10252
- }
10253
-
10254
- if ( o.values && o.values.length ) {
10255
- while ( $(".ui-slider-handle", this.element).length < o.values.length ) {
10256
- $( "<a href='#'></a>" )
10257
- .appendTo( this.element )
10258
- .addClass( "ui-slider-handle" );
10259
- }
10386
+ for ( var i = existingHandles.length; i < handleCount; i += 1 ) {
10387
+ handles.push( handle );
10260
10388
  }
10261
10389
 
10262
- this.handles = $( ".ui-slider-handle", this.element )
10263
- .addClass( "ui-state-default" +
10264
- " ui-corner-all" );
10390
+ this.handles = existingHandles.add( $( handles.join( "" ) ).appendTo( self.element ) );
10265
10391
 
10266
10392
  this.handle = this.handles.eq( 0 );
10267
10393
 
@@ -10839,12 +10965,12 @@ $.widget( "ui.slider", $.ui.mouse, {
10839
10965
  });
10840
10966
 
10841
10967
  $.extend( $.ui.slider, {
10842
- version: "1.8.12"
10968
+ version: "1.8.14"
10843
10969
  });
10844
10970
 
10845
10971
  }(jQuery));
10846
10972
  /*
10847
- * jQuery UI Tabs 1.8.12
10973
+ * jQuery UI Tabs 1.8.14
10848
10974
  *
10849
10975
  * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
10850
10976
  * Dual licensed under the MIT or GPL Version 2 licenses.
@@ -11543,7 +11669,7 @@ $.widget( "ui.tabs", {
11543
11669
  });
11544
11670
 
11545
11671
  $.extend( $.ui.tabs, {
11546
- version: "1.8.12"
11672
+ version: "1.8.14"
11547
11673
  });
11548
11674
 
11549
11675
  /*