// From the file type, try to choose the best available viewer.
//

function preferredViewer ( fileType )
{
	var preferredPlayer = '';

	if ( fileType == 'wmv' && detectMediaPlayer ( ) )
	{
		preferredPlayer = 'Media Player';
	}
	else if ( fileType == 'mov' && detectQuickTime ( ) ) 
	{
		preferredPlayer = 'QuickTime';
	}
	else if ( fileType == 'rm' && detectRealPlayer ( ) ) 
	{
		preferredPlayer = 'Real Player';
	}
	else
	{
		if ( navigator.mimeTypes )
		{
			var plugin = null;

			if ( fileType == 'mpg' )
			{
				plugin = navigator.mimeTypes [ "video/mpeg" ] ? navigator.mimeTypes [ "video/mpeg" ].enabledPlugin : null;
			}
			else if ( fileType == 'avi' )
			{
				plugin = navigator.mimeTypes [ "video/avi" ] ? navigator.mimeTypes [ "video/avi" ].enabledPlugin : null;

				if ( plugin == null )
				{
					plugin = navigator.mimeTypes [ "video/msvideo" ] ? navigator.mimeTypes [ "video/msvideo" ].enabledPlugin : null;
				}
			}

			if ( plugin != null )
			{
				if ( ( plugin.name.indexOf ( 'QuickTime' ) >= 0 || plugin.description.indexOf ( 'QuickTime' ) >= 0 ) && detectQuickTime ( ) ) 
				{
					preferredPlayer = 'QuickTime';
				}
				else if ( ( plugin.name.indexOf ( 'Windows Media Player' ) >= 0 || plugin.description.indexOf ( 'Windows Media Player' ) >= 0 ) && detectMediaPlayer ( ) ) 
				{
					preferredPlayer = 'Media Player';
				}
				else if ( ( plugin.name.indexOf ( 'RealPlayer' ) >= 0 || plugin.description.indexOf ( 'RealPlayer' ) >= 0 ) && detectRealPlayer ( ) ) 
				{
					preferredPlayer = 'Real Player';
				}
			}
		}

		if ( preferredPlayer == '' )
		{
			if ( OSname = "Mac" && detectQuickTime ( ) ) 
			{
				preferredPlayer = 'QuickTime';
			}
			else if ( OSname = "IE" && detectMediaPlayer ( ) ) 
			{
				preferredPlayer = 'Media Player';
			}

			if ( preferredPlayer == '' )
			{

				if ( detectQuickTime ( ) ) 
				{
					preferredPlayer = 'QuickTime';
				}
				else if ( detectMediaPlayer ( ) ) 
				{
					preferredPlayer = 'Media Player';
				}
				else if ( detectRealPlayer ( ) ) 
				{
					preferredPlayer = 'Real Player';
				}
			}
		}
	}

	return preferredPlayer;
}



// QuickTime detector.
//

var quickTimeDetected = -1;

function detectQuickTime ( ) 
{
	if ( quickTimeDetected != -1 )
	{
		return quickTimeDetected;
	}

	var pluginFound = false;

	if ( detectPlugin ( 'QuickTime' ) != null )
	{
		pluginFound = true;
	}
	else
	{
		pluginFound = detectActiveXControl ( 'QuickTimeCheckObject.QuickTimeCheck.1', 1 );
	}

	quickTimeDetected = pluginFound;

	return pluginFound;
}



// Windows Media Player detector.
//

var mediaPlayerDetected = -1;

function detectMediaPlayer ( ) 
{
	if ( mediaPlayerDetected != -1 )
	{
		return mediaPlayerDetected;
	}

	var pluginFound = false;

	if ( detectPlugin ( 'Windows Media Player' ) != null )
	{
		pluginFound = true;
	}
	else
	{
		pluginFound = detectActiveXControl ( 'MediaPlayer.MediaPlayer.1', 0 );
	}

	mediaPlayerDetected = pluginFound;

	return pluginFound;
}



// Real Player detector.
//

var realPlayerDetected = -1;

function detectRealPlayer ( ) 
{
	if ( realPlayerDetected != -1 )
	{
		return realPlayerDetected;
	}

	var pluginFound = false;

	if ( detectPlugin ( 'RealPlayer' ) != null )
	{
		pluginFound = true;
	}
	else
	{
		pluginFound = detectActiveXControl ( 'rmocx.RealPlayer G2 Control', 0 );

		if ( ! pluginFound )
		{
			pluginFound = detectActiveXControl ( 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 0 );
		}

		if ( ! pluginFound )
		{
			pluginFound = detectActiveXControl ( 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 0 );
		}
	}

	realPlayerDetected = pluginFound;

	return pluginFound;
}


