var markers= new Array(); //Contiendra les markers affichés sur la carte
var defaultIcon= G_DEFAULT_ICON;


var map;

function load() {
	if (GBrowserIsCompatible()) {
		
/*Pour imprimer sous Firefox */
var _mFlags = {"doContinuousZoom":true,"doScrollWheelZoom":true,"enableOverviewMap":true,"doDoubleClickZoom":true,"fixVmlPrinting":true,"enableWaypointDragging":true};

		map = new GMap2(document.getElementById("map"));
		
		//centrer la carte sur la charente maritime.
		map.setCenter(new GLatLng(45.92503315853962, -1.2316435546875), 10);
		
		//ajouter la zone de déplacement dans le coin en bas à droite.
		map.addControl(new GOverviewMapControl(new GSize(80,80)));

		map.addControl(new GLargeMapControl());
		
		map.addControl(new GMapTypeControl());
		//map.setMapType(G_SATELLITE_MAP); // Vue satellite
		//map.setMapType(G_NORMAL_MAP); // Vue plan
		
		map.setMapType(G_HYBRID_MAP); // Vue mixte
		
		/*Autoriser le zoom sur la carte grace à la molette de la souris*/
        //map.enableContinuousZoom();
		//map.enableScrollWheelZoom();


       
                affiche("SELECTED");
				
				


	
// Tracé de l'île d'Oléron
var sw = new GLatLng(45.800880097362, -1.4113139926899);
var ne = new GLatLng(46.047424634617, -1.1890042420931);
var bounds = new GLatLngBounds(sw, ne);
var mapZoomLevel = map.getBoundsZoomLevel(bounds);

var polyline1_1 = new GPolyline.fromEncoded({
  color: "#333399",
  weight: 2,
      opacity: 0.6,
  points: "qycwGdc}FggDfeIotBtlCsn@``Aq`AbAqpApo@e~Bsm@ytBtoAugDxeAsZu`@fq@unEl|@iT~Wkr@zJsYhvB_}DfM}Svr@sp@z\\osBwAmtHvm@c}@j}@gOhTjEdQgNf]ph@rh@~@`eAeaAh}@aAhd@dZ|pBg{AlNkUvg@yhAvwAaxAvjExaB|P~P`{B{}@`xDnyEcRru@{f@bZ{cEbi@aUxAmvBvd@oRjGwmAdv@_~BlhDpB~]",
  levels: "LGDJGHHGHLHHBEGDIGHKFFHGHGGJGDFJEILHKFCFCIGGL",
  zoomFactor: 2, 
  numLevels: 14
});
map.addOverlay(polyline1_1);
// Fin tracé Oléron

	}	
}


function mapzoom(lat,lng,zoom) {
	map.setCenter(new GLatLng(lat, lng), zoom);
}


function calque_check(node) {
	if (node.checked) {
		affiche(node.name);
	}
	else {
		efface(node.name);
	}
}


function affiche (id) { // Télécharge le KML et affiche
	if (markers[id]) {
		if (markers[id].length==0) {
			//Si les markers ne sont pas cachés
			load_calque(id);
		}
		for (var i = 0; i <markers[id].length; i++) {
	         	      map.addOverlay(markers[id][i]);
		}	
	       
               
               // if (id=="PANIER") {
                 //           alert('Je recentre');
                   //         map.setCenter(bounds.getCenter(),map.getBoundsZoomLevel(bounds));
                     //   }
	}	
}

function efface(id) {
	//Effacer les markers du calque
	for (var i = 0; i <markers[id].length; i++) {

	         	      map.removeOverlay(markers[id][i]);
	}
	

}


function load_calque(id) {
	
	 if ((id!="PANIER") && !(window.icones[id]) && (id!="SELECTED")) { //Pas d'icone, ce n'est pas le panier... je charge donc le KML
			 markers[id]=new Array();
		         markers[id].push(new GGeoXml(liste_calques[id]["url"]));
			 affiche(id);
	}

	else {						 
	
	GDownloadUrl(liste_calques[id]["url"], 
		function(data,responseCode) {
			markers[id]=new Array();
                        var xml = GXml.parse(data);
			var id=xml.documentElement.getElementsByTagName("name")[0].firstChild.nodeValue;
			var placemarks = xml.documentElement.getElementsByTagName("Placemark");
			for(var i = 0; i < placemarks.length; i++) {
				var point = placemarks[i].getElementsByTagName("Point")[0];
				var coords = point.getElementsByTagName("coordinates")[0].firstChild.nodeValue;
				var lat = point.getElementsByTagName("lat")[0].firstChild.nodeValue;
				var long = point.getElementsByTagName("long")[0].firstChild.nodeValue;
				coords = coords.split(",");

				var description = placemarks[i].getElementsByTagName("description")[0].firstChild.nodeValue;
				
				var point = new GPoint(parseFloat(coords[0]), parseFloat(coords[1]));
				
                                //Je gère dans la suite le traitement du marker suivant le calque
                                if (id=="SELECTED") {
                                          var marker = createMarker(point, description,defaultIcon,coords,lat,long);
                                }
                                else {
                                    if (id!="PANIER") {
				       var marker = createMarker(point, description,icones[id],coords,lat,long);
				    }
				    else {
					var icone=new GIcon(defaultIcon);
					icone.image="/icones/pict_numero" +  (i + 1)  +".png";
					var marker = createMarker(point, description,icone,coords,lat,long);
					
                                        //bounds.extend(new GLatLng(parseFloat(coords[0]), parseFloat(coords[1])));				
				        var name = placemarks[i].getElementsByTagName("name")[0].firstChild.nodeValue;	
                                        
                                        var divobjet=document.getElementById('liste_objets');
                                        divobjet.innerHTML= divobjet.innerHTML +"<div class='oi' ><img src='"+icone.image+"' />" + "<b><a href='javascript:markers[\"PANIER\"]["+ i +"].showMapBlowup()' >" + name + "</a></b>"  + description + "</div>";
				    }
                                }
				//map.addOverlay(marker);
                                markers[id].push(marker);
                                
			}
			affiche(id); 

		        if (id=="SELECTED") {
                               
                               map.setCenter(markers[id][0].getPoint(),10);
                               
                            }
                        
		}
		);
		}
}

function createMarker(point,text,icon, coords,lat,long) {
	var marker = new GMarker( point, icon);
	GEvent.addListener(marker, "click", function() {
	
	var infoTabs = [
		new GInfoWindowTab("Informations", "<div class='infobulle'>"+text+"</div>" ),
		new GInfoWindowTab("GPS", "<div class='infobulle'><input type='hidden' name='' value='' />Coordonnées GPS de cet endroit :<br /><br />latitude :"+lat+"<br />longitude:"+long+"</div>" ),
		new GInfoWindowTab("Itinéraire  :", "<form action='http://maps.google.fr/maps' target='_blank' ><input type='hidden' name='daddr' value='" + point.y +" " +point.x +"' />Adresse de départ :<br /><br /><input type='text' size='40' name='saddr' /><br /><font size='1' >[Ex: \"Avenue de Verdun, 17310 St Pierre d'Oléron\"]</font><br /><input type='submit' name='recherche' value='Calculer'/></form>")
		];
		marker.openInfoWindowTabsHtml(infoTabs);
	});

	return marker;
}