// ----------------------------------------------------------------------------
//
//  Fichier:   crifor.js
//  Date de création:  10/04/08
//  Dernière modification:  14/04/08
//	Auteur : Vincent Vuilleumier, Prosylvita, Rte de Mollie-Margot 1, 1073 Savigny, +(41)21 781 27 59
//  Buts: Affichage des membres CRIFOR sur une carte Google
//	Copyright : Toute reproduction de ce fichier est strictement interdit
//
// ----------------------------------------------------------------------------


// -----------------------------------------------------------------------------
// Variables
// -----------------------------------------------------------------------------
var latitudeCentre = 46.890701; 	//latitude du point central de la carte
var longitudeCentre = 7.314148; 	//longitude du point central de la carte
var zoomCentre= 8;								//zoom de départ pout la carte
var map;													//variable globale pour la carte Google
var fichierXML="./rechxml";	//page renvoyant les données xml des membres

// -----------------------------------------------------------------------------
// Fonctions
// -----------------------------------------------------------------------------

function init(){		//initialisation lors du chargement de la page
	initmap();
	rechercheMembres();
}

function initmap(){		//initialisation de la carte Google
	map = new GMap2(document.getElementById("map"));
	map.addControl(new GLargeMapControl());
	map.addControl(new GMapTypeControl());
	map.setCenter(new GLatLng(latitudeCentre, longitudeCentre), zoomCentre);
}


function rechercheMembres(){		//recherche les membres dans la base de données
	var r=GXmlHttp.create();
	r.open("POST", fichierXML, true);
	r.onreadystatechange=function(){
		if(r.readyState==4){
			var re=r.responseXML;
			var membres = re.documentElement.getElementsByTagName("membre");
			for (var i=0;i<membres.length;i++){								
				var infoadresse="<div class=\"info\"><b>"+membres[i].getAttribute("nom")+" "+membres[i].getAttribute("prenom")+"</b>";
				if(membres[i].getAttribute("bureau")!="-"){
					infoadresse+="<br>"+membres[i].getAttribute("bureau");
				}
				infoadresse+="<br>"+membres[i].getAttribute("adresse")+ "<br>"+membres[i].getAttribute("npa")+" " +membres[i].getAttribute("ville")+"</div>";				
				var infocontact="<div class=\"info\"><table><tr><td class=\"infotitre\">t?l :</td><td>";
				infocontact+=numeroFormat(membres[i].getAttribute("tel"))+"</td></tr>";
				if(membres[i].getAttribute("fax")!="-"){
					infocontact+="<tr><td class=\"infotitre\">Fax:</td><td>"+numeroFormat(membres[i].getAttribute("fax"))+"</td></tr>";
				}
				infocontact+="<tr><td class=\"infotitre\">Email:</td><td><a href=\"/membres/contact?id=" +	membres[i].getAttribute("id") + "\"/>Cliquer ici</a></td>";
				if (membres[i].getAttribute("internet")!="-"){
					infocontact+="<tr><td class=\"infotitre\">Internet :</td><td><a target=\"_blank\" href=\""+membres[i].getAttribute("internet")+"\">"+"site internet</a></td></tr></table>";
				}
				infocontact+="</div>";
				var marker = creeMembre(parseFloat(membres[i].getAttribute("longitude")), parseFloat(membres[i].getAttribute("latitude")), infoadresse, infocontact);
				map.addOverlay(marker);
			}
		}
	}
	r.send(null);
}

function numeroFormat(numero){ //formate le numéro pour plus de lisibilité
	var re=/(\d{2})(\d{3})(\d{2})(\d{2})/;
	var num=re.exec(numero);
	if (num){
		var numform="0"+num[1] +" " +num[2]+ " " +num[3]+ " " +num[4];
		return numform;
	}else{
	return numero;
	}
}
		
function creeMembre(lng, lat, adresse, contact){
	var marker = new GMarker(new GLatLng(lat, lng));
	var focusPoint=function(){
		marker.openInfoWindowTabsHtml(
			[
			 new GInfoWindowTab("Adresse", adresse),
			 new GInfoWindowTab("Contact", contact)
			 ]);
		return false;		
	}
	GEvent.addListener(marker, 'click', focusPoint);
	return marker;
}

//Initation de la carte lors du lancement
window.onload = init;
window.onunload = GUnload;