/*
 * 	scriptsGmap
 *
 */

var map;
var geoC;
var geoposition;
var infoBulle;

// Evenements après le chargement de la liste des centres
jQuery('#gauche_gmap').ready( function(){
  if( document.getElementById('droite_gmap', 'marqueur_mfa')){
  	  geolocaliser();
	  initialiserGMap('droite_gmap', 'marqueur_mfa');
	  afficherGMap('', '', 0);	  
  }
});

// idem pour les pages de centres
jQuery('#gauche_gmap_centres').ready( function(){
  if( document.getElementById('droite_gmap_centres')){
  
      var uriCourant = document.location.pathname; 
      var indiceDepart = uriCourant.lastIndexOf('/')+1; // Plus 1 car on ne veut pas le '/'. 
      var indiceArrivee = uriCourant.length;
      var eacute = new RegExp("(%C3%A9)", "gi"); // Remplacement des 'é'
      var nomPage = uriCourant.substring(indiceDepart, indiceArrivee).replace(eacute, 'e'); 
      
      console.log(nomPage);
   	 
  	  geolocaliser();
	  initialiserGMap('droite_gmap_centres', 'marqueur_service_'+nomPage);
	  afficherGMap('', '', 0);	  
	  
  }
});

//geolocalisation
function geolocaliser(){
  
  if( document.getElementById('geoloc_cookie').innerHTML == '' ){
  
    // Try W3C Geolocation (Preferred)
    if(navigator.geolocation) {
  	browserSupportFlag = true;
  	navigator.geolocation.getCurrentPosition(function(position) {
  	  geoposition = new google.maps.LatLng(position.coords.latitude,position.coords.longitude);
  	  //cookie
  	  document.cookie="geoloc_mfa="+escape(geoposition)+"; expires=3600";
  	  //console.log('localisé ! '+geoposition);
  	}, function() {
  	  handleNoGeolocation(browserSupportFlag);
      });
    }else{
    	geoposition = -1;
    }
    
  }else{
  	geoposition = document.getElementById('geoloc_cookie').innerHTML;
  	//console.log('localisé depuis cookie ! '+geoposition);
  }
}

//initialisation de la Gmap
function initialiserGMap(div_map, icone_service){
  
  // On prend les coordonnées du centre des 2 départements 
  var latlng = new google.maps.LatLng(48.210947,7.434311);
  var mapOptions = {
    zoom: 7,
    center: latlng,
    mapTypeId: google.maps.MapTypeId.ROADMAP,
    mapTypeControl: false
  };
  
  // Instanciations
  map = new google.maps.Map(document.getElementById(div_map),mapOptions);
  geoC = new google.maps.Geocoder();
  infoBulle = new google.maps.InfoWindow();
  
  // Ajout des Kml
  var kmlOptions = {
    map: map,
    preserveViewport: true
  };
  
  // Références à des cartes gmap qui contiennent les kml souhaités
  var kml67 = new google.maps.KmlLayer("http://maps.google.fr/maps/ms?ie=UTF8&hl=fr&msa=0&msid=210462185609107958988.0004a440e074cbdbf2275&ll=48.4456,7.783813&spn=1.446593,3.56781&z=9&output=kml", kmlOptions);
  var kml68 = new google.maps.KmlLayer("http://maps.google.fr/maps/ms?ie=UTF8&hl=fr&msa=0&msid=210462185609107958988.0004a440b98f6bbb915e8&ll=48.4456,7.783813&spn=1.446593,3.56781&z=9&output=kml", kmlOptions);

  // Ajout du marqueur pour la MFA
  // Les coordonnées de la MFA (10 rue de la durance, strasbourg, france) sont : 48.55187,7.734274 
  var latLongMFA = new google.maps.LatLng(48.55187,7.734274);
  var MFAOptions = {
    map: map,
    icon: '/sites/all/themes/groupeget/images/gmap/marqueur_mfa.png',
    title: 'MFA',
    position: latLongMFA
  };
  
  var m_MFA = new google.maps.Marker(MFAOptions);
  
  // On écoute les clicks pour afficher les infos du centre
  google.maps.event.addListener( m_MFA, 'click', function() {
  	// On place l'infoBulle
  	infoBulle.close();
  	infoBulle.setOptions({maxWidth:200});
  	infoBulle.setContent( '<div class="cls_infoBulle"><h1>Si&egrave;ge MFA</h1><p style="text-align: center; line-height: 14px">10 rue de la Durance<br/>67023 Strasbourg<br/>Tél. 03 88 55 91 00<br/>Fax 03 88 84 29 69<br/><br/><a href="/content/contact">nous contacter</a></p></div>' );
  	infoBulle.setPosition( latLongMFA );
  	infoBulle.open( map );
  });
   
  // On parcourt le html pour récupérer les centres et les placer sur la map	
  jQuery('.node-cds').each(function(){ 
  	placerCentreA( jQuery(this), icone_service );  		  
  });      
}

function placerCentreA( centre, icone_service ){
  
  var adresse = centre.find('.cds-adresse').text()+', '+centre.find('.cds-cp').text()+' '+centre.find('.cds-commune').text()+', france';
  var titre = centre.find('.cds-titre').text();
  var idC = centre.find('.cds-id').text();
   
  geoC.geocode( { 'address': adresse }, function(results, status) {
    if (status == google.maps.GeocoderStatus.OK) {
  	  var marker = new google.maps.Marker({
  	        map: map,
  	        position: results[0].geometry.location,
  	        title: titre,
    		icon: '/sites/all/themes/groupeget/images/gmap/'+icone_service+'.png'
  	  });
  	      	    
      // On écoute les clicks pour afficher les infos du centre
      google.maps.event.addListener( marker, 'click', function() {
      	afficherGMap( '', idC, 1 );
      });
      
      // On enregistre la géoloc du centre
      centre.find('.cds-latlon').replaceWith('<p class="cds-latlon">'+results[0].geometry.location+'</p>');
  	    
    } else {
      //console.log('Impossible de localiser l\'adresse : ' + adresse);	
    }
  });	
}

function afficherGMap( idCommune, idCentre, declancheur ){
    
  // On actualise la Map
  if( idCentre && idCentre > 0 && declancheur == 1 ){
    
    var centre = jQuery('#node-cds-'+idCentre);
    var latLong = centre.find('.cds-latlon').text().substr(1,(centre.find('.cds-latlon').text().length)-2).split(', ');
	
	if( latLong != '' ){
	
	  latLong = new google.maps.LatLng( latLong[0], latLong[1] );
    
      // On zoom sur le centre
   	  map.setZoom( 15 );
   	  map.panTo( latLong );
    
      // On place l'infoBulle      
      var adresse = centre.find('.cds-adresse').text()
      var cp = centre.find('.cds-cp').text();
      var ville = centre.find('.cds-commune').text();
      var tel = centre.find('.cds-tel').text();

      infoBulle.close();
      infoBulle.setOptions({maxWidth:200});
      infoBulle.setContent( '<div class="cls_infoBulle"><h1>'+centre.find('.cds-titre').text()+'</h1>'+adresse+'<br/>'+cp+'&nbsp;'+ville+'<br/><span style="color: #286EA0">'+tel+'</span></div>' );
      infoBulle.setPosition( latLong );
      infoBulle.open( map );
    
    }else{
      alert('Googlemap n\'est pas parvenu à géolocaliser "' + centre.find('.cds-titre').text() + '".');
    }
    
    // On actualise le select des communes en le positionnant sur la commune du centre sélectionné
    var tid_comm = centre.find('.cds-tid-commune').text();
    var selectComm = document.getElementById('liste_communes');
    for(var i = 0; i < selectComm.options.length; i++){
      if(selectComm.options[i].value == tid_comm){
    	selectComm.selectedIndex = i;
      }
    }
    
    // On actualise le select des centres
    var id_centre = centre.find('.cds-id').text();
    var selectCent = document.getElementById('liste_centres');
    
    // Reset du select
    selectCent.options.length=0;
    selectCent.options[0] = new Option('Tous les espaces de santé','');
    
    var i = 1;
    
    jQuery('.node-cds').each(function(){
    
      var c2 = jQuery(this);
      var tid2 = c2.find('.cds-tid-commune').text();
      var nom2 = c2.find('.cds-titre').text();
      var id2 = c2.find('.cds-id').text();
      
      if( tid2 == tid_comm ){
	    selectCent.options[i] = new Option(nom2,id2);
	    if(selectCent.options[i].value == id_centre){
	    	selectCent.selectedIndex = i;
	    }
	    i++;
	  }
    });
    
    // On actualise les infos
    afficherInfosCentreA( centre );
    
  }else{
    
    if( idCommune && idCommune > 0 && declancheur == 2 ){
          
      // 1er centre dans cette commune
      var boolT = false;
      jQuery('.node-cds').each(function(){

        if( jQuery(this).find('.cds-tid-commune').text() == idCommune && !boolT ){
        
          var centre = jQuery(this);
          
          var latLong = centre.find('.cds-latlon').text().substr(1,(centre.find('.cds-latlon').text().length)-2).split(', ');
          latLong = new google.maps.LatLng( latLong[0], latLong[1] );
          
          // On zoom sur le centre
          map.setZoom( 15 );
          map.panTo( latLong );
          
          // On place l'infoBulle      
          var adresse = centre.find('.cds-adresse').text()
          var cp = centre.find('.cds-cp').text();
          var ville = centre.find('.cds-commune').text();
          var tel = centre.find('.cds-tel').text();
          
          infoBulle.close();
          infoBulle.setOptions({maxWidth:200});
          infoBulle.setContent( '<div class="cls_infoBulle"><h1>'+centre.find('.cds-titre').text()+'</h1>'+adresse+'<br/>'+cp+'&nbsp;'+ville+'<br/><span style="color: #286EA0">'+tel+'</span></div>' );
          infoBulle.setPosition( latLong );
          infoBulle.open( map );
          
          // On actualise le select des centres
          var id_centre = centre.find('.cds-id').text();
          var selectCent = document.getElementById('liste_centres');
          
          // Reset du select
          selectCent.options.length=0;
          selectCent.options[0] = new Option('Tous les espaces de santé','');
          
          var i = 1;
          
          jQuery('.node-cds').each(function(){
          
            var c2 = jQuery(this);
            var tid2 = c2.find('.cds-tid-commune').text();
            var nom2 = c2.find('.cds-titre').text();
            var id2 = c2.find('.cds-id').text();
            
            if( tid2 == idCommune ){
              selectCent.options[i] = new Option(nom2,id2);
              if(selectCent.options[i].value == id_centre){
              	selectCent.selectedIndex = i;
              }
              i++;
            }
          });
          
          // On actualise les infos
          afficherInfosCentreA( centre );
          
          boolT = true;
          
        }
      });
      
    }else{
    
      // Tout vide
      map.setZoom( 7 );
      map.setCenter( new google.maps.LatLng(48.210947,7.434311));
      
      //On reconstruit les selects
      document.getElementById('liste_communes').selectedIndex = 0;

	  var selectCent = document.getElementById('liste_centres');
	  
	  // Reset du select
	  selectCent.options.length=0;
	  selectCent.options[0] = new Option('Tous les espaces de santé','');
	  
	  var i = 1;
	  jQuery('.node-cds').each(function(){
	  
	    var c2 = jQuery(this);
	    var nom2 = c2.find('.cds-titre').text();
	    var id2 = c2.find('.cds-id').text();
	    
	    selectCent.options[i] = new Option(nom2,id2);
	    i++;
	    
	  });
	  
	  selectCent.selectedIndex = 0;
      
      // On actualise les infos
      afficherInfosDefautA();
      
    }
  } 
}

function afficherInfosDefautA(){

  infoBulle.close();
  
  // Aucun centre sélectionné
  document.getElementById('centre_infos_infos').innerHTML = 'Cliquez sur un centre pour voir les informations&nbsp;&gt;&gt;&gt;';
  
  // On remet à vide les autres champs
  document.getElementById('centre_infos_image').innerHTML = '';
  document.getElementById('centre_infos_visite').innerHTML = '';
  document.getElementById('centre_infos_itineraire').innerHTML = '';
  document.getElementById('centre_infos_titre_services').innerHTML = '';
  document.getElementById('centre_infos_services').innerHTML = '';
  
}

function afficherInfosCentreA( centre ){

	var id_centre = centre.find('.cds-id').text()
	var adresse = centre.find('.cds-adresse').text()
	var cp = centre.find('.cds-cp').text();
	var ville = centre.find('.cds-commune').text();
	var photo = centre.find('.image-src').attr("src");
	var vv = centre.find('.cds-vv').text();
	var titre = centre.find('.cds-titre').text();
	var tel = centre.find('.cds-tel').text();

	// Photos colorbox
	document.getElementById('centre_infos_image').innerHTML = '<a href="'+photo+'" rel="cds-images-'+id_centre+'"><img src="'+photo+'" alt="centre de sant&eacute;" /></a>';
	jQuery("a[rel='cds-images-"+id_centre+"']").colorbox({slideshow:true, slideshowSpeed:3000, maxWidth:"80%", maxHeight:"80%"});
	
	// Infos
	if( centre.find('.cds-details').text() != '' ){
	  document.getElementById('infos-node').innerHTML = '<p><div class="info_titre_discret">Fiche d\'information</div></p><h2>'+titre+'</h2><p><img src="'+photo+'" alt="photo" /></p><h2>Coordonnées :</h2><p>'+adresse+'<br/>'+cp+'&nbsp;'+ville+'<br/><br/><strong>'+tel+'</strong></p><h2>Détails :</h2><p>'+centre.find('.cds-details').html()+'</p>'; 
	  document.getElementById('centre_infos_infos').innerHTML = '<a target="_blank" rel="cds-infos-'+id_centre+'" href="#">&gt;&nbsp;Voir les informations d&eacute;taill&eacute;es&nbsp;&lt;</a>'; 
	  jQuery("a[rel='cds-infos-"+id_centre+"']").colorbox({inline:true, width:600, maxHeight: "90%", href:"#infos-node"});
	}else{
	  document.getElementById('centre_infos_infos').innerHTML = '<span style="color: grey">&gt;&nbsp;Voir les informations d&eacute;taill&eacute;es&nbsp;&lt;</span>'; 
	}
	
	// Visites virtuelles
	if( vv != '' ){
	  document.getElementById('centre_infos_visite').innerHTML = '<a target="_blank" rel="cds-vvs-'+id_centre+'" href="'+vv+'">&gt;&nbsp;Visite(s) virtuelle(s)&nbsp;&lt;</a>'; 
	  jQuery("a[rel='cds-vvs-"+id_centre+"']").colorbox({iframe:true, innerWidth:800, innerHeight:600, slideshow:true, slideshowSpeed:3000});
	}else{
	  document.getElementById('centre_infos_visite').innerHTML = '<span style="color: grey">&gt;&nbsp;Aucune visite virtuelle disponible&nbsp;&lt;</span>'; 
	}
	
	// Itinéraire
	if( geoposition != -1 ){
	  document.getElementById('centre_infos_itineraire').innerHTML = '<span class="btn-am-cds"><a id="itineraire_googlemap" href="http://maps.google.fr/maps?f=d&source=s_d&saddr='+geoposition+'&daddr='+adresse+'%20'+cp+'%20'+ville+'%20+FRANCE&hl=fr&geocode=&mra=ls&ie=UTF8&z=9&output=embed">&gt;&nbsp;Calculer l\'itin&eacute;raire&nbsp;&lt;</a></span>'; 
	}else{
	  document.getElementById('centre_infos_itineraire').innerHTML = '<span class="btn-am-cds"><a id="itineraire_googlemap" href="http://maps.google.fr/maps?f=d&source=s_d&saddr=&daddr='+adresse+'%20'+cp+'%20'+ville+'%20+FRANCE&hl=fr&geocode=&mra=ls&ie=UTF8&z=9&output=embed">&gt;&nbsp;Calculer l\'itin&eacute;raire&nbsp;&lt;</a></span>'; 
	}
	jQuery('#itineraire_googlemap').colorbox({iframe:true, innerWidth:"80%", innerHeight:"80%"});
	
	// Services
	var services = centre.find('.cds-liste-services').text().split('-');
	
	if( services.length > 0 ){
	
		var icones = '';
		var noms_services = new Array();
		noms_services[9] = 'Optique';
		noms_services[10] = 'Dentaire';
		noms_services[12] = 'Médecine générale';
		noms_services[13] = 'Audition';
		noms_services[14] = 'Conseil conjugal et familial';
		
		for( var i = 0; i < services.length; i++ ){
		  if( services[i] != 11 ){
			icones += '<img class="icone-mini-service" src="/sites/default/files/images/icones_services/'+services[i]+'.gif" alt="icone" title="'+noms_services[services[i]]+'" />&nbsp;';
		  }
		}
		document.getElementById('centre_infos_titre_services').innerHTML = '<i>Autres services disponibles :</i>';
		document.getElementById('centre_infos_services').innerHTML = icones;
	}
}
;
/*
 * 	scriptsMGR
 *	-> fonctions JS pour le template groupeGET	
 *
 */

/*
jQuery(document).ready(function(){

  // Formulaire de candidature
  jQuery("a[rel='rel-postuler']").colorbox({width:"80%", height:"80%", iframe:true});
  	
});
*/;

