﻿// $Id: //depot/EveryScape/Stable/services/web/EveryScapePortal_Jalapeno/js/EveryScape/Analytics.js#4 $
// include EveryScape/EventLog.js
if (undefined === window.EveryScapePortal)
{
	EveryScapePortal = {};
}

EveryScapePortal.Analytics = (function()
{
	var _eventsTracked = new Array();
	var _isRecording = false;
	var _thirdPartyEventId = null;
	var _pageTracker = null;

	var HandleGAException = function(/*exception*/ex)
	{
		try
		{
			EveryScapePortal.EventLog.WriteEvent(EveryScapePortal.EventLog.Error, "Google tracking failed: " + ex);
		}
		catch (ex)
		{
		}
	};

	// Keep track of the events reported.
	// Returns the number of times this event has been reported on this page.
	var IncrementEventCount = function(/*string*/e)
	{
		if (undefined === _eventsTracked[e])
		{
			_eventsTracked[e] = 1;
		}
		else
		{
			_eventsTracked[e]++;
		}

		return _eventsTracked[e];
	};

	var _internal = function()
	{
	};

	// Track an event such as panning, clicking, etc, but only the first
	// time that event occurs on a page.
	// [e] - The name of the event.
	_internal.prototype.TrackEventFirstTimePerPage = function(/*string*/e)
	{
		if (1 == IncrementEventCount(e))
		{
			this.TrackEvent(e);
		}
	};

	// Track an event such as panning, clicking, etc.
	// [e] - The name of the event.
	_internal.prototype.TrackEvent = function(/*string*/e)
	{
		try
		{
			if (_isRecording)
			{
				_pageTracker._trackPageview(e);
			}
		}
		catch (ex)
		{
			HandleGAException(ex);
		}
	};

	// Track a pageview from the page itself.
	// [page] - The URL of the page being viewed or undefined for the current
	//          page.
	_internal.prototype.TrackPage = function(/*string*/page)
	{
		this.TrackEvent(page);
	};

	// Set the user/account ID used by third party analytics engines.
	_internal.prototype.SetAnalyticsId = function(/*string*/id, /*string*/domain)
	{
		if ((null == id) || (undefined === id))
		{
			throw "EveryScapePortal.Analytics.SetAnalyticsId() - Invalid analytics ID.";
		}
		
		// Can I get rid of this?
		_thirdPartyEventId = String(id);
		
		_pageTracker = _gat._getTracker(id);

		if ((null != domain) || (undefined !== domain))
		{
			_pageTracker._setDomainName(domain);
		}
	};

	_internal.prototype.ToggleOnOff = function(/*boolean*/isRecording)
	{
		if (isRecording)
		{
			_isRecording = true;
		}
		else
		{
			_isRecording = false;
		}
	};

	return new _internal();
})();