(function($)
{
	$.fn.gaAddon = function(options)
	{
		var defaults =
		{
			useEventForOutbound: true,
			useEventForDownload: true,
			trackInternal: false,
			fileTypes: /\.(docx*|xlsx*|pptx*|exe|zip|pdf|xpi)$/i
		}

		var options = $.extend(true, defaults, options);

		var fileTypes = new RegExp(options.fileTypes);

		return $(this).each(function()
		{
			var linkHostName = $(this).attr('hostname');
			var linkPathName = $(this).attr('pathname');
			var pageHostName = location.host;
			var fileTypeTest = fileTypes.test(linkPathName);
			if (typeof (pageTracker) == "object" && typeof (pageTracker._trackEvent) == "function" && typeof (pageTracker._trackPageview) == "function")
			{
				if (linkHostName == pageHostName && fileTypeTest) // file downloads
				{
					$(this).click(function()
					{
						if (options.useEventForDownload)
							pageTracker._trackEvent("download", "click - " + location.pathname, linkPathName);
						else
							pageTracker._trackPageview(linkPathName);
					});
				}
				else if (linkHostName == pageHostName && options.trackInternal) // local link
				{
					$(this).click(function()
					{
						if (options.useEventForDownload)
							pageTracker._trackEvent("internal", "click - " + location.pathname, linkPathName);
						else
							pageTracker._trackPageview(linkPathName);
					});
				}
				else if (linkHostName != pageHostName) // external link
				{
					$(this).click(function()
					{
						if (options.useEventForDownload)
							pageTracker._trackEvent("outbound", "click - " + location.pathname, linkPathName);
						else
							pageTracker._trackPageview(linkPathName);
					});
				}
			}
		});
	}
})(jQuery)
