/* 
****************************************************************************************************************************************

	The administration of this website has placed this script here as part of a university research project.
	For more information, please visit http://www.webofvariables.com
	
	Please do NOT tamper with any of the following.  Doing so could negate the results of this research.
	
	If you're interested in tracking browser trends on your own website, create a free user account at http://www.webofvariables.com

****************************************************************************************************************************************
*/

var wovErrorMsg = "";
	
// ActiveX
function getActiveX(){
	var a = 0; 
	try{
		if ("ActiveXObject" in window){
			a = 1;
		}else{
			a = 0;
		}			
	}catch(e){
		a = 2;
		wovErrorMsg += e;
	}
	return a;
}

// Acrobat Reader
// Adapted from http://www.oreillynet.com/cs/user/view/cs_msg/4055
function getAcrobat(){
	var aa = 0;
	try{
		var acrobat = new Object();
		acrobat.version='0.0';
		if (navigator.plugins && navigator.plugins.length){
			for ( var x = 0; x <= navigator.plugins.length; ++x ){
				if (navigator.plugins[x].description){
					if(navigator.plugins[x].description.indexOf('Adobe Acrobat') != -1){
						aa=parseFloat(navigator.plugins[x].description.split('Version ')[1]);
						if (aa.toString().length == 1)
							aa+='.0';
						break;
					}
				}
			}
		}else if (window.ActiveXObject){
			for (x=2; x<10; x++){
				try{
					var oAcro = eval("new ActiveXObject('PDF.PdfCtrl."+x+"');");
					if (oAcro){
						aa=x+'.0';
						oAcro = "";
					}
				}catch(e){				
				}
			}
			try{
				var oAcro4=new ActiveXObject('PDF.PdfCtrl.1');
				if (oAcro4){
					aa='4.0';
					oAcro4 = "";
				}
			}catch(e){			
			}
			try{
				var oAcro7=new ActiveXObject('AcroPDF.PDF.1');
				if (oAcro7){
					aa='7.0';
					oAcro7 = "";
				}
			}catch(e){
			}
		}
	}catch(e){
		aa = 0;
		wovErrorMsg += e;
	}
	return aa;
}

// Browser
// Adapted from http://gemal.dk/browserspy/basic.html
var wovDetect = navigator.userAgent.toLowerCase();
var wovThestring;
var wovPlace;
function getBrowser(){
	var b;
	try{
		var OS, browser, version;
		if (wovCheckIt('konqueror')) {
			browser = "Konqueror";
			OS = "Linux";
		} else if (wovCheckIt('safari')) browser = "Safari";
		else if (wovCheckIt('omniweb')) browser = "OmniWeb";
		else if (wovCheckIt('k-meleon')) {
			browser = "K-Meleon";
			var rv = wovDetect.match(/k-meleon ([\w.]+)/);
			if (rv) {
				rv = rv[0];
				version = rv.substr(3);
			}
		}
		else if (wovCheckIt('opera')) browser = "Opera";
		else if (wovCheckIt('webtv')) browser = "WebTV";
		else if (wovCheckIt('icab')) browser = "iCab"
		else if (wovCheckIt('msie')) browser = "Internet Explorer";
		else if (!wovCheckIt('compatible')) {
			browser = "Netscape Navigator"
			version = wovDetect.charAt(8);
			if (typeof(navigator.product) != "undefined") {
				browser = "Mozilla";
				rv = navigator.userAgent.match(/([Mozilla ]?Fire\w+)\/([\w|\+.]+)/);
				if (rv) {
					browser += rv[1];
					version = rv[2];
				} else {
					rv = navigator.userAgent.match(/rv:([\w|\+.]+)/);
					if (rv) {
						rv = rv[0];
						version = rv.substr(3);
					}
				}
			}
		}else browser = "Unknown";
		if (!version) {
			version = wovDetect.charAt(wovPlace + wovThestring.length);
		}
		if (browser)
			b = browser;
		else
			b = "Unknown";
		if (version)
			b = b + ' ' + version;
	}catch(e){
		b = 2;
		wovErrorMsg += e;
	}
	return b;
}
		



	



// Cookies
// Adapted from http://www.javascripter.net/faq/arecooki.htm	
function getCookies(){
	var c = 2;
	try{
		var testValue=Math.floor(1000*Math.random());
	 	var today = new Date();
	 	var expire = new Date();
	 	expire.setTime(today.getTime() + 3600000*24*1);
		document.cookie = 'AreCookiesEnabled'+"="+escape(testValue) + ";expires="+expire.toGMTString();
		var theCookie=""+document.cookie;
		var ind=theCookie.indexOf('AreCookiesEnabled');
		var ind1=theCookie.indexOf(';',ind);
		if (ind1==-1) ind1=theCookie.length; 
		var temp = unescape(theCookie.substring(ind+18,ind1));
		if (testValue==temp) 
			c = "Enabled"; 
		else
			c = "Disabled";		
	}catch(e){
		c = 2;
		wovErrorMsg += e;
	}
	return c;
}


// Flash
// Adapted from http://www.macromedia.com/devnet/flashplayer/articles/future_detection_03.html
document.write('<scr'+'ipt language="VBScript"> \n'+
				'<!-- // \n'+
					  'Function VBGetSwfVer(i) \n'+
						'on error resume next \n'+
						'Dim swControl, swVersion \n'+
						'swVersion = 0 \n'+				
						'set swControl = CreateObject("ShockwaveFlash.ShockwaveFlash." + CStr(i)) \n'+
						'if (IsObject(swControl)) then \n'+
							'swVersion = swControl.GetVariable("$version") \n'+
							'swControl = "" \n'+
						'end if \n'+
						'VBGetSwfVer = swVersion \n'+
					  'End Function \n'+
				'// --> \n'+
				'</scr'+'ipt>');
function getFlash(){
	var f;
	try{
		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;
	  	var versionStr;
	  	var versionNum;
	  	for (var i=25;i>0;i--) {      
			if (isIE && isWin && !isOpera) {;
				 versionStr = VBGetSwfVer(i);
			} else {
			  	var tempArrayMinor;
			  	var flashVer;
			  	// NS/Opera version >= 3 check for Flash plugin in plugin array
			  	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];
						if ( descArray[3] != "" ) {
							tempArrayMinor = descArray[3].split("r");
						} else {
							tempArrayMinor = descArray[4].split("r");
						}
						var versionMinor = tempArrayMinor[1] > 0 ? tempArrayMinor[1] : 0;
						flashVer = parseFloat(versionMajor + "." + versionMinor);
					} else {
						flashVer = -1;
					}
				}
			  	// 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;
			  	// Can't detect in all other cases
			  	else {
					flashVer = -1;
			  	}
			  	versionStr = flashVer;
			}
			if (versionStr == -1) {
				return 0;
			} else if (versionStr != 0) {
				if(isIE && isWin && !isOpera) {
					tempArray = versionStr.split(" ");
					tempString = tempArray[1];
					versionArray = tempString .split(",");
					versionMajor = versionArray[0];
					versionMinor = versionArray[2];
					versionString = versionMajor + "." + versionMinor;
					versionNum = parseFloat(versionString);
				 } else {
					versionNum = versionStr;
				 }
				 return versionNum;            
			}
	  	}
	}catch(e){
		f = 0;
		wovErrorMsg += e;
	}
	return f;
}

// Java
// Adapted from http://www.experts-exchange.com/Web/Web_Languages/JavaScript/Q_20382210.html
document.write('<scr'+'ipt language="VBScript"> \n'+
				'<!-- // \n'+
			  	'Function VBGetJava() \n'+
				'on error resume next \n'+
				'i_java = IsObject(CreateObject("Java")) \n'+
				'VBGetJava = i_java \n'+
			  	'End Function \n'+
				'// --> \n'+
				'</scr'+'ipt>');
function getJava(){
	var j = 0;
	try{
		var i_java = false;
		if(getVBScript() == 1)
			i_java = VBGetJava();
		if (navigator.mimeTypes && navigator.mimeTypes.length)
			if (typeof(navigator.mimeTypes['application/x-java-vm']) != "undefined")
				i_java = true;
		if(i_java || navigator.javaEnabled()){
			j = "Yes";
		}
	}catch(e){
		j = "Yes";
		wovErrorMsg += e;
	}
	return j;
}

// JavaScript Version
var wovJavaScript = "0";
document.write('<scr'+'ipt language="javascript1.0"> \n'+
					'<!-- \n'+
					'	wovJavaScript = 1.0; \n'+
					'//--> \n'+
				'</scr'+'ipt> \n');

document.write('<scr'+'ipt language="javascript1.1"> \n'+
					'<!-- \n'+
					'	wovJavaScript = 1.1; \n'+
					'//--> \n'+
				'</scr'+'ipt> \n');

document.write('<scr'+'ipt language="javascript1.2"> \n'+
					'<!-- \n'+
					'	wovJavaScript = 1.2; \n'+
					'//--> \n'+
				'</scr'+'ipt> \n');
				
document.write('<scr'+'ipt language="javascript1.3"> \n'+
					'<!-- \n'+
					'	wovJavaScript = 1.3; \n'+
					'//--> \n'+
				'</scr'+'ipt> \n');

document.write('<scr'+'ipt language="javascript1.4"> \n'+
					'<!-- \n'+
					'	wovJavaScript = 1.4; \n'+
					'//--> \n'+
				'</scr'+'ipt> \n');

document.write('<scr'+'ipt language="javascript1.5"> \n'+
					'<!-- \n'+
					'	wovJavaScript = 1.5; \n'+
					'//--> \n'+
				'</scr'+'ipt> \n');

document.write('<scr'+'ipt language="javascript1.6"> \n'+
					'<!-- \n'+
					'	wovJavaScript = 1.6; \n'+
					'//--> \n'+
				'</scr'+'ipt> \n');

document.write('<scr'+'ipt language="javascript2.0"> \n'+
					'<!-- \n'+
					'	wovJavaScript = 2.0; \n'+
					'//--> \n'+
				'</scr'+'ipt> \n');

function getJavaScript(){
	return wovJavaScript;
}

// Operating System
// Adapted from http://gemal.dk/browserspy/basic.html
function wovCheckIt(s) {
	wovPlace = wovDetect.indexOf(s) + 1;
	wovThestring = s;
	return wovPlace;
}
function getOperating(){
	var o = 0;
	var ov = 0;
	try{
		var i_win;
		var v_win;
		var agt=navigator.userAgent.toLowerCase();
		if (agt.indexOf("win")!=-1 || agt.indexOf("16bit")!=-1)
			i_win = true;
		if (i_win) {
			if (agt.indexOf("win95")!=-1 || agt.indexOf("windows 95")!=-1)
				ov = "95";
			if (agt.indexOf("win98")!=-1 || agt.indexOf("windows 98")!=-1)
				ov = "98";
			if (agt.indexOf("win 9x 4.90")!=-1)
				ov = "ME";
			if (agt.indexOf("winnt")!=-1 || agt.indexOf("windows nt")!=-1)
				ov = "NT";
			if (agt.indexOf("windows nt 5.0")!=-1)
				ov = "2000";
			if (agt.indexOf("windows nt 5.1")!=-1)
				ov = "XP";
			o = "Windows";
		}
		if (!o) {
			if (wovCheckIt('linux')) o = "Linux";
			else if (wovCheckIt('x11')) o = "Unix";
			else if (wovCheckIt('mac')) o = "Mac"
			else if (wovCheckIt('win')) o = "Windows"
			else o = "Unknown";
			ov = 2;
		}
		if(ov != 2 && ov!= 0)
			o = o + ' ' + ov; 
	}catch(e){
		o = "Unknown";
		wovErrorMsg += e;
	}
	return o;
}
document.write('<scr'+'ipt language="VBScript"> \n'+
				'<!-- // \n'+
			  	'Function VBGetJava() \n'+
				'on error resume next \n'+
				'i_java = IsObject(CreateObject("Java")) \n'+
				'VBGetJava = i_java \n'+
			  	'End Function \n'+
				'// --> \n'+
				'</scr'+'ipt>');

// QuickTime
// Adapted from http://gemal.dk/browserspy/quicktime.html
document.write('<scr'+'ipt language="vbscript"> \n'+
				'<!-- // \n'+
			  	'Function VBGetQuickTime() \n'+
					'on error resume next \n'+
					'set obj_qt = CreateObject("QuickTimeCheckObject.QuickTimeCheck.1") \n'+
					'if IsObject(obj_qt) then \n'+
						'VBGetQuickTime = hex(obj_qt.QuickTimeVersion) \n'+
						'obj_qt = "" \n'+
					'else \n'+
						'VBGetQuickTime = 0 \n'+
						'obj_qt = "" \n'+
					'end if \n'+
			  	'End Function \n'+
				'// --> \n'+
				'</scr'+'ipt>');
function getQuickTime(){
	var q;
	try{
		var v_quicktime = "";
		if (navigator.plugins) {
			for (var i=0; i < navigator.plugins.length; i++) {
				if (navigator.plugins[i].name.toLowerCase().indexOf("quicktime") >= 0) {
					v_quicktime = navigator.plugins[i].name.substring(17, navigator.plugins[i].name.length);
					break;
				}
			}
		}

		if(getVBScript()==1)
			v_quicktime = VBGetQuickTime();
										
		if(v_quicktime != ""){
			var re = /\D/g;
			q = v_quicktime.replace(re,"");	
			q = q.substring(0,3);
		}else{
			q = "Not enabled";
		}
	}catch(e){
		q = "Not enabled";
		wovErrorMsg += e;
	}
	return q;
}

// Real Player
document.write('<scr'+'ipt language="VBScript"> \n'+
			  	'Function VBGetRealPlayer() \n'+
					'on error resume next \n'+
					'i_realplayer = IsObject(CreateObject("RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)")) \n'+
					'set tmp = CreateObject("rmocx.RealPlayer G2 Control") \n'+
					'if (IsObject(tmp)) then \n'+
						'tmp = "" \n'+
						'VBGetRealPlayer = 1 \n'+
					'else \n'+
						'tmp = "" \n'+
						'VBGetRealPlayer = 0 \n'+
					'end if	 \n'+
			  	'End Function \n'+
				'// --> \n'+
				'</scr'+'ipt>');
function getRealPlayer(){
	var r = 0;
	try{
		var i_realplayer;
		if (navigator.plugins) {
			for (var i=0; i < navigator.plugins.length; i++) {
				if (navigator.plugins[i].name.toLowerCase().indexOf("realplayer") >= 0) {
					i_realplayer = true;
				}
			}
		}

		if(getVBScript()==1)
			i_realplayer = VBGetRealPlayer();
		if(i_realplayer)
			r = 1;
	}catch(e){
		r = 2;
		wovErrorMsg += e;
	}
	return r;
}

// Screen Size
// Popular display resolutions list from http://en.wikipedia.org/wiki/Display_resolution
function getScreenSize(){
	return screen.width+"x"+screen.height;
}


// Windows Media Player
// Adapted from http://gemal.dk/browserspy/wm.html
document.write('<scr'+'ipt type="text/vbscript"><!-- \n'+
				'Function VBGetWindowsMP() \n'+
					'on error resume next \n'+
					'set tmp = CreateObject("MediaPlayer.MediaPlayer.1") \n'+
					'if IsObject(tmp) then \n'+
						'VBGetWindowsMP = true \n'+
					'end if \n'+
					'if not VBGetWindowsMP then \n'+
						'set tmp7 = CreateObject("WMPlayer.OCX.7") \n'+
						'if IsObject(tmp7) then \n'+
							'VBGetWindowsMP = true \n'+
						'end if \n'+
					'end if \n'+
				'End Function \n'+
				'tmp = "" \n'+
				'tmp7 = "" \n'+
				'//--></scr'+'ipt>');
function getWindowsMP(){
	var w = 0;
	try{
		var i_mediaplayer;
		if (navigator.plugins) {
			for (var i=0; i < navigator.plugins.length; i++) {
				if (navigator.plugins[i].name.toLowerCase().indexOf("windows media player") >= 0) {
					i_mediaplayer = true;
					break;
				}
			}
		}
		var i_mediaplayer_viamm;
		try {
			if ("ActiveXObject" in window) {
				i_mediaplayer_viamm = new ActiveXObject("MediaPlayer.MediaPlayer.1");
				if(i_mediaplayer_viamm)
					i_mediaplayer = true;
			} else if ("GeckoActiveXObject" in window) {
				i_mediaplayer_viamm = new GeckoActiveXObject("MediaPlayer.MediaPlayer.1");
				if(i_mediaplayer_viamm)
					i_mediaplayer = true;
			}
		} catch(e) {
		}
		var i_mediaplayer_viamo;
		try {
			if ("ActiveXObject" in window) {
				i_mediaplayer_viamo = new ActiveXObject("WMPlayer.OCX.7");
				if(i_mediaplayer_viamo)
					i_mediaplayer = true;
			} else if ("GeckoActiveXObject" in window) {
				i_mediaplayer_viamo = new GeckoActiveXObject("WMPlayer.OCX.7");
				if(i_mediaplayer_viamo)
					i_mediaplayer = true;
			}
		} catch(e) {
		}
		var i_mediaplayer6_viaci;
		try {
			if ("GeckoActiveXObject" in window) {
				i_mediaplayer6_viaci = new GeckoActiveXObject("{22D6F312-B0F6-11D0-94AB-0080C74C7E95}");
				if(i_mediaplayer6_viaci)
					i_mediaplayer = true;
			}
		} catch(e) {
		}
		var i_mediaplayer9_viaci;
		try {
			if ("GeckoActiveXObject" in window) {
				i_mediaplayer9_viaci = new GeckoActiveXObject("{6BF52A52-394A-11d3-B153-00C04F79FAA6}");
				if(i_mediaplayer_viamm)
					i_mediaplayer9_viaci = true;
			}
		} catch(e) {
		}
		if(getVBScript == 1 && i_mediaplayer != true)
			i_mediaplayer = VBGetWindowsMP();
		w = i_mediaplayer == true ? 1 : 0;
	}catch(e){
		w = 2;
		wovErrorMsg += e;
	}
	return w;
}

