soundmanager2-rails 2.97.20130324 → 2.97.20130512
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +6 -14
- data/Gemfile.lock +37 -5
- data/README.md +11 -1
- data/VERSION +1 -1
- data/soundmanager2-rails.gemspec +3 -3
- data/vendor/assets/javascripts/soundmanager2-jsmin.js +97 -94
- data/vendor/assets/javascripts/soundmanager2-nodebug-jsmin.js +70 -68
- data/vendor/assets/javascripts/soundmanager2-nodebug.js +154 -74
- data/vendor/assets/javascripts/soundmanager2.js +329 -106
- data/vendor/assets/javascripts/soundmanager2.swf +0 -0
- data/vendor/assets/javascripts/soundmanager2_debug.swf +0 -0
- data/vendor/assets/javascripts/soundmanager2_flash9.swf +0 -0
- data/vendor/assets/javascripts/soundmanager2_flash9_debug.swf +0 -0
- metadata +10 -10
@@ -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.
|
11
|
+
* V2.97a.20130512
|
12
12
|
*/
|
13
13
|
|
14
14
|
/*global window, SM2_DEFER, sm2Debugger, console, document, navigator, setTimeout, setInterval, clearInterval, Audio, opera */
|
@@ -37,7 +37,8 @@ function SoundManager(smURL, smID) {
|
|
37
37
|
'useHTML5Audio': true,
|
38
38
|
'html5Test': /^(probably|maybe)$/i,
|
39
39
|
'preferFlash': true,
|
40
|
-
'noSWFCache': false
|
40
|
+
'noSWFCache': false,
|
41
|
+
'idPrefix': 'sound'
|
41
42
|
};
|
42
43
|
this.defaultOptions = {
|
43
44
|
'autoLoad': false,
|
@@ -106,7 +107,7 @@ function SoundManager(smURL, smID) {
|
|
106
107
|
this.id = (smID || 'sm2movie');
|
107
108
|
this.debugID = 'soundmanager-debug';
|
108
109
|
this.debugURLParam = /([#?&])debug=1/i;
|
109
|
-
this.versionNumber = 'V2.97a.
|
110
|
+
this.versionNumber = 'V2.97a.20130512';
|
110
111
|
this.version = null;
|
111
112
|
this.movieURL = null;
|
112
113
|
this.altURL = null;
|
@@ -139,11 +140,11 @@ function SoundManager(smURL, smID) {
|
|
139
140
|
this.ignoreFlash = false;
|
140
141
|
var SMSound,
|
141
142
|
sm2 = this, globalHTML5Audio = null, flash = null, sm = 'soundManager', smc = sm + ': ', h5 = 'HTML5::', id, ua = navigator.userAgent, wl = window.location.href.toString(), doc = document, doNothing, setProperties, init, fV, on_queue = [], debugOpen = true, debugTS, didAppend = false, appendSuccess = false, didInit = false, disabled = false, windowLoaded = false, _wDS, wdCount = 0, initComplete, mixin, assign, extraOptions, addOnEvent, processOnEvents, initUserOnload, delayWaitForEI, waitForEI, setVersionInfo, handleFocus, strings, initMovie, preInit, domContentLoaded, winOnLoad, didDCLoaded, getDocument, createMovie, catchError, setPolling, initDebug, debugLevels = ['log', 'info', 'warn', 'error'], defaultFlashVersion = 8, disableObject, failSafely, normalizeMovieURL, oRemoved = null, oRemovedHTML = null, str, flashBlockHandler, getSWFCSS, swfCSS, toggleDebug, loopFix, policyFix, complain, idCheck, waitingForEI = false, initPending = false, startTimer, stopTimer, timerExecute, h5TimerCount = 0, h5IntervalTimer = null, parseURL, messages = [],
|
142
|
-
needsFlash = null, featureCheck, html5OK, html5CanPlay, html5Ext, html5Unload, domContentLoadedIE, testHTML5, event, slice = Array.prototype.slice, useGlobalHTML5Audio = false, lastGlobalHTML5URL, hasFlash, detectFlash, badSafariFix, html5_events, showSupport, flushMessages, wrapCallback,
|
143
|
-
is_iDevice = ua.match(/(ipad|iphone|ipod)/i), isAndroid = ua.match(/android/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)),
|
143
|
+
canIgnoreFlash, needsFlash = null, featureCheck, html5OK, html5CanPlay, html5Ext, html5Unload, domContentLoadedIE, testHTML5, event, slice = Array.prototype.slice, useGlobalHTML5Audio = false, lastGlobalHTML5URL, hasFlash, detectFlash, badSafariFix, html5_events, showSupport, flushMessages, wrapCallback, idCounter = 0,
|
144
|
+
is_iDevice = ua.match(/(ipad|iphone|ipod)/i), isAndroid = ua.match(/android/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)), isFirefox = (ua.match(/firefox/i)),
|
144
145
|
mobileHTML5 = (ua.match(/(mobile|pre\/|xoom)/i) || is_iDevice || isAndroid),
|
145
146
|
isBadSafari = (!wl.match(/usehtml5audio/i) && !wl.match(/sm2\-ignorebadua/i) && isSafari && !ua.match(/silk/i) && ua.match(/OS X 10_6_([3-7])/i)),
|
146
|
-
hasConsole = (window.console !== _undefined && console.log !== _undefined), isFocused = (doc.hasFocus !== _undefined?doc.hasFocus():null), tryInitOnFocus = (isSafari && (doc.hasFocus === _undefined || !doc.hasFocus())), okToDisable = !tryInitOnFocus, flashMIME = /(mp3|mp4|mpa|m4a|m4b)/i,
|
147
|
+
hasConsole = (window.console !== _undefined && console.log !== _undefined), isFocused = (doc.hasFocus !== _undefined?doc.hasFocus():null), tryInitOnFocus = (isSafari && (doc.hasFocus === _undefined || !doc.hasFocus())), okToDisable = !tryInitOnFocus, flashMIME = /(mp3|mp4|mpa|m4a|m4b)/i, msecScale = 1000,
|
147
148
|
emptyURL = 'about:blank',
|
148
149
|
overHTTP = (doc.location?doc.location.protocol.match(/http/i):null),
|
149
150
|
http = (!overHTTP ? 'http:/'+'/' : ''),
|
@@ -173,19 +174,20 @@ function SoundManager(smURL, smID) {
|
|
173
174
|
this.setup = function(options) {
|
174
175
|
var noURL = (!sm2.url);
|
175
176
|
if (options !== _undefined && didInit && needsFlash && sm2.ok() && (options.flashVersion !== _undefined || options.url !== _undefined || options.html5Test !== _undefined)) {
|
176
|
-
complain(str('setupLate'));
|
177
177
|
}
|
178
178
|
assign(options);
|
179
|
-
if (
|
180
|
-
|
181
|
-
|
182
|
-
|
183
|
-
|
179
|
+
if (options) {
|
180
|
+
if (noURL && didDCLoaded && options.url !== _undefined) {
|
181
|
+
sm2.beginDelayedInit();
|
182
|
+
}
|
183
|
+
if (!didDCLoaded && options.url !== _undefined && doc.readyState === 'complete') {
|
184
|
+
setTimeout(domContentLoaded, 1);
|
185
|
+
}
|
184
186
|
}
|
185
187
|
return sm2;
|
186
188
|
};
|
187
189
|
this.ok = function() {
|
188
|
-
return (needsFlash?(didInit && !disabled):(sm2.useHTML5Audio && sm2.hasHTML5));
|
190
|
+
return (needsFlash ? (didInit && !disabled) : (sm2.useHTML5Audio && sm2.hasHTML5));
|
189
191
|
};
|
190
192
|
this.supported = this.ok;
|
191
193
|
this.getMovie = function(smID) {
|
@@ -194,7 +196,6 @@ function SoundManager(smURL, smID) {
|
|
194
196
|
this.createSound = function(oOptions, _url) {
|
195
197
|
var cs, cs_string, options, oSound = null;
|
196
198
|
if (!didInit || !sm2.ok()) {
|
197
|
-
complain(cs_string);
|
198
199
|
return false;
|
199
200
|
}
|
200
201
|
if (_url !== _undefined) {
|
@@ -205,6 +206,9 @@ function SoundManager(smURL, smID) {
|
|
205
206
|
}
|
206
207
|
options = mixin(oOptions);
|
207
208
|
options.url = parseURL(options.url);
|
209
|
+
if (options.id === undefined) {
|
210
|
+
options.id = sm2.setupOptions.idPrefix + (idCounter++);
|
211
|
+
}
|
208
212
|
if (idCheck(options.id, true)) {
|
209
213
|
return sm2.sounds[options.id];
|
210
214
|
}
|
@@ -218,9 +222,15 @@ function SoundManager(smURL, smID) {
|
|
218
222
|
oSound = make();
|
219
223
|
oSound._setup_html5(options);
|
220
224
|
} else {
|
225
|
+
if (sm2.html5Only) {
|
226
|
+
return make();
|
227
|
+
}
|
228
|
+
if (sm2.html5.usingFlash && options.url && options.url.match(/data\:/i)) {
|
229
|
+
return make();
|
230
|
+
}
|
221
231
|
if (fV > 8) {
|
222
232
|
if (options.isMovieStar === null) {
|
223
|
-
options.isMovieStar = !!(options.serverURL || (options.type ? options.type.match(netStreamMimeTypes) : false) || options.url.match(netStreamPattern));
|
233
|
+
options.isMovieStar = !!(options.serverURL || (options.type ? options.type.match(netStreamMimeTypes) : false) || (options.url && options.url.match(netStreamPattern)));
|
224
234
|
}
|
225
235
|
}
|
226
236
|
options = policyFix(options, cs);
|
@@ -292,13 +302,16 @@ function SoundManager(smURL, smID) {
|
|
292
302
|
return sm2.sounds[sID].clearOnPosition(nPosition, oMethod);
|
293
303
|
};
|
294
304
|
this.play = function(sID, oOptions) {
|
295
|
-
var result =
|
305
|
+
var result = null,
|
306
|
+
overloaded = (oOptions && !(oOptions instanceof Object));
|
296
307
|
if (!didInit || !sm2.ok()) {
|
297
|
-
|
298
|
-
return result;
|
308
|
+
return false;
|
299
309
|
}
|
300
|
-
if (!idCheck(sID)) {
|
301
|
-
if (!
|
310
|
+
if (!idCheck(sID, overloaded)) {
|
311
|
+
if (!overloaded) {
|
312
|
+
return false;
|
313
|
+
}
|
314
|
+
if (overloaded) {
|
302
315
|
oOptions = {
|
303
316
|
url: oOptions
|
304
317
|
};
|
@@ -307,9 +320,15 @@ function SoundManager(smURL, smID) {
|
|
307
320
|
oOptions.id = sID;
|
308
321
|
result = sm2.createSound(oOptions).play();
|
309
322
|
}
|
310
|
-
|
323
|
+
} else if (overloaded) {
|
324
|
+
oOptions = {
|
325
|
+
url: oOptions
|
326
|
+
};
|
327
|
+
}
|
328
|
+
if (result === null) {
|
329
|
+
result = sm2.sounds[sID].play(oOptions);
|
311
330
|
}
|
312
|
-
return
|
331
|
+
return result;
|
313
332
|
};
|
314
333
|
this.start = this.play;
|
315
334
|
this.setPosition = function(sID, nMsecOffset) {
|
@@ -475,7 +494,7 @@ function SoundManager(smURL, smID) {
|
|
475
494
|
};
|
476
495
|
this.getSoundById = function(sID, _suppressDebug) {
|
477
496
|
if (!sID) {
|
478
|
-
|
497
|
+
return null;
|
479
498
|
}
|
480
499
|
var result = sm2.sounds[sID];
|
481
500
|
return result;
|
@@ -534,6 +553,7 @@ function SoundManager(smURL, smID) {
|
|
534
553
|
sm2.enabled = didDCLoaded = didInit = waitingForEI = initPending = didAppend = appendSuccess = disabled = useGlobalHTML5Audio = sm2.swfLoaded = false;
|
535
554
|
sm2.soundIDs = [];
|
536
555
|
sm2.sounds = {};
|
556
|
+
idCounter = 0;
|
537
557
|
if (!resetEvents) {
|
538
558
|
for (i in on_queue) {
|
539
559
|
if (on_queue.hasOwnProperty(i)) {
|
@@ -583,7 +603,7 @@ function SoundManager(smURL, smID) {
|
|
583
603
|
sm2.disable(true);
|
584
604
|
};
|
585
605
|
SMSound = function(oOptions) {
|
586
|
-
var s = this, resetProperties, add_html5_events, remove_html5_events, stop_html5_timer, start_html5_timer, attachOnPosition, onplay_called = false, onPositionItems = [], onPositionFired = 0, detachOnPosition, applyFromTo, lastURL = null, lastHTML5State;
|
606
|
+
var s = this, resetProperties, add_html5_events, remove_html5_events, stop_html5_timer, start_html5_timer, attachOnPosition, onplay_called = false, onPositionItems = [], onPositionFired = 0, detachOnPosition, applyFromTo, lastURL = null, lastHTML5State, urlOmitted;
|
587
607
|
lastHTML5State = {
|
588
608
|
duration: null,
|
589
609
|
time: null
|
@@ -598,6 +618,7 @@ function SoundManager(smURL, smID) {
|
|
598
618
|
this.volume = this.options.volume;
|
599
619
|
this.isHTML5 = false;
|
600
620
|
this._a = null;
|
621
|
+
urlOmitted = (this.url ? false : true);
|
601
622
|
this.id3 = {};
|
602
623
|
this._debug = function() {
|
603
624
|
};
|
@@ -619,6 +640,9 @@ function SoundManager(smURL, smID) {
|
|
619
640
|
s._iO.url = parseURL(s._iO.url);
|
620
641
|
s.instanceOptions = s._iO;
|
621
642
|
instanceOptions = s._iO;
|
643
|
+
if (!instanceOptions.url && !s.url) {
|
644
|
+
return s;
|
645
|
+
}
|
622
646
|
if (instanceOptions.url === s.url && s.readyState !== 0 && s.readyState !== 2) {
|
623
647
|
if (s.readyState === 3 && instanceOptions.onload) {
|
624
648
|
wrapCallback(s, function() {
|
@@ -648,6 +672,12 @@ function SoundManager(smURL, smID) {
|
|
648
672
|
} else {
|
649
673
|
}
|
650
674
|
} else {
|
675
|
+
if (sm2.html5Only) {
|
676
|
+
return s;
|
677
|
+
}
|
678
|
+
if (s._iO.url && s._iO.url.match(/data\:/i)) {
|
679
|
+
return s;
|
680
|
+
}
|
651
681
|
try {
|
652
682
|
s.isHTML5 = false;
|
653
683
|
s._iO = policyFix(loopFix(instanceOptions));
|
@@ -676,8 +706,7 @@ function SoundManager(smURL, smID) {
|
|
676
706
|
stop_html5_timer();
|
677
707
|
if (s._a) {
|
678
708
|
s._a.pause();
|
679
|
-
html5Unload(s._a
|
680
|
-
lastURL = emptyURL;
|
709
|
+
lastURL = html5Unload(s._a);
|
681
710
|
}
|
682
711
|
}
|
683
712
|
resetProperties();
|
@@ -705,7 +734,9 @@ function SoundManager(smURL, smID) {
|
|
705
734
|
}
|
706
735
|
};
|
707
736
|
this.play = function(oOptions, _updatePlayState) {
|
708
|
-
var fN, allowMulti, a, onready,
|
737
|
+
var fN, allowMulti, a, onready,
|
738
|
+
audioClone, onended, oncanplay,
|
739
|
+
startOK = true,
|
709
740
|
exit = null;
|
710
741
|
_updatePlayState = (_updatePlayState === _undefined ? true : _updatePlayState);
|
711
742
|
if (!oOptions) {
|
@@ -718,7 +749,7 @@ function SoundManager(smURL, smID) {
|
|
718
749
|
s._iO = mixin(oOptions, s._iO);
|
719
750
|
s._iO.url = parseURL(s._iO.url);
|
720
751
|
s.instanceOptions = s._iO;
|
721
|
-
if (s._iO.serverURL && !s.connected) {
|
752
|
+
if (!s.isHTML5 && s._iO.serverURL && !s.connected) {
|
722
753
|
if (!s.getAutoPlay()) {
|
723
754
|
s.setAutoPlay(true);
|
724
755
|
}
|
@@ -731,6 +762,9 @@ function SoundManager(smURL, smID) {
|
|
731
762
|
if (s.playState === 1 && !s.paused) {
|
732
763
|
allowMulti = s._iO.multiShot;
|
733
764
|
if (!allowMulti) {
|
765
|
+
if (s.isHTML5) {
|
766
|
+
s.setPosition(s._iO.position);
|
767
|
+
}
|
734
768
|
exit = s;
|
735
769
|
} else {
|
736
770
|
}
|
@@ -739,15 +773,21 @@ function SoundManager(smURL, smID) {
|
|
739
773
|
return exit;
|
740
774
|
}
|
741
775
|
if (oOptions.url && oOptions.url !== s.url) {
|
742
|
-
s.
|
776
|
+
if (!s.readyState && !s.isHTML5 && fV === 8 && urlOmitted) {
|
777
|
+
urlOmitted = false;
|
778
|
+
} else {
|
779
|
+
s.load(s._iO);
|
780
|
+
}
|
743
781
|
}
|
744
782
|
if (!s.loaded) {
|
745
783
|
if (s.readyState === 0) {
|
746
|
-
if (!s.isHTML5) {
|
784
|
+
if (!s.isHTML5 && !sm2.html5Only) {
|
747
785
|
s._iO.autoPlay = true;
|
748
786
|
s.load(s._iO);
|
749
|
-
} else {
|
787
|
+
} else if (s.isHTML5) {
|
750
788
|
s.load(s._iO);
|
789
|
+
} else {
|
790
|
+
exit = s;
|
751
791
|
}
|
752
792
|
s.instanceOptions = s._iO;
|
753
793
|
} else if (s.readyState === 2) {
|
@@ -787,7 +827,7 @@ function SoundManager(smURL, smID) {
|
|
787
827
|
}
|
788
828
|
s._iO = applyFromTo();
|
789
829
|
}
|
790
|
-
if (!s.instanceCount || s._iO.multiShotEvents || (!s.isHTML5 && fV > 8 && !s.getAutoPlay())) {
|
830
|
+
if (!s.instanceCount || s._iO.multiShotEvents || (s.isHTML5 && s._iO.multiShot && !useGlobalHTML5Audio) || (!s.isHTML5 && fV > 8 && !s.getAutoPlay())) {
|
791
831
|
s.instanceCount++;
|
792
832
|
}
|
793
833
|
if (s._iO.onposition && s.playState === 0) {
|
@@ -806,17 +846,41 @@ function SoundManager(smURL, smID) {
|
|
806
846
|
s.setVolume(s._iO.volume, true);
|
807
847
|
s.setPan(s._iO.pan, true);
|
808
848
|
if (!s.isHTML5) {
|
809
|
-
startOK = flash._start(s.id, s._iO.loops || 1, (fV === 9 ? s.position : s.position /
|
849
|
+
startOK = flash._start(s.id, s._iO.loops || 1, (fV === 9 ? s.position : s.position / msecScale), s._iO.multiShot || false);
|
810
850
|
if (fV === 9 && !startOK) {
|
811
851
|
if (s._iO.onplayerror) {
|
812
852
|
s._iO.onplayerror.apply(s);
|
813
853
|
}
|
814
854
|
}
|
815
855
|
} else {
|
816
|
-
|
817
|
-
|
818
|
-
|
819
|
-
|
856
|
+
if (s.instanceCount < 2) {
|
857
|
+
start_html5_timer();
|
858
|
+
a = s._setup_html5();
|
859
|
+
s.setPosition(s._iO.position);
|
860
|
+
a.play();
|
861
|
+
} else {
|
862
|
+
audioClone = new Audio(s._iO.url);
|
863
|
+
onended = function() {
|
864
|
+
event.remove(audioClone, 'onended', onended);
|
865
|
+
s._onfinish(s);
|
866
|
+
html5Unload(audioClone);
|
867
|
+
audioClone = null;
|
868
|
+
};
|
869
|
+
oncanplay = function() {
|
870
|
+
event.remove(audioClone, 'canplay', oncanplay);
|
871
|
+
try {
|
872
|
+
audioClone.currentTime = s._iO.position/msecScale;
|
873
|
+
} catch(err) {
|
874
|
+
}
|
875
|
+
audioClone.play();
|
876
|
+
};
|
877
|
+
event.add(audioClone, 'ended', onended);
|
878
|
+
if (s._iO.position) {
|
879
|
+
event.add(audioClone, 'canplay', oncanplay);
|
880
|
+
} else {
|
881
|
+
audioClone.play();
|
882
|
+
}
|
883
|
+
}
|
820
884
|
}
|
821
885
|
}
|
822
886
|
return s;
|
@@ -878,12 +942,10 @@ function SoundManager(smURL, smID) {
|
|
878
942
|
if (nMsecOffset === _undefined) {
|
879
943
|
nMsecOffset = 0;
|
880
944
|
}
|
881
|
-
var
|
882
|
-
position, position1K,
|
945
|
+
var position, position1K,
|
883
946
|
offset = (s.isHTML5 ? Math.max(nMsecOffset, 0) : Math.min(s.duration || s._iO.duration, Math.max(nMsecOffset, 0)));
|
884
|
-
original_pos = s.position;
|
885
947
|
s.position = offset;
|
886
|
-
position1K = s.position/
|
948
|
+
position1K = s.position/msecScale;
|
887
949
|
s._resetOnPosition(s.position);
|
888
950
|
s._iO.position = offset;
|
889
951
|
if (!s.isHTML5) {
|
@@ -902,10 +964,9 @@ function SoundManager(smURL, smID) {
|
|
902
964
|
} catch(e) {
|
903
965
|
}
|
904
966
|
}
|
905
|
-
} else {
|
967
|
+
} else if (position1K) {
|
968
|
+
return s;
|
906
969
|
}
|
907
|
-
}
|
908
|
-
if (s.isHTML5) {
|
909
970
|
if (s.paused) {
|
910
971
|
s._onTimer(true);
|
911
972
|
}
|
@@ -957,7 +1018,7 @@ function SoundManager(smURL, smID) {
|
|
957
1018
|
this.togglePause = function() {
|
958
1019
|
if (s.playState === 0) {
|
959
1020
|
s.play({
|
960
|
-
position: (fV === 9 && !s.isHTML5 ? s.position : s.position /
|
1021
|
+
position: (fV === 9 && !s.isHTML5 ? s.position : s.position / msecScale)
|
961
1022
|
});
|
962
1023
|
return s;
|
963
1024
|
}
|
@@ -1185,7 +1246,7 @@ function SoundManager(smURL, smID) {
|
|
1185
1246
|
isNew = true;
|
1186
1247
|
}
|
1187
1248
|
s.durationEstimate = s.duration;
|
1188
|
-
time = (s._a.currentTime *
|
1249
|
+
time = (s._a.currentTime * msecScale || 0);
|
1189
1250
|
if (time !== lastHTML5State.time) {
|
1190
1251
|
lastHTML5State.time = time;
|
1191
1252
|
isNew = true;
|
@@ -1199,7 +1260,7 @@ function SoundManager(smURL, smID) {
|
|
1199
1260
|
};
|
1200
1261
|
this._get_html5_duration = function() {
|
1201
1262
|
var instanceOptions = s._iO,
|
1202
|
-
d = (s._a && s._a.duration ? s._a.duration*
|
1263
|
+
d = (s._a && s._a.duration ? s._a.duration*msecScale : (instanceOptions && instanceOptions.duration ? instanceOptions.duration : null)),
|
1203
1264
|
result = (d && !isNaN(d) && d !== Infinity ? d : null);
|
1204
1265
|
return result;
|
1205
1266
|
};
|
@@ -1523,7 +1584,6 @@ function SoundManager(smURL, smID) {
|
|
1523
1584
|
sm2.setupOptions[i] = o[i];
|
1524
1585
|
sm2[i] = o[i];
|
1525
1586
|
} else if (bonusOptions[i] === _undefined) {
|
1526
|
-
complain(str((sm2[i] === _undefined ? 'setupUndef' : 'setupError'), i), 2);
|
1527
1587
|
result = false;
|
1528
1588
|
} else {
|
1529
1589
|
if (sm2[i] instanceof Function) {
|
@@ -1534,7 +1594,6 @@ function SoundManager(smURL, smID) {
|
|
1534
1594
|
}
|
1535
1595
|
} else {
|
1536
1596
|
if (bonusOptions[i] === _undefined) {
|
1537
|
-
complain(str((sm2[i] === _undefined ? 'setupUndef' : 'setupError'), i), 2);
|
1538
1597
|
result = false;
|
1539
1598
|
} else {
|
1540
1599
|
return assign(o[i], i);
|
@@ -1609,7 +1668,7 @@ function SoundManager(smURL, smID) {
|
|
1609
1668
|
}
|
1610
1669
|
s._html5_canplay = true;
|
1611
1670
|
s._onbufferchange(0);
|
1612
|
-
position1K = (s._iO.position !== _undefined && !isNaN(s._iO.position)?s._iO.position/
|
1671
|
+
position1K = (s._iO.position !== _undefined && !isNaN(s._iO.position)?s._iO.position/msecScale:null);
|
1613
1672
|
if (s.position && this.currentTime !== position1K) {
|
1614
1673
|
try {
|
1615
1674
|
this.currentTime = position1K;
|
@@ -1658,18 +1717,17 @@ function SoundManager(smURL, smID) {
|
|
1658
1717
|
isProgress = (e.type === 'progress'),
|
1659
1718
|
ranges = e.target.buffered,
|
1660
1719
|
loaded = (e.loaded||0),
|
1661
|
-
total = (e.total||1)
|
1662
|
-
scale = 1000;
|
1720
|
+
total = (e.total||1);
|
1663
1721
|
s.buffered = [];
|
1664
1722
|
if (ranges && ranges.length) {
|
1665
1723
|
for (i=0, j=ranges.length; i<j; i++) {
|
1666
1724
|
s.buffered.push({
|
1667
|
-
'start': ranges.start(i) *
|
1668
|
-
'end': ranges.end(i) *
|
1725
|
+
'start': ranges.start(i) * msecScale,
|
1726
|
+
'end': ranges.end(i) * msecScale
|
1669
1727
|
});
|
1670
1728
|
}
|
1671
|
-
buffered = (ranges.end(0) - ranges.start(0)) *
|
1672
|
-
loaded = buffered/(e.target.duration*
|
1729
|
+
buffered = (ranges.end(0) - ranges.start(0)) * msecScale;
|
1730
|
+
loaded = Math.min(1, buffered/(e.target.duration*msecScale));
|
1673
1731
|
}
|
1674
1732
|
if (!isNaN(loaded)) {
|
1675
1733
|
s._onbufferchange(0);
|
@@ -1698,21 +1756,28 @@ function SoundManager(smURL, smID) {
|
|
1698
1756
|
};
|
1699
1757
|
html5OK = function(iO) {
|
1700
1758
|
var result;
|
1701
|
-
if (iO
|
1759
|
+
if (!iO || (!iO.type && !iO.url && !iO.serverURL)) {
|
1760
|
+
result = false;
|
1761
|
+
} else if (iO.serverURL || (iO.type && preferFlashCheck(iO.type))) {
|
1702
1762
|
result = false;
|
1703
1763
|
} else {
|
1704
|
-
result = ((iO.type ? html5CanPlay({type:iO.type}) : html5CanPlay({url:iO.url}) || sm2.html5Only));
|
1764
|
+
result = ((iO.type ? html5CanPlay({type:iO.type}) : html5CanPlay({url:iO.url}) || sm2.html5Only || iO.url.match(/data\:/i)));
|
1705
1765
|
}
|
1706
1766
|
return result;
|
1707
1767
|
};
|
1708
|
-
html5Unload = function(oAudio
|
1768
|
+
html5Unload = function(oAudio) {
|
1769
|
+
var url;
|
1709
1770
|
if (oAudio) {
|
1771
|
+
url = (isSafari && !is_iDevice ? null : (isFirefox ? emptyURL : null));
|
1710
1772
|
oAudio.src = url;
|
1711
|
-
oAudio.
|
1773
|
+
if (oAudio._called_unload !== undefined) {
|
1774
|
+
oAudio._called_load = false;
|
1775
|
+
}
|
1712
1776
|
}
|
1713
1777
|
if (useGlobalHTML5Audio) {
|
1714
1778
|
lastGlobalHTML5URL = null;
|
1715
1779
|
}
|
1780
|
+
return url;
|
1716
1781
|
};
|
1717
1782
|
html5CanPlay = function(o) {
|
1718
1783
|
if (!sm2.useHTML5Audio || !sm2.hasHTML5) {
|
@@ -1763,6 +1828,8 @@ function SoundManager(smURL, smID) {
|
|
1763
1828
|
};
|
1764
1829
|
testHTML5 = function() {
|
1765
1830
|
if (!sm2.useHTML5Audio || !sm2.hasHTML5) {
|
1831
|
+
sm2.html5.usingFlash = true;
|
1832
|
+
needsFlash = true;
|
1766
1833
|
return false;
|
1767
1834
|
}
|
1768
1835
|
var a = (Audio !== _undefined ? (isOpera && opera.version() < 10 ? new Audio(null) : new Audio()) : null),
|
@@ -1813,6 +1880,8 @@ function SoundManager(smURL, smID) {
|
|
1813
1880
|
}
|
1814
1881
|
support.canPlayType = (a?cp:null);
|
1815
1882
|
sm2.html5 = mixin(sm2.html5, support);
|
1883
|
+
sm2.html5.usingFlash = featureCheck();
|
1884
|
+
needsFlash = sm2.html5.usingFlash;
|
1816
1885
|
return true;
|
1817
1886
|
};
|
1818
1887
|
strings = {
|
@@ -1901,9 +1970,6 @@ function SoundManager(smURL, smID) {
|
|
1901
1970
|
flash._setPolling(bPolling, bHighPerformance);
|
1902
1971
|
};
|
1903
1972
|
initDebug = function() {
|
1904
|
-
if (sm2.debugURLParam.test(wl)) {
|
1905
|
-
sm2.debugMode = true;
|
1906
|
-
}
|
1907
1973
|
};
|
1908
1974
|
idCheck = this.getSoundById;
|
1909
1975
|
getSWFCSS = function() {
|
@@ -2020,6 +2086,7 @@ function SoundManager(smURL, smID) {
|
|
2020
2086
|
try {
|
2021
2087
|
obj = new AX('ShockwaveFlash.ShockwaveFlash');
|
2022
2088
|
} catch(e) {
|
2089
|
+
obj = null;
|
2023
2090
|
}
|
2024
2091
|
hasPlugin = (!!obj);
|
2025
2092
|
obj = null;
|
@@ -2028,9 +2095,8 @@ function SoundManager(smURL, smID) {
|
|
2028
2095
|
return hasPlugin;
|
2029
2096
|
};
|
2030
2097
|
featureCheck = function() {
|
2031
|
-
var
|
2098
|
+
var flashNeeded,
|
2032
2099
|
item,
|
2033
|
-
result = true,
|
2034
2100
|
formats = sm2.audioFormats,
|
2035
2101
|
isSpecial = (is_iDevice && !!(ua.match(/os (1|2|3_0|3_1)/i)));
|
2036
2102
|
if (isSpecial) {
|
@@ -2039,7 +2105,6 @@ function SoundManager(smURL, smID) {
|
|
2039
2105
|
if (sm2.oMC) {
|
2040
2106
|
sm2.oMC.style.display = 'none';
|
2041
2107
|
}
|
2042
|
-
result = false;
|
2043
2108
|
} else {
|
2044
2109
|
if (sm2.useHTML5Audio) {
|
2045
2110
|
if (!sm2.html5 || !sm2.html5.canPlayType) {
|
@@ -2048,18 +2113,25 @@ function SoundManager(smURL, smID) {
|
|
2048
2113
|
}
|
2049
2114
|
}
|
2050
2115
|
if (sm2.useHTML5Audio && sm2.hasHTML5) {
|
2116
|
+
canIgnoreFlash = true;
|
2051
2117
|
for (item in formats) {
|
2052
2118
|
if (formats.hasOwnProperty(item)) {
|
2053
|
-
if (
|
2054
|
-
|
2119
|
+
if (formats[item].required) {
|
2120
|
+
if (!sm2.html5.canPlayType(formats[item].type)) {
|
2121
|
+
canIgnoreFlash = false;
|
2122
|
+
flashNeeded = true;
|
2123
|
+
} else if (sm2.preferFlash && (sm2.flash[item] || sm2.flash[formats[item].type])) {
|
2124
|
+
flashNeeded = true;
|
2125
|
+
}
|
2055
2126
|
}
|
2056
2127
|
}
|
2057
2128
|
}
|
2058
2129
|
}
|
2059
2130
|
if (sm2.ignoreFlash) {
|
2060
|
-
|
2131
|
+
flashNeeded = false;
|
2132
|
+
canIgnoreFlash = true;
|
2061
2133
|
}
|
2062
|
-
sm2.html5Only = (sm2.hasHTML5 && sm2.useHTML5Audio && !
|
2134
|
+
sm2.html5Only = (sm2.hasHTML5 && sm2.useHTML5Audio && !flashNeeded);
|
2063
2135
|
return (!sm2.html5Only);
|
2064
2136
|
};
|
2065
2137
|
parseURL = function(url) {
|
@@ -2146,7 +2218,7 @@ function SoundManager(smURL, smID) {
|
|
2146
2218
|
};
|
2147
2219
|
this._setSandboxType = function(sandboxType) {
|
2148
2220
|
};
|
2149
|
-
this._externalInterfaceOK = function(
|
2221
|
+
this._externalInterfaceOK = function(swfVersion) {
|
2150
2222
|
if (sm2.swfLoaded) {
|
2151
2223
|
return false;
|
2152
2224
|
}
|
@@ -2375,7 +2447,17 @@ function SoundManager(smURL, smID) {
|
|
2375
2447
|
flashBlockHandler();
|
2376
2448
|
}
|
2377
2449
|
} else {
|
2378
|
-
|
2450
|
+
if (!sm2.useFlashBlock && canIgnoreFlash) {
|
2451
|
+
window.setTimeout(function() {
|
2452
|
+
sm2.setup({
|
2453
|
+
preferFlash: false
|
2454
|
+
}).reboot();
|
2455
|
+
sm2.didFlashBlock = true;
|
2456
|
+
sm2.beginDelayedInit();
|
2457
|
+
}, 1);
|
2458
|
+
} else {
|
2459
|
+
processOnEvents({type:'ontimeout', ignoreInit: true});
|
2460
|
+
}
|
2379
2461
|
}
|
2380
2462
|
} else {
|
2381
2463
|
if (sm2.flashLoadTimeout === 0) {
|
@@ -2504,8 +2586,6 @@ function SoundManager(smURL, smID) {
|
|
2504
2586
|
});
|
2505
2587
|
}
|
2506
2588
|
testHTML5();
|
2507
|
-
sm2.html5.usingFlash = featureCheck();
|
2508
|
-
needsFlash = sm2.html5.usingFlash;
|
2509
2589
|
if (!hasFlash && needsFlash) {
|
2510
2590
|
messages.push(strings.needFlash);
|
2511
2591
|
sm2.setup({
|