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();}

var lonlat;
var layer;
var layerName;  
var myPermalink; 
var map, controls;
var lS;


function debutChg(layerCh ) {
var nomid = '#'+this.params.LAYERS; 
var t=jQuery('input:checked');
 for (var i = 0; i < t.length; i++) {
	if ( jQuery(t[i]).attr('id') == this.params.LAYERS) {
		jQuery(t[i]).parent().children('span').children('img').attr('class','');
	}
 }
}
		

function finChg(layerCh ) {
	var nomid = '#'+this.params.LAYERS; 
	var t=jQuery('input:checked');
	 for (var i = 0; i < t.length; i++) {
		if ( jQuery(t[i]).attr('id') == this.params.LAYERS) {
			jQuery(t[i]).parent().children('span').children('img').attr('class','inv');
		}
	 }

}		


function zoommap(x,y) {
//	alert(x+" "+y );
var lonlat = OpenLayers.Layer.SphericalMercator.forwardMercator(x,y); 
map.setCenter(new OpenLayers.LonLat(lonlat.lon, lonlat.lat), 14);	
}

// 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));				
				//alert('gf');
				
				var _divajax = document.getElementById('scriptajax_'+nomL); 
				if (_divajax != null) {
					//alert('ok'+_divajax.innerHTML);
					var scdyn = _divajax.innerHTML.replace('http://biodiversite.parc-marais-poitevin.fr/cartopimp/','http://sigore.observatoire-environnement.org/pimp/');
					eval(scdyn);
					//_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();
		//alert(response.responseText);
		if (nomLayer == "ALEA_SISMIQUE_2005" || nomLayer == "ALEA_SEISME_SYNTHESE" ) {
			//alert(Utf8.decode(response.responseText));
			//alert(Utf8.encode(response.responseText))	;
			//alert(response.responseText);
		}
        var doc = format.read(response.responseText);
		var attributes = tabLayersAttributes[nomLayer].split(",");
		var psp = tabLayersPsp[nomLayer].split("$$$");		
	  	var html = "";
	  	var htmlplus = '' ;
		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 val = format.getChildValue(node);
				if (val) {vide = false;} 
				html += "<li><span class='titre'>"+finestAttributes[0]+"</span> : "+val+"</li>";
				// cas particulier N2000_Directive_Habitats 
				// A revoir pour généraliser
				
				if (nomLayer == 'N2000_Directive_Habitats' && finestAttributes[1]=='CODE_du_site' ) {
				htmlplus += " <li><span class='titre'>Fiche descriptive </span>(Ministère de l'Ecologie et du Développement Durable) : ";
				htmlplus += "<a target='_blank' href='http://natura2000.environnement.gouv.fr/sites/"+val+"_vie_site.html' >"+val+"</a></li>";
				htmlplus += "<li><span class='titre'>Fiche descriptive </span>(Inventaire National du Patrimoine Naturel) : <a target='_blank' href=' http://inpn.mnhn.fr/isb/servlet/NaturaServlet?action=Fsd&typeAction=1&pageReturn=fsdDescription.jsp&SITECODE="+val+"'>"+val+"</a></li>";
				}
				if (nomLayer == 'N2000_Directive_Oiseaux' && finestAttributes[1]=='id_europ' ) {
				htmlplus += " <li><span class='titre'>Fiche descriptive </span>(Ministère de l'Ecologie et du Développement Durable) : ";
				htmlplus += "<a target='_blank' href='http://natura2000.environnement.gouv.fr/sites/"+val.replace(" ", "")+"_vie_site.html' >"+val+"</a></li>";
				htmlplus += "<li><span class='titre'>Fiche descriptive </span>(Inventaire National du Patrimoine Naturel) : <a target='_blank' href=' http://inpn.mnhn.fr/isb/servlet/NaturaServlet?action=Fsd&typeAction=1&pageReturn=fsdDescription.jsp&SITECODE="+val.replace(" ", "")+"'>"+val+"</a></li>";
				}
				
					
		}
		if (nomLayer == "ALEA_SISMIQUE_2005" || nomLayer == "ALEA_SEISME_SYNTHESE" 	) {
			//alert(html);
			//html = Utf8.decode(html);
		} 
		html+= htmlplus;
		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': 5, /* modif par RM 24/07/2009 avant 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/wms/wms.map',tabLayersWmsLink[key]);
							url = url.replace('http://sigore2.observatoire-environnement.org/cgi-bin/mapserv5?map=/var/www/html/wms/wms.map',tabLayersWmsLink[key]);
							url = url.replace('http://sigore3.observatoire-environnement.org/cgi-bin/mapserv5?map=/var/www/html/wms/wms.map',tabLayersWmsLink[key]);
							url = url.replace('http://sigore4.observatoire-environnement.org/cgi-bin/mapserv5?map=/var/www/html/wms/wms.map',tabLayersWmsLink[key]);
								}
							//alert(url);	
							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}
     );
		

	
	/* test fond blanc par RM*/
	var sL = new OpenLayers.Control.ScaleLine({bottomOutUnits:"", bottomInUnits:""});
	 myPermalink = new OpenLayers.Control.Permalink(); 
	 // -183983,5405227,155037,6139454
	 // -173983,5605227,135037,5939454
	var options = { 'projection': new OpenLayers.Projection("EPSG:900913"), 'units': "m",  'maxResolution': 156543, 'controls': [new OpenLayers.Control.MouseDefaults(),  sL, myPermalink] ,  'numZoomLevels':21, 'maxExtent': new OpenLayers.Bounds(-183983,5405227,155037,6139454)};
    map = new OpenLayers.Map( 'map_canvas', options);
	
	
		lS = new OpenLayers.Control.LayerSwitcher();
	OpenLayers.Util.extend(lS, {
		onclick: function () {	map.updateSize(); }
	});
	map.addControl(lS);

	
	
	map.addLayers([  gphys,ghyb,gplan, gsat]);
	if(!map.getZoom()) {
		var initBounds = new OpenLayers.Bounds(-173983, 5605227, 135037, 5939454);
		map.zoomToExtent(initBounds);
	}
    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];
                  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 creeURLLegend(urllegend,layerName,layerunique){
	// urllegend=urllegend.replace('LAYERS','LAYER');
	urllegend=urllegend+'&LAYER='+layerunique;
	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/wms/wms.map',tabLayersWmsLink[layerName]);
	urllegend = urllegend.replace('http://sigore2.observatoire-environnement.org/cgi-bin/mapserv5?map=/var/www/html/wms/wms.map',tabLayersWmsLink[layerName]);
	urllegend = urllegend.replace('http://sigore3.observatoire-environnement.org/cgi-bin/mapserv5?map=/var/www/html/wms/wms.map',tabLayersWmsLink[layerName]);
	urllegend = urllegend.replace('http://sigore4.observatoire-environnement.org/cgi-bin/mapserv5?map=/var/www/html/wms/wms.map',tabLayersWmsLink[layerName]);
	}
	return urllegend ; 
}


function toggleMyLayer(layerName) {
	
	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();
			//alert(urllegend );
			var detailLegende ;
			var reg = /LAYERS\=[^&]*&/;
			if (urllegend.match(reg) ){
				var l = urllegend.match(reg)	;
				if (l[0].match("%2C") ) {
					var tabLplus = l[0].substr(7).split('%2C');
					detailLegende = "<div id='"+layerName+"_leg'>";
					var i;
					for (i in tabLplus) {
						if (typeof (tabLplus[i] )== "string") {
						detailLegende += "<img class='img_legend' src='"+creeURLLegend(urllegend,layerName,tabLplus[i])+"' alt='' />";
						}
						//detailLegende = detailLegende+"<img  src='"+l.getFullRequestString({"LAYER": tabLplus[i],'REQUEST':'GetLegendGraphic','Format':'image/png'})+"' />";
					} 
					detailLegende =detailLegende+"</div>" ;
					//alert(detailLegende);
				} else {
					urlImg = creeURLLegend(urllegend,layerName,layerName);
					detailLegende ="<img class='img_legend' id='"+layerName+"_leg' src='"+urlImg+"' alt'' />"
				}
				
			}
			
		   //new jalila
			function setSource(response) {
				OpenLayers.Util.getElement('source').innerHTML += response.responseText;
			}
			var inner = OpenLayers.Util.getElement('legend').innerHTML;
			OpenLayers.Util.getElement('legend').innerHTML += detailLegende;
			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
			/* old
			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';			
			} */
	}
	myPermalink.updateLink();
}


function creeLoader(l) {
l.events.register('loadstart',l,debutChg ); 
l.events.register('loadend',l,finChg ); 
	
}
