var map = null;
var mgr = null;
var tab_markers = new Array();
var last_zoom = 8;
var custommap = null; // LE TYPE DE CARTE


//////////// INITIALISATION DE LA CARTE ACCUEIL

function init_map_accueil(largeur, hauteur) {
	if (GBrowserIsCompatible()) {
		map_creation_accueil(largeur, hauteur);
		//map.zoomIn();
		//map.setZoom(zoom);
	}
}

//////////// CREATION DE LA CARTE

function map_creation_accueil(largeur, hauteur) {

	map = new GMap2($("#carte").get(0), {size:new GSize(largeur, hauteur)});
	
	map.setCenter(new GLatLng(48.73, 6.037), 14);
	
	
	///////////// ON REDESSINE LA CARTE DE LA LORRAINE

	var copyCollection = new GCopyrightCollection('myLorraine.fr');
	var copyright = new GCopyright(1, new GLatLngBounds(new GLatLng(-90, -180), new GLatLng(90, 180)), 8, "©2010");
	copyCollection.addCopyright(copyright);

	var tilelayers = [new GTileLayer(copyCollection, 8, 17)];
	tilelayers[0].getTileUrl = CustomGetTileUrl;
	custommap = new GMapType(tilelayers, new GMercatorProjection(18), "myLorraine2.fr", {errorMessage:"No chart data available"});

	map.addMapType(custommap);

	
	map.addMapType(G_PHYSICAL_MAP);
	map.addMapType(G_NORMAL_MAP);
	
	GEvent.addListener(map, "moveend", function() {
		var center = map.getCenter();
		
		/////////// ON GERE LA LIMITE DE LA CARTE

		var new_lat = center.lat();
		var new_lng = center.lng();
		
		eval("var limite_carte = tab_limites_carte.z"+map.getZoom());
				
		if(new_lat < limite_carte[1]) new_lat = limite_carte[1];
		else if(new_lat > limite_carte[0]) new_lat = limite_carte[0];

		if(new_lng < limite_carte[2]) new_lng = limite_carte[2];
		else if(new_lng > limite_carte[3]) new_lng = limite_carte[3];
		
		if(new_lat != center.lat() || new_lng != center.lng()) {
			map.panTo(new GLatLng(new_lat, new_lng),map.getZoom());
		}
		
		/////////// APRES UN DEPLACEMENT ON CACHE LE MARKEUR COURANT SI C'EST NECESSAIRE
		
		//window.setTimeout("cache_marqueur_courant()" ,100);
		cache_marqueur_courant();
		affiche_map_type(map.getZoom(),map.getCurrentMapType().getName())

	});

	//////////// APRES UN ZOOM ON CACHE LE MARKEUR COURANT SI C'EST NECESSAIRE
	
	GEvent.addListener(map, 'zoomend', function() {
	
		//window.setTimeout("cache_marqueur_courant()" ,100);
		
		/////////// ON MET LE BON STYLE DE CARTE
		
		if(map.getZoom() < 10) {
			if(last_zoom >= 10) {
				map.setCenter(map.getCenter(), map.getZoom(), custommap); 
			}
		}
		else if(map.getZoom() < 15) {
			if ((last_zoom < 10 ||  last_zoom >= 15) &&  map.getCurrentMapType().getName() != "Mixte") {
				map.setCenter(map.getCenter(), map.getZoom(), G_PHYSICAL_MAP); 
			}
		}
		else if(map.getZoom() < 17) {
			if(last_zoom < 15 && map.getCurrentMapType().getName() != "Mixte"){
				map.setCenter(map.getCenter(), map.getZoom(), G_NORMAL_MAP); 
			}
		}
		else {
			if(map.getCurrentMapType().getName() == "Mixte"){
				map.setCenter(map.getCenter(), map.getZoom(), G_NORMAL_MAP); 
			}
		}
		last_zoom = map.getZoom();
		
	}); 
	
	
	GEvent.addListener(map, 'maptypechanged', function() {
		
		/////////// ON MET LE BON STYLE DE CARTE

		if(map.getZoom() < 10) {
			map.setCenter(map.getCenter(), map.getZoom(), custommap); 
		}
		else {
			if(map.getCurrentMapType().getName() == "Mixte") {
				if(map.getZoom() == 17) {
					map.setCenter(map.getCenter(), map.getZoom(), G_NORMAL_MAP); 
				}
			}
			else if(map.getZoom() >= 15) {
				map.setCenter(map.getCenter(), map.getZoom(), G_NORMAL_MAP); 
			}
			else {
				map.setCenter(map.getCenter(), map.getZoom(), G_PHYSICAL_MAP); 
			}
		}
		
		affiche_map_type(map.getZoom(),map.getCurrentMapType().getName())
		
	}); 
	
	
	/////////// ON RECHERCHE LA VILLE DE L'UTILISATEUR
		
	jQuery(document).ready(function() {
		var location = '-1';
		
		if (google.loader.ClientLocation) {
			var loc = google.loader.ClientLocation;
			location = loc.address.city+','+loc.address.region+","+loc.address.country;
			geo_ville = loc.address.city;
		}
				
		if(location != -1) {
		
			geocoder = new GClientGeocoder();
			geocoder.getLocations(location, function(response) {
				if (!response || response.Status.code != 200) {
					location = -1;
					geo_ville = "";
				} 
				else {
					place = response.Placemark[0];
					
					if(place.AddressDetails.Country.AdministrativeArea.AdministrativeAreaName != "Lorraine") {
						location = -1;
						geo_ville = "";
					}
					else {

						var zoom_addr = 10;
						
						if(typeof(place.AddressDetails.Country.AdministrativeArea.SubAdministrativeArea) != "undefined") {

							if(typeof(place.AddressDetails.Country.AdministrativeArea.SubAdministrativeArea.Locality) != "undefined" && typeof(place.AddressDetails.Country.AdministrativeArea.SubAdministrativeArea.Locality.LocalityName) != "undefined") {
								//////// On a une ville
								zoom_addr = 12;
								
								geocoder.getLatLng(place.address,function(point) {
									if (!point) {
										location = -1;
										geo_ville = "";
										map.setCenter(new GLatLng(48.73, 6.037), 8, custommap);
									} 
									else {
										map.setCenter(point, zoom_addr);
										$("#nom_ville_pres_de_chez_vous").html(geo_ville);
										init_carte_accueil();
									}
								});
							}
						}
						else {
							location = -1;
							geo_ville = "";
							map.setCenter(new GLatLng(48.73, 6.037), 8, custommap);
						}
					}
				}
				
				if(location == -1) {
					map.setCenter(new GLatLng(48.73, 6.037), 8, custommap);
					init_carte_accueil();
				}
			});
		}
		else {
			map.setCenter(new GLatLng(48.73, 6.037), 8, custommap);
			init_carte_accueil();
		}
	});
	
	/*
	map.setCenter(new GLatLng(48.73, 6.037), 8, custommap);
	init_carte_accueil();
	
	var variable = "$tab_taille_zoom_accueil = array(";
	
	for(var i=8;i<18;i++) {
		
		map.setZoom(i);
		var coord = map.getBounds();
		
		coord.getNorthEast().lat();
		coord.getSouthWest();
		
		variable += '"z'+i+'"=>array("hauteur"=>"'+(coord.getNorthEast().lat() - coord.getSouthWest().lat())+'","largeur"=>"'+(coord.getNorthEast().lng() - coord.getSouthWest().lng())+'"),'+"\n";
	}
	alert(variable);
	*/
	
	
	
}

function init_carte_accueil() {

	//window.setTimeout("change_map_type()" ,300);
	
	map.enableScrollWheelZoom();
	map.enableDoubleClickZoom();
	
	
	///////
	
	map.addControl(new YSliderControl());
	map.addControl(new TextualZoomControlIn());
	map.addControl(new TextualZoomControlOut());
	map.addControl(new TextualZoomControlCenter1());
	map.addControl(new TextualZoomControlCenter2());
	map.addControl(new TextualZoomControlCenter3());
	map.addControl(new TextualZoomControlCenter4());
	map.addControl(new TextualZoomControlCenter5());
	map.addControl(new TextualZoomControlCenter6());
	map.addControl(new TextualZoomControlCenter7());
	map.addControl(new TextualZoomControlCenter8());
	map.addControl(new TextualZoomControlCenter9());
	

	map.zoomIn();
	map.zoomOut();

	//////// ON DEFINIT UN MANAGER POUR LES MARQUEURS
	
	mgr = new MarkerManager(map);
	
	affiche_autres_points_carte_accueil();
	
}


function affiche_autres_points_carte_accueil() {

	///////// ON VA AFFICHER LES ARTICLES
	
	var centre_carte = map.getCenter();
	
	var mes_data = "requete=get_articles_accueil";
	mes_data += "&longitude="+centre_carte.lng();
	mes_data += "&latitude="+centre_carte.lat();
	mes_data += "&zoom="+map.getZoom();
	
	$.ajax({
		type: "POST",
		url: "includes/requetes.php",
		data: mes_data,
		success: function(msg){
			eval(msg); 
			put_articles_map(json);
			
			if(json.zoom != map.getZoom()) {
				map.setZoom(Number(json.zoom)); 
			}
			
			if(max_dezoom == '') {
				
				max_dezoom = json.zoom;
				
				//////// ON LIMITE LE ZOOM 
				
				var mapTypes = map.getMapTypes();
				for (var i=0; i<mapTypes.length; i++) {
					mapTypes[i].getMinimumResolution = function() {return max_dezoom;}
					mapTypes[i].getMaximumResolution = function() {return 16;}
				}
			}
		}
	});	
}


//////////// INITIALISATION DE LA CARTE


function init_map(latitude,longitude, zoom, largeur, hauteur) {
	if (GBrowserIsCompatible()) {
		map_creation(latitude,longitude, zoom, largeur, hauteur);
		
		map.zoomIn();
		map.setZoom(zoom);
	}
}


//////////// CREATION DE LA CARTE

function map_creation(latitude, longitude, zoom, largeur, hauteur) {
	map = new GMap2($("#carte").get(0), {size:new GSize(largeur, hauteur)});

	GEvent.addListener(map, "moveend", function() {
		var center = map.getCenter();
		
		/////////// ON GERE LA LIMITE DE LA CARTE

		var new_lat = center.lat();
		var new_lng = center.lng();
		
		eval("var limite_carte = tab_limites_carte.z"+map.getZoom());
		
		if(new_lat < limite_carte[1]) new_lat = limite_carte[1];
		else if(new_lat > limite_carte[0]) new_lat = limite_carte[0];

		if(new_lng < limite_carte[2]) new_lng = limite_carte[2];
		else if(new_lng > limite_carte[3]) new_lng = limite_carte[3];
		
		if(new_lat != center.lat() || new_lng != center.lng()) {
			map.panTo(new GLatLng(new_lat, new_lng),map.getZoom());
		}
		
		/////////// APRES UN DEPLACEMENT ON CACHE LE MARKEUR COURANT SI C'EST NECESSAIRE
		
		//window.setTimeout("cache_marqueur_courant()" ,100);
		cache_marqueur_courant();

	});
	
	
	//////////// APRES UN ZOOM ON CACHE LE MARKEUR COURANT SI C'EST NECESSAIRE
	
	GEvent.addListener(map, 'zoomend', function() {
		window.setTimeout("cache_marqueur_courant()" ,100);
		
		/////////// ON MET LE BON STYLE DE CARTE
		
		if(map.getZoom() < 10) {
			if(last_zoom >= 10) {
				map.setCenter(map.getCenter(), map.getZoom(), custommap); 
			}
		}
		else if(map.getZoom() < 15) {
			if ((last_zoom < 10 ||  last_zoom >= 15) &&  map.getCurrentMapType().getName() != "Mixte") {
				map.setCenter(map.getCenter(), map.getZoom(), G_PHYSICAL_MAP); 
			}
		}
		else if(map.getZoom() < 17) {
			if(last_zoom < 15 && map.getCurrentMapType().getName() != "Mixte"){
				map.setCenter(map.getCenter(), map.getZoom(), G_NORMAL_MAP); 
			}
		}
		else {
			if(map.getCurrentMapType().getName() == "Mixte"){
				map.setCenter(map.getCenter(), map.getZoom(), G_NORMAL_MAP); 
			}
		}
		last_zoom = map.getZoom();
		
		affiche_map_type(map.getZoom(),map.getCurrentMapType().getName())
		
	}); 
	
	GEvent.addListener(map, 'maptypechanged', function() {

		/////////// ON MET LE BON STYLE DE CARTE

		if(map.getZoom() < 10) {
			map.setCenter(map.getCenter(), map.getZoom(), custommap); 
		}
		else {
			if(map.getCurrentMapType().getName() == "Mixte") {
				if(map.getZoom() == 17) {
					map.setCenter(map.getCenter(), map.getZoom(), G_NORMAL_MAP); 
				}
			}
			else if(map.getZoom() >= 15) {
				map.setCenter(map.getCenter(), map.getZoom(), G_NORMAL_MAP); 
			}
			else {
				map.setCenter(map.getCenter(), map.getZoom(), G_PHYSICAL_MAP); 
			}
		}
		
		affiche_map_type(map.getZoom(),map.getCurrentMapType().getName())
		
	}); 
	
	///////////// ON REDESSINE LA CARTE DE LA LORRAINE

	var copyCollection = new GCopyrightCollection('myLorraine.fr');
	var copyright = new GCopyright(1, new GLatLngBounds(new GLatLng(-90, -180), new GLatLng(90, 180)), 8, "©2010");
	copyCollection.addCopyright(copyright);

	var tilelayers = [new GTileLayer(copyCollection, 8, 17)];
	
	tilelayers[0].getTileUrl = CustomGetTileUrl;
	
	custommap = new GMapType(tilelayers, new GMercatorProjection(18), "myLorraine2.fr", {errorMessage:"No chart data available"});
	

	map.addMapType(custommap);
	map.setCenter(new GLatLng(latitude, longitude), zoom, custommap);
	window.setTimeout("change_map_type()" ,300);
		

	map.enableScrollWheelZoom();
	map.enableDoubleClickZoom();
	
	
	///////
	map.addControl(new YSliderControl());
	map.addControl(new TextualZoomControlIn());
	map.addControl(new TextualZoomControlOut());
	map.addControl(new TextualZoomControlCenter1());
	map.addControl(new TextualZoomControlCenter2());
	map.addControl(new TextualZoomControlCenter3());
	map.addControl(new TextualZoomControlCenter4());
	map.addControl(new TextualZoomControlCenter5());
	map.addControl(new TextualZoomControlCenter6());
	map.addControl(new TextualZoomControlCenter7());
	map.addControl(new TextualZoomControlCenter8());
	map.addControl(new TextualZoomControlCenter9());
	
	
	//////// ON LIMITE LE ZOOM à 8/16
	
	var mapTypes = map.getMapTypes();
	for (var i=0; i<mapTypes.length; i++) {
		mapTypes[i].getMinimumResolution = function() {return 8;}
		mapTypes[i].getMaximumResolution = function() {return 16;}
	}

	//////// ON DEFINIT UN MANAGER POUR LES MARQUEURS
	
	mgr = new MarkerManager(map);
	
}



/////////// PERMET DE RECUPERER LA BONNE IMAGE POUR L'AFFICHAGE DE LA CARTE PERSONNALISEE

function CustomGetTileUrl(a,b) {
	var f = "images/maps/"+b+"_"+a.x+"_"+a.y+".jpg";
	return f;
}



////////// PERMET DE CACHER LE MARKER COURANT (utile lorsqu'on affiche la bulle)

function cache_marqueur_courant() {
	if (map.getExtInfoWindow() != null) {
		marker_selected.hide();
	}
}


////////// PERMET DE CHANGER LE TYPE DE CARTE

function change_map_type() {
	if(map.getZoom() < 15 && map.getZoom() > 9) {
		map.setMapType(G_PHYSICAL_MAP);
	}
	else if(map.getZoom() > 14) {
		map.setMapType(G_NORMAL_MAP);
	}
	else {
		map.setMapType(custommap);
	}
}

////////// PERMET D'AFFICHER LE TYPE DE CARTE DESIRE (SATELLITE, MIXTE etc...)

function affiche_map_type(zoom,map_type_name) {

	if((zoom < 10 || zoom == 17) && $("#panneau_map_type").length > 0) {
		$("#panneau_map_type").remove();
	}
	else if(zoom >= 10) {
		if(map_type_name == "Mixte") {
			var texte_panneau = '<a href="/" target="_self" onclick="map.setCenter(map.getCenter(), map.getZoom(), G_NORMAL_MAP); return false">'+tab_libelles["libelle_carte_carte"][langue]+'</a>';
		}
		else {
			var texte_panneau = '<a href="/" target="_self" onclick="map.setCenter(map.getCenter(), map.getZoom(), G_HYBRID_MAP); return false">'+tab_libelles["libelle_carte_satellite"][langue]+'</a>';
		}
		if ($("#panneau_map_type").length > 0) {
			$("#panneau_map_type").html(texte_panneau);
		}
		else {

			if($("#conteneur_carte").length == 1) {
				$("#conteneur_carte").append('<div id="panneau_map_type">'+texte_panneau+'</div>');
			}
			else if($("#conteneur_carte2").length == 1) {
				$("#conteneur_carte2").append('<div id="panneau_map_type">'+texte_panneau+'</div>');
			}
			else if($("#conteneur_carte3").length == 1) {
				$("#conteneur_carte3").append('<div id="panneau_map_type">'+texte_panneau+'</div>');
			}
			else if($("#conteneur_carte4").length == 1) {
				$("#conteneur_carte4").append('<div id="panneau_map_type">'+texte_panneau+'</div>');
			}
		}
	}
}


////////// PERMET D'AFFICHER LE BOUTON A PROXIMITE

function affiche_a_proximite(id_article,latitude,longitude) {
	if($("#conteneur_carte").length == 1) {
		$("#conteneur_carte").append('<div id="panneau_a_proximite"><a href="/" target="_self" onclick="recherche_proximite(\''+id_article+'\',\''+latitude+'\',\''+longitude+'\'); return false">'+tab_libelles["libelle_a_proximite"][langue]+'</a></div>');
	}
}



////////////: FONCTION APPELEE LORSQUE L'UTILISATEUR CLIQUE SUR LE PAVE FLECHE VERT EN HAUT A GAUCHE DE LA CARTE

function bouge_position_map(direction) {

	eval("var distance_ver = tab_hauteur_zoom.z"+map.getZoom()+"/6;");
	eval("var distance_hor = tab_hauteur_zoom.z"+map.getZoom()+"/4;");
	
	var center = map.getCenter();
	var lat = center.lat();
	var lng = center.lng();
	
	if(direction == "top") {
		map.panTo(new GLatLng(lat+distance_ver, lng));
	}
	else if(direction == "left") {
		map.panTo(new GLatLng(lat, lng-distance_hor));
	}
	else if(direction == "right") {
		map.panTo(new GLatLng(lat, lng+distance_hor));
	}
	else if(direction == "down") {
		map.panTo(new GLatLng(lat-distance_ver, lng));
	}
}


////////// ON INITIALISE GOOGLE MAPS LORS D'UN CHARGEMENT D'ARTICLE

function initialize_article(id_article, latitude, longitude, zoom) {
	
	//initialize_flash()
	
	if (GBrowserIsCompatible()) {
		
		map_creation(latitude, longitude, zoom);
		
		place_article_carte(id_article);
		
		/////// ON CHARGE LE BOUTON 'PASSWORD'
		
		change_champ_password(false);
		
		if($("#champ_email").length > 0) {
			champ_email_focus($("#champ_email").get(0), false);
		}
		
		champ_newsletter_focus($("#champ_email_abonnement").get(0), false);		
	}
} 



//////// PERMET D'AFFICHER UN ARTICLE SUR LA CARTE

function affiche_article_map(id_theme, latitude, longitude, zoom, titre_article) {

	var icone_theme = get_icone(id_theme);
	var markerOptions = {title:titre_article.replace(/%22/g,'"'), icon:icone_theme};
	marker_article = new GMarker(new GLatLng(latitude, longitude), markerOptions);
	
	map.addOverlay(marker_article);
	if(map.getZoom() < 17) map.zoomIn();
	else map.zoomOut();
	map.setZoom(zoom);
	
}



function put_auteurs_map (tab_auteurs) {
	
	$("#champ_rechercher").val('');
	mot_recherche = '';
	
	/////////: ON CREE LE TYPE D'ICONE

	var icone_theme = "";
	
	///////////////// ON CREE LE TABLEAU DES MARKERS
	
	tab_markers = new Array();
	
	var trouve_marker_courant = false;
	
	
	for(var i=0;i<tab_auteurs.tab_articles.length;i++) {
		var infos = tab_auteurs.tab_articles[i];
		
		var icone_theme = get_icone("creation");
		markerOptions = { title:infos.titre, icon:icone_theme};
		var marker = new GMarker(new GLatLng(infos.latitude, infos.longitude), markerOptions);
		
		marker.id_auteur = infos.id_auteur;
		marker.id_theme = infos.id_theme;
		marker.min_zoom = infos.min_zoom;
				
		GEvent.addListener(marker, 'click', function() {
		
			/////// ON FERME LA PRECEDENTE BULLE
			if (map.getExtInfoWindow() != null) {
				map.closeExtInfoWindow();
			}
			
			marker_selected = this;
			
			///////// ON INITIALISE LE THEME DE LA BULLE
						
			affiche_bulle();
			
			///////// ON SURLIGNE L'AUTEUR DANS LA LISTE

			unselect_article_liste();
			
			$("#article"+this.id_auteur).removeClass();
			$("#article"+this.id_auteur).addClass("selected");
			$("#article"+this.id_auteur).addClass("li_auteur");

			id_auteur_selected = this.id_auteur;
			
		}); 
		
		////////// ON SAUVEGARDE LE MARKER DANS LE TABLEAU
		
		if(typeof(tab_markers[marker.min_zoom]) == "undefined") {
			tab_markers[marker.min_zoom] = new Array();
		}
		
		///////// ON SAUVEGARDE LE MARKER COURANT
		
		tab_markers[marker.min_zoom].push(marker);
		
	}
	
	
	if (map != null && map.getExtInfoWindow() != null) {
		map.closeExtInfoWindow();
	}

	///////////////// A L'AIDE DU MANAGER, ON AFFICHE LES MARKERS
	
	mgr.clearMarkers();
	for(var i=8;i<tab_markers.length;i++) {
		mgr.addMarkers(tab_markers[i], i) ;
	}
	mgr.refresh();
}

///////// FONCTION PERMETTANT DE PLACER SUR LA CARTE TOUS LES ARTICLES CONTENUS DANS UN TABLEAU RECU EN PARAMETRE


function put_articles_map (tab_articles) {

	$("#champ_rechercher").val('');
	mot_recherche = '';
	
	/////////: ON CREE LE TYPE D'ICONE

	var icone_theme = "";
	
	///////////////// ON CREE LE TABLEAU DES MARKERS
	
	tab_markers = new Array();
	
	var trouve_marker_courant = false;
	
	
	for(var i=0;i<tab_articles.tab_articles.length;i++) {
		var infos = tab_articles.tab_articles[i];
		
		if(id_article_courant == null || id_article_courant != infos.id_article) {
			
			if(typeof (tab_articles.id_theme) != 'undefined'){
				var icone_theme = get_icone(tab_articles.id_theme);
				markerOptions = { title:infos.titre, icon:icone_theme};
				var marker = new GMarker(new GLatLng(infos.latitude, infos.longitude), markerOptions);

			}
			else {

			//if(icone_theme == "") {
				var icone_theme_article = get_icone(infos.id_theme);
				markerOptions = { title:infos.titre, icon:icone_theme_article};
				var marker = new GMarker(new GLatLng(infos.latitude, infos.longitude), markerOptions);
			}
			
			marker.id_article = infos.id_article;
			marker.id_theme = infos.id_theme;
			marker.min_zoom = infos.min_zoom;
			
			GEvent.addListener(marker, 'click', function() {
			
				/////// ON FERME LA PRECEDENTE BULLE
				if (map.getExtInfoWindow() != null) {
					map.closeExtInfoWindow();
				}
			
				marker_selected = this;
				//id_article_courant_map = this.id_article;
				
				///////// ON INITIALISE LE THEME DE LA BULLE
				
				id_theme_bulle_courante = this.id_theme;
				
				affiche_bulle();
				
				///////// ON SURLIGNE L'ARTICLE DANS LA LISTE

				unselect_article_liste();
				
				$("#article"+this.id_article).removeClass();
				$("#article"+this.id_article).addClass("selected");
				$("#article"+this.id_article).addClass("theme"+this.id_theme);

				id_article_selected = this.id_article;
				
			}); 

		
			////////// ON SAUVEGARDE LE MARKER DANS LE TABLEAU
			
			if(typeof(tab_markers[marker.min_zoom]) == "undefined") {
				tab_markers[marker.min_zoom] = new Array();
			}

			tab_markers[marker.min_zoom].push(marker);
			
			///////// ON SAUVEGARDE LE MARKER COURANT
		}
	}
	
	
	if (map != null && map.getExtInfoWindow() != null) {
		map.closeExtInfoWindow();
	}
		
	
	///////////////// A L'AIDE DU MANAGER, ON AFFICHE LES MARKERS
	
	mgr.clearMarkers();
	for(var i=8;i<tab_markers.length;i++) {
		mgr.addMarkers(tab_markers[i], i) ;
	}
	mgr.refresh();

}

///////// FONCTION PERMETTANT DE DESELECTIONNER UN ARTICLE PRECEDEMMENT SELECTIONNE A PARTIR DE LA CARTE

function unselect_article_liste() {

	if(type_icones_page == "articles") {
		if(id_article_selected != "") {
			$("#article"+id_article_selected).toggleClass("selected");
			id_article_selected = "";
			marker_selected = null;
		}
	}
	else {

		if(id_auteur_selected != "") {
			$("#article"+id_auteur_selected).toggleClass("selected");
			id_auteur_selected = "";
			marker_selected = null;
		}
	}
}


///////// POUR CREER UNE ICONE

function get_icone(id_theme) {//, type_icone) {
	
	var icone_theme = new GIcon();
		
	icone_theme.iconSize=new GSize(22,45);
	icone_theme.shadowSize=new GSize(44,45);

	icone_theme.iconAnchor=new GPoint(16,45);
	icone_theme.infoWindowAnchor=new GPoint(8,45);
		
	if(id_theme != "creation") {
		icone_theme.image = "images/icones_theme/"+id_theme+".png";
		icone_theme.shadow = "images/icones_theme/ombre_picto.png";
	}
	else {
		icone_theme.image = "images/icone_placement.png";
		icone_theme.shadow = "images/ombre_placement.png";
	}
	return icone_theme
}

function affiche_bulle_liste_article(id_article) {
	
	unselect_article_liste();
	
	for(var i=0;i<tab_markers[8].length;i++) {
		
		if(type_icones_page == "articles") {
			
			if(tab_markers[8][i].id_article == id_article) {
				marker_selected = tab_markers[8][i];
				id_theme_bulle_courante = marker_selected.id_theme;
				break;
			}
		}
		else {
			if(tab_markers[8][i].id_auteur == id_article) {
				marker_selected = tab_markers[8][i];
				id_theme_bulle_courante = marker_selected.id_theme;
				break;
			}
		}
	}
	
	affiche_bulle();
	
	///////// ON SURLIGNE L'ARTICLE DANS LA LISTE
	
	if(type_icones_page == "articles") {
		
		$("#article"+marker_selected.id_article).removeClass();
		$("#article"+marker_selected.id_article).addClass("selected");
		$("#article"+marker_selected.id_article).addClass("theme"+id_theme_bulle_courante);
		
		id_article_selected = marker_selected.id_article;
	}
	else {
		
		$("#article"+marker_selected.id_auteur).removeClass();
		$("#article"+marker_selected.id_auteur).addClass("selected");
		$("#article"+marker_selected.id_auteur).addClass("li_auteur");
		
		id_auteur_selected = marker_selected.id_auteur;
	}
}


///////// POUR AFFICHER UNE BULLE

function affiche_bulle() {

	mon_marker = marker_selected;
	marker_selected.hide();

	if(type_icones_page == "articles") {
		
		mon_marker.openExtInfoWindow(
		  map,
		  "bulleinfo_theme"+id_theme_bulle_courante,
		  "<p>"+tab_libelles["libelle_chargement"][langue]+"...</p>",
		  {
			ajaxUrl: "includes/requetes.php", 
			ajaxParam : "requete=get_infos_article_bulle&id_article="+mon_marker.id_article,
			paddingY : 5,
			beakOffset: 5
		  }
		);
	}
	else {
		mon_marker.openExtInfoWindow(
		  map,
		  "bulleinfo_theme11",
		  "<p>"+tab_libelles["libelle_chargement"][langue]+"...</p>",
		  {
			ajaxUrl: "includes/requetes.php", 
			ajaxParam : "requete=get_infos_auteur_bulle&id_auteur="+mon_marker.id_auteur,
			paddingY : 5,
			beakOffset: 5
		  }
		);
	}
}



//////////////////// CREATION D'UN ARTICLE : PLACEMENT SUR LA CARTE

function deplacement_article(lat,lng,zoom) {
	
	is_creation_marker = true;
	
	////// ON SUPPRIME TOUS LES MARKEURS 
	
	var doc = {"tab_articles":[]};
	put_articles_map(doc);
	
	////////////////// SI ON MODIFIE UN ARTICLE
	
	//if(id_article_modif != null) {
	if(lat != '' && lat != '0') {
		
		var suivre_curseur = false;
		var noMore = true;
		
		var icone_marker = get_icone("creation",1);
		var markerOptions = { icon:icone_marker,draggable:true, autoPan:false};
		marker_creation = new GMarker(new GLatLng(lat, lng), markerOptions);
		marker_creation.is_position = true;
		
		map.addOverlay(marker_creation);
		map.setZoom(Number(zoom));
		map.setCenter(new GLatLng(lat, lng));
		
	}
	else {
	
		//////////////////// SI ON AJOUTE UN NOUVEL ARTICLE
	
		var suivre_curseur = true;
		var noMore = false;
		
		mouseMove_creation = GEvent.addListener(map, 'mousemove', function(cursorPoint){
			if(!noMore){
			
				var icone_marker = get_icone("creation",1);
				var markerOptions = { icon:icone_marker,draggable:true, autoPan:false};
				marker_creation = new GMarker(cursorPoint, markerOptions);
				marker_creation.is_position = false;
				
				map.addOverlay(marker_creation);
				noMore = true;

				/*
				GEvent.addListener(marker_creation, 'drag', function(markerPoint){
					/*
					if(!map.getBounds().containsLatLng(markerPoint)){
						map.removeOverlay(marker_creation);
					}
					*//*
				});	
				*/
			}
			if(suivre_curseur){
				marker_creation.setLatLng(cursorPoint);
			}
		});
	}

	
	mapClick_creation = GEvent.addListener(map, 'click', function(overlay, latlng,overlaylatlng){
		
		//if(id_article_modif == null) {
		if(lat == '' || lat == '0') {
			GEvent.removeListener(mouseMove_creation);
		}
		
		if(typeof(latlng) == "undefined") {
			marker_creation.setLatLng(overlaylatlng);
			if(map.getZoom() < 14 && marker_creation.is_position == false) {
				map.setCenter(overlaylatlng,14);
			}
		}
		else {
			marker_creation.setLatLng(latlng);
			if(map.getZoom() < 14 && marker_creation.is_position == false) {
				map.setCenter(latlng,14);
			}
		}
		
		suivre_curseur = false;
		marker_creation.is_position = true;
		
	});
}



/////////// LORS DE L'APPUIE SUR LA TOUCHE ENTRE

function appuie_touche_adresse(e) {
	if(window.event) {// IE
		keynum = e.keyCode;
	}
	else if(e.which) {// Netscape/Firefox/Opera
		keynum = e.which;
	}
	if(keynum == 13) {
		chercher_adresse_carte();
	}
}

////////// LORSQU'ON CHERCHE UNE ADRESSE LORS DU PLACEMENT D'UN NOUVEL ARTICLE

function chercher_adresse_carte() {
	
	geocoder = new GClientGeocoder();
	
	if($.trim($("#champ_recherche_adresse").val()) == "" || $.trim($("#champ_recherche_adresse").val()) == "Adresse, ville") {
		alert_mylorraine(tab_libelles["libelle_entrer_adresse"][langue]);
		return -1;
	}
	
	geocoder.getLocations($("#champ_recherche_adresse").val()+", Lorraine, France", function(response) {
		if (!response || response.Status.code != 200) {
			alert_mylorraine(tab_libelles["libelle_adresse_pas_trouvee"][langue]);
		} 
		else {
			place = response.Placemark[0];
			
			if(place.AddressDetails.Country.AdministrativeArea.AdministrativeAreaName != "Lorraine") {
				alert_mylorraine(tab_libelles["libelle_adresse_pas_trouvee"][langue]);
			}
			else {

				var zoom_addr = 10;
				
				if(typeof(place.AddressDetails.Country.AdministrativeArea.SubAdministrativeArea) != "undefined") {

					if(typeof(place.AddressDetails.Country.AdministrativeArea.SubAdministrativeArea.Locality) != "undefined" && typeof(place.AddressDetails.Country.AdministrativeArea.SubAdministrativeArea.Locality.LocalityName) != "undefined") {
					
						//////// On a une ville
					
						zoom_addr = 12;
						
						if(typeof(place.AddressDetails.Country.AdministrativeArea.SubAdministrativeArea.Locality.Thoroughfare) != "undefined") {
							
							//////// On a un nom de rue
							
							zoom_addr = 15;
							
							var temp = place.AddressDetails.Country.AdministrativeArea.SubAdministrativeArea.Locality.Thoroughfare.ThoroughfareName.split(/ /g,2);
							if(!isNaN(temp[0])) {
								
								//////// On a un numéro de rue
								
								zoom_addr = 17;
							}
						}
					}
				}
				
				$("#champ_recherche_adresse").val(place.address);				
				
				geocoder.getLatLng(place.address,function(point) {
						if (!point) {
							alert_mylorraine(tab_libelles["libelle_adresse_pas_trouvee"][langue]);
						} 
						else {
						
							if(zoom_addr > 15) {
								
								map.setCenter(point, zoom_addr, G_NORMAL_MAP);
								
								if(zoom_addr == 17) {
							
									suivre_curseur = false;
									
									GEvent.removeListener(mouseMove_creation);
									
									if(marker_creation == null) {
										var icone_marker = get_icone("creation",1);
										var markerOptions = { icon:icone_marker,draggable:true, autoPan:false};
										marker_creation = new GMarker(point, markerOptions);
										
										map.addOverlay(marker_creation);
										noMore = true;
									}
									
									marker_creation.setLatLng(point);
									marker_creation.is_position = true;
								}
							}
							else {
								map.setCenter(point, zoom_addr);
							}
						}
					}
				);
			}
		}
	});
}


/////////////////// PERMET D'AFFICHER UNE LISTE D'ARTICLES AUTOUR DU MARQUEUR ACTUEL

function recherche_proximite(id_article, latitude, longitude) {
	
	if(is_prox == 0) {
	
		var mes_data = "requete=get_proximite";
		mes_data += "&id_article="+id_article;
		mes_data += "&latitude="+latitude;
		mes_data += "&longitude="+longitude;
		mes_data += "&zoom="+map.getZoom();
		
		$.ajax({
			type: "POST",
			url: "includes/requetes.php",
			data: mes_data,
			success: function(msg){

				marker_article.setImage("images/icone_placement.png");
				
				if (map.getExtInfoWindow() != null) {
					map.closeExtInfoWindow();
				}
				
				var doc = eval('(' + msg + ')'); 

				if(typeof (doc.zoom) != 'undefined'){

					map.setZoom(Number(doc.zoom));

				}
				put_articles_map(doc);
			}
		});
		is_prox = 1;
	}
	else {
		mgr.clearMarkers();
		mgr.refresh();
		is_prox = 0;
		
		marker_article.setImage("images/icones_theme/"+id_theme_article_courant+".png");
		
	}
}



/*




//////////////////// VALIDATION DE FICHIERS POUR LA PARTICIPATION A UN CONCOURS

function valider_upload_concours() {
	if(desactive_upload_concours == false) {
		message_erreur = "";
		
		valider_champ("champ_prenom","prénom","string");
		valider_champ("champ_nom","nom","string");
		valider_champ("champ_adresse","adresse","string");
		valider_champ("champ_code_postal","code postal","string");
		valider_champ("champ_ville","ville","string");
		
		if(message_erreur != "") {
			alert_mylorraine(message_erreur);
			return false;
		}
		else {
			getFlashMovie("panneau_uploader_concours").goupload();
		}
	}
}


//////////////////// FONCTION APPELLEE LORS DE L'UPLOAD DE FICHIERS POUR LA PARTICIPATION A UN CONCOURS

function Upload_Finished_concours(nb_fichiers) {
	
	desactive_upload_concours = true;
	
	var mes_data = "requete=maj_concours&champ_prenom="+$("#champ_prenom").val()+"&champ_nom="+$("#champ_nom").val()+"&champ_adresse="+$("#champ_adresse").val()+"&champ_code_postal="+$("#champ_code_postal").val()+"&champ_ville="+$("#champ_ville").val();
	mes_data += "&nb_fichiers="+nb_fichiers;
	$.ajax({
		type: "POST",
		url: "includes/requetes.php",
		data: mes_data,
		success: function(msg){
			if(msg == "ok") {
				var str = "";
				
				str += '<div id="panneau_creation_article_infos">';
				str += '<div id="conteneur_fond_confirmation_creation_article">';
				str += '	<div id="div_bouton_retour_carte_blanche" class="texte_brun">';
				str += '	<a tabindex="10" href="index.php" target="_self" onclick="retour_carte(); return false;"><img id="bouton_fleche_retour5" src="images/blank.gif" width="26" height="17" border="0" alt="retour à la carte" title="retour à la carte"></a>';
				str += '	</div>';
				str += '	<div id="panneau_texte_confirmation_creation_article" class="texte_blanc">';
				str += "		<h1>Votre participation est enregistrée</h1><p>Merci d'avoir participé et rendez-vous en octobre pour les résultats.</p>";
				str += '	</div>';
				str += '</div>';
				str += '</div>';
				
				$("#panneau_creation_article_infos").replaceWith(str)
			}
			else alert_mylorraine("erreur : "+msg)
		}
	});

}  

*/