﻿// $Id: //depot/EveryScape/Stable/services/web/EveryScapePortal_Jalapeno/js/EveryScape/Analytics.js#3 $
// include http://www.google-analytics.com/urchin.js
// include EveryScape/EventLog.js
if (undefined === window.EveryScapePortal)
{
	EveryScapePortal = {};
}

EveryScapePortal.Analytics = (function()
{
	var _eventsTracked = new Array();
	var _isRecording = false;
	var _thirdPartyEventId = null;

	var HandleUrchinException = function(/*exception*/ex)
	{
		try
		{
			EveryScapePortal.EventLog.WriteEvent(EveryScapePortal.EventLog.Error, "Urchin 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)
			{
				urchinTracker(e);
			}
		}
		catch (ex)
		{
			HandleUrchinException(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.";
		}
		_thirdPartyEventId = String(id);
		_uacct = id; // Google Analytics.

		if ((null != domain) || (undefined !== domain))
		{
			_udn = domain;
		}
	};

	_internal.prototype.ToggleOnOff = function(/*boolean*/isRecording)
	{
		if (isRecording)
		{
			_isRecording = true;
		}
		else
		{
			_isRecording = false;
		}
	};

	return new _internal();
})();

if (undefined === window.EveryScapePortal.Branded)
{
	EveryScapePortal.Branded = {};
}

EveryScapePortal.Branded.Analytics = (function()
{
	var _isRecording = false;
	var _groupId = null;

	var HandleIndexToolsException = function(/*exception*/ex)
	{
		try
		{
			EveryScapePortal.EventLog.WriteEvent(EveryScapePortal.EventLog.Error, "Index Tools tracking failed: " + ex);
		}
		catch (ex)
		{
		}
	};

	var _internal = function()
	{
	};

	// Track an event such as panning, clicking, etc.
	// [e] - The name of the event.
	_internal.prototype.TrackEvent = function(/*string*/e)
	{
		try
		{
			if (_isRecording)
			{
				var sIndexToolGroup = _id + " Events";
				sPage = evt;
			  
				// Generate indextool event
				if (typeof ( __IT ) != "undefined")
					__IT.page(sPage, sIndexToolGroup, null, null);
			}
		}
		catch (ex)
		{
			HandleIndexToolsException(ex);
		}
	};

	// Set the id for tracking on this page.
	_internal.prototype.SetAnalyticsGroup = function(/*string*/group)
	{
		if ((null == group) || (undefined === group))
		{
			throw "EveryScapePortal.Branded.Analytics.SetAnalyticsGroup() - Invalid analytics group name.";
		}
		_groupId = group;
	};

	_internal.prototype.ToggleOnOff = function(/*boolean*/isRecording)
	{
		if (isRecording)
		{
			_isRecording = true;
		}
		else
		{
			_isRecording = false;
		}
	};

	return new _internal();
})();
