soundmanager-rails 0.1.1 → 0.1.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -8,7 +8,7 @@
8
8
  * Code provided under the BSD License:
9
9
  * http://schillmania.com/projects/soundmanager2/license.txt
10
10
  *
11
- * V2.97a.20120624
11
+ * V2.97a.20120916
12
12
  */
13
13
 
14
14
  /*global window, SM2_DEFER, sm2Debugger, console, document, navigator, setTimeout, setInterval, clearInterval, Audio */
@@ -20,7 +20,7 @@
20
20
  * This is the fully-commented source version of the SoundManager 2 API,
21
21
  * recommended for use during development and testing.
22
22
  *
23
- * See soundmanager2-nodebug-jsmin.js for an optimized build (~10KB with gzip.)
23
+ * See soundmanager2-nodebug-jsmin.js for an optimized build (~11KB with gzip.)
24
24
  * http://schillmania.com/projects/soundmanager2/doc/getstarted/#basic-inclusion
25
25
  * Alternately, serve this file with gzip for 75% compression savings (~30KB over HTTP.)
26
26
  *
@@ -146,7 +146,6 @@ function SoundManager(smURL, smID) {
146
146
  * determines HTML5 support + flash requirements.
147
147
  * if no support (via flash and/or HTML5) for a "required" format, SM2 will fail to start.
148
148
  * flash fallback is used for MP3 or MP4 if HTML5 can't play it (or if preferFlash = true)
149
- * multiple MIME types may be tested while trying to get a positive canPlayType() response.
150
149
  */
151
150
 
152
151
  'mp3': {
@@ -155,7 +154,7 @@ function SoundManager(smURL, smID) {
155
154
  },
156
155
 
157
156
  'mp4': {
158
- 'related': ['aac','m4a'], // additional formats under the MP4 container
157
+ 'related': ['aac','m4a','m4b'], // additional formats under the MP4 container
159
158
  'type': ['audio/mp4; codecs="mp4a.40.2"', 'audio/aac', 'audio/x-m4a', 'audio/MP4A-LATM', 'audio/mpeg4-generic'],
160
159
  'required': false
161
160
  },
@@ -182,7 +181,7 @@ function SoundManager(smURL, smID) {
182
181
 
183
182
  // dynamic attributes
184
183
 
185
- this.versionNumber = 'V2.97a.20120624';
184
+ this.versionNumber = 'V2.97a.20120916';
186
185
  this.version = null;
187
186
  this.movieURL = null;
188
187
  this.altURL = null;
@@ -241,7 +240,8 @@ function SoundManager(smURL, smID) {
241
240
 
242
241
  this.hasHTML5 = (function() {
243
242
  try {
244
- return (typeof Audio !== 'undefined' && typeof new Audio().canPlayType !== 'undefined');
243
+ // new Audio(null) for stupid Opera 9.64 case, which throws not_enough_arguments exception otherwise.
244
+ return (typeof Audio !== 'undefined' && typeof (_isOpera && opera.version() < 10 ? new Audio(null) : new Audio()).canPlayType !== 'undefined');
245
245
  } catch(e) {
246
246
  return false;
247
247
  }
@@ -277,14 +277,14 @@ function SoundManager(smURL, smID) {
277
277
  _is_iDevice = _ua.match(/(ipad|iphone|ipod)/i), _isIE = _ua.match(/msie/i), _isWebkit = _ua.match(/webkit/i), _isSafari = (_ua.match(/safari/i) && !_ua.match(/chrome/i)), _isOpera = (_ua.match(/opera/i)),
278
278
  _mobileHTML5 = (_ua.match(/(mobile|pre\/|xoom)/i) || _is_iDevice),
279
279
  _isBadSafari = (!_wl.match(/usehtml5audio/i) && !_wl.match(/sm2\-ignorebadua/i) && _isSafari && !_ua.match(/silk/i) && _ua.match(/OS X 10_6_([3-7])/i)), // Safari 4 and 5 (excluding Kindle Fire, "Silk") occasionally fail to load/play HTML5 audio on Snow Leopard 10.6.3 through 10.6.7 due to bug(s) in QuickTime X and/or other underlying frameworks. :/ Confirmed bug. https://bugs.webkit.org/show_bug.cgi?id=32159
280
- _hasConsole = (typeof console !== 'undefined' && typeof console.log !== 'undefined'), _isFocused = (typeof _doc.hasFocus !== 'undefined'?_doc.hasFocus():null), _tryInitOnFocus = (_isSafari && (typeof _doc.hasFocus === 'undefined' || !_doc.hasFocus())), _okToDisable = !_tryInitOnFocus, _flashMIME = /(mp3|mp4|mpa|m4a)/i,
280
+ _hasConsole = (typeof console !== 'undefined' && typeof console.log !== 'undefined'), _isFocused = (typeof _doc.hasFocus !== 'undefined'?_doc.hasFocus():null), _tryInitOnFocus = (_isSafari && (typeof _doc.hasFocus === 'undefined' || !_doc.hasFocus())), _okToDisable = !_tryInitOnFocus, _flashMIME = /(mp3|mp4|mpa|m4a|m4b)/i,
281
281
  _emptyURL = 'about:blank', // safe URL to unload, or load nothing from (flash 8 + most HTML5 UAs)
282
282
  _overHTTP = (_doc.location?_doc.location.protocol.match(/http/i):null),
283
283
  _http = (!_overHTTP ? 'http:/'+'/' : ''),
284
284
  // mp3, mp4, aac etc.
285
- _netStreamMimeTypes = /^\s*audio\/(?:x-)?(?:mpeg4|aac|flv|mov|mp4||m4v|m4a|mp4v|3gp|3g2)\s*(?:$|;)/i,
285
+ _netStreamMimeTypes = /^\s*audio\/(?:x-)?(?:mpeg4|aac|flv|mov|mp4||m4v|m4a|m4b|mp4v|3gp|3g2)\s*(?:$|;)/i,
286
286
  // Flash v9.0r115+ "moviestar" formats
287
- _netStreamTypes = ['mpeg4', 'aac', 'flv', 'mov', 'mp4', 'm4v', 'f4v', 'm4a', 'mp4v', '3gp', '3g2'],
287
+ _netStreamTypes = ['mpeg4', 'aac', 'flv', 'mov', 'mp4', 'm4v', 'f4v', 'm4a', 'm4b', 'mp4v', '3gp', '3g2'],
288
288
  _netStreamPattern = new RegExp('\\.(' + _netStreamTypes.join('|') + ')(\\?.*)?$', 'i');
289
289
 
290
290
  this.mimePattern = /^\s*audio\/(?:x-)?(?:mp(?:eg|3))\s*(?:$|;)/i; // default mp3 set
@@ -336,6 +336,8 @@ function SoundManager(smURL, smID) {
336
336
 
337
337
  this.setup = function(options) {
338
338
 
339
+ var noURL = (!_s.url);
340
+
339
341
  // warn if flash options have already been applied
340
342
 
341
343
  if (typeof options !== 'undefined' && _didInit && _needsFlash && _s.ok() && (typeof options.flashVersion !== 'undefined' || typeof options.url !== 'undefined')) {
@@ -346,6 +348,18 @@ function SoundManager(smURL, smID) {
346
348
 
347
349
  _assign(options);
348
350
 
351
+ // special case 1: "Late setup". SM2 loaded normally, but user didn't assign flash URL eg., setup({url:...}) before SM2 init. Treat as delayed init.
352
+
353
+ if (noURL && _didDCLoaded && typeof options.url !== 'undefined') {
354
+ _s.beginDelayedInit();
355
+ }
356
+
357
+ // special case 2: If lazy-loading SM2 (DOMContentLoaded has already happened) and user calls setup() with url: parameter, try to init ASAP.
358
+
359
+ if (!_didDCLoaded && typeof options.url !== 'undefined' && _doc.readyState === 'complete') {
360
+ setTimeout(_domContentLoaded, 1);
361
+ }
362
+
349
363
  return _s;
350
364
 
351
365
  };
@@ -1458,7 +1472,8 @@ function SoundManager(smURL, smID) {
1458
1472
  // local shortcut
1459
1473
  _iO = _t._iO;
1460
1474
 
1461
- _lastURL = _t.url;
1475
+ // make a local copy of the old url before we re-assign it
1476
+ _lastURL = (_t.url && _t.url.toString ? _t.url.toString() : null);
1462
1477
 
1463
1478
  // reset a few state properties
1464
1479
 
@@ -1537,6 +1552,9 @@ function SoundManager(smURL, smID) {
1537
1552
 
1538
1553
  }
1539
1554
 
1555
+ // after all of this, ensure sound url is up to date.
1556
+ _t.url = _iO.url;
1557
+
1540
1558
  return _t;
1541
1559
 
1542
1560
  };
@@ -1653,9 +1671,19 @@ function SoundManager(smURL, smID) {
1653
1671
  oOptions = {};
1654
1672
  }
1655
1673
 
1656
- _t._iO = _mixin(oOptions, _t._iO);
1674
+ // first, use local URL (if specified)
1675
+ if (_t.url) {
1676
+ _t._iO.url = _t.url;
1677
+ }
1678
+
1679
+ // mix in any options defined at createSound()
1657
1680
  _t._iO = _mixin(_t._iO, _t.options);
1681
+
1682
+ // mix in any options specific to this method
1683
+ _t._iO = _mixin(oOptions, _t._iO);
1684
+
1658
1685
  _t._iO.url = _parseURL(_t._iO.url);
1686
+
1659
1687
  _t.instanceOptions = _t._iO;
1660
1688
 
1661
1689
  // RTMP-only
@@ -1687,6 +1715,12 @@ function SoundManager(smURL, smID) {
1687
1715
  return exit;
1688
1716
  }
1689
1717
 
1718
+ // edge case: play() with explicit URL parameter
1719
+ if (oOptions.url && oOptions.url !== _t.url) {
1720
+ // load using merged options
1721
+ _t.load(_t._iO);
1722
+ }
1723
+
1690
1724
  if (!_t.loaded) {
1691
1725
 
1692
1726
  if (_t.readyState === 0) {
@@ -1736,9 +1770,10 @@ function SoundManager(smURL, smID) {
1736
1770
  * If we just call resume() the onplay() callback will never be called.
1737
1771
  * So only call resume() if the position is > 0.
1738
1772
  * Another reason is because options like volume won't have been applied yet.
1773
+ * For normal sounds, just resume.
1739
1774
  */
1740
1775
 
1741
- if (_t.paused && _t.position && _t.position > 0) {
1776
+ if (_t.paused && _t.position >= 0 && (!_t._iO.serverURL || _t.position > 0)) {
1742
1777
 
1743
1778
  // https://gist.github.com/37b17df75cc4d7a90bf6
1744
1779
  _s._wD(fN + '"' + _t.id + '" is resuming from paused state',1);
@@ -1989,7 +2024,7 @@ function SoundManager(smURL, smID) {
1989
2024
  position, position1K,
1990
2025
  // Use the duration from the instance options, if we don't have a track duration yet.
1991
2026
  // position >= 0 and <= current available (loaded) duration
1992
- offset = (_t.isHTML5 ? Math.max(nMsecOffset,0) : Math.min(_t.duration || _t._iO.duration, Math.max(nMsecOffset, 0)));
2027
+ offset = (_t.isHTML5 ? Math.max(nMsecOffset, 0) : Math.min(_t.duration || _t._iO.duration, Math.max(nMsecOffset, 0)));
1993
2028
 
1994
2029
  original_pos = _t.position;
1995
2030
  _t.position = offset;
@@ -2613,8 +2648,9 @@ function SoundManager(smURL, smID) {
2613
2648
  this._get_html5_duration = function() {
2614
2649
 
2615
2650
  var _iO = _t._iO,
2616
- d = (_t._a ? _t._a.duration*1000 : (_iO ? _iO.duration : undefined)),
2617
- result = (d && !isNaN(d) && d !== Infinity ? d : (_iO ? _iO.duration : null));
2651
+ // if audio object exists, use its duration - else, instance option duration (if provided - it's a hack, really, and should be retired) OR null
2652
+ d = (_t._a && _t._a.duration ? _t._a.duration*1000 : (_iO && _iO.duration ? _iO.duration : null)),
2653
+ result = (d && !isNaN(d) && d !== Infinity ? d : null);
2618
2654
 
2619
2655
  return result;
2620
2656
 
@@ -2704,7 +2740,7 @@ function SoundManager(smURL, smID) {
2704
2740
  } else {
2705
2741
 
2706
2742
  // null for stupid Opera 9.64 case
2707
- _t._a = (_isOpera ? new Audio(null) : new Audio());
2743
+ _t._a = (_isOpera && opera.version() < 10 ? new Audio(null) : new Audio());
2708
2744
 
2709
2745
  }
2710
2746
 
@@ -2942,19 +2978,15 @@ function SoundManager(smURL, smID) {
2942
2978
  _t.duration = Math.floor(nDuration);
2943
2979
  _t.bufferLength = nBufferLength;
2944
2980
 
2945
- if (!_iO.isMovieStar) {
2981
+ if (!_t.isHTML5 && !_iO.isMovieStar) {
2946
2982
 
2947
2983
  if (_iO.duration) {
2948
- // use duration from options, if specified and larger
2984
+ // use duration from options, if specified and larger. nobody should be specifying duration in options, actually, and it should be retired.
2949
2985
  _t.durationEstimate = (_t.duration > _iO.duration) ? _t.duration : _iO.duration;
2950
2986
  } else {
2951
2987
  _t.durationEstimate = parseInt((_t.bytesTotal / _t.bytesLoaded) * _t.duration, 10);
2952
2988
  }
2953
2989
 
2954
- if (typeof _t.durationEstimate === 'undefined') {
2955
- _t.durationEstimate = _t.duration;
2956
- }
2957
-
2958
2990
  } else {
2959
2991
 
2960
2992
  _t.durationEstimate = _t.duration;
@@ -3051,7 +3083,7 @@ function SoundManager(smURL, smID) {
3051
3083
  _t.captiondata = oData;
3052
3084
 
3053
3085
  if (_t._iO.oncaptiondata) {
3054
- _t._iO.oncaptiondata.apply(_t);
3086
+ _t._iO.oncaptiondata.apply(_t, [oData]);
3055
3087
  }
3056
3088
 
3057
3089
  };
@@ -3347,6 +3379,18 @@ function SoundManager(smURL, smID) {
3347
3379
 
3348
3380
  };
3349
3381
 
3382
+ function _preferFlashCheck(kind) {
3383
+
3384
+ // whether flash should play a given type
3385
+ return (_s.preferFlash && _hasFlash && !_s.ignoreFlash && (typeof _s.flash[kind] !== 'undefined' && _s.flash[kind]));
3386
+
3387
+ }
3388
+
3389
+ /**
3390
+ * Internal DOM2-level event helpers
3391
+ * ---------------------------------
3392
+ */
3393
+
3350
3394
  _event = (function() {
3351
3395
 
3352
3396
  var old = (_win.attachEvent),
@@ -3357,7 +3401,8 @@ function SoundManager(smURL, smID) {
3357
3401
 
3358
3402
  function getArgs(oArgs) {
3359
3403
 
3360
- var args = _slice.call(oArgs), len = args.length;
3404
+ var args = _slice.call(oArgs),
3405
+ len = args.length;
3361
3406
 
3362
3407
  if (old) {
3363
3408
  // prefix
@@ -3406,13 +3451,6 @@ function SoundManager(smURL, smID) {
3406
3451
 
3407
3452
  }());
3408
3453
 
3409
- function _preferFlashCheck(kind) {
3410
-
3411
- // whether flash should play a given type
3412
- return (_s.preferFlash && _hasFlash && !_s.ignoreFlash && (typeof _s.flash[kind] !== 'undefined' && _s.flash[kind]));
3413
-
3414
- }
3415
-
3416
3454
  /**
3417
3455
  * Internal HTML5 event handling
3418
3456
  * -----------------------------
@@ -3584,7 +3622,9 @@ function SoundManager(smURL, smID) {
3584
3622
  ranges = e.target.buffered,
3585
3623
  // firefox 3.6 implements e.loaded/total (bytes)
3586
3624
  loaded = (e.loaded||0),
3587
- total = (e.total||1);
3625
+ total = (e.total||1),
3626
+ // HTML5 returns msec. SM2 API uses seconds for setPosition() etc., whether Flash or HTML5.
3627
+ scale = 1000;
3588
3628
 
3589
3629
  // reset the "buffered" (loaded byte ranges) array
3590
3630
  t.buffered = [];
@@ -3597,23 +3637,23 @@ function SoundManager(smURL, smID) {
3597
3637
  // re-build "buffered" array
3598
3638
  for (i=0, j=ranges.length; i<j; i++) {
3599
3639
  t.buffered.push({
3600
- 'start': ranges.start(i),
3601
- 'end': ranges.end(i)
3640
+ 'start': ranges.start(i) * scale,
3641
+ 'end': ranges.end(i) * scale
3602
3642
  });
3603
3643
  }
3604
3644
 
3605
3645
  // use the last value locally
3606
- buffered = (ranges.end(0) - ranges.start(0));
3646
+ buffered = (ranges.end(0) - ranges.start(0)) * scale;
3607
3647
 
3608
3648
  // linear case, buffer sum; does not account for seeking and HTTP partials / byte ranges
3609
- loaded = buffered/e.target.duration;
3649
+ loaded = buffered/(e.target.duration*scale);
3610
3650
 
3611
3651
  // <d>
3612
3652
  if (isProgress && ranges.length > 1) {
3613
3653
  str = [];
3614
3654
  j = ranges.length;
3615
3655
  for (i=0; i<j; i++) {
3616
- str.push(e.target.buffered.start(i) +'-'+ e.target.buffered.end(i));
3656
+ str.push(e.target.buffered.start(i)*scale +'-'+ e.target.buffered.end(i)*scale);
3617
3657
  }
3618
3658
  _s._wD(_h5+'progress: timeRanges: '+str.join(', '));
3619
3659
  }
@@ -3797,12 +3837,17 @@ function SoundManager(smURL, smID) {
3797
3837
 
3798
3838
  _testHTML5 = function() {
3799
3839
 
3800
- if (!_s.useHTML5Audio || typeof Audio === 'undefined') {
3840
+ /**
3841
+ * Internal: Iterates over audioFormats, determining support eg. audio/mp3, audio/mpeg and so on
3842
+ * assigns results to html5[] and flash[].
3843
+ */
3844
+
3845
+ if (!_s.useHTML5Audio || !_s.hasHTML5) {
3801
3846
  return false;
3802
3847
  }
3803
3848
 
3804
3849
  // double-whammy: Opera 9.64 throws WRONG_ARGUMENTS_ERR if no parameter passed to Audio(), and Webkit + iOS happily tries to load "null" as a URL. :/
3805
- var a = (typeof Audio !== 'undefined' ? (_isOpera ? new Audio(null) : new Audio()) : null),
3850
+ var a = (typeof Audio !== 'undefined' ? (_isOpera && opera.version() < 10 ? new Audio(null) : new Audio()) : null),
3806
3851
  item, lookup, support = {}, aF, i;
3807
3852
 
3808
3853
  function _cp(m) {
@@ -3817,7 +3862,7 @@ function SoundManager(smURL, smID) {
3817
3862
 
3818
3863
  if (m instanceof Array) {
3819
3864
  // iterate through all mime types, return any successes
3820
- for (i=0, j=m.length; i<j && !isOK; i++) {
3865
+ for (i=0, j=m.length; i<j; i++) {
3821
3866
  if (_s.html5[m[i]] || a.canPlayType(m[i]).match(_s.html5Test)) {
3822
3867
  isOK = true;
3823
3868
  _s.html5[m[i]] = true;
@@ -3931,13 +3976,16 @@ function SoundManager(smURL, smID) {
3931
3976
  noNSLoop: 'Note: Looping not implemented for MovieStar formats',
3932
3977
  needfl9: 'Note: Switching to flash 9, required for MP4 formats.',
3933
3978
  mfTimeout: 'Setting flashLoadTimeout = 0 (infinite) for off-screen, mobile flash case',
3979
+ needFlash: _sm + ': Fatal error: Flash is needed to play some required formats, but is not available.',
3980
+ gotFocus: _sm + ': Got window focus.',
3934
3981
  mfOn: 'mobileFlash::enabling on-screen flash repositioning',
3935
3982
  policy: 'Enabling usePolicyFile for data access',
3936
3983
  setup: _sm + '.setup(): allowed parameters: %s',
3937
3984
  setupError: _sm + '.setup(): "%s" cannot be assigned with this method.',
3938
3985
  setupUndef: _sm + '.setup(): Could not find option "%s"',
3939
3986
  setupLate: _sm + '.setup(): url + flashVersion changes will not take effect until reboot().',
3940
- h5a: 'creating HTML5 Audio() object'
3987
+ h5a: 'creating HTML5 Audio() object',
3988
+ noURL: _sm + ': Flash URL required. Call soundManager.setup({url:...}) to get started.'
3941
3989
  // </d>
3942
3990
 
3943
3991
  };
@@ -4472,8 +4520,6 @@ function SoundManager(smURL, smID) {
4472
4520
  if (!_s.html5 || !_s.html5.canPlayType) {
4473
4521
  _s._wD('SoundManager: No HTML5 Audio() support detected.');
4474
4522
  _s.hasHTML5 = false;
4475
- } else {
4476
- _s.hasHTML5 = true;
4477
4523
  }
4478
4524
 
4479
4525
  // <d>
@@ -4799,9 +4845,11 @@ function SoundManager(smURL, smID) {
4799
4845
  var remoteURL = (smURL || _s.url),
4800
4846
  localURL = (_s.altURL || remoteURL),
4801
4847
  swfTitle = 'JS/Flash audio component (SoundManager 2)',
4802
- oEmbed, oMovie, oTarget = _getDocument(), tmp, movieHTML, oEl, extraClass = _getSWFCSS(),
4803
- s, x, sClass, isRTL = null,
4804
- html = _doc.getElementsByTagName('html')[0];
4848
+ oTarget = _getDocument(),
4849
+ extraClass = _getSWFCSS(),
4850
+ isRTL = null,
4851
+ html = _doc.getElementsByTagName('html')[0],
4852
+ oEmbed, oMovie, tmp, movieHTML, oEl, s, x, sClass;
4805
4853
 
4806
4854
  isRTL = (html && html.dir && html.dir.match(/rtl/i));
4807
4855
  smID = (typeof smID === 'undefined'?_s.id:smID);
@@ -4980,12 +5028,24 @@ function SoundManager(smURL, smID) {
4980
5028
  return false;
4981
5029
  }
4982
5030
 
4983
- // attempt to get, or create, movie
4984
- // may already exist
5031
+ // attempt to get, or create, movie (may already exist)
4985
5032
  if (_flash) {
4986
5033
  return false;
4987
5034
  }
4988
5035
 
5036
+ if (!_s.url) {
5037
+
5038
+ /**
5039
+ * Something isn't right - we've reached init, but the soundManager url property has not been set.
5040
+ * User has not called setup({url: ...}), or has not set soundManager.url (legacy use case) directly before init time.
5041
+ * Notify and exit. If user calls setup() with a url: property, init will be restarted as in the deferred loading case.
5042
+ */
5043
+
5044
+ _wDS('noURL');
5045
+ return false;
5046
+
5047
+ }
5048
+
4989
5049
  // inline markup case
4990
5050
  _flash = _s.getMovie(_s.id);
4991
5051
 
@@ -5031,6 +5091,11 @@ function SoundManager(smURL, smID) {
5031
5091
  var p,
5032
5092
  loadIncomplete = false;
5033
5093
 
5094
+ if (!_s.url) {
5095
+ // No SWF url to load (noURL case) - exit for now. Will be retried when url is set.
5096
+ return false;
5097
+ }
5098
+
5034
5099
  if (_waitingForEI) {
5035
5100
  return false;
5036
5101
  }
@@ -5054,7 +5119,7 @@ function SoundManager(smURL, smID) {
5054
5119
 
5055
5120
  setTimeout(function() {
5056
5121
 
5057
- p = _s.getMoviePercent();
5122
+ p = _s.getMoviePercent();
5058
5123
 
5059
5124
  if (loadIncomplete) {
5060
5125
  // special case: if movie *partially* loaded, retry until it's 100% before assuming failure.
@@ -5123,7 +5188,7 @@ function SoundManager(smURL, smID) {
5123
5188
 
5124
5189
  _okToDisable = true;
5125
5190
  _isFocused = true;
5126
- _s._wD(_sm+': Got window focus.');
5191
+ _wDS('gotFocus');
5127
5192
 
5128
5193
  // allow init to restart
5129
5194
  _waitingForEI = false;
@@ -5138,6 +5203,8 @@ function SoundManager(smURL, smID) {
5138
5203
 
5139
5204
  _showSupport = function() {
5140
5205
 
5206
+ // <d>
5207
+
5141
5208
  var item, tests = [];
5142
5209
 
5143
5210
  if (_s.useHTML5Audio && _s.hasHTML5) {
@@ -5149,6 +5216,8 @@ function SoundManager(smURL, smID) {
5149
5216
  _s._wD('-- SoundManager 2: HTML5 support tests ('+_s.html5Test+'): '+tests.join(', ')+' --',1);
5150
5217
  }
5151
5218
 
5219
+ // </d>
5220
+
5152
5221
  };
5153
5222
 
5154
5223
  _initComplete = function(bNoDisable) {
@@ -5177,7 +5246,7 @@ function SoundManager(smURL, smID) {
5177
5246
  }
5178
5247
  }
5179
5248
 
5180
- _s._wD('-- SoundManager 2 ' + (_disabled?'failed to load':'loaded') + ' (' + (_disabled?'security/load error':'OK') + ') --', 1);
5249
+ _s._wD('-- SoundManager 2 ' + (_disabled?'failed to load':'loaded') + ' (' + (_disabled?'Flash security/load error':'OK') + ') --', 1);
5181
5250
 
5182
5251
  if (_disabled || bNoDisable) {
5183
5252
  if (_s.useFlashBlock && _s.oMC) {
@@ -5384,7 +5453,7 @@ function SoundManager(smURL, smID) {
5384
5453
  _showSupport();
5385
5454
 
5386
5455
  if (!_hasFlash && _needsFlash) {
5387
- _s._wD('SoundManager: Fatal error: Flash is needed to play some required formats, but is not available.');
5456
+ _wDS('needFlash');
5388
5457
  // TODO: Fatal here vs. timeout approach, etc.
5389
5458
  // hack: fail sooner.
5390
5459
  _s.setup({
@@ -5442,11 +5511,6 @@ function SoundManager(smURL, smID) {
5442
5511
 
5443
5512
  }
5444
5513
 
5445
- if (_doc.readyState === 'complete') {
5446
- // DOMReady has already happened.
5447
- setTimeout(_domContentLoaded,100);
5448
- }
5449
-
5450
5514
  } // SoundManager()
5451
5515
 
5452
5516
  // SM2_DEFER details: http://www.schillmania.com/projects/soundmanager2/doc/getstarted/#lazy-loading
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: soundmanager-rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-07-25 00:00:00.000000000 Z
12
+ date: 2012-10-23 00:00:00.000000000 Z
13
13
  dependencies: []
14
14
  description: SoundManager2 JavaScript Library for Rails >= 3.1
15
15
  email:
@@ -61,3 +61,4 @@ signing_key:
61
61
  specification_version: 3
62
62
  summary: Wraps SoundManager2 by Scott Schiller in a gem for use with Ruby on Rails
63
63
  test_files: []
64
+ has_rdoc: