var zoomMax=3;
var mouse_x = 0;
var mouse_y = 0;
var increment=4;
document.onmousemove = position;
var mode=1;
var x_clic=0;
var y_clic=0;

document.oncontextmenu = rien;
document.body.onclick = MasquerMenu;


function rien(){
	return false;
}

function a(x,y)
{
	x_clic=x;
	y_clic=y;
	menu();
}

function menu() {
	var posX=mouse_x+5+document.getElementById('center').scrollLeft;
	var posY=mouse_y+((document.documentElement && document.documentElement.scrollTop) || window.pageYOffset || self.pageYOffset || document.body.scrollTop);
	
	// Distance par rapport aux bords de la fenetre
	var EspaceDroit = document.body.clientWidth-posX;
	var EspaceBas = document.body.clientHeight-posY;
	
	// Affichage du menu suivant la position du curseur
	if (EspaceDroit < document.getElementById('menucontextuel').offsetWidth)
		document.getElementById('menucontextuel').style.left = (document.body.scrollLeft + posX - document.getElementById('menucontextuel').offsetWidth)+'px';
	else
		document.getElementById('menucontextuel').style.left =( document.body.scrollLeft + posX )+'px';
	
	if (EspaceBas < document.getElementById('menucontextuel').offsetHeight){
		document.getElementById('menucontextuel').style.top = (document.getElementById('corps').scrollTop + posY - document.getElementById('menucontextuel').offsetHeight)+'px'; 
	}
	else{
		document.getElementById('menucontextuel').style.top = (document.getElementById('corps').scrollTop + posY)+'px'; 
	}
	
	document.getElementById('menucontextuel').style.className='ContextMenu';
	
	// Affichage du menu
	document.getElementById('menucontextuel').style.visibility = "visible";
	return false;
}

function MasquerMenu(){
	document.getElementById('menucontextuel').style.backgroundColor='';
	document.getElementById('menucontextuel').style.visibility='hidden';
	document.getElementById('menucontextuel').style.className='';
}

h=new Array(16);
for (i=0;i<10;i++){
	h[i]=i.toString();
}

h[10]='A';h[11]='B';h[12]='C';h[13]='D';h[14]='E';h[15]='F';


function toHexa(n){
	n=Number(n);
	return(h[Math.floor(n/16)]+h[n%16]);
}

//Gestion de la souris
function position(evt){
 
	if(!evt) evt = window.event;    
	mouse_x = evt.clientX;
	mouse_y = evt.clientY;
}

function alliance (id,nom,couleur,relation)
{
	this.id=id;
	this.nom=nom;
	this.couleur=couleur;
	this.relation=relation;

	this.getId = function()
	{
		return this.id;
	}

	this.getNom = function()
	{
		return this.nom;
	}
	
	this.getCouleur = function()
	{
		return this.couleur;
	}
	
	this.getRelation = function()
	{
		return this.relation;
	}
}

function perso(id,nom,couleur)
{
	this.id=id;
	this.nom=nom;
	this.couleur=couleur;

	this.getId = function()
	{
		return this.id;
	}

	this.getNom = function()
	{
		return this.nom;
	}
	
	this.getCouleur = function()
	{
		return this.couleur;
	}
}

function cache() {
	document.getElementById('infos').style.visibility='hidden'; 
}

function aff(posX,posY,id_peuple,village,login,alliance,population) {
	c='('+posX+','+posY+') '+village+'<br />';
	c+=trad['joueur']+' : '+login+'<br />';
	c+=trad['alliance']+' : '+alliance+'<br />';
	c+=peuple[id_peuple]+'<br />';
	c+=trad['population']+' : '+population+'<br />';
	c+=trad['distance']+' : '+Math.round(Math.sqrt((posX-x)*(posX-x)+(posY-y)*(posY-y)),4);
	document.getElementById('infos_corps').innerHTML=c;
	document.getElementById('infos').style.left=(mouse_x+5+document.getElementById('center').scrollLeft)+'px';
	document.getElementById('infos').style.top=(mouse_y+(document.documentElement && document.documentElement.scrollTop) || window.pageYOffset || self.pageYOffset || document.body.scrollTop)+'px';

	document.getElementById('infos').style.visibility='visible';
}

function CreateXMLHTTPRequestObject() 
{
	// Propriétés
	
	this.xhr_object    = null;
	this.response      = null;
	this.ready         = true;
	this.asynchronous  = true;

	// Création de l'objet XMLHTTpRequest
	if(window.XMLHttpRequest) // Firefox
		this.xhr_object = new XMLHttpRequest();
	else if(window.ActiveXObject) // Internet Explorer
		this.xhr_object = new ActiveXObject("Microsoft.XMLHTTP");
	else // XMLHttpRequest non supporté par le navigateur
		alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");



	// Méthodes

	// Appelle la fonction censée indiquer qu'une communication est en cours
	// La fonction doit être fournie par l'utilisateur de la classe et doit prendre un booléen en paramètre :
	//  - true  : la communication commence
	//  - false : la communication est terminée
	this.indicatorFunction = null;
	
	// Permet de définir la fonction qui servira d'indicateur de communication
	this.setIndicatorFunction = function(func) {
		if(typeof(func) == "function") this.indicatorFunction = func;
	}
	
	// Passe en mode synchrone
	this.setSynchronous = function() {
		this.asynchronous = false;
	}

	// Passe en mode asynchrone
	this.setAsynchronous = function() {
		this.asynchronous = true;
	}

	// Lance une requête sur un fichier du serveur en passant éventuellement des paramètres, avec la méthode GET
	this.getFileGet = function(url, data) {
		return this.doRequest(url, "GET", data);
	}

	// Alias de this.getFileGet
	this.getFile = this.getFileGet;
	
	// Lance une requête sur un fichier du serveur en passant éventuellement des paramètres, avec la méthode POST
	this.getFilePost = function(url, data) {
		return this.doRequest(url, "POST", data);
	}

	// Récupère tous les header associés à l'URL passée en paramètre, ou juste le header passé en paramètre s'il est précisé
	this.getFileHeader = function(url, header) {
		return this.doRequest(url, "HEAD", header);
	}

	// Effectue la requête proprement dite
	//  - method : GET, POST ou HEAD
	//  - url    : chemin vers un fichier
	//  - data   : données à transmettre (ex : a=5&foo=bar)
	this.doRequest = function(url, method, data) {
		if(!this.ready || !this.xhr_object) return false;

		// Recherche header_name dans tous les headers et retourne la valeur correspondante
		// ou "Header inconnu..." si header_name n'a pas été trouvé
		function _getResponseHeader(headers, header_name) {
			var tmp = headers.split("\n");
			for(var i=0, n=tmp.length, t=[]; i<n-1; ++i) {
				t = tmp[i].split(": ");
				if(t[0].toLowerCase() == header_name.toLowerCase()) return t[1];
			}
			return "Header inconnu...";
		}

		if(this.indicatorFunction) this.indicatorFunction(true);
		this.ready = false;

		// On copie la référence à l'objet courant car il ne sera plus "dans le contexte"
		// au moment où la fonction onreadystatechange sera exécutée
		var obj = this;
		function onreadystatechangeFunction() {
			if(obj.xhr_object.readyState != 4) return;
			
			if(obj.indicatorFunction) obj.indicatorFunction(false);

			var all_headers = obj.xhr_object.getAllResponseHeaders();
			if(method == "HEAD") {
				obj.response = data ? _getResponseHeader(all_headers, data) : all_headers;
			}
			else {
				var content_type = _getResponseHeader(all_headers, "Content-Type");
				if (content_type != "Header inconnu..." && (new RegExp("^text/xml.*$", "gi")).test(content_type))
					obj.response = obj.xhr_object.responseXML;
				else
					obj.response = obj.xhr_object.responseText;
					obj.page = obj.xhr_object ;
			}
		}

		if(method == "GET" && typeof(data) != "undefined" && data != "") url += "?"+data;
		this.xhr_object.open(method, url, this.asynchronous);

		if(this.asynchronous)
			this.xhr_object.onreadystatechange = onreadystatechangeFunction;
		
		if(data) this.xhr_object.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
		else     data = null;
		this.xhr_object.send(data);

		if(!this.asynchronous)
			onreadystatechangeFunction();

		return true;
	}

	// Retourne true si la réponse est arrivée, false sinon
	this.hasResponse = function() {
		return this.response != null;
	}

	// Retourne la réponse à la dernière requête
	this.getResponse = function() {
		return this.response;
	}
	
	this.getPage = function() {
		return this.page;
	}

	// Valide la requête, une nouvelle requête peut être faite avec ce même objet
	this.validateRequest = function() {
		this.ready    = true;
		this.response = null;
	}

	// Annule la requête en cours
	this.cancelRequest = function() {
		this.xhr_object.abort();
		if(this.indicatorFunction) this.indicatorFunction(false);
		this.validateRequest();
	}
}

var requete;

function rechargerCarte() {
	var taille=Math.pow(2,zoom-1)*16;
	requete = new CreateXMLHTTPRequestObject();
	requete.setAsynchronous();
	requete.setIndicatorFunction(maj);
	var ally;
	if(monAlliance)
		ally=monAlliance.getId();
	else
		ally='';
	if(pop_min)	populationMin=pop_min;
	else		populationMin=0;
	if(pop_max)	populationMax=pop_max;
	else		populationMax=2000;
		
	var alliancesAlliees='',alliancesAllieesCouleurs='',alliancesEnnemies='',alliancesEnnemiesCouleurs='';
	for(var i=0;i<tabAlliances.length;i++)
	{
		if(tabAlliances[i].getRelation()!='guerre')
		{
			alliancesAlliees+=tabAlliances[i].getId()+',';
			alliancesAllieesCouleurs+=tabAlliances[i].getCouleur()+',';
		}
		else
		{
			alliancesEnnemies+=tabAlliances[i].getId()+',';
			alliancesEnnemiesCouleurs+=tabAlliances[i].getCouleur()+',';
		}
	}
	
	var persos='',persosCouleurs='';
	for(var i=0;i<tabPersos.length;i++)
	{
		persos+=tabPersos[i].getId()+',';
		persosCouleurs+=tabPersos[i].getCouleur()+',';
	}

	var dateText=date.getFullYear()+'-';
	if(date.getMonth()+1<10)
		dateText+='0'+parseInt(date.getMonth()+1)+'-';
	else
		dateText+=parseInt(date.getMonth()+1)+'-';
	if(date.getDate()<10)
		dateText+='0'+date.getDate();
	else
		dateText+=date.getDate();
	
	var location='ajax/carte.ajax.php?serveur='+serveur+'&x='+x+'&y='+y+'&taille='+taille+'&type='+type+'&alliance='+ally+'&mode='+mode+'&pop_min='+populationMin+'&pop_max='+populationMax+'&alliances_alliees='+alliancesAlliees+'&alliances_alliees_couleurs='+alliancesAllieesCouleurs+'&alliances_ennemies='+alliancesEnnemies+'&alliances_ennemies_couleurs='+alliancesEnnemiesCouleurs+'&persos='+persos+'&persos_couleurs='+persosCouleurs+'&date='+dateText;	
	//document.location=location;
	requete.getFile(location);
	
	document.getElementById('lien').value='http://www.traviantoolbox.com/carte.php?serveur='+serveur+'&x='+x+'&y='+y+'&zoom='+zoom+'&type='+type+
	'&pop_min='+pop_min+'&pop_max='+pop_max+'&date='+dateText+'&alliance='+ally+
	'&alliances_alliees='+alliancesAlliees+'&alliances_alliees_couleurs='+alliancesAllieesCouleurs+'&alliances_ennemies='+alliancesEnnemies+'&alliances_ennemies_couleurs='+alliancesEnnemiesCouleurs+'&persos='+persos+'&persos_couleurs='+persosCouleurs;
}

function maj(arg)
{
	if(!arg)
	{
		if(!requete.hasResponse())
			setTimeout('maj(false)', 200);
		var rep = requete.getResponse();
		document.getElementById('carte').innerHTML=rep;
		document.getElementById('chargement').style.visibility='hidden';
	}
	else
	{
		document.getElementById('chargement').style.visibility='visible';
	}
}

function changeZoom(z)
{
	if(z>=1 && z<=7)
	{
		document.getElementById('imgZoom'+zoom).src=ttb_img+'/carte/'+zoom+'.gif';
		zoom=z;
		document.getElementById('imgZoom'+zoom).src=ttb_img+'/carte/'+zoom+'_dis.gif';
		if(zoom>zoomMax)
			increment=2;
		else
			increment=4;
		rechargerCarte();
	}
}

function changeCoordonnees(newX,newY)
{
	if(isNaN(newX))	newX=parseInt(newX);
	if(isNaN(newY))	newX=parseInt(newY);
	if(isNaN(newX))	newX=0;
	if(isNaN(newY))	newX=0;
	x=newX;
	y=newY;
	document.getElementById('coordX').value=x;
	document.getElementById('coordY').value=y;
	rechargerCarte();
}

function direction(d)
{
	switch(d)
	{
		case 'G':
			changeCoordonnees(x-Math.pow(2,zoom-1)*16/increment,y);
			break;
		case 'D':
			changeCoordonnees(x+Math.pow(2,zoom-1)*16/increment,y);
			break;
		case 'H':
			changeCoordonnees(x,y+Math.pow(2,zoom-1)*16/increment);
			break;
		case 'B':
			changeCoordonnees(x,y-Math.pow(2,zoom-1)*16/increment);
			break;
	}
}

function changeType(typ)
{
	var legende='';
	type=typ;
	if(typ=='peuple')
	{
		document.getElementById('typePeuple').style.color='#FF0000';
		document.getElementById('typePeuple').style.backgroundImage='url('+ttb_img+'/carte/onglet_hl.gif)';
		document.getElementById('typeAlliance').style.color='';
		document.getElementById('typeAlliance').style.backgroundImage='url('+ttb_img+'/carte/onglet.gif)';
		document.getElementById('typePopulation').style.color='';
		document.getElementById('typePopulation').style.backgroundImage='url('+ttb_img+'/carte/onglet.gif)';
		document.getElementById('typePersos').style.color='';
		document.getElementById('typePersos').style.backgroundImage='url('+ttb_img+'/carte/onglet.gif)';

		document.getElementById('basLegende').innerHTML=trad['legende']+' : <br />'+
		'<table><tr><td style=\"background-color:'+tcolor[1]+'; \"></td><td><img src=\"'+ttb_img+'/units/9.gif\" alt=\"\"  /></td><td>'+race[1]+'</td></tr><tr><td width=\"20\" style=\"background-color:'+tcolor[2]+'; \"></td><td><img src=\"'+ttb_img+'/units/19.gif\" alt=\"\"  /></td><td>'+race[2]+'</td></tr><tr><td width=\"20\" style=\"background-color:'+tcolor[3]+'; \"><\/td><td><img src=\"'+ttb_img+'/units/29.gif\" alt=\"\"  /></td><td>'+race[3]+'</td></tr></table>';
		rechargerCarte();
	}
	else if(typ=='population')
	{
		document.getElementById('typePeuple').style.color='';
		document.getElementById('typePeuple').style.backgroundImage='url('+ttb_img+'/carte/onglet.gif)';
		document.getElementById('typeAlliance').style.color='';
		document.getElementById('typeAlliance').style.backgroundImage='url('+ttb_img+'/carte/onglet.gif)';
		document.getElementById('typePopulation').style.color='#FF0000';
		document.getElementById('typePopulation').style.backgroundImage='url('+ttb_img+'/carte/onglet_hl.gif)';
		document.getElementById('typePersos').style.color='';
		document.getElementById('typePersos').style.backgroundImage='url('+ttb_img+'/carte/onglet.gif)';
		
		var legende=trad['population']+' : <br /><table cellPadding=\"0\" cellSpacing=\"0\"><tr>';
		var pas=3;
		for(i=255;i>=0;i-=pas)
		{
			legende+='<td style=\"background-color: #FFFF'+toHexa(i)+'; width:1px; height:10px; padding-left:0px; \"><\/td>';
		}
		for(i=255;i>=0;i-=pas)
		{
			legende+='<td style=\"background-color: #FF'+toHexa(i)+'00; width:1px; height:10px; padding-left:0px; \"><\/td>';
		}
		for(i=255;i>=0;i-=pas)
		{
			legende+='<td style=\"background-color: #'+toHexa(i)+'0000; width:1px; height:10px; padding-left:0px;\"><\/td>';
		}
		legende+='</tr></table>'+
		'<table width="255"><tr><td align=\"left\" width="80">0<\/td><td align=\"left\" width="80">500<\/td><td align=\"left\">1000<\/td><\/tr><\/table><br \/>';
		legende+='<table><tr><td>'+trad['pop_min']+' : </td><td><input type=\"text\" onChange=\"changePopulation()\" name=\"pop_min\" size=\"2\" value='+pop_min+'  \/></td></tr>';
		legende+='<tr><td>'+trad['pop_max']+' : </td><td><input type=\"text\" onChange=\"changePopulation()\" name=\"pop_max\" size=\"2\" value='+pop_max+'  \/></td></tr></table>';
		document.getElementById('basLegende').innerHTML=legende;
		rechargerCarte();
	}
	else if(typ=='alliance')
	{
		document.getElementById('typePeuple').style.color='';
		document.getElementById('typePeuple').style.backgroundImage='url('+ttb_img+'/carte/onglet.gif)';
		document.getElementById('typeAlliance').style.color='#FF0000';
		document.getElementById('typeAlliance').style.backgroundImage='url('+ttb_img+'/carte/onglet_hl.gif)';
		document.getElementById('typePopulation').style.color='';
		document.getElementById('typePopulation').style.backgroundImage='url('+ttb_img+'/carte/onglet.gif)';
		document.getElementById('typePersos').style.color='';
		document.getElementById('typePersos').style.backgroundImage='url('+ttb_img+'/carte/onglet.gif)';
		
		if(!monAlliance)
		{
			legende+='<table><tr><td width=\"20\" style=\"background-color:#0080FF; \"></td>'+
			'<td id="monAlliance" >'+trad['votrealliance']+' : <select onchange="changeAlliance()" name=\"alliance\" >'+menu_select+'</select>'+
'</td></tr></table>'+
			'<table><tr><td id=\"listesAlliances\"></td></tr>'+
			'<tr><td id=\"newAlliance\"></td></tr></table>';
			document.getElementById('basLegende').innerHTML=legende;
		}
		else
		{
			legende+='<table><tr><td width=\"20\" style=\"background-color:#0080FF; \"></td>'+
			'<td id="monAlliance" ></td></tr></table>'+
			'<table><tr><td id=\"listesAlliances\"></td></tr>'+
			'<tr><td id=\"newAlliance\"></td></tr></table>';
			document.getElementById('basLegende').innerHTML=legende;
			changeAlliance();
		}
	}
	else if(typ=='persos')
	{
		document.getElementById('typePeuple').style.color='';
		document.getElementById('typePeuple').style.backgroundImage='url('+ttb_img+'/carte/onglet.gif)';
		document.getElementById('typeAlliance').style.color='';
		document.getElementById('typeAlliance').style.backgroundImage='url('+ttb_img+'/carte/onglet.gif)';
		document.getElementById('typePopulation').style.color='';
		document.getElementById('typePopulation').style.backgroundImage='url('+ttb_img+'/carte/onglet.gif)';
		document.getElementById('typePersos').style.color='#FF0000';
		document.getElementById('typePersos').style.backgroundImage='url('+ttb_img+'/carte/onglet_hl.gif)';

		legende+='<table><tr><td id=\"listesPersos\"></td></tr>'+
		'<tr><td id=\"newPerso\"></td></tr></table>';
		document.getElementById('basLegende').innerHTML=legende;
		changePerso();
	}

}

function changePopulation()
{
	pop_min=document.getElementsByName('pop_min')[0].value;
	pop_max=document.getElementsByName('pop_max')[0].value;
	rechargerCarte();
}

function rechargerListesAlliances()
{
	var listeEnnemi='';
	var listeAllies='';
	for(var i=0;i<tabAlliances.length;i++)
	{
		if(tabAlliances[i].getRelation()=='guerre')
		{
			listeEnnemi+='<tr><td style=\" background-color:#'+tabAlliances[i].getCouleur()+'; width:20px \" >&nbsp;</td><td>'+tabAlliances[i].getNom()+'</td><td><img src=\"'+ttb_img+'/suppr.png\" onclick=\"supprimerAlliance('+i+')\" alt=\"\" /></td></tr>'
		}
		else
		{
			listeAllies+='<tr><td style=\" background-color:#'+tabAlliances[i].getCouleur()+'; width:20px \" >&nbsp;</td><td>'+tabAlliances[i].getNom()+'</td><td><img src=\"'+ttb_img+'/suppr.png\" onclick=\"supprimerAlliance('+i+')\" alt=\"\" /></td></tr>'

		}
	}
	if(listeEnnemi!='')
		listeEnnemi='Ennemis : <br /><table>'+listeEnnemi+'</table>';
	if(listeAllies!='')
		listeAllies='Allies : <br /><table>'+listeAllies+'</table>';
	document.getElementById('listesAlliances').innerHTML=listeEnnemi+listeAllies;
}

function ajoutAlliance()
{
	var id=document.getElementsByName('ally')[0].value;
	var nom=document.getElementsByName('ally')[0].options[document.getElementsByName('ally')[0].selectedIndex].text;
	var relation='guerre';
	var couleur=document.getElementsByName('ally_coul')[0].value;
	var ally=new alliance(id,nom,couleur,relation);
	tabAlliances.push(ally);
	changeAlliance();
}

function supprimerAlliance(cle)
{
	var tabAlly = new Array;
	for(var i=0;i<tabAlliances.length;i++)
	{
		if(i!=cle)
			tabAlly.push(tabAlliances[i])
	}
	tabAlliances=tabAlly;
	changeAlliance();
}

function supprimerMonAlliance()
{
	monAlliance=0;
	changeType('alliance');
}

function changeAlliance()
{
	if(!monAlliance)
		monAlliance=new alliance(document.getElementsByName('alliance')[0].value,document.getElementsByName('alliance')[0].options[document.getElementsByName('alliance')[0].selectedIndex].text,'#0080FF','monAlliance');
	document.getElementById('monAlliance').innerHTML='Votre alliance : '+monAlliance.getNom()+'&nbsp; <img src=\"'+ttb_img+'/modif.png\" style=\"cursor:pointer\" onclick=\"supprimerMonAlliance()\" alt=\"\" />';

	rechargerListesAlliances();

	document.getElementById('newAlliance').innerHTML='<table><tr><td colspan=\'2\'><select name=\"ally\" >'+menu_select+'</select></td></tr>'+
		'<tr><td><select name=\"ally_coul\" onChange="afficheCouleur(this.value)">'+
		'<option value=\"FF0000\">'+trad['rouge']+'</option>'+
		'<option value=\"000000\">'+trad['noir']+'</option>'+
		'<option value=\"FFFF00\">'+trad['jaune']+'</option>'+
		'<option value=\"00FF00\">'+trad['vert']+'</option>'+
		'<option value=\"FF00FF\">'+trad['violet']+'</option>'+
		'<option value=\"FF8000\">'+trad['orange']+'</option>'+
		'<option value=\"FFFFFF\">'+trad['blanc']+'</option>'+
		'<option value=\"80FF00\">'+trad['vert_clair']+'</option>'+
		'<option value=\"80FFFF\">'+trad['bleu_clair']+'</option>'+
		'<option value=\"408080\">'+trad['bleu_vert']+'</option>'+
		'<option value=\"808000\">'+trad['olive']+'</option>'+
		'<option value=\"FF8080\">'+trad['saumon']+'</option>'+
		'<option value=\"perso\">'+trad['choisir']+'</option>'+
		'</select></td><td id="couleur" style="width:20px; background-color:#FF0000;"></td></tr></table>'+
		'<br /><input type=\"button\" value=\"'+trad['ajouter']+'\" onclick=\"ajoutAlliance()\" />';
	rechargerCarte();
}

function rechargerListesPersos()
{
	var liste='';
	for(var i=0;i<tabPersos.length;i++)
	{
		liste+='<tr><td style=\" background-color:#'+tabPersos[i].getCouleur()+'; width:20px \" >&nbsp;</td><td>'+tabPersos[i].getNom()+'</td><td><img src=\"'+ttb_img+'/suppr.png\" onclick=\"supprimerPerso('+i+')\" alt=\"\" /></td></tr>'
	}
	if(liste!='')
		liste='<table>'+liste+'</table>';
	document.getElementById('listesPersos').innerHTML=liste;
}

function ajoutPerso()
{
	var nom=document.getElementsByName('perso')[0].value;
	var couleur=document.getElementsByName('ally_coul')[0].value;
	var p=new perso(nom,nom,couleur);
	tabPersos.push(p);
	changePerso();
}

function supprimerPerso(cle)
{
	var tabPer = new Array;
	for(var i=0;i<tabPersos.length;i++)
	{
		if(i!=cle)
			tabPer.push(tabPersos[i])
	}
	tabPersos=tabPer;
	changePerso();
}

function changePerso()
{
	rechargerListesPersos();

	document.getElementById('newPerso').innerHTML='<table><tr><td colspan=\'2\'><input type="text" id="perso" name="perso" /></td></tr>'+
		'<tr><td><select name=\"ally_coul\" onChange="afficheCouleur(this.value)">'+
		'<option value=\"FF0000\">'+trad['rouge']+'</option>'+
		'<option value=\"000000\">'+trad['noir']+'</option>'+
		'<option value=\"FFFF00\">'+trad['jaune']+'</option>'+
		'<option value=\"00FF00\">'+trad['vert']+'</option>'+
		'<option value=\"FF00FF\">'+trad['violet']+'</option>'+
		'<option value=\"FF8000\">'+trad['orange']+'</option>'+
		'<option value=\"FFFFFF\">'+trad['blanc']+'</option>'+
		'<option value=\"80FF00\">'+trad['vert_clair']+'</option>'+
		'<option value=\"80FFFF\">'+trad['bleu_clair']+'</option>'+
		'<option value=\"408080\">'+trad['bleu_vert']+'</option>'+
		'<option value=\"808000\">'+trad['olive']+'</option>'+
		'<option value=\"FF8080\">'+trad['saumon']+'</option>'+
		'<option value=\"perso\">'+trad['choisir']+'</option>'+
		'</select></td><td id="couleur" style="width:20px; background-color:#FF0000;"></td></tr></table>'+
		'<br /><input type=\"button\" value=\"'+trad['ajouter']+'\" onclick=\"ajoutPerso()\" />';
	rechargerCarte();
	initAutoComplete(document.getElementById('perso'),'J');
}

function afficheCouleur(couleur)
{
	if(couleur=='perso')
	{
		c='<table width="125" style="background-color:#808080;"><tr><td></td><td style="width:10px" onclick="fermerCouleur()">X</td></tr></table><table>'+
		'<tr><td>Rouge : </td><td><input type="text" name="rouge" value="0" size="3" onChange="actualiseCouleur()" /></td></tr>'+
		'<tr><td>Vert : </td><td><input type="text" name="vert" value="0" size="3" onChange="actualiseCouleur()" /></td></tr>'+
		'<tr><td>Bleu : </td><td><input type="text" name="bleu" value="0" size="3" onChange="actualiseCouleur()" /></td></tr>'+
		'</table>'+
		'<center><input type="button" value=" OK " onClick="validerCouleur()" /></center>';
		document.getElementById('infos2').innerHTML=c;
		document.getElementById('infos2').style.visibility='visible';
		document.getElementById('couleur').style.backgroundColor='#000000';
	}else
	{
		document.getElementById('couleur').style.backgroundColor='#'+couleur;
		for(var i=document.getElementsByName('ally_coul')[0].options.length-1;i>=0;i--)
		{
			if(document.getElementsByName('ally_coul')[0].options[i].innerHTML=='Choisir ...')
			{
				document.getElementsByName('ally_coul')[0].options[i].value='perso';
				break;
			}
		}
	}
}

function actualiseCouleur()
{
	var rouge=document.getElementsByName('rouge')[0];
	var vert=document.getElementsByName('vert')[0];
	var bleu=document.getElementsByName('bleu')[0];
	if(rouge.value>255)	rouge.value=255;
	if(vert.value>255)	vert.value=255;
	if(bleu.value>255)	bleu.value=255;
	if(rouge.value<0)	rouge.value=0;
	if(vert.value<0)	vert.value=0;
	if(bleu.value<0)	bleu.value=0;
	document.getElementById('couleur').style.backgroundColor='#'+toHexa(rouge.value)+toHexa(vert.value)+toHexa(bleu.value);
}

function validerCouleur()
{
	fermerCouleur();
	var rouge=document.getElementsByName('rouge')[0];
	var vert=document.getElementsByName('vert')[0];
	var bleu=document.getElementsByName('bleu')[0];
	var couleur=toHexa(rouge.value)+toHexa(vert.value)+toHexa(bleu.value);
	for(var i=document.getElementsByName('ally_coul')[0].options.length-1;i>=0;i--)
	{
		if(document.getElementsByName('ally_coul')[0].options[i].value=='perso')
		{
			document.getElementsByName('ally_coul')[0].options[i].value=couleur;
			break;
		}
	}
}

function fermerCouleur()
{
	document.getElementById('infos2').style.visibility='hidden';
}

function attaquer()
{
	var z=801*(-y_clic+400)+400+x_clic+1;
	document.location='http://s'+serveur+'.travian.fr/a2b.php?z='+z;
}

function commercer()
{
	var z=801*(-y_clic+400)+400+x_clic+1;
	document.location='http://s'+serveur+'.travian.fr/build.php?z='+z+'&gid=17';
}

function date_precedente()
{
	var dateCourante = new Date();
	if(!(date.getDate()==dateCourante.getDate() && date.getMonth()==dateCourante.getMonth()-1))
	{
		date.setDate(date.getDate()-1);
		//document.getElementsByName('date_text')[0].value=date.getDate()+'/'+parseInt(date.getMonth()+1)+'/'+date.getFullYear();
		document.getElementById('date_button_right').disabled=false;
		document.getElementsByName('date_select')[0].selectedIndex++;
		rechargerCarte();
	}
	else
		document.getElementById('date_button_left').disabled=true;
}

function date_suivante()
{
	var dateCourante = new Date();
	if(!(date.getDate()==dateCourante.getDate() && date.getMonth()==dateCourante.getMonth()))
	{
		date.setDate(date.getDate()+1);
		document.getElementsByName('date_select')[0].selectedIndex--;
		rechargerCarte();
		document.getElementById('date_button_left').disabled=false;
	}
	else
		document.getElementById('date_button_right').disabled=true;
}

function change_date()
{
	var tab=document.getElementsByName('date_select')[0].value.split("/");
	if(tab[0].substr(0,1)=="0")		tab[0] = tab[0].substr(1,tab[0].length);
	if(tab[1].substr(0,1)=="0")		tab[1] = tab[1].substr(1,tab[1].length);
	date.setYear(parseInt(tab[2]));
	date.setMonth(parseInt(tab[1])-1);
	date.setDate(parseInt(tab[0]));

	document.getElementById('date_button_left').disabled=false;
	document.getElementById('date_button_right').disabled=false;
	rechargerCarte();
}