﻿//<![CDATA[
    var map;
    var geocoder;
		var number;
		var color;
		var tr;
		var sauvegardeBackg;
				
    /* CREATION VISUEL MARKER */
    var myIcon = new GIcon();
    myIcon.image = "squelettes/images/marqueur.png";
    myIcon.shadow = "images/marqueur-ombre.png";
    myIcon.iconSize = new GSize(26, 22);
    myIcon.shadowSize = new GSize(26, 22);
    myIcon.iconAnchor = new GPoint(11, 26);
    myIcon.infoWindowAnchor = new GPoint(12, 0);	
    var markerOptions = {
        icon: myIcon
    };

	

		/* FONCTION GMAP QUI SE LANCE AU CHARGEMENT DE LA PAGE (OU A CHAQUE NOUVELLE RECHERCHE)*/
    function load() {

      if (GBrowserIsCompatible()) {
				/* Div qui contient la map */
				d = document.getElementById('map');
				d.style.width="520px";	
				d.style.height="500px";      
				
				/* Chargement des élèments propres a google map */
        geocoder = new GClientGeocoder();
        map = new GMap2(document.getElementById('map'));
        map.addControl(new GSmallMapControl());
        map.addControl(new GMapTypeControl());
				
				/* POSITION INITIALE */
				map.setCenter(new GLatLng(46.227638,2.213749), 6);
				
				/* Valeur null lors du chargement de la page ou lors d'une recherche qui n'aboubit pas */
				if (document.getElementById('addressInput') !="")
				{
					searchLocationsNear('null');
				}
      }
    }
    
		
		function searchLocations() {
			/* On récupère l'adresse saisie par l'utilisateur */
			
			
			var address = document.getElementById('addressInput').value + " FRANCE";
			
			// hack pour marseille
			if (document.getElementById('addressInput').value == "13000")
			{
				address = document.getElementById('addressInput').value + "MARSEILLE FRANCE";
			}
			
				geocoder.getLatLng(address, function(latlng) {
					if (!latlng) {
					load();
					alert('Geolocalisation impossible');
					document.getElementById('col-right').style.display="none";
					} 
					else{
						searchLocationsNear(latlng);
					}
			});
		}
		

		
		/* FONCTION QUI CHERCHE LES MAGASINS */
		function searchLocationsNear(center) {
		/* Si c'est null, on charge tous les points */
			if (document.getElementById('addressInput').value ==""){
				return;
			}
			if (center=="null"){
				/* pas de parametre, tous les points vont etre affichés */
				var searchUrl = 'phpsqlsearch_genxml.php';
			}
			/* Si c'est pas null, on cherche les points en fonction de la région demandée (cf code postal) */
			else{
				var searchUrl = 'phpsqlsearch_genxml.php?lat=' + center.lat() + '&lng=' + center.lng() + '&radius=50';
			}
     
		 /* On parse le xml */
			GDownloadUrl(searchUrl, function(data) {
				
				var xml = GXml.parse(data);
				var markers = xml.documentElement.getElementsByTagName('marker');
				map.clearOverlays();

			/* On vide la sidebar (liste des magasins à droite) */
				var sidebar = document.getElementById('sidebar');
				sidebar.innerHTML = '';
			 
			 /* Si aucun magasin n'est trouvé dans la region cherchée, on masque la sidebar et on affichage un message d'information */
				if (markers.length == 0) {
					load();
					alert('Aucun résultat pour cette recherche');
					document.getElementById('col-right').style.display="none";
				return;
				}

			
				var bounds = new GLatLngBounds();
				number=0;
				
				/* Si l'adresse a été localisée, on redimensionne la map */
				if (center != "null"){
					d = document.getElementById('map');
					d.style.width="267px";	
					d.style.height="256px";	
					geocoder = new GClientGeocoder();
					map = new GMap2(document.getElementById('map'));
					map.addControl(new GSmallMapControl());
					map.addControl(new GMapTypeControl());
				}
				
				for (var i = 0; i < markers.length; i++) {
					
					/* On récupère les informations de chaque magasin */
					var name = markers[i].getAttribute('name');
					var address = markers[i].getAttribute('address');
					var code = markers[i].getAttribute('code');
					var id_agence = markers[i].getAttribute('id');
					var tel = markers[i].getAttribute('tel');
					var fax = markers[i].getAttribute('fax');
					var address2 = markers[i].getAttribute('address2');
					
					/* Si c'est un bureau on affiche un marqueur différent */
					if (code !="mag"){
						myIcon.image = "squelettes/images/marqueur2.png";
					}
					
					/* Sinon on remet le marker par default */
					else{
						myIcon.image = "squelettes/images/marqueur.png";
					}
				
					/* On compte le nombre de points, pour afficher le nombre de magasin trouvé */
					number = number +1;
					
          var distance = parseFloat(markers[i].getAttribute('distance'));
          var point = new GLatLng(parseFloat(markers[i].getAttribute('lat')),
                                 parseFloat(markers[i].getAttribute('lng')));
        
					var marker = createMarker(point, name, address, address2, code, id_agence, tel, fax);
					map.addOverlay(marker);
					var sidebarEntry = createSidebarEntry(center, marker, name, address, distance, id_agence);
					sidebar.appendChild(sidebarEntry);
					bounds.extend(point);
				}
				
				/* Si l'adresse a été localisée, on recentre la map */
				if (center !="null"){
			 		map.setCenter(bounds.getCenter(), map.getBoundsZoomLevel(bounds));
				}
				/* On appel la fonction pour afficher le nb de magasins */
				numberHuisClos(number);
	
			});
		}

		/* Creation des bulles d'informations */
		function createMarker(point, name, address, address2, code, id_agence, tel, fax) {
      var marker = new GMarker(point, markerOptions);
			if (code == "mag"){
				var html = '<h4><a class="marker" href="spip.php?page=agence_detail&id_agence='+id_agence+'">Magasin HuisClos ' + name + '</a> - <a href="javascript:map.setCenter(new GLatLng(46.227638,2.213749), 6);" id="dezoom"> (Dézoomer)</a></h4>  <br/>' + address2 +'<br/><img src="squelettes/images/telephone.png"> '+ tel +'<br/> <img src="squelettes/images/fax.png"> '+fax;
			}
			else{
				var html = '<h4><a class="marker" href="spip.php?page=agence_detail&id_agence='+id_agence+'">Bureau HuisClos ' + name + '</a> - <a href="javascript:map.setCenter(new GLatLng(46.227638,2.213749), 6);" id="dezoom"> (Dézoomer)</a></h4>  <br/>' + address2 +'<br/><img src="squelettes/images/telephone.png"> '+ tel +'<br/> <img src="squelettes/images/fax.png"> '+fax;
			}
			
      GEvent.addListener(marker, 'click', function() {
       map.setCenter(marker.getPoint(),15); 
			 marker.openInfoWindowHtml(html);
      });
      return marker;
    }

		/* Creation de la sidebar */
    function createSidebarEntry(center, marker, name, address, distance, id_agence) {
     /* Si c'est pas null on affiche la colonne de droite */
			if (center !="null"){
				d = document.getElementById('sidebar');
				d.style.width="249px";	
				d.style.height="200px";	
				d.style.display="block";
				d.style.border="1px solid #c7c7c7"
				
				e = document.getElementById('col-right');
				e.style.display="block";
			}
			
			var div = document.createElement('div');
			var html ='<a class="liste" href="spip.php?page=agence_detail&id_agence='+id_agence+'"> HuisClos ' + name + '</a>';
			div.innerHTML = html;
			div.id="listing-mag";
			
			/* Alternance du background, un blanc, un gris */
			if (color=="white"){
				div.style.background ="#f1f1f1";
				color = "black";
			}
			else{
					div.style.background ="#fff";
					color ="white";
			}
				
			div.style.cursor = 'pointer';
			div.style.paddingBottom = '5px'; 
			div.style.color = '#a0a0a0'; 
			
			GEvent.addDomListener(div, 'click', function() {
			});
			GEvent.addDomListener(div, 'mouseover', function() {
				sauvegardeBackg = div.style.background;
				div.style.background = "#cecece";
			});
			GEvent.addDomListener(div, 'mouseout', function() {	
				div.style.background = sauvegardeBackg;
			});
			return div;
    }
		
		/* Affichage du nombre de magasins trouvés */
		function numberHuisClos(number){
				p = document.getElementById('number');
				p.innerHTML = " Huis clos a trouvé <span class='number-color'>" + number + " magasin(s)</span>";
		}
    //]]>