﻿/****************************************************
     Based on Brian Clifton's script
	 Url: http://www.advanced-web-metrics.com
	 
	 Author: Julien Bissonnette (Magnet Search Marketing)
	 
	 Version: 2.07
****************************************************/

function customLink(gaTracker, utm_category, utm_action, utm_label, utm_value){
	if(typeof(utm_action)=="undefined"||utm_action==""){
		utm_action=utm_category;
	}
	gaTracker._trackEvent(utm_category, utm_action, utm_label, utm_value);
}

function _AttachEvent(_mLink, _mEvent, _mMethod, _mCurrentOnclick) {
	if (_mLink.attachEvent) {
		var f = new Function(_mMethod + _mCurrentOnclick);
		_mLink.onclick = f;
	} else {
		_mLink.setAttribute(_mEvent, _mMethod + _mCurrentOnclick);
	} 
}

// Only links written to the page (already in the DOM) will be tagged
// This version is for ga.js (July 15th 2008)

function addLinkerEvents(pageTrackerName, extTrack, extDoc, utm_label) {
	var as = document.getElementsByTagName("a");
	var areas = document.getElementsByTagName("area");
	
	var tags = new Array(as.length+areas.length);
	for(var i=0; i<as.length; i++) {
		tags[i]=as[i];
	}
	for(var i=0; i<areas.length; i++) {
		tags[as.length+i]=areas[i];
	}

	/*If you edit no further below this line, Top Content will report as follows:
    /custom/exit/url-of-external-site
    /downloads/filename
    /mailto/email-address-clicked
	*/
	
	for(var i=0; i<tags.length; i++) {
		var flag = true;
		var found = false;
		var current_host = null;
		
		var currentOnclick = '';
		if (tags[i].attachEvent)  {
			currentOnclick = tags[i].attributes['onclick'].value;
		} else {
			currentOnclick = tags[i].getAttribute("onclick");
		}
		
		tmp = (currentOnclick != null) ? String(currentOnclick) : '';
		tmp = tmp.replace(/javascript:/i, '');
		
		if (tmp.indexOf('urchinTracker') > -1 || tmp.indexOf('_trackPageview') > -1 || tmp.indexOf('customLink') > -1) continue;
		if (tags[i].href.indexOf('google-analytics.com') != -1 || tags[i].href.toLowerCase().indexOf('javascript:') != -1) continue;
		
		// Fix Magnet to prevent exit links on <a> tags without href attribute
		if (tags[i].href.length > 0) {
			// Tracking electronic documents
			for (var j=0; j<extDoc.length; j++) {
				if (tags[i].href.search(eval('/'+extDoc[j].replace(/\./,'\\.')+'$/i')) != -1) {
					var result = tags[i].href.replace(/https?:\/\//, '');
					_AttachEvent(tags[i], 'onclick', "customLink("+pageTrackerName+",'download','"+result+"','"+utm_label+"');", tmp);
					found = true;
					break;
				}
			}

			// Tracking mailto links
			if (tags[i].href.search(/mailto:/i) != -1) {
				var result = tags[i].href.replace(/mailto:/i, '');
				_AttachEvent(tags[i], 'onclick', "customLink("+pageTrackerName+",'mailto','"+result+"','"+utm_label+"');", tmp);
				found = true;
			}
		
			if (found == false) {
				// Tracking outbound links
				for (var j=0; j<extTrack.length; j++) {					
					var regex = new RegExp('^(http|https):\/\/([^/]*)'+extTrack[j]+'.*', "i");
					if (regex.test(tags[i].href)) {
						flag = false;
						break;
					}
				}
			
				if (flag) {
					var result = tags[i].href.replace(/https?:\/\//, '');
					_AttachEvent(tags[i], 'onclick', "customLink("+pageTrackerName+",'exit','"+result+"','"+utm_label+"');", tmp);
				}
			}
		}
	}
	
	// Debugging
	//var as = document.getElementsByTagName("a");
	//var areas = document.getElementsByTagName("area");

	//for(var i=0; i<as.length; i++) {
	//	alert(as[i].getAttribute("onclick"));
	//}
}