var i=false;
var serverno=1;

function byId(elmId){
	var elm = document.getElementById(elmId);
	if(elm==null) elm = document.getElementsByName(elmId)[0];
	return elm;
}

function setClassName( element, className) {
  agt = navigator.userAgent.toLowerCase();
  if (agt.indexOf('mozilla')!=-1 && agt.indexOf('spoofer')==-1 && agt.indexOf('compatible') == -1)
    element.setAttribute("class", className);
  else
    element.setAttribute("className", className);
}

function setFocus(ctrl){
	try{
		byId(ctrl).focus();
	}catch(e){;};
}

function Toggle(who){
	byId(who).style.display= byId(who).style.display=='none' ? '' : 'none';
}

function trim(string){
	return string.replace(/(^\s*)|(\s*$)/g,'');
}

function URLEncode(s){
	var SAFECHARS = 
		"0123456789" +
		"ABCDEFGHIJKLMNOPQRSTUVWXYZ" +
		"abcdefghijklmnopqrstuvwxyz" +
		"-_.!~*'()";
	var HEX = "0123456789ABCDEF";
	var plaintext = s;
	var encoded = "";
	for (var i = 0; i < plaintext.length; i++ ) {
		var ch = plaintext.charAt(i);
	    if (ch == " ") {
		    encoded += "+";
		} else if (SAFECHARS.indexOf(ch) != -1) {
		    encoded += ch;
		} else {
		    var charCode = ch.charCodeAt(0);
			if (charCode > 255) {
				encoded += "+";
			} else {
				encoded += "%";
				encoded += HEX.charAt((charCode >> 4) & 0xF);
				encoded += HEX.charAt(charCode & 0xF);
			}
		}
	}
	return encoded;
};

function URLDecode(s){
   var HEXCHARS = "0123456789ABCDEFabcdef"; 
   var encoded = s;
   var plaintext = "";
   var i = 0;
   while (i < encoded.length) {
       var ch = encoded.charAt(i);
	   if (ch == "+") {
	       plaintext += " ";
		   i++;
	   } else if (ch == "%") {
			if (i < (encoded.length-2) 
					&& HEXCHARS.indexOf(encoded.charAt(i+1)) != -1 
					&& HEXCHARS.indexOf(encoded.charAt(i+2)) != -1 ) {
				plaintext += unescape( encoded.substr(i,3) );
				i += 3;
			} else {
				plaintext += "%[ERROR]";
				i++;
			}
		} else {
		   plaintext += ch;
		   i++;
		}
	}
   return plaintext;
};

function textToEntities(text){
 var entities = "";
 for (var i = 0; i < text.length; i++)
 {
 if (text.charCodeAt(i) > 127)
 entities += "&#" + text.charCodeAt(i) + ";";
 else
 entities += text.charAt(i);
 }

	return entities;
}
function AddSlashes(text){
 var entities = "";
 for (var i = 0; i < text.length; i++)
 {
 if (text.charCodeAt(i) == 39)
 	// entities += "\\" + text.charCodeAt(i) + ";";
	entities += "\\\'";
 else
 entities += text.charAt(i);
 }

	return entities;
}
function move(e) {
	try{
		if(i) {
			if (navigator.appName!="Microsoft Internet Explorer") { 
				byId("curseur").style.left=e.pageX + 5+"px";
				byId("curseur").style.top=e.pageY + 10+"px";
			}else { 
				if(document.documentElement.clientWidth>0) {
					byId("curseur").style.left=20+event.x+document.documentElement.scrollLeft+"px";
					byId("curseur").style.top=10+event.y+document.documentElement.scrollTop+"px";
				} else {
					byId("curseur").style.left=20+event.x+document.body.scrollLeft+"px";
					byId("curseur").style.top=10+event.y+document.body.scrollTop+"px";
				}
			}
		}
	}catch(e){}
}

function montre(text) {
	try{
		if(i==false) {
			byId("curseur").style.visibility="visible";
			byId("curseur").innerHTML = text;
			i=true;
		}
	}catch(e){}
}

function cache() {
	try{
		if(i==true) {
			byId("curseur").style.visibility="hidden";
			i=false;
		}
	}catch(e){}
}

function Run(){
	i=false;
	document.onmousemove=move;
	Timer();
}

function Timer(){
	setTimeout('Timer();',refresh_delay);
	ArmaInfo();
	//TSInfo();
}

function ArmaInfo(){
	if(serverno<2){
		byId('gameqarma').style.display='';
		byId('gameqarma').innerHTML='Un instant...';
	}else{
		byId('gameqarma2').style.display='';
		byId('gameqarma2').innerHTML='Un instant...';
	}
	var url='xml/gameq.php';
	var params="param1=arma"+serverno;
	var myxhr=getXMLHttpRequest();
	if(myxhr){
		myxhr.onreadystatechange =function() { ResponseGameQ(myxhr); }
		myxhr.open("POST", url,  true);
		myxhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
		myxhr.send(params);
	}else{
		alert('Un problème est survenu au cours de la requête.');
	}
	return false;
}

function ResponseGameQ(retour){
	try {
		if (retour.readyState == 4) {
			if (retour.status == 200) {
				var response=retour.responseXML;
				var items = response.getElementsByTagName("reponse-ajax");
				var arma=items[0].getElementsByTagName("arma");
				var arma_server=arma[0].getElementsByTagName("arma-server");
				var s='';
				num_server=arma_server[0].getElementsByTagName("serverno")[0].firstChild.nodeValue;
				if(num_server>1){
					var ext='2';
				}else{
					ext='';
				}
				if(num_server==1){
					s+='<div id="gameq-top'+ext+'">Arma II</div>\n';
					s+='<div id="gameq-name'+ext+'">[FR] ~R3F~ "Public"</div>\n';
				}else{
					s+='<div id="gameq-top'+ext+'">Arma II</div>\n';
					s+='<div id="gameq-name'+ext+'">[FR] ~R3F~ "Elite"</div>\n';
				}
				//s+='<div id="gameq-name'+ext+'">[FR] TEAM ~R3F~</div>\n';
				s+='<div id="gameq-ip'+ext+'">IP :&nbsp;&nbsp;';
				s+=(arma_server[0].getElementsByTagName("gq_online")[0].firstChild.nodeValue==1) ? '<img src="images/online.png" alt="online" />' : '<img src="images/offline.png" alt="offline" />'
				s+='&nbsp;<span>'+URLDecode(arma_server[0].getElementsByTagName("gq_address")[0].firstChild.nodeValue);
				s+=':'+URLDecode(arma_server[0].getElementsByTagName("gq_port")[0].firstChild.nodeValue)+'</span></div>\n';


				var arma_players=arma[0].getElementsByTagName("arma-players");
				var players=arma_players[0].getElementsByTagName("player");
				var i;
				var sp='';
				sp='<table class=tbl_players>';
				sp+='<tr>';
				sp+='<th>Joueur</th><th>Team</th><th>Score</th><th>Morts</th>';
				sp+='</tr>';
				for (i=0; i< players.length; i++){
					sp+='<tr>';
					sp+='<td>'+AddSlashes(URLDecode(players[i].getElementsByTagName("name")[0].firstChild.nodeValue))+'</td>';
					sp+='<td>'+AddSlashes(URLDecode(players[i].getElementsByTagName("team")[0].firstChild.nodeValue))+'</td>';
					sp+='<td>'+URLDecode(players[i].getElementsByTagName("score")[0].firstChild.nodeValue)+'</td>';
					sp+='<td>'+URLDecode(players[i].getElementsByTagName("deaths")[0].firstChild.nodeValue)+'</td>';
					sp+='</tr>';
				}
				sp+='</table>';

				s+='<div id="gameq-players'+ext+'" onmouseout="return nd();" onmouseover="return overlib(\''+sp+'\',FULLHTML);">Joueurs : <span>'+arma_server[0].getElementsByTagName("numplayers")[0].firstChild.nodeValue;
				s+='/'+arma_server[0].getElementsByTagName("maxplayers")[0].firstChild.nodeValue+'</span></div>\n';
				try{
					s+='<div id="gameq-map'+ext+'">Carte : <span>'+URLDecode(arma_server[0].getElementsByTagName("mission")[0].firstChild.nodeValue)+'</span></div>\n';
				}catch(e){
					s+='<div id="gameq-map'+ext+'">Carte : <span>Pas de map chargée</span></div>\n';
				}
				s+='<div id="curseur'+ext+'" class="infobull"></div>\n';
				if(num_server==1){
					byId('gameqarma').innerHTML=s;
				}else{
					byId('gameqarma2').innerHTML=s;
				}

				retour.abort();
				retour = null;
				serverno++;
				if(serverno < 3){
					ArmaInfo();
				}else{
					serverno=1;
				}
			}
		}
	}catch( e ) {
		//alert("Une Exception s'est produite : " + e.description);
	}
}

function TSInfo(){
	byId('teamspeakdisplay').style.display='';
	byId('teamspeakdisplay').innerHTML='Un instant...';
	var url='xml/tsview.php';
	var params="param1=arma";
	var myxhr=getXMLHttpRequest();
	if(myxhr){
		myxhr.onreadystatechange =function() { ResponseTSView(myxhr); }
		myxhr.open("POST", url,  true);
		myxhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
		myxhr.send(params);
	}else{
		alert('Un problème est survenu au cours de la requête.');
	}
	return false;
}

function ResponseTSView(retour){
	try {
		if (retour.readyState == 4) {
			if (retour.status == 200) {
				var response=retour.responseXML;
				var items = response.getElementsByTagName("reponse-ajax");
				var ts=items[0].getElementsByTagName("teamspeakdisplay");
				var ts_top=ts[0].getElementsByTagName("tstop")[0].firstChild.nodeValue;
				var server_name=ts[0].getElementsByTagName("tsname")[0].firstChild.nodeValue;
				var server_ip=ts[0].getElementsByTagName("tsip")[0].firstChild.nodeValue;
				var server_port=ts[0].getElementsByTagName("tsport")[0].firstChild.nodeValue;
				var server_online=ts[0].getElementsByTagName("tsonline")[0].firstChild.nodeValue==1;
				var s='';
				s+='<div id="ts-top">' + ts_top + '</div>\n';
				s+='<div id="ts-name">' + server_name + '</div>\n';
				s+='<div id="ts-ip">IP :&nbsp;';
				if(server_online){
					s+='<img src="images/online.png" alt="online" />';
				}else{
					s+='<img src="images/offline.png" alt="offline" />';
				}
				s+='&nbsp;<span>' + server_ip + ':' + server_port + '</span></div>\n';
				var players=ts[0].getElementsByTagName("playerlist");
				var nbplayers=ts[0].getElementsByTagName("tsnbplayers")[0].firstChild.nodeValue;
				if(nbplayers>0) {
					s+='<table>\n';
					for (i=0; i< nbplayers; i++){
						var player=ts[0].getElementsByTagName("player")[i];
						var img=ts[0].getElementsByTagName("image")[i].firstChild.nodeValue;
						var totaltime=ts[0].getElementsByTagName("totaltime")[i].firstChild.nodeValue;
						var pingtime=ts[0].getElementsByTagName("pingtime")[i].firstChild.nodeValue;
						var nom=ts[0].getElementsByTagName("name")[i].firstChild.nodeValue;
						var mytitle='En ligne depuis : ' + totaltime + ', Ping: ' + pingtime +  'ms';
						s+='<tr title="'+ mytitle +'">\n';
						s+='<td><img src="/teamspeakdisplay/player_' + img + '.png" alt="'+ img + '"/></td>\n';
						s+='<td>' + nom + '</td>\n';
						s+='</tr>\n';
					}
					s+='</table>\n';
				}
				byId('teamspeakdisplay').innerHTML=s;
			
				retour.abort();
				retour = null;
			}
		}
	}catch( e ) {
		//alert("Une Exception s'est produite : " + e.description);
	}
}

var refresh_delay=60000;
