// INITIALISATION DE L'APPLICATION

opencarto.createMap = function(){
	drawStyle = new OpenLayers.StyleMap({
            "default": new OpenLayers.Style({
                fillOpacity: 0.6,
                strokeColor: "#911111",
                fillColor: "#dc3838",
                strokeWidth: 3,
                cursor: 'pointer',
                pointRadius:8
            }),
            "select": new OpenLayers.Style({
                fillOpacity: 0.9,
                strokeColor: "#00FF00",
                pointRadius:5
            })
        }) ;
    opencarto.vectorLayer = new OpenLayers.Layer.Vector("vector",{
        styleMap:  drawStyle                                                                                                  
    });
    // style the sketch fancy
            var sketchSymbolizers = {
                "Point": {
                    pointRadius: 4,
                    graphicName: "square",
                    fillColor: "white",
                    fillOpacity: 1,
                    strokeWidth: 1,
                    strokeOpacity: 1,
                    strokeColor: "#333333"
                },
                "Line": {
                    strokeWidth: 3,
                    strokeOpacity: 1,
                    strokeColor: "#666666",
                    strokeDashstyle: "dash"
                },
                "Polygon": {
                    strokeWidth: 2,
                    strokeOpacity: 1,
                    strokeColor: "#666666",
                    fillColor: "white",
                    fillOpacity: 0.3
                }
            };
            var style = new OpenLayers.Style();
            style.addRules([
                new OpenLayers.Rule({symbolizer: sketchSymbolizers})
            ]);
            var styleMap = new OpenLayers.StyleMap({"default": style});
    
    
    var zoomToMaxExtentControl = new OpenLayers.Control.ZoomToMaxExtent();
    var zoomBoxControl = new OpenLayers.Control.ZoomBox();
    var navigationControl = new OpenLayers.Control.Navigation();
var attrControl = new OpenLayers.Control.Attribution( {
                eliminateDuplicates: true
            } );


   
                
    var calculateLengthControl = new OpenLayers.Control.DrawFeature(
          opencarto.vectorLayer,
          OpenLayers.Handler.Path,
          {
             featureAdded: calculate_length,
             displayClass: "olControlCalculateLength",
             handlerOptions: {
                            layerOptions: {styleMap: styleMap}
                            
                        }
          }
    );
    var calculateAreaControl = new OpenLayers.Control.DrawFeature(
        opencarto.vectorLayer,
        OpenLayers.Handler.Polygon,
        {
           featureAdded: calculate_area,
           displayClass: "olControlCalculateArea",
           handlerOptions: {
                            layerOptions: {styleMap: styleMap}
                            
                        }
        }
    );
   
   
    
  
 
    mapOptions = {
        projection: globalParams.projection,
        units: "m",
        animate:true,
       // resolutions: globalParams.resolutions,
        maxExtent: globalParams.maxExtent,
        controls:[
                   // new OpenLayers.Control.ScaleLine({maxWidth:200,title:'Echelle'}),
                 //   new OpenLayers.Control.MousePosition({'numDigits':1}),
                    new OpenLayers.Control.PanZoomBar(),
                    zoomToMaxExtentControl, zoomBoxControl, navigationControl,attrControl,calculateLengthControl, calculateAreaControl
       	]};
        
    if (globalParams.googlelayer){
        mapOptions.resolutions = globalParams.resolutions;
		mapOptions.displayProjection = new OpenLayers.Projection("EPSG:4326");
		//mapOptions.controls[1] = new OpenLayers.Control.MousePosition({'numDigits':5,displayProjection: new OpenLayers.Projection("EPSG:4326")});
    }
}


opencarto.loadLayers = function(){
// configuration de la carte avec la définition des layers reçus en JSON
	opencarto.map = opencarto.mapPanel.getMap();
	/*
	if (opencarto.legend){
	    opencarto.map.events.register('changelayer', this, function() {
	        opencarto.legend.show();
	    });
	    opencarto.map.events.register('zoomend',this,function(){
	        opencarto.legend.show();
	    });
	}
	*/
	opencarto.loadedLayers = new Array();
	for (i=0;i<opencarto.gisobjects.layers.length;i++){
	    myLayer = opencarto.gisobjects.layers[i];
	    
	    if (opencarto.map.getNumLayers() == 0 && myLayer.options.groupe==0)
	        myLayer.options.isBaseLayer = true;
	    else
	        myLayer.options.isBaseLayer = false;
	    if (myLayer.name == 'Google Layer'){
	        opencarto.loadedLayers[i] = new OpenLayers.Layer.Google("Google Layer",
	        	{type: globalParams.googlelayer,"sphericalMercator": true});
			opencarto.loadedLayers[i].options.isBaseLayer = true;
			
		}
		else if (myLayer.name == 'POI')
		{
			continue;
		}
	    else{
	        opencarto.loadedLayers[i] = new OpenLayers.Layer.WMS(myLayer.name,myLayer.url, myLayer.params, myLayer.options);
			opencarto.loadedLayers[i].options.resolutions = globalParams.resolutions;
			opencarto.loadedLayers[i].setOpacity(myLayer.options.opacity/100);
	    }
	
	    
	    
	    if (myLayer.options.sld != 'null'){
	        opencarto.loadedLayers[i].mergeNewParams({sld: myLayer.options.sld})
	    }
	    
	    opencarto.loadedLayers[i].events.register('loadstart', this, function() {
	        opencarto.layercounter += 1;
	        Ext.getCmp('basic-statusbar').showBusy();
	        });
	    opencarto.loadedLayers[i].events.register('loadend', this, function() {
	        opencarto.layercounter -= 1;
	        if (opencarto.layercounter == 0)
	            Ext.getCmp('basic-statusbar').clearStatus({useDefaults:true});
	    });
	    
	    
	    opencarto.map.addLayer(opencarto.loadedLayers[i]);
		
	}
	
	
	
	// indiquer que la couche vecteur est toujours "in range"
	opencarto.vectorLayer.calculateInRange = function() { return true; };
	
	
	
	
	opencarto.map.addLayer(opencarto.vectorLayer);
	   
	            // on ne met pas l'overview avec une couche google, car ça bugge !!!
		    
	    if (opencarto.overviewMap)
	    	opencarto.overviewMap.load();
	   
	//opencarto.vectorLayer.setZIndex(opencarto.map.Z_INDEX_BASE['Popup'] - 1);
	
	
	// création de la couche des POI
	opencarto.poiStyles = new OpenLayers.StyleMap({
			"default": new OpenLayers.Style({
				backgroundXOffset: -5,
				backgroundYOffset: -5,
				externalGraphic: globalParams.mediaURL+"${icon}",
				backgroundGraphic: globalParams.mediaURL+"${shadow}",
				graphicZIndex:11,
				backgroundGraphicZIndex:10,
				graphicWidth: 13,
				graphicHeight: 22,
				cursor: 'pointer'
			}),
			"select": new OpenLayers.Style({
				graphicWidth: 19,
				graphicHeight: 33
			}),
			"hidden": new OpenLayers.Style({
				graphicWidth: 0,
				graphicHeight: 0
			})
	});
	
	opencarto.poi_layer = new OpenLayers.Layer.Vector("POI", {
		styleMap: opencarto.poiStyles,
		visibility: true
	});
	
	opencarto.loadVector();	
    opencarto.map.addLayer(opencarto.poi_layer);

	opencarto.poi_hoverControl = new OpenLayers.Control.Hover(
		opencarto.poi_layer, {
			overFeature: function(feature) {
				opencarto.preparePopup(feature);
				opencarto.poi_layer.drawFeature(feature, "select");
			},
			outFeature: function(feature) {
				if (opencarto.tm) {
					clearTimeout(opencarto.tm);
				}
				if (opencarto.popup) {
					opencarto.tm = setTimeout("opencarto.deletePopup()", 2000);
				}
				opencarto.poi_layer.drawFeature(feature, "default");
			},
			clickFeature: function(feature) {
				//opencarto.showInfo(feature);
			},
			clickoutFeature: function(feature) {
				opencarto.poi_layer.drawFeature(feature, "default");
				
			}
		}
	);
	opencarto.map.addControl(opencarto.poi_hoverControl);
	opencarto.poi_hoverControl.activate();
	
	
	lon = 523000;
	lat = 146900;
	zoom = 0; 
	
	
	
	opencarto.map.setCenter(new OpenLayers.LonLat(lon, lat), zoom); 
	
	

	
	
}


