//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 nb_charge = 8;

var map;

function load() {
	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"));
		
		//Position par default 
		if (typeof(longitude)=='undefined') {
			longitude=-0.34;
		}
		if (typeof(latitude)=='undefined') {
			latitude=46.15;
		}
		if (typeof(zoom)=='undefined') {
			zoom=7;
		}
		map.setCenter(new GLatLng(latitude, longitude), zoom);
		map.addControl(new GLargeMapControl());
		map.addControl(new GMapTypeControl());
        map.enableContinuousZoom();
		// map.enableScrollWheelZoom();
		
		map.addOverlay(new GGeoXml("http://www.poitou-charentes-vacances.com/design/crt/kml/poitoucharente.kml"));
		


/***
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]) {
		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]);
		}	
	}	
}

function efface(id) {
	//Effacer les markers du calque
	if( id == "GITE" ){
		for(var ncharge2 = 0; ncharge2 < nb_charge ; ncharge2++) {
			effaceGite(id, ncharge2);	
		}
	}else{
		for (var i = 0; i <markers[id].length; i++) {
			map.removeOverlay(markers[id][i]);
		}
	}
}

function effaceGite(id, ncharge2){
	$('body').delay(ncharge2*100).queue(function(){
		for (var i = 0; i <markers[id+ncharge2].length; i++) {
			map.removeOverlay(markers[id+ncharge2][i]);
		}
		$(this).dequeue();
	});
}


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 {		
		if( id == "GITE" ){
			for(var ncharge = 0; ncharge < nb_charge ; ncharge++) {
				
				afficheCalqueGite(id, ncharge);
				//setTimeout ( "afficheCalque('"+liste_calques[id]['url']+"?limit="+ncharge+"&part="+nb_charge+"', '"+id+ncharge+"')", ncharge*10000 );
			}
		}else{
			afficheCalque(liste_calques[id]["url"], id, "");
		}
	}
}

function afficheCalqueGite(id, ncharge){
	$('body').delay(ncharge*100).queue(function(){
		afficheCalque(liste_calques[id]['url']+"?limit="+ncharge+"&part="+nb_charge, id, ncharge);
		$(this).dequeue();
	});
}

function afficheCalque(url_calque, name_select, ncharge){
	var id = name_select+ncharge;

	GDownloadUrl(url_calque, 
		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

				var marker = createMarker(point, description,icones[name_select]);

				//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";	
	}

}


