// client sniff object 
function Sniffer() {
	this.checkCookies = function() {

var x_cookieName = "DrDeathRules"; // unique
var x_domain  = ".carbootsrus.com"; // set to whatever domain you want to test, with the standard provisos

var x_expires = new Date(); x_expires.setFullYear(x_expires.getFullYear()+1); // testing persistent cookies
xDeleteCookie(x_cookieName); // don't get false positive

// add path if you want to. drop expires for session cookie. drop domain for default domain test.
document.cookie = x_cookieName + "=test; expires=" + x_expires.toGMTString() + "; domain=" + x_domain;

// now look for it.
var x_cookieString = document.cookie || "";
var x_cookies = x_cookieString.split(/\s*;\s*/);
var x_found = 0;
for (var i in x_cookies) {
    var cookie = x_cookies[i];
    var dough = cookie.split(/\s*=\s*/);
    if (dough[0] == x_cookieName) { x_found = 1; break; }
}

// ensure it's gone
xDeleteCookie(x_cookieName);

// do whatever you want with x_found bool
if (x_found == 1) {
 return true 
}
else {
    return false
}

function xDeleteCookie(name) {
    var oldDate = new Date(1970, 1, 1);
    document.cookie = x_cookieName + "=0; expires=" + oldDate.toGMTString() + "; domain=" + x_domain;
}


	}

	this.checkCookies2 = function() {
		document.cookie = "cookieSniff=zaq4rf"
		if (document.cookie.indexOf("cookieSniff") != -1) { return true }
		else { return false }
	}
/*
	this.bwArray = new Array()
	this.checkBandwidth = function() {
		document.getElementById("speedFrame").src = "speed5text.asp"
	}
	this.finishBandwidth = function() {
		var total = 0
		//alert(this.bwArray);
		for (var z=0; z<this.bwArray.length; z++){
			if (!isNaN(parseInt(this.bwArray[z]))) {
				total = total + parseInt(this.bwArray[z])
			}
		}
		this.bandwidth = parseInt(total/this.bwArray.length)
		showBandwidth()
	}
*/
	this.checkScreenWidth = function() { return window.screen.width }
	this.checkScreenHeight = function() { return window.screen.height }
	this.checkScreenDepth = function() {
		var tempDepth = window.screen.colorDepth
		var screenDepth
		if (tempDepth > 32) { screenDepth = Math.log(tempDepth)/Math.log(2) }
		else { screenDepth = tempDepth }
		return screenDepth
	}
	this.checkOs = function() {
		var os = null
		var osVersion = null
		if (navigator.userAgent.indexOf("Windows") != -1){
			os = "Windows"
			var splitAgent = navigator.userAgent.split(";")
			for (i=0; i < splitAgent.length; i++){
				if (splitAgent[i].indexOf("Windows") != -1){
					if (splitAgent[i].indexOf("NT") != -1){
						var splitVersion = splitAgent[i].split(" ")
						for (j=0; j < splitVersion.length; j++){
							if (!isNaN(parseFloat(splitVersion[j]))) {
								
								if (parseFloat(splitVersion[j]) >= 5.1) {
									osVersion = "XP"
								}
								else if (parseInt(splitVersion[j]) >= 5) {
									osVersion = 2000
								}
								else {
									osVersion = "NT " + parseFloat(splitVersion[j])
								}
							}
						}
					}
					else if (splitAgent[i].indexOf("XP") != -1){
						osVersion = "XP"
					}
					else if (splitAgent[i].indexOf("Millenium") != -1){
						osVersion = "ME"
					}
					else {
						var splitVersion = splitAgent[i].split(" ")
						for (j=0; j < splitVersion.length; j++){
							if (!isNaN(parseFloat(splitVersion[j]))) {
								osVersion = parseFloat(splitVersion[j])
							}
						}
					}
				}
			}
		}
		else if (navigator.userAgent.indexOf("Mac") != -1){
			os = "MacOS"
			osVersion = "Unknown"
		}
		else {
			os = "Unsupported"
		}
		return new Array(os, osVersion)
	}
	this.checkW3C = function() {
		var w3c = null
		if (document.getElementById) { w3c = true }
		else { w3c = false }
		return w3c
	}
	this.checkBrowserMake = function() {
		var browserMake = null
		var browserVersion = null
		if (navigator.appName.indexOf("Microsoft") != -1){
			var splitAgent = navigator.userAgent.split(";")
			browserMake = "Microsoft"
			for (i=0; i < splitAgent.length; i++){
				if (splitAgent[i].indexOf("MSIE") != -1){
					var splitVersion = splitAgent[i].split(" ")
					for (j=0; j < splitVersion.length; j++){
						if (!isNaN(parseFloat(splitVersion[j]))) {
							browserVersion = parseFloat(splitVersion[j])
						}
					}
				}
			}
		}
		else if (navigator.appName.indexOf("Netscape") != -1){
			var splitAgent = navigator.userAgent.split("/")
			browserMake = "Netscape"
			for (i=0; i < splitAgent.length; i++){
				if (!isNaN(parseFloat(splitAgent[i]))) {
					var tempVersion = parseFloat(splitAgent[i])
				}
				if (tempVersion < 5) {
					browserVersion = tempVersion
				}
				else {
					if ((splitAgent[i].indexOf("Windows") == -1) && (splitAgent[i].indexOf("Netscape") == -1)) {
						if (!isNaN(parseFloat(splitAgent[i]))) {
							browserVersion = parseFloat(parseFloat(splitAgent[i]))
						}
					}
				}
			}
		}
		return new Array(browserMake, browserVersion)
	}
	this.checkRealPlayer = function() {
		var realMedia = null
		var realMediaVersion = null
		if (this.activeX == true) {
			if (rpexists() == true) {
				realMedia = true
				var realPlayerObj = new ActiveXObject("rmocx.RealPlayer G2 Control")
				realMediaVersion = parseFloat(realPlayerObj.GetVersionInfo())
			}
			else {
				realMedia = false
			}
		}
		if ((this.checkBrowserMake()[0].indexOf("Netscape") != -1) || (this.checkOs()[0].indexOf("Mac") != -1)) {
			for (i = 0 ; i < (navigator.plugins.length) ; i++) {
				if (navigator.plugins[i].name.indexOf("RealPlayer") != -1) {
					for (j=0; j< navigator.plugins[i].length; j++) {
						if (navigator.plugins[i][j].type.indexOf("audio/x-pn-realaudio-plugin") != -1) {
							realMedia = true
							if (navigator.plugins[i].name.indexOf("G2") != -1) {
								realMediaVersion = "G2+"
							}
						}
					}
				}
			}
		}
		return new Array(realMedia, realMediaVersion)
	}
	this.checkFlashPlayer = function() {
		var flash = null
		var flashVersion = null
		if (this.activeX == true) {
			if (flashexists() == true) {
				flash = true
				var flashtest = new ActiveXObject("ShockwaveFlash.ShockwaveFlash");
				if (flashtest != null) {
					flashVersion = 6
				}
			}
			else {
				flash = false
			}
		}
		if ((this.checkBrowserMake()[0].indexOf("Netscape") != -1) || (this.checkOs()[0].indexOf("Mac") != -1)) {
			for (i = 0 ; i < (navigator.plugins.length) ; i++) {
				if (navigator.plugins[i].name.indexOf("Shockwave Flash") != -1) {
					for (j=0; j< navigator.plugins[i].length; j++) {
						if (navigator.plugins[i][j].type.indexOf("application/x-shockwave-flash") != -1) {
							flash = true
							var splitFlash = navigator.plugins[i].description.split(" ")
							for (k=0; k < splitFlash.length; k++){
								if (!isNaN(parseFloat(splitFlash[k]))) {
									flashVersion = parseFloat(splitFlash[k])
								}
							}
						}
					}
				}
			}
		}
		return new Array(flash, flashVersion)
	}
	this.checkWindowsMediaPlayer = function() {
		var windowsMedia = null
		var windowsMediaVersion = null
		if (this.activeX == true) {
			if (wmpexists() == true) {
				windowsMedia = true
				var wmpObj = new ActiveXObject("MediaPlayer.MediaPlayer.1")
				if (wmpObj.FileName == "") {
					windowsMediaVersion = "6.2+"
				}
			}
			else {
				windowsMedia = false
			}
		}
		if ((this.checkBrowserMake()[0].indexOf("Netscape") != -1) || (this.checkOs()[0].indexOf("Mac") != -1)) {
			for (i = 0 ; i < (navigator.plugins.length) ; i++) {
				if (navigator.plugins[i].name.indexOf("Windows Media") != -1) {
					for (j=0; j< navigator.plugins[i].length; j++) {
						if (navigator.plugins[i][j].type.indexOf("video/x-ms-asf") != -1) {
							windowsMedia = true
						}
						if ((navigator.plugins[i][j].type.indexOf("application/x-drm") != -1) || (navigator.plugins[i][j].type.indexOf("application/x-drm-v2") != -1)) {
							windowsMediaVersion = "6.2+"
						}
						else {
							windowsMediaVersion = "nope"
						}
					}
				}
			}
		}
		return new Array(windowsMedia, windowsMediaVersion)
	}
	
	this.checkQuickTimePlayer = function() {
		var quicktime = null
		var quicktimeVersion = null
		if (this.activeX == true) {
			if (qtexists() == true) {
				quicktime = true
				quicktimeVersion = "5+"
			}
			else {
				quicktime = false
			}
		}
		if ((this.checkBrowserMake()[0].indexOf("Netscape") != -1) || (this.checkOs()[0].indexOf("Mac") != -1)) {
			for (i=0; i < navigator.plugins.length; i++ ) {
	       		if (navigator.plugins[i].name.indexOf("QuickTime") >= 0) {
		   			for (j=0; j< navigator.plugins[i].length; j++) {
		   				if (navigator.plugins[i][j].type.indexOf("video/quicktime") != -1) {
	       					quicktime = true
							var splitQuick = navigator.plugins[i].name.split(" ")
							for (k=0; k < splitQuick.length; k++){
								if (!isNaN(parseFloat(splitQuick[k]))) {
									quicktimeVersion = parseFloat(splitQuick[k])
								}
							}
						}
					}
	       		}
			}
		}
		return new Array(quicktime, quicktimeVersion)
	}

	this.javascript = true
	this.cookies = this.checkCookies()
	this.cookies2 = this.checkCookies2()
	this.screenWidth = this.checkScreenWidth()
	this.screenHeight = this.checkScreenHeight()
	this.screenDepth = this.checkScreenDepth()
	this.os = this.checkOs()
	this.w3c = this.checkW3C()
	this.browserMake = this.checkBrowserMake()
	this.java = navigator.javaEnabled()
	if (navigator.appName.indexOf("Microsoft") != -1){
		this.activeX = activexenabled()
	}
	else {
		this.activeX = false
	}
	this.realMedia = this.checkRealPlayer()
	this.windowsMedia = this.checkWindowsMediaPlayer()
	//alert(this.windowsMedia)
	this.flash = this.checkFlashPlayer()
	//this.bandwidth = this.checkBandwidth()
	this.quickTime = this.checkQuickTimePlayer()
}
