webshims-rails 1.14.1 → 1.14.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (163) hide show
  1. checksums.yaml +4 -4
  2. data/lib/webshims-rails/version.rb +2 -2
  3. data/vendor/assets/javascripts/webshims/extras/modernizr-custom.js +0 -0
  4. data/vendor/assets/javascripts/webshims/polyfiller.js +3 -8
  5. data/vendor/assets/javascripts/webshims/shims/FlashCanvas/canvas2png.js +0 -0
  6. data/vendor/assets/javascripts/webshims/shims/FlashCanvas/flashcanvas.js +0 -0
  7. data/vendor/assets/javascripts/webshims/shims/FlashCanvas/flashcanvas.swf +0 -0
  8. data/vendor/assets/javascripts/webshims/shims/FlashCanvas/proxy.php +0 -0
  9. data/vendor/assets/javascripts/webshims/shims/FlashCanvas/save.php +0 -0
  10. data/vendor/assets/javascripts/webshims/shims/FlashCanvasPro/canvas2png.js +0 -0
  11. data/vendor/assets/javascripts/webshims/shims/FlashCanvasPro/flash10canvas.swf +0 -0
  12. data/vendor/assets/javascripts/webshims/shims/FlashCanvasPro/flash9canvas.swf +0 -0
  13. data/vendor/assets/javascripts/webshims/shims/FlashCanvasPro/flashcanvas.js +0 -0
  14. data/vendor/assets/javascripts/webshims/shims/FlashCanvasPro/proxy.php +0 -0
  15. data/vendor/assets/javascripts/webshims/shims/FlashCanvasPro/save.php +0 -0
  16. data/vendor/assets/javascripts/webshims/shims/color-picker.js +2 -2
  17. data/vendor/assets/javascripts/webshims/shims/combos/1.js +66 -43
  18. data/vendor/assets/javascripts/webshims/shims/combos/10.js +66 -31
  19. data/vendor/assets/javascripts/webshims/shims/combos/11.js +66 -31
  20. data/vendor/assets/javascripts/webshims/shims/combos/12.js +96 -59
  21. data/vendor/assets/javascripts/webshims/shims/combos/13.js +96 -59
  22. data/vendor/assets/javascripts/webshims/shims/combos/14.js +0 -0
  23. data/vendor/assets/javascripts/webshims/shims/combos/15.js +4 -1
  24. data/vendor/assets/javascripts/webshims/shims/combos/16.js +70 -44
  25. data/vendor/assets/javascripts/webshims/shims/combos/17.js +66 -31
  26. data/vendor/assets/javascripts/webshims/shims/combos/18.js +1241 -1126
  27. data/vendor/assets/javascripts/webshims/shims/combos/19.js +1272 -1214
  28. data/vendor/assets/javascripts/webshims/shims/combos/2.js +66 -43
  29. data/vendor/assets/javascripts/webshims/shims/combos/20.js +1272 -1214
  30. data/vendor/assets/javascripts/webshims/shims/combos/21.js +61 -92
  31. data/vendor/assets/javascripts/webshims/shims/combos/22.js +30 -16
  32. data/vendor/assets/javascripts/webshims/shims/combos/23.js +66 -43
  33. data/vendor/assets/javascripts/webshims/shims/combos/25.js +41 -85
  34. data/vendor/assets/javascripts/webshims/shims/combos/26.js +1556 -2316
  35. data/vendor/assets/javascripts/webshims/shims/combos/27.js +12 -10
  36. data/vendor/assets/javascripts/webshims/shims/combos/28.js +4 -1
  37. data/vendor/assets/javascripts/webshims/shims/combos/29.js +0 -0
  38. data/vendor/assets/javascripts/webshims/shims/combos/3.js +0 -0
  39. data/vendor/assets/javascripts/webshims/shims/combos/30.js +0 -0
  40. data/vendor/assets/javascripts/webshims/shims/combos/31.js +0 -0
  41. data/vendor/assets/javascripts/webshims/shims/combos/32.js +1175 -1095
  42. data/vendor/assets/javascripts/webshims/shims/combos/33.js +0 -0
  43. data/vendor/assets/javascripts/webshims/shims/combos/34.js +30 -16
  44. data/vendor/assets/javascripts/webshims/shims/combos/4.js +0 -0
  45. data/vendor/assets/javascripts/webshims/shims/combos/5.js +66 -31
  46. data/vendor/assets/javascripts/webshims/shims/combos/6.js +66 -31
  47. data/vendor/assets/javascripts/webshims/shims/combos/7.js +66 -43
  48. data/vendor/assets/javascripts/webshims/shims/combos/8.js +66 -43
  49. data/vendor/assets/javascripts/webshims/shims/combos/9.js +66 -31
  50. data/vendor/assets/javascripts/webshims/shims/combos/97.js +63 -28
  51. data/vendor/assets/javascripts/webshims/shims/combos/98.js +149 -74
  52. data/vendor/assets/javascripts/webshims/shims/combos/99.js +149 -74
  53. data/vendor/assets/javascripts/webshims/shims/combos/comboinfo.json +1 -1
  54. data/vendor/assets/javascripts/webshims/shims/details.js +0 -0
  55. data/vendor/assets/javascripts/webshims/shims/dom-extend.js +0 -0
  56. data/vendor/assets/javascripts/webshims/shims/es5.js +1175 -1095
  57. data/vendor/assets/javascripts/webshims/shims/excanvas.js +0 -0
  58. data/vendor/assets/javascripts/webshims/shims/filereader.js +10 -9
  59. data/vendor/assets/javascripts/webshims/shims/form-combat.js +0 -0
  60. data/vendor/assets/javascripts/webshims/shims/form-core.js +0 -0
  61. data/vendor/assets/javascripts/webshims/shims/form-datalist-lazy.js +0 -0
  62. data/vendor/assets/javascripts/webshims/shims/form-datalist.js +0 -0
  63. data/vendor/assets/javascripts/webshims/shims/form-fixrangechange.js +0 -0
  64. data/vendor/assets/javascripts/webshims/shims/form-message.js +0 -0
  65. data/vendor/assets/javascripts/webshims/shims/form-native-extend.js +0 -0
  66. data/vendor/assets/javascripts/webshims/shims/form-number-date-api.js +0 -0
  67. data/vendor/assets/javascripts/webshims/shims/form-number-date-ui.js +40 -11
  68. data/vendor/assets/javascripts/webshims/shims/form-shim-extend.js +4 -1
  69. data/vendor/assets/javascripts/webshims/shims/form-shim-extend2.js +2 -1
  70. data/vendor/assets/javascripts/webshims/shims/form-validation.js +80 -47
  71. data/vendor/assets/javascripts/webshims/shims/form-validators.js +19 -8
  72. data/vendor/assets/javascripts/webshims/shims/forms-picker.js +21 -1
  73. data/vendor/assets/javascripts/webshims/shims/geolocation.js +0 -0
  74. data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-ar.js +0 -0
  75. data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-ch-CN.js +0 -0
  76. data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-cs.js +0 -0
  77. data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-de.js +0 -0
  78. data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-el.js +0 -0
  79. data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-en.js +0 -0
  80. data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-es.js +0 -0
  81. data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-fa.js +130 -0
  82. data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-fr.js +0 -0
  83. data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-he.js +0 -0
  84. data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-hi.js +0 -0
  85. data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-hu.js +0 -0
  86. data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-it.js +0 -0
  87. data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-ja.js +0 -0
  88. data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-lt.js +0 -0
  89. data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-nl.js +0 -0
  90. data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-pl.js +0 -0
  91. data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-pt-BR.js +0 -0
  92. data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-pt-PT.js +0 -0
  93. data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-pt.js +0 -0
  94. data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-ru.js +0 -0
  95. data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-sv.js +0 -0
  96. data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-zh-CN.js +0 -0
  97. data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-zh-TW.js +130 -0
  98. data/vendor/assets/javascripts/webshims/shims/jajax.js +0 -0
  99. data/vendor/assets/javascripts/webshims/shims/jme/_icons.scss +186 -0
  100. data/vendor/assets/javascripts/webshims/shims/jme/b.js +63 -28
  101. data/vendor/assets/javascripts/webshims/shims/jme/c.js +86 -46
  102. data/vendor/assets/javascripts/webshims/shims/jme/controls.css +317 -211
  103. data/vendor/assets/javascripts/webshims/shims/jme/controls.scss +59 -223
  104. data/vendor/assets/javascripts/webshims/shims/jme/jme.eot +0 -0
  105. data/vendor/assets/javascripts/webshims/shims/jme/jme.svg +0 -0
  106. data/vendor/assets/javascripts/webshims/shims/jme/jme.ttf +0 -0
  107. data/vendor/assets/javascripts/webshims/shims/jme/jme.woff +0 -0
  108. data/vendor/assets/javascripts/webshims/shims/jme/mediacontrols-lazy.js +66 -14
  109. data/vendor/assets/javascripts/webshims/shims/jme/p.js +0 -0
  110. data/vendor/assets/javascripts/webshims/shims/jpicker/ChangeLog.txt +0 -0
  111. data/vendor/assets/javascripts/webshims/shims/jpicker/ReadMe.txt +0 -0
  112. data/vendor/assets/javascripts/webshims/shims/jpicker/images/AlphaBar.png +0 -0
  113. data/vendor/assets/javascripts/webshims/shims/jpicker/images/Bars.png +0 -0
  114. data/vendor/assets/javascripts/webshims/shims/jpicker/images/Maps.png +0 -0
  115. data/vendor/assets/javascripts/webshims/shims/jpicker/images/NoColor.png +0 -0
  116. data/vendor/assets/javascripts/webshims/shims/jpicker/images/bar-opacity.png +0 -0
  117. data/vendor/assets/javascripts/webshims/shims/jpicker/images/map-opacity.png +0 -0
  118. data/vendor/assets/javascripts/webshims/shims/jpicker/images/mappoint.gif +0 -0
  119. data/vendor/assets/javascripts/webshims/shims/jpicker/images/picker.gif +0 -0
  120. data/vendor/assets/javascripts/webshims/shims/jpicker/images/preview-opacity.png +0 -0
  121. data/vendor/assets/javascripts/webshims/shims/jpicker/images/rangearrows.gif +0 -0
  122. data/vendor/assets/javascripts/webshims/shims/jpicker/jpicker.css +55 -48
  123. data/vendor/assets/javascripts/webshims/shims/mediaelement-core.js +66 -43
  124. data/vendor/assets/javascripts/webshims/shims/mediaelement-debug.js +833 -0
  125. data/vendor/assets/javascripts/webshims/shims/mediaelement-jaris.js +31 -76
  126. data/vendor/assets/javascripts/webshims/shims/mediaelement-native-fix.js +0 -0
  127. data/vendor/assets/javascripts/webshims/shims/mediaelement-yt.js +0 -0
  128. data/vendor/assets/javascripts/webshims/shims/moxie/flash/Moxie.cdn.swf +0 -0
  129. data/vendor/assets/javascripts/webshims/shims/moxie/flash/Moxie.min.swf +0 -0
  130. data/vendor/assets/javascripts/webshims/shims/moxie/js/moxie.js +1542 -2303
  131. data/vendor/assets/javascripts/webshims/shims/moxie/silverlight/Moxie.cdn.xap +0 -0
  132. data/vendor/assets/javascripts/webshims/shims/moxie/silverlight/Moxie.min.xap +0 -0
  133. data/vendor/assets/javascripts/webshims/shims/picture.js +160 -79
  134. data/vendor/assets/javascripts/webshims/shims/plugins/jquery.ui.position.js +0 -0
  135. data/vendor/assets/javascripts/webshims/shims/promise.js +0 -0
  136. data/vendor/assets/javascripts/webshims/shims/range-ui.js +26 -20
  137. data/vendor/assets/javascripts/webshims/shims/sizzle.js +0 -0
  138. data/vendor/assets/javascripts/webshims/shims/styles/color-picker.png +0 -0
  139. data/vendor/assets/javascripts/webshims/shims/styles/forms-ext.css +444 -326
  140. data/vendor/assets/javascripts/webshims/shims/styles/forms-picker.css +379 -300
  141. data/vendor/assets/javascripts/webshims/shims/styles/progress.gif +0 -0
  142. data/vendor/assets/javascripts/webshims/shims/styles/progress.png +0 -0
  143. data/vendor/assets/javascripts/webshims/shims/styles/scss/_api-forms-ext.scss +8 -8
  144. data/vendor/assets/javascripts/webshims/shims/styles/scss/_api-shim.scss +0 -0
  145. data/vendor/assets/javascripts/webshims/shims/styles/scss/_extends.scss +0 -14
  146. data/vendor/assets/javascripts/webshims/shims/styles/scss/forms-ext.scss +104 -85
  147. data/vendor/assets/javascripts/webshims/shims/styles/scss/forms-picker.scss +20 -32
  148. data/vendor/assets/javascripts/webshims/shims/styles/scss/shim-ext.scss +0 -0
  149. data/vendor/assets/javascripts/webshims/shims/styles/scss/shim.scss +14 -34
  150. data/vendor/assets/javascripts/webshims/shims/styles/shim-ext.css +920 -728
  151. data/vendor/assets/javascripts/webshims/shims/styles/shim.css +471 -391
  152. data/vendor/assets/javascripts/webshims/shims/styles/widget.eot +0 -0
  153. data/vendor/assets/javascripts/webshims/shims/styles/widget.svg +0 -0
  154. data/vendor/assets/javascripts/webshims/shims/styles/widget.ttf +0 -0
  155. data/vendor/assets/javascripts/webshims/shims/styles/widget.woff +0 -0
  156. data/vendor/assets/javascripts/webshims/shims/swf/JarisFLVPlayer.swf +0 -0
  157. data/vendor/assets/javascripts/webshims/shims/swfmini-embed.js +0 -0
  158. data/vendor/assets/javascripts/webshims/shims/swfmini.js +0 -0
  159. data/vendor/assets/javascripts/webshims/shims/track-ui.js +0 -0
  160. data/vendor/assets/javascripts/webshims/shims/track.js +30 -16
  161. metadata +8 -4
  162. data/vendor/assets/javascripts/webshims/shims/styles/config.rb +0 -12
  163. data/vendor/assets/javascripts/webshims/shims/swf/filereader.swf +0 -0
@@ -1515,6 +1515,26 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
1515
1515
  return cueText.replace(tagSplits, replacer);
1516
1516
  };
1517
1517
  })();
1518
+ var mapTtmlToVtt = function(i){
1519
+ var content = i+'';
1520
+ var begin = this.getAttribute('begin') || '';
1521
+ var end = this.getAttribute('end') || '';
1522
+ var text = $.trim($.text(this));
1523
+ if(!/\./.test(begin)){
1524
+ begin += '.000';
1525
+ }
1526
+ if(!/\./.test(end)){
1527
+ end += '.000';
1528
+ }
1529
+ content += '\n';
1530
+ content += begin +' --> '+end+'\n';
1531
+ content += text;
1532
+ return content;
1533
+ };
1534
+ var ttmlTextToVTT = function(ttml){
1535
+ ttml = $.parseXML(ttml) || [];
1536
+ return $(ttml).find('[begin][end]').map(mapTtmlToVtt).get().join('\n\n') || '';
1537
+ };
1518
1538
 
1519
1539
  mediaelement.loadTextTrack = function(mediaelem, track, trackData, _default){
1520
1540
  var loadEvents = 'play playing';
@@ -1542,7 +1562,11 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
1542
1562
  dataType: 'text',
1543
1563
  url: src,
1544
1564
  success: function(text){
1545
- if(ajax.getResponseHeader('content-type') != 'text/vtt'){
1565
+ var contentType = ajax.getResponseHeader('content-type');
1566
+
1567
+ if(!contentType.indexOf('application/xml')){
1568
+ text = ttmlTextToVTT(text);
1569
+ } else if(contentType.indexOf('text/vtt')){
1546
1570
  webshims.error('set the mime-type of your WebVTT files to text/vtt. see: http://dev.w3.org/html5/webvtt/#text/vtt');
1547
1571
  }
1548
1572
  mediaelement.parseCaptions(text, obj, function(cues){
@@ -1662,25 +1686,20 @@ modified for webshims
1662
1686
  */
1663
1687
  mediaelement.parseCaptionChunk = (function(){
1664
1688
  // Set up timestamp parsers
1665
- var WebVTTTimestampParser = /^(\d{2})?:?(\d{2}):(\d{2})\.(\d+)\s+\-\-\>\s+(\d{2})?:?(\d{2}):(\d{2})\.(\d+)\s*(.*)/;
1689
+ var WebVTTTimestampParser = /^(\d{2})?:?(\d{2}):(\d{2})\.(\d+)\s+\-\-\>\s+(\d{2})?:?(\d{2}):(\d{2})\.(\d+)\s*(.*)/;
1666
1690
  var WebVTTDEFAULTSCueParser = /^(DEFAULTS|DEFAULT)\s+\-\-\>\s+(.*)/g;
1667
1691
  var WebVTTSTYLECueParser = /^(STYLE|STYLES)\s+\-\-\>\s*\n([\s\S]*)/g;
1668
1692
  var WebVTTCOMMENTCueParser = /^(COMMENT|COMMENTS)\s+\-\-\>\s+(.*)/g;
1693
+ var SRTTimestampParser = /^(\d{2})?:?(\d{2}):(\d{2})[\.\,](\d+)\s+\-\-\>\s+(\d{2})?:?(\d{2}):(\d{2})[\.\,](\d+)\s*(.*)/;
1669
1694
 
1670
1695
  return function(subtitleElement,objectCount){
1671
1696
 
1672
- var subtitleParts, timeIn, timeOut, html, timeData, subtitlePartIndex, id, specialCueData;
1697
+ var subtitleParts, timeIn, timeOut, html, timeData, subtitlePartIndex, id;
1673
1698
  var timestampMatch, tmpCue;
1674
1699
 
1675
1700
  // WebVTT Special Cue Logic
1676
- if (WebVTTDEFAULTSCueParser.exec(subtitleElement)) {
1677
- // cueDefaults = specialCueData.slice(2).join("");
1678
- // cueDefaults = cueDefaults.split(/\s+/g).filter(function(def) { return def && !!def.length; });
1679
- return null;
1680
- } else if ((specialCueData = WebVTTSTYLECueParser.exec(subtitleElement))) {
1701
+ if (WebVTTDEFAULTSCueParser.exec(subtitleElement) || WebVTTCOMMENTCueParser.exec(subtitleElement) || WebVTTSTYLECueParser.exec(subtitleElement)) {
1681
1702
  return null;
1682
- } else if ((specialCueData = WebVTTCOMMENTCueParser.exec(subtitleElement))) {
1683
- return null; // At this stage, we don't want to do anything with these.
1684
1703
  }
1685
1704
 
1686
1705
  subtitleParts = subtitleElement.split(/\n/g);
@@ -1698,7 +1717,7 @@ modified for webshims
1698
1717
  for (subtitlePartIndex = 0; subtitlePartIndex < subtitleParts.length; subtitlePartIndex ++) {
1699
1718
  var timestamp = subtitleParts[subtitlePartIndex];
1700
1719
 
1701
- if ((timestampMatch = WebVTTTimestampParser.exec(timestamp))) {
1720
+ if ((timestampMatch = WebVTTTimestampParser.exec(timestamp)) || (timestampMatch = SRTTimestampParser.exec(timestamp))) {
1702
1721
 
1703
1722
  // WebVTT
1704
1723
 
@@ -1785,11 +1804,6 @@ modified for webshims
1785
1804
  if(regWevVTT.test(cue)){
1786
1805
  isWEBVTT = true;
1787
1806
  } else if(cue.replace(/\s*/ig,"").length){
1788
- if(!isWEBVTT){
1789
- webshims.error('please use WebVTT format. This is the standard');
1790
- complete(null);
1791
- break;
1792
- }
1793
1807
  cue = mediaelement.parseCaptionChunk(cue, i);
1794
1808
  if(cue){
1795
1809
  track.addCue(cue);
File without changes
@@ -839,6 +839,23 @@ webshims.register('form-native-extend', function($, webshims, window, doc, undef
839
839
  return val * 1;
840
840
  };
841
841
  var createOpts = ['step', 'min', 'max', 'readonly', 'title', 'disabled', 'tabindex'];
842
+ var normalizeTouch = (function(){
843
+ var types = {
844
+ touchstart: 1,
845
+ touchend: 1,
846
+ touchmove: 1
847
+ };
848
+ var normalize = ['pageX', 'pageY'];
849
+ return function(e){
850
+ if(types[e.type] && e.originalEvent && e.originalEvent.touches && e.originalEvent.touches.length){
851
+ for(var i = 0; i < normalize.length; i++){
852
+ e[normalize[i]] = e.originalEvent.touches[0][normalize[i]];
853
+ }
854
+
855
+ }
856
+ return e;
857
+ };
858
+ })();
842
859
  var rangeProto = {
843
860
  _create: function(){
844
861
  var i;
@@ -1157,23 +1174,7 @@ webshims.register('form-native-extend', function($, webshims, window, doc, undef
1157
1174
  }
1158
1175
  };
1159
1176
  })();
1160
- var normalizeTouch = (function(){
1161
- var types = {
1162
- touchstart: 1,
1163
- touchend: 1,
1164
- touchmove: 1
1165
- };
1166
- var normalize = ['pageX', 'pageY'];
1167
- return function(e){
1168
- if(types[e.type] && e.originalEvent && e.originalEvent.touches && e.originalEvent.touches.length){
1169
- for(var i = 0; i < normalize.length; i++){
1170
- e[normalize[i]] = e.originalEvent.touches[0][normalize[i]];
1171
- }
1172
-
1173
- }
1174
- return e;
1175
- };
1176
- })();
1177
+
1177
1178
  var updateValue = function(val, animate){
1178
1179
  if(val != o.value){
1179
1180
  that.value(val, false, animate);
@@ -1193,7 +1194,7 @@ webshims.register('form-native-extend', function($, webshims, window, doc, undef
1193
1194
  }
1194
1195
  };
1195
1196
  var remove = function(e){
1196
- if(e && e.type == 'mouseup'){
1197
+ if(e && (e.type == 'mouseup' || e.type == 'touchend')){
1197
1198
  eventTimer.call('input', o.value);
1198
1199
  eventTimer.call('change', o.value);
1199
1200
  }
@@ -1214,6 +1215,8 @@ webshims.register('form-native-extend', function($, webshims, window, doc, undef
1214
1215
  $(document).off('mousemove touchmove', setValueFromPos).off('mouseup touchend', remove);
1215
1216
  $(window).off('blur', removeWin);
1216
1217
  if(!o.readonly && !o.disabled){
1218
+ eventTimer.init('input', o.value);
1219
+ eventTimer.init('change', o.value);
1217
1220
  normalizeTouch(e);
1218
1221
  that.element.trigger('focus');
1219
1222
  that.addRemoveClass('ws-active', true);
@@ -1249,8 +1252,10 @@ webshims.register('form-native-extend', function($, webshims, window, doc, undef
1249
1252
  'touchstart mousedown': add,
1250
1253
  focus: function(e){
1251
1254
  if(!o.disabled && !hasFocus){
1252
- eventTimer.init('input', o.value);
1253
- eventTimer.init('change', o.value);
1255
+ if(!isActive){
1256
+ eventTimer.init('input', o.value);
1257
+ eventTimer.init('change', o.value);
1258
+ }
1254
1259
  that.addRemoveClass('ws-focus', true);
1255
1260
  that.updateMetrics();
1256
1261
  }
@@ -1436,6 +1441,7 @@ webshims.register('form-native-extend', function($, webshims, window, doc, undef
1436
1441
  obj._create.call(obj);
1437
1442
  });
1438
1443
  };
1444
+ $.fn.rangeUI.normalizeTouch = normalizeTouch;
1439
1445
  if(window.webshims && webshims.isReady){
1440
1446
  webshims.isReady('range-ui', true);
1441
1447
  }
@@ -2143,11 +2149,7 @@ webshims.register('form-native-extend', function($, webshims, window, doc, undef
2143
2149
  if( steps[this.type] && typeof steps[this.type].start == 'object'){
2144
2150
  steps[this.type].start = this.asNumber(steps[this.type].start);
2145
2151
  }
2146
-
2147
- if(!webshims.picker[this.type]){
2148
- o.buttonOnly = false;
2149
- }
2150
-
2152
+
2151
2153
  for(i = 0; i < createOpts.length; i++){
2152
2154
  if(o[createOpts[i]] != null){
2153
2155
  this[createOpts[i]](o[createOpts[i]], o[createOpts[i]]);
@@ -2377,7 +2379,7 @@ webshims.register('form-native-extend', function($, webshims, window, doc, undef
2377
2379
  wsWidgetProto._create.apply(this, arguments);
2378
2380
  this._init = false;
2379
2381
 
2380
- this.buttonWrapper.html('<span unselectable="on" class="step-controls"><span class="step-up"></span><span class="step-down"></span></span>');
2382
+ this.buttonWrapper.html('<span unselectable="on" class="step-controls"><span class="step-up step-control"></span><span class="step-down step-control"></span></span>');
2381
2383
 
2382
2384
  if(this.type == 'number'){
2383
2385
  this.inputElements.attr('inputmode', 'numeric');
@@ -2560,7 +2562,7 @@ webshims.register('form-native-extend', function($, webshims, window, doc, undef
2560
2562
  }
2561
2563
 
2562
2564
  touch = changedTouches[0];
2563
- if(Math.abs(touchData.x - touch.pageX) > 40 || Math.abs(touchData.y - touch.pageY) > 40 || Date.now() - touchData.now > 600){
2565
+ if(Math.abs(touchData.x - touch.pageX) > 40 || Math.abs(touchData.y - touch.pageY) > 40 || Date.now() - touchData.now > 300){
2564
2566
  return;
2565
2567
  }
2566
2568
  e.preventDefault();
@@ -2758,7 +2760,7 @@ webshims.register('form-native-extend', function($, webshims, window, doc, undef
2758
2760
  }
2759
2761
  };
2760
2762
  return function(prop){
2761
- if(prop == 'value' && !data.options.inlinePicker){return;}
2763
+ if(prop == 'value' && (!data.options.inlinePicker || data._handledValue )){return;}
2762
2764
  popover.isDirty = true;
2763
2765
 
2764
2766
  if(popover.isVisible){
@@ -2817,6 +2819,13 @@ webshims.register('form-native-extend', function($, webshims, window, doc, undef
2817
2819
  }
2818
2820
  show();
2819
2821
  };
2822
+ var toogle = function(){
2823
+ if(popover.openedByFocus || !popover.isVisible){
2824
+ open();
2825
+ } else {
2826
+ popover.hide();
2827
+ }
2828
+ }
2820
2829
 
2821
2830
 
2822
2831
  options.containerElements.push(popover.element[0]);
@@ -2857,7 +2866,7 @@ webshims.register('form-native-extend', function($, webshims, window, doc, undef
2857
2866
  }
2858
2867
 
2859
2868
 
2860
- opener.wsTouchClick(open);
2869
+ opener.wsTouchClick(toogle);
2861
2870
 
2862
2871
  if(options.inlinePicker){
2863
2872
  popover.openedByFocus = true;
@@ -3209,9 +3218,9 @@ webshims.register('form-native-extend', function($, webshims, window, doc, undef
3209
3218
  }
3210
3219
 
3211
3220
  data.shim.element.on('change input', stopPropagation).addClass(cNames+' '+webshims.shadowClass);
3212
-
3221
+
3213
3222
  if(data.shim.buttonWrapper){
3214
-
3223
+
3215
3224
  data.shim.buttonWrapper.addClass('input-button-size-'+(data.shim.buttonWrapper.children().filter(isVisible).length)+' '+webshims.shadowClass);
3216
3225
 
3217
3226
  if(data.shim.buttonWrapper.filter(isVisible).length){
@@ -3368,6 +3377,32 @@ webshims.register('form-native-extend', function($, webshims, window, doc, undef
3368
3377
  ;
3369
3378
  });
3370
3379
  };
3380
+
3381
+
3382
+ if($('<input />').prop('labels') == null){
3383
+ webshims.defineNodeNamesProperty('button, input, keygen, meter, output, progress, select, textarea', 'labels', {
3384
+ prop: {
3385
+ get: function(){
3386
+ if(this.type == 'hidden'){return null;}
3387
+ var id = this.id;
3388
+ var labels = $(this)
3389
+ .closest('label')
3390
+ .filter(function(){
3391
+ var hFor = (this.attributes['for'] || {});
3392
+ return (!hFor.specified || hFor.value == id);
3393
+ })
3394
+ ;
3395
+
3396
+ if(id) {
3397
+ labels = labels.add('label[for="'+ id +'"]');
3398
+ }
3399
+ return labels.get();
3400
+ },
3401
+ writeable: false
3402
+ }
3403
+ });
3404
+ }
3405
+
3371
3406
  if(formcfg._isLoading){
3372
3407
  $(formcfg).one('change', init);
3373
3408
  } else {
@@ -839,6 +839,23 @@ webshims.register('form-native-extend', function($, webshims, window, doc, undef
839
839
  return val * 1;
840
840
  };
841
841
  var createOpts = ['step', 'min', 'max', 'readonly', 'title', 'disabled', 'tabindex'];
842
+ var normalizeTouch = (function(){
843
+ var types = {
844
+ touchstart: 1,
845
+ touchend: 1,
846
+ touchmove: 1
847
+ };
848
+ var normalize = ['pageX', 'pageY'];
849
+ return function(e){
850
+ if(types[e.type] && e.originalEvent && e.originalEvent.touches && e.originalEvent.touches.length){
851
+ for(var i = 0; i < normalize.length; i++){
852
+ e[normalize[i]] = e.originalEvent.touches[0][normalize[i]];
853
+ }
854
+
855
+ }
856
+ return e;
857
+ };
858
+ })();
842
859
  var rangeProto = {
843
860
  _create: function(){
844
861
  var i;
@@ -1157,23 +1174,7 @@ webshims.register('form-native-extend', function($, webshims, window, doc, undef
1157
1174
  }
1158
1175
  };
1159
1176
  })();
1160
- var normalizeTouch = (function(){
1161
- var types = {
1162
- touchstart: 1,
1163
- touchend: 1,
1164
- touchmove: 1
1165
- };
1166
- var normalize = ['pageX', 'pageY'];
1167
- return function(e){
1168
- if(types[e.type] && e.originalEvent && e.originalEvent.touches && e.originalEvent.touches.length){
1169
- for(var i = 0; i < normalize.length; i++){
1170
- e[normalize[i]] = e.originalEvent.touches[0][normalize[i]];
1171
- }
1172
-
1173
- }
1174
- return e;
1175
- };
1176
- })();
1177
+
1177
1178
  var updateValue = function(val, animate){
1178
1179
  if(val != o.value){
1179
1180
  that.value(val, false, animate);
@@ -1193,7 +1194,7 @@ webshims.register('form-native-extend', function($, webshims, window, doc, undef
1193
1194
  }
1194
1195
  };
1195
1196
  var remove = function(e){
1196
- if(e && e.type == 'mouseup'){
1197
+ if(e && (e.type == 'mouseup' || e.type == 'touchend')){
1197
1198
  eventTimer.call('input', o.value);
1198
1199
  eventTimer.call('change', o.value);
1199
1200
  }
@@ -1214,6 +1215,8 @@ webshims.register('form-native-extend', function($, webshims, window, doc, undef
1214
1215
  $(document).off('mousemove touchmove', setValueFromPos).off('mouseup touchend', remove);
1215
1216
  $(window).off('blur', removeWin);
1216
1217
  if(!o.readonly && !o.disabled){
1218
+ eventTimer.init('input', o.value);
1219
+ eventTimer.init('change', o.value);
1217
1220
  normalizeTouch(e);
1218
1221
  that.element.trigger('focus');
1219
1222
  that.addRemoveClass('ws-active', true);
@@ -1249,8 +1252,10 @@ webshims.register('form-native-extend', function($, webshims, window, doc, undef
1249
1252
  'touchstart mousedown': add,
1250
1253
  focus: function(e){
1251
1254
  if(!o.disabled && !hasFocus){
1252
- eventTimer.init('input', o.value);
1253
- eventTimer.init('change', o.value);
1255
+ if(!isActive){
1256
+ eventTimer.init('input', o.value);
1257
+ eventTimer.init('change', o.value);
1258
+ }
1254
1259
  that.addRemoveClass('ws-focus', true);
1255
1260
  that.updateMetrics();
1256
1261
  }
@@ -1436,6 +1441,7 @@ webshims.register('form-native-extend', function($, webshims, window, doc, undef
1436
1441
  obj._create.call(obj);
1437
1442
  });
1438
1443
  };
1444
+ $.fn.rangeUI.normalizeTouch = normalizeTouch;
1439
1445
  if(window.webshims && webshims.isReady){
1440
1446
  webshims.isReady('range-ui', true);
1441
1447
  }
@@ -2143,11 +2149,7 @@ webshims.register('form-native-extend', function($, webshims, window, doc, undef
2143
2149
  if( steps[this.type] && typeof steps[this.type].start == 'object'){
2144
2150
  steps[this.type].start = this.asNumber(steps[this.type].start);
2145
2151
  }
2146
-
2147
- if(!webshims.picker[this.type]){
2148
- o.buttonOnly = false;
2149
- }
2150
-
2152
+
2151
2153
  for(i = 0; i < createOpts.length; i++){
2152
2154
  if(o[createOpts[i]] != null){
2153
2155
  this[createOpts[i]](o[createOpts[i]], o[createOpts[i]]);
@@ -2377,7 +2379,7 @@ webshims.register('form-native-extend', function($, webshims, window, doc, undef
2377
2379
  wsWidgetProto._create.apply(this, arguments);
2378
2380
  this._init = false;
2379
2381
 
2380
- this.buttonWrapper.html('<span unselectable="on" class="step-controls"><span class="step-up"></span><span class="step-down"></span></span>');
2382
+ this.buttonWrapper.html('<span unselectable="on" class="step-controls"><span class="step-up step-control"></span><span class="step-down step-control"></span></span>');
2381
2383
 
2382
2384
  if(this.type == 'number'){
2383
2385
  this.inputElements.attr('inputmode', 'numeric');
@@ -2560,7 +2562,7 @@ webshims.register('form-native-extend', function($, webshims, window, doc, undef
2560
2562
  }
2561
2563
 
2562
2564
  touch = changedTouches[0];
2563
- if(Math.abs(touchData.x - touch.pageX) > 40 || Math.abs(touchData.y - touch.pageY) > 40 || Date.now() - touchData.now > 600){
2565
+ if(Math.abs(touchData.x - touch.pageX) > 40 || Math.abs(touchData.y - touch.pageY) > 40 || Date.now() - touchData.now > 300){
2564
2566
  return;
2565
2567
  }
2566
2568
  e.preventDefault();
@@ -2758,7 +2760,7 @@ webshims.register('form-native-extend', function($, webshims, window, doc, undef
2758
2760
  }
2759
2761
  };
2760
2762
  return function(prop){
2761
- if(prop == 'value' && !data.options.inlinePicker){return;}
2763
+ if(prop == 'value' && (!data.options.inlinePicker || data._handledValue )){return;}
2762
2764
  popover.isDirty = true;
2763
2765
 
2764
2766
  if(popover.isVisible){
@@ -2817,6 +2819,13 @@ webshims.register('form-native-extend', function($, webshims, window, doc, undef
2817
2819
  }
2818
2820
  show();
2819
2821
  };
2822
+ var toogle = function(){
2823
+ if(popover.openedByFocus || !popover.isVisible){
2824
+ open();
2825
+ } else {
2826
+ popover.hide();
2827
+ }
2828
+ }
2820
2829
 
2821
2830
 
2822
2831
  options.containerElements.push(popover.element[0]);
@@ -2857,7 +2866,7 @@ webshims.register('form-native-extend', function($, webshims, window, doc, undef
2857
2866
  }
2858
2867
 
2859
2868
 
2860
- opener.wsTouchClick(open);
2869
+ opener.wsTouchClick(toogle);
2861
2870
 
2862
2871
  if(options.inlinePicker){
2863
2872
  popover.openedByFocus = true;
@@ -3209,9 +3218,9 @@ webshims.register('form-native-extend', function($, webshims, window, doc, undef
3209
3218
  }
3210
3219
 
3211
3220
  data.shim.element.on('change input', stopPropagation).addClass(cNames+' '+webshims.shadowClass);
3212
-
3221
+
3213
3222
  if(data.shim.buttonWrapper){
3214
-
3223
+
3215
3224
  data.shim.buttonWrapper.addClass('input-button-size-'+(data.shim.buttonWrapper.children().filter(isVisible).length)+' '+webshims.shadowClass);
3216
3225
 
3217
3226
  if(data.shim.buttonWrapper.filter(isVisible).length){
@@ -3368,6 +3377,32 @@ webshims.register('form-native-extend', function($, webshims, window, doc, undef
3368
3377
  ;
3369
3378
  });
3370
3379
  };
3380
+
3381
+
3382
+ if($('<input />').prop('labels') == null){
3383
+ webshims.defineNodeNamesProperty('button, input, keygen, meter, output, progress, select, textarea', 'labels', {
3384
+ prop: {
3385
+ get: function(){
3386
+ if(this.type == 'hidden'){return null;}
3387
+ var id = this.id;
3388
+ var labels = $(this)
3389
+ .closest('label')
3390
+ .filter(function(){
3391
+ var hFor = (this.attributes['for'] || {});
3392
+ return (!hFor.specified || hFor.value == id);
3393
+ })
3394
+ ;
3395
+
3396
+ if(id) {
3397
+ labels = labels.add('label[for="'+ id +'"]');
3398
+ }
3399
+ return labels.get();
3400
+ },
3401
+ writeable: false
3402
+ }
3403
+ });
3404
+ }
3405
+
3371
3406
  if(formcfg._isLoading){
3372
3407
  $(formcfg).one('change', init);
3373
3408
  } else {