webshims-rails 1.11.3.1 → 1.11.6

Sign up to get free protection for your applications and to get access to all the features.
Files changed (72) 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 +114 -104
  4. data/vendor/assets/javascripts/webshims/extras/mousepress.js +5 -5
  5. data/vendor/assets/javascripts/webshims/polyfiller.js +156 -207
  6. data/vendor/assets/javascripts/webshims/shims/$ajax.js +862 -0
  7. data/vendor/assets/javascripts/webshims/shims/FlashCanvas/flashcanvas.js +20 -0
  8. data/vendor/assets/javascripts/webshims/shims/FlashCanvasPro/flashcanvas.js +20 -0
  9. data/vendor/assets/javascripts/webshims/shims/color-picker.js +12 -12
  10. data/vendor/assets/javascripts/webshims/shims/combos/1.js +62 -32
  11. data/vendor/assets/javascripts/webshims/shims/combos/10.js +192 -509
  12. data/vendor/assets/javascripts/webshims/shims/combos/11.js +96 -415
  13. data/vendor/assets/javascripts/webshims/shims/combos/12.js +36 -26
  14. data/vendor/assets/javascripts/webshims/shims/combos/13.js +36 -26
  15. data/vendor/assets/javascripts/webshims/shims/combos/14.js +1007 -359
  16. data/vendor/assets/javascripts/webshims/shims/combos/15.js +310 -235
  17. data/vendor/assets/javascripts/webshims/shims/combos/16.js +313 -237
  18. data/vendor/assets/javascripts/webshims/shims/combos/17.js +96 -415
  19. data/vendor/assets/javascripts/webshims/shims/combos/18.js +1003 -678
  20. data/vendor/assets/javascripts/webshims/shims/combos/19.js +1085 -387
  21. data/vendor/assets/javascripts/webshims/shims/combos/2.js +161 -127
  22. data/vendor/assets/javascripts/webshims/shims/combos/20.js +1086 -388
  23. data/vendor/assets/javascripts/webshims/shims/combos/21.js +168 -96
  24. data/vendor/assets/javascripts/webshims/shims/combos/22.js +36 -27
  25. data/vendor/assets/javascripts/webshims/shims/combos/23.js +2 -1
  26. data/vendor/assets/javascripts/webshims/shims/combos/24.js +411 -172
  27. data/vendor/assets/javascripts/webshims/shims/combos/25.js +1085 -387
  28. data/vendor/assets/javascripts/webshims/shims/combos/26.js +96 -94
  29. data/vendor/assets/javascripts/webshims/shims/combos/3.js +163 -140
  30. data/vendor/assets/javascripts/webshims/shims/combos/30.js +166 -141
  31. data/vendor/assets/javascripts/webshims/shims/combos/31.js +159 -126
  32. data/vendor/assets/javascripts/webshims/shims/combos/4.js +103 -109
  33. data/vendor/assets/javascripts/webshims/shims/combos/5.js +98 -417
  34. data/vendor/assets/javascripts/webshims/shims/combos/6.js +101 -418
  35. data/vendor/assets/javascripts/webshims/shims/combos/7.js +168 -142
  36. data/vendor/assets/javascripts/webshims/shims/combos/8.js +165 -141
  37. data/vendor/assets/javascripts/webshims/shims/combos/9.js +195 -510
  38. data/vendor/assets/javascripts/webshims/shims/details.js +2 -2
  39. data/vendor/assets/javascripts/webshims/shims/dom-extend.js +96 -94
  40. data/vendor/assets/javascripts/webshims/shims/es5.js +908 -264
  41. data/vendor/assets/javascripts/webshims/shims/excanvas.js +16 -1
  42. data/vendor/assets/javascripts/webshims/shims/form-combat.js +147 -0
  43. data/vendor/assets/javascripts/webshims/shims/form-core.js +60 -31
  44. data/vendor/assets/javascripts/webshims/shims/form-datalist-lazy.js +114 -33
  45. data/vendor/assets/javascripts/webshims/shims/form-datalist.js +3 -1
  46. data/vendor/assets/javascripts/webshims/shims/form-message.js +7 -15
  47. data/vendor/assets/javascripts/webshims/shims/form-native-extend.js +2 -2
  48. data/vendor/assets/javascripts/webshims/shims/form-number-date-ui.js +88 -410
  49. data/vendor/assets/javascripts/webshims/shims/form-shim-extend.js +143 -93
  50. data/vendor/assets/javascripts/webshims/shims/form-shim-extend2.js +268 -79
  51. data/vendor/assets/javascripts/webshims/shims/form-validation.js +116 -81
  52. data/vendor/assets/javascripts/webshims/shims/form-validators.js +23 -10
  53. data/vendor/assets/javascripts/webshims/shims/forms-picker.js +605 -9
  54. data/vendor/assets/javascripts/webshims/shims/geolocation.js +51 -39
  55. data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-de.js +78 -33
  56. data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-en.js +24 -6
  57. data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-nl.js +110 -49
  58. data/vendor/assets/javascripts/webshims/shims/json-storage.js +3 -1
  59. data/vendor/assets/javascripts/webshims/shims/mediaelement-core.js +2 -1
  60. data/vendor/assets/javascripts/webshims/shims/mediaelement-jaris.js +81 -30
  61. data/vendor/assets/javascripts/webshims/shims/mediaelement-yt.js +131 -54
  62. data/vendor/assets/javascripts/webshims/shims/plugins/jquery.ui.position.js +497 -0
  63. data/vendor/assets/javascripts/webshims/shims/range-ui.js +8 -5
  64. data/vendor/assets/javascripts/webshims/shims/sizzle.js +2026 -0
  65. data/vendor/assets/javascripts/webshims/shims/styles/forms-ext.css +401 -521
  66. data/vendor/assets/javascripts/webshims/shims/styles/scss/forms-ext.scss +1 -1
  67. data/vendor/assets/javascripts/webshims/shims/styles/scss/shim.scss +94 -82
  68. data/vendor/assets/javascripts/webshims/shims/styles/shim.css +250 -321
  69. data/vendor/assets/javascripts/webshims/shims/swf/JarisFLVPlayer.swf +0 -0
  70. data/vendor/assets/javascripts/webshims/shims/track-ui.js +1 -1
  71. data/vendor/assets/javascripts/webshims/shims/track.js +34 -25
  72. metadata +7 -3
@@ -16,6 +16,7 @@
16
16
  errorTimer,
17
17
  googleTimer,
18
18
  calledEnd,
19
+ createAjax,
19
20
  endCallback = function(){
20
21
  if(calledEnd){return;}
21
22
  if(pos){
@@ -39,7 +40,7 @@
39
40
  endCallback();
40
41
  },
41
42
  resetCallback = function(){
42
- $(document).unbind('google-loader', resetCallback);
43
+ $(document).off('google-loader', resetCallback);
43
44
  clearTimeout(googleTimer);
44
45
  clearTimeout(errorTimer);
45
46
  },
@@ -84,44 +85,52 @@
84
85
  }
85
86
  return;
86
87
  }
87
- $.ajax({
88
- url: 'http://freegeoip.net/json/',
89
- dataType: 'jsonp',
90
- cache: true,
91
- jsonp: 'callback',
92
- success: function(data){
93
- locationAPIs--;
94
- if(!data){return;}
95
- pos = pos || {
96
- coords: {
97
- latitude: data.latitude,
98
- longitude: data.longitude,
99
- altitude: null,
100
- accuracy: 43000,
101
- altitudeAccuracy: null,
102
- heading: parseInt('NaN', 10),
103
- velocity: null
104
- },
105
- //extension similiar to FF implementation
106
- address: {
107
- city: data.city,
108
- country: data.country_name,
109
- countryCode: data.country_code,
110
- county: "",
111
- postalCode: data.zipcode,
112
- premises: "",
113
- region: data.region_name,
114
- street: "",
115
- streetNumber: ""
116
- }
117
- };
118
- endCallback();
119
- },
120
- error: function(){
121
- locationAPIs--;
122
- endCallback();
123
- }
124
- });
88
+ createAjax = function(){
89
+ $.ajax({
90
+ url: 'http://freegeoip.net/json/',
91
+ dataType: 'jsonp',
92
+ cache: true,
93
+ jsonp: 'callback',
94
+ success: function(data){
95
+ locationAPIs--;
96
+ if(!data){return;}
97
+ pos = pos || {
98
+ coords: {
99
+ latitude: data.latitude,
100
+ longitude: data.longitude,
101
+ altitude: null,
102
+ accuracy: 43000,
103
+ altitudeAccuracy: null,
104
+ heading: parseInt('NaN', 10),
105
+ velocity: null
106
+ },
107
+ //extension similiar to FF implementation
108
+ address: {
109
+ city: data.city,
110
+ country: data.country_name,
111
+ countryCode: data.country_code,
112
+ county: "",
113
+ postalCode: data.zipcode,
114
+ premises: "",
115
+ region: data.region_name,
116
+ street: "",
117
+ streetNumber: ""
118
+ }
119
+ };
120
+ endCallback();
121
+ },
122
+ error: function(){
123
+ locationAPIs--;
124
+ endCallback();
125
+ }
126
+ });
127
+ };
128
+ if($.ajax){
129
+ createAjax();
130
+ } else {
131
+ webshims.ready('$ajax', createAjax);
132
+ webshims.loader.loadList(['$ajax']);
133
+ }
125
134
  clearTimeout(googleTimer);
126
135
  if (!window.google || !window.google.loader) {
127
136
  googleTimer = setTimeout(function(){
@@ -164,6 +173,9 @@
164
173
  return api;
165
174
  })();
166
175
 
176
+ webshims.ready('WINDOWLOAD', function(){
177
+ webshims.loader.loadList(['$ajax']);
178
+ });
167
179
  webshims.isReady('geolocation', true);
168
180
  })(webshims.$);
169
181
 
@@ -186,7 +198,7 @@ webshims.register('details', function($, webshims, window, doc, undefined, optio
186
198
  oldSummary.remove();
187
199
  } else {
188
200
  oldSummary
189
- .unbind('.summaryPolyfill')
201
+ .off('.summaryPolyfill')
190
202
  .removeData('detailsElement')
191
203
  .removeAttr('role')
192
204
  .removeAttr('tabindex')
@@ -204,7 +216,7 @@ webshims.register('details', function($, webshims, window, doc, undefined, optio
204
216
  var getSummary = function(details){
205
217
  var summary = $.data(details, 'summaryElement');
206
218
  if(!summary){
207
- summary = $('> summary:first-child', details);
219
+ summary = $(details).children('summary:first-child');
208
220
  if(!summary[0]){
209
221
  $(details).prependPolyfill('<summary class="fallback-summary">'+ options.text +'</summary>');
210
222
  summary = $.data(details, 'summaryElement');
@@ -772,9 +784,9 @@ webshims.register('mediaelement-jaris', function($, webshims, window, document,
772
784
  })();
773
785
 
774
786
 
775
- var transformDimension = (function(){
787
+ var getComputedDimension = (function(){
776
788
  var dimCache = {};
777
- var getRealDims = function(data){
789
+ var getVideoDims = function(data){
778
790
  var ret, poster, img;
779
791
  if(dimCache[data.currentSrc]){
780
792
  ret = dimCache[data.currentSrc];
@@ -799,54 +811,102 @@ webshims.register('mediaelement-jaris', function($, webshims, window, document,
799
811
  } else {
800
812
  delete dimCache[poster];
801
813
  }
814
+ img.onload = null;
802
815
  };
803
816
  img.src = poster;
804
- if(img.complete){
817
+ if(img.complete && img.onload){
805
818
  img.onload();
806
819
  }
807
820
  }
808
821
  }
809
822
  return ret || {width: 300, height: data._elemNodeName == 'video' ? 150 : 50};
810
823
  };
811
- return function(data){
812
- var realDims, ratio;
813
- var ret = data.elemDimensions;
824
+
825
+ var getCssStyle = function(elem, style){
826
+ return elem.style[style] || (elem.currentStyle && elem.currentStyle[style]) || (window.getComputedStyle && (window.getComputedStyle( elem, null ) || {} )[style]) || '';
827
+ };
828
+ var minMaxProps = ['minWidth', 'maxWidth', 'minHeight', 'maxHeight'];
829
+
830
+ var addMinMax = function(elem, ret){
831
+ var i, prop;
832
+ var hasMinMax = false;
833
+ for (i = 0; i < 4; i++) {
834
+ prop = getCssStyle(elem, minMaxProps[i]);
835
+ if(parseFloat(prop, 10)){
836
+ hasMinMax = true;
837
+ ret[minMaxProps[i]] = prop;
838
+ }
839
+ }
840
+ return hasMinMax;
841
+ };
842
+ var retFn = function(data){
843
+ var videoDims, ratio, hasMinMax;
844
+ var elem = data._elem;
845
+ var autos = {
846
+ width: getCssStyle(elem, 'width') == 'auto',
847
+ height: getCssStyle(elem, 'height') == 'auto'
848
+ };
849
+ var ret = {
850
+ width: !autos.width && $(elem).width(),
851
+ height: !autos.height && $(elem).height()
852
+ };
814
853
 
815
- if(ret.width == 'auto' || ret.height == 'auto'){
816
- ret = $.extend({}, data.elemDimensions);
817
- realDims = getRealDims(data);
818
- ratio = realDims.width / realDims.height;
854
+ if(autos.width || autos.height){
855
+ videoDims = getVideoDims(data);
856
+ ratio = videoDims.width / videoDims.height;
819
857
 
820
- if(ret.width == 'auto' && ret.height == 'auto'){
821
- ret = realDims;
822
- } else if(ret.width == 'auto'){
823
- data.shadowElem.css({height: ret.height});
824
- ret.width = data.shadowElem.height() * ratio;
825
- } else {
826
- data.shadowElem.css({width: ret.width});
827
- ret.height = data.shadowElem.width() / ratio;
858
+ if(autos.width && autos.height){
859
+ ret.width = videoDims.width;
860
+ ret.height = videoDims.height;
861
+ } else if(autos.width){
862
+ ret.width = ret.height * ratio;
863
+ } else if(autos.height){
864
+ ret.height = ret.width / ratio;
865
+ }
866
+
867
+ if(addMinMax(elem, ret)){
868
+ data.shadowElem.css(ret);
869
+ if(autos.width){
870
+ ret.width = data.shadowElem.height() * ratio;
871
+ }
872
+ if(autos.height){
873
+ ret.height = ((autos.width) ? ret.width : data.shadowElem.width()) / ratio;
874
+ }
875
+ if(autos.width && autos.height){
876
+ data.shadowElem.css(ret);
877
+ ret.height = data.shadowElem.width() / ratio;
878
+ ret.width = ret.height * ratio;
879
+
880
+ data.shadowElem.css(ret);
881
+ ret.width = data.shadowElem.height() * ratio;
882
+ ret.height = ret.width / ratio;
883
+
884
+ }
885
+ if(!Modernizr.video){
886
+ ret.width = data.shadowElem.width();
887
+ ret.height = data.shadowElem.height();
888
+ }
828
889
  }
829
890
  }
830
891
  return ret;
831
892
  };
893
+
894
+ return retFn;
832
895
  })();
896
+
833
897
  var setElementDimension = function(data, hasControls){
834
898
  var dims;
835
- var elem = data._elem;
899
+
836
900
  var box = data.shadowElem;
837
- $(elem)[hasControls ? 'addClass' : 'removeClass']('webshims-controls');
901
+ $(data._elem)[hasControls ? 'addClass' : 'removeClass']('webshims-controls');
838
902
 
839
- if(data.isActive == 'third'){
903
+ if(data.isActive == 'third' || data.activating == 'third'){
840
904
  if(data._elemNodeName == 'audio' && !hasControls){
841
905
  box.css({width: 0, height: 0});
842
906
  } else {
843
- data.elemDimensions = {
844
- width: elem.style.width || $.attr(elem, 'width') || $(elem).width(),
845
- height: elem.style.height || $.attr(elem, 'height') || $(elem).height()
846
- };
847
- dims = transformDimension(data);
848
- dims.minWidth = elem.style.minWidth;
849
- dims.minHeight = elem.style.minHeight;
907
+ data._elem.style.display = '';
908
+ dims = getComputedDimension(data);
909
+ data._elem.style.display = 'none';
850
910
  box.css(dims);
851
911
  }
852
912
  }
@@ -905,6 +965,8 @@ webshims.register('mediaelement-jaris', function($, webshims, window, document,
905
965
  }, 1);
906
966
  return;
907
967
  }
968
+
969
+ var attrStyle = {};
908
970
 
909
971
  if(loadedSwf < 1){
910
972
  loadedSwf = 1;
@@ -915,7 +977,8 @@ webshims.register('mediaelement-jaris', function($, webshims, window, document,
915
977
  data = webshims.data(elem, 'mediaelement');
916
978
  }
917
979
 
918
- if($.attr(elem, 'height') || $.attr(elem, 'width')){
980
+ if((attrStyle.height = $.attr(elem, 'height') || '') || (attrStyle.width = $.attr(elem, 'width') || '')){
981
+ $(elem).css(attrStyle);
919
982
  webshims.warn("width or height content attributes used. Webshims prefers the usage of CSS (computed styles or inline styles) to detect size of a video/audio. It's really more powerfull.");
920
983
  }
921
984
 
@@ -1022,7 +1085,7 @@ webshims.register('mediaelement-jaris', function($, webshims, window, document,
1022
1085
  box.insertBefore(elem);
1023
1086
 
1024
1087
  if(hasNative){
1025
- $.extend(data, {volume: $.prop(elem, 'volume'), muted: $.prop(elem, 'muted'), paused: $.prop(elem, 'paused')});
1088
+ $.extend(data, {volume: $.prop(elem, 'volume'), muted: $.prop(elem, 'muted')});
1026
1089
  }
1027
1090
 
1028
1091
  webshims.addShadowDom(elem, box);
@@ -1794,9 +1857,9 @@ webshims.register('track', function($, webshims, window, document, undefined){
1794
1857
  var loadEvents = 'play playing updatetrackdisplay';
1795
1858
  var obj = trackData.track;
1796
1859
  var load = function(){
1797
- var error, ajax, src;
1860
+ var error, ajax, src, createAjax;
1798
1861
  if(obj.mode != 'disabled' && $.attr(track, 'src') && (src = $.prop(track, 'src'))){
1799
- $(mediaelem).unbind(loadEvents, load);
1862
+ $(mediaelem).off(loadEvents, load);
1800
1863
  if(!trackData.readyState){
1801
1864
  error = function(){
1802
1865
  trackData.readyState = 3;
@@ -1808,26 +1871,34 @@ webshims.register('track', function($, webshims, window, document, undefined){
1808
1871
  try {
1809
1872
  obj.cues = mediaelement.createCueList();
1810
1873
  obj.activeCues = obj.shimActiveCues = obj._shimActiveCues = mediaelement.createCueList();
1811
- ajax = $.ajax({
1812
- dataType: 'text',
1813
- url: src,
1814
- success: function(text){
1815
- if(ajax.getResponseHeader('content-type') != 'text/vtt'){
1816
- webshims.error('set the mime-type of your WebVTT files to text/vtt. see: http://dev.w3.org/html5/webvtt/#text/vtt');
1817
- }
1818
- mediaelement.parseCaptions(text, obj, function(cues){
1819
- if(cues && 'length' in cues){
1820
- trackData.readyState = 2;
1821
- $(track).triggerHandler('load');
1822
- $(mediaelem).triggerHandler('updatetrackdisplay');
1823
- } else {
1824
- error();
1874
+ createAjax = function(){
1875
+ ajax = $.ajax({
1876
+ dataType: 'text',
1877
+ url: src,
1878
+ success: function(text){
1879
+ if(ajax.getResponseHeader('content-type') != 'text/vtt'){
1880
+ webshims.error('set the mime-type of your WebVTT files to text/vtt. see: http://dev.w3.org/html5/webvtt/#text/vtt');
1825
1881
  }
1826
- });
1827
-
1828
- },
1829
- error: error
1830
- });
1882
+ mediaelement.parseCaptions(text, obj, function(cues){
1883
+ if(cues && 'length' in cues){
1884
+ trackData.readyState = 2;
1885
+ $(track).triggerHandler('load');
1886
+ $(mediaelem).triggerHandler('updatetrackdisplay');
1887
+ } else {
1888
+ error();
1889
+ }
1890
+ });
1891
+
1892
+ },
1893
+ error: error
1894
+ });
1895
+ };
1896
+ if($.ajax){
1897
+ createAjax();
1898
+ } else {
1899
+ webshims.ready('$ajax', createAjax);
1900
+ webshims.loader.loadList(['$ajax']);
1901
+ }
1831
1902
  } catch(er){
1832
1903
  error();
1833
1904
  webshims.error(er);
@@ -1840,7 +1911,7 @@ webshims.register('track', function($, webshims, window, document, undefined){
1840
1911
  obj._shimActiveCues = null;
1841
1912
  obj.activeCues = null;
1842
1913
  obj.cues = null;
1843
- $(mediaelem).unbind(loadEvents, load);
1914
+ $(mediaelem).off(loadEvents, load);
1844
1915
  $(mediaelem).on(loadEvents, load);
1845
1916
  if(_default){
1846
1917
  obj.mode = showTracks[obj.kind] ? 'showing' : 'hidden';
@@ -2259,8 +2330,8 @@ modified for webshims
2259
2330
  }
2260
2331
  }, 'prop');
2261
2332
 
2262
-
2263
- $(document).on('emptied ended updatetracklist', function(e){
2333
+ //wsmediareload
2334
+ var thUpdateList = function(e){
2264
2335
  if($(e.target).is('audio, video')){
2265
2336
  var baseData = webshims.data(e.target, 'mediaelementBase');
2266
2337
  if(baseData){
@@ -2270,7 +2341,7 @@ modified for webshims
2270
2341
  }, 0);
2271
2342
  }
2272
2343
  }
2273
- });
2344
+ };
2274
2345
 
2275
2346
  var getNativeReadyState = function(trackElem, textTrack){
2276
2347
  return textTrack.readyState || trackElem.readyState;
@@ -2310,6 +2381,7 @@ modified for webshims
2310
2381
  .each(function(){
2311
2382
  updateMediaTrackList.call(this);
2312
2383
  })
2384
+ .on('emptied updatetracklist wsmediareload', thUpdateList)
2313
2385
  .each(function(){
2314
2386
  if(Modernizr.track){
2315
2387
  var shimedTextTracks = $.prop(this, 'textTracks');
@@ -17,7 +17,7 @@ webshims.register('details', function($, webshims, window, doc, undefined, optio
17
17
  oldSummary.remove();
18
18
  } else {
19
19
  oldSummary
20
- .unbind('.summaryPolyfill')
20
+ .off('.summaryPolyfill')
21
21
  .removeData('detailsElement')
22
22
  .removeAttr('role')
23
23
  .removeAttr('tabindex')
@@ -35,7 +35,7 @@ webshims.register('details', function($, webshims, window, doc, undefined, optio
35
35
  var getSummary = function(details){
36
36
  var summary = $.data(details, 'summaryElement');
37
37
  if(!summary){
38
- summary = $('> summary:first-child', details);
38
+ summary = $(details).children('summary:first-child');
39
39
  if(!summary[0]){
40
40
  $(details).prependPolyfill('<summary class="fallback-summary">'+ options.text +'</summary>');
41
41
  summary = $.data(details, 'summaryElement');
@@ -467,9 +467,9 @@ webshims.register('track', function($, webshims, window, document, undefined){
467
467
  var loadEvents = 'play playing updatetrackdisplay';
468
468
  var obj = trackData.track;
469
469
  var load = function(){
470
- var error, ajax, src;
470
+ var error, ajax, src, createAjax;
471
471
  if(obj.mode != 'disabled' && $.attr(track, 'src') && (src = $.prop(track, 'src'))){
472
- $(mediaelem).unbind(loadEvents, load);
472
+ $(mediaelem).off(loadEvents, load);
473
473
  if(!trackData.readyState){
474
474
  error = function(){
475
475
  trackData.readyState = 3;
@@ -481,26 +481,34 @@ webshims.register('track', function($, webshims, window, document, undefined){
481
481
  try {
482
482
  obj.cues = mediaelement.createCueList();
483
483
  obj.activeCues = obj.shimActiveCues = obj._shimActiveCues = mediaelement.createCueList();
484
- ajax = $.ajax({
485
- dataType: 'text',
486
- url: src,
487
- success: function(text){
488
- if(ajax.getResponseHeader('content-type') != 'text/vtt'){
489
- webshims.error('set the mime-type of your WebVTT files to text/vtt. see: http://dev.w3.org/html5/webvtt/#text/vtt');
490
- }
491
- mediaelement.parseCaptions(text, obj, function(cues){
492
- if(cues && 'length' in cues){
493
- trackData.readyState = 2;
494
- $(track).triggerHandler('load');
495
- $(mediaelem).triggerHandler('updatetrackdisplay');
496
- } else {
497
- error();
484
+ createAjax = function(){
485
+ ajax = $.ajax({
486
+ dataType: 'text',
487
+ url: src,
488
+ success: function(text){
489
+ if(ajax.getResponseHeader('content-type') != 'text/vtt'){
490
+ webshims.error('set the mime-type of your WebVTT files to text/vtt. see: http://dev.w3.org/html5/webvtt/#text/vtt');
498
491
  }
499
- });
500
-
501
- },
502
- error: error
503
- });
492
+ mediaelement.parseCaptions(text, obj, function(cues){
493
+ if(cues && 'length' in cues){
494
+ trackData.readyState = 2;
495
+ $(track).triggerHandler('load');
496
+ $(mediaelem).triggerHandler('updatetrackdisplay');
497
+ } else {
498
+ error();
499
+ }
500
+ });
501
+
502
+ },
503
+ error: error
504
+ });
505
+ };
506
+ if($.ajax){
507
+ createAjax();
508
+ } else {
509
+ webshims.ready('$ajax', createAjax);
510
+ webshims.loader.loadList(['$ajax']);
511
+ }
504
512
  } catch(er){
505
513
  error();
506
514
  webshims.error(er);
@@ -513,7 +521,7 @@ webshims.register('track', function($, webshims, window, document, undefined){
513
521
  obj._shimActiveCues = null;
514
522
  obj.activeCues = null;
515
523
  obj.cues = null;
516
- $(mediaelem).unbind(loadEvents, load);
524
+ $(mediaelem).off(loadEvents, load);
517
525
  $(mediaelem).on(loadEvents, load);
518
526
  if(_default){
519
527
  obj.mode = showTracks[obj.kind] ? 'showing' : 'hidden';
@@ -932,8 +940,8 @@ modified for webshims
932
940
  }
933
941
  }, 'prop');
934
942
 
935
-
936
- $(document).on('emptied ended updatetracklist', function(e){
943
+ //wsmediareload
944
+ var thUpdateList = function(e){
937
945
  if($(e.target).is('audio, video')){
938
946
  var baseData = webshims.data(e.target, 'mediaelementBase');
939
947
  if(baseData){
@@ -943,7 +951,7 @@ modified for webshims
943
951
  }, 0);
944
952
  }
945
953
  }
946
- });
954
+ };
947
955
 
948
956
  var getNativeReadyState = function(trackElem, textTrack){
949
957
  return textTrack.readyState || trackElem.readyState;
@@ -983,6 +991,7 @@ modified for webshims
983
991
  .each(function(){
984
992
  updateMediaTrackList.call(this);
985
993
  })
994
+ .on('emptied updatetracklist wsmediareload', thUpdateList)
986
995
  .each(function(){
987
996
  if(Modernizr.track){
988
997
  var shimedTextTracks = $.prop(this, 'textTracks');
@@ -495,7 +495,7 @@ var swfmini = function() {
495
495
  var switchOptions = function(e){
496
496
  var media, error, parent;
497
497
  if(!options.preferFlash &&
498
- ($(e.target).is('audio, video') || ((parent = e.target.parentNode) && $('source:last', parent)[0] == e.target)) &&
498
+ ($(e.target).is('audio, video') || ((parent = e.target.parentNode) && $('source', parent).last()[0] == e.target)) &&
499
499
  (media = $(e.target).closest('audio, video')) && (error = media.prop('error')) && !noSwitch[error.code]
500
500
  ){
501
501
 
@@ -1003,6 +1003,7 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
1003
1003
  if(hasNative && (!data || data.isActive == 'html5') && supLoad.prop._supvalue){
1004
1004
  supLoad.prop._supvalue.apply(this, arguments);
1005
1005
  }
1006
+ $(this).triggerHandler('wsmediareload');
1006
1007
  }
1007
1008
  }
1008
1009
  });