/*
*	Firstcontact statistics.
*	For more information see http://www.firstcontactdesign.nl/informatie.
*/

function addStat( p_iWebsite, p_sExtra )
{
	var l_sReferrer = document.referrer;
	var l_sSearchTerm = getSearchTerms( l_sReferrer );
	var l_sUserSpecs = getUserSpecs();
	var l_sId = getCookie();

	if( p_sExtra == undefined )
		p_sExtra = '';

	var l_sGet = "?website=" + p_iWebsite + "&extra=" + p_sExtra + "&ref=" + l_sReferrer + "&cb=" + l_sId[ 0 ] + "&cid=" + l_sId[ 1 ] + "&search=" + l_sSearchTerm + l_sUserSpecs;
	
	var l_oImage = new Image( 1, 1 );
	l_oImage.src = "http://stats.firstcontactdesign.nl/_s" + l_sGet;
	l_oImage.onload = function() { return; }
}

/*
* Get search terms
*/
function getSearchTerms( p_sReferrer )
{
	if ( p_sReferrer.indexOf("?") == -1 ) return "";
	var l_sGetVars = p_sReferrer.substr( p_sReferrer.indexOf( "?" ) + 1 );
	var l_aGetVars = l_sGetVars.split( "&" );
	for ( i=0; i < l_aGetVars.length; i++ ) {
		var l_aValues = l_aGetVars[i].split("=");
		if ( l_aValues.length == 1 ) continue;
		if ( l_aValues[0] == "q" || l_aValues[0] == "p" ) {
			var l_sTerm = unescape( l_aValues[1].replace(/\+/g," ")).split(/\s+/ );
			return l_sTerm;
		}
	} 
	return "";
}

/*
* Get user information;
* Browser, Browser version, Operating system, Resolution, Language.
*/
function getUserSpecs()
{
	var l_sBrowser = "", l_sBrowserVersion = "", l_sOperatingSystem = "", l_sResWidth = "", l_sResHeight = "", l_sLanguage = "";

	var l_sBrowser = BrowserDetect.browser;
	var l_sBrowserVersion = BrowserDetect.version;
	var l_sOperatingSystem = BrowserDetect.OS;

	if (self.screen) {
		var l_sResWidth = screen.width;
		var l_sResHeight = screen.height;
	} else if( self.java ) {
		var l_oJava = java.awt.Toolkit.getDefaultToolkit();
		var l_oSize = l_oJava.getScreenSize();
		l_sResWidth = l_oSize.width;
		l_sResHeight = l_oSize .height;
	}

	var l_sLanguage = navigator.language  || navigator.browserLanguage;
	var l_aLanguage = l_sLanguage.split("-");

	return "&browser=" + l_sBrowser + "&browserv=" + l_sBrowserVersion + "&os=" + l_sOperatingSystem + "&reswidth=" + l_sResWidth + "&resheight=" + l_sResHeight + "&lang=" + l_aLanguage[0]; 
}

/*
* Check if a cookie exists. If not, create new cookie.
*/
function getCookie()
{
	var l_sCookie = readCookie( 'fcid' );
	if( l_sCookie ) return new Array( true, l_sCookie );

	var l_oDate = new Date
	var l_sId = l_oDate.getSeconds().toString() + Math.floor( Math.random()*1000 ).toString() + Math.floor( Math.random()*1000 );
	document.cookie = 'fcid=' + l_sId + '; path=/';
	return new Array( false, l_sId );
}

/*
* Read a cookie
*/
function readCookie( p_sName )
{

	var l_sName = p_sName + "=";
	var l_aCookies = document.cookie.split(';');
	for( var i=0 ; i < l_aCookies.length ; i++)
	{
		var l_sCookie = l_aCookies[ i ];
		while ( l_sCookie.charAt(0) == ' ' ) l_sCookie = l_sCookie.substring( 1, l_sCookie.length );
		if ( l_sCookie.indexOf( l_sName ) == 0) return l_sCookie.substring( l_sName.length, l_sCookie.length );
	}
	return null;
}

/*
* Browser and OS detection
*/
var BrowserDetect = {
	init: function () {
		this.browser = this.searchString(this.dataBrowser) || "";
		this.version = this.searchVersion(navigator.userAgent)
			|| this.searchVersion(navigator.appVersion)
			|| "";
		this.OS = this.searchString(this.dataOS) || "";
	},
	searchString: function (data) {
		for (var i=0;i<data.length;i++)	{
			var dataString = data[i].string;
			var dataProp = data[i].prop;
			this.versionSearchString = data[i].versionSearch || data[i].identity;
			if (dataString) {
				if (dataString.indexOf(data[i].subString) != -1)
					return data[i].identity;
			}
			else if (dataProp)
				return data[i].identity;
		}
	},
	searchVersion: function (dataString) {
		var index = dataString.indexOf(this.versionSearchString);
		if (index == -1) return;
		return parseFloat(dataString.substring(index+this.versionSearchString.length+1));
	},
	dataBrowser: [
		{ 	string: navigator.userAgent,
			subString: "OmniWeb",
			versionSearch: "OmniWeb/",
			identity: 1
		},
		{
			string: navigator.vendor,
			subString: "Apple",
			identity: 2
		},
		{
			prop: window.opera,
			identity: 3
		},
		{
			string: navigator.vendor,
			subString: "iCab",
			identity: 4
		},
		{
			string: navigator.vendor,
			subString: "KDE",
			identity: 5
		},
		{
			string: navigator.userAgent,
			subString: "Firefox",
			identity: 6
		},
		{
			string: navigator.vendor,
			subString: "Camino",
			identity: 7
		},
		{
			string: navigator.userAgent,
			subString: "Netscape",
			identity: 8
		},
		{
			string: navigator.userAgent,
			subString: "MSIE",
			identity: 9,
			versionSearch: "MSIE"
		},
		{
			string: navigator.userAgent,
			subString: "Gecko",
			identity: 10,
			versionSearch: "rv"
		},
		{
			string: navigator.userAgent,
			subString: "Mozilla",
			identity: 11,
			versionSearch: "Mozilla"
		}
	],
	dataOS : [
		{
			string: navigator.platform,
			subString: "Win",
			identity: 1
		},
		{
			string: navigator.platform,
			subString: "Mac",
			identity: 2
		},
		{
			string: navigator.platform,
			subString: "Linux",
			identity: 3
		}
	]

};
BrowserDetect.init();