/*
Custom build GA tracking for MUK Dealers
Syzygy UK, April 2009
Developer: SCM
Dependencies: jQuery 1.3.1
*/
var pageTracker;  //make GA tracker global

var ga_tracking = {
	v: {
		defaultTrackingConfig: {category: 'Undefined', action: 'Undefined', label: null, appendInnerContent: false},
		default_pageTracker: 'UA-9818875-1'
	},
		
	init: function() {
		if (typeof _gat !== 'object'){ //test for GA and load it if needed
			return false;
		}
		
		var that = this;

		this.appendTracking('#about a.expand', { category: 'Drop-down Info', action: 'Drop Down Open', label: 'Read More'} );
		this.appendTracking('#about a.collapse', { category: 'Drop-down Info', action: 'Drop Down Close', label: 'Read More'} );
		this.appendTracking('#leftColumn .hours a.collapse', { category: 'Drop-down Info', action: function(el){ return (jQuery(el).next('.hours_table').hasClass('on')) ? 'Drop Down Close' : 'Drop Down Open'; }, label: 'Opening Hours - ', appendInnerContent: true } );
		this.appendTracking('#expand_model a', { category: 'Drop-down Info', action: function(el){ return (jQuery(el).parent().next('.offer_select').css('display') == 'block') ? 'Drop Down Close' : 'Drop Down Open'; }, label: 'Offers by Model'} );
		this.appendTracking('a.promo_print', { category: 'Print Buttons', action: 'Print Click', label: function(){ return location.pathname; } } );
				
		$('#viTopNav a').click(function() { that.setCookie('nav', 'top'); } );
		$('#leftColumn a').click(function() { that.setCookie('nav', 'left'); });
		$('#mainContent a').click(function() { that.setCookie('nav', 'main'); });
		$('#footer a').click(function() { that.setCookie('nav', 'bottom'); });
		
		var t = dealer_pageTracker;
		var nav = that.getCookie('nav');
		var qs = ((nav) ? 'nav=' + nav : '');
		var form = ((typeof form_tracking != 'undefined') ? form_tracking + '/' : '');
		
		// External and email links tracking 
		$('a[hostname]').not('a[hostname="localhost"]').not('a[hostname="dealers.pl.dev.syzygy.net"]').not('a[hostname="dealers.pl.stg.syzygy.net"]').not('a[hostname="betadealers.mazda.co.uk"]').not('a[hostname="dealers.mazda.pl"]').click(function () {
			var href = $(this).attr('href');
			that.trackPageView(t, href);
		});
		$("a[href^='mailto:']").click(function () {
			var href = $(this).attr('href');
			that.trackPageView(t, href);
		});
		
		if (t) this.trackPageView(t, form, qs, function () { that.setCookie('nav', ''); });
		return true;
	},
	
	trackPageView: function (tracking, additionpathname, querystring, fn) {
		additionpathname = additionpathname || '';
		try {
			doPageTracker(_gat._getTracker(ga_tracking.v.default_pageTracker));
		} catch (err) {}
		
		if (tracking) {
			try {
				doPageTracker(_gat._getTracker(tracking));
				if (typeof fn == 'function') fn();
			} catch (err) {}
		}
		
		function doPageTracker (pageTracker) {
			pageTracker._setDomainName("none");
			pageTracker._setAllowLinker(true);
			pageTracker._trackPageview(location.pathname + additionpathname +
				 ((location.search) ? location.search + 
				 ((querystring)?'&'+querystring:'') : ((querystring)?'?'+querystring:''))
			);
		}
	},
		
	appendTracking: function(cssSelector, config) {
		for (var a in this.v.defaultTrackingConfig) { //get the config values
			config[a] = (config[a])? config[a] : this.v.defaultTrackingConfig[a];
		}
		var that = this;
		
		var elem = jQuery(cssSelector);

		if (window.jQuery) {
			elem.each(function() {
				var el = jQuery(this);
				el.click(function(e) {
					var category = config.category;
					var action = config.action;
					var label = (config.appendInnerContent) ? config.label + jQuery(this).html() : config.label;
					if (typeof config.action == 'function') {
						action = config.action(this);
					}
					try {
						pageTracker._trackEvent(category, action, label);  //do GA event tracking
					} catch (err) { }
					//e.preventDefault();
				});
			});
		}
	},

	setCookie: function(name, value) {
		document.cookie = name + '=' + value + '; expires=' + this.getHoursFromNow(1) + '; path=/';
	},

	getCookie: function(name) {
		name += '=';
		var cookie, cookies = document.cookie.split(';');
		for (var i = 0, len = cookies.length; i < len; i++) {
			cookie = cookies[i];
			while (cookie.charAt(0) === ' ') {
				cookie = cookie.substring(1, cookie.length);
			}
			if (cookie.indexOf(name) == 0) {
				this.data = unescape(cookie.substring(name.length, cookie.length));
				return this.data;
			}
		}
		return false;
	},

	getHoursFromNow: function(hours) {
		return new Date(new Date().getTime() + hours * 3600000);
	},
	
	getValueFromParams: function(name, params) {
		var res = params.match(new RegExp('[\\?&]'+ name +'=([^&#]*)'));
		return (res !== null)? res[1] : '';
	}
};

//detect jQuery first
if (window.jQuery){
	jQuery(function ga_tracking_init() {		
		ga_tracking.init();
	});
}