File:GoogleAnalyticsPlugin.js

/**
 * @module Container
 * @namespace springroll
 */
(function()
{
	/**
	 * @class Container
	 */
	var plugin = new springroll.ContainerPlugin();

	plugin.open = function()
	{
		var gaHandler = onGoogleAnalyticEvent.bind(this);

		// Client is setup, listen for learning event
		this.client.on(
		{
			analyticEvent: gaHandler,
			trackEvent: gaHandler // @deprecated
		});
	};

	plugin.close = function()
	{
		this.client.off('analyticEvent');
		this.client.off('trackEvent');
	};

	/**
	 * Track an event for Google Analtyics
	 * @method onGoogleAnalyticEvent
	 * @private
	 * @param {event} event Bellhop analyticEvent
	 */
	var onGoogleAnalyticEvent = function(event)
	{
		var data = event.data;

		// Send to the logging service
		this.loggingService.send('ga-event', data);

		// Producer site implementation of sending events
		var GoogleAnalytics = include("GA_obj", false);
		if (GoogleAnalytics && this.isProduction)
		{
			GoogleAnalytics.trackEvent(
				data.category,
				data.action,
				data.label,
				data.value
			);
		}

		/**
		 * Event when dispatching a Google Analytics event
		 * @event analyticEvent
		 * @param {object} data The event data
		 * @param {string} data.category The event category
		 * @param {string} data.action The event action
		 * @param {string} [data.label] The optional label
		 * @param {number} [data.value] The optional value
		 */
		this.trigger('analyticEvent', data);
	};

}());