﻿/**
* Use this function to track external and download links 
* with Urchin and Google analytics
* 
* Vladimr Falcon Piva (CPS-IT)
* @param object linkObj javascript link object
* @param boolean doUrchin add Urchin tracking true or false
* @param boolean doGoogleAnalytics add Google analytics tracking true or false
*
* Usage:
* External links  
*	<a onclick="linkTraking(this,true,true);" href="http://www.external_url.com">exmaple External link</a>
*
* Dowloads 
* 	<a onclick="linkTraking(this,true,true);" class="download" href="http://www.your_domain.com/file.ext">exmaple Download link</a>
*
* Typo3 Implementation (excluding menu-links)
* config.ATagParams = onclick="linkTraking(this,true,false);"
*
* Download links need to have a property class  downloads Exp: class="download" 
*
* Internal shortcut to external pages need to have a property class external-link Exp: class="external-link" 
* var externalLinkClassNamePrefix = new RegExp('external-link');
* 
**/
function linkTraking(linkObj, doUrchin, doGoogleAnalytics) {
	// new regular exp. with domain name
	var siteUrl = new RegExp(location.hostname);
	var linkUrl = makeDirFromUrl(linkObj.href);

	// Get folder suffix
	if (linkObj.title && linkObj.title != ''){
		folderSuffix = makeDirFromTitle(linkObj.title);
	}else{
		folderSuffix = siteUrl;
	}
	
	var outboundPrefix = '/banner/';
	
	// Downloads Tracking
	var dowloadClassName = new RegExp('download');
	var downloadPrefix = '/downloads/';
	
	// Typo3 track shortcut pages to external links
	var externalLinkClassNamePrefix = new RegExp('external-link');
	
			
	// Check if the link is internal (>-1) or external == -1 	
	if(linkUrl.search(siteUrl) == -1 ){	
		
		// Track Urchin
		if (doUrchin){
			urchinTracker(outboundPrefix + folderSuffix);			
			//alert('1 Internal with external class Name Prefix' + outboundPrefix + folderSuffix);	
		}
		
		// Track Google analytics
		if (doGoogleAnalytics){
			pageTracker._trackPageview(outboundPrefix + folderSuffix);
		}
	}else{
		// Internal Links example shortcutpages		
		if (linkObj.className.search(externalLinkClassNamePrefix) != -1){
			
			/* Disable downloads tracking
			if (linkObj.className.search(dowloadClassName) != -1 ) {
				var folderPrefix = downloadPrefix ;
			}
			*/			
			
			if (linkObj.className.search(externalLinkClassNamePrefix) != -1) {
				var folderPrefix = '';
			}
		
			// Track Urchin
			if (doUrchin){
				urchinTracker(folderPrefix + linkUrl);
				//alert('2 Internal with external class Name Prefix - ' + folderPrefix + linkUrl);				
			}
			
			// Track Google analytics
			if (doGoogleAnalytics){
				pageTracker._trackPageview(folderPrefix + linkUrl);					
			}
		}
	}
}

function makeDirFromTitle (title){	
	// remove white spaces params
	title = title.replace(/ /g,"_");
	return title;
}


function makeDirFromUrl (url){
	// remove http and https protocols
	url = url.replace(/^(http:\/\/)|^(https:\/\/)/,"");
	
	// replace dots (.) with underscore (_)
	//url = url.replace(/\./g,"_");
	
	// remove url params
	url = url.replace(/\?.+/,"");
	
	if (!url.match(/\/$/)) {
		url = url  + '/';
	}
	
	return url;
}
