Cobalt.Core.ReportingService = function()
{
    if (!EventManager) 
	{ 
		throw new Error("Cobalt.Core.ReportingService => Event Manager not Avaliable");
	}

    if (!CobaltPixelTag)
    {
       throw new Error("Cobalt.Core.ReportingService => CobaltPixelTag is required but not Avaliable"); 
    }
};

Cobalt.Core.ReportingService.prototype.firePixelTag = function(data)
{
	if (!data)
	{
		throw new Error("Cobalt.Core.ReportingService >> Pixel Data Undefined"); 
	}
	//TODO: Refactor
	var pixelData = {};
	if(data.eventName) pixelData.eventName = data.eventName;
	if(data.vin || data.pageLabel || data.pageLayout || data.pageName || data.requestUri) pixelData.publisherData = {};
	if(data.vin) pixelData.publisherData.vin = data.vin;
	if(data.pageLabel) pixelData.publisherData.pageLabel = data.pageLabel;
	if(data.pageLayout) pixelData.publisherData.pageLayout = data.pageLayout;
	if(data.pageName) pixelData.publisherData.pageName = data.pageName;
	if(data.requestUri) pixelData.publisherData.requestUri = data.requestUri;
	
	EventManager.publish(pixelData);
};

/**
 *	linkout will perform specified tracking and perform external link
 *
 * 		linkData : This object will contain:
 *			url:			String: URL to link to
 *			target:			String: "_self" or "_top" to replace current, or "_blank" for new window
 *			windowParams:	A comma-delimited string specifying any properties of the new window.
 *		pixelTagData:	Provides any parameter overrides/additions for the pixel tag.
 */
Cobalt.Core.ReportingService.prototype.trackExternalLinkout = function(linkData, pixelTagData)
{
    CobaltPixelTag.linkout(linkData, pixelTagData);
};

