//cONTIENt le parametrage et les fonctions de la carto
var markers= new Array(); //Contiendra les markers affichï¿½ sur la carte
var defaultIcon= G_DEFAULT_ICON;

var markersPage = new Array();

var map;
var geocoder;

function load(latitude, longitude, zoom) {
	uncheckall(); //DÃcoche toutes les cases en cas de reload
	if (GBrowserIsCompatible()) {
		
		/*Pour imprimer sous FF */
		var _mFlags = {"doContinuousZoom":true,"doScrollWheelZoom":true,"enableOverviewMap":true,"doDoubleClickZoom":true,"fixVmlPrinting":true,"enableWaypointDragging":true};

		map = new GMap2(document.getElementById("map"));
		
		geocoder = new GClientGeocoder();
		
		//Position par default 
		if (typeof(longitude)=='undefined') {
			longitude=-0.34;
		}
		if (typeof(latitude)=='undefined') {
			latitude=46.15;
		}
		if (typeof(zoom)=='undefined') {
			/*if(typeof($(".map #map").attr("id")) == "undefined")
				zoom=8;
			else*/
				zoom=7;
		}
		map.setCenter(new GLatLng(latitude, longitude), zoom);
		/*if(typeof($(".map #map").attr("id")) == "undefined")
			map.addControl(new GLargeMapControl());
		// map.addControl(new GMapTypeControl());*/
        map.enableContinuousZoom();
		
		for( var i = 0; i < markersPage.length ; i++ ){
			map.addOverlay(markersPage[i]);
		}

/***
Poser le point au centre si c'est une demande externe
*/

/*if (typeof(putpoint)!='undefined') {
                        
                        map.addOverlay(createMarker(new GPoint(longitude,latitude),"",defaultIcon));
}
	//Précochage
	
	for(i=0;i<a_cocher.length;i++) {
		var node=document.getElementById(a_cocher[i]);
		
		node.checked=true;
		calque_check(node);
                unfoldgroup(a_cocher[i]);
	}*/	

	}
}


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].length==0) {
			markers[id] = new Array();
			//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]);
		}	
}

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=="SELECTED"){
		var marker = createMarker(new GPoint(liste_calques[id]["tab"][0][0],liste_calques[id]["tab"][0][1]), liste_calques[id]["desc"][0], defaultIcon);
		markers[id].push(marker);
	}else if (id=="PANIER"){
		for(var i = 0; i < liste_calques[id]["tab"].length; i++) {
			var icone=new GIcon(defaultIcon);
			icone.image="/design/acw/images/map_icons/charte_cdt16/pict_numero" +  (i + 1)  +".png";
			var marker = createMarker(new GPoint(liste_calques[id]["tab"][i][0],liste_calques[id]["tab"][i][1]), liste_calques[id]["desc"][i],icone);
			markers[id].push(marker);
		}
	} else 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);
                        // OULAH ! Attention cet id n'est pas élément
                        //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;
				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);
					}
					else {
						if (id!="PANIER") {
				       		var marker = createMarker(point, description,icones[id]);
				    }
				    else {
					var icone=new GIcon(defaultIcon);
					icone.image="/map_icons/charte_cdt16/pict_numero" +  (i + 1)  +".png";
					var marker = createMarker(point, description,icone);
					
                                        //bounds.extend(new GLatLng(parseFloat(coords[0]), parseFloat(coords[1])));				
				        var name = placemarks[i].getElementsByTagName("name")[0].firstChild.nodeValue;	
                                        //Je vais abonder la liste d'objets
                                        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); //Comme je suis asynchrone, je refait un affichage a la fin du download

		        if (id=="SELECTED") {
                               
                               map.setCenter(markers[id][0].getPoint(),10);
                                //Celui la ouvrait le zoom dans une bulle sur le point selectionne
                                //markers[id][0].showMapBlowup();
                                //map.savePosition();
                            }
                        
		}
		);
		}
}

function ajouterOffice(id,lon,lat,desc){
	liste_calques[id]["tab"].push([lon,lat]);
	liste_calques[id]["desc"].push(desc);
}

function createMarker(point,text,icon) {
	var marker = new GMarker( point, icon);
	GEvent.addListener(marker, "click", function() {
	var infoTabs = new Array();
        
		if (text!='') infoTabs.push(new GInfoWindowTab("Infos", "<div class='infobulle'>"+text+"</div>" ));
		infoTabs.push(new GInfoWindowTab("Y aller  :", "<form action='http://maps.google.fr/maps' target='_blank' ><input type='hidden' name='daddr' value='" + point.y +" " +point.x +"' />Adresse de d&eacute;part :<br /><br /><input type='text' size='40' name='saddr' /><br /><font size='2' >[Ex: \"21 rue d'I&eacute;na, 79000 Niort\"]</font><br /><input type='submit' name='recherche' value=\"Calculer l'itin&eacute;raire\" /></form>"));
		marker.openInfoWindowTabsHtml(infoTabs);
	});

	return marker;
}

function createMarkerWithoutTab(point,text,icon) {
	var marker = new GMarker( point, icon);
	GEvent.addListener(marker, "click", function() {
		texte = text;
		marker.openInfoWindowHtml(texte);
	});

	return marker;
}

function createMarkerOpen(point,text,icon) {
	var marker = new GMarker( point, icon);
	texte = text;
	marker.openInfoWindowHtml(texte);
	return marker;
}

function openInfo(marker){
	marker['marker'].openInfoWindowHtml(marker['text']);
	return marker;
}

/*Decoche toutes les cases, notement en cas de reload de la carte
*/
function uncheckall() {
   
   if (document.getElementById('liste_calques') != null) {
   var checkboxes = document.getElementById('liste_calques').getElementsByTagName('input');
     for (var i=0;i<checkboxes.length;i++) {
	    if(checkboxes[i].type == 'checkbox')  {
		       checkboxes[i].checked = false;
	     }
     }
   }      
   return true;

  }



//S'assure du depliage du groupe du calque donné
function unfoldgroup(calque_id) {
        node=document.getElementById(calque_id).parentNode;
        orig=document.getElementById(calque_id).parentNode;
        while (node.nodeName!="UL") {
                node=node.parentNode;
        }

        id=node.id;

        while (node.nodeName!="LI") {
                node=node.parentNode;
        }

        id_groupe=node.id;

        //Affichage de folie

	ele=document.getElementById(id_groupe);

        ele.className=ele.className.split(' ')[0];
         
        Effect.BlindDown(id, {duration:1}); 

        Effect.Pulsate(orig, {duration:10});
        

}

/* Gestion du pliage depliage des groupes */
/***
*Plie ou deplie un groupe
*/
function toggle_groupe(id, id_groupe) {

	ele=document.getElementById(id_groupe);

	if (document.getElementById(id).style.display=="none") {
		Effect.BlindDown(id, { duration: 1.0 });
		ele.className=ele.className.split(' ')[0];
       } else {
		
		Effect.BlindUp(id, { duration: 1.0 });
		ele.className += " folded";	
	}

}


