// -*-c-*-


function initmap(cache_url, server) {
     
     var popup;
     //  var bounds = new OpenLayers.Bounds(-2500000.0, 3500000.0 , 3045984.0, 9045984.0);
     //var bounds = new OpenLayers.Bounds(-420256, 6272992, 1659488, 8352736);
     
     bounds = new OpenLayers.Bounds(-2500000,3500000,3045984,9045984);
     
     var bounds_n = bounds;
     var mapoptions = { 
               projection:"EPSG:32633",
               maxExtent: bounds,
               units: "m",
               // maxResolution:  2708.0,
               maxResolution:  5416,
               numZoomLevels:	 16
     };
          
     if(!server) {
          server = "./server.php?map=wms";
     }
     
     var map = new OpenLayers.Map('map',mapoptions);
     var permalink = new OpenLayers.Control.Permalink();
     var markers = new OpenLayers.Layer.Markers( "Markers", { displayInLayerSwitcher: false } );

     var addParamToUrl = function(url, params) {
          var urlinfo = OpenLayers.Util.createUrlObject(url);
          var args = urlinfo.args;
          for (var i in params) {
               args[i] = params[i];
          }
          var url = urlinfo.protocol + '//' + urlinfo.host + urlinfo.pathname + '?' + OpenLayers.Util.getParameterString(args);
          
          return url;
     }
     
     
     var layers = {};
    
     layers.bakgrunn_statkart = new OpenLayers.Layer.WMS ( "Topografisk norgeskart",
                                                        cache_url,
                                                   {layers:	'topo2',
                                                           transparent:  false,
                                                           format:	 'image/jpeg',
                                                           srs: 'EPSG:32633'
                                                 }//, { transitionEffect:	 'resize'}
                                                      );
     layers.bakgrunn_statkart.setOpacity(0.5);
     
     layers.omrader_nml = new OpenLayers.Layer.WMS ("Omrader (miljolare.no)",
                                               server,
                                            { layers: "nml_omrader",
                                                      transparent: true,
                                                      format: 'png',
                                                      srs: 'EPSG:32633'
                                            }, { reproject: false, buffer: 0 } /* , singleTile : true } */
                                                 );
     
     
     map.addLayers([layers.bakgrunn_statkart,layers.omrader_nml,markers]);
     //     map.addLayers([bakgrunn_statkart,markers]);
     map.addControl(new OpenLayers.Control.LayerSwitcher());
     map.addControl(new OpenLayers.Control.MousePosition());
     map.addControl(new OpenLayers.Control.ScaleLine({bottomOutUnits:'',bottomInUnits:''}));
     map.addControl(new OpenLayers.Control.KeyboardDefaults());
     map.addControl(permalink);
     
     var infoControls = {
          click: new OpenLayers.Control.WMSGetFeatureInfo({
               //url:	 server,
               title:	 'Identify features by clicking',
               layers:	 [layers.omrader_nml],
               infoFormat: 'text/html',
               queryVisible:	 true
          })
     }
     
     var marker;
     var  showInfo = function(evt) {
          $('responseText').innerHTML = evt.text || '<p><b><em>Ingen treff</em></b></p>';
          
          if(marker != null) {
               marker.destroy();
          }
          marker = new OpenLayers.Marker(  map.getLonLatFromPixel(new OpenLayers.Pixel(evt.xy.x,evt.xy.y)));
          markers.addMarker(marker);
     }
     
     for (var i in infoControls) {
          infoControls[i].events.register("getfeatureinfo", this, showInfo);
          map.addControl(infoControls[i]);
     }
     
     infoControls.click.activate();
     
     // map.zoomToExtent(bounds);
     if(! map.getCenter()){
          map.setCenter(new OpenLayers.LonLat(378604,7226208));
     }
     
     OpenLayers.Util.extend(map, {
          setParams: function(params)  {
               var wms_url = addParamToUrl(server, params);
               layers.omrader_nml.setUrl(wms_url);
               infoControls.click.url = wms_url;
               permalink.base = addParamToUrl(permalink.base, params);
               permalink.updateLink();
               layers.omrader_nml.redraw();
          }
     });

     return map;
}
