var isIE  = (navigator.appVersion.indexOf("MSIE") != -1) ? true : false;
var isWin = (navigator.appVersion.toLowerCase().indexOf("win") != -1) ? true : false;
var isOpera = (navigator.userAgent.indexOf("Opera") != -1) ? true : false;

// helper required to detect Flash Player PlugIn version information
function getFlashVersion(i)
{
	// NS/Opera version >= 3 check for Flash plugin in plugin array
	var flashVer = -1;
	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;
			var descArray = flashDescription.split(" ");
			var tempArrayMajor = descArray[2].split(".");
			var versionMajor = tempArrayMajor[0];
			var versionMinor = tempArrayMajor[1];
			if( descArray[3] != "" )
			{
				tempArrayMinor = descArray[3].split("r");
			}
			else
			{
				tempArrayMinor = descArray[4].split("r");
			}
			var versionRevision = tempArrayMinor[1] > 0 ? tempArrayMinor[1] : 0;
			var flashVer = versionMajor + "." + versionMinor + "." + versionRevision;
		}
	}
	// MSN/WebTV 2.6 supports Flash 4
	else if( navigator.userAgent.toLowerCase().indexOf("webtv/2.6") != -1 ) flashVer = 4;
	// WebTV 2.5 supports Flash 3
	else if( navigator.userAgent.toLowerCase().indexOf("webtv/2.5") != -1 ) flashVer = 3;
	// older WebTV supports Flash 2
	else if( navigator.userAgent.toLowerCase().indexOf("webtv") != -1 ) flashVer = 2;
	else if( isIE && isWin && !isOpera )
	{
		try
		{
		    var axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash");
		    for( var i=3; axo != null; i++ )
		    {
				axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash."+i);
				flashVer = axo.GetVariable("$version");
			}
    	}
    	catch(e){}
	}	
	return flashVer;
}

//returns true if the passed version or greater is available
function detectFlashVersion(reqMajorVer, reqMinorVer, reqRevision)
{
 	reqVer = parseFloat(reqMajorVer + "." + reqRevision);
   	// loop backwards through the versions until we find the newest version
	for( i=25; i > 0; i-- )
	{
		versionStr = getFlashVersion(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(".");
			}
			var versionMajor      = versionArray[0];
			var versionMinor      = versionArray[1];
			var versionRevision   = versionArray[2];
			var versionString     = versionMajor + "." + versionRevision;   // 7.0r24 == 7.24
			flashDetectedVersionString = versionString;
			var versionNum        = parseFloat(versionString);
        		// is the major.revision >= requested major.revision AND the minor version >= requested minor
			if( versionMajor > reqMajorVer )
			{
				return true;
			}
			else if( versionMajor == reqMajorVer )
			{
				if( versionMinor > reqMinorVer )
				{
					return true;
				}
				else if( versionMinor == reqMinorVer )
				{
					if( versionRevision >= reqRevision )
					{
						return true;
					}
				}
			}
			return false;
		}
	}
}

function addExtension(src, ext)
{
	if( src.indexOf('?') != -1 )
	{
		return src.replace(/\?/, ext+'?');
	}
	else
	{
		return src + ext;
	}
}