var map = null;
var geocoder = null;

function $_(id){
	try{
		return document.getElementById(id);
	}catch(err){
		return null;
	}
}

function objConnexion(){
	//on prepare un attribut pour les arguments passé par 
	//la fonction appelante
	this.argument = null;
	
	//on definie la fonction de traitement de la réponse
	this.callBack = function() {
//alert(this.obj.readyState);
		if (this.obj.readyState==4){
			if (this.obj.status == 200){
				if (this.argument) {
					switch ( this.argument[1]) {
						//rollover
						case "cp" :						
					  	$_("result").innerHTML = '';
//					  	$_("result").style.height = '0px';			
							$_("result2").innerHTML = '';
							$_('rr').style.display = 'none';
					  	
							var result = this.obj.responseText;
//alert(this.obj.responseText);							
							$_("result").style.display = 'inline';
											
							data =  result.split(":");
							if(data[1]>0){
//								$_("result").style.height = "40px"
								$_("result").innerHTML = "<br><i><b>Trop de r&eacute;sultats ("+data[1]+")</b></i><br>";
							}else {
								data =  result.split("||");

								if (data.length == 0) $_("result").innerHTML = "<br><i><b>Aucun r&eacute;sultat </b></i><br>";
								else if (data.length == 1){
									detail =  data[0].split("|");
									$_("result").innerHTML = "<br><i><b>Un r&eacute;sultat : "+detail[0]+"</b></i><br>";
									$_("result").style.height = 32 +'px';
									$_("result2").innerHTML +=  '<table class=exemple><tr><td><img id=carte class=carte src=cpajax/france.gif> </td><td><b>'+detail[0].replace("'","’")+'</b><br>Code postal : '+detail[1]+'<br>Altitude : '+detail[6]+' m<br>Habitants : '+detail[7]+'<br>Latitude : '+detail[8]+'<br>Longitude : '+detail[9]+'<br>D&eacute;partement : '+detail[4].replace("'","’")+'<br>Num&eacute;ro INSEE : '+detail[5]+'</td></tr></table><br>';
									$_("result2").style.visibility = 'visible';
									position(detail[2],detail[3],detail[1], detail[0]);
									
								}	else {
								
					
									$_("result").innerHTML = "<br><i><b>" + (data.length)  + " r&eacute;sultats : cliquez sur le nom d'une des communes pour visualiser le d&eacute;tail </b></i><br>";
//									$_("result").style.height = (((data.length)*16)>200)?200:(data.length)*16+17 +'px';
/*									if (((data.length)*16)>200)
										$_("result").style.height = "185px";
									else
										$_("result").style.height = ((data.length)*16+17) +'px';*/

									detail =  data[0].split("|");
									$_("result2").innerHTML +=  '<table class=exemple><tr><td><img id=carte class=carte src=cpajax/france.gif></td><td style="width:20px;"> </td><td><b>'+detail[0].replace("'","’")+'</b><br>Code postal : '+detail[1]+'<br>Altitude : '+detail[6]+' m<br>Habitants : '+detail[7]+'<br>Latitude : '+detail[8]+'<br>Longitude : '+detail[9]+'<br>D&eacute;partement : '+detail[4].replace("'","’")+'<br>Num&eacute;ro INSEE : '+detail[5]+'</td></tr></table>';
									$_("result2").style.visibility = 'visible';
									position(detail[2],detail[3],detail[1], detail[0]);
					
									for (var i=0; i < data.length; i++) {
										if (data[i]!=''){
//alert("i="+i+" data="+data[i]);
											detail =  data[i].split("|");
											/*
											VILLE
											CP
											LAMBIIX
											LAMBIIY
											DEP
											INSEE
											*/
											
											$_("result").innerHTML +=  '<a href="javascript:;" onclick="document.getElementById(\'result2\').style.visibility=\'visible\';document.getElementById(\'result2\').innerHTML = \'<table class=exemple><tr><td><img id=carte class=carte src=cpajax/france.gif> </td><td style=width:20px;> </td><td><b>'+detail[0].replace("'","’")+'</b><br>Code postal : '+detail[1]+'<br>Altitude : '+detail[6]+' m<br>Habitants : '+detail[7]+'<br>Latitude : '+detail[8]+'<br>Longitude : '+detail[9]+'<br>D&eacute;partement : '+detail[4].replace("'","’")+'<br>Num&eacute;ro INSEE : '+detail[5]+'</td></tr></table>\';re_position(\''+detail[2]+'\',\''+detail[3]+'\',\''+detail[1]+'\',\''+detail[0]+'\',\''+detail[5]+'\');" >' + (detail[0]).replace(/\\\'/gi,"'") + ' ('+detail[1]+')</a>';
											$_("result").innerHTML +=  '<br>';
										}
									}
								}
								$_("wait").style.display = 'none';
							}
							
							
							
						break;
						
						
						default : 
					}
					//try{eval(httpRequest.responseText);}catch(er){Debug(httpRequest.responseText);}
					//console.log(httpRequest.argument[2])
				}				
			}else{
				//gestion de l'echec
				alert('Probleme de connexion : verifiez votre connexion au web\n erreur : '+this.obj.status+'\n'+this.obj.responseText);
			 }	
			//vidage du statut
			//statutOff();			
		}
	}	
	
	try{
		this.obj = new ActiveXObject("Msxml2.XMLHTTP")
	}
	catch(e){
		try{
			this.obj = new ActiveXObject("Microsoft.XMLHTTP")
		}
		catch(oc){
			this.obj = null
		}		
	}
	if(!this.obj&&typeof XMLHttpRequest!="undefined")
		this.obj = new XMLHttpRequest()
		
	return this
}
			
function cp(search) {
	$_("wait").style.display = 'inline';
	url = 'cpajax/communes.php?cpv='+escape(search);
	
	//connexion asynchrone au serveur pour recuperer le contenu du rollover à afficher
	connexion_asc(url,'cp');
}


function showAddress(address) {
  if (geocoder) {
    geocoder.getLatLng(
      address,
      function(point) {
        if (!point) {
          alert("Google Maps dit: "+address + " non trouvee");
        } else {
          map.setCenter(point, 11);
          var marker = new GMarker(point);
          map.addOverlay(marker);
          marker.openInfoWindowHtml(address);
        }
      }
    )
  }   
}


function position(x,y,cp,ville){
	//Carte perso
	x = Math.floor(x/10000) - 4;
//	x = Math.floor(x/10000);
	y = 270 - Math.floor(y/10000);
//	y = Math.floor(y/10000);
	document.getElementById('rr').style.display = 'inline';
	document.getElementById('rr').style.top = (findPosY(document.getElementById('carte'))+y) + 'px';
	document.getElementById('rr').style.left = (findPosX(document.getElementById('carte'))+x) + 'px';
	
	//Google map		
	if (!map){
		map = new GMap2(document.getElementById("map"));
		map.addControl(new GSmallMapControl());
		map.addControl(new GMapTypeControl());
		geocoder = new GClientGeocoder();
		showAddress(cp+ ' '+ville+', France');		
	}else{		
		map.clearOverlays();
		showAddress(cp+ ' '+ville+', France');		
	}	
}

function re_position(x,y,cp,ville,insee){
	//Google map		
	if (insee != null && navigator.appName == "Microsoft Internet Explorer") {
		if (map) {
			map.clearOverlays();
			delete geocoder;
			delete map;
		}
		url = 'cpajax/communes.php?cpv=insee_'+insee;			
		connexion_asc(url,'cp');
	}
	else {
		position(x,y,cp,ville);
	}
}

function findPosX(obj)
{
	var curleft = 0;
	if (obj.offsetParent)
	{
		while (obj.offsetParent)
		{
			if (obj.id != "fenetre_centre")
				curleft += obj.offsetLeft
			obj = obj.offsetParent;
		}
	}
	else if (obj.x)
		curleft += obj.x;
	return curleft;
}

function findPosY(obj)
{
	var curtop = 0;
	if (obj.offsetParent)
	{
		while (obj.offsetParent)
		{
			if (obj.id != "fenetre_centre")
				curtop += obj.offsetTop
			obj = obj.offsetParent;
		}
	}
	else if (obj.y)
		curtop += obj.y;
	return curtop;
}


function connexion_asc(url,contexte) {
	var methode = "GET";
	var asynchrone = true;
	var httpRequest = new objConnexion();
	
	httpRequest.argument = arguments
	
	if (httpRequest) {
    try{
	    var _this = httpRequest;
			//Appel de la fonction de callback quand l'objet XMLHTTPRequest change de status
			httpRequest.obj.onreadystatechange = function() {
				_this.callBack();
			}
	  	httpRequest.obj.open(methode, url, asynchrone);
//alert("httpRequest.obj.send");	
    	httpRequest.obj.send(null);
			
    }catch(oe){
    }
	}
}

