billboard.metrics = new ( function($){

	var me = this;

	me.engines = [];

	/**
	 *
	 */
	me.init = function() 
	{
		billboard.info("Metrics.init()");
		billboard.broadcaster.addListener( "pageLoaded", function() { me.onPageLoaded() } );
	}

	/**
	 *
	 */
	me.registerEngine = function( name, engine ) 
	{
		billboard.info("Metrics.registerEngine("+name+")");
		me.engines[name] = engine;
	}

	me.onPageLoaded = function()
	{
		billboard.info( "Metrics.onPageLoaded()" );
		me.trackPageView();
	}

	/**
	 *
	 */
	me.trackPageView = function(url) 
	{
		billboard.info( "Metrics.trackPageView()" );
		billboard.info( "  tracking current URL: "+billboard.currentUrl );
		
		URL = url ? url : billboard.history.hash;

		billboard.info( "  tracking hash URL: "+URL );
		
		for ( var e in me.engines ) {
			(me.engines[e]).trackPageView(URL);
		}
	}

	me.trackInteraction = function() 
	{
		billboard.info( "Metrics.trackPageView()" );
		for ( var e in me.engines ) {
			(me.engines[e]).trackInteraction();
		}
	}

	me.trackDownload = function()
	{
		billboard.info( "Metrics.trackPageView()" );
		for ( var e in me.engines ) {
			(me.engines[e]).trackDownload();
		}
	}

	$(function(){
		//billboard.info("Metrics onLoad");
	})

})(jQuery);
