var _CSisIE  = (navigator.appVersion.indexOf("MSIE") != -1) ? true : false;
var _CSisWin = (navigator.appVersion.toLowerCase().indexOf("win") != -1) ? true : false;
var _CSisOpera = (navigator.userAgent.indexOf("Opera") != -1) ? true : false;
var _csFirstRun = false;

_csEnvokeTracker();
function _csEnvokeTracker(repeat){
	//Test cookie handling
	var _csUID = _csSetIDCookie("_csUID",true,_csCookieFound("_csUID"));
	var _csSID = _csSetIDCookie("_csSID",false,_csCookieFound("_csSID"));
	
	var _csFlaver;
	var _csReferrer;
	
	//Check for referrer
	_csReferrer = new String(document.referrer);
	var dmn = new String(document.domain);
	dmn = dmn.replace(/^www\./i, "");
	if ((_csReferrer.indexOf("http://www." + dmn) != -1) || (_csReferrer.indexOf("http://" + dmn) != -1) || (_csReferrer.indexOf("https://www." + dmn) != -1) || (_csReferrer.indexOf("https://" + dmn) != -1) || (_csReferrer == "")){
		_csReferrer = "";
	}
	
	if (_csSID){
		//Session cookies are enabled
		if (_csReferrer.replace(/[ ]+/i,"") != ""){
			if (!_csCookieFound("_csReferrer")){
				document.cookie = "_csReferrer=" + escape(_csReferrer);
			}
		}
		if (!_csCookieFound("_csFlaver")){
			try{
				_csFlaver = _csFlashVersion();
				document.cookie = "_csFlaver=" + (_csFlaver ? _csFlaver : "none");
			}catch(er){
				//alert(er);
				document.cookie = "_csFlaver=none";
			}
		}
	}else{
		//Session cookies are not enabled
		try{
			_csFlaver = _csFlashVersion();
		}catch(er){
			//alert(er);			
		}
	}
	try{
		if (_csconvert){
			_csconvert = true;
		}else{
			_csconvert = _csCookieFound("_csconvert");
			if (_csconvert){
				_csKillCookie("_csconvert");
			}
		}
	}catch(er){
		_csconvert = _csCookieFound("_csconvert");
		if (_csconvert){
			_csKillCookie("_csconvert");
		}
	}
	var myDate = new Date();
	var expDate = new Date(myDate.getFullYear()+1,myDate.getMonth(),myDate.getDate(),00,00,00);
	try{
		if (_csuser){
			document.cookie = "_csuser=" + _csuser + ";expires=" + expDate.toGMTString() + ";";
		}else{
			_csuser = _csCookieFound("_csuser");
			if (_csuser){
				document.cookie = "_csuser=" + _csuser + ";expires=" + expDate.toGMTString() + ";";
			}
		}
	}catch(er){
		_csuser = _csCookieFound("_csuser");
		if (_csuser){
			document.cookie = "_csuser=" + _csuser + ";expires=" + expDate.toGMTString() + ";";
		}
	}
	
	var d = new Date();
	var pid = String(d.getFullYear()) + String(d.getMonth()+1) + String(d.getDate()) + String(d.getHours()) + String(d.getMinutes()) + String(d.getSeconds());
	var img = new Image();
	var wdto = setTimeout("_csWatchDog(" + (repeat ? "true" : "") + ")",30000);
	img.onload = function(){
		try{
			clearTimeout(wdto);
		}catch(er){
			
		}
		setTimeout("_csEnvokeTracker(true)",30000);
		_csFirstRun = true;
	}
	var _csURL = "http://www.site-pulse.com/tracker.php?acct=Xx95F8aw3L" + (_csUID ? "&uid=" + _csUID : "") + (_csSID ? "&sid=" + _csSID : "") + (repeat ? "&repeat=true" : "&self=" + _csGetAscii(document.location.toString()) + (_csReferrer ? "&referrer=" + _csGetAscii(_csReferrer) : "") + (_csFlaver ? "&flaver=" + _csFlaver : "") + (_csconvert ? "&convert=true" : "") + (_csuser ? "&user=" + _csGetAscii(_csuser) : "")) + "&pid=" + pid;
	img.src = _csURL;
	_csuser = "";
}

function _csWatchDog(repeat){
	setTimeout("_csEnvokeTracker(" + (repeat ? "true" : "") + ")",1000);
}

function _csCookieFound(cname){
	var cookies = document.cookie;
	var RegEx = new RegExp("\\b" + cname + "\\b=([^;]+)", "i");
	var matches = RegEx.exec(document.cookie);
	if (matches){
		return matches[1];
	}else{
		return false;
	}
}

function _csKillCookie(cname){
	var kcDate = new Date();
	var kcexpDate = new Date(kcDate.getFullYear()-1,kcDate.getMonth(),kcDate.getDate(),00,00,00);
	document.cookie = cname + "=;expires=" + kcexpDate.toGMTString() + ";";
}

function _csGenerateRandom(num){
	if (!num){
		num = 26;
	}
	var cnt = 1;
	var rnum = new Number();
	var rstr = new String();
	while (cnt <= num){
		rnum = Math.floor(Math.random()*122);
		if ((rnum >= 48 && rnum <= 57) || (rnum >= 65 && rnum <= 90) || (rnum >= 97 && rnum <= 122)){
			rstr += String.fromCharCode(rnum);
			cnt++;
		}
	}
	return rstr;
}

function _csSetIDCookie(cname,perm,code){
	if (!code){
		code = _csGenerateRandom(50);
	}
	if (perm){
		var myDate = new Date();
		var expDate = new Date(myDate.getFullYear()+1,myDate.getMonth(),myDate.getDate(),00,00,00);
		document.cookie = cname + "=" + code + ";expires=" + expDate.toGMTString() + ";";
	}else{
		document.cookie = cname + "=" + code;
	}
	return (_csCookieFound(cname) ? _csCookieFound(cname) : false);
}

function _csGetAscii(str){
	var newstr = new String();
	for (var i=0; i<str.length; i++){
		newstr += "" + str.charCodeAt(i).toString(16) + "";
	}
	return newstr;
}

function _csFlashVersion(){
	var flashVer = false;
	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];
			var versionMinor = tempArrayMajor[1];
			var versionRevision = descArray[3];
			if (versionRevision == "") {
				versionRevision = descArray[4];
			}
			if (versionRevision[0] == "d") {
				versionRevision = versionRevision.substring(1);
			} else if (versionRevision[0] == "r") {
				versionRevision = versionRevision.substring(1);
				if (versionRevision.indexOf("d") > 0) {
					versionRevision = versionRevision.substring(0, versionRevision.indexOf("d"));
				}
			}
			var flashVer = versionMajor + "," + versionMinor + "," + versionRevision;
		}
	}
	else if (navigator.userAgent.toLowerCase().indexOf("webtv/2.6") != -1) flashVer = "4,x,x";
	// WebTV 2.5 supports Flash 3
	else if (navigator.userAgent.toLowerCase().indexOf("webtv/2.5") != -1) flashVer = "3,x,x";
	// older WebTV supports Flash 2
	else if (navigator.userAgent.toLowerCase().indexOf("webtv") != -1) flashVer = "2,x,x";
	else if ( _CSisIE && _CSisWin && !_CSisOpera ) {
		for (var i=0; i<15; i++){
			try{
				ver = 15-i;
				axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash." + ver.toString());
				version = axo.GetVariable("$version");
				if (version){
					flashVer = version;
				}
			}catch(er){
				
			}
		}
	}
	var RegEx = /([\d]{1,2}[,]{1}([\d]{1,2}|[x]{1})[,]{1}([\d]{1,2}|[x]{1})([,]{1}[\d]{1,2})?)$/i;
	var matches = RegEx.exec(flashVer);
	if (matches[1]){
		return matches[1];
	}else{
		return false
	}
}