(function() {

	/**
	 * Adds virtual page views for Google Analytics
	 *
	 * Add new virtual page views at the bottom of this file in the onDOMReady
	 * event handler.
	 *
	 * @copyright 2010 silverorange
	 */

	var Event = YAHOO.util.Event;
	var Dom   = YAHOO.util.Dom;

	function addTracking(el, uri)
	{
		if (!el) {
			return;
		}

		Event.on(
			el,
			'click',
			function(e) {
				urchinTracker(uri);
			}
		);
	};

	// virtual page views for clicks on the featured pager tabs
	function addTabTracking()
	{
		var feature_tabs = document.getElementById('feature_tabs');
		if (feature_tabs) {
			var tabs = Dom.getElementsByClassName('pager-tab', 'a',
				feature_tabs);

			for (var i = 0; i < tabs.length; i++) {
				addTracking(
					tabs[i],
					'/?link=' + tabs[i].id.replace('_tab_', '_page_')
				);
			}
		}
	};

	// cart promotion link virtual page views
	function addPromotionTracking()
	{
		var promotion_links = [];

		// promotion virtual page views
		var promotion = document.getElementById('promotion');
		if (promotion) {
			var links = Dom.getElementsBy(
				function (n) {
					return (/^\/?cart\?promotion=/.test(n.getAttribute('href')));
				},
				'a',
				promotion
			);

			promotion_links = promotion_links.concat(links);
		}

		// featured page promotion virtual page views
		var pages = document.getElementById('feature_pages');
		if (pages) {
			var links = Dom.getElementsBy(
				function (n) {
					return (/^\/?cart\?promotion=/.test(n.getAttribute('href')));
				},
				'a',
				pages
			);

			promotion_links = promotion_links.concat(links);
		}

		// set up virtual page views for promotions
		for (var i = 0; i < promotion_links.length; i++) {
			var link = promotion_links[i].getAttribute('href');

			// add '/' prefix for virtual page view
			if (link.charAt(0) != '/') {
				link = '/' + link;
			}

			addTracking(
				promotion_links[i],
				link
			);
		}
	};

	Event.onDOMReady(function() {

		// if analytics is not present, do nothing
		if (!urchinTracker) {
			return;
		}

		addTracking(
			document.getElementById('facebook_header_link'),
			'/outgoing/layout/header/facebook'
		);

		addTracking(
			document.getElementById('facebook_feature_link'),
			'/outgoing/frontpage/feature/facebook'
		);

		addTracking(
			document.getElementById('geotrust').getElementsByTagName('a')[0],
			'/outgoing/layout/footer/geotrust'
		);

		addPromotionTracking();
		addTabTracking();

	});

})();
