//<![CDATA[
// Détection du navigateur
var map;
var marker_ent=new Array;
var point_ent=new Array;
var listEnt=new Array;
var tooltip;

window.onload = function() {

mouseOverInit(); 
externalLinksInit();         
map = new GMap2(document.getElementById("map"));
map.addControl(new GLargeMapControl());
map.addMapType(G_PHYSICAL_MAP) ;
map.setCenter(new GLatLng(47.88754874941472,2.3254215717315674),5);
map.setMapType(G_PHYSICAL_MAP);

//marquise
/*var Tsize = new GSize(200, 200);
var oControl=new GOverviewMapControl(Tsize);
map.addControl(oControl);*/
//var ovmap = oControl.j;

// ====== set up marker mouseover tooltip div ======
tooltip = document.createElement("div");
//document.getElementById("map").appendChild(tooltip);
map.getPane(G_MAP_FLOAT_PANE).appendChild(tooltip); //pour la v2.44
tooltip.style.visibility="hidden";

image_evt = new Image(13,22);
image_evt.src = "../img/Picto_Bleu.png";

var icon_evt = new GIcon();
icon_evt.image=image_evt.src;
icon_evt.iconSize = new GSize(13, 22);
icon_evt.iconAnchor = new GPoint(6, 22);
icon_evt.infoWindowAnchor = new GPoint(5, 1);


image_evt = new Image(15,14);
image_evt.src = "../forum/img/map/geo_submit.gif";

var icon_ev = new GIcon();
icon_ev.image=image_evt.src;
icon_ev.iconSize = new GSize(15, 15);
icon_ev.iconAnchor = new GPoint(6, 6);
icon_ev.infoWindowAnchor = new GPoint(5, 1);

//-------------Limites administratives Géosignal
/*var tileCommunes= new GTileLayer(new GCopyrightCollection("Limites communales : Copyright GEOSIGNAL 2003"),0,9);
tileCommunes.myLayers='Communes';
tileCommunes.myFormat='image/png';
tileCommunes.myBaseURL='http://www.geosignal.org/cgi-bin/wmsmap?';
tileCommunes.getTileUrl=CustomGetTileUrl;
tileCommunes.getCopyright = function(a,b) {return "Limites communales : Copyright GEOSIGNAL 2003";}

var tileDepartements= new GTileLayer(new GCopyrightCollection("Limites départementales : Copyright GEOSIGNAL 2003"),1,17);
tileDepartements.myLayers='Departements';
tileDepartements.myFormat='image/png';
tileDepartements.myBaseURL='http://www.geosignal.org/cgi-bin/wmsmap?';
tileDepartements.getTileUrl=CustomGetTileUrl;
tileDepartements.getCopyright = function(a,b) {return "Limites départementales : Copyright GEOSIGNAL 2003";}

var tileRegions= new GTileLayer(new GCopyrightCollection("Limites regionales : Copyright GEOSIGNAL 2003"),1,17);
tileRegions.myLayers='Regions';
tileRegions.myFormat='image/png';
tileRegions.myBaseURL='http://www.geosignal.org/cgi-bin/wmsmap?';
tileRegions.getTileUrl=CustomGetTileUrl;
tileRegions.getCopyright = function(a,b) {return "Limites régionales : Copyright GEOSIGNAL 2003";}

//-------------Limites administratives Géosignal
var tileRaster1000k= new GTileLayer(new GCopyrightCollection("GEOSIGNAL 2003"),5,9);
tileRaster1000k.myLayers='RASTER1000k';
tileRaster1000k.myFormat='image/png';
tileRaster1000k.myBaseURL='http://www.geosignal.org/cgi-bin/wmsmap?';
tileRaster1000k.getTileUrl=CustomGetTileUrl;
tileRaster1000k.getCopyright = function(a,b) {return "Carte 1.000.000 : Copyright GEOSIGNAL 2003";}


var tileRaster500k= new GTileLayer(new GCopyrightCollection("GEOSIGNAL 2003"),10,10);
tileRaster500k.myLayers='RASTER500k';
tileRaster500k.myFormat='image/png';
tileRaster500k.myBaseURL='http://www.geosignal.org/cgi-bin/wmsmap?';
tileRaster500k.getTileUrl=CustomGetTileUrl;
tileRaster500k.getCopyright = function(a,b) {return "Carte 500.000 : Copyright GEOSIGNAL 2003";}

var tileRaster250k= new GTileLayer(new GCopyrightCollection("GEOSIGNAL 2003"),11,11);
tileRaster250k.myLayers='RASTER250k';
tileRaster250k.myFormat='image/png';
tileRaster250k.myBaseURL='http://www.geosignal.org/cgi-bin/wmsmap?';
tileRaster250k.getTileUrl=CustomGetTileUrl;
tileRaster250k.getCopyright = function(a,b) {return "Carte 250.000 : Copyright GEOSIGNAL 2003";}

var tileRaster100k= new GTileLayer(new GCopyrightCollection("GEOSIGNAL 2003"),12,12);
tileRaster100k.myLayers='RASTER100k';
tileRaster100k.myFormat='image/png';
tileRaster100k.myBaseURL='http://www.geosignal.org/cgi-bin/wmsmap?';
tileRaster100k.getTileUrl=CustomGetTileUrl;
tileRaster100k.getCopyright = function(a,b) {return "Carte 100.000 : Copyright GEOSIGNAL 2003";}

var tileRaster50k= new GTileLayer(new GCopyrightCollection("GEOSIGNAL 2003"),13,13);
tileRaster50k.myLayers='RASTER50k';
tileRaster50k.myFormat='image/png';
tileRaster50k.myBaseURL='http://www.geosignal.org/cgi-bin/wmsmap?';
tileRaster50k.getTileUrl=CustomGetTileUrl;
tileRaster50k.getCopyright = function(a,b) {return "Carte 50.000 : Copyright GEOSIGNAL 2003";}

var tileRaster25k= new GTileLayer(new GCopyrightCollection("GEOSIGNAL 2003"),14,15);
tileRaster25k.myLayers='RASTER25k';
tileRaster25k.myFormat='image/png';
tileRaster25k.myBaseURL='http://www.geosignal.org/cgi-bin/wmsmap?';
tileRaster25k.getTileUrl=CustomGetTileUrl;
tileRaster25k.getCopyright = function(a,b) {return "Carte 25.000 : Copyright GEOSIGNAL 2003";}

var tileRaster5k= new GTileLayer(new GCopyrightCollection("GEOSIGNAL 2003"),16,17);
tileRaster5k.myLayers='RASTER5k';
tileRaster5k.myFormat='image/png';
tileRaster5k.myBaseURL='http://www.geosignal.org/cgi-bin/wmsmap?';
tileRaster5k.getTileUrl=CustomGetTileUrl;
tileRaster5k.getCopyright = function(a,b) {return "Carte 5.000 : Copyright GEOSIGNAL 2003";}

var layer1000k=[tileRaster1000k];
var layer500k=[tileRaster500k];
var layer250k=[tileRaster250k];
var layer100k=[tileRaster100k];
var layer50k=[tileRaster50k];
var layer25k=[tileRaster25k];
var layer5k=[tileRaster5k];

var layerDepartements=[G_MAP_TYPE.getTileLayers()[0],tileDepartements];
var layerCommunes=[G_SATELLITE_MAP.getTileLayers()[0],tileCommunes];
var layerRegions=[G_MAP_TYPE.getTileLayers()[0],tileRegions];


var custommap1000k = new GMapType(layer1000k, G_SATELLITE_MAP.getProjection(), "Carte-Fr", {maxResolution:17, minResolution:5, errorMessage:_mMapError});
var custommap500k = new GMapType(layer500k, G_SATELLITE_MAP.getProjection(), "Carte-Fr", {maxResolution:17, minResolution:5, errorMessage:_mMapError});
var custommap250k = new GMapType(layer250k, G_SATELLITE_MAP.getProjection(), "Carte-Fr", {maxResolution:17, minResolution:5, errorMessage:_mMapError});
var custommap100k = new GMapType(layer100k, G_SATELLITE_MAP.getProjection(), "Carte-Fr", {maxResolution:17, minResolution:5, errorMessage:_mMapError});
var custommap50k = new GMapType(layer50k, G_SATELLITE_MAP.getProjection(), "Carte-Fr", {maxResolution:17, minResolution:5, errorMessage:_mMapError});
var custommap25k = new GMapType(layer25k, G_SATELLITE_MAP.getProjection(), "Carte-Fr", {maxResolution:17, minResolution:5, errorMessage:_mMapError});
var custommap5k = new GMapType(layer5k, G_SATELLITE_MAP.getProjection(), "Carte-Fr", {maxResolution:17, minResolution:5, errorMessage:_mMapError});
var custommapDepartements = new GMapType(layerDepartements, G_SATELLITE_MAP.getProjection(), "Admin-Fr", {maxResolution:17, minResolution:5, errorMessage:_mMapError});
var custommapCommunes = new GMapType(layerCommunes, G_SATELLITE_MAP.getProjection(), "Admin-Fr", {maxResolution:17, minResolution:5, errorMessage:_mMapError});
var custommapRegions = new GMapType(layerRegions, G_SATELLITE_MAP.getProjection(), "Admin-Fr", {maxResolution:17, minResolution:5, errorMessage:_mMapError});


map.addMapType(custommapDepartements);
map.addMapType(custommap1000k);
*/
map.addControl(new GMapTypeControl());
//map.addControl(new GOverviewMapControl());


//if (document.getElementById("country").value=='France') map.setMapType(custommap250k);

 
/*  
  GEvent.addListener(map, 'maptypechanged', function() {
          var currentZoom=map.getZoom();
          if (map.getCurrentMapType()==custommap1000k)
          {
          //GLog.write("custom");
              if (currentZoom>15)map.setMapType(custommap5k);
              else if (currentZoom>13)map.setMapType(custommap25k);
                      else if (currentZoom>12)map.setMapType(custommap50k);
                              else if (currentZoom>11)map.setMapType(custommap100k);
                                      else if (currentZoom>10)map.setMapType(custommap250k);
                                              else if (currentZoom>9)map.setMapType(custommap500k);
                                                      else map.setMapType(custommap1000k);

          }

          if (map.getCurrentMapType()==custommapDepartements)
          {
                  
              if (currentZoom>9)map.setMapType(custommapCommunes);
              else if (currentZoom>5) map.setMapType(custommapDepartements);
                  else map.setMapType(custommapRegions);
          }

    });
    
    
        GEvent.addListener(map, 'zoomend', function() {
        //GLog.write("zoomend");
        var currentZoom=map.getZoom();
        if (map.getCurrentMapType()==custommap1000k || map.getCurrentMapType()==custommap500k || map.getCurrentMapType()==custommap250k || map.getCurrentMapType()==custommap100k || map.getCurrentMapType()==custommap50k || map.getCurrentMapType()==custommap25k || map.getCurrentMapType()==custommap5k)
        {
          //GLog.write("custom");
              if (currentZoom>15)map.setMapType(custommap5k);
              else if (currentZoom>13)map.setMapType(custommap25k);
                      else if (currentZoom>12)map.setMapType(custommap50k);
                              else if (currentZoom>11)map.setMapType(custommap100k);
                                      else if (currentZoom>10)map.setMapType(custommap250k);
                                              else if (currentZoom>9)map.setMapType(custommap500k);
                                                      else map.setMapType(custommap1000k);
        }
        if (map.getCurrentMapType()==custommapDepartements || map.getCurrentMapType()==custommapCommunes || map.getCurrentMapType()==custommapRegions)
        {
              
              if (currentZoom>9)map.setMapType(custommapCommunes);
              else if (currentZoom>5) map.setMapType(custommapDepartements);
                  else map.setMapType(custommapRegions);
        }

        //center = map.getCenter();
        //bounds = map.getBounds();
        zoom = map.getZoom();
		
        //if (zoom>8 && map.getCurrentMapType()==G_MAP_TYPE) map.setMapType(G_HYBRID_TYPE);
        
        /*if (zoom>13) oControl.hide();
        if (zoom==13 && last_zoom==14) oControl.show();*/
  
	//});

        //if (document.getElementById("latitude").value!=""){
        /*var pointevt=new GLatLng(document.getElementById("latitude").value,document.getElementById("longitude").value);
        marker_evt=new GMarker(pointevt, icon_ev);
        map.addOverlay(marker_evt);
        map.setCenter(pointevt,11);*/
        //}
        
        GDownloadUrl(url, function(data, responseCode) {
          var xml = GXml.parse(data);
          var markers = xml.documentElement.getElementsByTagName("marker");
          for (var i = 0; i < markers.length; i++)
          {
              var id=markers[i].getAttribute("id");
              listEnt[i]=new Array;
              var eactivity = markers[i].getAttribute("eactivity").split(/ /);
              var especiality=markers[i].getAttribute("especiality").split(/ /);
              for (var j=0; j<eactivity.length;++j)
              {
                listEnt[i][0]=true;//marker visible
                listEnt[i][31]=id;//id de la fiche
                
                switch(eactivity[j])
                {
                  case 'a01': listEnt[i][1]=true; break;
                  case 'a02': listEnt[i][2]=true; break;
                  case 'a03': listEnt[i][3]=true; break;
                  case 'a04': listEnt[i][4]=true; break;
                  case 'a05': listEnt[i][5]=true; break;
                  case 'a06': listEnt[i][6]=true; break;
                  case 'a07': listEnt[i][7]=true; break;
                  case 'a08': listEnt[i][8]=true; break;
                  case 'a09': listEnt[i][9]=true; break;
                  case 'a10': listEnt[i][10]=true; break;
                  case 'a11': listEnt[i][11]=true; break;
                  case 'a12': listEnt[i][12]=true; break;               
                }
                
              }
              for (var j=0; j<especiality.length;++j)
              {
                switch(especiality[j])
                {
                  case 's00': listEnt[i][20]=true; break;
                  case 's01': listEnt[i][21]=true; break;
                  case 's02': listEnt[i][22]=true; break;
                  case 's03': listEnt[i][23]=true; break;
                  case 's04': listEnt[i][24]=true; break;
                  case 's05': listEnt[i][25]=true; break;
                  case 's06': listEnt[i][26]=true; break;
                  case 's07': listEnt[i][27]=true; break;
                  case 's08': listEnt[i][28]=true; break;
                  case 's09': listEnt[i][29]=true; break;
                  case 's10': listEnt[i][30]=true; break;
                }
                
              }
              
              var point = new GLatLng(parseFloat(markers[i].getAttribute("latitude")),parseFloat(markers[i].getAttribute("longitude")));
              //marker_ent[i]=new GMarker(point, icon_evt);
              //map.addOverlay(marker_ent[i]);
              marker=createMarker(point,i,markers[i].getAttribute("tooltip"),icon_evt);
          }
        //alert (i);
        });
        

}


function plotEntreprise (lat,lon)
{
        alert (map==null);
        var pointevt=new GLatLng(lat,lon);
        marker_evt=new GMarker(pointevt, icon_ev);
        map.addOverlay(marker_evt);
        map.setCenter(pointevt,11);
}

function showMarker(show,marker)
{

  if(!show)
  {
    //for (var i=0; i < marker.images.length; i++) marker.images[i].style.display = ("none");
    marker.hide();
  }
  else
  {
    //for (var i=0; i < marker.images.length; i++) marker.images[i].style.display = ("");
    marker.show();
  }
}

function createMarker(point,markerId,html,icon) 
{
        var marker = new GMarker(point,icon);
        marker.tooltip = '<div class="tooltip">'+html+'</div>';
        point_ent[markerId]=point;
        marker_ent[markerId]=marker;
        var distance=new Array();
        distance[0]=600000;
        distance[1]=500000;
        distance[2]=400000;
        distance[3]=300000;
        distance[4]=250000;
        distance[5]=60000;
        distance[6]=30000;
        distance[7]=5000;
        distance[8]=5000;
        distance[9]=2000;
        distance[10]=1000;
        distance[11]=500;
        distance[12]=250;
        distance[13]=100;
        distance[14]=50;
        distance[15]=25;
        distance[16]=10;
        /*
        distance[0]=500000;
        distance[1]=300000;
        distance[2]=200000;
        distance[3]=100000;
        distance[4]=50000;
        distance[5]=30000;
        distance[6]=10000;
        distance[7]=5000;
        distance[8]=5000;
        distance[9]=2000;
        distance[10]=1000;
        distance[11]=500;
        distance[12]=250;
        distance[13]=100;
        distance[14]=50;
        distance[15]=25;
        distance[16]=10;
        */
        
        GEvent.addListener(marker,"mouseover", function() {
                    var compteMarkersProche=1;
                  for(var i=0;i<marker_ent.length;++i)
                  {
                    if (marker_ent[i]!=marker && listEnt[i][0]===true)
                    {
                      if(point_ent[i].distanceFrom(point)<distance[map.getZoom()])compteMarkersProche++;
                    }
                   }
                   showTooltip(marker,compteMarkersProche);
                   //GLog.write(map.getZoom()+'-'+distance[map.getZoom()]);
        });        
        GEvent.addListener(marker,"mouseout", function() {
                            tooltip.style.visibility="hidden"
        });
        GEvent.addListener(marker,"click", function() {
                var compteMarkersProche=1;
                  for(var i=0;i<marker_ent.length;++i)
                  {
                    if (marker_ent[i]!=marker && listEnt[i][0]===true)
                    {
                      if(point_ent[i].distanceFrom(point)<distance[map.getZoom()])
                      {
                      map.setCenter(point,map.getZoom()+1) ;
                      compteMarkersProche++;
                      break;
                      }
                      
                    }
                    //GLog.write(point_ent[i].distanceFrom(point));
                   }
                   if (compteMarkersProche==1)
                   {
                    var adresse='./index.php?search%5Bname%5D=&id='+listEnt[markerId][31];
                    window.location.href=adresse;
                  }

        });
        map.addOverlay(marker);
      
}


function showTooltip(marker,compteMarkersProche) 
{

        if(compteMarkersProche==1)
        {
 	    tooltip.innerHTML = marker.tooltip;
        }
        else
        {
 	    tooltip.innerHTML = '<div class="tooltip">'+compteMarkersProche+'&nbsp;Géo-entreprises<br/>---<br/>Clic&nbsp;pour&nbsp;zoomer</div>';
        }
        var point=map.getCurrentMapType().getProjection().fromLatLngToPixel(map.fromDivPixelToLatLng(new GPoint(0,0),true),map.getZoom());
        var offset=map.getCurrentMapType().getProjection().fromLatLngToPixel(marker.getPoint(),map.getZoom());
        var anchor=marker.getIcon().iconAnchor;
        var width=marker.getIcon().iconSize.width;
        var height=tooltip.clientHeight;
        var pos = new GControlPosition(G_ANCHOR_TOP_LEFT, new GSize(offset.x - point.x - anchor.x + width, offset.y - point.y -anchor.y -height)); 
        pos.apply(tooltip);
        tooltip.style.visibility="visible";
    //v=2.43
    /*tooltip.innerHTML = marker.tooltip;
	var point=map.getCurrentMapType().getProjection().fromLatLngToPixel(map.fromDivPixelToLatLng(new GPoint(0,0),true),map.getZoom());
	var offset=map.getCurrentMapType().getProjection().fromLatLngToPixel(marker.getPoint(),map.getZoom());
	var anchor=marker.getIcon().iconAnchor;
	var width=marker.getIcon().iconSize.width;
	var height=tooltip.clientHeight;
	var pos = new GControlPosition(G_ANCHOR_TOP_LEFT, new GSize(offset.x - point.x - anchor.x + width, offset.y - point.y -anchor.y -height)); 
	pos.apply(tooltip);
	tooltip.style.visibility="visible";*/
}


function changeList()
{
  var especiality=parseInt(document.formThematique.especiality.value);
  var eactivity=parseInt(document.formThematique.eactivity.value);
  if (especiality!=19 && eactivity!=99)//filtre sur l'activite et filtre sur la specialite
  {
    for (var i=0; i< marker_ent.length;++i)
    {
      if (listEnt[i][especiality]==true && listEnt[i][eactivity]==true && listEnt[i][0]!=true)
      {
        showMarker(true,marker_ent[i]);
        listEnt[i][0]=true
      }
      else
      {
        if ((listEnt[i][especiality]!=true || listEnt[i][eactivity]!=true) && listEnt[i][0]==true)
        {
          showMarker(false,marker_ent[i]);
          listEnt[i][0]=false;
        }
      }
    }
  }
  if (especiality!=19 && eactivity==99)//filtre sur la specialite
  {
    for (var i=0; i< marker_ent.length;++i)
    {
      if (listEnt[i][especiality]==true && listEnt[i][0]!=true)
      {
      //on affiche
        showMarker(true,marker_ent[i]);
        listEnt[i][0]=true
      }
      else
      {
        if (listEnt[i][especiality]!=true)
        {
          showMarker(false,marker_ent[i]);
          listEnt[i][0]=false;
        }
      }
    }
  
  }
  if (especiality==19 && eactivity!=99) //filtre sur l'activite
  {
    for (var i=0; i< marker_ent.length;++i)
    {
      if (listEnt[i][eactivity]==true && listEnt[i][0]!=true)
      {
      //on affiche
        showMarker(true,marker_ent[i]);
      }
      else
      {
        if (listEnt[i][eactivity]!=true)
        {
        showMarker(false,marker_ent[i]);
        listEnt[i][0]=false;
        }
      }
    }
  
  }
  if (especiality==19 && eactivity==99) //aucun filtre
  {
    for (var i=0; i< marker_ent.length;++i)
    {
      if (listEnt[i][0]!=true)
      {
        showMarker(true,marker_ent[i]);
        listEnt[i][0]=true
      }
    }
  
  }
  
}


//]]>
