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 tabNoLegend = new Array();
var map, controls;
var lS;

var popupOuverte ;


var ie6 = (navigator.appName == 'Microsoft Internet Explorer' /*&amp;&amp; navigator.appVersion.match("MSIE 6")*/ ) ? 1:0;
   	if(ie6) {var transEff = null;} else {var transEff = 'resize';}
	
var wmslink = ["http://sigore.observatoire-environnement.org/cgi-bin/mapserv5?map=/var/www/html/rpdzh/wms-rpdzh.map",   "http://sigore2.observatoire-environnement.org/cgi-bin/mapserv5?map=/var/www/html/rpdzh/wms-rpdzh.map",
"http://sigore3.observatoire-environnement.org/cgi-bin/mapserv5?map=/var/www/html/rpdzh/wms-rpdzh.map",
"http://sigore4.observatoire-environnement.org/cgi-bin/mapserv5?map=/var/www/html/rpdzh/wms-rpdzh.map"
];
	

function debutChg(layerCh ) {
//	alert(layerCh.params.LAYERS);
	//alert(this+' '+this.params.LAYERS);
	var nomid = '#'+this.params.LAYERS; 

	//alert(nomid+' => '+document.getElementById(nomid)+'   '+jQuery('input [id='+nomid+']').val()); 
	//alert(jQuery('input [id='+nomid+']').val());
	var t=jQuery('input:checked');
	 for (var i = 0; i < t.length; i++) {
   // Do something with a[i]
   		//alert(jQuery(t[i]).attr('id'));
		if ( jQuery(t[i]).attr('id') == this.params.LAYERS) {
			//jQuery(t[i]).parent().html( jQuery(t[i]).parent().html()+'<img src="images/ajax-loader.gif" >');
			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');
		}
	 }

}		


// different popup types
function myCloseBoxCallback (e){   
	popupOuverte = null;
    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,nomLayer) {
				var dejaTxt = ''; 				
				if (popupOuverte!= null  ) {
					if ( ll == popupOuverte.lonlat  ) {
						dejaTxt = popupOuverte.data.popupContentHTML 	;
					}
					popupOuverte.destroyPopup();	
					popupOuverte = null; 
				}
				var feature = new OpenLayers.Feature(layer, ll); 
				feature.closeBox = closeBox;
				feature.popupClass = popupClass;
				feature.data.popupContentHTML = dejaTxt+" "+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();}
				popupOuverte = feature; 
				
				OpenLayers.Event.observe(feature.popup.closeDiv, "click", 
				OpenLayers.Function.bindAsEventListener(myCloseBoxCallback, feature.popup));
				
				var _divajax = document.getElementById('scriptajax_'+nomLayer); 
				//alert(nomLayer); 
				if (_divajax != null) {
					eval(_divajax.innerHTML);
				}	
				
        }
    /*handler de creation du popup*/
	function lancePopup(response) {
				//alert(response.responseText );
			if(response.responseText.length > 1) {
			var nomLayer;
			var url = response['request']['url'];
			//alert(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];
					}			
				}
			}
			//alert(nomLayer );;
			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 = '/rpdzh/proj4js/lib/defs/';
									// 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 ";
 									 Proj4js.defs["EPSG:27572"] = "+title=27572 +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/rpdzh/wms-rpdzh.map',tabLayersWmsLink[key]);
							url = url.replace('http://sigore2.observatoire-environnement.org/cgi-bin/mapserv5?map=/var/www/html/rpdzh/wms-rpdzh.map',tabLayersWmsLink[key]);
							url = url.replace('http://sigore3.observatoire-environnement.org/cgi-bin/mapserv5?map=/var/www/html/rpdzh/wms-rpdzh.map',tabLayersWmsLink[key]);
							url = url.replace('http://sigore4.observatoire-environnement.org/cgi-bin/mapserv5?map=/var/www/html/rpdzh/wms-rpdzh.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();
	popupOuverte = null;
	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 fdblanc = 	new OpenLayers.Layer.Image('Fond Blanc' , 'blanc.png',new OpenLayers.Bounds(-20037508, -20037508, 20037508, 20037508.34), new OpenLayers.Size(48,48),{ 'transparent': true,'sphericalMercator': true});
		
	
	var sL = new OpenLayers.Control.ScaleLine({bottomOutUnits:"", bottomInUnits:""});
	 myPermalink = new OpenLayers.Control.Permalink(); 
	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, 5605227, 395037, 5739454) */
	maxExtent: new OpenLayers.Bounds(-20037508, -20037508, 20037508, 20037508.34)
  };
   
   map = new OpenLayers.Map( 'map_canvas', options);
	map.addLayers([gphys, gplan, gsat, ghyb,fdblanc]);
	//map.setCenter(new OpenLayers.LonLat(1.658976,46.400554));
	if(!map.getZoom()) {
		var initBounds = new OpenLayers.Bounds(-183983, 5605227, 395037, 5739454);
		initBounds = new OpenLayers.Bounds(-183983, 5605227, 395037, 5739454);
		//map.zoomToExtent(initBounds);
		map.setCenter(new OpenLayers.LonLat(127191.21505,5907053.54506));
		map.zoomTo(6);
	}
	
	lS = new OpenLayers.Control.LayerSwitcher();
		
	OpenLayers.Util.extend(lS, {
		onclick: function () {	map.updateSize(); /*alert('f');*/}
	});
	
	map.addControl(lS);
    map.addControl(new OpenLayers.Control.PanZoom());
	
	//map.events.register('loadstart',layerToToogle,function () {alert('chargement'+this);}); 
	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) {
	
	eval('if (!isCreate'+layerName+') { create'+layerName+'(); newL  =true ;  }');
	
	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];
			noLegend = false; 
			for (i in tabNoLegend ) { 
				if (tabNoLegend[i] == layerName) {
					noLegend = true; 
				}
			}
			if (!noLegend){
				var urllegend = layer.getFullRequestString();
				urllegend=urllegend.replace('LAYERS','LAYER');
				urllegend=urllegend.replace('REQUEST=GetMap','REQUEST=GetLegendGraphic');
				if(tabLayersReproj[layerName] != "") {
				urllegend = urllegend.replace('http://sigore.observatoire-environnement.org/cgi-bin/mapserv5?map=/var/www/html/rpdzh/wms-rpdzh.map',tabLayersWmsLink[layerName]);
				urllegend = urllegend.replace('http://sigore2.observatoire-environnement.org/cgi-bin/mapserv5?map=/var/www/html/rpdzh/wms-rpdzh.map',tabLayersWmsLink[layerName]);
				urllegend = urllegend.replace('http://sigore3.observatoire-environnement.org/cgi-bin/mapserv5?map=/var/www/html/rpdzh/wms-rpdzh.map',tabLayersWmsLink[layerName]);
				urllegend = urllegend.replace('http://sigore4.observatoire-environnement.org/cgi-bin/mapserv5?map=/var/www/html/rpdzh/wms-rpdzh.map',tabLayersWmsLink[layerName]);
				}
				var inner = OpenLayers.Util.getElement('legend').innerHTML;
				OpenLayers.Util.getElement('legend').innerHTML += "<img class='img_legend' id='"+layerName+"_leg' src='"+urllegend+"' alt'' />";
			}
		   //new jalila
			function setSource(response) {
				OpenLayers.Util.getElement('source').innerHTML += response.responseText;
			}
			
			OpenLayers.loadURL('http://sigore.observatoire-environnement.org/rpdzh/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();
}
