﻿ITVM = window.ITVM ||
{};

ITVM.Tracking = (function()
{
	var pageTracker;

	var segments = {
		USER_CAT: { slot: 1, name: 'user job sector' },
		USER_JOB_TYPE: { slot: 2, name: 'user job type' }
	}

	var contexts = {
		SECTION: 'section visit',
		VIDEO: 'video',
		CONTACT_US: 'contact-us visit',
		NICKABLE_STUFF: 'nickable stuff',
		EXTERNAL_SITE: 'external site visit',
		PROG_PLANNER: 'programme planner'
	};

	var actions = {
		VISIT: 'visit',
		PLAY: 'play',
		DOWNLOAD: 'download',
		SEARCH: 'search',
		ADD_TO_CAMPAIGN: 'add to campaign',
		CAM_OVERVIEW_CLICK: 'campaign overview click',
		SUB_REQUEST_CLICK: 'submitted request click',
		SEND_REQUEST: 'send request'
	};

	function init()
	{
		pageTracker = _gat._getTracker("UA-3807582-1");

		//Adding delegates to the Play Started event raised by the flash video player         
		if (typeof NETJOHNHENRY !== 'undefined' && NETJOHNHENRY.VideoPlayer)
		{
			NETJOHNHENRY.VideoPlayer.CustomEventPlayStarted = function(video_name)
			{
				ITVM.Tracking.track(ITVM.Tracking.contexts.VIDEO, ITVM.Tracking.actions.PLAY, video_name)
			};
		}
	}

	function trackPage()
	{
		pageTracker._trackPageview();
	}

	function trackCustom(slot, context, data, scope)
	{
		pageTracker._setCustomVar(slot, context, data, scope);
	}


	function track(context, action, data)
	{
		if (data)
		{
			pageTracker._trackEvent(context, action, data);
		}
		else
		{
			pageTracker._trackEvent(context, action);
		}
	}

	function setUserSegment(segId, value)
	{
		pageTracker._setCustomVar(segments[segId].slot, segments[segId].name, value, 1);
	}

	return {
		init: init,
		trackPage: trackPage,
		track: track,
		trackCustom: trackCustom,
		setUserSegment: setUserSegment,
		contexts: contexts,
		actions: actions,
		segments: segments
	};
})();

