// Version minimale de Windows Media supportée
var mediaplayerRequired = 9.0;

// Debug = true; Affiche des infos utiles en fonte courrier pour tester
var Debug = false; 
var sDebug = "sDebug: "; 

// Affichage = true; Affiche l'info à l'usager
var Affichage = true; 
var sMsg = "<p>";

/* *** GLOBAL VARIABLES *** */
var fWindowsMedia = false;
var detectableWithVB = false;
var pluginFound = false;
var fMediaPlayerRequirement = false;
var fMediaPlayer = false;
sDebug = sDebug + "<li>mediaplayerRequired : " + mediaplayerRequired;

/* *** LIB FUNCTIONS *** */
function detectWindowsMedia(redirectURL, redirectIfFound) {
    pluginFound = detectPlugin('Windows Media Player');
    // if not found, try to detect with VisualBasic
    if(!pluginFound && detectableWithVB) {
	pluginFound = detectActiveXControl('MediaPlayer.MediaPlayer.1');
    }
    return redirectCheck(pluginFound, redirectURL, redirectIfFound);
}

function redirectCheck(pluginFound, redirectURL, redirectIfFound) {
    // check for redirection
    if( redirectURL && ((pluginFound && redirectIfFound) || 
	(!pluginFound && !redirectIfFound)) ) {
	// go away
	if (Debug == false) { 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 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;
}

/* *** LOAD : MSIE OBJECTS *** */
// VBScript Object Creation writelines for plugin detection
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>');
}

/* --- PLUGIN DETECT --- */

sMsg = sMsg + "Version de Windows Media Player " 
if (detectWindowsMedia())
{ 
  // If using IE on Windows platforms, try a more precise version release number through VBscript
  if ((navigator.userAgent.indexOf('MSIE') != -1) && (navigator.userAgent.indexOf('Win') != -1))
   {
    document.writeln('<di' + 'v style="display:none;">');
    document.writeln('<OBJECT classid=CLSID:22d6f312-b0f6-11d0-94ab-0080c74c7e95 codeBase=#Version=6,4,5,715 id=WMP64 height=0 width=0></OBJECT>');
    document.writeln('<OBJECT classid=CLSID:6BF52A52-394A-11d3-B153-00C04F79FAA6 codeBase=#Version=7,0,0,1954 id=WMP7 height=0 width=0></OBJECT>');
    document.writeln('</di' + 'v>');
    document.writeln('<scr' + 'ipt language="VBscript">');
    document.writeln('  On error resume next');
    document.writeln('  WB_DWM79 = WMP7.versionInfo')
    document.writeln('  WB_DWM64 = (WMP64.FileName="")')
    document.writeln('  WB_DWM52 = (IsObject(CreateObject("MediaPlayer.MediaPlayer.1") ) )')
    document.writeln('</scr' + 'ipt>');
    var WB_WM="undefined";
	if (WB_DWM79 != -1) {WB_WM=WB_DWM79.slice(0,3)}
    else if (WB_DWM64 != -1) {WB_WM="6.4"}
	else if (WB_DWM52 != -1) {WB_WM="5.2"}
    sMsg = sMsg + WB_WM + ' détectée. ';
	fMediaPlayerRequirement = true;
	var fWindowsMedia = true;
  }
  else  // Not IE, non Windows
  {
    sMsg = sMsg + " non detectée. "; // detected, but version release unavailable to other browsers;
	fMediaPlayerRequirement = false;
	var fWindowsMedia = false;
  }
}
else
{
  sMsg = sMsg + " non detectée. ";
  fMediaPlayerRequirement = false;
};

if (Debug == true) { AfficheMsg("<hr><tt>" + sDebug + "</tt><hr>")}
// if (Affichage == true) { AfficheMsg(sMsg)}

