// JavaScript Document
YAHOO.namespace('metrics.dom');

// global value, the image parameters
var aparams = {
//	o: 'l',       // graph style
	c: '1',       //
	f: '555555',  // border color
	u: [],        // website(s)
	r: '3m',      // time range
	y: 'r',       // graph type: 'r' = reach, 't' = rank, 'p' = page views
	z: '1',       // smoothing: 0 = rough, 3 = smooth
	w: '460',     // width
	h: '230'      // height
};

var cparams = {
	metric: 'uv', // graph type: uv, sess, rank, ppv
	sites: []    // website(s)
};

YAHOO.metrics.dom.init = function()
{
	var trafRankTooltip = new YAHOO.widget.Tooltip("trafRankTooltip", { context:"traf_rank" } );
	var reachTooltip = new YAHOO.widget.Tooltip("reachTooltip", { context:"reach" } ); 
	var pageViewTooltip = new YAHOO.widget.Tooltip("pageViewTooltip", { context:"page_view" } ); 
	var userViewTooltip = new YAHOO.widget.Tooltip("userViewTooltip", { context:"user_view" } ); 
	var searchResultsTooltip = new YAHOO.widget.Tooltip("searchResultsTooltip", { context:"yahoo_results" } ); 
	var techoratiTooltip = new YAHOO.widget.Tooltip("technoratiTooltip", { context:"technorati" } ); 
	// handle clicks on the graph type buttons
	YAHOO.util.Event.addListener(
		YAHOO.util.Dom.getElementsByClassName('graphparm-y','button'), 'click',
		function(e) { setAlexaParam(this, e, 'y'); })
	YAHOO.util.Event.addListener(
		YAHOO.util.Dom.getElementsByClassName('graphparm-r','button'), 'click',
		function(e) { setAlexaParam(this, e, 'r'); })
	YAHOO.util.Event.addListener(YAHOO.util.Dom.getElementsByClassName('graphparm-c','button'), 'click', setCompeteParam);

	function setCurrent(btn)
	{
		var removeCurrentRange = YAHOO.util.Dom.getElementsByClassName('current', 'li', YAHOO.util.Dom.getAncestorByTagName(btn, 'ul'));
		YAHOO.util.Dom.removeClass(removeCurrentRange, 'current');	
		YAHOO.util.Dom.addClass(btn.parentNode, 'current');
	}

	function setAlexaParam(btn, event, param)
	{	
		YAHOO.util.Event.preventDefault(event);
		
		setCurrent(btn);
		aparams[param] = btn.name;
		updateAlexaImage();
	}

	function updateAlexaImage()
	{
		var url = 'http://traffic.alexa.com/graph?';
		var graph = document.getElementById('alexaGraph');
		var param;
		var plist = [];
		for (param in aparams)
		{
			if (param == 'u')
			{
				for (site in aparams[param])
					plist.push('u=' + aparams[param][site]);
			}
			else
				plist.push(param + '=' + aparams[param]);
		}
		graph.src = url + plist.join('&');
	}

	function setCompeteParam(e)
	{
		YAHOO.util.Event.preventDefault(e);

		setCurrent(this);
		cparams.metric = this.name;
		updateCompeteImage();
	}

	function updateCompeteImage()
	{
		var metric = cparams.metric;
		var sites = cparams.sites.join('+');
		var url = 'http://home.compete.com.edgesuite.net/' + sites + '_' + metric + '_460.png';
		var graph = document.getElementById('competeGraph');
		graph.src = url;
		var link = document.getElementById('competeLink');
		link.href = 'http://siteanalytics.compete.com/' + sites + '?metric=' + metric;
	}

	// handle clicks on the graph type buttons
	YAHOO.util.Event.addListener(YAHOO.util.Dom.getElementsByClassName('showhide','span'), 'click', toggleModule)
	function toggleModule(e)
	{
		YAHOO.util.Event.preventDefault(e);
		var modname = this.id.substr(5);
		var mod = document.getElementById(modname);
		var modalt = document.getElementById(modname + '_hidden');
		if (mod)
		{
			links = this.getElementsByTagName('a');
			if (links.length > 0)
				link = links[0];
			else
				link = null;
			if (mod.style.display == 'none')
			{
				mod.style.display = 'block';
				if (modalt)
					modalt.style.display = 'none';
				if (link)
					link.innerHTML = 'hide';
			}
			else
			{
				mod.style.display = 'none';
				if (modalt)
					modalt.style.display = 'block';
				if (link)
					link.innerHTML = 'show';
			}
		}
	}
}

YAHOO.util.Event.addListener(window, 'load', YAHOO.metrics.dom.init);

