/****** GA urchin.trackLinks trakItems 0.2 (bb_mod 0.2)
Docs: http://www.terenzani.it/54/urchintrack-utility-tracciare-link-esterni-e-download-con-google-analytics
Author: Francesco Terenzani http://www.terenzani.it/ ******/

function urchin(){
	this.trackDownload = '';
	this.trackLinks = function(){
		var a = document.getElementsByTagName('a');
		var domain = /^(http|https):\/\/([a-z-.0-9]+)[\/]{0,1}/i.exec(window.location);
		if( domain == null )
			domain = new Array(3);
		var internalLink = new RegExp("^(http|https):\/\/"+domain[2], "i");
		var isDownload = new RegExp("("+this.trackDownload+")$", "i");
		for(var i = 0; i < a.length; i++){
			if(internalLink.test(a[i].href)){
				if(this.trackDownload && isDownload.test(a[i].href))
					a[i].onclick = function(){
						urchinTracker('/download/'+this.href.replace(/^(http|https):\/\/([a-z-.0-9]+)\//i, '').split('/').join('--'));
					};
			}
			else
				a[i].onclick = function(){
					urchinTracker('/outgoing/'+this.href.replace(/^http:\/\/|https:\/\//i, '').split('/').join('--'));
				};
		};
	};
};

function convertURLforGA( url )
{
	if( url == null )
		return "undefined";
	return url.replace(/^http:\/\/|https:\/\//i, '').split('/').join('--');
}

function trackOutgoingLink( url , target )
{
	//transform URL for GA reporting
	if( eval("window.urchinTracker") != null )
		urchinTracker( "/outgoing/"+convertURLforGA(url) );

	//open new or use curent
	if( target == null || target == "_self" )
		window.document.location.href = url;
	else
		window.open( url );
}

var trackItems = null;

// can return null
function getTrackItems()
{
	if( trackItems == null )
	{
		trackItems = new Object();
		trackItems["debug"] = false;
	}
	return trackItems;
}

function addTrackItem( name , ga , imgSrc )
{
	var tempItems = getTrackItems();
	tempItems[name] = new Object();
	if( ga != null )
		tempItems[name]["ga"] = ga;
	if( imgSrc != null )
		tempItems[name]["imgSrc"] = imgSrc;
}

function setTrackItems( trackItemsTemp )
{
	trackItems = trackItemsTemp;
}

function setTrackItemDebug( debug )
{
	var tempItems = getTrackItems();
	tempItems["debug"] = debug;
}

function trackItem( name )
{
	var items = getTrackItems();
	
	if( items == null )
		return;
	
	var curItem = items[name];
	
	if( items["debug"] )
	{
		if( curItem == null )
		{
			alert( "trackItem("+name+"):does not exist");
		}
		
		var msg = "trackItem:\n";
		msg += "name="+name+"\n";
		msg += "ga="+curItem["ga"]+"\n";
		msg += "imgSrc="+curItem["imgSrc"]+"\n";
		alert(msg);
	}
	
	
	
	if( curItem == null )
		return;
	
	//do google tracking
	if( eval("window.urchinTracker") != null && curItem["ga"] != null && curItem["ga"].length > 0 )
	{
		urchinTracker( curItem["ga"] );
	}
	
	//do action tag
	if( curItem["imgSrc"] != null )
	{
		var imgNode = document.getElementById("tracking");
		if( imgNode != null )
		{
			imgNode.src = curItem["imgSrc"];
		}
		else
		{//create tracking tag if it doesn't exist
			var objNew = document.createElement('img');
			objNew.id = "tracking";
			objNew.src = curItem["imgSrc"];
			objNew.height = 1;
			objNew.width = 1;
			objNew.border = 0;
			document.body.appendChild( objNew );
		}
	}
}

function googleAnalyticsOutgoingLinks( )
{
	urchin = new urchin();
	urchin.trackDownload = "zip|pdf";
	urchin.trackLinks();
}
