
   
   // fonctions de lecture
   
   function relance() {
	document.getElementById("erreurchat").innerHTML = "Reconnexion en cours" ;
	recupchat() ; 
	}


	function scroller() {
		//if(window.document.getElementById("chat").scrollTop > 1000) { // on est en bas ou proche
			window.document.getElementById("chat").scrollTop = window.document.getElementById("chat").scrollHeight ;
		//}
	}
		 
	function recupchat() {
	 
		if (window.XMLHttpRequest) { 
			xhr = new XMLHttpRequest(); // FF et autre
		} 
		else if (window.ActiveXObject)  {
	      xhr = new ActiveXObject("Microsoft.XMLHTTP");   // IE
	   }
	   
	   	xhr.onreadystatechange  = function()
		{ 
				
		    if(xhr.readyState == 4)
		    {
		        if(xhr.status == 200) {
					if(xhr.responseText.length > 0) {
						document.getElementById("fenetrechat").innerHTML = xhr.responseText ;	
						scroller();
						
						
					}
					if(deco) {
						document.getElementById("erreurchat").innerHTML = "Connecté" ;
					}
					timenormal = window.setTimeout("recupchat() ;", 1000, "JavaScript");				
				}
				else {
		            document.getElementById("erreurchat").innerHTML = "Erreur " + xhr.status + ", vous avez été déconnecté ... en attente de reconnection ..." ;
					deco = true ;
					timeout = window.setTimeout("relance() ;", 5000, "JavaScript"); 	
				}
		    }
		}; 

	   xhr.open('GET', 'recupchat.php?ville='+urlville+'&ra='+Math.random(), true);    
	   xhr.send(null) ;


	}


	recupchat() ; 
	
	
	
	// fonctions de post
   
   function antiURLflood(message) { // recherche, lors d'une tentative de post d'une URL, que celle n'existe pas déja dans le chat

	accepte = true ;

	rechercheURLInterdite = new RegExp(".miniville.fr|.antiville.fr|.myminicity.fr|.myminicity.com|.myminicity.es|.ville-virtuelle.com|terredefeu.fr|eurobarre.com|power-city|.labrute.fr|.bitefight.fr","ig") ;

	if(rechercheURLInterdite.test(message)) {
		accepte = false ;
	}
	else {
		rechercheURLposte = new RegExp("(http://[a-z0-9._/&\?=-]+)","ig") ;
		listeURL = rechercheURLposte.exec(message);
		
		rechercheURLtext = new RegExp("","ig") ;
		
		if(listeURL != null) {
			for(i=0;i<listeURL.length;i++) {
				rechercheURLtext.compile(listeURL[i]) ;
				if(rechercheURLtext.test(document.getElementById("fenetrechat").innerHTML)) {
					accepte = false ;
					break ;
				}
			}
		}

	}

	return accepte ;

	}
	
   
   function postermessage() {
   
   if(!pdefine) {
		pseudo = prompt('Veuillez entrer votre pseudo','anonyme') ;
		
		if(pseudo == null || pseudo == ''|| pseudo == 'null') {
			pseudo = 'anonyme' ;
		}
		
		pdefine = true ;
   }
   
   ntxt = document.forms['chatform'].tchater.value.replace(/^\s+/g,'').replace(/\s+$/g,'') ;
 
	if(ntxt == "") { // pas de message
		document.getElementById("erreurchat").innerHTML = "Vous n'avez pas entré de message" ; 
	}
	else if(txt==ntxt) { // flood
		document.getElementById("erreurchat").innerHTML = "N'envoyez pas 2 messages identiques à la suite" ; 
	}
	else if(!antiURLflood(ntxt)) { // URL interdite ou flood d'url
		document.getElementById("erreurchat").innerHTML = "il est interdit de poster un lien de ce type sur ce chat ou de poster plus d'une fois un lien" ; 
	}
	else {
 
		if (window.XMLHttpRequest) { 
			xhp = new XMLHttpRequest(); // FF et autre
		} 
		else if (window.ActiveXObject)  {
	      xhp = new ActiveXObject("Microsoft.XMLHTTP");   // IE
	   }
	   
	   	xhp.onreadystatechange  = function()
		{ 
				
		    if(xhp.readyState == 4)
		    {
		        if(xhp.status == 200) {
					
					if(xhp.responseText == "0") {
						document.forms['chatform'].reset();
						document.getElementById("erreurchat").innerHTML = "" ;
					}
					else if(xhp.responseText == "1") {
						document.getElementById("erreurchat").innerHTML = "Vous n'êtes pas sur une ville" ;
					}
					else if(xhp.responseText == "2") {
						document.getElementById("erreurchat").innerHTML = "Vous n'avez pas entré de message" ;
					}
					else if(xhp.responseText == "3") {
						document.getElementById("erreurchat").innerHTML = "Impossible d'ouvrir le flux" ;
					}
					else if(xhp.responseText == "4") {
						document.getElementById("erreurchat").innerHTML = "vous devez attendre une seconde entre chaque message" ;
					}
					else if(xhp.responseText == "5") {
						document.getElementById("erreurchat").innerHTML = "il est interdit de poster un lien de ce type sur ce chat" ;
					}
					else if(xhp.responseText == "6") {
						document.getElementById("erreurchat").innerHTML = "Vous ne pouvez pas poster suite à un banissement temporaire" ;
					}
					else {
						document.getElementById("erreurchat").innerHTML = "Erreur inéxpliquée "+xhp.responseText ;
					}
				}
				else {
		            document.getElementById("erreurchat").innerHTML = "Erreur " + xhp.status + ", le message n'a pas pu être envoyé" ;
				}
		    }
		}; 

		if(! ref) {
			txt = ntxt;
		}
		else {
			ref = false ;
		}
		
		data = "tchater=" + txt + "&ville=" + urlville + "&pseudo=" + pseudo ;
		xhp.open('POST', 'postchat.php', true);    
		xhp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");            
		xhp.send(data) ;
	}

} 



// recharger une ville


function rechargeville() {
 
	if (window.XMLHttpRequest) { 
		xhr3 = new XMLHttpRequest(); // FF et autre
	} 
	else if (window.ActiveXObject)  {
	  xhr3 = new ActiveXObject("Microsoft.XMLHTTP");   // IE
   }
   
   if(ready) {
		xhr3.onreadystatechange  = function()
		{ 
				
			if(xhr3.readyState == 4)
			{
				if(xhr3.status == 200) {
					valeursactuel = new Array(population, industrie, transport, police, environnement, commerce, tourisme, nivchomage, nivtransport, nivcriminalite, nivpollution, meteo, antitriche) ;
					
					valeurscharge = xhr3.responseText.split('%') ;
			
					
					change = false ;
					for(i=0;i<valeursactuel.length && !change;i++) {
						if(valeursactuel[i] != valeurscharge[i]) {
							change = true ;
						}
					}

					if(change) {
					
					
						population = valeurscharge[0] ;
						industrie = valeurscharge[1] ;
						transport = valeurscharge[2] ;
						police = valeurscharge[3] ;
						environnement = valeurscharge[4] ;
						commerce = valeurscharge[5] ;
						tourisme = valeurscharge[6] ;
						
						nivchomage = valeurscharge[7] ;
						nivtransport = valeurscharge[8] ;
						nivcriminalite = valeurscharge[9] ;
						nivpollution = valeurscharge[10] ;
						
						meteo = valeurscharge[11] ;
						
						antitriche = valeurscharge[12] ;
						
						document.getElementById("erreurchat").innerHTML = "Regénération de la ville ..." ;
						
						document.getElementsByTagName('object')[0].setNodeEventIn('my3dcity','creervaleurs','['+population+','+industrie+','+transport+','+police+','+environnement+','+commerce+','+tourisme+','+nivchomage+','+nivtransport+','+nivcriminalite+','+nivpollution+','+meteo+','+antitriche+']');
						document.getElementsByTagName('object')[0].setNodeEventIn('my3dcity','creerlaville',nomville);
					}
					else {
						document.getElementById("erreurchat").innerHTML = "Aucun changement dans la ville" ;
					}
					
				}
				else {
					document.getElementById("erreurchat").innerHTML = "Erreur " + xhr.status + " : Impossible de charger les nouveau paramètres de "+nomville+"." ;
					deco = true ;
					timeout = window.setTimeout("relance() ;", 5000, "JavaScript"); 	
				}
			}
		}; 

	   xhr3.open('GET', 'villeinfo.php?ville='+urlville+'&ra='+Math.random(), true);    
	   xhr3.send(null) ;
   
   }
   else {
	document.getElementById("erreurchat").innerHTML = "Erreur : La 3D n'est pas chargée." ;
   }


}


	// avatars et liste de connectes
	
	var afficheco = false ;
	var liens = '' ;
	
	function voirconnecte() {
		if(!afficheco) {
			afficheco = true ;
			liens = document.getElementById("lienouconnecte").innerHTML ;
			document.getElementById("lienouconnecte").innerHTML = "<p>Chargement des connectés ...</p>"
		}
		else {
			afficheco = false ;
			document.getElementById("lienouconnecte").innerHTML = liens ;
		}
	}
	
	function rejoindre(x,y,z) {
		document.getElementsByTagName('object')[0].setNodeEventIn('my3dcity','allerA','['+(x+4)+','+y+','+(z+4)+']');
	}
   
   function relanceav() {
	recupavatars() ; 
	}
		 
	function recupavatars() {
	 
		if (window.XMLHttpRequest) { 
			xhrav = new XMLHttpRequest(); // FF et autre
		} 
		else if (window.ActiveXObject)  {
	      xhrav = new ActiveXObject("Microsoft.XMLHTTP");   // IE
	   }
	   
	   	xhrav.onreadystatechange  = function()
		{ 
				
		    if(xhrav.readyState == 4)
		    {
		        if(xhrav.status == 200) {
					if(xhrav.responseText.length > 0) {
						lines = xhrav.responseText.split("\n") ;
						if(lines[0] == 'good') {
						
							coords = '[' ;
							names = '[' ;
							
							if(afficheco) connecteliste = "<h3>Connectés</h3><p>" ;
							
							for(i=1;i<lines.length-1;i++) {
								element = lines[i].split('%') ;
								if(element[0] != pseudo || element[1] != idal) {
									names += '\"'+element[0]+'\"' ;
									coords += element[3]+','+element[4]+','+element[5] ; // coordonée x, y, z de l'autre
									coords += ','+element[6] ; // rotation de l'autre
									coords += ','+element[7] ; // modèle de l'autre (si il à une voiture)
									coords += ','+element[2] ; // id avatar de l'autre (pour interpolation)
									
									if(i<lines.length-2) {
										names += ',' ;
										coords += ',' ;
									}
									
									if(afficheco) connecteliste += '<a href="javascript:rejoindre('+element[3]+','+element[4]+','+element[5]+')">'+element[0]+'</a><br />' ;
								}
							}
							
							coords += ']' ;
							names += ']' ;
							
							if(ready) {
								document.getElementsByTagName('object')[0].setNodeEventIn('my3dcity','avatarscoord',coords);
								document.getElementsByTagName('object')[0].setNodeEventIn('my3dcity','avatarsname',names);
							}
							
							if(afficheco) {
								connecteliste += '<strong>'+pseudo+'</strong></p><a href="javascript:voirconnecte();">Voir liens</a>' ;
								document.getElementById("lienouconnecte").innerHTML = connecteliste ;
							}
							else {
								document.getElementById("nbco").innerHTML = '('+(lines.length-2)+')' ;
							}
							
							//alert(names) ;
							//alert(coords) ;
						}

					}
					timenormalav = window.setTimeout("recupavatars() ;", 1000, "JavaScript");				
				}
				else {
					deco = true ;
					timeoutav = window.setTimeout("relanceav() ;", 5000, "JavaScript"); 	
				}
		    }
		}; 

	   xhrav.open('GET', 'avatar.php?ville='+urlville+'&pseudo='+pseudo+'&idal='+idal+'&x='+x+'&y='+y+'&z='+z+'&r='+r+'&type='+avmodel+'&ra='+Math.random(), true);    
	   xhrav.send(null) ;


	}


	recupavatars() ; 
	

	//  batiments
	
	function placebatiment(indice, pos) {
 
	if (window.XMLHttpRequest) { 
		xhrbat = new XMLHttpRequest(); // FF et autre
	} 
	else if (window.ActiveXObject)  {
	  xhrbat = new ActiveXObject("Microsoft.XMLHTTP");   // IE
   }
   
	xhrbat.onreadystatechange  = function()
	{ 
			
		if(xhrbat.readyState == 4)
		{
			if(xhrbat.status == 200) {
				if(xhrbat.responseText.length > 0) {
					alert(xhrbat.responseText) ;	
					document.getElementsByTagName('object')[0].setNodeEventIn('my3dcity','placebatiment',batir);
				}
				else {
					alert('Batiment construit !') ;
				}
			}
			else {
				document.getElementsByTagName('object')[0].setNodeEventIn('my3dcity','placebatiment',batir);
			}
		}
	}; 

   xhrbat.open('GET', 'placebatiment.php?indice='+indice+'&pos='+pos+'&ra='+Math.random(), true);    
   xhrbat.send(null) ;


	}
	
	
	
	function kick(boulet, raison) {
		if(pseudo == boulet) {
			alert("Vous avez été expulsé du salon de discussion pour la raison suivante : "+raison) ;
			document.location.href="reglement.php"  ;
		}
	}