1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
|
// SoundManager 2 start-up troubleshooting tool
// FlashDetect, by Carl Yestrau
// http://www.featureblend.com/license.txt
var FlashDetect=new function(){var self=this;self.installed=false;self.raw="";self.major=-1;self.minor=-1;self.revision=-1;self.revisionStr="";var activeXDetectRules=[{"name":"ShockwaveFlash.ShockwaveFlash.7","version":function(obj){return getActiveXVersion(obj);}},{"name":"ShockwaveFlash.ShockwaveFlash.6","version":function(obj){var version="6,0,21";try{obj.AllowScriptAccess="always";version=getActiveXVersion(obj);}catch(err){}
return version;}},{"name":"ShockwaveFlash.ShockwaveFlash","version":function(obj){return getActiveXVersion(obj);}}];var getActiveXVersion=function(activeXObj){var version=-1;try{version=activeXObj.GetVariable("$version");}catch(err){}
return version;};var getActiveXObject=function(name){var obj=-1;try{obj=new ActiveXObject(name);}catch(err){}
return obj;};var parseActiveXVersion=function(str){var versionArray=str.split(",");return{"raw":str,"major":parseInt(versionArray[0].split(" ")[1],10),"minor":parseInt(versionArray[1],10),"revision":parseInt(versionArray[2],10),"revisionStr":versionArray[2]};};var parseStandardVersion=function(str){var descParts=str.split(/ +/);var majorMinor=descParts[2].split(/\./);var revisionStr=descParts[3];return{"raw":str,"major":parseInt(majorMinor[0],10),"minor":parseInt(majorMinor[1],10),"revisionStr":revisionStr,"revision":parseRevisionStrToInt(revisionStr)};};var parseRevisionStrToInt=function(str){return parseInt(str.replace(/[a-zA-Z]/g,""),10)||self.revision;};self.majorAtLeast=function(version){return self.major>=version;};self.FlashDetect=function(){if(navigator.plugins&&navigator.plugins.length>0){var type='application/x-shockwave-flash';var mimeTypes=navigator.mimeTypes;if(mimeTypes&&mimeTypes[type]&&mimeTypes[type].enabledPlugin&&mimeTypes[type].enabledPlugin.description){var version=mimeTypes[type].enabledPlugin.description;var versionObj=parseStandardVersion(version);self.raw=versionObj.raw;self.major=versionObj.major;self.minor=versionObj.minor;self.revisionStr=versionObj.revisionStr;self.revision=versionObj.revision;self.installed=true;}}else if(navigator.appVersion.indexOf("Mac")==-1&&window.execScript){var version=-1;for(var i=0;i<activeXDetectRules.length&&version==-1;i++){var obj=getActiveXObject(activeXDetectRules[i].name);if(typeof obj=="object"){self.installed=true;version=activeXDetectRules[i].version(obj);if(version!=-1){var versionObj=parseActiveXVersion(version);self.raw=versionObj.raw;self.major=versionObj.major;self.minor=versionObj.minor;self.revision=versionObj.revision;self.revisionStr=versionObj.revisionStr;}}}}}();};FlashDetect.release="1.0.3";
// flash version URL switch (for this demo page)
var winLoc = window.location.toString();
if (winLoc.match(/flash9/i)) {
soundManager.flashVersion = 9;
if (winLoc.match(/highperformance/i)) {
soundManager.useHighPerformance = true;
soundManager.useFastPolling = true;
}
} else if (winLoc.match(/flash8/i)) {
soundManager.flashVersion = 8;
}
var sm2Debugger = null;
function SM2Debugger() {
var elementIDs = ['flashtojs','jstoflash','onload','soundtest','swf','hasflash'];
var elements = {};
var self = this;
this.getXHR = function() {
var xhr = null;
if (typeof window.XMLHttpRequest != 'undefined') {
try {
xhr = new XMLHttpRequest();
} catch(e) {
// d'oh
}
}
if (!xhr) {
try {
xhr = new ActiveXObject('Msxml2.XMLHTTP');
} catch(e) {
try {
xhr = new ActiveXObject('Microsoft.XMLHTTP');
} catch(E) {
xhr = null;
}
}
}
return xhr;
}
this.testURL = function(sURL,fOnComplete) {
var xhr = self.getXHR();
var msg = '<a href="'+soundManager.url+'" title="This should be a valid .SWF URL, not a 404 etc.">'+soundManager.url+'</a>';
if (soundManager.getMoviePercent() == 100) {
// SWF may have already loaded
fOnComplete(true,msg);
} else {
try {
xhr.open("HEAD",sURL,true);
xhr.onreadystatechange = function() {
if (xhr.readyState == 4) {
if (xhr.status == '200') {
fOnComplete(true,msg);
} else if (xhr.status == '404') {
fOnComplete(false,msg);
} else {
// some other response
fOnComplete('unknown',(xhr.status != '0'?'HTTP response: '+xhr.status+', ':'')+msg); // safari returns 0 when offline
}
}
}
xhr.send(null);
} catch(e) {
// fail (cross-domain, or no XHR) unless offline
fOnComplete('unknown',msg);
return false;
}
}
}
this.handleEvent = function(sEventType,bSuccess,sMessage) {
var o = elements[sEventType];
if (o) {
o.className = (bSuccess == true?'pass':(bSuccess != false?bSuccess:'fail')); // true = pass, className as argument, or false == fail
if (sMessage) {
var oSpan = o.getElementsByTagName('span')[4];
if (oSpan) {
oSpan.innerHTML = (oSpan.innerHTML +' <span class="msg">'+sMessage+'</msg>');
} else {
o.title = sMessage;
}
}
// associated events
if (sEventType == 'onload') {
if (bSuccess) {
self.doSoundTest();
} else {
self.testURL(soundManager.url,function(bSuccess,sMessage) {
if (typeof sMessage == 'undefined') {
sMessage = null;
}
self.handleEvent('swf',bSuccess,sMessage);
});
}
} else if (sEventType == 'swf') {
if (bSuccess == false) {
// don't show flashtojs at all if SWF failed to load
self.handleEvent('flashtojs','default'); // reset to N/A status
}
} else if (sEventType == 'flashtojs') {
if (bSuccess != true) {
// online or offline help messages
if (soundManager._overHTTP) {
document.getElementById('d-flashtojs-offline').style.display = 'none';
} else {
document.getElementById('d-flashtojs-online').style.display = 'none';
}
}
}
} else {
soundManager._writeDebug('SM2 debugger warning: Undefined event type "'+sEventType+'"',1);
}
}
this.doSoundTest = function() {
var foo = soundManager.createSound({
id: 'sm2TestSound',
url: ('http://schillmania.com/projects/soundmanager2/demo/_mp3/mouseover.mp3')
});
if (!soundManager._disabled) {
foo.play();
// looks to be OK..
if (!soundManager._disabled) {
// still OK..
self.handleEvent('soundtest',true);
} else {
self.handleEvent('soundtest',false,': Failed after play()');
}
} else {
self.handleEvent('soundtest',false,': Failed after createSound()');
}
}
this.init = function() {
// map event elements to DOM nodes - eg. elements.flashtojs = document.getElementById('d-flashtojs');
for (var i=elementIDs.length; i--;) {
elements[elementIDs[i]] = document.getElementById('d-'+elementIDs[i]);
}
self.doFlashTest();
}
this.doFlashTest = function() {
var fd = FlashDetect;
var hasFlash = fd.installed;
var isSupported = (hasFlash && fd.major >= soundManager.flashVersion);
var flashVersion = fd.major+'.'+fd.minor+'.'+fd.revisionStr;
var flashInfo = ' version '+(!isSupported?'unsupported ('+flashVersion+', SWF version '+soundManager.flashVersion+')':flashVersion);
document.getElementById('d-flashversion').innerHTML = 'soundManager.flashVersion = '+soundManager.flashVersion+';';
self.handleEvent('hasflash',isSupported,hasFlash?flashInfo:null);
}
soundManager.debugFlash = true; // try to get flash debug output, as well
this.init();
}
function sm2DebugInit() {
sm2Debugger = new SM2Debugger();
}
|