/*  
  *   iPGN Server List JavaScript
  *   Created by Rory McMahon
  *   Copyright 2008 Primus Telecom
*/

function showTotalPlayers()
{
	// Get the XML from the Backend
	var xmlResponse = xmlHttp.responseXML;
	// obtain the XML's document element
	xmlRoot = xmlResponse.documentElement;
	
	status_array = xmlRoot.getElementsByTagName("status");
	var xml_status = status_array.item(0).firstChild.data;

	throw_msg_array = xmlRoot.getElementsByTagName("throw_msg");
	var throw_msg = throw_msg_array.item(0).firstChild.data;

	total_players_array = xmlRoot.getElementsByTagName("total_players");
	var total_players = total_players_array.item(0).firstChild.data;

	if (document.getElementById("total_spot")) {
		document.getElementById("total_spot").innerHTML = total_players;
	}
}

function hoverStyle(e)
{
	if (!e) var e = window.event;
	var element = e.currentTarget;
	if (!element) var element = e.srcElement;

	element.style.cssText = "cursor: pointer; color: #80e0ff;";
}

function hoverOff(e)
{
	if (!e) var e = window.event;
	var element = e.currentTarget;
	if (!element) var element = e.srcElement;
	
	element.style.cssText = "cursor: pointer; color: #FFFFFF;";
}

/* 
 * The orderBy function changes the order in which the server list is displayed
*/

function orderBy(e)
{
	if (!e) var e = window.event;
	var element = e.currentTarget;
	if (!element) var element = e.srcElement;

	if (element.nodeName=="td") {
		var element_parent = element.parentNode;
		var orderhead = element_parent.firtChild.innerHTML;
	}else {
		var orderhead = element.firstChild.innerHTML;
	}
	
	if (orderhead.match(/ID/g)) {
		var orderby = "server_id";
	}

	if (orderhead.match(/Server Name/g)) {
		var orderby = "server_name";
	}

	if (orderhead.match(/IP Address/g)) {
		var orderby = "server_ip";
	}

	if (orderhead.match(/Players/g)) {
		var orderby = "numplayers";
	}

	if (orderhead.match(/Current Map/g)) {
		var orderby = "current_map";
	}

	if (orderhead.match(/Ping/g)) {
		var orderby = "ping";
	}

	if (document.getElementById("hidden_form")) {
		var hform = document.getElementById("hidden_form");
	}else{
		var hform = document.createElement("form");
		hform.setAttribute("id", "hidden_form");
		document.getElementById("contentDiv").appendChild(hform);
	}

	if (document.getElementById("order_desc")) {
		var order_desc = document.getElementById("order_desc");
		hform.removeChild(order_desc);
	}else{
		var input = document.createElement("input");
		input.setAttribute("type", "hidden");
		input.setAttribute("id", "order_desc");
		input.setAttribute("value", "true");
		hform.appendChild(input);
	}

	var input = document.createElement("input");
	input.setAttribute("type", "hidden");
	input.setAttribute("id", "orderby");
	input.setAttribute("value", orderby);
	hform.appendChild(input);

	getGameList();

}


function handleRequestStateChangeGameDetails()
{
	// when readyState is 4, we are ready to read the server response
	if (xmlHttp.readyState == 4)
	{
		// continue only if HTTP status is "OK"
		if (xmlHttp.status == 200)
		{
			try 
			{
				// Turn off the Loading Gif
				//loaded();
				// do something with the response from the server
				displayGameDetails();
			}
     		catch(e)
			{
				// display error message
			}
		}
		else
		{
			// display status message
			//      xmlHttp.statusText);
			//loaded();
		}
	}
}


/*
 *  Get the Game List
*/

function getGameList()
{
	// only continue if xmlHttp isn't void
	if (xmlHttp)
	{
		// Try and get the xML Document
		try
		{
			// Turn the Loading Gif On
			//loading();
			
			// If set, get the chosen order
			if (document.getElementById("orderby")) {
				var orderby = document.getElementById("orderby").value;
			}else{
				var orderby = "server_id";
			}

			// Make the Variables
			var date = new Date();
			var timestamp = date.getTime();
			var params = "calltime=" + timestamp + 
			"&orderby=" + orderby;

			if (document.getElementById("order_desc")) {
				var params = params + "&desc=true";
			}
			
			// initiate reading the PHP > XML Backend 
			xmlHttp.open("GET", "/functions/getgamelist.php?" + params, true);
			xmlHttp.onreadystatechange = handleRequestStateChangeGameList;
			xmlHttp.send(null);
		}
		// display the error in case of failure
		catch (e)
		{
			//loaded();
		}
	}
}

function gameListLoading()
{
	if (document.getElementById("loadingimg")) {
		if (document.getElementById("doGameLoadingThingHere")) {
			var cur_symbol = document.getElementById("doGameLoadingThingHere").innerHTML;
			
			if (cur_symbol==" <b>+</b> ") {
				document.getElementById("doGameLoadingThingHere").innerHTML = " <b>|</b> ";
				setTimeout("gameListLoading()", 20);
			}
			if (cur_symbol==" <b>|</b> ") {
				document.getElementById("doGameLoadingThingHere").innerHTML = " <b>/</b> ";
				setTimeout("gameListLoading()", 30);
			}
			if (cur_symbol==" <b>/</b> ") {
				document.getElementById("doGameLoadingThingHere").innerHTML = " <b>-</b> ";
				setTimeout("gameListLoading()", 30);
			}
			if (cur_symbol==" <b>-</b> ") {
				document.getElementById("doGameLoadingThingHere").innerHTML = " <b>\\</b> ";
				setTimeout("gameListLoading()", 20);
			}
			if (cur_symbol==" <b>\\</b> ") {
				document.getElementById("doGameLoadingThingHere").innerHTML = " <b>|</b> ";
				setTimeout("gameListLoading()", 30);
			}
		}
	}else{
		if (document.getElementById("doGameLoadingThingHere")) {
			document.getElementById("doGameLoadingThingHere").innerHTML = " <b>-</b> ";
			document.getElementById("doGameLoadingThingHere").removeAttribute("id");
		}
	}
}

function gameListLoaded()
{
	if (document.getElementById("doGameLoadingThingHere")) {
		document.getElementById("doGameLoadingThingHere").innerHTML = " <b>-</b> ";
		document.getElementById("doGameLoadingThingHere").removeAttribute("id");
	}
}

// Get a Specific Game

function getGameListByCategory(e)
{
	// Get the Folder from the clicked button 
	if (!e) var e = window.event;
	var element = e.currentTarget;
	if (!element) var element = e.srcElement;
	if (element.nodeName=="TD") {
		while (element.nodeName=="TD") {
			var element = element.parentNode;
		}
	}
	
	var game_category = element.id;

	var game_spot = document.getElementById(game_category + "_spot");

	if (game_spot.hasChildNodes()) {
		while (game_spot.hasChildNodes()) {
			game_spot.removeChild(game_spot.firstChild);
		}
		element.firstChild.removeAttribute("id");
		element.firstChild.innerHTML = " <b>+</b> ";
		gameListLoaded();
	
	}else{
		element.firstChild.setAttribute("id", "doGameLoadingThingHere");


		// only continue if xmlHttp isn't void
		if (xmlHttp)
		{
			// Try and get the xML Document
			try
			{
				// Turn the Loading Gif On
				//loading();
				gameListLoading();
		      
				// If set, get the chosen order
				if (document.getElementById("orderby")) {
					var orderby = document.getElementById("orderby").value;
				}else{
					var orderby = "server_id";
				}
		
				// Make the Variables
				var date = new Date();
				var timestamp = date.getTime();
				var params = "calltime=" + timestamp +
				"&orderby=" + orderby;
		
				if (document.getElementById("order_desc")) {
					var params = params + "&desc=true";
				}
				
				var params = params + "&game_category=" + game_category;
				
				// initiate reading the PHP > XML Backend 
				xmlHttp.open("GET", "/functions/getgamelist.php?" + params, true);
				xmlHttp.onreadystatechange = handleRequestStateChangeDisplayGames;
				xmlHttp.send(null);
			}
			// display the error in case of failure
			catch (e)
			{
				//loaded();
			}
		}
	}
}

function handleRequestStateChangeGameList()
{
	// when readyState is 4, we are ready to read the server response
	if (xmlHttp.readyState == 4)
	{  
		// continue only if HTTP status is "OK"
		if (xmlHttp.status == 200)
		{
			try 
			{
				// Turn off the Loading Gif
				//loaded();
				// do something with the response from the server
				displayGameList();
				gameListLoaded();
			}
			catch(e)
			{
				// display error message
			}
		}
		else
		{
  
		}
	} 
}

function handleRequestStateChangeDisplayGames()
{
	// when readyState is 4, we are ready to read the server response
	if (xmlHttp.readyState == 4)
	{
		// continue only if HTTP status is "OK"
		if (xmlHttp.status == 200)
		{
			try
			{
				// Turn off the Loading Gif
				//loaded();
				// do something with the response from the server
				displayGames();
			}
			catch(e)
			{
				// display error message
			}
		}
		else
		{
			// display status message
			//      xmlHttp.statusText);
			// Change the Status Text
			
			//loaded();
		}
	}
}

function gamesPage()
{
	var middleFrame = document.getElementById("serverListDiv");
	// Clear Existing Sub Elements of contentDiv
	if (middleFrame.hasChildNodes()) {
		while (middleFrame.hasChildNodes()) {
			middleFrame.removeChild(middleFrame.firstChild);
		}
	}
	
	var contentDiv = document.createElement("contentDiv");
	contentDiv.setAttribute("id", "contentDiv");
	contentDiv.style.cssText = getStyle("contentDiv");
	middleFrame.appendChild(contentDiv);
	
	var contentDiv = document.getElementById("contentDiv");
		
	var table = document.createElement("table");
	table.style.cssText = getStyle("contentTable");
	contentDiv.appendChild(table);
	
	var tbody = document.createElement("tbody");
	table.appendChild(tbody);
	
	var tr = document.createElement("tr");
	tbody.appendChild(tr);
		
	var td = document.createElement("td");
	tr.appendChild(td);
		
	//var titleDiv = document.createElement("div");
	//titleDiv.style.cssText = getStyle("contentDivTitle");
	//td.appendChild(titleDiv);
		
	//var h3 = document.createElement("p");
	//h3.innerHTML = "iPGN Server List";
	//h3.style.cssText = getStyle("titleText") + "padding-top: 5px;";
	//titleDiv.appendChild(h3);
	
	var table = document.createElement("table");
	table.style.cssText = "padding-left: 10px; text-align: left;";
	contentDiv.appendChild(table);
	
	var tbody = document.createElement("tbody");
	table.appendChild(tbody);

	var tr = document.createElement("td");
        tbody.appendChild(tr);

	// Counter Strike
	var tr = document.createElement("tr");
	tr.setAttribute("id", "Counter Strike");
	tr.onclick = getGameListByCategory;
	tr.style.cssText = "cursor: pointer;";
	tbody.appendChild(tr);

	var td = document.createElement("td");
	td.innerHTML = " <b>+</a></b> ";
	tr.appendChild(td);

	var td = document.createElement("td");
	td.innerHTML = "Counter Strike";
	tr.appendChild(td);

	var tr = document.createElement("tr");
	tbody.appendChild(tr);

	var td = document.createElement("td");
	tr.appendChild(td);

	var td = document.createElement("td");
	tr.appendChild(td);

	var div = document.createElement("div");
	div.setAttribute("id", "Counter Strike_spot");
	td.appendChild(div);

	// Left 4 Dead
        var tr = document.createElement("td");
        tbody.appendChild(tr);

        var tr = document.createElement("tr");
        tr.setAttribute("id", "Left 4 Dead");
        tr.onclick = getGameListByCategory;
        tr.style.cssText = "cursor: pointer;";
        tbody.appendChild(tr);

        var td = document.createElement("td");
        td.innerHTML = "&nbsp;<b>+</a></b>&nbsp;";
        tr.appendChild(td);

        var td = document.createElement("td");
        td.innerHTML = "Left 4 Dead";
        tr.appendChild(td);

        var tr = document.createElement("tr");
        tbody.appendChild(tr);

        var td = document.createElement("td");
        tr.appendChild(td);

        var td = document.createElement("td");
        tr.appendChild(td);

        var div = document.createElement("div");
        div.setAttribute("id", "Left 4 Dead_spot");
        td.appendChild(div);
	
	// Counter Strike Source
	var tr = document.createElement("td");
        tbody.appendChild(tr);

	var tr = document.createElement("tr");
	tr.setAttribute("id", "Counter Strike Source");
	tr.onclick = getGameListByCategory;
	tr.style.cssText = "cursor: pointer;";
	tbody.appendChild(tr);

	var td = document.createElement("td");
	td.innerHTML = " <b>+</a></b> ";
	tr.appendChild(td);

	var td = document.createElement("td");
	td.innerHTML = "Counter Strike: Source";
	tr.appendChild(td);

	var tr = document.createElement("tr");
	tbody.appendChild(tr);

	var td = document.createElement("td");
	tr.appendChild(td);

	var td = document.createElement("td");
	tr.appendChild(td);

	var div = document.createElement("div");
	div.setAttribute("id", "Counter Strike Source_spot");
	td.appendChild(div);

	// Team Fortress
	var tr = document.createElement("tr");
	tr.setAttribute("id", "Team Fortress");
	tr.onclick = getGameListByCategory;
	tr.style.cssText = "cursor: pointer;";
	tbody.appendChild(tr);

	var td = document.createElement("td");
	td.innerHTML = " <b>+</a></b> ";
	tr.appendChild(td);

	var td = document.createElement("td");
	td.innerHTML = "Team Fortress";
	tr.appendChild(td);

	var tr = document.createElement("tr");
	tbody.appendChild(tr);

	var td = document.createElement("td");
	tr.appendChild(td);
	
	var td = document.createElement("td");
	tr.appendChild(td);
	
	var div = document.createElement("div");
	div.setAttribute("id", "Team Fortress_spot");
	td.appendChild(div);

	// Quake
	var tr = document.createElement("tr");
	tr.setAttribute("id", "Quake");
	tr.onclick = getGameListByCategory;
	tr.style.cssText = "cursor: pointer;";
	tbody.appendChild(tr);
	
	var td = document.createElement("td");
	td.innerHTML = " <b>+</a></b> ";
	tr.appendChild(td);
	
	var td = document.createElement("td");
	td.innerHTML = "Quake";
	tr.appendChild(td);
	
	var tr = document.createElement("tr");
	tbody.appendChild(tr);
	
	var td = document.createElement("td");
	tr.appendChild(td);
	
	var td = document.createElement("td");
	tr.appendChild(td);
	
	var div = document.createElement("div");
	div.setAttribute("id", "Quake_spot");
	td.appendChild(div);

	// Killing Floor
	var tr = document.createElement("tr");
	tr.setAttribute("id", "Killing Floor");
	tr.onclick = getGameListByCategory;
	tr.style.cssText = "cursor: pointer;";
	tbody.appendChild(tr);

	var td = document.createElement("td");
        td.innerHTML = " <b>+</a></b> ";
        tr.appendChild(td);

        var td = document.createElement("td");
	td.innerHTML = "Killing Floor";
	tr.appendChild(td);

        var tr = document.createElement("tr");
        tbody.appendChild(tr);

        var td = document.createElement("td");
        tr.appendChild(td);

        var td = document.createElement("td");
        tr.appendChild(td);

        var div = document.createElement("div");
        div.setAttribute("id", "Killing Floor_spot");
	td.appendChild(div);

	// Jedi
	var tr = document.createElement("tr");
	tr.setAttribute("id", "Jedi");
	tr.onclick = getGameListByCategory;
	tr.style.cssText = "cursor: pointer;";
	tbody.appendChild(tr);
	
	var td = document.createElement("td");
	td.innerHTML = " <b>+</a></b> ";
	tr.appendChild(td);
	
	var td = document.createElement("td");
	td.innerHTML = "Jedi";
	tr.appendChild(td);
	
	var tr = document.createElement("tr");
	tbody.appendChild(tr);
	
	var td = document.createElement("td");
	tr.appendChild(td);
	
	var td = document.createElement("td");
	tr.appendChild(td);
	
	var div = document.createElement("div");
	div.setAttribute("id", "Jedi_spot");
	td.appendChild(div);

	// Battlefield
	var tr = document.createElement("tr");
	tr.setAttribute("id", "Battlefield");
	tr.onclick = getGameListByCategory;
	tr.style.cssText = "cursor: pointer;";
	tbody.appendChild(tr);
	
	var td = document.createElement("td");
	td.innerHTML = " <b>+</a></b> ";
	tr.appendChild(td);
	
	var td = document.createElement("td");
	td.innerHTML = "Battlefield";
	tr.appendChild(td);
	
	var tr = document.createElement("tr");
	tbody.appendChild(tr);
	
	var td = document.createElement("td");
	tr.appendChild(td);
	
	var td = document.createElement("td");
	tr.appendChild(td);
	
	var div = document.createElement("div");
	div.setAttribute("id", "Battlefield_spot");
	td.appendChild(div);

	// Call of Duty
	var tr = document.createElement("tr");
	tr.setAttribute("id", "Call of Duty");
	tr.onclick = getGameListByCategory;
	tr.style.cssText = "cursor: pointer;";
	tbody.appendChild(tr);
	
	var td = document.createElement("td");
	td.innerHTML = " <b>+</a></b> ";
	tr.appendChild(td);
	
	var td = document.createElement("td");
	td.innerHTML = "Call of Duty";
	tr.appendChild(td);
	
	var tr = document.createElement("tr");
	tbody.appendChild(tr);
	
	var td = document.createElement("td");
	tr.appendChild(td);
	
	var td = document.createElement("td");
	tr.appendChild(td);
	
	var div = document.createElement("div");
	div.setAttribute("id", "Call of Duty_spot");
	td.appendChild(div);

	// Unreal
	var tr = document.createElement("tr");
	tr.setAttribute("id", "Unreal");
	tr.onclick = getGameListByCategory;
	tr.style.cssText = "cursor: pointer;";
	tbody.appendChild(tr);
	
	var td = document.createElement("td");
	td.innerHTML = " <b>+</a></b> ";
	tr.appendChild(td);
	
	var td = document.createElement("td");
	td.innerHTML = "Unreal";
	tr.appendChild(td);
	
	var tr = document.createElement("tr");
	tbody.appendChild(tr);
	
	var td = document.createElement("td");
	tr.appendChild(td);
	
	var td = document.createElement("td");
	tr.appendChild(td);
	
	var div = document.createElement("div");
	div.setAttribute("id", "Unreal_spot");
	td.appendChild(div);

	// Enemy Territory
	var tr = document.createElement("tr");
	tr.setAttribute("id", "Enemy Territory");
	tr.onclick = getGameListByCategory;
	tr.style.cssText = "cursor: pointer;";
	tbody.appendChild(tr);
	
	var td = document.createElement("td");
	td.innerHTML = " <b>+</a></b> ";
	tr.appendChild(td);
	
	var td = document.createElement("td");
	td.innerHTML = "Enemy Territory";
	tr.appendChild(td);
	
	var tr = document.createElement("tr");
	tbody.appendChild(tr);
	
	var td = document.createElement("td");
	tr.appendChild(td);
	
	var td = document.createElement("td");
	tr.appendChild(td);
	
	var div = document.createElement("div");
	div.setAttribute("id", "Enemy Territory_spot");
	td.appendChild(div);

}


function displayGames()
{

	// Get the XML from the Backend
	var xmlResponse = xmlHttp.responseXML;
	// obtain the XML's document element
	xmlRoot = xmlResponse.documentElement;
	
	status_array = xmlRoot.getElementsByTagName("status");
	var xml_status = status_array.item(0).firstChild.data;
	
	throw_msg_array = xmlRoot.getElementsByTagName("throw_msg");
	throw_msg = throw_msg_array.item(0).firstChild.data;
	
	if (xml_status=="fail") {
		alert(throw_msg);
	}else{
		server_id_array = xmlRoot.getElementsByTagName("server_id");
		server_name_array = xmlRoot.getElementsByTagName("server_name");
		server_ip_array = xmlRoot.getElementsByTagName("server_ip");
		game_port_array = xmlRoot.getElementsByTagName("game_port");
		numplayers_array = xmlRoot.getElementsByTagName("numplayers");
		maxplayers_array = xmlRoot.getElementsByTagName("maxplayers");
		map_array = xmlRoot.getElementsByTagName("current_map");
		ping_array = xmlRoot.getElementsByTagName("ping");
		game_category_array = xmlRoot.getElementsByTagName("game_category");
		server_status_array = xmlRoot.getElementsByTagName("server_status");
	
		var game_category = game_category_array.item(0).firstChild.data;
		var gamediv = document.getElementById(game_category + "_spot");

		var plusElementParent = document.getElementById(game_category);
		var plusElement = plusElementParent.firstChild;
		plusElement.innerHTML = " <b>-</b> ";
		//plusElement.onclick = hideGame;
		//plusElementParent.onclick = hideGame;

		var table = document.createElement("table");
		table.style.cssText = "width: 670px";
		gamediv.appendChild(table);
		
		var tbody = document.createElement("tbody");
		table.appendChild(tbody);
		
		var tr = document.createElement("tr");
		tbody.appendChild(tr);
		
		var td = document.createElement("td");
		td.innerHTML = "<b>ID</b>";
		//td.onclick = orderBy;
		td.style.cssText = "cursor: pointer;";
		tr.appendChild(td);
		
		var td = document.createElement("td");
		td.innerHTML = "<b>Server Name</b>";
		//td.onclick = orderBy;
		td.style.cssText = "cursor: pointer;";
		tr.appendChild(td);
		
		var td = document.createElement("td");
		td.innerHTML = "<b>IP Address</b>";
		//td.onclick = orderBy;
		td.style.cssText = "cursor: pointer;";
		tr.appendChild(td);
		
		var td = document.createElement("td");
		td.innerHTML = "<b>Players</b>";
		//td.onclick = orderBy;
		td.style.cssText = "cursor: pointer;";
		tr.appendChild(td);
		
		var td = document.createElement("td");
		td.innerHTML = "<b>Current Map</b>";
		//td.onclick = orderBy;
		td.style.cssText = "cursor: pointer;";
		tr.appendChild(td);
		
		var td = document.createElement("td");
		td.innerHTML = "<b>Ping</b>";
		//td.onclick = orderBy;
		td.style.cssText = "cursor: pointer;";
		tr.appendChild(td);

		for (var x=0;x<server_id_array.length;x++) {
			var server_id = server_id_array.item(x).firstChild.data;
			var server_name = server_name_array.item(x).firstChild.data;
			var server_ip = server_ip_array.item(x).firstChild.data;
			var game_port = game_port_array.item(x).firstChild.data;
			var numplayers = numplayers_array.item(x).firstChild.data;
			var maxplayers = maxplayers_array.item(x).firstChild.data;
			var current_map = map_array.item(x).firstChild.data;
			var ping = ping_array.item(x).firstChild.data;
			var game_category = game_category_array.item(x).firstChild.data;
			var server_status = server_status_array.item(x).firstChild.data;

			if (server_status=="error") {
				text_style = "text-decoration: line-through;";
			}else{
				text_style = "text-decoration: none;";
			}

			
			var tr = document.createElement("tr");
			tr.onmouseover = hoverStyle;
			tr.onmouseout = hoverOff;
			//tr.onclick = openGame;
			tr.setAttribute("value", server_id);
			tr.style.cssText = text_style; 
			tbody.appendChild(tr);

			var td = document.createElement("td");
			td.innerHTML = server_id;
			td.setAttribute("value", server_id);
			td.style.cssText = text_style; 
			tr.appendChild(td);

			var td = document.createElement("td");
			td.innerHTML = server_name;
			td.style.cssText = text_style; 
			tr.appendChild(td);
 
			var td = document.createElement("td");
			td.innerHTML = server_ip + ":" + game_port;
			td.style.cssText = text_style; 
			tr.appendChild(td);

			var td = document.createElement("td");
			td.innerHTML = numplayers + "/" + maxplayers;
			td.style.cssText = text_style; 
			tr.appendChild(td);
			
			var td = document.createElement("td");
			td.innerHTML = current_map;
			td.style.cssText = text_style; 
			tr.appendChild(td);

			var td = document.createElement("td");
			td.innerHTML = ping;
			td.style.cssText = text_style; 
			tr.appendChild(td);

		}
	}
}

function hideGames(e)
{
}

function changeFunctionToHide(game_category)
{
	var element = document.getElementById(game_category);
	element.onclick = hideGames;
}

function displayGameList()
{
	// Get the XML from the Backend
	var xmlResponse = xmlHttp.responseXML;
	// obtain the XML's document element
	xmlRoot = xmlResponse.documentElement;

	status_array = xmlRoot.getElementsByTagName("status");
	var xml_status = status_array.item(0).firstChild.data;
	
	throw_msg_array = xmlRoot.getElementsByTagName("throw_msg");
	throw_msg = throw_msg_array.item(0).firstChild.data;

	var contentDiv = document.getElementById("contentDiv");
	// Clear Existing Sub Elements of contentDiv
	if (contentDiv.hasChildNodes()) {
		while (contentDiv.hasChildNodes()) {
			contentDiv.removeChild(contentDiv.firstChild);
		}
	}

	var table = document.createElement("table");
	table.style.cssText = getStyle("contentTable")
	contentDiv.appendChild(table);
	
	var tbody = document.createElement("tbody");
	table.appendChild(tbody);

	var tr = document.createElement("tr");
	tbody.appendChild(tr);
	
	var titleDiv = document.createElement("div");
	titleDiv.style.cssText = getStyle("contentDivTitle");
	td.appendChild(titleDiv);
		
	var h3 = document.createElement("p");
	h3.innerHTML = "iPGN Game Servers";
	h3.style.cssText = getStyle("titleText") + "padding-top: 5px;";
	titleDiv.appendChild(h3);
	
	var tr = document.createElement("tr");
	tbody.appendChild(tr);
	
	if (xml_status=="fail") {
		alert(throw_msg);
	}else{

		// Current Number of Games
		//var server_types = 6;

		var table = document.createElement("table");
		table.style.cssText = "width: 600px";
		contentDiv.appendChild(table);
		
		var tbody = document.createElement("tbody");
		table.appendChild(tbody);
		
		var tr = document.createElement("tr");
		tbody.appendChild(tr);
		
		var td = document.createElement("td");
		td.innerHTML = "<b>ID</b>";
		//td.onclick = orderBy;
		td.style.cssText = "cursor: pointer;";
		tr.appendChild(td);
		
		var td = document.createElement("td");
		td.innerHTML = "<b>Server Name</b>";
		//td.onclick = orderBy;
		td.style.cssText = "cursor: pointer;";
		tr.appendChild(td);
		
		var td = document.createElement("td");
		td.innerHTML = "<b>IP Address</b>";
		//td.onclick = orderBy;
		td.style.cssText = "cursor: pointer;";
		tr.appendChild(td);
		
		var td = document.createElement("td");
		td.innerHTML = "<b>Players</b>";
		//td.onclick = orderBy;
		td.style.cssText = "cursor: pointer;";
		tr.appendChild(td);
		
		var td = document.createElement("td");
		td.innerHTML = "<b>Current Map</b>";
		//td.onclick = orderBy;
		td.style.cssText = "cursor: pointer;";
		tr.appendChild(td);
		
		var td = document.createElement("td");
		td.innerHTML = "<b>Ping</b>";
		//td.onclick = orderBy;
		td.style.cssText = "cursor: pointer;";
		tr.appendChild(td);
		
		//var td = document.createElement("td");
		//td.innerHTML = "<b>Query Time</b>";
		//tr.appendChild(td);
		
		server_id_array = xmlRoot.getElementsByTagName("server_id");
		server_name_array = xmlRoot.getElementsByTagName("server_name");
		server_ip_array = xmlRoot.getElementsByTagName("server_ip");
		game_port_array = xmlRoot.getElementsByTagName("game_port");
		numplayers_array = xmlRoot.getElementsByTagName("numplayers");
		maxplayers_array = xmlRoot.getElementsByTagName("maxplayers");
		map_array = xmlRoot.getElementsByTagName("current_map");
		ping_array = xmlRoot.getElementsByTagName("ping");
		timestamp_array = xmlRoot.getElementsByTagName("update_timestamp");
		
		for (var x=0;x<server_id_array.length;x++) {
			var server_id = server_id_array.item(x).firstChild.data;
			var server_name = server_name_array.item(x).firstChild.data;
			var server_ip = server_ip_array.item(x).firstChild.data;
			var game_port = game_port_array.item(x).firstChild.data;
			var numplayers = numplayers_array.item(x).firstChild.data;
			var maxplayers = maxplayers_array.item(x).firstChild.data;
			var current_map = map_array.item(x).firstChild.data;
			var ping = ping_array.item(x).firstChild.data;
			var timestamp = timestamp_array.item(x).firstChild.data;
			
			var tr = document.createElement("tr");
			tr.onmouseover = hoverStyle;
			tr.onmouseout = hoverOff;
			tr.onclick = openGame;
			tr.setAttribute("value", server_id);
			tbody.appendChild(tr);

			var td = document.createElement("td");
			td.innerHTML = server_id;
			td.setAttribute("value", server_id);
			tr.appendChild(td);
			
			var td = document.createElement("td");
			td.innerHTML = server_name;
			tr.appendChild(td);
			
			var td = document.createElement("td");
			td.innerHTML = server_ip + ":" + game_port;
			tr.appendChild(td);
			
			var td = document.createElement("td");
			td.innerHTML = numplayers + "/" + maxplayers;
			tr.appendChild(td);
			
			//var td = document.createElement("td");
			//td.innerHTML = maxplayers;
			//tr.appendChild(td);
			
			var td = document.createElement("td");
			td.innerHTML = current_map;
			tr.appendChild(td);
			
			var td = document.createElement("td");
			td.innerHTML = ping;
			tr.appendChild(td);
			
			//var td = document.createElement("td");
			//td.innerHTML = timestamp;
			//tr.appendChild(td);
		}
		
	}

	getTotalPlayers();
	setTimeout("getGameList()",91600);
}


gamesPage();

