var gmap = null;
var markerCluster = null;
var nbPoint = 0;
var MaxLng = 0;
var MaxLat = 0;
var affiches = [];
var exist = null;
var markers = [];

// Fonction de stockage des scripts ŕ charger 
FuncOL = new Array(); 
function StkFunc(Obj) { 
    FuncOL[FuncOL.length] = Obj; 
} 
     
// Execution des scripts au chargement de la page, sur l'event windows.onload
window.onload = function() { 
    for(i=0; i<FuncOL.length; i++) 
        {FuncOL[i]();} 
}
	
function GmapInitialize(map,controls,cluster){
			// GMap construction
			gmap = new GMap2(document.getElementById(map));
			if(controls){	
				gmap.addMapType(G_NORMAL_MAP);
				gmap.addMapType(G_SATELLITE_MAP);
				gmap.addControl(new GLargeMapControl());
				gmap.addControl(new GMapTypeControl());	
				//gmap.enableScrollWheelZoom();	
			}	
			gmap.setCenter(new GLatLng(50.38295, 4.4445), 8);
						
			if(cluster){
				markerCluster = new MarkerClusterer(gmap, markers,{gridSize: 75,maxZoom: 16});
			}
			
			
}
	
function affAddress(lng,lat,address,events,typeAff){
	exist = null;
	for(var i=0;i<affiches.length;i++){
		if(affiches[i]==address){
			exist = 'exist';
		}
	}
	if (!exist) {
		var point = new GPoint(lng, lat);
		gmap.setCenter(new GLatLng(lat, lng), 13);
		if(IconCustom){
			  // add the feature set to the map with the custom marker icon
			  markerOptions= {
			    icon: NewIcon
			  };
		}
		
		
		var marker = null;
		if(typeof(markerOptions)=="undefined"){
    		var markerOptions = null;
    	}
		if(markerOptions){
			marker = new GMarker(point,markerOptions);
		}else{
			marker = new GMarker(point);
		}
		var  contentInfo;
		
		switch(typeAff){
			case "list_agenda":
			{
				contentInfo = "<div style=\"heigth:200px;\">";
				for (var i=0;i<events.length;i++){
					contentInfo += '<h3><a href="'+events[i][1]+'">'+events[i][0]+'</a></h3>'+events[i][2]+'<br />'+events[i][3]+', '+ events[i][4]+'<br /><a href="'+events[i][1]+'">Détails de l\'événement</a><br /><a href="'+events[i][6]+'">Itinéraire vers ce lieu</a><br />';
					contentInfo += '-----------------------------------------------';
				}		
				contentInfo += "</div>";
				break;
			}
			case "agenda":
			{
				contentInfo = '<div><h3>'+events[0][0]+'</h3>'+events[0][2]+'<br /><a href="'+events[0][5]+'">'+events[0][3]+'</a>, '+events[0][4]+'<br /><a href="'+events[0][6]+'">Itinéraire vers ce lieu</a></div>';
				break;
			}
			case "list_guide":
			{
				contentInfo = "<div style=\"heigth:200px;\">";
				for (var i=0;i<events.length;i++){
					contentInfo += "<h3><a href='"+events[i][1]+"'>"+events[i][0]+"</a></h3><br /><a href='"+events[i][1]+"'>Détails</a><br /><a href='"+events[i][6]+"'>Itinéraire vers ce lieu</a><br />";
					contentInfo += '-----------------------------------------------';
				}		
				contentInfo += "</div>";
				break;
			}
			case "guide":
			{
				contentInfo = '<div><h3>'+events[0][0]+'</h3><br /><a href="'+events[0][6]+'">Itinéraire vers ce lieu</a></div>';
				break;
			}
		}
	
		GEvent.addListener(marker, "click", function(){
			marker.openInfoWindow(contentInfo,{maxHeight:150,autoScroll:true});
		});
		affiches.push(address);
		markers.push(marker);
		gmap.addOverlay(marker);
		nbPoint++;
	}
}

function centrateMap(lng,lat){
  if (!exist) {
	  	if (nbPoint == 1) {
	  		MaxLat = parseFloat(lat);
	  		MaxLng = parseFloat(lng);
	  		gmap.setCenter(new GLatLng(lat, lng), 16);
	  	}
	  	else {
	  		MaxLat = MaxLat + parseFloat(lat);
	  		MaxLng = MaxLng + parseFloat(lng);
			gmap.setCenter(new GLatLng(50.38295, 4.4445), 5);
			var bounds = gmap.getBounds();
			var zoomCenter = 8;
			var Ok = 0;
			while(Ok==0){		
				var zoom = 0;
				for (var i=0;i<nbPoint;i++){
						var comp = new GLatLng(markers[i].getLatLng().y,markers[i].getLatLng().x);
						if(!bounds.containsLatLng(comp)){
							zoom = 1;
						}
				
				}
				if(zoom==0){
					zoomCenter ++;
				}else{
						zoomCenter --;
						Ok = 1;	
				}
				gmap.setCenter(new GLatLng(MaxLat / nbPoint, MaxLng / nbPoint),zoomCenter);
				bounds = gmap.getBounds();
				if(zoomCenter == 14){
					zoomCenter --;
					gmap.setCenter(new GLatLng(MaxLat / nbPoint, MaxLng / nbPoint),zoomCenter);
					Ok = 1;
				}		
			}
	  	}
  }
}

function Icon(File){

  // create a custom icon for the markers
  var NewIcon = new GIcon();
  NewIcon.image = File;
  NewIcon.iconSize = new GSize(32, 32);
  NewIcon.iconAnchor = new GPoint(16, 32);
  NewIcon.infoWindowAnchor = new GPoint(24, 0);
  // add the feature set to the map with the custom marker icon
  markerOptions= {
    icon: NewIcon
  };
}

