var x, y;

function getProfileByName (name)
{
	closePreviousTransFormerProfile();
	var target = getElement(name + 'info');
	var initialBackground = (usingCrappyBrowser()) ? target.currentStyle['backgroundColor'] : target.style.background;
	target.style.background = '#EEEEEE';
	target.style.top = y + 'px';
	target.style.left = x + 'px';	//set location of popup div before ANY processing - keep it at this coordinate!

	if (usingCrappyBrowser())
	{
		target.style.width = 450;
		target.style.height = 'auto';
	}

	var http = createRequestObject();
	http.open('get', 'display_stock.php?name=' + escape(name));
	http.onreadystatechange = function()
	{
		if (http.readyState < 4)
		{
			target.innerHTML = '';
			target.style.display = 'block';
			target.innerHTML = "Loading information for <strong>" + name.replace(/_/g, ' ') + "</strong> ...";
		}
		else if (http.readyState == 4)
		{
			if (http.status == 200)
			{
				var response = eval('(' + http.responseText + ')');
				target.style.background = initialBackground;
				target.style.opacity = 0.9;
				buildProfileNodes(response, name);
			}
			else
			{
				var autoCloseWindow = function()
					{
						target.innerHTML = '';
						target.style.display = 'none';
					};

				target.innerHTML = 'There was a problem with the server request while fetching information for <strong>';
				target.innerHTML += name.replace(/_/g, ' ') + '</strong>. Please try again.';
				setTimeout(autoCloseWindow, 3000);
			}
		}
	};
	
	http.send(null);
}

/*----------------------------------------------------------------------------------------------------------------------------*/

function setXYCoordinates (e)
{
	if (usingCrappyBrowser()) // a VERY crappy browser indeed...
	{
		x = event.clientX + (document.documentElement.scrollLeft || document.body.scrollLeft) - document.documentElement.clientLeft;
		y = event.clientY + (document.documentElement.scrollTop || document.body.scrollTop) - document.documentElement.clientTop;
	}
	else
	{
		x = e.pageX;
		y = e.pageY;
	}
}

/*----------------------------------------------------------------------------------------------------------------------------*/

function closePreviousTransFormerProfile()
{
	var spans = document.getElementsByTagName('span');
	
	for (var i = 0; i < spans.length; i++)
	{
		if (spans[i].id)
		{
			getElement(spans[i].id).innerHTML = '';
			getElement(spans[i].id).style.display = 'none';
		}
	}
}

/*----------------------------------------------------------------------------------------------------------------------------*/

function buildProfileNodes (response, name)
{
	var target = getElement(name + 'info');
	target.innerHTML = '';
	var parent = document.createElement('span');
	var n, ntext, row, i;	

	if (response.name != undefined && response.name != null)
	{
		n = document.createElement('div');
		n.className = 'robotname';

		ntext = document.createTextNode(response.name);
		n.appendChild(ntext);
		parent.appendChild(n);
	}
	
	if (response.series != undefined && response.series != null)
	{
		row = document.createElement('div');
		row.className = 'inforow';
		
		n = document.createElement('div');
		n.className = 'left';
		n.appendChild(document.createTextNode('Series:'));
		
		ntext = document.createElement('div');
		ntext.className = 'right';
		ntext.appendChild(document.createTextNode(response.series));

		row.appendChild(n);
		row.appendChild(ntext);
		parent.appendChild(row);
	}

	if (response.allegiance != undefined && response.allegiance != null)
	{
		row = document.createElement('div');
		row.className = 'inforow';
		
		n = document.createElement('div');
		n.className = 'left';
		n.appendChild(document.createTextNode('Allegiance:'));
		
		ntext = document.createElement('div');
		ntext.className = 'right';
		ntext.appendChild(document.createTextNode(response.allegiance));

		row.appendChild(n);
		row.appendChild(ntext);
		parent.appendChild(row);
	}

	if (response.purpose != undefined && response.purpose != null && response.purpose.length > 0)
	{
		row = document.createElement('div');
		row.className = 'inforow';
		
		n = document.createElement('div');
		n.className = 'left';
		n.appendChild(document.createTextNode('Function:'));
		
		ntext = document.createElement('div');
		ntext.className = 'right';
		ntext.appendChild(document.createTextNode(response.purpose));

		row.appendChild(n);
		row.appendChild(ntext);
		parent.appendChild(row);
	}

	if (response.quote != undefined && response.quote != null && response.quote.length > 0)
	{
		row = document.createElement('div');
		row.className = 'inforow';
		
		n = document.createElement('div');
		n.className = 'left';
		n.appendChild(document.createTextNode('Quote:'));
		
		ntext = document.createElement('div');
		ntext.className = 'right';
		var em = document.createElement('em');
		em.appendChild(document.createTextNode('"' + response.quote + '"'));
		ntext.appendChild(em);

		row.appendChild(n);
		row.appendChild(ntext);
		parent.appendChild(row);
	}

	if (response.description != undefined && response.description != null && response.description.length > 0)
	{
		row = document.createElement('div');
		row.className = 'inforow';
		
		n = document.createElement('div');
		n.className = 'left';
		n.appendChild(document.createTextNode('Description:'));
		
		ntext = document.createElement('div');
		ntext.className = 'right';
		ntext.appendChild(document.createTextNode(response.description));

		row.appendChild(n);
		row.appendChild(ntext);
		parent.appendChild(row);
	}

	if (response.gestaltpart != undefined && response.gestaltpart != null)
	{
		row = document.createElement('div');
		row.className = 'inforow';
		
		n = document.createElement('div');
		n.className = 'left';
		n.appendChild(document.createTextNode('Combiner Group Member:'));
		
		ntext = document.createElement('div');
		ntext.className = 'right';
		ntext.appendChild(document.createTextNode(response.name + ' forms the ' + response.gestaltpart.combiner.replace(/_/g, ' ')));

		row.appendChild(n);
		row.appendChild(ntext);
		parent.appendChild(row);
	}

	if (response.weapons != undefined && response.weapons != null)
	{
		row = document.createElement('div');
		row.className = 'inforow';
		
		n = document.createElement('div');
		n.className = 'left';
		n.appendChild(document.createTextNode('Weapon(s):'));
		
		ntext = document.createElement('div');
		ntext.className = 'right';

		for (i = 0; i < response.weapons.length; i++)
		{
			ntext.appendChild(document.createTextNode(response.weapons[i]));
			ntext.appendChild(document.createElement('br'));
		}

		ntext.removeChild(ntext.lastChild);
		row.appendChild(n);
		row.appendChild(ntext);
		parent.appendChild(row);
	}

	if (response.modes != undefined && response.modes != null)
	{
		row = document.createElement('div');
		row.className = 'inforow';
			
		n = document.createElement('div');
		n.className = 'left';
		n.appendChild(document.createTextNode('Modes:'));
			
		ntext = document.createElement('div');
		ntext.className = 'right';

		for (i = 0; i < response.modes.length; i++)
		{
			ntext.appendChild(document.createTextNode(response.modes[i]));
			ntext.appendChild(document.createElement('br'));
		}

		ntext.removeChild(ntext.lastChild);
		row.appendChild(n);
		row.appendChild(ntext);
		parent.appendChild(row);
	}

	if (response.subgroups != undefined && response.subgroups != null)
	{
		row = document.createElement('div');
		row.className = 'inforow';
			
		n = document.createElement('div');
		n.className = 'left';
		n.appendChild(document.createTextNode('Sub-group(s):'));
			
		ntext = document.createElement('div');
		ntext.className = 'right';

		for (i = 0; i < response.modes.length; i++)
		{
			if (response.subgroups[i] != null && response.subgroups[i] != undefined)
			{
				ntext.appendChild(document.createTextNode(response.subgroups[i]));
				ntext.appendChild(document.createElement('br'));
			}
		}

		ntext.removeChild(ntext.lastChild);
		row.appendChild(n);
		row.appendChild(ntext);
		parent.appendChild(row);
	}

	if (response.sidekicks != undefined && response.sidekicks != null)
	{
		var last, sidekicks;
		
		row = document.createElement('div');
		row.className = 'inforow';
		
		n = document.createElement('div');
		n.className = 'left';
		n.appendChild(document.createTextNode('Sidekick(s):'));
		
		ntext = document.createElement('div');
		ntext.className = 'right';

		if (response.sidekicks.length > 1)
		{
			last = response.sidekicks.pop();
			sidekicks = response.sidekicks.join(', ') + ' and ' + last;
		}
		else if (response.sidekicks.length == 1)
		{
			sidekicks = response.sidekicks.pop();
		}

		ntext.appendChild(document.createTextNode(sidekicks));
		row.appendChild(n);
		row.appendChild(ntext);
		parent.appendChild(row);
	}

	if (response.stats != undefined && response.stats != null)
	{
		row = document.createElement('div');
		row.className = 'inforow';
		
		n = document.createElement('div');
		n.className = 'left';
		n.appendChild(document.createTextNode('Stats:'));
		
		ntext = document.createElement('div');
		ntext.className = 'right';
		var dotstext = '';

		for (var key in response.stats)
		{	
			for (var z = 0; z < response.stats[key]; z++)
				dotstext += '•';

			ntext.appendChild(document.createTextNode(key + ': ' + dotstext + ' (' + Math.round(parseFloat(response.stats[key] / 10) * 100, 1) + '%)'));
			ntext.appendChild(document.createElement('br'));
			dotstext = '';
		}

		ntext.removeChild(ntext.lastChild);
		row.appendChild(n);
		row.appendChild(ntext);
		parent.appendChild(row);
	}

	//add close window link
	var Lclose = document.createElement('span');
	Lclose.className = 'closewindow';
	var a = document.createElement('a');
	a.appendChild(document.createTextNode('close window'));
	a.setAttribute('href', 'javascript:void(0);');

	a.onclick = function()
	{
		target.innerHTML = '';
		target.style.display = 'none';
	};

	Lclose.appendChild(a);
	parent.appendChild(Lclose);
	target.appendChild(parent);	
}

/*----------------------------------------------------------------------------------------------------------------------------*/

window.onload = function() { document.onmousemove = setXYCoordinates; };
