/* Adapted by Sean Carlos http://www.antezeta.com/blog/google-analytics-tracking-scripts from http://ronaldheft.com/code/analyticator/ (donate: http://ronaldheft.com/code/donate/)

	You may freely use this code as long as you maintain the above credits.  Links to antezeta.com welecome.

	 v 1.0 beta 2010-08-30 changes from Ronald Heft's Analyticator 6.1.1 version
	
	1) Use onmouse up instead of onclick in order to track all mouse clicks (left, center & right buttons).  Side effect: keyboard enter won't be tracked.
	2) Allow separate configuration of page view vs. event tracking for outgoing links and downloads.  For downloads, allow for configuration based on file type.
	3) Allow for parameterization of Event category lables.

	Open issues: 

	a) should external downloads be tracked as downloads or external link clicks.  Currently tracked as downloads.
	b) would like to track onclick + oncontextmenu events in order to track left, right mouse buttons + enter key.  Currently tracking 3 mouse buttons.

*/
// Note: logic currently tracks external downloads as downloads rather than exit clicks.

// File extensions for non-document downloads
var analyticsFileTypes = ['exe','xpi','mp3','vcf','diff','zip','gz','tgz','rar','js','gif','png','jpeg','jpg','css','wma','mov','avi','wmv','mpeg','swf'];
// File extensions for document downloads
var analyticsDocFileTypes = ['docx','xlsx','pptx','pdf','odt','ods','odp','doc','xls','ppt','txt'];

// Track as non-document download clicks as events?
var analyticsDLEventTracking = 'yes';  // Accepts 'yes  Any other value, no.

// Track as document download clicks as events?
var analyticsDocDLEventTracking = 'no';  // Accepts 'yes  Any other value, no.

// virtual directory in Google Analytics for downloads tracked as page views
var analyticsDownloadsPrefix = '/download/';

var analyticsDownloadCategory = 'Downloads';

// Track Outbound clicks as events?
var analyticsEventTracking = 'yes'; // Accepts 'yes'.  Any other value, no.

// virtual directory in Google Analytics for external links tracked as page views.
var analyticsOutboundPrefix = '/outgoing/';

var analyticsOutboundCategory = 'Outbound Traffic';

/* --- end configuration --- */

jQuery(document).ready(function() {

	jQuery('a').each(function() {
		var a = jQuery(this);
		var href = a.attr('href');
		
		// Check if the a tag has a href, if not, stop for the current link
		if ( href == undefined )
			return;
		
		var url = href.replace('http://','').replace('https://','');
		var hrefArray = href.split('.').reverse();
		var extension = hrefArray[0].toLowerCase();
		var hrefArray = href.split('/').reverse();
		var domain = hrefArray[2];
		var downloadTracked = false;
	
	 	// If the link is a non-document download
		if (jQuery.inArray(extension,analyticsFileTypes) != -1) {
			// Mark the link as already tracked
			downloadTracked = true;
			
			// Add the tracking code
			a.mouseup(function() {
				if ( analyticsDLEventTracking == 'yes' ) {
					_gaq.push(['_trackEvent', 'Downloads', extension.toUpperCase(), href]);
				} else
					_gaq.push(['_trackPageview', analyticsDownloadsPrefix + url]);
			});
		}

	 	// If the link is a document download.  Include check to insure link not already tracked due to file extension specified in both document and non-document arrays by mistake
		if ( (jQuery.inArray(extension,analyticsDocFileTypes) != -1)  && ( downloadTracked == false ) ) {
			// Mark the link as already tracked
			downloadTracked = true;
			
			// Add the tracking code
			a.mouseup(function() {
				if ( analyticsDocDLEventTracking == 'yes' ) {
					_gaq.push(['_trackEvent', analyticsDownloadCategory, extension.toUpperCase(), href]);
				} else
					_gaq.push(['_trackPageview', analyticsDownloadsPrefix + url]);
			});
		}
	
		// If the link is external
	 	if ( ( href.match(/^http/) ) && ( !href.match(document.domain) ) && ( downloadTracked == false ) ) {
	    	// Add the tracking code
			a.mouseup(function() {
				if ( analyticsEventTracking == 'yes' ) {
					_gaq.push(['_trackEvent', analyticsOutboundCategory, href.match(/:\/\/(.[^/]+)/)[1], href]);
				} else
					_gaq.push(['_trackPageview', analyticsOutboundPrefix + url]);
			});
		}
	});

});



