<script language="VBScript">
<!--
//
// First : the ActivX detector
//
Function VBGetShockwaveVer(fVer)
on error resume next
Dim sShockwaveControl, sShockwaveVersion
sShockwaveVersion = "0.0"
set sShockwaveControl = CreateObject("SWCtl.SWCtl." + CStr(fVer))
if (IsObject(sShockwaveControl)) then
sShockwaveVersion = CStr(fVer)
sShockwaveVersion = CStr(sShockwaveControl.ShockwaveVersion(""))
end if
VBGetShockwaveVer = sShockwaveVersion
End Function
// -->
</script>
<script language="javascript">
<!--
/**
* Second : do the validation
*/
var iStepValue = 10; // Iteration cycles - ref : fTheMinVersion plus this value
var fTheMinVersion = 8.5; // Minimum 'Required' Shockwave verson.
var sTheMaxVersion = (parseInt(iStepValue + fTheMinVersion)); // Maximum loop - counter
var bIsMac = (navigator.appVersion.indexOf("Mac")!=-1) ? true : false;
var bIE4plus = (document.all) ? true : false;
var bNN4plus = (document.layers) ? true : false;
var bPlugin = false;
var bWin = (navigator.platform.toLowerCase().indexOf("win") != -1) ? true : false;
var oTheMovie = "", sVB = "", sIsActiveX = "", sNoShockwave = "", sPluginDescription = ""
function shockwaveDetectAxVer(reqVer) {
if (bIE4plus && bWin) {
for (var i = sTheMaxVersion; i >= 0; i--) { // loop backwards through the major version values
for (var h = 0; h < 10; h++){ // loop forward through the minor version values
versionString = VBGetShockwaveVer(parseFloat( i + "." + h ))
if (versionString != "0.0") {
// if we get 1.0 we assume it is actually 6.0
versionNum = (versionString == "1.0" ? 6.0 : parseFloat(versionString))
return (reqVer ? ((fTheMinVersion >= versionNum ) ? true : false) : versionNum)
}
}
}
}
return (reqVer ? false : 0.0);
}
/**
* Third : check for plugins
*/
if (navigator.mimeTypes
&& navigator.mimeTypes["application/x-director"]
&& navigator.mimeTypes["application/x-director"].enabledPlugin) {
if (navigator.plugins) // check for version
var sPluginID = navigator.plugins["Shockwave for Director"].description;
sPluginID.substr((sPluginID.indexOf("version") + 8),3) >= fTheMinVersion ? bPlugin = true : bPlugin = false;
// show the app name and plug-in version
sPluginDescription = "<ul>" + navigator.appName + " plug-in : " + navigator.plugins["Shockwave for Director"].description + "</ul>";
}
// Browser uses ActiveX Control - test; can we create the obj ? true:false
else if (bIE4plus && !bIsMac){
var sShockwaveControl = shockwaveDetectAxVer(fTheMinVersion);
if (sShockwaveControl && (parseFloat(versionString) >= fTheMinVersion)){
bPlugin = true;
sPluginDescription = "<ul>" + navigator.appName + ", Shockwave Control version: " + versionString + "</ul>";
}
}
//-->
</script>
<script language="javascript">
<!--
/**
* Fourth : build and write output string(s)
*/
function doShockwaveValidation(){
if ( bPlugin ) { // Once we've validated we're Shockwave capabile we can buildup our movie string.
oTheMovie += '<OBJECT classid="clsid:166B1BCA-3F9C-11CF-8075-444553540000"
oTheMovie += 'codebase="http://download.macromedia.com/pub/shockwave/cabs/director/sw.cab';
oTheMovie += '#version=8,5,0,0" id=soniccruiser width=500 height=330>';
oTheMovie += '<param name=src value="3D_progbar.dcr">';
oTheMovie += '<param name=sw1 value="soniccruiser.dcr">';
oTheMovie += '<param name=swStretchStyle value=fill>';
oTheMovie += '<param name=swRemote value="swSaveEnabled=\'true\' swVolume=\'true\'
oTheMovie += 'swRestart=\'true\' swPausePlay=\'true\' swFastForward=\'true\' ';
oTheMovie += 'swContextMenu=\'true\' ">';
oTheMovie += '<param name=bgColor value=#FFFFFF>';
oTheMovie += '<EMBED src="3D_progbar.dcr" sw1="soniccruiser.dcr" bgcolor=#FFFFFF'
oTheMovie += 'width=500 height=330 swremote="swSaveEnabled=\'true\' swVolume=\'true\' '
oTheMovie += 'swRestart=\'true\' swPausePlay=\'true\' swFastForward=\'true\' ';
oTheMovie += 'swContextMenu=\'true\' swstretchstyle=fill type="application/x-director"'
oTheMovie += 'pluginspage="http://www.macromedia.com/shockwave/download/">';
oTheMovie += '</EMBED>';
oTheMovie += '</OBJECT>';
document.write( oTheMovie );
}
// Shockwave compability is limited or nonexistant - so let's provide an exit with a Shockwave upload option.
//This is generally where you might place a 'document.replace(theReplacementFile) command.'
else if (!(navigator.appName
&& navigator.appName.indexOf("Netscape") >= 0
&& navigator.appVersion.indexOf("2.") >= 0)){
sNoShockwave += '<div><font class="clrWhite">Movie does not support version ';
sNoShockwave += '<font class="clrRed"> + fTheMinVersion + </font> ';
sNoShockwave += 'of Shockwave player</font></div>';
sNoShockwave += '<img src="http://www.3dasa.com/products/soniccruiser/';
sNoShockwave += 'movie_stars/sc10070.jpg">';
sNoShockwave += '<div><a href="http://download.macromedia.com/pub/shockwave/';
sNoShockwave += 'cabs/director/sw.cab#version=8,5,0,0" class="clrWhite">Get Shockwave : ';
sNoShockwave += '<img src="../images/go_btn.gif" border="0"></a></div>';
document.write( sNoShockwave );
}
}
//-->
</script>
----------------------------------------------------------------------------------
Finally : call our JavaScript function to make it happen.
place this on the web page where you want your scene to be.
<!-- Check for and load Shockwave scene - if possible -->
<script language="javascript">doShockwaveValidation()</script>
----------------------------------------------------------------------------------