// objet XMLHttpRequest
var mapReqHTTP;
var flagsReqHTTP;
var infosReqHTTP;
var charsReqHTTP;
var oppReqHTTP;
var takeGroundReqHTTP;




/*------------------------------------------------------------------------------------------
moveChar
Deplace un mimichant (id) dans une des 8 directions et actualise sa positon dans la base
------------------------------------------------------------------------------------------*/
function takeGround (charId) {

	url  = 'get/capture.php?&charId='+charId;
	
	moveCharReqHTTP = new XMLHttpRequest();
	moveCharReqHTTP.onload = takeGroundBack;
	moveCharReqHTTP.open("GET", url, false);
	moveCharReqHTTP.send(null);
}


function takeGroundBack() {

	try {
	// seulement si requete terminee et statut OK
	if (takeGroundReqHTTP.readyState == 4 && takeGroundReqHTTP.status == 200) {
	
		var res = takeGroundReqHTTP.responseXML;
		var bool = res.getElementsByTagName('bool')[0].firstChild.data;
		
		//if(bool!=0)
		var errorTxt = res.getElementsByTagName('error')[0].firstChild.data;
		sendInfo(errorTxt,-1);

	}} catch (error){}
}











/*------------------------------------------------------------------------------------------
moveChar
Deplace un mimichant (id) dans une des 8 directions et actualise sa positon dans la base
------------------------------------------------------------------------------------------*/
function moveChar(id, x_dir, y_dir) {

	url  = 'get/moveChar.php?&id='+id+'&x_dir='+x_dir+'&y_dir='+y_dir;
	
	moveCharReqHTTP = new XMLHttpRequest();
	moveCharReqHTTP.onload = moveCharBack;
	moveCharReqHTTP.open("GET", url, false);
	moveCharReqHTTP.send(null);
}


function moveCharBack() {

	try {
	// seulement si requete terminee et statut OK
	if (moveCharReqHTTP.readyState == 4 && moveCharReqHTTP.status == 200) {
		
		var res = moveCharReqHTTP.responseXML;
		var bool = res.getElementsByTagName('bool')[0].firstChild.data;
		
		if(bool!=0) {
			var errorTxt = res.getElementsByTagName('error')[0].firstChild.data;
			sendInfo(errorTxt,-1);
		} else {
			// VARIABLE GLOBALE "FLAG / MUTEX" pour controler reussite/echec du deplacement
			moveCharManaged = 1;
		}
	}} catch (error){}
}









/*------------------------------------------------------------------------------------------
getOpponentCharInfos
Donne des infos detaillees sur le mimichant ennemi selectionne dans la liste d'un terrain
------------------------------------------------------------------------------------------*/
function getCharPos(id) {

	url  = 'get/getCharPos.php?&id='+id;
	
	charPosReqHTTP = new XMLHttpRequest();
	charPosReqHTTP.onload = getCharPosBack;
	charPosReqHTTP.open("GET", url, false);
	charPosReqHTTP.send(null);
}


function getCharPosBack() {

	try {
	// seulement si requete terminee et statut OK
	if (charPosReqHTTP.readyState == 4 && charPosReqHTTP.status == 200) {
		
		var res = charPosReqHTTP.responseXML;
		charX = res.getElementsByTagName('x')[0].firstChild.data;
		charY = res.getElementsByTagName('y')[0].firstChild.data;
		
		//alert('getCharPosBack() : '+charX+' '+charY);
		
	}} catch (error){ }
}








/*------------------------------------------------------------------------------------------
getGroundChars
Donne des infos detaillees sur le mimichant ennemi selectionne dans la liste d'un terrain
------------------------------------------------------------------------------------------*/
function getGroundCharInfos() {

	var cSelect = document.getElementById('groundCharsSelect');
	var id = cSelect[cSelect.selectedIndex].value;
	
	// MAJ variable globale indiquant id du mimichant ennemi selectionne
	charOppId = id;

	
	if(id==-1)
		document.getElementById('groundCharInfos').innerHTML = '';
	else {
		
		if ( charOppId == charId )
			sendInfo('Euh... Là,c\'est toi-même ! Tu veux t\'automutiler ?! ',0);
		
		url  = 'get/getGroundCharInfos.php?&id='+id;
		
		oppReqHTTP = new XMLHttpRequest();
		oppReqHTTP.onload = getGroundCharInfosBack;
		oppReqHTTP.open("GET", url, false);
		oppReqHTTP.send(null);
	}
}


function getGroundCharInfosBack() {

	try {
	// seulement si requete terminee et statut OK
	if (infosReqHTTP.readyState == 4 && infosReqHTTP.status == 200) {
		
		document.getElementById('groundCharInfos').innerHTML = oppReqHTTP.responseText;
		
	}} catch (error){}
}









/*------------------------------------------------------------------------------------------
getCaseInfos
Gere la selection d'une case : 
- affiche un marqueur dessus
- requete sur les infos detaillees de la case
------------------------------------------------------------------------------------------*/
function getCaseInfos(x,y) {

	// appelle la page PHP pour generer le XHTML de la carte
	url  = 'get/getGroundInfos.php?x='+x+'&y='+y;

	//alert(url);
	//infosReqHTTP = chargerXMLDoc(url, getCaseInfosReponse);
	
	infosReqHTTP = new XMLHttpRequest();
	infosReqHTTP.onload = getCaseInfosBack;
	infosReqHTTP.open("GET", url, false);
	infosReqHTTP.send(null);
}


function getCaseInfosBack() {
	try {
	// seulement si requete terminee et statut OK
	if (infosReqHTTP.readyState == 4 && infosReqHTTP.status == 200) {
		//alert(infosReqHTTP.responseText);	
		document.getElementById('infos_case').innerHTML = infosReqHTTP.responseText;
		
	}} catch (error){}
}







/*------------------------------------------------------------------------------------------
getChars
Requete demandant les flags autour de (centreX,centreY)
------------------------------------------------------------------------------------------*/
function getChars() {
	// appelle la page PHP pour generer le XHTML de la carte
	url='get/getChars.php?x='+centreX+'&y='+centreY+'&w='+mapWidth+'&h='+mapHeight+'&caseSize='+caseSize+'&imgW='+imgW+'&imgH='+imgH+'&uid='+userId;
	//charsReqHTTP = chargerXMLDoc(url, getCharsBack);
	
	charsReqHTTP = new XMLHttpRequest();
	charsReqHTTP.onload = getCharsBack;
	charsReqHTTP.open("GET", url, false);
	charsReqHTTP.send(null);
}

/*------------------------------------------------------------------------------------------
getCharsBack
Gere la reponse de "getFlags()" et rempli <div id="flags"> avec les flags
------------------------------------------------------------------------------------------*/
function getCharsBack() {

	try {
		if ( charsReqHTTP.readyState == 4 && charsReqHTTP.status == 200)
		{
			document.getElementById('chars').innerHTML = charsReqHTTP.responseText;
		}
	}
	catch (error){}
}










/*------------------------------------------------------------------------------------------
getFlags
Requete demandant les flags autour de (centreX,centreY)
------------------------------------------------------------------------------------------*/
function getFlags() {
	// appelle la page PHP pour generer le XHTML de la carte
	url='get/getFlags.php?x='+centreX+'&y='+centreY+'&w='+mapWidth+'&h='+mapHeight+'&caseSize='+caseSize;
	//flagsReqHTTP = chargerXMLDoc(url, getFlagsBack);
	
	flagsReqHTTP = new XMLHttpRequest();
	flagsReqHTTP.onload = getFlagsBack;
	flagsReqHTTP.open("GET", url, false);
	flagsReqHTTP.send(null);
}

/*------------------------------------------------------------------------------------------
getFlagsBack
Gere la reponse de "getFlags()" et rempli <div id="flags"> avec les flags
------------------------------------------------------------------------------------------*/
function getFlagsBack() {

	try {
		if ( flagsReqHTTP.readyState == 4 && flagsReqHTTP.status == 200)
		{
			document.getElementById('flags').innerHTML = flagsReqHTTP.responseText;
			flagsValid = 1;
		}
	}
	catch (error){}
}










/*------------------------------------------------------------------------------------------
getGrounds
Requete demandant les terrains autour de (centreX,centreY)
------------------------------------------------------------------------------------------*/
function getGrounds(coord,x,y) {
	
	if(coord) { centreX = x; centreY = y; }
	
	// appelle la page PHP pour generer le XHTML de la carte
	url='get/getGrounds.php?x='+centreX+'&y='+centreY+'&w='+mapWidth+'&h='+mapHeight+'&caseSize='+caseSize;
	//mapReqHTTP = chargerXMLDoc(url, getGroundsBack);
	
	mapReqHTTP = new XMLHttpRequest();
	mapReqHTTP.onload = getGroundsBack;
	mapReqHTTP.open("GET", url, false);
	mapReqHTTP.send(null);
}


/*------------------------------------------------------------------------------------------
getGroundsBack
Gere la reponse de "getGrounds()" et rempli <div id="cases"> avec les terrains
------------------------------------------------------------------------------------------*/
function getGroundsBack() {

	try {
		if (mapReqHTTP.readyState == 4 && mapReqHTTP.status == 200)
		{
			document.getElementById('cases').innerHTML = mapReqHTTP.responseText;
			
			// actualise infos carte
			document.getElementById("centre_x").innerHTML = centreX;
			document.getElementById("centre_y").innerHTML = centreY;
			
			setMiniMapAim(); // repositionne la cible dans la minimap
			clic(caseX,caseY,1); // repositionne selection
			
			// si flags affiches et invalides, actualisation
			if ( showFlags == 1 && flagsValid == 0 ) getFlags();
			// sinon indique flags non-synchrones
			else flagsValid = 0;
			getChars();
		}
	} catch (error){}
}
