// Flash Version Detector  v1.2.1
// documentation: http://www.dithered.com/javascript/flash_detect/index.html
// license: http://creativecommons.org/licenses/by/1.0/
// code by Chris Nott (chris[at]dithered[dot]com)
// with VBScript code from Alastair Hamilton (now somewhat modified)

function isDefined(property) 
{
  return (typeof property != 'undefined');
}

var flashVersion = 0;
function getFlashVersion()
{
   var latestFlashVersion = 8;
   var agent = navigator.userAgent.toLowerCase(); 
   
   // NS3 needs flashVersion to be a local variable
   if (agent.indexOf("mozilla/3") != -1 && agent.indexOf("msie") == -1) 
   {
      flashVersion = 0;
   }
   
   // NS3+, Opera3+, IE5+ Mac (support plugin array):  check for Flash plugin in plugin array
   if (navigator.plugins != null && navigator.plugins.length > 0) 
   {
      var flashPlugin = navigator.plugins['Shockwave Flash'];
      if (typeof flashPlugin == 'object') 
	  { 
         for (var i = latestFlashVersion; i >= 3; i--) 
		 {
            if (flashPlugin.description.indexOf(i + '.') != -1) 
			{
               flashVersion = i;
               break;
            }
         }
      }
   }

   // IE4+ Win32:  attempt to create an ActiveX object using VBScript
   else if (agent.indexOf("msie") != -1 && parseInt(navigator.appVersion) >= 4 && agent.indexOf("win")!=-1 && agent.indexOf("16bit")==-1) 
   {
      var doc = '<scr' + 'ipt language="VBScript"\> \n';
      doc += 'On Error Resume Next \n';
      doc += 'Dim obFlash \n';
      doc += 'For i = ' + latestFlashVersion + ' To 3 Step -1 \n';
      doc += '   Set obFlash = CreateObject("ShockwaveFlash.ShockwaveFlash." & i) \n';
      doc += '   If IsObject(obFlash) Then \n';
      doc += '      flashVersion = i \n';
      doc += '      Exit For \n';
      doc += '   End If \n';
      doc += 'Next \n';
      doc += '</scr' + 'ipt\> \n';
      document.write(doc);
   }
      
   // WebTV 2.5 supports flash 3
   else if (agent.indexOf("webtv/2.5") != -1) flashVersion = 3;

   // older WebTV supports flash 2
   else if (agent.indexOf("webtv") != -1) flashVersion = 2;

   // Can't detect in all other cases
   else 
   {
      flashVersion = flashVersion_DONTKNOW;
   }

   return flashVersion;
}

flashVersion_DONTKNOW = -1;

function JSGetSwfVer(i)
{
	//-- Version NS/Opera >= 3 rechercher le plug-in Flash dans le tableau des plug-ins
	if (navigator.plugins != null && navigator.plugins.length > 0) 
	{
		if (navigator.plugins["Shockwave Flash 2.0"] || navigator.plugins["Shockwave Flash"]) 
		{
			var swVer2 = navigator.plugins["Shockwave Flash 2.0"] ? " 2.0" : "";
      		var flashDescription = navigator.plugins["Shockwave Flash" + swVer2].description;
			descArray = flashDescription.split(" ");
			tempArrayMajor = descArray[2].split(".");
			versionMajor = tempArrayMajor[0];
			versionMinor = tempArrayMajor[1];
			if ( descArray[3] != "" ) 
			{
				tempArrayMinor = descArray[3].split("r");
			} else 
			{
				tempArrayMinor = descArray[4].split("r");
			}
      		versionRevision = tempArrayMinor[1] > 0 ? tempArrayMinor[1] : 0;
            flashVer = versionMajor + "." + versionMinor + "." + versionRevision;
      	}
		else 
		{
			flashVer = -1;
		}
	}
	//-- MSN/WebTV 2.6 prend en charge Flash 4
	else if (navigator.userAgent.toLowerCase().indexOf("webtv/2.6") != -1) flashVer = 4;
	//-- WebTV 2.5 prend en charge Flash 3
	else if (navigator.userAgent.toLowerCase().indexOf("webtv/2.5") != -1) flashVer = 3;
	//-- La version antérieure de WebTV prend Flash 2 en charge
	else if (navigator.userAgent.toLowerCase().indexOf("webtv") != -1) flashVer = 2;
	//-- Détection impossible dans tous les autres cas
	else 
	{
		flashVer = -1;
	}
	return flashVer;
} 
//-- Si elle est appelée sans paramètres, cette fonction renvoie une valeur en virgule flottante indiquant la version Flash Player ou 0.0 
//-- ex : Flash Player 7r14 renvoie 7.14, Si appelé avec reqMajorVer, reqMinorVer, reqRevision renvoie true si cette version ou une version ultérieure est disponible
function DetectFlashVer(reqMajorVer, reqMinorVer, reqRevision) 
{
 	reqVer = parseFloat(reqMajorVer + "." + reqRevision);
   	//-- Examiner les versions pour détecter la plus récente	
	for (i=25;i>0;i--) 
	{	
		if (isIE && isWin && !isOpera) 
		{
			versionStr = VBGetSwfVer(i);
		} 
		else 
		{
			versionStr = JSGetSwfVer(i);		
		}
		if (versionStr == -1 ) 
		{ 
			return false;
		} 
		else if (versionStr != 0) 
		{
			if(isIE && isWin && !isOpera) 
			{
				tempArray         = versionStr.split(" ");
				tempString        = tempArray[1];
				versionArray      = tempString .split(",");				
			} 
			else 
			{
				versionArray      = versionStr.split(".");
			}
			versionMajor      = versionArray[0];
			versionMinor      = versionArray[1];
			versionRevision   = versionArray[2];
			
			versionString     = versionMajor + "." + versionRevision;   //-- 7.0r24 == 7.24
			versionNum        = parseFloat(versionString);
        	//-- est la révision.principale >= révision.principale demandée ET la version mineure >= mineure demandée
			if ( (versionMajor > reqMajorVer) && (versionNum >= reqVer) ) 
			{
				return true;
			}
			else 
			{
				return ((versionNum >= reqVer && versionMinor >= reqMinorVer) ? true : false );	
			}
		}
	}	
	return (reqVer ? false : 0.0);
}