if(typeof tabLayers =='undefined') {var tabLayers = new Array();} 
if(typeof tabLayersState =='undefined')  {var tabLayersState = new Array();}	
if(typeof tabLayersWmsLink =='undefined')  {var tabLayersWmsLink = new Array();}
if(typeof tabLayersType =='undefined')  {var tabLayersType = new Array();}	
if(typeof tabLayersAttributes =='undefined')  {var tabLayersAttributes = new Array();}	
if(typeof tabLayersPsp =='undefined')  {var tabLayersPsp = new Array();}	
if(typeof tabLayersReproj =='undefined')  {var tabLayersReproj = new Array();}
if(typeof tabLayersTitreBulle =='undefined')  {var tabLayersTitreBulle = new Array();}
if(typeof tabLayersSource =='undefined')  {var tabLayersSource = new Array();}
if(typeof EstCoche =='undefined')  {var EstCoche = new Array();}


var lonlat;
var layer;
var layerName;  
var myPermalink; 

var map, controls;
var lS;


// different popup types
function myCloseBoxCallback (e){   
    this.destroy(); 
    OpenLayers.Event.stop(e);
 }
    //anchored
        AutoSizeAnchored = OpenLayers.Class(OpenLayers.Popup.Anchored, {
            'autoSize': true
        });
        AutoSizeAnchoredMinSize = OpenLayers.Class(OpenLayers.Popup.Anchored, {
            'autoSize': true, 
            'minSize': new OpenLayers.Size(400,400)
        });
        AutoSizeAnchoredMaxSize = OpenLayers.Class(OpenLayers.Popup.Anchored, {
            'autoSize': true, 
            'maxSize': new OpenLayers.Size(100,100)
        });
        //anchoredbubble
        AutoSizeAnchoredBubble = OpenLayers.Class(OpenLayers.Popup.AnchoredBubble, {
            'autoSize': true
        });
        AutoSizeAnchoredBubbleMinSize = OpenLayers.Class(OpenLayers.Popup.AnchoredBubble, {
            'autoSize': true, 
            'minSize': new OpenLayers.Size(400,400)
        });
        AutoSizeAnchoredBubbleMaxSize = OpenLayers.Class(OpenLayers.Popup.AnchoredBubble, {
            'autoSize': true, 
            'maxSize': new OpenLayers.Size(100,100)
        });
        //framed
        //disable the autosize for the purpose of our matrix
        OpenLayers.Popup.FramedCloud.prototype.autoSize = true;
        AutoSizeFramedCloud = OpenLayers.Class(OpenLayers.Popup.FramedCloud, {
            'autoSize': true
        });
        AutoSizeFramedCloudMinSize = OpenLayers.Class(OpenLayers.Popup.FramedCloud, {
            'autoSize': true, 
            'minSize': new OpenLayers.Size(400,400)
        });
        AutoSizeFramedCloudMaxSize = OpenLayers.Class(OpenLayers.Popup.FramedCloud, {
            'autoSize': true, 
            'maxSize': new OpenLayers.Size(400,400)
        });
		function ajouteFeature(ll, popupClass, popupContentHTML, closeBox, overflow,nomL) {
				var feature = new OpenLayers.Feature(layer, ll); 
				feature.closeBox = closeBox;
				feature.popupClass = popupClass;
				feature.data.popupContentHTML = popupContentHTML;
				feature.data.overflow = (overflow) ? "auto" : "hidden";
				if (feature.popup == null) {
					feature.popup = feature.createPopup(feature.closeBox);
					map.addPopup(feature.popup);
					feature.popup.show();
				} else {feature.popup.toggle();}
				OpenLayers.Event.observe(feature.popup.closeDiv, "click", 
				OpenLayers.Function.bindAsEventListener(myCloseBoxCallback, feature.popup));				
   				var _divajax = document.getElementById('scriptajax_'+nomL); 
				if (_divajax != null) {
					//alert('ok'+_divorchi.innerHTML);
					eval(_divajax.innerHTML);
					//_divorchi = 'test';
				}

		}
    /*handler de creation du popup*/
	function lancePopup(response) {
	if(response.responseText.length > 1) {
	var nomLayer;
	var url = response['request']['url'];
	var tmp = url.split("&");
	for (var i in tmp) {
		var str = tmp[i];
		if((typeof str) == 'string') {
			if(str.match('nomLayer')) {
				var tmptmp = str.split('=');
				nomLayer = tmptmp[1];
			}			
		}
	}
	if(tabLayersType[nomLayer] == "wms_dist") {
	    var format = new OpenLayers.Format.XML();
        var doc = format.read(response.responseText);
		var attributes = tabLayersAttributes[nomLayer].split(",");
		var psp = tabLayersPsp[nomLayer].split("$$$");		
	  	var html = "";
		var vide = true;
		if (attributes.length) {
		html += "<h1>"+tabLayersTitreBulle[nomLayer]+"</h1><span class='source'>Source : "+tabLayersSource[nomLayer]+"</span><ul>";
		for(var i=0; i<attributes.length; i++) {
				var finestAttributes = attributes[i].split("=");
				var node = doc.getElementsByTagName(finestAttributes[1]).item(0);
				//var node = format.getElementsByTagNameNS(doc, '', attributes[i]).item(0);
				var val = format.getChildValue(node);
				if (val) {vide = false;} 
				html += "<li><span class='titre'>"+finestAttributes[0]+"</span> : "+val+"</li>";	
		}
		html += "</ul>";
		}
		if (psp.length) {
			html += "<div id='psp'><h2>Pour en savoir plus</h2><ul>";
			for(var i=0; i<psp.length; i++) {
				html += "<li class='avec_puce'>"+psp[i]+"</li>";
			}
			html += "</ul></div>";
		}
		if(!vide) {	ajouteFeature(lonlat, AutoSizeFramedCloud,html,true, false,nomLayer );}
	}
	else {
		/* test arbres => decodeer utf8 */
		if (nomLayer == "arbresremarquables") {	contenuHtml = Utf8.decode(response.responseText);	
		}  else {	contenuHtml = response.responseText; 	}
		
		ajouteFeature(lonlat, AutoSizeFramedCloud,contenuHtml,true, false ,nomLayer);}
		}
	} 
         OpenLayers.Control.Click = OpenLayers.Class(OpenLayers.Control, {                
                defaultHandlerOptions: {
                    'single': true,
                    'double': false,
                    'pixelTolerance': 0,
                    'stopSingle': false,
                    'stopDouble': false
                },
                initialize: function(options) {
                    this.handlerOptions = OpenLayers.Util.extend(
                        {}, this.defaultHandlerOptions
                    );
                    OpenLayers.Control.prototype.initialize.apply(
                        this, arguments
                    ); 
                    this.handler = new OpenLayers.Handler.Click(
                        this, {
                            'click': this.onClick,
                            'dblclick': this.onDblclick 
                        }, this.handlerOptions
                    );
                }, 
                onClick: function(e) {
						for (var key in tabLayers){
						  layer = tabLayers[key];
							if((typeof layer) == 'object') {
							if(layer.getVisibility()) {
								var x = e.xy.x;
								var y = e.xy.y;
								var currbounds = map.calculateBounds(map.getCenter(), map.getResolution());
								lonlat = map.getLonLatFromPixel(new OpenLayers.Pixel(x,y));
								var format;
								var srs = "EPSG:900913";
								if(tabLayersType[key] == "wms_dist") {
									format = "gml";
								}
								else {
									format = "text/html";
								}
								if(tabLayersReproj[key] != "") {		// on reprojette					
									newsrs = "EPSG:"+tabLayersReproj[key];
									Proj4js.libPath = 'appFiles/proj4js/lib/';
									// apparemment le path a l'air bon mais pas suffisant alors :
									Proj4js.defs["EPSG:27582"] = "+title=27582 +proj=lcc +lat_1=46.8 +lat_0=46.8 +lon_0=0 +k_0=0.99987742 +x_0=600000 +y_0=2200000 +a=6378249.2 +b=6356515 +towgs84=168,-60,320,0,0,0,0 +pm=paris +units=m +no_defs no_defs ";
									currbounds.transform(new OpenLayers.Projection(srs), new OpenLayers.Projection(newsrs));
									if (newsrs) {
										srs = newsrs;
									}
								}
								var url =  layer.getFullRequestString({
														'REQUEST': "GetFeatureInfo",
														'EXCEPTIONS': "application/vnd.ogc.se_xml",
														'BBOX': currbounds.toBBOX(),
														'SRS': srs,
														'X': x,
														'Y': y,
														'RADIUS': 20,
														'INFO_FORMAT': format,
														'QUERY_LAYERS': layer.params.LAYERS,
														'WIDTH': layer.map.size.w,
														'HEIGHT': layer.map.size.h});
							if(tabLayersReproj[key] != "") {
							url = url.replace('http://sigore.observatoire-environnement.org/cgi-bin/mapserv5?map=/var/www/html/biodiversite/biodiversite.map',tabLayersWmsLink[key]);
							url = url.replace('http://sigore2.observatoire-environnement.org/cgi-bin/mapserv5?map=/var/www/html/biodiversite/biodiversite.map',tabLayersWmsLink[key]);
							url = url.replace('http://sigore3.observatoire-environnement.org/cgi-bin/mapserv5?map=/var/www/html/biodiversite/biodiversite.map',tabLayersWmsLink[key]);
							url = url.replace('http://sigore4.observatoire-environnement.org/cgi-bin/mapserv5?map=/var/www/html/biodiversite/biodiversite.map',tabLayersWmsLink[key]);
								}
								OpenLayers.loadURL(url,{'nomLayer':layer.name}, this, lancePopup);
								}
							}
						}
                }
            });
/* fonction d'initialisation de la carte*/    
var map, controls;
function init() {
	// reconstruction de la fenetre (pour maximiser la taille de la carte)
	
	reconstruction();
	var lon = 0;
	var lat = 46.1;
	var zoom = 8; 
	OpenLayers.ProxyHost = "/cgi-bin/proxy.cgi?url=";
    // create Google Mercator layers
     var gphys = new OpenLayers.Layer.Google(
                "Relief",
                {'type': G_PHYSICAL_MAP , 'transparent': true, 'sphericalMercator': true}
         );
 	var gsat = new OpenLayers.Layer.Google(
              "Satellite",
               {'type': G_SATELLITE_MAP, 'transparent': true, 'sphericalMercator': true}
        );
	var ghyb = new OpenLayers.Layer.Google(
                "Hybride",
                {'type': G_HYBRID_MAP, 'transparent': true, 'sphericalMercator': true}
        );
    var gplan = new OpenLayers.Layer.Google(
                "Plan" ,
				{ 'transparent': true ,'sphericalMercator': true}
     );

	var espece = new OpenLayers.Layer.WMS( 
				"amphibien_reptile_all", 
				"/cgi-bin/mapserv5?map=/var/www/html/biodiversite/biodiversite.map",
				{layers: 'amphibien_reptile_all', format: 'image/png', transparent:true},
				{isBaseLayer:false,singleTile: true , displayInLayerSwitcher:false, visibility : false,opacity:0.5}
	);

	var AmpSensible = new OpenLayers.Layer.WMS( 
				"amphibien_sensible", 
				"/cgi-bin/mapserv5?map=/var/www/html/biodiversite/biodiversite.map",
				{layers: 'amphibien_sensible', format: 'image/png', transparent:true},
				{isBaseLayer:false,singleTile: true , displayInLayerSwitcher:false, visibility : false,opacity:0.5}
	);

	var ReptSensible = new OpenLayers.Layer.WMS( 
				"reptile_sensible", 
				"/cgi-bin/mapserv5?map=/var/www/html/biodiversite/biodiversite.map",
				{layers: 'reptile_sensible', format: 'image/png', transparent:true},
				{isBaseLayer:false,singleTile: true , displayInLayerSwitcher:false, visibility : false,opacity:0.5}
	);

		/* test fond blanc par RM*/
	
	var sL = new OpenLayers.Control.ScaleLine({bottomOutUnits:"", bottomInUnits:""});
	 myPermalink = new OpenLayers.Control.Permalink(); 
	var options = { 'projection': new OpenLayers.Projection("EPSG:900913")/*,  'displayProjection': new OpenLayers.Projection("EPSG:4326"),*/, 'units': "m",  'maxResolution': 156543,/*'minResolution': 0.00000268220901489257,*/ 'controls': [new OpenLayers.Control.MouseDefaults(),  sL, myPermalink] , /*'resolutions':res,*/ 'numZoomLevels':21, /*'maxExtent': new OpenLayers.Bounds(-1.56, 45.038, 1.21, 47.22)*/ 'maxExtent': new OpenLayers.Bounds(-173983,5605227,135037,5939454)};
    map = new OpenLayers.Map( 'map_canvas', options);
	map.addLayers([gphys, gplan, gsat, ghyb,espece,AmpSensible,ReptSensible]);
	
	
	
	
	if(!map.getZoom()) {
		var initBounds = new OpenLayers.Bounds(-173983, 5605227, 135037, 5939454);
		map.zoomToExtent(initBounds);
	}
	lS = new OpenLayers.Control.LayerSwitcher();
		
	OpenLayers.Util.extend(lS, {
		onclick: function () {	map.updateSize(); /*alert('f');*/}
	});
	
	map.addControl(lS);
    map.addControl(new OpenLayers.Control.PanZoom());
	lS.maximizeControl();
          controls = {
                    "single": new OpenLayers.Control.Click({
                        hanlerOptions: {
                            "single": true
                       }
                  }),
                  "double": new OpenLayers.Control.Click({
                      handlerOptions: {
                          "single": false,
                          "double": true
                      }
                  }),
                  "both": new OpenLayers.Control.Click({
                      handlerOptions: {
                          "single": true,
                          "double": true
                      }
                  }),
                  "nodrag": new OpenLayers.Control.Click({
                      handlerOptions: {
                          "single": true,
                          "pixelTolerance": 1
                      }
                  }),
                  "stopsingle": new OpenLayers.Control.Click({
                      handlerOptions: {
                          "single": true,
                          "stopSingle": true, 
						   "pixelTolerance": 1 
                      }
                  }),
                  "stopdouble": new OpenLayers.Control.Click({
                      handlerOptions: {
                          "single": false,
                          "double": true,
                          "stopDouble": true
                      }
                  })
              };
              var control;
              for(var key in controls) {
                  control = controls[key];
                  // only to route output here
                  control.key = key;
                  map.addControl(control);
              }
toggle_control('stopsingle');
/* appel  la funtion qui charge les layers du permalien */
	loadPermalinkLayers();
	
	
/* on affiche une div avec un lien vers ORE dans la carte */
} // fin init

// fermer le layer switche
function closeLS() {
		lS.minimizeControl();
}


function getLayer(layerName) {
		for (var key in tabLayers){
			if(key == layerName) {
				return 	tabLayers[key];
			}
		} 
}
function getToggleState(layerName) {
		for (var key in tabLayersState){
			if(key == layerName) {
				return 	tabLayersState[key];
			}
		} 
}
function setToggleState(layerName, state) {
		for (var key in tabLayers){
			if(key == layerName) {
				tabLayersState[key] = state;
			}
		} 
}
function toggle_control(key) {
  var control = controls[key];
  if(control.active) {
         control.deactivate();
  } else {
         control.activate();
  }
}
function toggleMyLayer(layerName) {
	EstCoche[layerName] = "0";
	eval('if (!isCreate'+layerName+') { create'+layerName+'(); }');
	var layerToToogle = getLayer(layerName);
    if (getToggleState(layerName) == 1) {
		layerToToogle.setVisibility(false);
		setToggleState(layerName, 0);
		var leg=document.getElementById(layerName+"_leg");
	//	var sc=document.getElementById(layerName+"_sc");
		leg.parentNode.removeChild(leg);
//		sc.parentNode.removeChild(sc); 

		if(OpenLayers.Util.getElement('legend').innerHTML == '') {
			document.getElementById("baseLegend").style.display = 'none';	
			//document.getElementById("BaseSource").style.display = 'none';	

		}
		
	}
	else {
			layerToToogle.setVisibility(true);
			setToggleState(layerName, 1);
			var layer = tabLayers[layerName];
			var urllegend = layer.getFullRequestString();
			urllegend=urllegend.replace('LAYERS','LAYER');
			urllegend=urllegend.replace('REQUEST=GetMap','REQUEST=GetLegendGraphic');
			urllegend=urllegend.replace('FORMAT=image%2Fpng','FORMAT=image%2Fgif');
			if(tabLayersReproj[layerName] != "") {
			urllegend = urllegend.replace('http://sigore.observatoire-environnement.org/cgi-bin/mapserv5?map=/var/www/html/biodiversite/biodiversite.map',tabLayersWmsLink[layerName]);
			urllegend = urllegend.replace('http://sigore2.observatoire-environnement.org/cgi-bin/mapserv5?map=/var/www/html/biodiversite/biodiversite.map',tabLayersWmsLink[layerName]);
			urllegend = urllegend.replace('http://sigore3.observatoire-environnement.org/cgi-bin/mapserv5?map=/var/www/html/biodiversite/biodiversite.map',tabLayersWmsLink[layerName]);
			urllegend = urllegend.replace('http://sigore4.observatoire-environnement.org/cgi-bin/mapserv5?map=/var/www/html/biodiversite/biodiversite.map',tabLayersWmsLink[layerName]);
			}
	
		   //new jalila
			//function setSource(response) {
				//OpenLayers.Util.getElement('source').innerHTML += response.responseText;
			//}
			/*var inner = OpenLayers.Util.getElement('legend').innerHTML;
			OpenLayers.Util.getElement('legend').innerHTML += "<img class='img_legend' id='"+layerName+"_leg' src='"+urllegend+"' alt'' />";
			OpenLayers.loadURL('http://sigore.observatoire-environnement.org/appFiles/source.php?layer='+layerName+'', '', this, setSource); 
			if(OpenLayers.Util.getElement('legend').innerHTML != '') {
				document.getElementById("baseLegend").style.display = 'block';
				document.getElementById("BaseSource").style.display = 'block';	
			}*/
			// fin new
			
			var inner = OpenLayers.Util.getElement('legend').innerHTML;
			OpenLayers.Util.getElement('legend').innerHTML += "<img class='img_legend' id='"+layerName+"_leg' src='"+urllegend+"' alt'' />";
			if(OpenLayers.Util.getElement('legend').innerHTML != '') {
				document.getElementById("baseLegend").style.display = 'block';			
			} 
		EstCoche[layerName] = "1";

			
	}
	myPermalink.updateLink();
}






function cocheCase(idCase) {
_case = document.getElementById(idCase); 
	if (_case != null )	{
		_case.checked = true; 	
	}
};

function DecocheCase(idCase) {
_case = document.getElementById(idCase); 
	if (_case != null )	{
		_case.checked = false; 	
	}
};



function deplieArbre(idCase) {
// on dplie l'arbre
tabA = document.getElementsByTagName('a'); 
for (el in tabA){
	if(tabA[el].className == "folder" ){
	_tabIn = tabA[el].parentNode.getElementsByTagName("input"); 
	trouve = false; 
	for( eli= 0; eli< _tabIn.length && !trouve; eli++) {
		/* parcours du tableau ravLayers */
		if ( _tabIn[eli].id == idCase ) {
			toggle(tabA[el]);		
			trouve = true;  
		}
		}}  			 
	}
}; 	


