/*
 * Dynamic click tracking v0.2
 *
 * Uses jQuery and Google Analytics to track 
 * clicks dynamically.
 *
 * Copyright © 2011 Daniel Mitchell
 * All rights reserved.
 *
 * Usage example:
 *
 * <a href="mailto:dan@creativeedge.co.uk" rel="tracking[category,action,label]">Click here to email me</a>
 *
 */
 
var eventtracking = {
	
	 hostname: ''
	
	,init: function() {

		eventtracking.hostname = window.location.hostname;
		
		if( jQuery && _gaq ) {
			
			eventtracking.init_trackinglinks();
			eventtracking.init_auto_externallinks();
			eventtracking.init_auto_maillinks();
			eventtracking.init_auto_pdflinks();
			
		}
		
	}
	
	,init_trackinglinks: function() {

		jQuery("a[rel*='tracking']").click(function(e) {
			var config = eventtracking.parse_element( $(this) );
			var category = config[0];
			var action = config[1];
			var label = config[2];
			
			eventtracking.track_event( category, action, label );
		});

	}
	
	,init_auto_externallinks: function() {

		jQuery("a[href^='http']").click(function(e) {
			var rel = $(this).attr('rel');
			if(rel) {
				if( rel.match("tracking") ) {
					return;
				}
			}
			var url = $(this).attr('href');
			if( url.match( eventtracking.hostname ) ) {
				return;
			}
			var config = eventtracking.parse_element( $(this) );
			if( config ) {
				var category = config[0];
				var action = config[1];
				var label = config[2];
			} else {
				var category = 'externallink';
				var action = 'view-page';
				if( url ) {
					var label = url;
				} else {
					var label = 'dynamic';
				}
			}

			eventtracking.track_event( category, action, label );
		});

	}

	,init_auto_maillinks: function() {

		jQuery("a[href^='mailto']").click(function(e) {
			var rel = $(this).attr('rel');
			if( rel.match("tracking") ) {
				return;
			}
			var emailaddress = $(this).attr('href');
			emailaddress = emailaddress.replace("mailto:", "");
			var config = eventtracking.parse_element( $(this) );
			if( config ) {
				var category = config[0];
				var action = config[1];
				var label = config[2];
			} else {
				var category = 'email';
				var action = 'enquiry';
				var label = emailaddress;
			}

			eventtracking.track_event( category, action, label );
		});

	}

	,init_auto_pdflinks: function() {

		jQuery("a[href*='.pdf']").click(function(e) {
			var rel = $(this).attr('rel');
			if( rel.match("tracking") ) {
				return;
			}
			var filename = eventtracking.parse_filename( $(this).attr('href') );
			var config = eventtracking.parse_element( $(this) );
			if( config ) {
				var category = config[0];
				var action = config[1];
				var label = config[2];
			} else {
				var category = 'pdf';
				var action = 'download';
				var label = filename;
			}
			eventtracking.track_event( category, action, label );
		});

	}
	
	,track_event: function( category, action, label ) {
		
		if(category && action && label) {
			_gaq.push(['_trackEvent', category, action, label]);
		}
		
	}
	
	,track_virtualpage: function( url ) {
		
		if( url ) {
			//pageTracker._trackPageview( url );
			_gaq.push(['_trackPageview', url]);
		}
		
	}
	
	,parse_element: function( field ) {
		var rulesParsing = field.attr('rel');
		var getRules = /\[(.*)\]/.exec(rulesParsing);
		if( getRules ) {
			getRules = getRules[1].split(",");
			return getRules;
		}
	}
	
	,parse_filename: function( path ) {
		if( path ) {
			var filename = unescape(path);
			filename = filename.match(/[-_\w\s]+[.][\w]+$/i)[0];
			return filename;
		}
	}
	
};

$(document).ready( eventtracking.init );
