/*
// required settings in tracking script
//  _gaq.push(['_setDomainName', 'none']);
//  _gaq.push(['_setAllowLinker', true]);
//
// note: different behavior for left and right mouse click?
//
*/

// Copyright 2011 Netprofiler
var np={

	// Settings
	trackOutboundLinks:	true,
	trackCrossDomain:	true,
	domains:			['.dehaagsehogeschool.nl','.thehagueuniversity.com'],
	fileTypes:          ['.zip', '.pdf', 'download_file'],
	labelExternalLink:	'ext',
	labelDownloadLink:	'download',
	labelMailtoLink:	'mailto',

	// Functions
	l:function(o,t,cb,c){if(o.addEventListener){o.addEventListener(t,cb,c)}else{o.attachEvent('on'+t,cb)}},
	m:function(d,h){for(var i=0;i<d.length;i++){if(h.indexOf(d[i])>-1){if(h.indexOf(document.domain)==-1){return true;}}}return false;},
	t:function(e){var t;if(!e)var e=window.event;if(!e)return;if(e.target)t=e.target;else if(e.srcElement)t=e.srcElement;if(t.nodeType==3)t=t.parentNode;return t;},
	i:function(){

		var a=document.getElementsByTagName('a');
		var f=document.getElementsByTagName('form');

		// Apply outbound tagging to anchors
		if (np.trackOutboundLinks) {

			for(var i=0;i<a.length;i++){
				// Outbound
				var k = 0;
				for(var j=0;j<np.domains.length;j++){
					if(a[i].href.indexOf(np.domains[j])==-1){
						k++;
					}
				}

				if(k==np.domains.length && a[i].href.indexOf('mailto:')==-1){
                    // Add event listener onClick
				    var onClick = function (e) {
                        var s = this.href.split("//");
						_gaq.push(['_trackPageview','/'+np.labelExternalLink+'/'+s[1]]);
						if(typeof(console)!='undefined')console.log("onClick: _gaq.push(['_trackPageview','/"+np.labelExternalLink+"/"+s[1]+"']);");
					};
					np.l(a[i],'click',onClick,true);
				}

				// Download
				for (var j=0;j<np.fileTypes.length;j++) {
					if (a[i].href.indexOf(np.domains[0]) != -1 && a[i].href.indexOf(np.fileTypes[j]) != -1) {
						// Add event listener onClick
						var onClick=function(e){
							var s = (np.t(e)).href.split(np.domains[0]);
							_gaq.push(['_trackPageview','/'+np.labelDownloadLink+s[1]]);
							if(typeof(console)!='undefined')console.log("onClick: _gaq.push(['_trackPageview','/"+np.labelDownloadLink+s[1]+"']);");
						};
						np.l(a[i],'click',onClick,true);
						break;
					}
				}

				// Mail to
				if (a[i].href.indexOf("mailto:") != -1) {
					var onClick=function(e){
						var s = (np.t(e)).href.split(':');
						_gaq.push(['_trackPageview','/'+np.labelMailtoLink+'/'+s[1]]);
						if(typeof(console)!='undefined')console.log("onClick: _gaq.push(['_trackPageview','/"+np.labelMailtoLink+'/'+s[1]+"']);");
					};
					np.l(a[i],'click',onClick,true);
				}				
			}
		}

		// Apply crossdomain tagging
		if(np.trackCrossDomain){
			// Tag anchors
			for(var i=0;i<a.length;i++){

				// Match link to external domain function
				if(np.m(np.domains,a[i].href)){ 
					var onClick=function(e){
						_gaq.push(['_link',(np.t(e)).href]);
						if(typeof(console)!='undefined')console.log("onClick: _gaq.push(['_link','"+(np.t(e)).href+"']);");
					};
					np.l(a[i],'click',onClick,true);
					a[i].setAttribute('onclick',a[i].getAttribute('onclick')+';return false;');
				}

			}

			// Tag forms
			for(var i=0;i<f.length;i++){

				// Match form post to external domain function
				if(np.m(np.domains,f[i].action)){
					var onSubmit=function(e){
						_gaq.push(['_linkByPost',(np.t(e))]);
						if(typeof(console)!='undefined')console.log("onSubmit: _gaq.push(['_linkByPost',"+(np.t(e))+"]);");
					};
					np.l(f[i],'submit',onSubmit,true);
				}

			}
		}
	}

};

// Execute at onLoad event
np.l(window,'load',np.i,true);
