/**
 * @author apellet
 */


/**
 * Méthode qui initialise l'application lorsqu'elle est executée en tant que module externe.
 * C'est une association.
 * @param {Object} code_struct le a_code
 */
/*
function loadMapAsso ( code_struct )
{
	
		
	var map_center = new GLatLng (46.72480037466717,2.04345703125);	

	//Création des icons des associations.
	createIconAssoc ();
	
	//Affectation de la taille du conteneur
	jQuery("#map").css("width", cust_map_width);
	jQuery("#map").css("height", cust_map_height);
	jQuery("#all_map").css("width", cust_map_width);
	jQuery("#block_full_map").css("width", cust_map_width);
	
							
	//Creation de la carte
	map = new GMap2(document.getElementById("map"));		
	map.setCenter ( map_center, 6 );						
	map.enableScrollWheelZoom ();
	
	//Création du gif ed chargement
	loading = new Loading ( {w:200,h:200} );
	loading.start ();
	
	//Ajout des controles
	//Type de carte
	jQuery('#maptypecontrol').gmap_type( {  
			map: map,  
			types: [0,1,2,3],
			type:1,
			f_size:10
		});
	
	//Bouton FullScreen
	
	
	//Barre de zoom
	jQuery('#mapzoomcontrol').gmap_zoom( {  
			map: map,
			b_center:true,
			size : 25,
			prefix_path:'',
			rep_img:'./styles/controls/images/'
		});
	
	
	//Barre d'echelle
	map.addControl ( new GScaleControl()  );
	
	
	
	//Initialisation des layers
	initLayerAssoc ();
	
	//Initialisation des templates
	initTemplates ();
	
	//Chargement des listes du moteur de recherche
	//loadListeActivite ();
	
	//Chargement de l'association
	loadOneAsso ( code_struct );
	
	jQuery("#moteur-recherche").css ('display', 'none');
	jQuery("#list-result").css ('display', 'none');
}*/


/**
 * Méthode qui initialise l'application lorsqu'elle est executée en tant que module externe.
 * C'est une association.
 * @param {Object} code_struct le numéro de département
 */
function loadMapDep ( code_struct )
{
	/*Les coordonnées du centre de la carte au chargement*/						
	var map_center = new GLatLng (46.72480037466717,2.04345703125);	

	//Création des icons des associations.
	//createIconAssoc ();
	createIconActeur ();
	createIconAdresse (),
	
	//Affectation de la taille du conteneur
	jQuery("#map").css("width", cust_map_width);
	jQuery("#map").css("height", cust_map_height);
	jQuery("#all_map").css("width", cust_map_width);
	jQuery("#block_full_map").css("width", cust_map_width);
	
	
	//Creation de la carte
	map = new GMap2(document.getElementById("map"));		
	map.setCenter ( map_center, 6 );						
	map.enableScrollWheelZoom ();
	
	//Création du gif ed chargement
	loading = new Loading ( {w:200,h:200} );
	loading.start ();
	
	//Ajout des controles
	//Type de carte
	jQuery('#maptypecontrol').gmap_type( {  
			map: map,  
			types: [0,1,2,3],
			type:1,
			f_size:10
		});
	
	//Bouton FullScreen
	/*jQuery('#mapfullscreen').gmap_fullscreen( {  
		map: map,  
		block_map: 'map',
		block_parent:'all_map'
		
	});*/
	
	//Barre de zoom
	jQuery('#mapzoomcontrol').gmap_zoom( {  
			map: map,
			b_center:true,
			size : 25,
			prefix_path:'',
			rep_img:'./styles/controls/images/'
		});
	
	//Legende active 
	if ( show_legende == 1 )
	{
		map.addControl ( new LegendControl(map, createJsonLegend ()  ) );
		jQuery("#chk_legende").click();
	}
	
	//Barre d'echelle
	map.addControl ( new GScaleControl()  );
	
	
	//Initialisation des layers
	initLayerAssoc ();
	
	
	//Initialisation des templates
	initTemplates ();
	
	//Chargement des listes du moteur de recherche
	//loadListeActivite ();
	
	loadDepartement ( code_struct );
	
	
	//Affichage ou non de la liste de résultat
	if ( show_liste_resultat == 0 )
	{
		jQuery("#list-result").css ('display', 'none' );
	}
	
	//Chargement des listes du moteur de recherche
	loadListMission ();
	
	
}


/**
 * Méthode qui initialise l'application lorsqu'elle est executée en tant que module externe.
 * C'est une region.
 * @param {Object} code_struct l'identifiant de la région dans la BDD.
 */
function loadMapReg ( code_struct )
{
	/*Les coordonnées du centre de la carte au chargement*/						
	var map_center = new GLatLng (46.72480037466717,2.04345703125);	

	//Création des icons des associations.
	//createIconAssoc ();
	createIconActeur ();
	createIconAdresse ();
	
	//Affectation de la taille du conteneur
	jQuery("#map").css("width", cust_map_width);
	jQuery("#map").css("height", cust_map_height);
	jQuery("#all_map").css("width", cust_map_width);
	jQuery("#block_full_map").css("width", cust_map_width);
	
	
	//Creation de la carte
	map = new GMap2(document.getElementById("map"));		
	map.setCenter ( map_center, 6 );						
	map.enableScrollWheelZoom ();
	
	//Création du gif ed chargement
	loading = new Loading ( {w:200,h:200} );
	loading.start ();
	
	//Ajout des controles
	//Type de carte
	jQuery('#maptypecontrol').gmap_type( {  
			map: map,  
			types: [0,1,2,3],
			type:1,
			f_size:10
		});
	
	//Bouton FullScreen
	/*jQuery('#mapfullscreen').gmap_fullscreen( {  
		map: map,  
		block_map: 'map',
		block_parent:'all_map'
		
	});*/
	
	//Barre de zoom
	jQuery('#mapzoomcontrol').gmap_zoom( {  
			map: map,
			b_center:true,
			size : 25,
			prefix_path:'',
			rep_img:'./styles/controls/images/'
		});
	
	//Legende active
	if ( show_legende == 1 )
	{
		map.addControl ( new LegendControl(map, createJsonLegend ()  ) );
		jQuery("#chk_legende").click();
	}
	
	//Barre d'echelle
	map.addControl ( new GScaleControl()  );
	
	//Initialisation des layers
	initLayerAssoc ();
	
	//Initialisation des templates
	initTemplates ();
	
	//Chargement des listes du moteur de recherche
	//loadListeActivite ();
	
	//Affichage ou non de la liste de résultat
	if ( show_liste_resultat == 0 )
	{
		jQuery("#list-result").css ('display', 'none' );
	}
	
	//Chargement de l'emprise de la région
	loadRegion ( code_struct );
	
	//Chargement de la liste des départements de la région
	fillSelectDepartement ( code_struct );
	
	//Chargement des listes du moteur de recherche
	loadListMission ();
}

/**
 * Méthode qui charge une association par son code
 * et l'affiche au centre de la carte.
 */
/*
function loadOneAsso ( a_code )
{
	var data = {a_code:a_code, year:new Date().getFullYear()};
	var asso_res = {};
	var cpt = 0;
	var lat = 0;
	var lng = 0;
	
	jQuery.ajax({
            type: "POST",
            url: "./php/loadOneAsso.php",
            data: data,
			dataType:'xml',
            success: function(xml)
			{
				jQuery(xml).find("asso").each ( function()
				{
					readXmlAsso ( this, asso_res);
					lat = jQuery(this).attr ('lat');
					lng = jQuery(this).attr ('lng');
					cpt++;					
				});
				loading.stop();
				
				//Appel de la fonction de rendu
				//console.log(layer_dep.get ( dep ).getLatLng());
				drawAssociation ( asso_res, new GLatLng ( lat, lng ), true );
				
				
				//Appel de la fonction de mise à jour de la liste des résultats
				drawListeResultat ( asso_res, cpt );
            },
			error:function (XMLHttpRequest, textStatus, errorThrown)
			{
				alert(textStatus); 
			}
        });
}
*/


/**
 * Méthode qui charge pour le departement :
 * l'emprise
 * le libellé
 * @param {String} dep le numero du departement dans la BDD.
 */
function loadDepartement ( dep )
{
	var data = {dep:dep};
	var south_west = null;
	var north_east = null;
	var lib = "";
	var deps = "";
	var bounds = null;
	
	jQuery.ajax({
            type: "POST",
            url: "./php/__load_departement_mutualise.php",
            data: data,
			dataType:'xml',
            success: function(xml)
			{
				var _lat,_lng;
				jQuery(xml).find("dep").each ( function()
				{
					//south_west = jQuery(this).attr ('south_west');
					//north_east = jQuery(this).attr ('north_east');
					id = jQuery(this).attr ('id');
					num = jQuery(this).attr ('num');
					lib = jQuery(this).attr ('lib');
					id_region = jQuery(this).attr ('id_region');
					
					
					//Remplissage de la liste des départements
					obj_dep = new Object ();
					obj_dep [jQuery(this).attr ('num')] = {
							lib : jQuery(this).attr ('lib'),
							num : jQuery(this).attr ('num')
						}
						
				
					obj_reg = new Object ();
					obj_reg[id_region] = {lib:id_region, 
									liste_dep:num};
									
									
					/*Remplissage de la liste des regions*/
					fillSelectRegion();
					try {
						
						jQuery('#list_region option[@value='+id_region+']').attr("selected", "selected");
					}catch(error){}
					jQuery ('#filtre_reg').css('display', 'none');
					
					//Remplissage de la liste des departements
					jQuery('#list_departement').append(jQuery("<option></option>").attr("value",id).text(lib));
					try {
						
						jQuery('#list_departement option[@value='+id+']').attr("selected", "selected");
					}catch(error){}
					jQuery ('#filtre_dep').css('display', 'none');
					
					
					_lat = parseFloat ( jQuery(this).attr ('center_lat') );
					_lng = parseFloat ( jQuery(this).attr ('center_lng') );
				});
				loading.stop();
				
				/*south_west = south_west.split(",");
				north_east = north_east.split(",");
				bounds = new GLatLngBounds( new GLatLng (parseFloat(south_west[0]), parseFloat(south_west[1]) ) , 
											new GLatLng (parseFloat(north_east[0]), parseFloat(north_east[1]) ) );*/
				
				//Definition du filtre pour le géocodeur
				filtre_geocoder = lib;
				
				//Recentrage de la carte
				map.setCenter ( new GLatLng ( _lat, _lng ), 8 );
				map.savePosition();
				
				
				loadActeurFromDep ( num, true, -1 );
				
            },
			error:function (XMLHttpRequest, textStatus, errorThrown)
			{
				alert(textStatus); 
			}
        });
}



/**
 * Méthode qui charge pour la région :
 * l'emprise
 * le libellé
 * la liste des départements 
 * @param {Object} reg l'identifiant de la région dans la BDD.
 */
function loadRegion ( reg )
{
	var data = {reg:reg};
	var south_west = null;
	var north_east = null;
	var lib = "";
	var deps = "";
	var bounds = null;
	
	jQuery.ajax({
            type: "POST",
            url: "./php/__load_region_mutualise.php",
            data: data,
			dataType:'xml',
            success: function(xml)
			{
				jQuery(xml).find("reg").each ( function()
				{
					south_west = jQuery(this).attr ('south_west');
					north_east = jQuery(this).attr ('north_east');
					lib = jQuery(this).attr ('lib');
					
					
					
					//Remplissage de la liste des départements
					obj_dep = new Object ();
					jQuery(this).find("dep").each ( function ()
					{
						obj_dep [jQuery(this).attr ('num')] = {
							lib : jQuery(this).attr ('lib'),
							num : jQuery(this).attr ('num')
						}
						
						deps += jQuery(this).attr ('num') + ",";					
					});
					
					obj_reg = new Object ();
					obj_reg[reg] = {lib:lib, 
									liste_dep:deps.substring( 0, deps.length-1)};
									
									
					/*Remplissage de la liste des regions*/
					fillSelectRegion();
					try {
						
						jQuery('#list_region option[@value='+reg+']').attr("selected", "selected");
					}catch(error){}
					jQuery ('#filtre_reg').css('display', 'none');
					
					
					
					
				});
				loading.stop();
				
				south_west = south_west.split(",");
				north_east = north_east.split(",");
				bounds = new GLatLngBounds( new GLatLng (parseFloat(south_west[0]), parseFloat(south_west[1]) ) , 
											new GLatLng (parseFloat(north_east[0]), parseFloat(north_east[1]) ) );
				
				//Definition du filtre pour le géocodeur
				filtre_geocoder = lib;
				
				//Recentrage de la carte
				map.setCenter ( bounds.getCenter(), map.getBoundsZoomLevel(bounds) );
				map.savePosition();
				
				
				loadActeurFromDep ( deps.substring( 0, deps.length-1), true, -1 );
				
            },
			error:function (XMLHttpRequest, textStatus, errorThrown)
			{
				alert(textStatus); 
			}
        });
}


var asso_res_reg = null;
var cpt_asso_reg = 0;

function loadActeurFromRegion ( deps )
{
	
	loading.start();
	map.closeInfoWindow();
	var data = {dep:deps, year:new Date().getFullYear()};
	var asso_res = {};
	var cpt = 0;
	jQuery.ajax({
            type: "POST",
            url: prefix_php + "php/loadAssoFromReg.php",
            data: data,
			dataType:'xml',
            success: function(xml)
			{
				jQuery(xml).find("asso").each ( function()
				{
					readXmlAsso ( this, asso_res);
					cpt++;					
				});
				loading.stop();
				
				//Appel de la fonction de rendu
				
				
				drawAssociation ( asso_res, null, true );
				
				
				//Appel de la fonction de mise à jour de la liste des résultats
				drawListeResultat ( asso_res, cpt, true );
				
				asso_res_reg = asso_res;
				cpt_asso_reg = cpt;
            },
			error:function (XMLHttpRequest, textStatus, errorThrown)
			{
				alert(textStatus); 
			}
        });
}

