/* ----------------- FLASH DETECTION --------------------- */

// initialize global variables
var detectableWithVB = false;
var pluginFlashFound = false;

/** Static version number searched for Flash (Windows only)
*/
var _pluginFlashVersion = 7 ;

function canDetectPlugins()
{
    if (detectableWithVB || (navigator.plugins && navigator.plugins.length > 0)) {
		return true;
    }else{
		return false;
    }
}

function detectFlash()
{
    pluginFlashFound = detectPlugin('Shockwave','Flash');
	//Detection from mime/types for Gecko and Netscape
	var NonIEplugin = (navigator.mimeTypes && navigator.mimeTypes["application/x-shockwave-flash"]) ? navigator.mimeTypes["application/x-shockwave-flash"].enabledPlugin : 0 ;
	if ( NonIEplugin ) {
		var pluginVersion = parseInt(NonIEplugin.description.substring(NonIEplugin.description.indexOf(".")-1));
		if ( pluginVersion >= _pluginFlashVersion) {
			pluginFlashFound = true ;
			return pluginFlashFound ;
		} else {
			pluginFlashFound = false ;
		}
	}
    // if not found, try to detect with VisualBasic
    if(!pluginFlashFound && detectableWithVB) {
		pluginFlashFound = detectActiveXControl('ShockwaveFlash.ShockwaveFlash.' + _pluginFlashVersion);
    }
    return pluginFlashFound ;
}

function detectPlugin()
{
    // allow for multiple checks in a single pass
    var daPlugins = detectPlugin.arguments;
    // consider pluginFound to be false until proven true
    var pluginFlashFound = 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) {
				pluginFlashFound = true;
				// if we've found the plugin, we can stop looking through at the rest of the plugins
				break;
			}
		}
    }
    return pluginFlashFound;
}

// 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('</scr' + 'ipt>');
}

/* check for the Flash plug-in */
detectFlash();

/* ----------------- FLASH DETECTION --------------------- */
