/*** Copyright 2008 - Figureseven, Inc. ***/
var _f7a = new Object({
	v: '1.0',
	id: null,
	session: null,
	pid: null,
	d: document,
	acct: null,
	imgBase: ((document.location.protocol=='https:') ? 'https://' : 'http://') + 'www.f7analytics.com/',
	gifPath: '_f7.gif',
	customValues: {},
	
	trackPage: function(pageId,pageVersion,languageId,siteId) {
		if (this.acct == null) {
			alert('Account Number not set!');			
		} else {
			// Create unique page id
			this.pid = Math.floor(Math.random() * 999999);

			// Add event listeners
			if (window.addEventListener) {
				window.addEventListener("beforeunload", _f7a.captureExit, false);
				window.addEventListener("blur", _f7a.captureBlur, false);
				window.addEventListener("mousedown", _f7a.captureClick, false);
			} else if (window.attachEvent) {
				window.attachEvent("onbeforeunload", _f7a.captureExit);
				window.attachEvent("onblur", _f7a.captureBlur);
				document.attachEvent("onmousedown", _f7a.captureClick);
			} //end if-elseif

			// Get cookie
			_f7a.getCookie();
			
			// Set id/session
			if (_f7a.id == null || _f7a.session == null) {
				if (_f7a.id == null) { _f7a.setCookie('_f7id',this.createGuid(),3650); }
				if (_f7a.session == null) { _f7a.setCookie('_f7session',this.createSid(),null); }
				_f7a.getCookie();
			} // end if

			// Set page specific values
			var pageInfo = ((pageId==null) ? '' : '&page=' + pageId) + ((pageVersion==null) ? '' : '&pv=' + pageVersion) + ((languageId==null) ? '' : '&lang=' + languageId) + ((siteId==null) ? '' : '&site=' + siteId);

			// Set referrer
			var referrer = ((document.referrer=='') ? '' : '&ref=' + _f7a.urlEncode(document.referrer));
			
			// Write tracking image and capture hit
			document.write('<img id="_f7tracker" src="' +  _f7a.imgBase + _f7a.gifPath + '?acct=' + _f7a.acct + '&a=l&id=' + _f7a.id + '&sid=' + _f7a.session + '&pid=' + _f7a.pid + _f7a.getStats() + pageInfo + '&t=' + _f7a.urlEncode(document.title) + referrer + '&tz=' + _f7a.getTimeZone() + '&v=' + _f7a.v + '&r=' + Math.floor(Math.random()*999999) + '" />');
		} //end else
	}, //end function

	captureExit: function() { 
		document.getElementById('_f7tracker').src = _f7a.imgBase + _f7a.gifPath + '?acct=' + _f7a.acct + '&a=u&id=' + _f7a.id + '&sid=' + _f7a.session + '&pid=' + _f7a.pid + '&tz=' + _f7a.getTimeZone() + '&v=' + _f7a.v + '&r=' + Math.floor(Math.random()*999999); 
	}, //end function
	
	captureBlur: function() { 
		// Remove Blur Events
		if (window.removeEventListener) { window.removeEventListener("blur", _f7a.captureBlur, false); }
		try { if (window.detachEvent) { window.detachEvent("onblur", _f7a.captureBlur); } } catch(e) { alert(e); }; 
		
		document.getElementById('_f7tracker').src = _f7a.imgBase + _f7a.gifPath + '?acct=' + _f7a.acct + '&a=b&id=' + _f7a.id + '&sid=' + _f7a.session + '&pid=' + _f7a.pid + '&tz=' + _f7a.getTimeZone() + '&v=' + _f7a.v + '&r=' + Math.floor(Math.random()*999999); 
	
		// Add Focus Events
		if (window.addEventListener) {
			window.addEventListener("focus", _f7a.captureFocus, false);
		} else if (window.attachEvent) {
			window.attachEvent("onfocus", _f7a.captureFocus);
		} 
	}, //end function
	
	captureFocus: function() {
		// Remove Focus Events
		if (window.removeEventListener) { window.removeEventListener("focus", _f7a.captureFocus, false); }
		try { if (window.detachEvent) { window.detachEvent("onfocus", _f7a.captureFocus); } } catch(e) { alert(e); }; 
		
		document.getElementById('_f7tracker').src = _f7a.imgBase + _f7a.gifPath + '?acct=' + _f7a.acct + '&a=f&id=' + _f7a.id + '&sid=' + _f7a.session + '&pid=' + _f7a.pid + '&tz=' + _f7a.getTimeZone() + '&v=' + _f7a.v + '&r=' + Math.floor(Math.random()*999999); 
	
		// Add Blur Events
		if (window.addEventListener) {
			window.addEventListener("blur", _f7a.captureBlur, false);
		} else if (window.attachEvent) {
			window.attachEvent("onblur", _f7a.captureBlur);
		} 
	}, //end function
	
	captureClick: function(e) { 
		if (window.event) {
			var el = window.event;
			var target = el.srcElement;
		} else {
			var el = e;
			var target = e.target;
		}
		
		if (target.nodeName == 'A') {
			this._f7click = el.clientX + '|' + el.clientY + '|' + _f7a.urlEncode(target);
			document.getElementById('_f7tracker').src = _f7a.imgBase + _f7a.gifPath + '?acct=' + _f7a.acct + '&a=c&id=' + _f7a.id + '&sid=' + _f7a.session + '&pid=' + _f7a.pid + '&tz=' + _f7a.getTimeZone() + '&v=' + _f7a.v + '&click=' + this._f7click + '&r=' + Math.floor(Math.random()*999999); 
		} else {
			this._f7click = '';
		}
	}, //end function
	
	getCookie: function() {
		var cookie = _f7a.d.cookie;

		if (cookie.length>0) {
			var cname = '_f7id';
			var start=cookie.indexOf(cname + "=");
			if (start != -1) { 
				start = start + cname.length + 1;
				end = cookie.indexOf(";",start);
				if (end==-1) { end = cookie.length; }
				this.id = unescape(cookie.substring(start,end));
			}
			
			var cname = '_f7session';
			var start=cookie.indexOf(cname + "=");
			if (start != -1) { 
				start = start + cname.length + 1;
				end = cookie.indexOf(";",start);
				if (end==-1) { end = cookie.length; }
				this.session = unescape(cookie.substring(start,end));
			}
		} 		
		return true;
	}, //end function
	
	setCookie: function(name,value,expire) {
		var expDate=new Date();
		expDate.setDate(expDate.getDate()+expire);
		document.cookie = name+'='+escape(value)+((expire==null) ? '' : ';path=/;expires='+expDate.toGMTString());
		return true;
	}, //end function

	createGuid: function() {
		var id = '';
		var r = Math.floor(Math.random()*999);
		var r2 = Math.floor(Math.random()*999);
		id =+ r +''+ this.getDateString().toString() + r2;
		return id;
	}, //end function

	createSid: function() {
		var id = '';
		var r = Math.floor(Math.random()*999);
		id =+ r + this.getDateString().toString();
		return id;
	}, //end function
	
	getDateString: function() {
		var date = new Date();	
		var y = date.getFullYear().toString();
		var m = '0' + (date.getMonth()+1);
		var d = '0' + (date.getDate());
		var h = '0' + (date.getHours());
		var n = '0' + (date.getMinutes());
		var s = '0' + (date.getSeconds());
		var id = m.substring(m.length-2,m.length) + d.substring(d.length-2,d.length) + y.substring(y.length-2,y.length) + h.substring(h.length-2,h.length) + n.substring(n.length-2,n.length) + s.substring(s.length-2,s.length);
		return id;
	}, //end function

	getTimeZone: function() {
		var date = new Date();	
		return (date.getTimezoneOffset()/60);
	}, //end function
	
	getStats: function() {
		 var sr='-',sc='-',ul='-',fl='-',cs='-',je=1;
		 var n=navigator;
		 if (self.screen) {
			sr = screen.width+"x"+screen.height;
			sc = screen.colorDepth+"-bit";
		 } else if (self.java) {
			var j = java.awt.Toolkit.getDefaultToolkit();
			var s = j.getScreenSize();
			sr = s.width+"x"+s.height;
		 }
		 if (n.language) {
			 ul = n.language.toLowerCase(); 
		} else if (n.browserLanguage) { 
			ul = n.browserLanguage.toLowerCase();
		}
		
		je = n.javaEnabled()?1:0;
		fl = this.getFlash();

		if (document.characterSet) { 
			cs=(document.characterSet);
		} else if (document.charset) {
			cs=(document.charset);
		}
		return '&cs=' + _f7a.urlEncode(cs) + '&sr=' + _f7a.urlEncode(sr) + '&sc=' + _f7a.urlEncode(sc) + '&ul=' + _f7a.urlEncode(ul) + '&je=' + je + '&fl=' + _f7a.urlEncode(fl);
	}, //end function
	
	getFlash: function() {
		var f="-",n=navigator;
		if (n.plugins && n.plugins.length) {
			for (var ii=0;ii<n.plugins.length;ii++) {
				if (n.plugins[ii].name.indexOf('Shockwave Flash')!=-1) {
					f=n.plugins[ii].description.split('Shockwave Flash ')[1];
					break;
				} //end if
			} //end for
		} else {
			var fl;
			try {
				fl = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.7");
				f = fl.GetVariable("$version");
			} catch(e) {}
			if (f == "-") {
				try {
					fl = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.6");
					f = "WIN 6,0,21,0";
					fl.AllowScriptAccess = "always";
					f = fl.GetVariable("$version");
				} catch(e) {}
			}
			if (f == "-") {
				try {
					fl = new ActiveXObject("ShockwaveFlash.ShockwaveFlash");
					f = fl.GetVariable("$version");
				} catch(e) {}
			}
			if (f != "-") {
				f = f.split(" ")[1].split(",");
				f = f[0] + "." + f[1] + " r" + f[2];
			}
		}
		return f;			
	}, //end function

	urlEncode: function(str) {
		if (typeof(encodeURIComponent) == 'function') {
			return encodeURIComponent(str);
		} else {
			return escape(str);
		}
	} //end function

});