/**
 * Master server list getter
 * AJAX functions
 * @author Yuri_S
 * @version 1.0
 *
 */

var mslistdisplayed = false;

function queryMasterServer () {
	
	if (mslistdisplayed == true) {
		return;
	}
	
	var xml = new Breeze.Ajax("br_tpl/Original-War.net/msListFetch.php");
	
	xml.onLoad = function () {
		$('masterservertable_disabled').style.display = 'none';
		$('masterservertable_loading').style.display = '';
	}
	xml.onSuccess = function (xmlhttp) {
		$('masterservertable_loading').style.display = 'none';
		
		var xmldom = xmlhttp.responseXML;
		
		if (isset(xmldom.getElementsByTagName('offline').item(0))) {
			$('masterservertable_down').style.display = '';
			return true;
		}
		
		var gamestats = xmldom.getElementsByTagName('gamestats').item(0);
		var svrtbl = $('masterservertable');
		
		if (isset(gamestats) && gamestats.childNodes.length > 0) {
			var timestamp = gamestats.getElementsByTagName('server').item(0).getAttribute('utctime');
			var gamelist = xmldom.getElementsByTagName('game');
			var dedilist = new Array();
			var pwlist = new Array();
			var otherslist = new Array();
			
			for (var i = 0; i < gamelist.length; i++) {
				if (gamelist[i].getAttribute('dedi') == 1) {
					dedilist[dedilist.length] = gamelist[i];
				} else if (gamelist[i].getAttribute('pw') == 1) {
					pwlist[pwlist.length] = gamelist[i];
				} else {
					otherslist[otherslist.length] = gamelist[i];
				}
				
			}
			
			var tpl = $('masterservertable_item');
			var sortedlist = dedilist.concat(otherslist, pwlist);
			
			for (var i = 0; i < sortedlist.length; i++) {
				var server = tpl.cloneNode(true);
				server.removeAttribute('id');
				server.style.display = '';
				var server_td = server.getElementsByTagName('td');
				
				var modes = server_td[0].getElementsByTagName('img');
				if (sortedlist[i].getAttribute('dedi') == 0) {
					modes[0].style.display = 'none';
				}
				if (sortedlist[i].getAttribute('pw') == 0) {
					modes[1].style.display = 'none';
				}
				
				var gamename = server_td[1].getElementsByTagName('a')[0].innerHTML;
				var gamecreator = sortedlist[i].getAttribute('user');
				gamename = str_replace('%s', gamecreator, gamename);
				server_td[1].getElementsByTagName('a')[0].innerHTML = gamename;
				server_td[1].getElementsByTagName('a')[0].setAttribute('href', 'owlink://'+gamelist[i].getAttribute('id'));
				
				var minutes = Math.floor((Number(timestamp) - Number(sortedlist[i].getAttribute('timestamp'))) / 60);
				var gamestarted = server_td[1].getElementsByTagName('a')[0].getAttribute('title');
				gamestarted = str_replace(new Array('%s', '%d'), new Array(sortedlist[i].getAttribute('user'), minutes.valueOf()), gamestarted);
				server_td[1].getElementsByTagName('a')[0].setAttribute('title', gamestarted);
				
				server_td[2].innerHTML = sortedlist[i].getAttribute('ver');
				
				svrtbl.appendChild(server);
				
			}
			
		} else {
			$('masterservertable_empty').style.display = '';
		}
		
	}
	xml.onError = function (xmlhttp) {
		//alert('queryMasterServer(): Error loading data (' + xmlhttp.status + '), contact the administrator');
		$('masterservertable_loading').style.display = 'none';
		$('masterservertable_down').style.display = '';
	}
	
	xml.get();
	
	mslistdisplayed = true;
	
}

Breeze_onInit.add(function () { queryMasterServer(); });
