webshims-rails 1.12.5 → 1.12.7

Sign up to get free protection for your applications and to get access to all the features.
Files changed (74) hide show
  1. checksums.yaml +4 -4
  2. data/lib/webshims-rails/version.rb +2 -2
  3. data/vendor/assets/javascripts/webshims/polyfiller.js +111 -132
  4. data/vendor/assets/javascripts/webshims/shims/combos/1.js +40 -37
  5. data/vendor/assets/javascripts/webshims/shims/combos/10.js +217 -36
  6. data/vendor/assets/javascripts/webshims/shims/combos/11.js +151 -29
  7. data/vendor/assets/javascripts/webshims/shims/combos/12.js +70 -93
  8. data/vendor/assets/javascripts/webshims/shims/combos/13.js +70 -93
  9. data/vendor/assets/javascripts/webshims/shims/combos/14.js +90 -13
  10. data/vendor/assets/javascripts/webshims/shims/combos/15.js +202 -59
  11. data/vendor/assets/javascripts/webshims/shims/combos/16.js +208 -70
  12. data/vendor/assets/javascripts/webshims/shims/combos/17.js +151 -29
  13. data/vendor/assets/javascripts/webshims/shims/combos/18.js +155 -30
  14. data/vendor/assets/javascripts/webshims/shims/combos/19.js +79 -20
  15. data/vendor/assets/javascripts/webshims/shims/combos/2.js +109 -47
  16. data/vendor/assets/javascripts/webshims/shims/combos/20.js +79 -20
  17. data/vendor/assets/javascripts/webshims/shims/combos/21.js +80 -87
  18. data/vendor/assets/javascripts/webshims/shims/combos/22.js +66 -83
  19. data/vendor/assets/javascripts/webshims/shims/combos/23.js +4 -10
  20. data/vendor/assets/javascripts/webshims/shims/combos/25.js +79 -20
  21. data/vendor/assets/javascripts/webshims/shims/combos/26.js +66 -7
  22. data/vendor/assets/javascripts/webshims/shims/combos/28.js +100 -25
  23. data/vendor/assets/javascripts/webshims/shims/combos/3.js +192 -47
  24. data/vendor/assets/javascripts/webshims/shims/combos/30.js +193 -49
  25. data/vendor/assets/javascripts/webshims/shims/combos/31.js +103 -36
  26. data/vendor/assets/javascripts/webshims/shims/combos/32.js +5 -3
  27. data/vendor/assets/javascripts/webshims/shims/combos/33.js +1 -2
  28. data/vendor/assets/javascripts/webshims/shims/combos/34.js +2048 -0
  29. data/vendor/assets/javascripts/webshims/shims/combos/4.js +156 -20
  30. data/vendor/assets/javascripts/webshims/shims/combos/5.js +151 -29
  31. data/vendor/assets/javascripts/webshims/shims/combos/6.js +152 -31
  32. data/vendor/assets/javascripts/webshims/shims/combos/7.js +199 -60
  33. data/vendor/assets/javascripts/webshims/shims/combos/8.js +197 -58
  34. data/vendor/assets/javascripts/webshims/shims/combos/9.js +218 -38
  35. data/vendor/assets/javascripts/webshims/shims/combos/97.js +1004 -0
  36. data/vendor/assets/javascripts/webshims/shims/combos/98.js +1283 -0
  37. data/vendor/assets/javascripts/webshims/shims/combos/99.js +204 -1248
  38. data/vendor/assets/javascripts/webshims/shims/dom-extend.js +66 -7
  39. data/vendor/assets/javascripts/webshims/shims/es5.js +4 -1
  40. data/vendor/assets/javascripts/webshims/shims/form-combat.js +3 -3
  41. data/vendor/assets/javascripts/webshims/shims/form-core.js +36 -27
  42. data/vendor/assets/javascripts/webshims/shims/form-datalist.js +1 -2
  43. data/vendor/assets/javascripts/webshims/shims/form-fixrangechange.js +137 -0
  44. data/vendor/assets/javascripts/webshims/shims/form-message.js +90 -13
  45. data/vendor/assets/javascripts/webshims/shims/form-number-date-ui.js +129 -15
  46. data/vendor/assets/javascripts/webshims/shims/form-shim-extend.js +9 -10
  47. data/vendor/assets/javascripts/webshims/shims/form-shim-extend2.js +886 -985
  48. data/vendor/assets/javascripts/webshims/shims/form-validation.js +78 -174
  49. data/vendor/assets/javascripts/webshims/shims/form-validators.js +39 -26
  50. data/vendor/assets/javascripts/webshims/shims/forms-picker.js +45 -17
  51. data/vendor/assets/javascripts/webshims/shims/geolocation.js +10 -3
  52. data/vendor/assets/javascripts/webshims/shims/jme/b.js +71 -246
  53. data/vendor/assets/javascripts/webshims/shims/jme/c.js +133 -1002
  54. data/vendor/assets/javascripts/webshims/shims/jme/controls.css +62 -23
  55. data/vendor/assets/javascripts/webshims/shims/jme/controls.scss +73 -10
  56. data/vendor/assets/javascripts/webshims/shims/jme/mediacontrols-lazy.js +1117 -0
  57. data/vendor/assets/javascripts/webshims/shims/jme/p.js +603 -0
  58. data/vendor/assets/javascripts/webshims/shims/jpicker/jpicker.css +5 -2
  59. data/vendor/assets/javascripts/webshims/shims/mediaelement-core.js +4 -10
  60. data/vendor/assets/javascripts/webshims/shims/mediaelement-jaris.js +4 -1
  61. data/vendor/assets/javascripts/webshims/shims/range-ui.js +22 -14
  62. data/vendor/assets/javascripts/webshims/shims/styles/forms-ext.css +29 -344
  63. data/vendor/assets/javascripts/webshims/shims/styles/forms-picker.css +362 -0
  64. data/vendor/assets/javascripts/webshims/shims/styles/scss/forms-ext.scss +6 -483
  65. data/vendor/assets/javascripts/webshims/shims/styles/scss/forms-picker.scss +488 -0
  66. data/vendor/assets/javascripts/webshims/shims/styles/scss/shim-ext.scss +2 -0
  67. data/vendor/assets/javascripts/webshims/shims/styles/scss/shim.scss +10 -2
  68. data/vendor/assets/javascripts/webshims/shims/styles/shim.css +6 -2
  69. data/vendor/assets/javascripts/webshims/shims/swf/JarisFLVPlayer.swf +0 -0
  70. data/vendor/assets/javascripts/webshims/shims/track-ui.js +8 -1
  71. data/vendor/assets/javascripts/webshims/shims/track.js +66 -83
  72. metadata +12 -5
  73. data/vendor/assets/javascripts/webshims/shims/$ajax.js +0 -862
  74. data/vendor/assets/javascripts/webshims/shims/combos/24.js +0 -2087
@@ -221,7 +221,65 @@ var swfmini = function() {
221
221
  }();
222
222
 
223
223
  webshims.isReady('swfmini', true);
224
- ;//DOM-Extension helper
224
+ ;
225
+ //this might was already extended by ES5 shim feature
226
+ (function($){
227
+ "use strict";
228
+ var webshims = window.webshims;
229
+ if(webshims.defineProperties){return;}
230
+ var defineProperty = 'defineProperty';
231
+ var has = Object.prototype.hasOwnProperty;
232
+ var descProps = ['configurable', 'enumerable', 'writable'];
233
+ var extendUndefined = function(prop){
234
+ for(var i = 0; i < 3; i++){
235
+ if(prop[descProps[i]] === undefined && (descProps[i] !== 'writable' || prop.value !== undefined)){
236
+ prop[descProps[i]] = true;
237
+ }
238
+ }
239
+ };
240
+
241
+ var extendProps = function(props){
242
+ if(props){
243
+ for(var i in props){
244
+ if(has.call(props, i)){
245
+ extendUndefined(props[i]);
246
+ }
247
+ }
248
+ }
249
+ };
250
+
251
+ if(Object.create){
252
+ webshims.objectCreate = function(proto, props, opts){
253
+ extendProps(props);
254
+ var o = Object.create(proto, props);
255
+ if(opts){
256
+ o.options = $.extend(true, {}, o.options || {}, opts);
257
+ opts = o.options;
258
+ }
259
+ if(o._create && $.isFunction(o._create)){
260
+ o._create(opts);
261
+ }
262
+ return o;
263
+ };
264
+ }
265
+
266
+ if(Object[defineProperty]){
267
+ webshims[defineProperty] = function(obj, prop, desc){
268
+ extendUndefined(desc);
269
+ return Object[defineProperty](obj, prop, desc);
270
+ };
271
+ }
272
+ if(Object.defineProperties){
273
+ webshims.defineProperties = function(obj, props){
274
+ extendProps(props);
275
+ return Object.defineProperties(obj, props);
276
+ };
277
+ }
278
+ webshims.getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;
279
+
280
+ webshims.getPrototypeOf = Object.getPrototypeOf;
281
+ })(window.webshims.$);
282
+ //DOM-Extension helper
225
283
  webshims.register('dom-extend', function($, webshims, window, document, undefined){
226
284
  "use strict";
227
285
  var supportHrefNormalized = !('hrefNormalized' in $.support) || $.support.hrefNormalized;
@@ -856,6 +914,13 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
856
914
  this.width = docObserve.getWidth();
857
915
  setInterval(this.test, 999);
858
916
  $(this.test);
917
+ if($.support.boxSizing == null){
918
+ $(function(){
919
+ if($.support.boxSizing){
920
+ docObserve.handler({type: 'boxsizing'});
921
+ }
922
+ });
923
+ }
859
924
  webshims.ready('WINDOWLOAD', this.test);
860
925
  $(document).on('updatelayout.webshim pageinit popupafteropen panelbeforeopen tabsactivate collapsibleexpand shown.bs.modal shown.bs.collapse slid.bs.carousel', this.handler);
861
926
  $(window).on('resize', this.handler);
@@ -867,13 +932,7 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
867
932
  webshims.docObserve = function(){
868
933
  webshims.ready('DOM', function(){
869
934
  docObserve.start();
870
- if($.support.boxSizing == null){
871
- $(function(){
872
- if($.support.boxSizing){
873
- docObserve.handler({type: 'boxsizing'});
874
- }
875
- });
876
- }
935
+
877
936
  });
878
937
  };
879
938
  return function(nativeElem, shadowElem, opts){
@@ -1404,27 +1463,27 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
1404
1463
  /*
1405
1464
  * Selectors for all browsers
1406
1465
  */
1407
- var rElementsGroup = /^(?:form|fieldset)$/i;
1408
- var hasInvalid = function(elem){
1409
- var ret = false;
1410
- $(elem).jProp('elements').each(function(){
1411
- if(!rElementsGroup.test(this.nodeName || '')){
1412
- ret = $(this).is(':invalid');
1413
- if(ret){
1414
- return false;
1415
- }
1416
- }
1417
-
1418
- });
1419
- return ret;
1420
- };
1421
1466
 
1422
1467
  var extendSels = function(){
1423
1468
  var matches, matchesOverride;
1424
1469
  var exp = $.expr[":"];
1470
+ var rElementsGroup = /^(?:form|fieldset)$/i;
1471
+ var hasInvalid = function(elem){
1472
+ var ret = false;
1473
+ $(elem).jProp('elements').each(function(){
1474
+ if(!rElementsGroup.test(this.nodeName || '')){
1475
+ ret = exp.invalid(this);
1476
+ if(ret){
1477
+ return false;
1478
+ }
1479
+ }
1480
+
1481
+ });
1482
+ return ret;
1483
+ };
1425
1484
  $.extend(exp, {
1426
1485
  "valid-element": function(elem){
1427
- return rElementsGroup.test(elem.nodeName || '') ? !hasInvalid(elem) :!!($.prop(elem, 'willValidate') && isValid(elem));
1486
+ return rElementsGroup.test(elem.nodeName || '') ? !hasInvalid(elem) : !!($.prop(elem, 'willValidate') && isValid(elem));
1428
1487
  },
1429
1488
  "invalid-element": function(elem){
1430
1489
  return rElementsGroup.test(elem.nodeName || '') ? hasInvalid(elem) : !!($.prop(elem, 'willValidate') && !isValid(elem));
@@ -1479,27 +1538,36 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
1479
1538
  };
1480
1539
  }
1481
1540
  };
1541
+ var formExtras = {
1542
+ noAutoCallback: true,
1543
+ options: options
1544
+ };
1545
+ var addModule = webshims.loader.addModule;
1546
+ var lazyLoadProxy = function(obj, fn, args){
1547
+ lazyLoad();
1548
+ webshims.ready('form-validation', function(){
1549
+ obj[fn].apply(obj, args);
1550
+ });
1551
+ };
1552
+
1553
+ var transClass = ('transitionDelay' in document.documentElement.style) ? '' : ' no-transition';
1554
+ var poCFG = webshims.cfg.wspopover;
1555
+
1556
+ addModule('form-validation', $.extend({d: ['form-message']}, formExtras));
1557
+
1558
+ addModule('form-validators', $.extend({}, formExtras));
1482
1559
 
1483
1560
  if($.expr.filters){
1484
1561
  extendSels();
1485
1562
  } else {
1486
1563
  webshims.ready('sizzle', extendSels);
1487
1564
  }
1488
-
1489
-
1565
+
1490
1566
  webshims.triggerInlineForm = function(elem, event){
1491
1567
  $(elem).trigger(event);
1492
1568
  };
1493
1569
 
1494
- var lazyLoadProxy = function(obj, fn, args){
1495
- lazyLoad();
1496
- webshims.ready('form-validation', function(){
1497
- obj[fn].apply(obj, args);
1498
- });
1499
- };
1500
-
1501
- var transClass = ('transitionDelay' in document.documentElement.style) ? '' : ' no-transition';
1502
- var poCFG = webshims.cfg.wspopover;
1570
+
1503
1571
  if(!poCFG.position && poCFG.position !== false){
1504
1572
  poCFG.position = {
1505
1573
  at: 'left bottom',
@@ -1621,7 +1689,7 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
1621
1689
 
1622
1690
  webshims.ready('WINDOWLOAD', lazyLoad);
1623
1691
 
1624
- if(modules['form-number-date-ui'].loaded && modules['form-number-date-api'].test()){
1692
+ if(modules['form-number-date-ui'].loaded && !options.customMessages && (modules['form-number-date-api'].test() || (Modernizr.inputtypes.range && Modernizr.inputtypes.color))){
1625
1693
  webshims.isReady('form-number-date-ui', true);
1626
1694
  }
1627
1695
  });
@@ -1657,8 +1725,8 @@ var isNumber = function(string){
1657
1725
  (function(){
1658
1726
  var find = $.find;
1659
1727
  var matchesSelector = $.find.matchesSelector;
1660
-
1661
- var regExp = /(\:valid|\:invalid|\:optional|\:required|\:in-range|\:out-of-range)(?=[\s\[\~\.\+\>\:\#*]|$)/ig;
1728
+
1729
+ var regExp = /(\:valid|\:invalid|\:optional|\:required)(?=[\s\[\~\.\+\>\:\#*]|$)/ig;
1662
1730
  var regFn = function(sel){
1663
1731
  return sel + '-element';
1664
1732
  };
@@ -2019,14 +2087,13 @@ var rsubmittable = /^(?:select|textarea|input)/i;
2019
2087
  if(validityState){
2020
2088
  return validityState;
2021
2089
  }
2022
- validityState = $.extend({}, validityPrototype);
2090
+ validityState = $.extend({}, validityPrototype);
2023
2091
 
2024
2092
  if( !$.prop(elem, 'willValidate') || elem.type == 'submit' ){
2025
2093
  return validityState;
2026
2094
  }
2027
- var val = jElm.val(),
2028
- cache = {nodeName: elem.nodeName.toLowerCase()}
2029
- ;
2095
+ var val = jElm.val();
2096
+ var cache = {nodeName: elem.nodeName.toLowerCase()};
2030
2097
 
2031
2098
  validityState.customError = !!(webshims.data(elem, 'customvalidationMessage'));
2032
2099
  if( validityState.customError ){
@@ -2053,7 +2120,7 @@ var rsubmittable = /^(?:select|textarea|input)/i;
2053
2120
  baseCheckValidity.unhandledInvalids = false;
2054
2121
  return baseCheckValidity($(this).getNativeElement()[0], name);
2055
2122
  }
2056
- }
2123
+ };
2057
2124
  });
2058
2125
 
2059
2126
  webshims.defineNodeNameProperties(nodeName, inputValidationAPI, 'prop');
@@ -2064,7 +2131,7 @@ webshims.defineNodeNamesBooleanProperty(['input', 'textarea', 'select'], 'requir
2064
2131
  set: function(value){
2065
2132
  $(this).getShadowFocusElement().attr('aria-required', !!(value)+'');
2066
2133
  },
2067
- initAttr: Modernizr.localstorage //only if we have aria-support
2134
+ initAttr: true
2068
2135
  });
2069
2136
  webshims.defineNodeNamesBooleanProperty(['input'], 'multiple');
2070
2137
 
@@ -2231,7 +2298,7 @@ webshims.addReady(function(context, contextElem){
2231
2298
 
2232
2299
  try {
2233
2300
  if(context == document && !('form' in (document.activeElement || {}))) {
2234
- focusElem = $('input[autofocus], select[autofocus], textarea[autofocus]', context).eq(0).getShadowFocusElement()[0];
2301
+ focusElem = $(context.querySelector('input[autofocus], select[autofocus], textarea[autofocus]')).eq(0).getShadowFocusElement()[0];
2235
2302
  if (focusElem && focusElem.offsetHeight && focusElem.offsetWidth) {
2236
2303
  focusElem.focus();
2237
2304
  }
@@ -2252,7 +2319,7 @@ if(!Modernizr.input.list){
2252
2319
  if(select[0]){
2253
2320
  options = $.makeArray(select[0].options || []);
2254
2321
  } else {
2255
- options = $('option', elem).get();
2322
+ options = elem.getElementsByTagName('option');
2256
2323
  if(options.length){
2257
2324
  webshims.warn('you should wrap your option-elements for a datalist in a select element to support IE and other old browsers.');
2258
2325
  }
@@ -2547,26 +2614,103 @@ webshims.defineNodeNamesProperties(['input', 'button'], formSubmitterDescriptors
2547
2614
  min: 1,
2548
2615
  max: 1
2549
2616
  };
2617
+ var toLocale = (function(){
2618
+ var monthFormatter;
2619
+ var transforms = {
2620
+ number: function(val){
2621
+ var num = val * 1;
2622
+ if(num.toLocaleString && !isNaN(num)){
2623
+ val = num.toLocaleString() || val;
2624
+ }
2625
+ return val;
2626
+ }
2627
+ };
2628
+ var _toLocale = function(val, elem, attr){
2629
+ var type, widget;
2630
+ if(valueVals[attr]){
2631
+ type = $.prop(elem, 'type');
2632
+ widget = $(elem).getShadowElement().data('wsWidget'+ type );
2633
+ if(widget && widget.formatValue){
2634
+ val = widget.formatValue(val, false);
2635
+ } else if(transforms[type]){
2636
+ val = transforms[type](val);
2637
+ }
2638
+ }
2639
+ return val;
2640
+ };
2641
+
2642
+ [{n: 'date', f: 'toLocaleDateString'}, {n: 'time', f: 'toLocaleTimeString'}, {n: 'datetime-local', f: 'toLocaleString'}].forEach(function(desc){
2643
+ transforms[desc.n] = function(val){
2644
+ var date = new Date(val);
2645
+ if(date && date[desc.f]){
2646
+ val = date[desc.f]() || val;
2647
+ }
2648
+ return val;
2649
+ };
2650
+ });
2651
+
2652
+ if(window.Intl && Intl.DateTimeFormat){
2653
+ monthFormatter = new Intl.DateTimeFormat(navigator.browserLanguage || navigator.language, {year: "numeric", month: "2-digit"}).format(new Date());
2654
+ if(monthFormatter && monthFormatter.format){
2655
+ transforms.month = function(val){
2656
+ var date = new Date(val);
2657
+ if(date){
2658
+ val = monthFormatter.format(date) || val;
2659
+ }
2660
+ return val;
2661
+ };
2662
+ }
2663
+ }
2664
+
2665
+ webshims.format = {};
2666
+
2667
+ ['date', 'number', 'month', 'time', 'datetime-local'].forEach(function(name){
2668
+ webshims.format[name] = function(val, opts){
2669
+ if(opts && opts.nodeType){
2670
+ return _toLocale(val, opts, name);
2671
+ }
2672
+ if(name == 'number' && opts && opts.toFixed ){
2673
+ val = (val * 1);
2674
+ if(!opts.fixOnlyFloat || val % 1){
2675
+ val = val.toFixed(opts.toFixed);
2676
+ }
2677
+ }
2678
+ if(webshims._format && webshims._format[name]){
2679
+ return webshims._format[name](val, opts);
2680
+ }
2681
+ return transforms[name](val);
2682
+ };
2683
+ });
2684
+
2685
+ return _toLocale;
2686
+ })();
2550
2687
 
2551
2688
  webshims.replaceValidationplaceholder = function(elem, message, name){
2552
- var type, widget;
2689
+ var val = $.prop(elem, 'title');
2690
+ if(message){
2691
+ if(name == 'patternMismatch' && !val){
2692
+ webshims.error('no title for patternMismatch provided. Always add a title attribute.');
2693
+ }
2694
+ if(val){
2695
+ val = '<span class="ws-titlevalue">'+ val.replace(lReg, '&lt;').replace(gReg, '&gt;') +'</span>';
2696
+ }
2697
+
2698
+ if(message.indexOf('{%title}') != -1){
2699
+ message = message.replace('{%title}', val);
2700
+ } else if(val) {
2701
+ message = message+' '+val;
2702
+ }
2703
+ }
2704
+
2553
2705
  if(message && message.indexOf('{%') != -1){
2554
- ['value', 'min', 'max', 'title', 'maxlength', 'minlength', 'label'].forEach(function(attr){
2706
+ ['value', 'min', 'max', 'maxlength', 'minlength', 'label'].forEach(function(attr){
2555
2707
  if(message.indexOf('{%'+attr) === -1){return;}
2556
2708
  var val = ((attr == 'label') ? $.trim($('label[for="'+ elem.id +'"]', elem.form).text()).replace(/\*$|:$/, '') : $.prop(elem, attr)) || '';
2557
2709
  val = ''+val;
2558
- if(name == 'patternMismatch' && attr == 'title' && !val){
2559
- webshims.error('no title for patternMismatch provided. Always add a title attribute.');
2560
- }
2561
2710
 
2562
- if(valueVals[attr]){
2563
- if(!widget){
2564
- widget = $(elem).getShadowElement().data('wsWidget'+ (type = $.prop(elem, 'type')));
2565
- }
2566
- if(widget && widget.formatValue){
2567
- val = widget.formatValue(val, false);
2568
- }
2569
- }
2711
+
2712
+ val = toLocale(val, elem, attr);
2713
+
2570
2714
  message = message.replace('{%'+ attr +'}', val.replace(lReg, '&lt;').replace(gReg, '&gt;'));
2571
2715
  if('value' == attr){
2572
2716
  message = message.replace('{%valueLen}', val.length);
@@ -2655,7 +2799,6 @@ webshims.defineNodeNamesProperties(['input', 'button'], formSubmitterDescriptors
2655
2799
  });
2656
2800
  ;webshims.register('form-datalist', function($, webshims, window, document, undefined, options){
2657
2801
  "use strict";
2658
- var doc = document;
2659
2802
  var lazyLoad = function(name){
2660
2803
  if(!name || typeof name != 'string'){
2661
2804
  name = 'DOM';
@@ -2950,7 +3093,8 @@ webshims.defineNodeNamesProperties(['input', 'button'], formSubmitterDescriptors
2950
3093
  initializeDatalist();
2951
3094
  })();
2952
3095
 
2953
- });;(function(Modernizr, webshims){
3096
+ });
3097
+ ;(function(Modernizr, webshims){
2954
3098
  "use strict";
2955
3099
  var hasNative = Modernizr.audio && Modernizr.video;
2956
3100
  var supportsLoop = false;
@@ -2967,7 +3111,6 @@ webshims.defineNodeNamesProperties(['input', 'button'], formSubmitterDescriptors
2967
3111
 
2968
3112
  var wsCfg = webshims.cfg;
2969
3113
  var options = wsCfg.mediaelement;
2970
- var hasFullTrackSupport;
2971
3114
  var hasSwf;
2972
3115
  if(!options){
2973
3116
  webshims.error("mediaelement wasn't implemented but loaded");
@@ -3009,11 +3152,9 @@ webshims.defineNodeNamesProperties(['input', 'button'], formSubmitterDescriptors
3009
3152
  }
3010
3153
  })();
3011
3154
  }
3012
- hasFullTrackSupport = Modernizr.track && !bugs.track;
3013
3155
 
3014
3156
  webshims.register('mediaelement-core', function($, webshims, window, document, undefined, options){
3015
3157
  hasSwf = swfmini.hasFlashPlayerVersion('10.0.3');
3016
- $('html').addClass(hasSwf ? 'swf' : 'no-swf');
3017
3158
  var mediaelement = webshims.mediaelement;
3018
3159
 
3019
3160
  mediaelement.parseRtmp = function(data){
@@ -3392,6 +3533,9 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
3392
3533
  if(hasNative && (!data || data.isActive == 'html5') && supLoad.prop._supvalue){
3393
3534
  supLoad.prop._supvalue.apply(this, arguments);
3394
3535
  }
3536
+ if(!loadTrackUi.loaded && $('track', this).length){
3537
+ loadTrackUi();
3538
+ }
3395
3539
  $(this).triggerHandler('wsmediareload');
3396
3540
  }
3397
3541
  }
@@ -3462,13 +3606,7 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
3462
3606
  }
3463
3607
  };
3464
3608
 
3465
- if(hasFullTrackSupport){
3466
- webshims.defineProperty(TextTrack.prototype, 'shimActiveCues', {
3467
- get: function(){
3468
- return this._shimActiveCues || this.activeCues;
3469
- }
3470
- });
3471
- }
3609
+
3472
3610
  //set native implementation ready, before swf api is retested
3473
3611
  if(hasNative){
3474
3612
  webshims.isReady('mediaelement-core', true);
@@ -620,10 +620,11 @@ webshims.register('form-number-date-api', function($, webshims, window, document
620
620
  _create: function(){
621
621
  var i;
622
622
 
623
- this.element.addClass(this.options.baseClass || 'ws-range').attr({role: 'slider'}).append('<span class="ws-range-min ws-range-progress" /><span class="ws-range-rail ws-range-track"><span class="ws-range-thumb"><span><span data-value="" data-valuetext="" /></span></span></span>');
623
+ this.element.addClass(this.options.baseClass || 'ws-range ws-input').attr({role: 'slider'}).append('<span class="ws-range-rail ws-range-track"><span class="ws-range-min ws-range-progress" /><span class="ws-range-thumb"><span><span data-value="" data-valuetext="" /></span></span></span>');
624
624
  this.trail = $('.ws-range-track', this.element);
625
625
  this.range = $('.ws-range-progress', this.element);
626
626
  this.thumb = $('.ws-range-thumb', this.trail);
627
+ this.thumbValue = $('span[data-value]', this.thumb);
627
628
 
628
629
  this.updateMetrics();
629
630
 
@@ -674,8 +675,8 @@ webshims.register('form-number-date-api', function($, webshims, window, document
674
675
 
675
676
 
676
677
  if(!animate || !$.fn.animate){
677
- this.thumb.css(thumbStyle);
678
- this.range.css(rangeStyle);
678
+ this.thumb[0].style[this.dirs.left] = thumbStyle[this.dirs.left];
679
+ this.range[0].style[this.dirs.width] = rangeStyle[this.dirs.width];
679
680
  } else {
680
681
  if(typeof animate != 'object'){
681
682
  animate = {};
@@ -698,20 +699,19 @@ webshims.register('form-number-date-api', function($, webshims, window, document
698
699
  _setValueMarkup: function(){
699
700
  var o = this.options;
700
701
  var textValue = o.textValue ? o.textValue(this.options.value) : o.options[o.value] || o.value;
701
- this.element.attr({
702
- 'aria-valuenow': this.options.value,
703
- 'aria-valuetext': textValue
704
- });
705
- $('span[data-value]', this.thumb).attr({
706
- 'data-value': this.options.value,
707
- 'data-valuetext': textValue
708
- });
702
+
703
+ this.element[0].setAttribute('aria-valuenow', this.options.value);
704
+ this.element[0].setAttribute('aria-valuetext', textValue);
705
+
706
+ this.thumbValue[0].setAttribute('data-value', this.options.value);
707
+ this.thumbValue[0].setAttribute('data-valuetext', textValue);
708
+
709
709
  if(o.selectedOption){
710
710
  $(o.selectedOption).removeClass('ws-selected-option');
711
711
  o.selectedOption = null;
712
712
  }
713
713
  if(o.value in o.options){
714
- o.selectedOption = $('[data-value="'+o.value+'"].ws-range-ticks').addClass('ws-selected-option');
714
+ o.selectedOption = $('[data-value="'+o.value+'"].ws-range-ticks', this.trail).addClass('ws-selected-option');
715
715
  }
716
716
  },
717
717
  initDataList: function(){
@@ -1147,9 +1147,16 @@ webshims.register('form-number-date-api', function($, webshims, window, document
1147
1147
  temp = this.element[this.dirs.innerHeight]();
1148
1148
  eS[this.dirs.marginTop] = ((elem[this.dirs.outerHeight]() - temp) / -2) + 'px';
1149
1149
  this.range[0].style[this.dirs.marginTop] = ((this.range[this.dirs.outerHeight]() - temp) / -2 ) +'px';
1150
+
1151
+ this.range[0].style[this.dirs.posLeft] = outerWidth +'px';
1152
+
1150
1153
  outerWidth *= -1;
1154
+
1155
+ this.range[0].style[this.dirs.paddingRight] = outerWidth +'px';
1151
1156
  this.trail[0].style[this.dirs.left] = outerWidth +'px';
1152
1157
  this.trail[0].style[this.dirs.right] = outerWidth +'px';
1158
+
1159
+
1153
1160
  }
1154
1161
  }
1155
1162
  },
@@ -1158,14 +1165,15 @@ webshims.register('form-number-date-api', function($, webshims, window, document
1158
1165
  this.vertical = (width && this.element.innerHeight() - width > 10);
1159
1166
 
1160
1167
  this.dirs = this.vertical ?
1161
- {mouse: 'pageY', pos: 'top', min: 'max', max: 'min', left: 'top', right: 'bottom', width: 'height', innerWidth: 'innerHeight', innerHeight: 'innerWidth', outerWidth: 'outerHeight', outerHeight: 'outerWidth', marginTop: 'marginLeft', marginLeft: 'marginTop'} :
1162
- {mouse: 'pageX', pos: 'left', min: 'min', max: 'max', left: 'left', right: 'right', width: 'width', innerWidth: 'innerWidth', innerHeight: 'innerHeight', outerWidth: 'outerWidth', outerHeight: 'outerHeight', marginTop: 'marginTop', marginLeft: 'marginLeft'}
1168
+ {mouse: 'pageY', pos: 'top', posLeft: 'bottom', paddingRight: 'paddingTop', min: 'max', max: 'min', left: 'top', right: 'bottom', width: 'height', innerWidth: 'innerHeight', innerHeight: 'innerWidth', outerWidth: 'outerHeight', outerHeight: 'outerWidth', marginTop: 'marginLeft', marginLeft: 'marginTop'} :
1169
+ {mouse: 'pageX', pos: 'left', posLeft: 'left', paddingRight: 'paddingRight', min: 'min', max: 'max', left: 'left', right: 'right', width: 'width', innerWidth: 'innerWidth', innerHeight: 'innerHeight', outerWidth: 'outerWidth', outerHeight: 'outerHeight', marginTop: 'marginTop', marginLeft: 'marginLeft'}
1163
1170
  ;
1164
1171
  if(!this.vertical && this.element.css('direction') == 'rtl'){
1165
1172
  this.isRtl = true;
1166
1173
  this.dirs.left = 'right';
1167
1174
  this.dirs.right = 'left';
1168
1175
  this.dirs.marginLeft = 'marginRight';
1176
+ this.dirs.posLeft = 'right';
1169
1177
  }
1170
1178
  this.element
1171
1179
  [this.vertical ? 'addClass' : 'removeClass']('vertical-range')
@@ -1418,6 +1426,7 @@ webshims.register('form-number-date-api', function($, webshims, window, document
1418
1426
  options.addZero = addZero;
1419
1427
  webshims.loader.addModule('forms-picker', {
1420
1428
  noAutoCallback: true,
1429
+ css: 'styles/forms-picker.css',
1421
1430
  options: options
1422
1431
  });
1423
1432
  webshims.loader.addModule('color-picker', {
@@ -1590,8 +1599,40 @@ webshims.register('form-number-date-api', function($, webshims, window, document
1590
1599
 
1591
1600
 
1592
1601
  var formatVal = {
1593
- number: function(val, o){
1594
- return (val+'').replace(/\,/g, '').replace(/\./, curCfg.numberFormat['.']);
1602
+ number: function(val, o, noCorrect){
1603
+ var parts, len, i, isNegative;
1604
+ if(o && o.nogrouping){
1605
+ return (val+'').replace(/\,/g, '').replace(/\./, curCfg.numberFormat['.']);
1606
+ }
1607
+
1608
+ val += '';
1609
+
1610
+ if(val.charAt(0) == '-'){
1611
+ isNegative = true;
1612
+ val = val.replace('-', '');
1613
+ }
1614
+ parts = val.split('.');
1615
+ len = parts[0].length;
1616
+ i = len - 1;
1617
+
1618
+ val = "";
1619
+ while(i >= 0) {
1620
+ val = parts[0].charAt(i) + val;
1621
+ if (i > 0 && (len - i) % 3 === 0) {
1622
+ val = curCfg.numberFormat[','] + val;
1623
+ }
1624
+ --i;
1625
+ }
1626
+ if(parts[1] != null){
1627
+ if(!noCorrect){
1628
+ parts[1] = parts[1].replace(/\-/g, '0');
1629
+ }
1630
+ val += curCfg.numberFormat['.'] + parts[1];
1631
+ }
1632
+ if(isNegative){
1633
+ val = '-'+val;
1634
+ }
1635
+ return val;
1595
1636
  },
1596
1637
  time: function(val){
1597
1638
  var fVal;
@@ -1670,10 +1711,10 @@ webshims.register('form-number-date-api', function($, webshims, window, document
1670
1711
  return ret;
1671
1712
  }
1672
1713
  };
1673
-
1714
+
1674
1715
  var parseVal = {
1675
1716
  number: function(val){
1676
- return (val+'').replace(curCfg.numberFormat[','], '').replace(curCfg.numberFormat['.'], '.');
1717
+ return (val+'').split(curCfg.numberFormat[',']).join('').replace(curCfg.numberFormat['.'], '.');
1677
1718
  },
1678
1719
  // week: function(val){
1679
1720
  // return val;
@@ -1742,7 +1783,7 @@ webshims.register('form-number-date-api', function($, webshims, window, document
1742
1783
  val = val.split(curCfg.dFormat);
1743
1784
  }
1744
1785
  if(val.length == 3 && val[0] && val[1] && val[2] && (!noCorrect || (val[obj.yy].length > 3 && val[obj.mm].length == 2 && val[obj.dd].length == 2))){
1745
- if(val[obj.mm] > 12 && val[obj.dd] < 13){
1786
+ if(!opts.noDayMonthSwitch && val[obj.mm] > 12 && val[obj.dd] < 13){
1746
1787
  tmp = val[obj.dd];
1747
1788
  val[obj.dd] = val[obj.mm];
1748
1789
  val[obj.mm] = tmp;
@@ -2175,7 +2216,7 @@ webshims.register('form-number-date-api', function($, webshims, window, document
2175
2216
  },
2176
2217
  toFixed: function(val, force){
2177
2218
  var o = this.options;
2178
- if(o.toFixed && o.type == 'number' && val && this.valueAsNumber && (force || !this.element.is(':focus')) && (!o.fixOnlyFloat || (this.valueAsNumber % 1)) && !$(this.orig).is(':invalid')){
2219
+ if(o.toFixed && o.type == 'number' && val && !isNaN(this.valueAsNumber) && (force || !this.element.is(':focus')) && (!o.fixOnlyFloat || (this.valueAsNumber % 1))){
2179
2220
  val = formatVal[this.type](this.valueAsNumber.toFixed(o.toFixed), this.options);
2180
2221
  }
2181
2222
  return val;
@@ -2184,7 +2225,8 @@ webshims.register('form-number-date-api', function($, webshims, window, document
2184
2225
 
2185
2226
  ['defaultValue', 'value'].forEach(function(name){
2186
2227
  var isValue = name == 'value';
2187
- spinBtnProto[name] = function(val, force){
2228
+ spinBtnProto[name] = function(val, force, isLive){
2229
+ var selectionEnd;
2188
2230
  if(!this._init || force || this.options[name] !== val){
2189
2231
  if(isValue){
2190
2232
  this._beforeValue(val);
@@ -2203,7 +2245,14 @@ webshims.register('form-number-date-api', function($, webshims, window, document
2203
2245
  }
2204
2246
  });
2205
2247
  } else {
2206
- this.element.prop(name, this.toFixed(val));
2248
+ val = this.toFixed(val);
2249
+ if(isLive && this._getSelectionEnd){
2250
+ selectionEnd = this._getSelectionEnd(val);
2251
+ }
2252
+ this.element.prop(name, val);
2253
+ if(selectionEnd){
2254
+ this.element.prop('selectionEnd', selectionEnd);
2255
+ }
2207
2256
  }
2208
2257
  this._propertyChange(name);
2209
2258
  this.mirrorValidity();
@@ -2231,7 +2280,7 @@ webshims.register('form-number-date-api', function($, webshims, window, document
2231
2280
  $.fn.wsBaseWidget = function(opts){
2232
2281
  opts = $.extend({}, opts);
2233
2282
  return this.each(function(){
2234
- $.webshims.objectCreate(wsWidgetProto, {
2283
+ webshims.objectCreate(wsWidgetProto, {
2235
2284
  element: {
2236
2285
  value: $(this)
2237
2286
  }
@@ -2246,7 +2295,7 @@ webshims.register('form-number-date-api', function($, webshims, window, document
2246
2295
  monthNames: 'monthNamesShort'
2247
2296
  }, opts);
2248
2297
  return this.each(function(){
2249
- $.webshims.objectCreate(spinBtnProto, {
2298
+ webshims.objectCreate(spinBtnProto, {
2250
2299
  element: {
2251
2300
  value: $(this)
2252
2301
  }
@@ -2255,12 +2304,80 @@ webshims.register('form-number-date-api', function($, webshims, window, document
2255
2304
  };
2256
2305
 
2257
2306
  $.fn.spinbtnUI.wsProto = spinBtnProto;
2307
+
2308
+ webshims._format = formatVal;
2258
2309
 
2259
2310
  })();
2260
-
2311
+
2312
+
2313
+ $.fn.wsTouchClick = (function(){
2314
+ var supportsTouchaction = ('touchAction' in document.documentElement.style);
2315
+ var addTouch = !supportsTouchaction && ('ontouchstart' in window) && document.addEventListener;
2316
+ return function(target, handler){
2317
+ var touchData, touchEnd, touchStart;
2318
+
2319
+ if(addTouch){
2320
+
2321
+ touchEnd = function(e){
2322
+ var ret, touch;
2323
+ e = e.originalEvent || {};
2324
+ $(this).off('touchend', touchEnd);
2325
+ var changedTouches = e.changedTouches || e.touches;
2326
+ if(!touchData || !changedTouches || changedTouches.length != 1){
2327
+ return;
2328
+ }
2329
+
2330
+ touch = changedTouches[0];
2331
+ if(Math.abs(touchData.x - touch.pageX) > 40 || Math.abs(touchData.y - touch.pageY) > 40 || Date.now() - touchData.now > 600){
2332
+ return;
2333
+ }
2334
+ e.preventDefault();
2335
+ ret = handler.apply(this, arguments);
2336
+
2337
+ return ret;
2338
+ };
2339
+
2340
+ touchStart = function(e){
2341
+ var touch, elemTarget;
2342
+
2343
+
2344
+ if((!e || e.touches.length != 1)){
2345
+ return;
2346
+ }
2347
+ touch = e.touches[0];
2348
+ elemTarget = target ? $(touch.target).closest(target) : $(this);
2349
+ if(!elemTarget.length){
2350
+ return;
2351
+ }
2352
+ touchData = {
2353
+ x: touch.pageX,
2354
+ y: touch.pageY,
2355
+ now: Date.now()
2356
+ };
2357
+ elemTarget.on('touchend', touchEnd);
2358
+ };
2359
+
2360
+ this.each(function(){
2361
+ this.addEventListener('touchstart', touchStart, true);
2362
+ });
2363
+ } else if(supportsTouchaction){
2364
+ this.css('touch-action', 'manipulation');
2365
+ }
2366
+
2367
+ if($.isFunction(target)){
2368
+ handler = target;
2369
+ target = false;
2370
+ this.on('click', handler);
2371
+ } else {
2372
+ this.on('click', target, handler);
2373
+ }
2374
+ return this;
2375
+ };
2376
+ })();
2377
+
2261
2378
  (function(){
2262
2379
  var picker = {};
2263
-
2380
+ var assumeVirtualKeyBoard = Modernizr.touchevents || Modernizr.touch || (/android|iphone|ipad|ipod|blackberry|iemobile/i.test(navigator.userAgent.toLowerCase()));
2264
2381
  webshims.inlinePopover = {
2265
2382
  _create: function(){
2266
2383
  this.element = $('<div class="ws-inline-picker"><div class="ws-po-box" /></div>').data('wspopover', this);
@@ -2351,7 +2468,11 @@ webshims.register('form-number-date-api', function($, webshims, window, document
2351
2468
  cancel: function(val, popover, data){
2352
2469
  if(!data.options.inlinePicker){
2353
2470
  popover.stopOpen = true;
2354
- data.element.getShadowFocusElement().trigger('focus');
2471
+ if(assumeVirtualKeyBoard){
2472
+ $('button', data.buttonWrapper).trigger('focus');
2473
+ } else {
2474
+ data.element.getShadowFocusElement().trigger('focus');
2475
+ }
2355
2476
  setTimeout(function(){
2356
2477
  popover.stopOpen = false;
2357
2478
  }, 9);
@@ -2442,6 +2563,7 @@ webshims.register('form-number-date-api', function($, webshims, window, document
2442
2563
 
2443
2564
 
2444
2565
  picker._common = function(data){
2566
+ if(data.options.nopicker){return;}
2445
2567
  var options = data.options;
2446
2568
  var popover = webshims.objectCreate(options.inlinePicker ? webshims.inlinePopover : webshims.wsPopover, {}, $.extend(options.popover || {}, {prepareFor: options.inlinePicker ? data.buttonWrapper : data.element}));
2447
2569
  var opener = $('<button type="button" class="ws-popover-opener"><span /></button>').appendTo(data.buttonWrapper);
@@ -2511,7 +2633,7 @@ webshims.register('form-number-date-api', function($, webshims, window, document
2511
2633
  }
2512
2634
 
2513
2635
 
2514
- opener.on({click: open});
2636
+ opener.wsTouchClick(open);
2515
2637
 
2516
2638
  if(options.inlinePicker){
2517
2639
  popover.openedByFocus = true;
@@ -2704,7 +2826,7 @@ webshims.register('form-number-date-api', function($, webshims, window, document
2704
2826
  var init, parent, lastWidth, left, right, isRtl, hasButtons;
2705
2827
  var oriStyleO = data.orig.style;
2706
2828
  var styleO = data.element[0].style;
2707
- if($.support.boxSizing == null && !$.isReady){
2829
+ if($.support.boxSizing == null){
2708
2830
  $(function(){
2709
2831
  parent = data.orig.parentNode;
2710
2832
  });