/**
 * Plugin detection for web statstics
 * the following plugins can be detected:
 *	- flash
 *	- pdf
 *	- director
 *	- java
 *	- real player (version can not be checked)
 *	- quicktime
 *	- window media player (version can not be checked)
 **/
 
 
javascriptVersion1_1 = true;

var detectableWithVB = false;
var pluginFound = false;


// browser lets check the plugins
function canDetectPlugins()
{
    if(detectableWithVB || (navigator.plugins && navigator.plugins.length > 0)) return true;
    else return false;
}

// pdf detection
function detectPDF()
{
	var pdfVersion=0;

	// check non-ie 
  	if (navigator.plugins != null && navigator.plugins.length > 0)
   	{
		for (i=0; i < navigator.plugins.length; i++ )
      		{
       			var plugin = navigator.plugins[i];
         		if (plugin.name.indexOf("Adobe Acrobat") > -1) pdfVersion = parseFloat(plugin.description.substring(30));
         	}
      	}   
      	// cehck ie on win
   	else if(detectableWithVB)
   	{
		for(i=0;i<11;i++) if(detectActiveXControl('PDF.PdfCtrl.'+i)) pdfVersion= i;
  	}

   	return pdfVersion;

}

// detect java version
function detectJava()
{
	javaVersion=0;

	if (navigator.mimeTypes && navigator.mimeTypes.length)
	{
		if(navigator.mimeTypes['application/x-java-jnlp-file']) javaVersion='1.5';
      	}    
	else if(detectableWithVB)
	{
		if(detectActiveXControl('JavaWebStart.isInstalled')) javaVersion='1.1';
		if(detectActiveXControl('JavaWebStart.isInstalled.2')) javaVersion='1.2';
		if(detectActiveXControl('JavaWebStart.isInstalled.1.4.2.0')) javaVersion='1.4';
	}

    	return javaVersion;
}


// detect flash version
function detectFlash()
{
   var latestFlashVersion = 10;
   var flashVersion=0;

   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;
      	}
   }

   else if (detectableWithVB)
   {
	for(i=0;i<11;i++) if(detectActiveXControl('ShockwaveFlash.ShockwaveFlash.'+i)) flashVersion=i;	    	
   }

   // WebTV 2.5 supports flash 3
   else if (agent.indexOf("webtv/2.5") != -1) return 3;

   // older WebTV supports flash 2
   else if (agent.indexOf("webtv") != -1) return 2;

   return flashVersion;
}


// detect director version
function detectDirector()
{
	directorVersion=0;

	for(i=0;i<11;i++)
	{
    		if(detectPlugin('SWCtl.SWCtl.'+i)) directorVersion= i;
    		if(!pluginFound && detectableWithVB)
    		{
			if(detectActiveXControl('SWCtl.SWCtl.'+i)) directorVersion= i;
    		}
    	}
	return directorVersion;
}

// detect quicktime version
function detectQuickTime()
{
	quicktimeVersion = 0;

   	if (navigator.plugins != null && navigator.plugins.length > 0)
   	{
   		for (i=0; i < navigator.plugins.length; i++ )
   		{
         		var plugin =navigator.plugins[i];
         		if (plugin.name.indexOf("QuickTime") > -1) quicktimeVersion = parseFloat(plugin.name.substring(18));
      		}
   	}

   	else if (detectableWithVB)
   	{
		document.write('<scr' + 'ipt language="VBScript"\> \n');
     		document.write('on error resume next \n');
      		document.write('dim obQuicktime \n');
      		document.write('set obQuicktime = CreateObject("QuickTimeCheckObject.QuickTimeCheck.1") \n');
      		document.write('if IsObject(obQuicktime) then \n');
      		document.write('   if obQuicktime.IsQuickTimeAvailable(0) then \n');
      		document.write('      quicktimeVersion = CInt(Hex(obQuicktime.QuickTimeVersion) / 1000000) \n');
      		document.write('   end if \n');
      		document.write('end if \n');
      		document.write('</scr' + 'ipt\> \n');
  	}

	return quicktimeVersion;

}

// detect real (version is not available on all browsers, so only installed or not installed will be returned)
function detectReal()
{
	if(detectPlugin('RealPlayer')) return 1;

	else if(detectableWithVB)
	{
		if(detectActiveXControl('rmocx.RealPlayer G2 Control') ||
		   detectActiveXControl('RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)') ||
		   detectActiveXControl('RealVideo.RealVideo(tm) ActiveX Control (32-bit)')
		)	return 1;
	}

    	return 0;
}

// windows media player (version is not available on all browsers, so only installed or not installed will be returned)
function detectWindowsMedia()
{
    	if(detectPlugin('Windows Media')) return 1;
    	else if(detectableWithVB)
    	{
    		if(detectActiveXControl('MediaPlayer.MediaPlayer.1')) return 1;
    	}
    	return 0;
}

// non ie/non win plugin detection
function detectPlugin()
{
	var daPlugins = detectPlugin.arguments;
    	if (navigator.plugins && navigator.plugins.length > 0)
    	{	
		var pluginsArrayLength = navigator.plugins.length;
		for (pluginsArrayCounter=0; pluginsArrayCounter < pluginsArrayLength; pluginsArrayCounter++ )
		{
	    		for(namesCounter=0; namesCounter < daPlugins.length; namesCounter++)
	    		{
				if( (navigator.plugins[pluginsArrayCounter].name.indexOf(daPlugins[namesCounter]) >= 0) || (navigator.plugins[pluginsArrayCounter].description.indexOf(daPlugins[namesCounter]) >= 0) ) return 1;
	    		}

		}
    	}
    	return 0;
}


// vbscript for accessing plugins with ie on win
if ((navigator.userAgent.indexOf('MSIE') != -1) && (navigator.userAgent.indexOf('Win') != -1)) 
{
	document.writeln('<script language="VBscript">');

   	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>');
}


// put all together and call logging script via image-src
function visit_log(base_url)
{
	var plugin_director     = 0;
	var plugin_flash        = 0;
	var plugin_quicktime    = 0;
	var plugin_real         = 0;
	var plugin_java         = 0;
	var plugin_pdf          = 0;
	var plugin_windowsmedia = 0;
	var screen_width			= screen.width;
	var screen_height			= screen.height;
	var screen_depth			= screen.colorDepth;
	var tmpImg              = new Image();

	if(canDetectPlugins())
	{
		// plugin_director 	= detectDirector();
		plugin_flash 			= detectFlash();
		plugin_quicktime 		= detectQuickTime();
		plugin_real				= detectReal();
		// plugin_java			= detectJava();
		plugin_pdf		 		= detectPDF();
		plugin_windowsmedia 	= detectWindowsMedia();
	}

	base_url+='&visit_screen_width='        + screen_width;
	base_url+='&visit_screen_height='       + screen_height;
	base_url+='&visit_screen_depth='        + screen_depth;
	base_url+='&visit_plugin_flash='        + plugin_flash;
	// base_url+='&visit_plugin_director='     + plugin_director;
	// base_url+='&visit_plugin_java='         + plugin_java;
	base_url+='&visit_plugin_pdf='          + plugin_pdf;
	base_url+='&visit_plugin_real='         + plugin_real;
	base_url+='&visit_plugin_quicktime='    + plugin_quicktime;
	base_url+='&visit_plugin_windowsmedia=' + plugin_windowsmedia;
	base_url+='&cache_killer='+new Date().getTime();

	tmpImg.src  = base_url;
}