function Automotions(siteId) {
	this.siteId = siteId;
	this.properties = Array();
	this.imgs = Array();
	this.pageviewData = {
	 	'appCodeName':		navigator.appCodeName,
	 	'appName':			navigator.appName,
	 	'fullVersion':		navigator.appVersion,
	 	'platform':			navigator.platform,
	 	'userAgent':		navigator.userAgent,
	 	'url':				location.href,
	 	'referrer':			document.referrer
	};
	// MSIE
	if (/MSIE ([^ ]+);/.test(navigator.userAgent)){
		this.pageviewData['appName'] = "Microsoft Internet Explorer";
		this.pageviewData['fullVersion'] = RegExp.$1;
	}
	// Firefox 
	else if (/Firefox[\/\s](\d+\.\d+)/.test(navigator.userAgent)) {
		this.pageviewData['appName'] = "Firefox";
		this.pageviewData['fullVersion'] = RegExp.$1;
	}
	// Chrome 
	else if (/Chrome\/([^ ]+)/.test(navigator.userAgent)) {
		this.pageviewData['appName'] = "Chrome";
		this.pageviewData['fullVersion'] = RegExp.$1;
	}
	// ChromePlus 
	else if (/ChromePlus\/([^ ]+)/.test(navigator.userAgent)) {
		this.pageviewData['appName'] = "ChromePlus";
		this.pageviewData['fullVersion'] = RegExp.$1;
	}
	// Safari 
	else if (/Version\/([^ ]+) Safari/.test(navigator.userAgent)) {
		this.pageviewData['appName'] = "Safari";
		this.pageviewData['fullVersion'] = RegExp.$1;
	}
	// Opera Mini
	else if (/Opera Mini([^ ]+)/.test(navigator.userAgent)) {
		this.pageviewData['appName'] = "Opera";
		this.pageviewData['fullVersion'] = RegExp.$1;
	}
	// Opera 
	else if (/Opera ([^ ]+)/.test(navigator.userAgent)) {
		this.pageviewData['appName'] = "Opera Mini";
		this.pageviewData['fullVersion'] = RegExp.$1;
	}
	// Konqueror
	else if (/Konqueror\/([^ ]+)/.test(navigator.userAgent)) {
		this.pageviewData['appName'] = "Konqueror";
		this.pageviewData['fullVersion'] = RegExp.$1;
	}
	// Netscape Navigator
	else if (/Navigator\/([^ ]+)/.test(navigator.userAgent)) {
		this.pageviewData['appName'] = "Netscape Navigator";
		this.pageviewData['fullVersion'] = RegExp.$1;
	}
	// America Online Browser
	else if (/America Online Browser ([^;]+)/.test(navigator.userAgent)) {
		this.pageviewData['appName'] = "America Online Browser";
		this.pageviewData['fullVersion'] = RegExp.$1;
	}
	// AOL
	else if (/AOL ([^;]+)/.test(navigator.userAgent)) {
		this.pageviewData['appName'] = "AOL";
		this.pageviewData['fullVersion'] = RegExp.$1;
	}
	// Playstation
	else if (/PLAYSTATION ([^;]+); ([^\)]+)/.test(navigator.userAgent)) {
		this.pageviewData['appName'] = "Playstation " + RegExp.$1;
		this.pageviewDataa['fullVersion'] = RegExp.$2;
	}
	// IceWeasel
	else if (/IceWeasel\/([^ ]+)/.test(navigator.userAgent)) {
		this.pageviewData['appName'] = "IceWeasel";
		this.pageviewData['fullVersion'] = RegExp.$1;
	}
	// In most other browsers, "name/version" is at the end of userAgent 
	else if (/ ([^\/]+)\/([^ ]+)$/.test(navigator.userAgent)) 
	{
		this.pageviewData['appName'] = RegExp.$1;
		this.pageviewData['fullVersion'] = RegExp.$2;
	}

	// Majorversion
	if (/^([0-9]+)/.test(this.pageviewData['fullVersion'])) {
		this.pageviewData['majorVersion'] = RegExp.$1;
	} else {
		this.pageviewData['majorVersion'] = '';
	}
	
	// Title
	var el = document.getElementsByTagName('title');
	if (el.length>0) {
		this.pageviewData['title'] = el[0].innerHTML;
	}
	
	// Google ID's
	if (/[?&]utm_source=([^&]+)/.test(location.search)) {
		this.pageviewData['utm_source'] = RegExp.$1;
	}
	if (/[?&]utm_medium=([^&]+)/.test(location.search)) {
		this.pageviewData['utm_medium'] = RegExp.$1;
	}
	if (/[?&]utm_campain=([^&]+)/.test(location.search)) {
		this.pageviewData['utm_campain'] = RegExp.$1;
	}
	if (/[?&]utm_term=([^&]+)/.test(location.search)) {
		this.pageviewData['utm_term'] = RegExp.$1;
	}
	if (/[?&]utm_content=([^&]+)/.test(location.search)) {
		this.pageviewData['utm_content'] = RegExp.$1;
	}
	
	var ls = document.getElementsByTagName('a');
	eval("var ce = function(e) { e = e || event; var element = (e.srcElement || e.target); am = new Automotions(); var date = new Date(); var url = 'http://t.mb.automotions.nl/js.php?siteid=" + this.siteId + "&click=' + escape(am.serialize({ title: element.innerHTML, url: element.href })) + '&cache='+date; var img = new Image(); img.src = url; am.imgs[am.imgs.length] = img; }");
	for (i in ls) {
		if (ls[i].tagName=='A') {
			if (ls[i].addEventListener) {
				ls[i].addEventListener('click', ce, false);
			} else if (ls[i].attachEvent) {
				ls[i].attachEvent('onclick', ce);
			}
		}
	}
	
	this.addProperty = function(property, value) {
		this.properties[this.properties.length] = { property: property, value: value };
	}
	
	this.serialize = function(_obj) {
		// Gecko's toSource function does not serialize in an PHP-compatible way
		// Do it the hard way
		switch (typeof _obj) {
			// numbers, booleans, and functions are trivial:
			// just return the object itself since its default .toString()
			// gives us exactly what we want
			case 'number':
			case 'boolean':
			case 'function':
				return _obj;
				break;
			// for JSON format, strings need to be wrapped in quotes
			case 'string':
				return '"' + _obj + '"';
				break;
			case 'object':
				var str;
				if (_obj.constructor === Array || typeof _obj.callee !== 'undefined') {
					str = '[';
					var i, len = _obj.length;
					for (i = 0; i < len-1; i++) { str += this.serialize(_obj[i]) + ','; }
					str += this.serialize(_obj[i]) + ']';
				} else {
					str = '{';
					var key;
					for (key in _obj) { str += this.serialize(key) + ':' + this.serialize(_obj[key]) + ','; }
					str = str.replace(/\,$/, '') + '}';
				}
				return str;
				break;
			default:
				return 'UNKNOWN';
				break;
		}
	}
	
	this.go = function() {
		var url = 'http://t.mb.automotions.nl/js.php?siteid=' + this.siteId + '&pageview=' + escape(this.serialize(this.pageviewData));
		if (this.properties.length>0) {
			url+= '&properties=' + escape(this.serialize(this.properties));
		}
		var date = new Date();
		var img = new Image();
		img.src = url+'&cache='+date;
		this.imgs[this.imgs.length] = img;
	}
	
	this.passThrough = function(url) {
		if (/\?/.test(url)) {
			url+= '&';
		} else {
			url+= '?';
		}
		url+= 'p=868fee140094d877e2a1b7199281159e290176&s=17nhqokv8qg35kgjm91rj1bpb6';
		var img = new Image();
		img.src = url;
		this.imgs[this.imgs.length] = img;
	}
}


