// Google Maps API

/*
Fonction Google
*/
/*
function GoogleMapsLoad()
{
	if (GBrowserIsCompatible())
	{
		var map = new GMap2(document.getElementById("map"));
		var geocoder = new GClientGeocoder();

		map.addControl(new GLargeMapControl());
		map.addControl(new GMapTypeControl());
		map.addControl(new GOverviewMapControl());
		map.setCenter(new GLatLng(45.047548,3.880443),14);
		//map.enableScrollWheelZoom();

		function markerStyle(type)
		{
			var MonPointeur = new GIcon(G_DEFAULT_ICON);
			if (type == "marker01" )
			{
					MonPointeur.image = "../images/googlemap/marker01.png";
					MonPointeur.shadow = "";
			}
			else if (type == "marker02" )
			{
					MonPointeur.image = "../images/googlemap/marker02.png";
					MonPointeur.shadow = "";
			}
			else if (type == "marker03" )
			{
					MonPointeur.image = "../images/googlemap/marker03.png";
					MonPointeur.shadow = "";
			}
			else if (type == "marker04" )
			{
					MonPointeur.image = "../images/googlemap/marker04.png";
					MonPointeur.shadow = "";
			}
			else if (type == "marker05" )
			{
					MonPointeur.image = "../images/googlemap/marker05.png";
					MonPointeur.shadow = "";
			}
			else if (type == "marker06" )
			{
					MonPointeur.image = "../images/googlemap/marker06.png";
					MonPointeur.shadow = "";
			}
			else if (type == "marker07" )
			{
					MonPointeur.image = "../images/googlemap/marker07.png";
					MonPointeur.shadow = "";
			}
			else if (type == "marker08" )
			{
					MonPointeur.image = "../images/googlemap/marker08.png";
					MonPointeur.shadow = "";
			}
			else if (type == "marker09" )
			{
					MonPointeur.image = "../images/googlemap/marker09.png";
					MonPointeur.shadow = "";
			}
			else
			{
					MonPointeur.image = "../images/googlemap/marker00.png";
					MonPointeur.shadow = "";
			}
			return MonPointeur;
		}

		function createMarker(marker,type,nom,point,descriptif,lien)
		{
			var marker = new GMarker(point,markerStyle(type));
			if (lien != "" )
			{
				GEvent.addListener (marker, "click", function() 
					{ 
					marker.openInfoWindowHtml("<strong style='color:#F36000;'>" + nom + "</strong><br/>" + descriptif + "<br /><a href='http://" + lien + "' target='_blank'>En savoir plus</a>" ); 
					});
			}
			else
			{
				GEvent.addListener (marker, "click", function() 
					{ 
					marker.openInfoWindowHtml("<strong style='color:#F36000;'>" + nom + "</strong><br/>" + descriptif + "" ); 
					});
			}
			return marker;
		}

		GDownloadUrl("../_inc/CPN_GoogleMapData.asp", function(data, responseCode)
		{
			var xml = GXml.parse(data);
			var element = xml.documentElement.getElementsByTagName("googlemaps");

			for (var i=0 ; i < element.length ; i++){
				 var identifiant = new String(element[i].getAttribute("identifiant"));
				 var type = new String(element[i].getAttribute("type"));
				 var nom = new String(element[i].getAttribute("nom"));
				 var descriptif = new String(element[i].getAttribute("descriptif"));
				 var lien = new String(element[i].getAttribute("lien"));
				 var latitude = new String(element[i].getAttribute("latitude"));
				 var longitude = new String(element[i].getAttribute("longitude"));
				 var point = new GLatLng(parseFloat(latitude), parseFloat(longitude));
 
				 if ((latitude.length > 0) && (longitude.length > 0))
				 {
					map.addOverlay(createMarker(identifiant,type,nom,point,descriptif,lien));
				 }
			}
		})
	}
}
*/

function Initialisation()
{

}



/*******************************************/
/*	Positionnement des points sur la carte */
/*******************************************/

// Tableau des points à afficher
var tabGoogleMapPoint = new Array();

function GoogleMapsLoad()
{
	if (GBrowserIsCompatible())
	{
		var map = new GMap2(document.getElementById("map"));
		var geocoder = new GClientGeocoder();

		map.setMapType(G_SATELLITE_MAP);
		map.addControl(new GLargeMapControl());
		map.addControl(new GMapTypeControl());
		map.addControl(new GOverviewMapControl());
		//map.setCenter(new GLatLng(45.047548,3.880443),5);
		//map.enableScrollWheelZoom();

		function markerStyle(type)
		{
			var MonPointeur = new GIcon(G_DEFAULT_ICON);
			if (type == "marker01" )
			{
					MonPointeur.image = "../images/googlemap/marker01.png";
					MonPointeur.shadow = "";
			}
			else if (type == "marker02" )
			{
					MonPointeur.image = "../images/googlemap/marker02.png";
					MonPointeur.shadow = "";
			}
			else if (type == "marker03" )
			{
					MonPointeur.image = "../images/googlemap/marker03.png";
					MonPointeur.shadow = "";
			}
			else if (type == "marker04" )
			{
					MonPointeur.image = "../images/googlemap/marker04.png";
					MonPointeur.shadow = "";
			}
			else if (type == "marker05" )
			{
					MonPointeur.image = "../images/googlemap/marker05.png";
					MonPointeur.shadow = "";
			}
			else if (type == "marker06" )
			{
					MonPointeur.image = "../images/googlemap/marker06.png";
					MonPointeur.shadow = "";
			}
			else if (type == "marker07" )
			{
					MonPointeur.image = "../images/googlemap/marker07.png";
					MonPointeur.shadow = "";
			}
			else if (type == "marker08" )
			{
					MonPointeur.image = "../images/googlemap/marker08.png";
					MonPointeur.shadow = "";
			}
			else if (type == "marker09" )
			{
					MonPointeur.image = "../images/googlemap/marker09.png";
					MonPointeur.shadow = "";
			}
			else
			{
					MonPointeur.image = "../images/googlemap/marker00.png";
					MonPointeur.shadow = "";
			}
			return MonPointeur;
		}

		function createMarker(marker,type,nom,point,descriptif,lien,gibierpresent)
		{
			var marker = new GMarker(point,markerStyle(type));
			var strGibierPresent = "";
			
			if (lien != "" )
			{ 
				if (gibierpresent != "") {
					strGibierPresent = "<small>" + gibierpresent + "</small><br/>";
				}
				
				GEvent.addListener (marker, "click", function() 
					{
						marker.openInfoWindowHtml("<strong style='color:#F36000;'>" + nom + "</strong><br/>" + strGibierPresent + "<br/>" + descriptif + "<br/><a href='" + lien + "' target='_blank'>En savoir plus</a>");
						//marker.openInfoWindowHtml("<strong style='color:#F36000;'>" + nom + "</strong><br/>" + descriptif + "<br /><a href='http://" + lien + "' target='_blank'>En savoir plus</a>" ); 
					});
			}
			else
			{
				
				GEvent.addListener (marker, "click", function() 
					{ 
					  	marker.openInfoWindowHtml("<strong style='color:#F36000;'>" + nom + "</strong><br/>" + descriptif + "<br/><a href='" + lien + "' target='_blank'>En savoir plus</a>");
						//marker.openInfoWindowHtml("<strong style='color:#F36000;'>" + nom + "</strong><br/>" + descriptif + "" ); 
					});
			}
			return marker;
		}

		GDownloadUrl("../_inc/CPN_GoogleMapData.asp", function(data, responseCode)
		{
			var identifiant;
			var type;
			var nom;
			var descriptif;
			var lien;
			var gibierpresent;
		
			// Valeur par défaut lat et Lng 
			var latMin = 0;
			var latMax = 0;			
			var lngMin = 0;
			var lngMax = 0;	
			var varZoom = 5;
			var varAlone = false;
			
			// Parcours du tableau de points
			for (var i=0; i< tabGoogleMapPoint.length; i++) 
			{
				identifiant 	= tabGoogleMapPoint[i][0];
				type 			= tabGoogleMapPoint[i][1];
				nom 			= tabGoogleMapPoint[i][2];
				if (tabGoogleMapPoint[i][3].length > 50) {
					descriptif		= tabGoogleMapPoint[i][3].substr(0,50) + "...";
				}
				else
				{
					descriptif		= tabGoogleMapPoint[i][3];
				}
				lien			= tabGoogleMapPoint[i][4];
				latitude		= tabGoogleMapPoint[i][5];
				longitude		= tabGoogleMapPoint[i][6];
				gibierpresent	= tabGoogleMapPoint[i][7];
				pays			= tabGoogleMapPoint[i][8];
				FicheId			= tabGoogleMapPoint[i][9];
								
				var point = new GLatLng(parseFloat(latitude), parseFloat(longitude));
				if ((latitude.length > 0) && (longitude.length > 0))
				{
					if (FicheId=="289")
					{
						map.addOverlay(createMarker(identifiant,type,nom,point,descriptif,lien,gibierpresent));
					}
					else
					{
										
						map.addOverlay(createMarker(identifiant,type,nom,point,descriptif,"../groupe/fiche-generalites-"+nom+"-"+identifiant+".html?FicheId="+FicheId+"&KbAgendaId="+identifiant,gibierpresent));
					}
					
				}
				
				//Si on a un seul point --> on prend ses coordonnées
				if (tabGoogleMapPoint.length == 1)
				{
					latMin = latMax = latitude;
					lngMin = lngMax = longitude;
					varZoom = 10;
					
					if (pays == 1)
					{
						varAlone = true;
					}
				}
				else
				{
					//Sinon on récupére les valeurs min et max pour la lat et lng de tous les points
					if (latitude < latMin || latMin == 0)
					{
						latMin = parseInt(latitude);
					}
					
					if (latitude > latMax || latMax == 0) 
					{
						latMax = parseInt(latitude);
					}
					
					if (longitude < lngMin || lngMin == 0)
					{
						lngMin = parseInt(longitude);
					}
					
					if (longitude > lngMax || lngMax == 0) 
					{
						lngMax = parseInt(longitude);							
					}
				}
				
			}
			
			//Valeurs par défaut 
			if (latMin == 0 && latMax == 0) { latMin = 45.047548; latMax = 45.047548;	} 
			if (lngMin == 0 && lngMax == 0) { lngMin = 3.880443; lngMax = 3.880443;		} 			
			if (varZoom == 0) { varZoom = 5; }
			
/*			alert (latMin + " / " + latMax);
			alert (lngMin + " / " + lngMax);*/
			
			//Ajustement du zoom en fonction de la différence entre les 2 points les + éloignés : 
			var diffLat = latMax - latMin;
			var diffLng = lngMax - lngMin;
			
			if (!varAlone)
			{
				if (diffLat > 150 || diffLng > 150)
				{
					varZoom = 1;	
				}
				else if (diffLat > 80 || diffLng > 80)
				{
					varZoom = 2;
				}
				else if (diffLat > 50 || diffLng > 50)			
				{
					varZoom = 3;	
				}
				else if (diffLat > 30 || diffLng > 30)
				{
					varZoom = 4; 
				}
				else
				{
					varZoom = 5;	
				}
			}
			
/*			alert ('Diff Lat : ' + diffLat);
			alert ('Diff Lng : ' + diffLng);
	*/		
			//Recherche du centre :
			centreLat = latMin + ((latMax-latMin)/2);
			centreLng = lngMin + ((lngMax-lngMin)/2);
			
//			alert ("Centre : " centreLat + " / " + centreLng);
			
/*			var point = new GLatLng(centreLat,centreLng);
			map.addOverlay(createMarker(6,1,"Centre",point,"","",varZoom));*/
			
			//Application du centre et du zoom :
			map.setCenter(new GLatLng(centreLat,centreLng),varZoom);
		})
	}
}


/*****************************************************/
/* Mise à jour de la carte selon criere de recherche */
/*****************************************************/
var XHRGoogleMap = function() {
	
	var i;
	
	// Recuperation criteres de recherches
	
	// Type de Structure
	var KbStructureId	= "";
	var tabStructureId 	= document.getElementsByName('KbStructureId');
	for (i=0; i<tabStructureId.length; i++) {
		if (tabStructureId[i].checked) {
			if (KbStructureId != "") {
				KbStructureId = KbStructureId + ",";
			}
			KbStructureId = KbStructureId + tabStructureId[i].value;
		}
	}
	
	// Type de Chasse
	var KbChasseId	= "";
	var tabChasseId = document.getElementsByName('KbChasseId');
	for (i=0; i<tabChasseId.length; i++) {
		if (tabChasseId[i].checked) {
			if (KbChasseId != "") {
				KbChasseId = KbChasseId + ",";
			}
			KbChasseId = KbChasseId + tabChasseId[i].value;
		}
	}
	
	// Type de Gibier
	var KbGibierId	= "";
	var tabGibierId = document.getElementsByName('KbGibierId');
	for (i=0; i<tabGibierId.length; i++) {
		if (tabGibierId[i].checked) {
			if (KbGibierId != "") {
				KbGibierId = KbGibierId + ",";
			}
			KbGibierId = KbGibierId + tabGibierId[i].value;
		}
	}
	
	// Vente de Gibier
	var KbFicheGibierVente = "";
	if (document.getElementById('KbFicheGibierVente').checked) {
		KbFicheGibierVente = document.getElementById('KbFicheGibierVente').value;	
	}
	
	// Zone géographique : departements français
	var KbGeolocalDeptNum	= "";
	var tabGeolocalDeptNum 	= document.getElementsByName('KbGeolocalDeptNum');
	for (i=0; i<tabGeolocalDeptNum.length; i++) {
		if (tabGeolocalDeptNum[i].checked) {
			if (KbGeolocalDeptNum != "") {
				KbGeolocalDeptNum = KbGeolocalDeptNum + ",";
			}
			KbGeolocalDeptNum = KbGeolocalDeptNum + tabGeolocalDeptNum[i].value;
		}
	}
	
	// Zone géographique : pays etranger
	var KbGeolocalPaysId	= "";
	var tabGeolocalPaysId = document.getElementsByName('KbGeolocalPaysId');
	for (i=0; i<tabGeolocalPaysId.length; i++) {
		if (tabGeolocalPaysId[i].checked) {
			if (KbGeolocalPaysId != "") {
				KbGeolocalPaysId = KbGeolocalPaysId + ",";
			}
			KbGeolocalPaysId = KbGeolocalPaysId + tabGeolocalPaysId[i].value;
		}
	}
	//alert(KbGeolocalPaysId)
	// Jumelage
	var KbFichePartenariat = "";
	if (document.getElementById('KbFichePartenariat').checked) {
		KbFichePartenariat = document.getElementById('KbFichePartenariat').value;	
	}
	
	// Liste complete des evénements
	/*var KbFicheEvenement = "";
	if (document.getElementById('KbFicheEvenement').checked) {
		KbFicheEvenement = document.getElementById('KbFicheEvenement').value;	
	}*/
		
	// Construction objet XMLTTP
    this._xhr_object = window.XMLHttpRequest?
        new XMLHttpRequest():new ActiveXObject("Microsoft.XMLHTTP");
    this._id = XHRGoogleMap.ID++;

	// Appel à la fonction de recherche
    this._xhr_object.open("GET", "../_inc/XML_Groupe_Recherche_Geo.asp?ms="+ new Date().getTime() + "&KbStructureId=" + KbStructureId + "&KbChasseId=" + KbChasseId + "&KbGibierId=" + KbGibierId + "&KbFicheGibierVente=" + KbFicheGibierVente + "&KbGeolocalDeptNum=" + KbGeolocalDeptNum + "&KbGeolocalPaysId=" + KbGeolocalPaysId + "&KbFichePartenariat=" + KbFichePartenariat , true);

    var self = this;
	
	// Au retour de l'appel XML => récupération du texte
    this._xhr_object.onreadystatechange = function() {
        if(self._xhr_object.readyState == 4){
			tabGoogleMapPoint = new Array();
			//alert(self._xhr_object.responseText);
			eval(self._xhr_object.responseText);
			GoogleMapsLoad();
        }
    }
	this._xhr_object.setRequestHeader('Content-Type','text/html; charset=iso-8859-1');
	this._xhr_object.setRequestHeader("Cache-Control","no-cache");
	this._xhr_object.setRequestHeader('Pragma','no-cache');
    this._xhr_object.send(null);
}

/*****************************************************/
/* Affichage par défaut de la carte 				 */
/*****************************************************/
var XHRGoogleMapDefault = function() {
	
	var i;
			
	// Construction objet XMLTTP
    this._xhr_object = window.XMLHttpRequest?
        new XMLHttpRequest():new ActiveXObject("Microsoft.XMLHTTP");
    this._id = XHRGoogleMap.ID++;
	
	// Appel à la fonction de recherche
    this._xhr_object.open("GET", "../_inc/XML_Groupe_Recherche_Geo_Default.asp?ms="+ new Date().getTime(), true);

    var self = this;
	
	// Au retour de l'appel XML => récupération du texte
    this._xhr_object.onreadystatechange = function() {
        if(self._xhr_object.readyState == 4){
			tabGoogleMapPoint = new Array();
			//alert(self._xhr_object.responseText);
			eval(self._xhr_object.responseText);
			GoogleMapsLoad();
        }
    }
	this._xhr_object.setRequestHeader('Content-Type','text/html; charset=iso-8859-1');
	this._xhr_object.setRequestHeader("Cache-Control","no-cache");
	this._xhr_object.setRequestHeader('Pragma','no-cache');
    this._xhr_object.send(null);
}

/*****************************************************/
/* liste complete				 */
/*****************************************************/
var XHRGoogleMapEv = function() {
	
	var i;
			
	// Construction objet XMLTTP
    this._xhr_object = window.XMLHttpRequest?
        new XMLHttpRequest():new ActiveXObject("Microsoft.XMLHTTP");
    this._id = XHRGoogleMap.ID++;
	
	// Liste complete des evénements
	/*var KbFicheEvenement = "";
	if (document.getElementById('KbFicheEvenement').checked) {
		KbFicheEvenement = document.getElementById('KbFicheEvenement').value;	
	}*/

	// Appel à la fonction de recherche
    this._xhr_object.open("GET", "../_inc/XML_Groupe_Recherche_Geo_Ev.asp?ms="+ new Date().getTime(), true);

    var self = this;
	
	// Au retour de l'appel XML => récupération du texte
    this._xhr_object.onreadystatechange = function() {
        if(self._xhr_object.readyState == 4){
			tabGoogleMapPoint = new Array();
			//alert(self._xhr_object.responseText);
			eval(self._xhr_object.responseText);
			GoogleMapsLoad();
        }
    }
	this._xhr_object.setRequestHeader('Content-Type','text/html; charset=iso-8859-1');
	this._xhr_object.setRequestHeader("Cache-Control","no-cache");
	this._xhr_object.setRequestHeader('Pragma','no-cache');
    this._xhr_object.send(null);
}


XHRGoogleMap.ID = 0;
XHRGoogleMapEv.ID = 0;


function funcGoogleMapUpdate() {
	new XHRGoogleMap();
	//new XHRGoogleMapEv();
}
function funcGoogleMapEv() {
	//new XHRGoogleMap();
	new XHRGoogleMapEv();
}


function funcGoogleMapLoad() {
	new XHRGoogleMapDefault();
}

/********************************/
/* Reinitialisation de la carte */
/********************************/
function funcGoogleMapInit() {
	tabGoogleMapPoint = new Array();
	GoogleMapsLoad();
}