// GOOGLE MAPS
jQuery(document).ready(function() {
$("#legende").hide();
$("#legende_lien").hover(function() {
	$("#legende").show("fast")
	}, function() {
	$("#legende").hide();
});

});


var map; 

function addMarker(latitude, longitude, description) {
var marker = new GMarker(new GLatLng(latitude, longitude));// ajout d'un marker
	GEvent.addListener(marker, 'click', // quand on clique sur le marker
		function() {
			marker.openInfoWindowHtml(description); // affiche bulle info du marker
		}
	);
	map.addOverlay(marker);// affichage du marker
}

// ********************* INIT CARTE DES POIs DE LA MERVEILLE ********************
function carte_pois(id_merv) {
	if (GBrowserIsCompatible()) {
		var map_pois = new GMap2(document.getElementById("map_pois"));
		
		/* if (commune != null) {
			map_pois.setMapType(G_HYBRID_MAP);
			map_pois.setUIToDefault();
			var address = commune + ', var, france';
			showaddress(address);
			var request = GXmlHttp.create();
			var param = commune;
			request.open('GET', 'js/getpois.php?commune='+param, true);
		} else { */
			map_pois.setMapType(G_NORMAL_MAP);
			map_pois.setUIToDefault();
			var request = GXmlHttp.create();
			request.open('GET', 'getpois.php?id_merv='+parseInt(id_merv), true);
		//}
	
	request.onreadystatechange = function() {
if (request.readyState == 4 && request.status == 200) {
var xmlDoc = request.responseXML;
var markers = xmlDoc.documentElement.getElementsByTagName("marker");

var firstPoint=new GLatLng(parseFloat(markers[0].getAttribute("lat")),
                     		     parseFloat(markers[0].getAttribute("lng")));
map_pois.setCenter(firstPoint, 13);
for (var i = 0; i < markers.length; i++) {
var lng = markers[i].getAttribute("lng");
var lat = markers[i].getAttribute("lat");
if (lat !="0"){
if (lng && lat) { 
var latlng = new GLatLng(parseFloat(lat),parseFloat(lng));
var poi_type = markers[i].getAttribute("type");
var html = '<p class="g_bulle">'
				+ markers[i].getAttribute("titre")
				+ '</p>';
var marker = creerMarker(latlng, html, poi_type);
map_pois.addOverlay(marker);
}
} //if lat
} //for
}
} // gdownloadurl



} //gbrowser
request.send(null);


	

} // carte_pois

// ********************** fin INIT CARTE DES POIs DE LA MERVEILLE **************************



// **************************** INSERT POI ***************************
function init(commune) {
if (GBrowserIsCompatible()) {
 map = new GMap2(document.getElementById("map"));
map.setMapType(G_HYBRID_MAP);
map.setUIToDefault();

var poilat = document.getElementById("g_lat").value;
var poilong = document.getElementById("g_long").value;


if (poilat.length==0)  {
	var address = commune + ', var, france';
	geocoder = new GClientGeocoder();
	showaddress(address); // appel géocodage de la commune
} else {
		var glat = document.getElementById("g_lat");
		var glong = document.getElementById("g_long");
		glat.value = poilat; // ajoute lat dans input
		glong.value = poilong; // ajoute long dans input
		map.setCenter(new GLatLng(poilat, poilong), 16);    // affiche et centre la carte
		var marker = new GMarker(new GLatLng(poilat, poilong));
		map.addOverlay(marker);
}

// ajout d'un marker lorsque l'on clique sur la carte
// les coordonnées du nouveau marker remplacent celles de l'ancien !!

GEvent.addListener(map, "click", function(overlay, latlng) {// on clique pour créer un marker

	map.clearOverlays(); // on vide la carte d'éventuels markers
	// on récupère les coord du point cliqué
	var lng = latlng.lng(); // récup longitude
	var lat = latlng.lat(); // récup lat
	var glat = document.getElementById("g_lat");
	var glong = document.getElementById("g_long");
	glat.value = lat; // ajoute lat dans input
	glong.value = lng; // ajoute long dans input
	//description.innerHTML = '<strong>Longitude : </strong>' + lng + '<br /><strong>Latitude : </strong>' + lat;
	var marker = new GMarker(latlng);
	map.addOverlay(marker);
	//marker.openInfoWindowHtml(description); // affiche bulle info du marker
	
});
}
}
// ************************** fin INSERT POI ****************************
function maj(x) {
	commune = x;
	var address = commune + ', var, france';
	showaddress(address);
} 

function showaddress(address) {
  geocoder = new GClientGeocoder();
  geocoder.getLatLng(address, 
  function(point) { 
	if (!point) {     
		alert(address + " not found");   
		} else { 
			map.setCenter(point, 13);    // affiche et centre la carte
		}  
	});
}

// ******************** Affiche TRACE RANDO ***************





// //////////////////////////////////////////////////
function google_fiche(id_merv, gpx_fichier) {
if (GBrowserIsCompatible()) {
var map = new GMap2(document.getElementById("map"));
map.setMapType(G_HYBRID_MAP);
map.setUIToDefault();


// Créer une EWindow
ew = new EWindow(map, E_STYLE_1);      
map.addOverlay(ew);


// traitement des POIs
if (id_merv){
var request = GXmlHttp.create();
request.open('GET', 'getpois.php?id_merv='+parseInt(id_merv), true);
request.onreadystatechange = function() {
if (request.readyState == 4 && request.status == 200) {
var xmlDoc = request.responseXML;
var markers = xmlDoc.documentElement.getElementsByTagName("marker");
var firstPoint=new GLatLng(parseFloat(markers[0].getAttribute("lat")),
                     		parseFloat(markers[0].getAttribute("lng")));
	map.setCenter(firstPoint, 13);	
for (var i = 0; i < markers.length; i++) {
var lng = markers[i].getAttribute("lng");
var lat = markers[i].getAttribute("lat");
if (lat !="0"){
if (lng && lat) { 
var latlng = new GLatLng(parseFloat(lat),parseFloat(lng));
var poi_type = markers[i].getAttribute("type");
var html = '<p class="g_bulle">'
				+ markers[i].getAttribute("titre")
				+ '</p>';
var poi_marker = creerMarker(latlng, html, poi_type);
map.addOverlay(poi_marker);
}
} //if lat
} //for
}
} // gdownloadurl
} // if id_merv

// traitement du GPX
if (gpx_fichier){
GDownloadUrl("gpx/"+gpx_fichier, function(data, responseCode) {
	  var points=[];
	  var gtrkpt=[];
	  var ele = new Array;
	  var xml = GXml.parse(data);
	  var trkpt = xml.documentElement.getElementsByTagName("trkpt");
	  var alti = xml.documentElement.getElementsByTagName("ele");
	  var firstPoint=new GLatLng(parseFloat(trkpt[0].getAttribute("lat")),
                     		     parseFloat(trkpt[0].getAttribute("lon")));
	  var lastPoint=firstPoint;
	  var den = 0; // dénivelé
	  var max_alti = 0; // altitude maximale pour le profil
	  var ymax = 0;
	  var alti_ele = 0;
	  var alti_actuelle = parseInt(alti[0].firstChild.nodeValue);
	  var distance = 0;
	  for (var i = 0; i < trkpt.length; i++) {
			// calcul alti
			alti_ele = parseInt(alti[i].firstChild.nodeValue);
			ele.push([i, alti_ele]);
			if (alti_ele > alti_actuelle) {
				var diff = alti_ele - alti_actuelle;
				den += diff;
				if (alti_ele > max_alti) {max_alti = alti_ele;}
			}
			alti_actuelle = alti_ele;
			
			// distance entre 2 points
			var newPoint=new GLatLng(parseFloat(trkpt[i].getAttribute("lat")),
                     		     parseFloat(trkpt[i].getAttribute("lon")));
			var d = newPoint.distanceFrom(lastPoint).toFixed(1)/1000;
			distance += parseFloat(d);
            lastPoint = newPoint ;
			points.push(newPoint);
	  }
      map.setCenter(firstPoint, 13);
	  map.addOverlay(new GPolyline(points, "#d00"));
	  var marker = creerMarker(firstPoint, 'départ de la rando', 'depart');
	  map.addOverlay(marker);
	  //distance = distance);
	  var content = "<p  style='font-size:11px;margin:5px 0 0 -25px'>Distance totale : "+Math.ceil(distance)+" km. Dénivelé total : "+den+" mètres</p>";
	  ymax = max_alti + 100;
		$.plot($("#placeholder"), [ele],
		{
			lines:{fill:true},
			yaxis: {
				min:0,
				max: ymax
			},
			xaxis: {
				ticks:0,
				min:0,
				max:ele.length
			}
		});	
		document.getElementById("alti").innerHTML = content;
	 
	});

}
}
request.send(null);
}
// ******************** fin Affiche tracé rando ***************


// ////////////////////////////////////////////////////

function creerMarker(latlng, html, poi_type) {      // création des markers POIs
		var m_icon = new GIcon();
		switch (poi_type) {
			case 'depart' : m_icon.image = 'img/ico-gmaps-07.png';
			break;
			case 'religieux' : m_icon.image = 'img/ico-gmaps-02.png';
			break;
			case 'megalithe' : m_icon.image = 'img/ico-gmaps-01.png';
			break;
			case 'ruine' : m_icon.image = 'img/ico-gmaps-03.png';
			break;
			case 'pont' : m_icon.image = 'img/ico-gmaps-05.png';
			break;
			case 'autre' : m_icon.image = 'img/ico-gmaps-06.png';
			break;
			case 'montagne' : m_icon.image = 'img/ico-gmaps-04.png';
			break;
		}
		
		m_icon.iconSize = new GSize(25, 34);
		m_icon.iconAnchor = new GPoint(12, 34);
		m_icon.infoWindowAnchor = new GPoint(12, 34);
		marker_m = { icon:m_icon }; // Set up our GMarkerOptions object
		var marker = new GMarker(latlng, marker_m);
		if (html != null) {
			
			GEvent.addListener(marker, 'mouseover', function() {
				var markerHTML = html;
				ew.openOnMarker(marker,html);
			}); 
			GEvent.addListener(marker, 'mouseout', function() {
			ew.hide();
			});
			
			
		}
	return marker;
}



	
	
// fin GOOGLE MAPS 
// ////////////////////////////////////////////////////////////////////////


	var requete = null ;
	function creerrequete() {
	try {
	requete = new XMLHttpRequest();
	} catch (essaimicrosoft) {
	try {
	requete = new ActiveXObject ("Msxm12.XMLHTTP");
	} catch (autremicrosoft) {
	try {
	requete = new ActiveXObject ("Microsoft.XMLHTTP");
	} catch (echec) {
	requete = null;
	}
	}
	}
	if (requete == null) 
	alert ("Impossible de créer l'objet requete !!");
	}
	
	function getperso(param){
	creerrequete();
	var url = "getpersoxml.php?nom=" + escape(param);
	requete.open ("GET", url, true);
	requete.onreadystatechange = function() {
	if (requete.readyState == 4 && requete.status == 200) {
	var docXML = requete.responseXML;
	var nom_persoxml = docXML.getElementsByTagName("perso_nom").item(0).firstChild.nodeValue;
	var texte_persoxml = docXML.getElementsByTagName("perso_texte").item(0).firstChild.nodeValue;
	montre2(texte_persoxml, nom_persoxml);
	// afficher(docXML); 
	}
	}
	requete.send(null);
	}


function GetId(id)
{
return document.getElementById(id);
}
var i=false; // La variable i nous dit si la bulle est visible ou non
 
function move(e) {
  if(i) {  // Si la bulle est visible, on calcule en temps reel sa position ideale
    if (navigator.appName!="Microsoft Internet Explorer") { // Si on est pas sous IE
    GetId("curseur").style.left=e.pageX - 30+"px";
    GetId("curseur").style.top=e.pageY  +20+"px";
    }
    else { // Modif proposé par TeDeum, merci à  lui
    if(document.documentElement.clientWidth>0) {
GetId("curseur").style.left=-30+event.clientX+document.documentElement.scrollLeft+"px";
GetId("curseur").style.top=20+event.clientY+document.documentElement.scrollTop+"px";
    } else {
GetId("curseur").style.left=5+event.clientX+document.body.scrollLeft+"px";
GetId("curseur").style.top=20+event.clientY+document.body.scrollTop+"px";
         }
    }
  }    
}
 
 
function montre2(texte_persoxml, nom_persoxml) {
  if(i==false) {
  var content="<p style='font-size:14px;font-variant:small-caps'>"+nom_persoxml+"</strong></p><p style='font-style:italic'>"+texte_persoxml+"</p>";
  GetId("curseur").style.visibility="visible"; // Si il est caché (la verif n'est qu'une securité) on le rend visible.
  GetId("curseur").innerHTML = content; // on copie notre texte dans l'élément html
  i=true;
  GetId("curseur").style.width="200px";
  
  }
}

function montre(nom_merv, commune, thb) {
  if(i==false) {
   var content="<p>"+nom_merv+"</p><p style='font-size:11px; font-style:italic; color:#5f5c38'>"+commune+"<br /><img src='photos_thumbs/"+thb+"' style='border:1px solid #000' /></p>";
  GetId("curseur").style.visibility="visible";  // Si il est caché (la verif n'est qu'une securité) on le rend visible. 
  GetId("curseur").innerHTML = content; // on copie notre texte dans l'élément html
  i=true;
  }
 
}
function montre3(xxx) {
  if(i==false) {
  var content="<img src='photos/"+xxx+"' />";
  GetId("curseur").style.visibility="visible";  // Si il est caché (la verif n'est qu'une securité) on le rend visible. 
  GetId("curseur").innerHTML = content; // on copie notre texte dans l'élément html
  i=true;
  }
}
function montre4(www) {
  if(i==false) {
  var content="<p>"+www+"</p>";
  GetId("curseur").style.visibility="visible";  // Si il est caché (la verif n'est qu'une securité) on le rend visible. 
  GetId("curseur").innerHTML = content; // on copie notre texte dans l'élément html
  i=true;
  }
}


function cache() {
if(i==true) {
GetId("curseur").style.visibility="hidden";// Si la bulle est visible on la cache
GetId("curseur").style.left="-1000px"; 
i=false;
GetId("curseur").style.width="";
}
}

document.onmousemove=move; // dès que la souris bouge, on appelle la fonction move pour mettre à jour la position de la bulle.