/*
  --------------
  Module Cartographie -- v 0.2 -- Copyright Altimax F.R
  --------------
*/


/*
  --------------
  VARIABLES
  --------------
*/
var jQ  = jQuery.noConflict();
var url_carto = "";
var map1;
var ZOOM_MAX = 12;
var ZOOM_MIN = 6;
var aMarkers  = new Array();
var bChoixVisite = false;  //variable qui dit si on choisit ou pas d'afficher uniquement les producteurs qui font visiter la ferme
var bChoixVente = false;  //variable qui dit si on choisit ou pas d'afficher uniquement les producteurs qui vendent a la ferme
function Config () {
  this.lat  = 0;
  this.lng  = 0;
  this.zoom = 2;
  this.kml  = "";
}
var cConfig = new Config();
var iconeDefaut = new GIcon();
    /*
    iconeDefaut.image= cheminSite+'png/ot.png';
    iconeDefaut.shadow = cheminSite+'png/map/ombre.png';
    */
    iconeDefaut.iconSize = new GSize(20, 20);
    
    iconeDefaut.iconAnchor = new GPoint(10, 10);
    iconeDefaut.infoWindowAnchor = new GPoint(20, 20);


                   

/*
  --------------
  FONCTIONS D'INITIALISATION
  --------------
*/
                   
//initialisation de l'interface et des variables en fonction de l'itineraire, puis initialisation de la carte
function init_interface(id_i) {
  loading(true);
  jQ.ajax({
           type: "GET",
           url: url_carto + "frontend/ajax/donnees_itineraire.ajax.php",
           data: "id_i="  +id_i,
           dataType:"script",
           success: function(msg){//le résultat de cet appel est la configuration des coordonnées de l'itinéraire set_config
          },
          error:  function() {
            alert("Erreur dans l'initialisation du module de Cartographie");
          }
  });
}//init_interface

function set_config(plat,plng,pzoom,pkml) {//initialisation de l'objet de configuration
  cConfig.lat = plat;
  cConfig.lng = plng;
  cConfig.zoom  = pzoom;
  cConfig.kml = pkml;
  var bGmap = init_gmap();  //initialisation de la carte
  if(bGmap) {
    var bMenu = init_menu_itineraire(); //initialisation du click sur les menus, si la carte s'est initialisée
    if(bMenu) {
      loading(false);  
    }
  }
  
}//set_config

//Initialisation du menu propre à l'itinéraire
function init_menu_itineraire() {
  
  
  //le click sur les elements de menu de l'itineraire
  jQ('.carto_menu_item').each(function()
    {      
      jQ(this).click(function()
                    {
                      
                      
                      if(jQ(this).hasClass('menu_item_actif')) {
                        jQ(this).removeClass('menu_item_actif');
                        removeMarkers(jQ(this).attr('id'));
                      } else {
                        jQ(this).addClass('menu_item_actif');
                        generation_markers(this);
                      }
                      return false;
                      
                    });
     return true;            
    });

    jQ("#choix_visite_ferme").click(function(){
      bChoixVisite  = (bChoixVisite ==  false)  ? true  : false;
     jQ('.carto_menu_item').each(function(){
      if(jQ(this).hasClass('menu_item_actif')) {
        generation_markers(this);
      }
        
     });
    });
    
     jQ("#choix_vente_ferme").click(function(){
      bChoixVente  = (bChoixVente ==  false)  ? true  : false;
     jQ('.carto_menu_item').each(function(){
      if(jQ(this).hasClass('menu_item_actif')) {
        generation_markers(this);
      }
        
     });
    });
    
    //Comportements des panneaux
    jQ("#panelProfil").toggle(function(){jQ("#panelProfil").animate({left: -getWidth}, 0);}, function(){jQ("#panelProfil").animate({left: +getWidth}, 0);});
      //survol     
      jQ("#btnCacherPanelProfil").hover(function () {
          jQ("#btnCacherPanelProfil").css("background-image","url("+url_carto+"frontend/img/btnProfil_hover.jpg)");
        },function () {
          jQ("#btnCacherPanelProfil").css("background-image","url("+url_carto+"frontend/img/btnProfil.jpg)");
      });
      
    
    //click
    jQ("#btnCacherPanelProfil").click(function () {
         jQ("#panelProfil").toggle(750); 
    });


   
   //le comportement du bouton roadbook
   jQ("#menuRoadbook").click(function ()  {
    if(jQ("#menuRoadbook").hasClass('roadbook_actif')) {
      jQ("#menuRoadbook").removeClass('roadbook_actif');
    } else  {
      jQ("#menuRoadbook").addClass('roadbook_actif');
    }
    jQ("#containerRoadbook").slideToggle("slow");
    return false;
   });

  return true;
}//init_menu_itineraire

function generation_markers(elt) {
  loading(true,'...');
  removeMarkers(jQ(elt).attr('id'));
  var id_mi  = elt.id.split('_')[1];
  var id_i  = elt.id.split('_')[2];
  jQ.ajax({
           type: "GET",
           url: url_carto + "frontend/generation-markers/index.php",
           data: "id_i="  +id_i+  "&id_mi=" + id_mi + "&choix_visite="  + bChoixVisite + "&choix_vente="  + bChoixVente + "&rand="  + (Math.random()*(50*Math.random())),
           dataType:"script",
           success: function(msg){
           loading(false);
          }
  });
}

//Fonction d'affichage de la div de chargement
function loading(bDisplay,texte) {
  if(texte  !=  '' && texte != null) {
    jQ("#texte_loading").html(texte);
  }
	divLoading = document.getElementById("loading");
	if(bDisplay) {
		jQ("#loading").fadeIn("fast");

	}else {
	  jQ("#loading").fadeOut("fast");
	}
}

/*
  Fonctions utiles pour la carte gMap
*/


//initialisation de la gmap
function init_gmap()  {
	jQ('containerDesc').html('');

  jQ("#panelProfil").css("display","none");		
   if (GBrowserIsCompatible()) {
  	 map = new GMap2(document.getElementById('map_carto'));
  	 map.clearOverlays();
	   map.getContainer().style.overflow='hidden';
	   map.setCenter(new GLatLng(cConfig.lng,cConfig.lat), cConfig.zoom);
	   //map.addControl(new GLargeMapControl());
	   if(cConfig.kml != '') {
	     var trompeCache = new Date();
	     var ggeo =new GGeoXml(url_carto + 'files/itineraireKml/' + cConfig.kml +"?"+trompeCache.getMilliseconds());
	     map.addOverlay(ggeo);
     } 
     map.addControl(new GLargeMapControl());
     map.addControl(new GMapTypeControl());
     map.setMapType(G_PHYSICAL_MAP);	  
	}	
  return true;
}//init_gmap


function removeMarkers (id) {
  
  var id_mi = id.split('_')[1];
  if(aMarkers[id_mi]  ==  undefined) {
    aMarkers[id_mi] = new Array();
  }
  for(var i=0;i<aMarkers[id_mi].length;i++) {
    map.removeOverlay(aMarkers[id_mi][i]);
  }
}

function addMarker  (id_mi,lat,lng,titre,html,lien_detail,icone,texte_loading) {
  if(texte_loading  !=  '') {
    jQ("#texte_loading").html(texte_loading);
  }
  if(aMarkers[id_mi]  ==  undefined) {
    aMarkers[id_mi] = new Array();
  }
  iconeDefaut.image= url_carto+'files/menuItineraireIcone/'+icone;
  iconeDefaut.shadow = url_carto+'frontend/img/ombre.png';
  iconeDefaut.shadowSize  = new GSize(50,20); 
  
  var mMarker = new GMarker(new GLatLng(lat,lng),{icon:iconeDefaut});
  aMarkers[id_mi].push(mMarker);
  map.addOverlay(mMarker);
  GEvent.addListener(mMarker,"click",function() {
    var rand  = Math.round(Math.random()*100);
    var lien  = "";
    if(lien_detail  !=  '') {
    var reg1=new RegExp("[?]","g");
    sep = (lien_detail.match(reg1)) ? String.fromCharCode(38) : "?";
      //lien  = "<div><a onclick='location=\"#top_site\";openTb(\"lien_carto_"+rand+"\",\""+url_carto+  "frontend/" +lien_detail+ ""  + sep + "width=900"+String.fromCharCode(38)+"height=500\",\""  +titre+  "\");' href=\"#top_site\" id='lien_carto_" +rand+  "'>Plus d'infos</a></div>";
      //lien  = "<div><a onclick='location=\"#top_site\";openTb(\"lien_carto_"+rand+"\",\""+url_carto+  "frontend/" +lien_detail+ ""  + sep + "width=900"+String.fromCharCode(38)+"height=500\",\""  +titre+  "\");' href=\"#top_site\" id='lien_carto_" +rand+  "'>Plus d'infos</a></div>";
    }
    var get_var_lien_detail = lien_detail.split('?')[1];
    jQ.ajax({
           type: "GET",
           url: url_carto + "frontend/"+lien_detail,
           data: get_var_lien_detail,
           dataType:"text/html",
           success: function(msg){
              jQ('#containerDetail').slideUp('fast',function() {
                jQ('#containerDetail').html(msg);
                jQ('#containerDetail').slideDown('fast');
                jQ.scrollTo( '#containerDetail', 800 );
               
              });
          },
          error:  function() {
            alert("Erreur dans la récupération des données");
          }
  });
    mMarker.openInfoWindowHtml(html+" "+lien);
  });
  
   
}

function openTb(elt,url,title) {
  var htmlelt = document.getElementById(elt); 
	var t = title
	var a = url
	var g = false;
	tb_show(t,a,g);
	jQ("#"+elt).blur();
	return false;
}

function switchMap(val) {//Switch d'un etat de gMap a l'autre
	switch(val) {
		case 1 : 	mapTypeCourant = G_PHYSICAL_MAP;map.setMapType(G_PHYSICAL_MAP);break;
		case 2 :	mapTypeCourant = G_SATELLITE_3D_MAP;map.setMapType(G_SATELLITE_3D_MAP);break;
		default:	mapTypeCourant = G_PHYSICAL_MAP;map.setMapType(G_PHYSICAL_MAP);break;
	}
	return false;
}
