var doc = document;				// document object
var nav = navigator;			// navigator object
var nav_agent = nav.userAgent;	// user agent
var win = window;				// window object

var jsEnable = 1				// verify if Javascript is enabled
var flashinstalled = 0;			// verify if Flah Plugin is installed (if Flash is installed => 2, otherwise => 1)
var flashversion = 0;			// get the flash version (0 for no flash plugin)

var detectFlaWithVB = 0;		// is true if the user is in IE Browser
var detectableWithVB = 0;		// is true if the user is in IE Browser

var is_ns = (nav.appName.indexOf('Microsoft') != -1) ? 1 : 0;	// 1 for IE, Opera
var is_ns4 = doc.layers ? 1 : 0;								// 1 for NS4
var is_ns6 = doc.getElementById ? 1 : 0;						// 1 for NS6,7, Mozilla, Firefox, IE, Opera
var is_ie4 = doc.all ? 1 : 0;									// 1 for IE, Opera


// get param :
// return true(1) or false(0) when verify if cookies an java are enable
// ----------------------------------------------------------------------------------------------------
function getParam(param) {
	return (param) ? 1 : 0;
}
// ----------------------------------------------------------------------------------------------------


// verify cookies and java enable :
// ----------------------------------------------------------------------------------------------------
doc.cookie = "cookie";	// set a cookie var for validation
// ----------------------------------------------------------------------------------------------------


// get window screen resolution and color depth :
// ----------------------------------------------------------------------------------------------------
function getScreenSize() {
	if (win.screen) {
		return screen.width + "x" + screen.height;
	}
	
	return 0;
}

function getColorsDepth() {
	return (is_ns4) ? screen.pixelDepth : screen.colorDepth;
}
// ----------------------------------------------------------------------------------------------------


// verify smooth_font, language, referrer :
// ----------------------------------------------------------------------------------------------------
function getSmoothFont() {
	return (is_ie4) ? ((win.screen.fontSmoothingEnabled) ? 1 : 0) : 0;
}

function getLanguage() {
	var nav_lang;
	
	if(is_ns4 || is_ns6 || is_ns) {
		nav_lang = navigator.language;
	} else if(is_ie4) {
		nav_lang = window.clientInformation.browserLanguage;
	}
	
	if(nav_lang) {
		return nav_lang.substr(0, 2);
	} else {
		return "unknown";
	}
}

function getReferrer() {
	var referrer = escape(doc.referrer);
	
	return ( (referrer == "") || (referrer == "undefined") ) ? "unknown" : referrer;
}
// ----------------------------------------------------------------------------------------------------


// used for plugin detection :
// detected plugins are : Shockwave/Director, QuickTime, RealPlayer, Windows Media
// ----------------------------------------------------------------------------------------------------
function detectPlugin() {
	var args = detectPlugin.arguments;
	var pluginFound = 0;
	
	if(nav.plugins && nav.plugins.length > 0) {
		for (i = 0; i < nav.plugins.length; i++ ) {
			var numFound = 0;
			var plugin = nav.plugins[i];
			
			for(j = 0; j < args.length; j++) {
				if( (plugin.name.indexOf(args[j]) >= 0) || 
					(plugin.description.indexOf(args[j]) >= 0) ) {
					numFound++;
				}
			}
			
			if(numFound == args.length) {
				pluginFound = 1;
				break;
			}
		}
	}
	
	return pluginFound;
}
// ----------------------------------------------------------------------------------------------------


// detect existent plugins :
// ----------------------------------------------------------------------------------------------------
function detectDirector() { 
	pluginFound = detectPlugin('Shockwave', 'Director'); 
	if(!pluginFound && detectableWithVB) {
		pluginFound = detectActiveXControl('SWCtl.SWCtl.1');
	}
	
	return pluginFound;
}

function detectQuickTime() {
	pluginFound = detectPlugin('QuickTime');
	if(!pluginFound && detectableWithVB) {
		pluginFound = detectQuickTimeActiveXControl();
	}
	
	return pluginFound;
}

function detectReal() {
	pluginFound = detectPlugin('RealPlayer');
	if(!pluginFound && detectableWithVB) {
		pluginFound = (detectActiveXControl('rmocx.RealPlayer G2 Control') ||
			detectActiveXControl('RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)') ||
			detectActiveXControl('RealVideo.RealVideo(tm) ActiveX Control (32-bit)'));
	}
	
	return pluginFound;
}

function detectWindowsMedia() {
	pluginFound = detectPlugin('Windows Media');
	
	if(!pluginFound && detectableWithVB) {
		pluginFound = detectActiveXControl('MediaPlayer.MediaPlayer.1');
	}
	
	return pluginFound;
}
// ----------------------------------------------------------------------------------------------------


// detect Flash :
// ----------------------------------------------------------------------------------------------------
if(nav.plugins && nav.plugins.length) {
	x = nav.plugins["Shockwave Flash"];
	if(x) {
		flashinstalled = 2;

		if(x.description) {
			y = x.description;
			flashversion = y.charAt(y.indexOf('.')-1);
		}
	} else {
		flashinstalled = 1;

		if(nav.plugins["Shockwave Flash 2.0"]) {
			flashinstalled = 2;
			flashversion = 2;
		}
	}
} else if(navigator.mimeTypes && navigator.mimeTypes.length) {
	x = navigator.mimeTypes['application/x-shockwave-flash'];

	if(x && x.enabledPlugin) {
		flashinstalled = 2;
	} else {
		flashinstalled = 1;
	}
} else {
	detectFlaWithVB = 1;
	
	if( (navigator.userAgent.indexOf('MSIE') != -1) && (navigator.userAgent.indexOf('Win') != -1) ) {
		doc.write('<script type="text/vbscript"\> \n');
		doc.write('on error resume next \n');
		doc.write('If detectFlaWithVB = 1 Then \n');
		doc.write(' 	For i = 2 to 8 \n');
		doc.write('   		If Not(IsObject(CreateObject("ShockwaveFlash.ShockwaveFlash." & i))) Then \n');
		doc.write('    	Else \n ');
		doc.write('			flashinstalled = 2 \n');
		doc.write('			flashversion = i \n');
		doc.write('    	End If \n ');
		doc.write('	Next \n');
		doc.write('End If \n');
		doc.write('If flashinstalled = 0 Then \n');
		doc.write('	flashinstalled = 1 \n');
		doc.write('End If');
		doc.write('</script\> \n');
	}
}
// ----------------------------------------------------------------------------------------------------


// IE special VB plugins detection :
// ----------------------------------------------------------------------------------------------------
if( (navigator.userAgent.indexOf('MSIE') != -1) && (navigator.userAgent.indexOf('Win') != -1) ) {
	doc.write('<script type="text/vbscript"\> \n');
	doc.write('on error resume next \n');
	doc.write('detectableWithVB = 0 \n');
	doc.write('If ScriptEngineMajorVersion >= 2 then \n');
	doc.write('  detectableWithVB = 1 \n');
	doc.write('End If \n');
	
	doc.write('Function detectActiveXControl(activeXControlName) \n');
	doc.write('  on error resume next \n');
	doc.write('  detectActiveXControl = 0 \n');
	doc.write('  If detectableWithVB Then \n');
	doc.write('     detectActiveXControl = IsObject(CreateObject(activeXControlName)) \n');
	doc.write('  End If \n');
	doc.write('End Function \n');
	
	doc.write('Function detectQuickTimeActiveXControl() \n');
	doc.write('  on error resume next \n');
	doc.write('  detectQuickTimeActiveXControl = 0 \n');
	doc.write('  If detectableWithVB Then \n');
	doc.write('    detectQuickTimeActiveXControl = 0 \n');
	doc.write('    hasQuickTimeChecker = 0 \n');
	doc.write('    Set hasQuickTimeChecker = CreateObject("QuickTimeCheckObject.QuickTimeCheck.1") \n');
	doc.write('    If IsObject(hasQuickTimeChecker) Then \n');
	doc.write('      If hasQuickTimeChecker.IsQuickTimeAvailable(0) Then \n');
	doc.write('        detectQuickTimeActiveXControl = 1 \n');
	doc.write('      End If \n');
	doc.write('    End If \n');
	doc.write('  End If \n');
	doc.write('End Function \n');
	doc.write('</script\> \n');
}
// ----------------------------------------------------------------------------------------------------


// display the results list :
// ----------------------------------------------------------------------------------------------------
function write_data_in_page() {
	doc.write("Javascript Enable: "+ jsEnable +"<br>");
	doc.write("Cookie Enable: "+ getParam(doc.cookie) +"<br>");
	doc.write("Java Enable: "+ getParam(nav.javaEnabled()) +"<br>");
	doc.write("Screen Size: "+ getScreenSize() +"<br>");
	doc.write("Colors Depth: "+ getColorsDepth() +"<br>");
	doc.write("Referrer: "+ getReferrer() +"<br>");
	doc.write("Regular exp: "+ getParam(win.RegExp) +"<br>");
	doc.write("Language: "+ getLanguage() +"<br>");
	doc.write("Smooth font: "+ getSmoothFont() +"<br>");

	doc.write("Flash : "+ flashinstalled +' - '+ flashversion +"<br>");

	doc.write("QuickTime: "+ detectQuickTime() +"<br>");
	doc.write("Director: "+ detectDirector() +"<br>");
	doc.write("RealPlayer: "+ detectReal() +"<br>");
	doc.write("WMPlayer: "+ detectWindowsMedia() +"<br>");
}
// ----------------------------------------------------------------------------------------------------


// write_data - this var is sends from php statistic class
// ----------------------------------------------------------------------------------------------------
if(write_data == 1) {
	write_data_in_page();
}
// ----------------------------------------------------------------------------------------------------

// data send for processing :
// ----------------------------------------------------------------------------------------------------
var t_cookie 		= getParam(doc.cookie);
var t_java 			= getParam(nav.javaEnabled());
var t_screensize 	= getScreenSize();
var t_colors 		= getColorsDepth();
var t_referrer 		= getReferrer();
var t_regexp 		= getParam(win.RegExp);
var t_language 		= getLanguage();
var t_font 			= getSmoothFont();
var t_quicktime 	= detectQuickTime();
var t_director 		= detectDirector();
var t_realplayer 	= detectReal();
var t_wmplayer 		= detectWindowsMedia();

t_quicktime 		= (t_quicktime == true) ? 1 : t_quicktime;
t_director 			= (t_director == true) ? 1 : t_director;
t_realplayer 		= (t_realplayer == true) ? 1 : t_realplayer;
t_wmplayer 			= (t_wmplayer == true) ? 1 : t_wmplayer;

doc.write('<img src="'+ image_path +'?jsenable='+ jsEnable +'&cookie='+ t_cookie +'&java='+ t_java +'&screensize='+ t_screensize +'&colors='+ t_colors +'&referrer='+ t_referrer +'&regularexp='+ t_regexp +'&language='+ t_language +'&smoothfont='+ t_font +'&flash='+ flashversion +'&quicktime='+ t_quicktime +'&director='+ t_director +'&realplayer='+ t_realplayer +'&wmplayer='+ t_wmplayer +'" />');
// ----------------------------------------------------------------------------------------------------

