// Procedures globales du projet
function _ECR(c,p,s){var h = (c + "").substring(0, 50);var n = 0;switch (p){case -2147483645:;n = 1;case -2147483648:;if (!window.tabExtraitChaine){tabExtraitChaine = new Array()}tabExtraitChaine[h] = 1;return _EC(c,tabExtraitChaine[h],s,n)
case -2147483646:;n = 1;case -2147483647:;if (!window.tabExtraitChaine || !(tabExtraitChaine[h])){return "\b"}(tabExtraitChaine[h])++;var sRes = _EC(c,tabExtraitChaine[h],s,n);if ("\b" == sRes){delete tabExtraitChaine[h]}return sRes}}
function _EC(c,p,s,n){if ((p >= -2147483648) && (p <= -2147483645)){return _ECR(c,p,s)}var t=new Array();if(typeof(s)!=typeof(t))t[0]=s;else t=s;if (!(n == 1)){var d=0;for(var i=0;i<p-1;i++){var m=-1;var l=0;for(var j=0;j<t.length;j++){s=t[j]
var k=c.indexOf(s,d);if((k>-1)&&((m<0)||(k<m))){m=k;l=s.length}}d=m+l;if(d==-1)return(p==1?c:"\b")}var f=-1;for(var j=0;j<t.length;j++){var k=c.indexOf(t[j],d);if((k>-1)&&((f<0)||(k<f)))f=k}if(f==-1)f=c.length;return c.substring(d,f)}else{
var d = c.length;for(var i=0;i<p-1;i++){var m=-1;for(var j=0;j<t.length;j++){var k=c.lastIndexOf(t[j],d-1);if(k>m)m=k}d=m;if (d == -1)	return (p==1?c:"\b")}var f=-1;var l=0;for(var j=0;j<t.length;j++){s=t[j];var k=c.lastIndexOf(s,d-1);if(k>f){f=k
l=s.length}}f+=l;if (f == -1)return c.substr(0, d);return c.substr(f, d - f)}}
function PGESTIONCARTES_LISTEMARQUEUR(VGSPOINT_RELAIS, VNB_RELAIS){{var VI=1;var VSRELAISENCOURS="";while((VI<=VNB_RELAIS)){VSRELAISENCOURS=_EC(VGSPOINT_RELAIS,VI,clWDEncode.sEncodeCharset(unescape("\r\n")),0)
GoogleMapsCreerMarqueur(_EC(VSRELAISENCOURS,1,";",0),_EC(VSRELAISENCOURS,1,";",1),"","","");VI=VI+1}}}
// Résumé : Création de la carte google map
// Syntaxe :
//CreeCarte (<sNomChampCarte>)
//
// Paramètres :
// 	sNomChampCarte : Nom du champ HTML (<nomChamp>..alias ou id défini dans DIV)
//	nlat  : latitude du centre de la carte
//	nlong : longitude du centre de la carte
// Valeur de retour :
// 	Aucune

function GoogleMapsCreeCarte(sNomChampCarte,nlat,nlong)
{
	if (nlat==0){
	    nlat = 48.856558;
	};
	if (nlong==0){
		nlong = 2.350966;
	};
	
	//	 Création de la carte
	var latlng = new google.maps.LatLng(nlat, nlong);
	var myOptions = {
		mapTypeControl: true,
		zoom: 10, 
		center: latlng, 
		mapTypeControlOptions: {style: google.maps.MapTypeControlStyle.DROPDOWN_MENU},
		navigationControl: true,
		mapTypeId: google.maps.MapTypeId.ROADMAP
		}
	// création de la carte
	gObjCarte = new google.maps.Map(document.getElementById(sNomChampCarte),myOptions);
}

function GoogleMapsEvenementClic(sNomFonction)
{
	if (!gObjCarte)
	return null;
	
	
	if (gnEvenementClic)
	return gnEvenementClic;
	
	var objFunction;
	// On a récupéré le nom de la fonction sous forme de chaîne, donc on récupère le pointeur sur cette fonction
	objFunction = eval(sNomFonction);
	// Ajoute l'évenement click
	gnEvenementClic = google.maps.event.addListener(gObjCarte, 'click', objFunction)
	
	
	return gnEvenementClic;
}

function GoogleMapsModifieTypeCarte(nTypeCarte)
{
	switch (nTypeCarte) {
		case 1 :
			gObjCarte.setMapTypeId(google.maps.MapTypeId.HYBRID);
			break;
		case 2 :
			gObjCarte.setMapTypeId(google.maps.MapTypeId.ROADMAP);
			break;
		case 3 :
			gObjCarte.setMapTypeId(google.maps.MapTypeId.SATELLITE);
			break;
		case 4 :
			gObjCarte.setMapTypeId(google.maps.MapTypeId.TERRAIN);
			break;
	}
}

function GoogleMapsDessineTrait(nlat1,nlong1,nlat2,nlong2)
{
	var flightPlanCoordinates = [
	new google.maps.LatLng(nlat1, nlong1),
	new google.maps.LatLng(nlat2, nlong2)
	];
	var flightPath = new google.maps.Polyline({
		path: flightPlanCoordinates,
		strokeColor: "#FF0000",
		strokeOpacity: 1.0,
		strokeWeight: 2
	});
	
	flightPath.setMap(gObjCarte);
}

function GoogleMapsTrajet(pts)
{
var flightPlanCoordinates= new Array(pts.length);
for (i=0;i<pts.length;i++){
	var ch = pts[i];
	var tot = ch.split(";");	
	var pt = new google.maps.LatLng(tot[0],tot[1]);
	flightPlanCoordinates[i]=pt;
}

var flightPath = new google.maps.Polyline({
		path: flightPlanCoordinates,
		strokeColor: "#FF0000",
		strokeOpacity: 1.0,
		strokeWeight: 2
	});
	
	
	var bounds = new google.maps.LatLngBounds();
	for (i=0;i<flightPlanCoordinates.length;i++) {
		bounds.extend(flightPlanCoordinates[i]);
		}
	
	flightPath.setMap(gObjCarte);
	gObjCarte.fitBounds(bounds);
	gObjCarte.setCenter(bounds.getCenter());
}

function GoogleMapsDessineKML(sURL)
{
	var ctaLayer = new google.maps.KmlLayer(sURL);
	ctaLayer.setMap(gObjCarte);
}

function GoogleMapsCreerMarqueur(lat, long,titre,TxtMess,bdeplacable)
{ 
	var optionsMarqueur = {
		position: new google.maps.LatLng(lat,long),
		map: gObjCarte,
		title: titre,
		contenuInfoBulle: TxtMess,
		draggable:bdeplacable
		}
	var marqueur = new google.maps.Marker(optionsMarqueur);
	var infobulle = new google.maps.InfoWindow();
	google.maps.event.addListener(marqueur, "click", function() {
		infobulle.setContent(this.contenuInfoBulle);
		infobulle.open(gObjCarte,this);
		});

}

function GoogleMapsCentrerCarte(nlat,nlong)
{
	var latlng = new google.maps.LatLng(nlat, nlong);
	gObjCarte.setCenter(latlng);
}

function GoogleMapsRechercheCoordonneesDepuisAdresse(sAdresse, sNomFonction)
{

	// On a récupéré le nom de la fonction sous forme de chaîne, donc on récupère maintenant le pointeur sur cette fonction
	var objFonction = eval(sNomFonction);
	//alert(objFonction);
	var geo = new google.maps.Geocoder();
	geo.geocode({'address': sAdresse},objFonction);
	
}

function GoogleMapsEvenementSurvol(sNomFonction)
{
	if (!gObjCarte)
		return null;
	
	
	if (gnEvenementSurvol)
		return gnEvenementSurvol;
	
	// On a récupéré le nom de la fonction sous forme de chaîne, il faut récupérer le pointeur de la fonction
	var objFunction = eval(sNomFonction);
	
	gnEvenementSurvol = google.maps.event.addListener(gObjCarte,'mousemove',objFunction);
	
	return gnEvenementSurvol;
}

function GoogleMapsSupprimerEvenementSurvol()
{
	if (gnEvenementSurvol)
	google.maps.event.removeListener(gnEvenementSurvol);
	gnEvenementSurvol = null;
}

function GoogleMapsLatLngVersLatitude(objLatLng)
{
	// Si le point passé est invalide, on renvoie -1
	if (!objLatLng)
		return -1;
		
	return objLatLng.lat()
}

function GoogleMapsLatLngVersLongitude(objLatLng)
{
	// Si le point passé est invalide, on renvoie -1
	if (!objLatLng)
	return -1;
	
	return objLatLng.lng()
}

function GoogleMapsCalculItineraire(addressStart,adressEnd)
{
	var directions = new google.maps.DirectionsRenderer();
	var directionsService = new google.maps.DirectionsService();
	var request = {
		origin:addressStart, 
		destination:adressEnd,
		travelMode: google.maps.DirectionsTravelMode.DRIVING
		};
	directionsService.route(request, function(response, status) {
		if (status == google.maps.DirectionsStatus.OK) {
			directions.setDirections(response);
			}
		});
	directions.setMap(gObjCarte);
}

function GoogleMapsSupprimeEvenementClic()
{
	if (gnEvenementClic){
	google.maps.event.removeListener(gnEvenementClic);
	gnEvenementClic = null;
	}
}

function GoogleMapsGestionBarreOutils(aucun, miniZoom,ZoomPan,ZoomControl)
{
	if (aucun){
		
		gObjCarte.setOptions({
			navigationControl: false,
			streetViewControl:false
			});
			}
	if (miniZoom){
	
		gObjCarte.setOptions({
			navigationControl: true,
			navigationControlOptions: {
			style: google.maps.NavigationControlStyle.SMALL
			},
			streetViewControl:true
		});
		}
	if (ZoomPan){
			
			gObjCarte.setOptions({
				navigationControl: true,
				navigationControlOptions: {
					style: google.maps.NavigationControlStyle.ZOOM_PAN
					},
				streetViewControl:true
				});
			}
			
	if (ZoomControl){
		
		gObjCarte.setOptions({
			navigationControl: true,
			navigationControlOptions: {
				style: google.maps.NavigationControlStyle.DEFAULT
				},
				streetViewControl:true
			});
		}		
}

function GoogleMapsTypeCartes(bType)
{
	if (bType){
		gObjCarte.setOptions({
			mapTypeControl: true,
			mapTypeControlOptions: {style: google.maps.MapTypeControlStyle.DROPDOWN_MENU}
		});
	}else{
		gObjCarte.setOptions({
			mapTypeControl: true,
			mapTypeControlOptions: {style: google.maps.MapTypeControlStyle.HORIZONTAL_BAR}
			});
	}
	
}

function GoogleMapsEchelle(bEch)
{
	if (bEch){
		gObjCarte.setOptions({
			scaleControl: true
			});
	}else{
		gObjCarte.setOptions({
			scaleControl: false
			});
	}
}

function GoogleMapsCreerListeMarqueur(listepoint,lat, long,titre,TxtMess,bdeplacable)
{ 
	var optionsMarqueur = {
		position: new google.maps.LatLng(lat,long),
		map: gObjCarte,
		title: titre,
		contenuInfoBulle: TxtMess,
		draggable:bdeplacable
		}
	var marqueur = new google.maps.Marker(optionsMarqueur);
	var infobulle = new google.maps.InfoWindow();
	google.maps.event.addListener(marqueur, "click", function() {
		infobulle.setContent(this.contenuInfoBulle);
		infobulle.open(gObjCarte,this);
		});

}

function GoogleMapsCreerMarquerS2F(lat, long,titre,TxtMess,bdeplacable)
{
	var imageMarqueur = new google.maps.MarkerImage("http://www.salade2fruits.fr/img_actu/marqueurrelais.png", new google.maps.Size(40, 40), new google.maps.Point(0,0), new google.maps.Point(0, 40));
	var ombreMarqueur = new google.maps.MarkerImage("http://www.salade2fruits.fr/img_actu/marqueurrelais.png", new google.maps.Size(40, 40), new google.maps.Point(0,0), new google.maps.Point(0, 40));
	
	var optionsMarqueur = {
	
		position: new google.maps.LatLng(lat,long),
		map: gObjCarte,
		title: titre,
		contenuInfoBulle: TxtMess,
		icon: imageMarqueur,
		shadow: ombreMarqueur,
		draggable:bdeplacable
		}
		
	var marqueur = new google.maps.Marker(optionsMarqueur);
//	var infobulle = new google.maps.InfoWindow();
//	google.maps.event.addListener(marker, "click", function() {
//		infobulle.setContent(this.contenuInfoBulle);
//		infobulle.open(gObjCarte,this);
//		});
	
	}


