soundmanager-rails 0.1.4 → 0.1.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +9 -0
- data/README.md +1 -1
- data/lib/soundmanager-rails/version.rb +1 -1
- data/vendor/assets/images/swf/soundmanager2.swf +0 -0
- data/vendor/assets/images/swf/soundmanager2_debug.swf +0 -0
- data/vendor/assets/images/swf/soundmanager2_flash9.swf +0 -0
- data/vendor/assets/images/swf/soundmanager2_flash9_debug.swf +0 -0
- data/vendor/assets/javascripts/soundmanager2-jsmin.js +98 -94
- data/vendor/assets/javascripts/soundmanager2-nodebug-jsmin.js +70 -67
- data/vendor/assets/javascripts/soundmanager2-nodebug.js +184 -87
- data/vendor/assets/javascripts/soundmanager2.js +383 -131
- metadata +4 -2
@@ -8,11 +8,11 @@
|
|
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 */
|
15
|
-
/*jslint regexp: true, sloppy: true, white: true, nomen: true, plusplus: true */
|
15
|
+
/*jslint regexp: true, sloppy: true, white: true, nomen: true, plusplus: true, todo: true */
|
16
16
|
|
17
17
|
(function(window, _undefined) {
|
18
18
|
"use strict";
|
@@ -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,
|
@@ -93,6 +94,10 @@ function SoundManager(smURL, smID) {
|
|
93
94
|
'type': ['audio/ogg; codecs=vorbis'],
|
94
95
|
'required': false
|
95
96
|
},
|
97
|
+
'opus': {
|
98
|
+
'type': ['audio/ogg; codecs=opus', 'audio/opus'],
|
99
|
+
'required': false
|
100
|
+
},
|
96
101
|
'wav': {
|
97
102
|
'type': ['audio/wav; codecs="1"', 'audio/wav', 'audio/wave', 'audio/x-wav'],
|
98
103
|
'required': false
|
@@ -102,7 +107,7 @@ function SoundManager(smURL, smID) {
|
|
102
107
|
this.id = (smID || 'sm2movie');
|
103
108
|
this.debugID = 'soundmanager-debug';
|
104
109
|
this.debugURLParam = /([#?&])debug=1/i;
|
105
|
-
this.versionNumber = 'V2.97a.
|
110
|
+
this.versionNumber = 'V2.97a.20130512';
|
106
111
|
this.version = null;
|
107
112
|
this.movieURL = null;
|
108
113
|
this.altURL = null;
|
@@ -135,11 +140,11 @@ function SoundManager(smURL, smID) {
|
|
135
140
|
this.ignoreFlash = false;
|
136
141
|
var SMSound,
|
137
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 = [],
|
138
|
-
needsFlash = null, featureCheck, html5OK, html5CanPlay, html5Ext, html5Unload, domContentLoadedIE, testHTML5, event, slice = Array.prototype.slice, useGlobalHTML5Audio = false, lastGlobalHTML5URL, hasFlash, detectFlash, badSafariFix, html5_events, showSupport, flushMessages,
|
139
|
-
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)),
|
140
145
|
mobileHTML5 = (ua.match(/(mobile|pre\/|xoom)/i) || is_iDevice || isAndroid),
|
141
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)),
|
142
|
-
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,
|
143
148
|
emptyURL = 'about:blank',
|
144
149
|
overHTTP = (doc.location?doc.location.protocol.match(/http/i):null),
|
145
150
|
http = (!overHTTP ? 'http:/'+'/' : ''),
|
@@ -169,19 +174,20 @@ function SoundManager(smURL, smID) {
|
|
169
174
|
this.setup = function(options) {
|
170
175
|
var noURL = (!sm2.url);
|
171
176
|
if (options !== _undefined && didInit && needsFlash && sm2.ok() && (options.flashVersion !== _undefined || options.url !== _undefined || options.html5Test !== _undefined)) {
|
172
|
-
complain(str('setupLate'));
|
173
177
|
}
|
174
178
|
assign(options);
|
175
|
-
if (
|
176
|
-
|
177
|
-
|
178
|
-
|
179
|
-
|
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
|
+
}
|
180
186
|
}
|
181
187
|
return sm2;
|
182
188
|
};
|
183
189
|
this.ok = function() {
|
184
|
-
return (needsFlash?(didInit && !disabled):(sm2.useHTML5Audio && sm2.hasHTML5));
|
190
|
+
return (needsFlash ? (didInit && !disabled) : (sm2.useHTML5Audio && sm2.hasHTML5));
|
185
191
|
};
|
186
192
|
this.supported = this.ok;
|
187
193
|
this.getMovie = function(smID) {
|
@@ -190,7 +196,6 @@ function SoundManager(smURL, smID) {
|
|
190
196
|
this.createSound = function(oOptions, _url) {
|
191
197
|
var cs, cs_string, options, oSound = null;
|
192
198
|
if (!didInit || !sm2.ok()) {
|
193
|
-
complain(cs_string);
|
194
199
|
return false;
|
195
200
|
}
|
196
201
|
if (_url !== _undefined) {
|
@@ -201,6 +206,9 @@ function SoundManager(smURL, smID) {
|
|
201
206
|
}
|
202
207
|
options = mixin(oOptions);
|
203
208
|
options.url = parseURL(options.url);
|
209
|
+
if (options.id === undefined) {
|
210
|
+
options.id = sm2.setupOptions.idPrefix + (idCounter++);
|
211
|
+
}
|
204
212
|
if (idCheck(options.id, true)) {
|
205
213
|
return sm2.sounds[options.id];
|
206
214
|
}
|
@@ -214,9 +222,15 @@ function SoundManager(smURL, smID) {
|
|
214
222
|
oSound = make();
|
215
223
|
oSound._setup_html5(options);
|
216
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
|
+
}
|
217
231
|
if (fV > 8) {
|
218
232
|
if (options.isMovieStar === null) {
|
219
|
-
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)));
|
220
234
|
}
|
221
235
|
}
|
222
236
|
options = policyFix(options, cs);
|
@@ -288,13 +302,16 @@ function SoundManager(smURL, smID) {
|
|
288
302
|
return sm2.sounds[sID].clearOnPosition(nPosition, oMethod);
|
289
303
|
};
|
290
304
|
this.play = function(sID, oOptions) {
|
291
|
-
var result =
|
305
|
+
var result = null,
|
306
|
+
overloaded = (oOptions && !(oOptions instanceof Object));
|
292
307
|
if (!didInit || !sm2.ok()) {
|
293
|
-
|
294
|
-
return result;
|
308
|
+
return false;
|
295
309
|
}
|
296
|
-
if (!idCheck(sID)) {
|
297
|
-
if (!
|
310
|
+
if (!idCheck(sID, overloaded)) {
|
311
|
+
if (!overloaded) {
|
312
|
+
return false;
|
313
|
+
}
|
314
|
+
if (overloaded) {
|
298
315
|
oOptions = {
|
299
316
|
url: oOptions
|
300
317
|
};
|
@@ -303,9 +320,15 @@ function SoundManager(smURL, smID) {
|
|
303
320
|
oOptions.id = sID;
|
304
321
|
result = sm2.createSound(oOptions).play();
|
305
322
|
}
|
306
|
-
|
323
|
+
} else if (overloaded) {
|
324
|
+
oOptions = {
|
325
|
+
url: oOptions
|
326
|
+
};
|
307
327
|
}
|
308
|
-
|
328
|
+
if (result === null) {
|
329
|
+
result = sm2.sounds[sID].play(oOptions);
|
330
|
+
}
|
331
|
+
return result;
|
309
332
|
};
|
310
333
|
this.start = this.play;
|
311
334
|
this.setPosition = function(sID, nMsecOffset) {
|
@@ -471,7 +494,7 @@ function SoundManager(smURL, smID) {
|
|
471
494
|
};
|
472
495
|
this.getSoundById = function(sID, _suppressDebug) {
|
473
496
|
if (!sID) {
|
474
|
-
|
497
|
+
return null;
|
475
498
|
}
|
476
499
|
var result = sm2.sounds[sID];
|
477
500
|
return result;
|
@@ -506,7 +529,7 @@ function SoundManager(smURL, smID) {
|
|
506
529
|
}
|
507
530
|
return result;
|
508
531
|
};
|
509
|
-
this._writeDebug = function(sText,
|
532
|
+
this._writeDebug = function(sText, sTypeOrObject) {
|
510
533
|
return true;
|
511
534
|
};
|
512
535
|
this._wD = this._writeDebug;
|
@@ -530,6 +553,7 @@ function SoundManager(smURL, smID) {
|
|
530
553
|
sm2.enabled = didDCLoaded = didInit = waitingForEI = initPending = didAppend = appendSuccess = disabled = useGlobalHTML5Audio = sm2.swfLoaded = false;
|
531
554
|
sm2.soundIDs = [];
|
532
555
|
sm2.sounds = {};
|
556
|
+
idCounter = 0;
|
533
557
|
if (!resetEvents) {
|
534
558
|
for (i in on_queue) {
|
535
559
|
if (on_queue.hasOwnProperty(i)) {
|
@@ -579,7 +603,7 @@ function SoundManager(smURL, smID) {
|
|
579
603
|
sm2.disable(true);
|
580
604
|
};
|
581
605
|
SMSound = function(oOptions) {
|
582
|
-
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;
|
583
607
|
lastHTML5State = {
|
584
608
|
duration: null,
|
585
609
|
time: null
|
@@ -594,6 +618,7 @@ function SoundManager(smURL, smID) {
|
|
594
618
|
this.volume = this.options.volume;
|
595
619
|
this.isHTML5 = false;
|
596
620
|
this._a = null;
|
621
|
+
urlOmitted = (this.url ? false : true);
|
597
622
|
this.id3 = {};
|
598
623
|
this._debug = function() {
|
599
624
|
};
|
@@ -615,9 +640,14 @@ function SoundManager(smURL, smID) {
|
|
615
640
|
s._iO.url = parseURL(s._iO.url);
|
616
641
|
s.instanceOptions = s._iO;
|
617
642
|
instanceOptions = s._iO;
|
643
|
+
if (!instanceOptions.url && !s.url) {
|
644
|
+
return s;
|
645
|
+
}
|
618
646
|
if (instanceOptions.url === s.url && s.readyState !== 0 && s.readyState !== 2) {
|
619
647
|
if (s.readyState === 3 && instanceOptions.onload) {
|
620
|
-
|
648
|
+
wrapCallback(s, function() {
|
649
|
+
instanceOptions.onload.apply(s, [(!!s.duration)]);
|
650
|
+
});
|
621
651
|
}
|
622
652
|
return s;
|
623
653
|
}
|
@@ -642,6 +672,12 @@ function SoundManager(smURL, smID) {
|
|
642
672
|
} else {
|
643
673
|
}
|
644
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
|
+
}
|
645
681
|
try {
|
646
682
|
s.isHTML5 = false;
|
647
683
|
s._iO = policyFix(loopFix(instanceOptions));
|
@@ -670,8 +706,7 @@ function SoundManager(smURL, smID) {
|
|
670
706
|
stop_html5_timer();
|
671
707
|
if (s._a) {
|
672
708
|
s._a.pause();
|
673
|
-
html5Unload(s._a
|
674
|
-
lastURL = emptyURL;
|
709
|
+
lastURL = html5Unload(s._a);
|
675
710
|
}
|
676
711
|
}
|
677
712
|
resetProperties();
|
@@ -699,7 +734,9 @@ function SoundManager(smURL, smID) {
|
|
699
734
|
}
|
700
735
|
};
|
701
736
|
this.play = function(oOptions, _updatePlayState) {
|
702
|
-
var fN, allowMulti, a, onready,
|
737
|
+
var fN, allowMulti, a, onready,
|
738
|
+
audioClone, onended, oncanplay,
|
739
|
+
startOK = true,
|
703
740
|
exit = null;
|
704
741
|
_updatePlayState = (_updatePlayState === _undefined ? true : _updatePlayState);
|
705
742
|
if (!oOptions) {
|
@@ -712,7 +749,7 @@ function SoundManager(smURL, smID) {
|
|
712
749
|
s._iO = mixin(oOptions, s._iO);
|
713
750
|
s._iO.url = parseURL(s._iO.url);
|
714
751
|
s.instanceOptions = s._iO;
|
715
|
-
if (s._iO.serverURL && !s.connected) {
|
752
|
+
if (!s.isHTML5 && s._iO.serverURL && !s.connected) {
|
716
753
|
if (!s.getAutoPlay()) {
|
717
754
|
s.setAutoPlay(true);
|
718
755
|
}
|
@@ -725,6 +762,9 @@ function SoundManager(smURL, smID) {
|
|
725
762
|
if (s.playState === 1 && !s.paused) {
|
726
763
|
allowMulti = s._iO.multiShot;
|
727
764
|
if (!allowMulti) {
|
765
|
+
if (s.isHTML5) {
|
766
|
+
s.setPosition(s._iO.position);
|
767
|
+
}
|
728
768
|
exit = s;
|
729
769
|
} else {
|
730
770
|
}
|
@@ -733,15 +773,21 @@ function SoundManager(smURL, smID) {
|
|
733
773
|
return exit;
|
734
774
|
}
|
735
775
|
if (oOptions.url && oOptions.url !== s.url) {
|
736
|
-
s.
|
776
|
+
if (!s.readyState && !s.isHTML5 && fV === 8 && urlOmitted) {
|
777
|
+
urlOmitted = false;
|
778
|
+
} else {
|
779
|
+
s.load(s._iO);
|
780
|
+
}
|
737
781
|
}
|
738
782
|
if (!s.loaded) {
|
739
783
|
if (s.readyState === 0) {
|
740
|
-
if (!s.isHTML5) {
|
784
|
+
if (!s.isHTML5 && !sm2.html5Only) {
|
741
785
|
s._iO.autoPlay = true;
|
742
786
|
s.load(s._iO);
|
743
|
-
} else {
|
787
|
+
} else if (s.isHTML5) {
|
744
788
|
s.load(s._iO);
|
789
|
+
} else {
|
790
|
+
exit = s;
|
745
791
|
}
|
746
792
|
s.instanceOptions = s._iO;
|
747
793
|
} else if (s.readyState === 2) {
|
@@ -781,7 +827,7 @@ function SoundManager(smURL, smID) {
|
|
781
827
|
}
|
782
828
|
s._iO = applyFromTo();
|
783
829
|
}
|
784
|
-
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())) {
|
785
831
|
s.instanceCount++;
|
786
832
|
}
|
787
833
|
if (s._iO.onposition && s.playState === 0) {
|
@@ -800,17 +846,41 @@ function SoundManager(smURL, smID) {
|
|
800
846
|
s.setVolume(s._iO.volume, true);
|
801
847
|
s.setPan(s._iO.pan, true);
|
802
848
|
if (!s.isHTML5) {
|
803
|
-
startOK = flash._start(s.id, s._iO.loops || 1, (fV === 9 ? s.
|
849
|
+
startOK = flash._start(s.id, s._iO.loops || 1, (fV === 9 ? s.position : s.position / msecScale), s._iO.multiShot || false);
|
804
850
|
if (fV === 9 && !startOK) {
|
805
851
|
if (s._iO.onplayerror) {
|
806
852
|
s._iO.onplayerror.apply(s);
|
807
853
|
}
|
808
854
|
}
|
809
855
|
} else {
|
810
|
-
|
811
|
-
|
812
|
-
|
813
|
-
|
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
|
+
}
|
814
884
|
}
|
815
885
|
}
|
816
886
|
return s;
|
@@ -872,12 +942,10 @@ function SoundManager(smURL, smID) {
|
|
872
942
|
if (nMsecOffset === _undefined) {
|
873
943
|
nMsecOffset = 0;
|
874
944
|
}
|
875
|
-
var
|
876
|
-
position, position1K,
|
945
|
+
var position, position1K,
|
877
946
|
offset = (s.isHTML5 ? Math.max(nMsecOffset, 0) : Math.min(s.duration || s._iO.duration, Math.max(nMsecOffset, 0)));
|
878
|
-
original_pos = s.position;
|
879
947
|
s.position = offset;
|
880
|
-
position1K = s.position/
|
948
|
+
position1K = s.position/msecScale;
|
881
949
|
s._resetOnPosition(s.position);
|
882
950
|
s._iO.position = offset;
|
883
951
|
if (!s.isHTML5) {
|
@@ -896,10 +964,9 @@ function SoundManager(smURL, smID) {
|
|
896
964
|
} catch(e) {
|
897
965
|
}
|
898
966
|
}
|
899
|
-
} else {
|
967
|
+
} else if (position1K) {
|
968
|
+
return s;
|
900
969
|
}
|
901
|
-
}
|
902
|
-
if (s.isHTML5) {
|
903
970
|
if (s.paused) {
|
904
971
|
s._onTimer(true);
|
905
972
|
}
|
@@ -951,7 +1018,7 @@ function SoundManager(smURL, smID) {
|
|
951
1018
|
this.togglePause = function() {
|
952
1019
|
if (s.playState === 0) {
|
953
1020
|
s.play({
|
954
|
-
position: (fV === 9 && !s.isHTML5 ? s.position : s.position /
|
1021
|
+
position: (fV === 9 && !s.isHTML5 ? s.position : s.position / msecScale)
|
955
1022
|
});
|
956
1023
|
return s;
|
957
1024
|
}
|
@@ -1179,7 +1246,7 @@ function SoundManager(smURL, smID) {
|
|
1179
1246
|
isNew = true;
|
1180
1247
|
}
|
1181
1248
|
s.durationEstimate = s.duration;
|
1182
|
-
time = (s._a.currentTime *
|
1249
|
+
time = (s._a.currentTime * msecScale || 0);
|
1183
1250
|
if (time !== lastHTML5State.time) {
|
1184
1251
|
lastHTML5State.time = time;
|
1185
1252
|
isNew = true;
|
@@ -1193,7 +1260,7 @@ function SoundManager(smURL, smID) {
|
|
1193
1260
|
};
|
1194
1261
|
this._get_html5_duration = function() {
|
1195
1262
|
var instanceOptions = s._iO,
|
1196
|
-
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)),
|
1197
1264
|
result = (d && !isNaN(d) && d !== Infinity ? d : null);
|
1198
1265
|
return result;
|
1199
1266
|
};
|
@@ -1201,15 +1268,15 @@ function SoundManager(smURL, smID) {
|
|
1201
1268
|
a.loop = (nLoops > 1 ? 'loop' : '');
|
1202
1269
|
};
|
1203
1270
|
this._setup_html5 = function(oOptions) {
|
1204
|
-
var instanceOptions = mixin(s._iO, oOptions),
|
1205
|
-
a = useGlobalHTML5Audio ? globalHTML5Audio
|
1206
|
-
dURL =
|
1271
|
+
var instanceOptions = mixin(s._iO, oOptions),
|
1272
|
+
a = useGlobalHTML5Audio ? globalHTML5Audio : s._a,
|
1273
|
+
dURL = decodeURI(instanceOptions.url),
|
1207
1274
|
sameURL;
|
1208
1275
|
if (useGlobalHTML5Audio) {
|
1209
|
-
if (dURL === lastGlobalHTML5URL) {
|
1276
|
+
if (dURL === decodeURI(lastGlobalHTML5URL)) {
|
1210
1277
|
sameURL = true;
|
1211
1278
|
}
|
1212
|
-
} else if (dURL === lastURL) {
|
1279
|
+
} else if (dURL === decodeURI(lastURL)) {
|
1213
1280
|
sameURL = true;
|
1214
1281
|
}
|
1215
1282
|
if (a) {
|
@@ -1218,7 +1285,7 @@ function SoundManager(smURL, smID) {
|
|
1218
1285
|
if (a._s && a._s.playState && !sameURL) {
|
1219
1286
|
a._s.stop();
|
1220
1287
|
}
|
1221
|
-
} else if (!useGlobalHTML5Audio && dURL ===
|
1288
|
+
} else if (!useGlobalHTML5Audio && dURL === decodeURI(lastURL)) {
|
1222
1289
|
s._apply_loop(a, instanceOptions.loops);
|
1223
1290
|
return a;
|
1224
1291
|
}
|
@@ -1291,7 +1358,9 @@ function SoundManager(smURL, smID) {
|
|
1291
1358
|
s.readyState = loadOK?3:2;
|
1292
1359
|
s._onbufferchange(0);
|
1293
1360
|
if (s._iO.onload) {
|
1294
|
-
|
1361
|
+
wrapCallback(s, function() {
|
1362
|
+
s._iO.onload.apply(s, [loadOK]);
|
1363
|
+
});
|
1295
1364
|
}
|
1296
1365
|
return true;
|
1297
1366
|
};
|
@@ -1341,7 +1410,9 @@ function SoundManager(smURL, smID) {
|
|
1341
1410
|
}
|
1342
1411
|
if (!s.instanceCount || s._iO.multiShotEvents) {
|
1343
1412
|
if (io_onfinish) {
|
1344
|
-
|
1413
|
+
wrapCallback(s, function() {
|
1414
|
+
io_onfinish.apply(s);
|
1415
|
+
});
|
1345
1416
|
}
|
1346
1417
|
}
|
1347
1418
|
}
|
@@ -1484,6 +1555,13 @@ function SoundManager(smURL, smID) {
|
|
1484
1555
|
}
|
1485
1556
|
return o1;
|
1486
1557
|
};
|
1558
|
+
wrapCallback = function(oSound, callback) {
|
1559
|
+
if (!oSound.isHTML5 && fV === 8) {
|
1560
|
+
window.setTimeout(callback, 0);
|
1561
|
+
} else {
|
1562
|
+
callback();
|
1563
|
+
}
|
1564
|
+
};
|
1487
1565
|
extraOptions = {
|
1488
1566
|
'onready': 1,
|
1489
1567
|
'ontimeout': 1,
|
@@ -1506,7 +1584,6 @@ function SoundManager(smURL, smID) {
|
|
1506
1584
|
sm2.setupOptions[i] = o[i];
|
1507
1585
|
sm2[i] = o[i];
|
1508
1586
|
} else if (bonusOptions[i] === _undefined) {
|
1509
|
-
complain(str((sm2[i] === _undefined ? 'setupUndef' : 'setupError'), i), 2);
|
1510
1587
|
result = false;
|
1511
1588
|
} else {
|
1512
1589
|
if (sm2[i] instanceof Function) {
|
@@ -1517,7 +1594,6 @@ function SoundManager(smURL, smID) {
|
|
1517
1594
|
}
|
1518
1595
|
} else {
|
1519
1596
|
if (bonusOptions[i] === _undefined) {
|
1520
|
-
complain(str((sm2[i] === _undefined ? 'setupUndef' : 'setupError'), i), 2);
|
1521
1597
|
result = false;
|
1522
1598
|
} else {
|
1523
1599
|
return assign(o[i], i);
|
@@ -1592,7 +1668,7 @@ function SoundManager(smURL, smID) {
|
|
1592
1668
|
}
|
1593
1669
|
s._html5_canplay = true;
|
1594
1670
|
s._onbufferchange(0);
|
1595
|
-
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);
|
1596
1672
|
if (s.position && this.currentTime !== position1K) {
|
1597
1673
|
try {
|
1598
1674
|
this.currentTime = position1K;
|
@@ -1641,18 +1717,17 @@ function SoundManager(smURL, smID) {
|
|
1641
1717
|
isProgress = (e.type === 'progress'),
|
1642
1718
|
ranges = e.target.buffered,
|
1643
1719
|
loaded = (e.loaded||0),
|
1644
|
-
total = (e.total||1)
|
1645
|
-
scale = 1000;
|
1720
|
+
total = (e.total||1);
|
1646
1721
|
s.buffered = [];
|
1647
1722
|
if (ranges && ranges.length) {
|
1648
1723
|
for (i=0, j=ranges.length; i<j; i++) {
|
1649
1724
|
s.buffered.push({
|
1650
|
-
'start': ranges.start(i) *
|
1651
|
-
'end': ranges.end(i) *
|
1725
|
+
'start': ranges.start(i) * msecScale,
|
1726
|
+
'end': ranges.end(i) * msecScale
|
1652
1727
|
});
|
1653
1728
|
}
|
1654
|
-
buffered = (ranges.end(0) - ranges.start(0)) *
|
1655
|
-
loaded = buffered/(e.target.duration*
|
1729
|
+
buffered = (ranges.end(0) - ranges.start(0)) * msecScale;
|
1730
|
+
loaded = Math.min(1, buffered/(e.target.duration*msecScale));
|
1656
1731
|
}
|
1657
1732
|
if (!isNaN(loaded)) {
|
1658
1733
|
s._onbufferchange(0);
|
@@ -1681,21 +1756,28 @@ function SoundManager(smURL, smID) {
|
|
1681
1756
|
};
|
1682
1757
|
html5OK = function(iO) {
|
1683
1758
|
var result;
|
1684
|
-
if (iO
|
1759
|
+
if (!iO || (!iO.type && !iO.url && !iO.serverURL)) {
|
1760
|
+
result = false;
|
1761
|
+
} else if (iO.serverURL || (iO.type && preferFlashCheck(iO.type))) {
|
1685
1762
|
result = false;
|
1686
1763
|
} else {
|
1687
|
-
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)));
|
1688
1765
|
}
|
1689
1766
|
return result;
|
1690
1767
|
};
|
1691
|
-
html5Unload = function(oAudio
|
1768
|
+
html5Unload = function(oAudio) {
|
1769
|
+
var url;
|
1692
1770
|
if (oAudio) {
|
1771
|
+
url = (isSafari && !is_iDevice ? null : (isFirefox ? emptyURL : null));
|
1693
1772
|
oAudio.src = url;
|
1694
|
-
oAudio.
|
1773
|
+
if (oAudio._called_unload !== undefined) {
|
1774
|
+
oAudio._called_load = false;
|
1775
|
+
}
|
1695
1776
|
}
|
1696
1777
|
if (useGlobalHTML5Audio) {
|
1697
1778
|
lastGlobalHTML5URL = null;
|
1698
1779
|
}
|
1780
|
+
return url;
|
1699
1781
|
};
|
1700
1782
|
html5CanPlay = function(o) {
|
1701
1783
|
if (!sm2.useHTML5Audio || !sm2.hasHTML5) {
|
@@ -1746,6 +1828,8 @@ function SoundManager(smURL, smID) {
|
|
1746
1828
|
};
|
1747
1829
|
testHTML5 = function() {
|
1748
1830
|
if (!sm2.useHTML5Audio || !sm2.hasHTML5) {
|
1831
|
+
sm2.html5.usingFlash = true;
|
1832
|
+
needsFlash = true;
|
1749
1833
|
return false;
|
1750
1834
|
}
|
1751
1835
|
var a = (Audio !== _undefined ? (isOpera && opera.version() < 10 ? new Audio(null) : new Audio()) : null),
|
@@ -1796,6 +1880,8 @@ function SoundManager(smURL, smID) {
|
|
1796
1880
|
}
|
1797
1881
|
support.canPlayType = (a?cp:null);
|
1798
1882
|
sm2.html5 = mixin(sm2.html5, support);
|
1883
|
+
sm2.html5.usingFlash = featureCheck();
|
1884
|
+
needsFlash = sm2.html5.usingFlash;
|
1799
1885
|
return true;
|
1800
1886
|
};
|
1801
1887
|
strings = {
|
@@ -1884,9 +1970,6 @@ function SoundManager(smURL, smID) {
|
|
1884
1970
|
flash._setPolling(bPolling, bHighPerformance);
|
1885
1971
|
};
|
1886
1972
|
initDebug = function() {
|
1887
|
-
if (sm2.debugURLParam.test(wl)) {
|
1888
|
-
sm2.debugMode = true;
|
1889
|
-
}
|
1890
1973
|
};
|
1891
1974
|
idCheck = this.getSoundById;
|
1892
1975
|
getSWFCSS = function() {
|
@@ -2003,6 +2086,7 @@ function SoundManager(smURL, smID) {
|
|
2003
2086
|
try {
|
2004
2087
|
obj = new AX('ShockwaveFlash.ShockwaveFlash');
|
2005
2088
|
} catch(e) {
|
2089
|
+
obj = null;
|
2006
2090
|
}
|
2007
2091
|
hasPlugin = (!!obj);
|
2008
2092
|
obj = null;
|
@@ -2011,9 +2095,8 @@ function SoundManager(smURL, smID) {
|
|
2011
2095
|
return hasPlugin;
|
2012
2096
|
};
|
2013
2097
|
featureCheck = function() {
|
2014
|
-
var
|
2098
|
+
var flashNeeded,
|
2015
2099
|
item,
|
2016
|
-
result = true,
|
2017
2100
|
formats = sm2.audioFormats,
|
2018
2101
|
isSpecial = (is_iDevice && !!(ua.match(/os (1|2|3_0|3_1)/i)));
|
2019
2102
|
if (isSpecial) {
|
@@ -2022,7 +2105,6 @@ function SoundManager(smURL, smID) {
|
|
2022
2105
|
if (sm2.oMC) {
|
2023
2106
|
sm2.oMC.style.display = 'none';
|
2024
2107
|
}
|
2025
|
-
result = false;
|
2026
2108
|
} else {
|
2027
2109
|
if (sm2.useHTML5Audio) {
|
2028
2110
|
if (!sm2.html5 || !sm2.html5.canPlayType) {
|
@@ -2031,18 +2113,25 @@ function SoundManager(smURL, smID) {
|
|
2031
2113
|
}
|
2032
2114
|
}
|
2033
2115
|
if (sm2.useHTML5Audio && sm2.hasHTML5) {
|
2116
|
+
canIgnoreFlash = true;
|
2034
2117
|
for (item in formats) {
|
2035
2118
|
if (formats.hasOwnProperty(item)) {
|
2036
|
-
if (
|
2037
|
-
|
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
|
+
}
|
2038
2126
|
}
|
2039
2127
|
}
|
2040
2128
|
}
|
2041
2129
|
}
|
2042
2130
|
if (sm2.ignoreFlash) {
|
2043
|
-
|
2131
|
+
flashNeeded = false;
|
2132
|
+
canIgnoreFlash = true;
|
2044
2133
|
}
|
2045
|
-
sm2.html5Only = (sm2.hasHTML5 && sm2.useHTML5Audio && !
|
2134
|
+
sm2.html5Only = (sm2.hasHTML5 && sm2.useHTML5Audio && !flashNeeded);
|
2046
2135
|
return (!sm2.html5Only);
|
2047
2136
|
};
|
2048
2137
|
parseURL = function(url) {
|
@@ -2073,7 +2162,7 @@ function SoundManager(smURL, smID) {
|
|
2073
2162
|
oSound._hasTimer = true;
|
2074
2163
|
if (!mobileHTML5 && sm2.html5PollingInterval) {
|
2075
2164
|
if (h5IntervalTimer === null && h5TimerCount === 0) {
|
2076
|
-
h5IntervalTimer =
|
2165
|
+
h5IntervalTimer = setInterval(timerExecute, sm2.html5PollingInterval);
|
2077
2166
|
}
|
2078
2167
|
h5TimerCount++;
|
2079
2168
|
}
|
@@ -2090,7 +2179,7 @@ function SoundManager(smURL, smID) {
|
|
2090
2179
|
timerExecute = function() {
|
2091
2180
|
var i;
|
2092
2181
|
if (h5IntervalTimer !== null && !h5TimerCount) {
|
2093
|
-
|
2182
|
+
clearInterval(h5IntervalTimer);
|
2094
2183
|
h5IntervalTimer = null;
|
2095
2184
|
return false;
|
2096
2185
|
}
|
@@ -2129,7 +2218,7 @@ function SoundManager(smURL, smID) {
|
|
2129
2218
|
};
|
2130
2219
|
this._setSandboxType = function(sandboxType) {
|
2131
2220
|
};
|
2132
|
-
this._externalInterfaceOK = function(
|
2221
|
+
this._externalInterfaceOK = function(swfVersion) {
|
2133
2222
|
if (sm2.swfLoaded) {
|
2134
2223
|
return false;
|
2135
2224
|
}
|
@@ -2358,7 +2447,17 @@ function SoundManager(smURL, smID) {
|
|
2358
2447
|
flashBlockHandler();
|
2359
2448
|
}
|
2360
2449
|
} else {
|
2361
|
-
|
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
|
+
}
|
2362
2461
|
}
|
2363
2462
|
} else {
|
2364
2463
|
if (sm2.flashLoadTimeout === 0) {
|
@@ -2487,8 +2586,6 @@ function SoundManager(smURL, smID) {
|
|
2487
2586
|
});
|
2488
2587
|
}
|
2489
2588
|
testHTML5();
|
2490
|
-
sm2.html5.usingFlash = featureCheck();
|
2491
|
-
needsFlash = sm2.html5.usingFlash;
|
2492
2589
|
if (!hasFlash && needsFlash) {
|
2493
2590
|
messages.push(strings.needFlash);
|
2494
2591
|
sm2.setup({
|