var destDiv = null;
function listOwners(gameId) 
{
	destDiv = document.getElementById("owners_" + gameId);
	if (destDiv.innerHTML != '') 
	{
		return false;
	}

	var url = "360/update.php?listOwners=" + gameId;
	
	loadXMLDoc(url, function () 
	{
			if (req.readyState == 4) 
			{
				if (req.status == 200) 
				{
					if (req.responseText.length) 
					{
						if (destDiv) 
						{
							destDiv.innerHTML = req.responseText;
							destDiv = null;
							addGamerTagHandlers();
						}
					}
				} 
				else 
					{
					alert("There was a problem retrieving the XML data:\n" +
					req.statusText);
				}
			}
		}
	);
}


function getParameterList(theHref)
{
	var parameterString = theHref.replace(/.*\?(.*)/, "$1"); // onclick="sndReq('j=1&q=2&t=127.0.0.1&c=5');
	var parameterTokens = parameterString.split("&"); // onclick="sndReq('j=1,q=2,t=127.0.0.1,c=5');
	var parameterList = new Array();

	for (j = 0; j < parameterTokens.length; j++) {
		var parameterName = parameterTokens[j].replace(/(.*)=.*/, "$1"); // j
		var parameterValue = parameterTokens[j].replace(/.*=(.*)/, "$1"); // 1
		parameterList[parameterName] = parameterValue;
	}
	return parameterList;
}


document.getElementsByClassName = function(className)
{   
	var outArray = new Array();
    var item; 
    try 
    {
        var xpathResult = document.evaluate('//*[@class = "' + className + '"]', document, null, 0, null);     
        while (item = xpathResult.iterateNext())
            outArray[outArray.length] = item;
    }
    catch(err) 
    {
        // ie fix
        var currentIndex = 0;
        var allElements = document.getElementsByTagName('*');
        for(var i=0; i < allElements.length; i++)
        {   
        		if(allElements[i].className.match(className))
            {   
            	outArray[currentIndex] = allElements[i];
            	currentIndex++;
            }
        }
    }
    return outArray;
}


function findPosX(obj)
{
	var curleft = 0;
	if (obj.offsetParent)
	{
		while (obj.offsetParent)
		{
			curleft += obj.offsetLeft
			obj = obj.offsetParent;
		}
	}
	else if (obj.x)
	{
		curleft += obj.x;
	}
	return curleft;
}

function findPosY(obj)
{
	var curtop = 0;
	if (obj.offsetParent)
	{
		while (obj.offsetParent)
		{
			curtop += obj.offsetTop
			obj = obj.offsetParent;
		}
	}
	else if (obj.y)
	{
		curtop += obj.y;
	}
	return curtop;
}

var g_objHover = null;
var g_objActive = null;

function hideHover()
{
	// kill event handlers
	removeEventHandler(g_objActive, 'mouseout', hideHover);
	removeEventHandler(g_objHover.getElementsByTagName('iframe')[0], 'load', showHover);
	
	// hide hover div
	g_objHover.style.display = 'none';
	g_objActive = null;
}

function showHover() 
{
	// display the box
	g_objHover.style.display = '';
	
	// remove the event handler that got us here
	removeEventHandler(g_objHover, 'load', showHover);
	
}


function gthInit(evt)
{
	// get object being hovered over	
	evt = (evt) ? evt : ((window.event) ? window.event : null);
	if (!evt)
	{
		alert('evt is nothing');
		return;
	}
	
	tgt = (evt.target) ? evt.target : ((evt.srcElement) ? evt.srcElement : null);
	if (!tgt)
	{
		alert('tgt is nothing');
		return;
	}
	
	// get reference to the active hover point 
	g_objActive = tgt;
	var gamerTag = g_objActive.innerHTML;
	
	// get reference to the hover box
	g_objHover = document.getElementById('gamertag-hover');
	
	// set iframe object
	var ifHover = g_objHover.getElementsByTagName('iframe')[0];
	if (!ifHover) 
	{
		alert('ifHover is null!');
		return;
	}
	ifHover.setAttribute('src', 'http://gamercard.xbox.com/' + escape(gamerTag) + '.card');

	// move the iframe into position
	g_objHover.style.left = findPosX(g_objActive) + 'px';
	g_objHover.style.top = (findPosY(g_objActive) + 20)   + 'px';
	
	// install event handlers
	installEventHandler(ifHover, 'load', showHover);
	installEventHandler(g_objActive, 'mouseout', hideHover);
	
}


function addGamerTagHandlers() 
{
	// this needs to be called whenever new divs are added
	
	var a = document.getElementsByClassName('gamertag');
	
	for (var i=0; i < a.length; i++) 
		installEventHandler(a[i], 'mouseover', gthInit);
}


function toggleOwnership(tgt)
{
	var game_id = tgt.getAttribute('id');
	var value = tgt.checked;

	var u = "/360/update.php?own=" + game_id + "&value=" + value;
	
	loadXMLDoc(u, function () 
			{
				if (req.readyState == 4) 
				{
					if (req.status == 200) 
					{
						// display responseText if there's an error
						if (req.responseText.length) 
						{
							alert(req.responseText);
						}
					} 
					else 
					{
						alert("There was a problem retrieving the XML data:\n" + req.statusText);
					}
				}
			}
	);
}

function updateRating(tgt)
{
	var href = tgt.getAttribute('href');
	var u = href + '&ajax=1';

	// do the animation
	var pars = getParameterList(href);
	var theUL = document.getElementById('unit_ul' + pars['rate']); 
	theUL.innerHTML = '<div class="loading"></div>';
	
	loadXMLDoc(u, function () 
			{
				if (req.readyState == 4) 
				{
					if (req.status == 200) 
					{
						// display responseText if there's an error
						if (req.responseText.length) 
						{
							alert(req.responseText);
						}
					} 
					else 
					{
						alert("There was a problem retrieving the XML data:\n" + req.statusText);
					}
				}
			}
	);	
}

function listGames(systemSlug, displayStyle)
{
	var u = "./game.php?listGames=" + displayStyle + "&systemSlug=" + systemSlug + "&ajax=1";
	loadXMLDoc(u, function () 
			{
				if (req.readyState == 4) 
				{
					if (req.status == 200) 
					{
						// display responseText if there's an error
						if (req.responseText.length) 
						{
							document.getElementById('game-list').innerHTML = req.responseText;
						}
					} 
					else 
					{
						alert("There was a problem retrieving the XML data:\n" + req.statusText);
					}
				}
			}
	);	
	
}
