<html> <head> <script language="JavaScript"> <!-- // initialize a variable to test for JavaScript 1.1. // which is necessary for the window.location.replace method var javascriptVersion1_1 = false; // --> </script> <script language="JavaScript1.1"> <!-- javascriptVersion1_1 = true; // --> </script> <script language="JavaScript"> <!-- // initialize global variables var detectableWithVB = false; var pluginFound = false; function goURL(daURL) { // if the browser can do it, use replace to preserve back button if(javascriptVersion1_1) { window.location.replace(daURL); } else { window.location = daURL; } return; } function redirectCheck(pluginFound, redirectURL, redirectIfFound) { // check for redirection if( redirectURL && ((pluginFound && redirectIfFound) || (!pluginFound && !redirectIfFound)) ) { // go away goURL(redirectURL); return pluginFound; } else { // stay here and return result of plugin detection return pluginFound; } } function canDetectPlugins() { if( detectableWithVB || (navigator.plugins && navigator.plugins.length > 0) ) { return true; } else { return false; } } function detectFlash(redirectURL, redirectIfFound) { pluginFound = detectPlugin('Shockwave','Flash'); // if not found, try to detect with VisualBasic if(!pluginFound && detectableWithVB) { pluginFound = detectActiveXControl('ShockwaveFlash.ShockwaveFlash.1'); } // check for redirection return redirectCheck(pluginFound, redirectURL, redirectIfFound); } function detectDirector(redirectURL, redirectIfFound) { pluginFound = detectPlugin('Shockwave','Director'); // if not found, try to detect with VisualBasic if(!pluginFound && detectableWithVB) { pluginFound = detectActiveXControl('SWCtl.SWCtl.1'); } // check for redirection return redirectCheck(pluginFound, redirectURL, redirectIfFound); } function detectQuickTime(redirectURL, redirectIfFound) { pluginFound = detectPlugin('QuickTime'); // if not found, try to detect with VisualBasic if(!pluginFound && detectableWithVB) { pluginFound = detectQuickTimeActiveXControl(); } return redirectCheck(pluginFound, redirectURL, redirectIfFound); } function detectReal(redirectURL, redirectIfFound) { pluginFound = detectPlugin('RealPlayer'); // if not found, try to detect with VisualBasic if(!pluginFound && detectableWithVB) { pluginFound = (detectActiveXControl('rmocx.RealPlayer G2 Control') || detectActiveXControl('RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)') || detectActiveXControl('RealVideo.RealVideo(tm) ActiveX Control (32-bit)')); } return redirectCheck(pluginFound, redirectURL, redirectIfFound); } function detectWindowsMedia(redirectURL, redirectIfFound) { pluginFound = detectPlugin('Windows Media'); // if not found, try to detect with VisualBasic if(!pluginFound && detectableWithVB) { pluginFound = detectActiveXControl('MediaPlayer.MediaPlayer.1'); } return redirectCheck(pluginFound, redirectURL, redirectIfFound); } function detectPlugin() { // allow for multiple checks in a single pass var daPlugins = detectPlugin.arguments; // consider pluginFound to be false until proven true var pluginFound = false; // if plugins array is there and not fake if (navigator.plugins && navigator.plugins.length > 0) { var pluginsArrayLength = navigator.plugins.length; // for each plugin... for (pluginsArrayCounter=0; pluginsArrayCounter < pluginsArrayLength; pluginsArrayCounter++ ) { // loop through all desired names and check each against the current plugin name var numFound = 0; for(namesCounter=0; namesCounter < daPlugins.length; namesCounter++) { // if desired plugin name is found in either plugin name or description if( (navigator.plugins[pluginsArrayCounter].name.indexOf(daPlugins[namesCounter]) >= 0) || (navigator.plugins[pluginsArrayCounter].description.indexOf(daPlugins[namesCounter]) >= 0) ) { // this name was found numFound++; } } // now that we have checked all the required names against this one plugin, // if the number we found matches the total number provided then we were successful if(numFound == daPlugins.length) { pluginFound = true; // if we've found the plugin, we can stop looking through at the rest of the plugins break; } } } return pluginFound; } // detectPlugin // Here we write out the VBScript block for MSIE Windows if ((navigator.userAgent.indexOf('MSIE') != -1) && (navigator.userAgent.indexOf('Win') != -1)) { document.writeln('<script language="VBscript">'); document.writeln('/'do a one-time test for a version of VBScript that can handle this code'); document.writeln('detectableWithVB = False'); document.writeln('If ScriptEngineMajorVersion >= 2 then'); document.writeln(' detectableWithVB = True'); document.writeln('End If'); document.writeln('/'this next function will detect most plugins'); document.writeln('Function detectActiveXControl(activeXControlName)'); document.writeln(' on error resume next'); document.writeln(' detectActiveXControl = False'); document.writeln(' If detectableWithVB Then'); document.writeln(' detectActiveXControl = IsObject(CreateObject(activeXControlName))'); document.writeln(' End If'); document.writeln('End Function'); document.writeln('/'and the following function handles QuickTime'); document.writeln('Function detectQuickTimeActiveXControl()'); document.writeln(' on error resume next'); document.writeln(' detectQuickTimeActiveXControl = False'); document.writeln(' If detectableWithVB Then'); document.writeln(' detectQuickTimeActiveXControl = False'); document.writeln(' hasQuickTimeChecker = false'); document.writeln(' Set hasQuickTimeChecker = CreateObject("QuickTimeCheckObject.QuickTimeCheck.1")'); document.writeln(' If IsObject(hasQuickTimeChecker) Then'); document.writeln(' If hasQuickTimeChecker.IsQuickTimeAvailable(0) Then '); document.writeln(' detectQuickTimeActiveXControl = True'); document.writeln(' End If'); document.writeln(' End If'); document.writeln(' End If'); document.writeln('End Function'); document.writeln('</scr' + 'ipt>'); } // --> </script> </head> <body> <script language="JavaScript"> document.write('<br><b>Can Detect Plugins:</b> ' + canDetectPlugins() + '<br><br>'); if(canDetectPlugins()) { document.write('<b>Supports Shockwave for Director:</b> ' + detectDirector() + '<br>' + '<b>Supports Shockwave Flash:</b> ' + detectFlash() + '<br>' + '<b>Supports QuickTime:</b> ' + detectQuickTime() + '<br>' + '<b>Supports RealPlayer:</b> ' + detectReal() + '<br>' + '<b>Supports Windows Media Player:</b> ' + detectWindowsMedia()); } </script> <noscript> Your browser doesn't support JavaScript, so we can't check for plugins. </noscript> </body> </html>