//FONCTION RENVOYANT UN OBJET AJAX
function getXhr(){
    var xhr = null;
    if (window.XMLHttpRequest || window.ActiveXObject){
		if (window.ActiveXObject){
		    try{
				xhr = new ActiveXObject("Msxml2.XMLHTTP");
	         }
	         catch(e){
	    		xhr = new ActiveXObject("Microsoft.XMLHTTP");
	         }
	    }
	    else {
	       xhr = new XMLHttpRequest(); 
	    }
    }
    else {
    	alert("Votre navigateur ne supporte pas l'objet XMLHTTPRequest...");
    	return null;
    }
    return xhr;
}
//FONCTION EFFECTUANT UNE REQUETE AJAX
// la variable argument est de la forme "argument1=data1&argument2=data2 etc..."
function requestAjax(filename,argument,method,callback) {
		var xhr = getXhr();
		if ( (!method=='GET')||(!method=='POST') ) 	alert('methode envoi de Ajax mal definie');
		if ( (method=='GET')&&(argument!=null) ) 		{
			filename=filename+'?'+argument;
			argument=null;			
			}		
		xhr.open(method, filename, true);
		xhr.onreadystatechange = function() {
										if (xhr.readyState == 4 && (xhr.status == 200 || xhr.status == 0)) {
														callback(xhr);
										}
									};
		if (method=="POST"){
			xhr.setRequestHeader("Content-type","application/x-www-form-urlencoded; charset=iso-8859-1");
		}		
		xhr.send(argument);
}
//la variable map est définie en globale pour être utilisé dans d'autres fonctions
var map=null;
//FONCTION DE CHARGEMENT DE LA CARTE et des ses dimensions
function chargerCarte(malargeur,malongueur) {
	var divmap=document.getElementById('map');
	
	//divmap.innerHTML='ID=MAP C ICI';
	
	divmap.style.width=malargeur;	
	divmap.style.height=malongueur;	
	divmap.style.display='block';
	
	//alert('chargement carte');
	
	if (GBrowserIsCompatible()) {
		//chargement de la carte
		map = new GMap2(divmap);
		map.addControl(new GSmallMapControl());
		map.addControl(new GMapTypeControl());
		map.setCenter(new GLatLng(49.05, -0.50), 8);
	}/**/
}
function chargerCarte2(malargeur,malongueur) {
	var divmap=document.getElementById('map2');
	
	//alert(divmap);
	//divmap.innerHTML='ID=MAP2  C ICI';
	
	divmap.style.width=malargeur;
	divmap.style.height=malongueur;	
	divmap.style.display='block';
	
	//alert('chargement carte');
	/**/
	if (GBrowserIsCompatible()) {
		//chargement de la carte
		map = new GMap2(divmap);
		map.addControl(new GSmallMapControl());
		map.addControl(new GMapTypeControl());
		map.setCenter(new GLatLng(49.05, -0.50), 8);
	}
}
//cette variable est un tableau des éléménts "établissement" du document XML	
//on utilisera les index du tableau pour récupérer les informations concernant ce noeud XML (coordonnées, adresse, noms, etc..)
var etabs=null;	
//identifiant de l'etablissement dont l'infobulle est affichée
var idEtabselect=null;
//FONCTION d'AFFICHAGE DES MARKERS SUR LA CARTE SUITE A UNE REQUETE AJAX
function  chargerDonnees(data){
	var xml=data.responseXML;
																			//alert(data.responseText);
	etabs=xml.getElementsByTagName('etablissement');				
	for (var i=0; i<LengthEtab();i++){			
		AjoutMarker(i);		
	}	
}
//fonction renvoyant le nombre d'élément "etablissement" dans le flux Xml
function LengthEtab(){
	return etabs.length;				
}
//renvoit les nom et coordonnÃ©es d'un  Ã©tablissement à partir de leur numéro d'index
function CoorEtabs(index){	
	var retour='<p>';
	
	try{		retour+= etabs[index].getElementsByTagName('etablissement_nom')[0].firstChild.nodeValue+'<br/>';	
	}		catch(e){
	}	
	try{		retour+= etabs[index].getElementsByTagName('adresse')[0].firstChild.nodeValue+'<br/>';
	}		catch(e){
	}	
	try{		retour+= etabs[index].getElementsByTagName('CP')[0].firstChild.nodeValue+' ' ;
	}		catch(e){
	}	
	try{		retour+= etabs[index].getElementsByTagName('commune')[0].firstChild.nodeValue;
	}	catch(e){
	}
	retour+='</p>';	
	return retour;
}
//renvoit la liste des formations d'un Ã©tablissement ou bien null si pas de formations
function FormationsEtabs(index){	
	var retour=null;
	var nbreformations=etabs[index].getElementsByTagName('formation').length;
	if ( nbreformations>0){
		retour='<ul class="geoloc">';								
		for (var y=0;y<nbreformations;y++){
			retour+='<li>'+etabs[index].getElementsByTagName('formation')[y].firstChild.nodeValue +'</li>';				
		}
		retour+='</ul>';	
	}				
	return retour;				
}
//ajout de marker grÃ¢ce Ã  un noeud "Ã©tablissement" du flux Xml
function AjoutMarker(index){	

	//"géoloc" est le noeud xml "geoloc" du noeud "etablissement" dont l'index est passé en argument
	var geoloc=etabs[index].getElementsByTagName('geoloc')[0];
	
		
	//on récupère les coordonnées de l'établissement
	var point = new GLatLng(parseFloat(geoloc.getAttribute("lat")), parseFloat(geoloc.getAttribute("lng")), 9);
	//instanciation du marker
	var marker=new GMarker(point);	
		//le marker est attaché à la carte
	map.addOverlay(marker);		

	//variable pour la creation des onglets
	var onglets = new Array;
	onglets[0] = new GInfoWindowTab ('Lieu', CoorEtabs(index) ); 
	onglets[1] = new GInfoWindowTab ("Formation(s)", FormationsEtabs(index)); 
	var options = {   maxWidth : 250, selectedTab : 0 };	

	//si les champs "formations" sont remplis on ajoute une info-bulle par onglet qui se declenche au click
	if (FormationsEtabs(index)){					
		marker.bindInfoWindowTabsHtml(onglets,options);				
	}
	//sinon on affiche une info bulle simple avec adresse uniquement
	else{
		marker.bindInfoWindowHtml( CoorEtabs(index) );
	}	
	
	//si l'etablissement selectionné est celui-ci on ajoute une deuxieme info bulle qui s'ouvre dés le chargement,
	//elle possède les mêmes infos que la précédente
	if (etabs[index].getAttribute("etablissement_id")==idEtabselect){
		//si les champs "formations" sont remplis on ajoute une info-bulle par onglet qui se declenche au click
		if (FormationsEtabs(index)){
			marker.openInfoWindowTabsHtml(onglets,options);	
		}
		//sinon on affiche une info bulle simple avec adresse uniquement
		else{
			marker.openInfoWindowHtml( CoorEtabs(index) );
		}	
	}
	
	//gestionnaire d'evenement
	//google.maps.Event.addListener(marker, "mouseover", function() {marker.openInfoWindowHtml('test')});
	//google.maps.Event.addListener(marker, "mouseout", function() {marker.bindInfoWindowHtml('test')});
}


function AfficherFromNSI(typeformation, coderome, selectedIDEtab){

	
	//la valeur +/- est utilisé par le gestionnaire d'evenement du bouton
	document.getElementById('btnmap').value='-';	
	document.getElementById('contmap').getElementsByTagName('span')[0].innerHTML='masquer la carte';
	
	//si cette variable n'est pas nulle, l'info-bulle correspondant à cet ID apparaitra automatiquement voir fonction AjoutMarker
	idEtabselect=selectedIDEtab;
	//affichage de la carte et de sa div
	document.getElementById('map').style.display='block';
	chargerCarte('100%', '400px');	
	
	//requete Ajax qui sera traitée par  la fonction chargerDonnees()
	//les argument passé dans le Get de la requete Ajax, different selon qu'il s'agisse de formation continue ou apprentissage
	var args='type=';
	if (typeformation==1) args+='AP';
	if (typeformation==2) args+='FC';
	args+='&code_rome='+coderome;
	requestAjax('../carto/RequeteAjax/RequeteGeoloc.php',args,'GET',chargerDonnees);/**/
	//window.location.href="#map1";
	document.location.href="#contmap";
}
function AfficherPotentielFromNSI(typeformation, coderome, selectedIDEtab){
	
	//la valeur +/- est utilisé par le gestionnaire d'evenement du bouton
	document.getElementById('btnmap2').value='-';	
	document.getElementById('contmap2').getElementsByTagName('span')[0].innerHTML='masquer la carte';
	
	//si cette variable n'est pas nulle, l'info-bulle correspondant à cet ID apparaitra automatiquement voir fonction AjoutMarker
	idEtabselect=selectedIDEtab;
	//affichage de la carte et de sa div
	document.getElementById('map2').style.display='block';
	chargerCarte2('100%', '400px');	
	
	//requete Ajax qui sera traitée par  la fonction chargerDonnees()
	//les argument passé dans le Get de la requete Ajax, different selon qu'il s'agisse de formation continue ou apprentissage
	var args='type=';
	if (typeformation==1) args+='AP';
	if (typeformation==2) args+='FC';
	args+='&code_rome='+coderome;
	args+='&potentiel=true';
	args+='&code_rome='+coderome;
	requestAjax('../carto/RequeteAjax/RequeteGeoloc.php',args,'GET',chargerDonnees);
	//window.location.href="#map2";
	document.location.href="#contmap2";
	/*
	document.getElementById('map').style.display='block';
	var args='type=';
	if (typeformation==1) args+='AP';
	if (typeformation==2) args+='FC';
	args+='&code_rome='+coderome;
	args+='&potentiel=true';
										//alert('potentiel'+args);
	chargerCarte2('100%', '400px');
	requestAjax('../carto/RequeteAjax/RequeteGeoloc.php',args,'GET',chargerDonnees);*/
}
function AfficherFormationInitialeFromIdFiche(idfiche, selectedIDEtab){
	
	
	//la valeur +/- est utilisé par le gestionnaire d'evenement du bouton
	document.getElementById('btnmap').value='-';	

	document.getElementById('contmap').getElementsByTagName('span')[0].innerHTML='masquer la carte';

	//si cette variable n'est pas nulle, l'info-bulle correspondant à cet ID apparaitra automatiquement voir fonction AjoutMarker
	idEtabselect=selectedIDEtab;
	//affichage de la carte et de sa div
	document.getElementById('map').style.display='block';
	chargerCarte('100%', '400px');	
	//requete Ajax dont le résultat sera traitée par la fonction chargerDonnees
	requestAjax('../carto/RequeteAjax/RequeteGeoloc.php','type=FI&id_fiche='+idfiche,'GET',chargerDonnees);
	document.location.href="#contmap";
	
}
function masquerCarte(){
	document.getElementById('btnmap').value='+';
	document.getElementById('contmap').getElementsByTagName('span')[0].innerHTML='voir sur  la carte';	
	document.getElementById('map').innerHTML='';
	document.getElementById('map').style.display='none';
}
function masquerCarte2(){
	document.getElementById('btnmap2').value='+';
	document.getElementById('contmap2').getElementsByTagName('span')[0].innerHTML='voir sur  la carte';	
	document.getElementById('map2').innerHTML='';
	document.getElementById('map2').style.display='none';
}

