
var info;
var popup;
        var Popup = OpenLayers.Class(OpenLayers.Popup.FramedCloud, {
            onclick: function(e) {
                //OpenLayers.Event.stop(e, false);
            }
        });
var selected_text;
selected_text= ""; 
function disp_text()
   {
    f = document.getElementById('selectZoomArea');
    w = f.selectedIndex; 
   selected_text = f.options[w].text;
   }
// create namespace
Ext.namespace('toolbarExample');

// Caching Norgeskart
var url = "http://gatekeeper1.geonorge.no/BaatGatekeeper/gk/gk.cache?" + "gkt=" + key;
var urlNIB = "http://wms.geonorge.no/skwms1/wms.norgeibilder/" + ticket + "?";
OpenLayers.Util.onImageLoadErrorColor = 'transparent';
var map;
 
		var basisURL = "http://cloud.geodataonline.no/ArcGIS/rest/services/GeocacheBasis/MapServer";
        var bilderURL = "http://cloud.geodataonline.no/ArcGIS/rest/services/GeocacheBilder/MapServer";
        var landskapURL = "http://cloud.geodataonline.no/ArcGIS/rest/services/GeocacheLandskap/MapServer";

// Token
var request="http://cloud.geodataonline.no/ArcGIS/tokens/?request=getToken&username=naturkart%40naturkart.no&password=SkyetCacheNK20!!&clientid=ref.kulturminnekart.no&expiration=14400";
var token ="kPgzuMdTujPadoCsCg7XbmD8mbZle9zqPv-hqO06qlj4udFabeeiJ1GjMzsR1LHbQgpaIEL5-bCBTOs343rFQA.."

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.trigger
        }, this.handlerOptions
                );
    },

    trigger: function(e) {
        var lonlat = map.getLonLatFromViewPortPx(e.xy);
        alert("Du klikket nÃ¦r " + lonlat.lat + " N, " + lonlat.lon + " E");
    }

});

////

// elemoine
// comment out zoomMap because it's not sure anymore
/*
function zoomMap(minX, minY, maxX, maxY) {
    map.zoomToExtent(new OpenLayers.Bounds(minX, minY, maxX, maxY));
}
*/

// Zoom til kommune
function zoomMapOnChange(value) {
    if (value) {
        value = value.split(";");
        var id = value[0];
        // elemoine
        // the dropdown values are expressed in EPSG:32632, so
        // we need to transform here
        var extent = OpenLayers.Bounds.fromString(value[1]).transform(
	    new OpenLayers.Projection('EPSG:32632'),
            new OpenLayers.Projection('EPSG:25833')
        );
        map.zoomToExtent(extent);
    }
}
function get_poi(value) {
	var poi_url = 'http://naturkart.no/kulturminnekart/Ostfoldkart/POI/get_POI.php?file=';
    if (value) {
        var id = value[0];
        window.location.href=(poi_url+value);    
    }
}
// create application
toolbarExample.app = function() {
    OpenLayers.ProxyHost = "/cgi-bin/proxy.cgi?url=";

    // private vars:
    var toolbar, viewport, vectorLayer;

    // private functions
    var createMap = function(layerInfo) {
 
            // elemoine
            // the ArcGISCache layers are created in the createMap function,
            // because they include important values for the map

            // elemoine (Oct 18)
            // make the Basiskart and Flybilder layers overlays
            var landskapLayer = new OpenLayers.Layer.ArcGISCacheToken("Landskapskart", landskapURL, { layerInfo: layerInfo });
            var basisLayer = new OpenLayers.Layer.ArcGISCacheToken("Basiskart", basisURL, { layerInfo: layerInfo, isBaseLayer:false, visibility: false});
            var bilderLayer = new OpenLayers.Layer.ArcGISCacheToken("Flybilder", bilderURL, { layerInfo: layerInfo, isBaseLayer:false, visibility: false});
            landskapLayer.token = "kPgzuMdTujPadoCsCg7XbmD8mbZle9zqPv-hqO06qlj4udFabeeiJ1GjMzsR1LHbQgpaIEL5-bCBTOs343rFQA..";
            basisLayer.token = "kPgzuMdTujPadoCsCg7XbmD8mbZle9zqPv-hqO06qlj4udFabeeiJ1GjMzsR1LHbQgpaIEL5-bCBTOs343rFQA..";
            bilderLayer.token = "kPgzuMdTujPadoCsCg7XbmD8mbZle9zqPv-hqO06qlj4udFabeeiJ1GjMzsR1LHbQgpaIEL5-bCBTOs343rFQA..";
            
            map = new OpenLayers.Map('map', {
                // use restrictedExtent to make "zoom to max extent" zoom
                // to the initial extent
                restrictedExtent: new OpenLayers.Bounds(198670.73067496, 6540014.9880625,
                                                        379180.42502768, 6625359.1587509),
                maxExtent: basisLayer.maxExtent,
                units: basisLayer.units,
                resolutions: basisLayer.resolutions,
                numZoomLevels: basisLayer.numZoomLevels,
                tileSize: basisLayer.tileSize,
                displayProjection: basisLayer.displayProjection,
                StartBounds: basisLayer.initialExtent,
                controls: [new OpenLayers.Control.KeyboardDefaults(),new OpenLayers.Control.PanZoomBar(),new OpenLayers.Control.ScaleLine(),
                new OpenLayers.Control.Navigation()]
            });

            // elemoine
            // add the ArcGISCache layers to the map
            map.addLayers([landskapLayer, basisLayer, bilderLayer]);

            // elemoine
            // original map commented out
// START - Original MAP
/*
           map = new OpenLayers.Map('mymap', {
            projection: "EPSG:32632",
            controls: [new OpenLayers.Control.MousePosition({numDigits:2}),new OpenLayers.Control.ScaleLine(),new OpenLayers.Control.PanZoomBar(),
            new OpenLayers.Control.KeyboardDefaults()],
            maxExtent: new OpenLayers.Bounds(-2000000.0,3500000.0,3545984.0,9045984.0),
            units: "m",
            maxResolution:21664.0,   // tilsvarer zoom level 3 (hele er 21664.0)
            numZoomLevels: 19       // egentlig 18, men maxResolution tilsvarer zoom level 3 (fÃ¸lgelig er 0-3 skrudd av) 
        });
*/
 //// END - Original MAP
// Asle - removed loadingPanel here
// map.addControl(new OpenLayers.Control.LoadingPanel());
        function mousePositionWestSouthformatOutput(lonLat25833) {

            // elemoine
            // we receive EPSG:25833 coords from the map, and we
            // want to display mouse coords in EPSG:32632 and
            // in EPSG:4326, so we need to do transformations

            var lonLat32632 = lonLat25833.clone().transform(
                new OpenLayers.Projection('EPSG:25833'),
                new OpenLayers.Projection('EPSG:32632')
            );
          
            var lonLat4326 = lonLat25833.clone().transform(
                new OpenLayers.Projection('EPSG:25833'),
                new OpenLayers.Projection('EPSG:4326')
            );

            var digits = parseInt(mousePositionWestSouth.numDigits, 10);

            var newHtml =
                    '<table width="100%" height="100%" border="0">' +
                        //EPSG:32632 coordinates
                    '<tr><td align="center">' +
                    'EPSG 32632 X / Y:<br />' +
                    lonLat32632.lon.toFixed(0) +
                    mousePositionWestSouth.separator +
                    lonLat32632.lat.toFixed(0) +
                    mousePositionWestSouth.suffix +
                    '</td></tr>' +

                        //ESPG:4326 (WGS 84)
                    '<tr><td align="center">' +
                    'EPSG 4326 Lat / Lon:<br />' +
                    lonLat4326.lat.toFixed(digits) + mousePositionWestSouth.separator + lonLat4326.lon.toFixed(digits) +
                    '</td></tr>' +

                        //Image coordinates
                        //'<tr><td align="center">' +
                        //'<br />' +
                        //'X / Y: ' + map.getPixelFromLonLat(lonLat).x + mousePositionWestSouth.separator + map.getPixelFromLonLat(lonLat).y +
                        //'</td></tr>' +

                        //Scale
                    '<tr><td align="center">' +
                        //'EPSG 4326 Lat / Lon:<br />' +
                    'M&aring;lestokk 1:' + Math.round(map.getScale()) +
                    '</td></tr>' +
                    '</table>';
            return newHtml;
        }

        // ##### TESTING mouseposition
        //View mouse position in west-south panel
        var mousePositionWestSouth = new OpenLayers.Control.MousePosition({
            div: document.getElementById('help'),
            formatOutput: mousePositionWestSouthformatOutput
        });
        map.addControl(mousePositionWestSouth);
        // #### END TESTING ##############
    };


    var createWmsLayer = function(name, url, params, options) {
        map.addLayer(new OpenLayers.Layer.WMS(name, url, params, options));
    };
    var createWfsLayer = function(name, url, params, options) {
        map.addLayer(new OpenLayers.Layer.WFS(name, url, params, options));
    };
    var createGmlLayer = function(name, url, params, options) {
        map.addLayer(new OpenLayers.Layer.GML(name, url, params, options));
    };
    var createMapServerLayer = function(name, url, params, options) {
        map.addLayer(new OpenLayers.Layer.MapServer(name, url, params, options));
    };

    var addMapControls = function() {
        // navigation control
        var navControl = new OpenLayers.Control.Navigation({
            type: OpenLayers.Control.TYPE_TOGGLE,
            zoomWheelEnabled: true
        });
        map.addControl(navControl);
        navControl.activate();
    };

    var createToolbar = function() {
        toolbar = new mapfish.widgets.toolbar.Toolbar({
            map: map,
            configurable: false
        });

        // this is a quick fix for http://trac.mapfish.org/trac/mapfish/ticket/126
        toolbar.autoHeight = false;
        toolbar.height = 25;
    };

    var addSeparator = function() {
        toolbar.add(new Ext.Toolbar.Spacer());
        toolbar.add(new Ext.Toolbar.Separator());
        toolbar.add(new Ext.Toolbar.Spacer());
    };   
    // Custom rendering Template
    var resultTpl = new Ext.XTemplate(
        '<tpl for="."><div class="search-item"><h3>{navn} <span class="norm">({komm})</span>',
        '<span>{gardsnavn}',
        '<tpl if="art!=&quot;&quot;">',
        ' ({art})',
        '</tpl>',     
        '</span></h3></div></tpl>'
    );
  Ext.QuickTips.init(); // to display button quicktips
 //  var value = Ext.get("date").dom.options[Ext.get("date").dom.selectedIndex].value;  
   var ds = new Ext.data.Store({
        proxy: new Ext.data.HttpProxy({
             method: 'GET',
             url: 'ajax/get_data.php',
             baseParams: 'query'
        }),
     //   baseParams:{komm:  document.getElementById('selectZoomArea').options[document.getElementById('selectZoomArea').selectedIndex].text},
     //   autoLoad: {params:{start: 0, limit: 10}},
        reader: new Ext.data.JsonReader({
            root: 'data',
            totalProperty: 'totalCount',
            id: 'locid'
        }, [
        	{name: 'locid', mapping: 'locid'},
            {name: 'gardsnavn', mapping: 'gardsnavn'},
            {name: 'navn', mapping: 'navn'},
            // elemoine
            // mapping is now eu8933x and eu8933y
            {name: 'x', mapping: 'eu8933x'},	
            {name: 'y', mapping: 'eu8933y'},
            {name: 'bilde', mapping: 'bilde'},
            {name: 'komm', mapping: 'komm'},
            {name: 'art', mapping: 'art'},
            {name: 'lokalitetsid', mapping: 'lokalitetsid'}
        ] )
    });
ds.on('beforeload', function(store) {
//  ## remove this at least!! //       ds.baseParams = {komm:  document.getElementById('selectZoomArea').options[document.getElementById('selectZoomArea').selectedIndex].text};
    Ext.apply(ds.baseParams, {
    	komm: document.getElementById('selectZoomArea').options[document.getElementById('selectZoomArea').selectedIndex].text
    });
    });
     var freeTextSearch = new Ext.form.ComboBox({
        store: ds,
        displayField:'navn',
        minChars : 3,//for input query param
        typeAhead: false,
        loadingText: 'S&oslash;ker...',
    	width: 220,
    	autoHeight :true,
        pageSize:20,
        hideTrigger:true,
        emptyText:'Skriv inn søketekst...',
        minLengthText : 'Søket må ha minst 3 tegn ...',
        istEmptyText : 'Ingen treff!',
        tpl: resultTpl,
   //     applyTo: 'search',
        itemSelector: 'div.search-item',
        onSelect: function(record){ 
              var x =String.format('{0}'); var y =String.format('{1}'); 
     //         map.setCenter(new OpenLayers.LonLat(record.data.x,record.data.y), 10);
              
                var ll = new OpenLayers.LonLat(record.data.x,record.data.y);
   				map.setCenter(ll, 14);
   				var xy = map.getViewPortPxFromLonLat(ll);
   				xy.x = Math.round(xy.x);
				xy.y = Math.round(xy.y);
   				info.getInfoForClick({xy: xy});
   				//alert(record.data.x + ' : ' + record.data.y); 
   				// info being a reference to the
				// GetFeatureInfo control;
              //  String.format('http://extjs.com/forum/showthread.php?t={0}&p={1}', record.data.topicId, record.id);
             // var combo = Ext.getCmp('selectZoomArea'); alert(combo.getValue());
              
        }
    });
	var createViewport = function() {
        viewport = new Ext.Viewport({
            layout: 'border',
            items: [
                new Ext.BoxComponent({
                    region: 'north',
                    el: 'north',
                    height: 40
                }),{
                    region: 'west',
                    // title: 'OVERSIKT',
                    split: false,
                    collapsible: false,
                    collapseMode: 'mini',
                    frame: true,
                    width: 200,
                    minSize: 175,
                    maxSize: 400,
                    margins: '0 0 0 5',
                    layout: 'border',
                    autoScroll: false,
                    defaults: {
                        border: true,
                        frame: true
                    },
                    items: [
                        {
                            region: 'center',
                            id: 'west-panel',
                            //	title: 'Navigering',
                            //split: true,
                            width: 200,
                            //frame: true,
                            minSize: 175,
                            maxSize: 400,
                            //collapsible: true,
                            margins: '0 0 0 0',
                            //		layout: 'accordion',
                            layoutConfig:{
                                animate: true
                            },
                            items: [
                                {
                                    title: 'Velg kart og kulturminner',
                                    region: 'north',
                                    collapsible: false,
                                    autoHeight: true,
                                    xtype: 'layertree',
                                    map: map
                                },
                                {
                                    //	layout:'border',
                                    title:'G&aring; til kommune:',
                                    collapsed: false,
                                    titleCollapse: false,
                                    items: [
                                        {
                                            region: 'center',
                                            contentEl: 'zoomToArea',
                                            border: false
                                        }
                                    ]
                                },
                                {
                                    title: 'S&oslash;k etter kulturminner:',
                                    height: 100,
                                    split:true,
                                    collapsible: false,
                                    autoScroll: false,
                                    tools: [{id:'help',
                                    handler: function(event, toolEl, panel){
								        if (!panel.tooltip) {
								            panel.tooltip = new Ext.ToolTip({
								            target: toolEl,
								            html: '<p>Her kan du søke både med tekst og tall, f.eks. lokalitetsnummer, navn, type kulturminne (gravhaug), el. <br/>Velger du kommune først begrenses søket til valgt kommune. Nullstill kommune-valget ved å velge <b>Hele Østfold</b>.<p>',
								            title: 'Tips for å søke',
								            autoHide: false,
								            closable: true,
								            draggable:true
								            });
								        }
								        panel.tooltip.show();
								    }
								}],
                                
                                	items: [freeTextSearch] }, 
                                {
                                    title: 'Last ned GPS filer til Garmin:',
                                    height: 150,
                                    collapsible: false,
                                    items: [{
                                    contentEl: 'nodelist'
                                    }]
                                }
                            ]
                        },
                        {
                            title: 'Kartdatum',
                            height: 120,
                            minSize: 120,
                            maxSize: 300,
                            split:true,
                            collapsible: false,
                            autoScroll: true,
                            region: 'south',
                            contentEl: 'help'
                        }
                    ]
                },{
                    region: 'center',
                    //title: 'map',
                    layout: 'fit',
                    frame: false,
                    border: true,
                    margins: '5 5 0 0',
                    items: [
                        {
                            xtype: 'mapcomponent',
                            map: map,
                            tbar: toolbar,
                            border: false
                        }
                    ]
                },{
                    region: 'south',
                    id: 'statusBar',
                    border: false,
                    bodyStyle: 'text-align:left;padding:0px;',
                    height: 25,
                    margins: '5 0 0 0',
                    frame: true,
                    html: 'a status bar'
                }
            ]
        });
    };

    var setToolbarContent = function() {

        toolbar.addControl(
                new OpenLayers.Control.ZoomToMaxExtent({
                    map: map,
                    title: 'Zoom til kartets maksimumsvisning'
                }), {
            iconCls: 'zoomfull',
            toggleGroup: 'map'
        }
                );

        addSeparator();

        toolbar.addControl(
                new OpenLayers.Control.ZoomBox({
                    title: 'Zoom inn: klikk i kartet eller bruk venstre museknapp for å tegne en rektangel'
                }), {
            iconCls: 'zoomin',
            toggleGroup: 'map'
        }
                );
        toolbar.addControl(
                new OpenLayers.Control.ZoomBox({
                    out: true,
                    title: 'Zoom ut: klikk i kartet eller bruk venstre museknapp for å tegne en rektangel'
                }), {
            iconCls: 'zoomout',
            toggleGroup: 'map'
        }
                );
        toolbar.addControl(
                new OpenLayers.Control.DragPan({
                    isDefault: true,
                    title: 'Pan kartet: hold venstre museknapp inne og dra i kartet'
                }), {
            iconCls: 'pan',
            toggleGroup: 'map'
        }
                );
        toolbar.addControl(
                new OpenLayers.Control.DragPan({
                    title: 'Vis info: klikk på et ikon for å vise mere informasjon'
                }), {
            iconCls: 'info',
            toggleGroup: 'map'
        }
                );
        addSeparator();

        //	addSeparator();
        var nav = new OpenLayers.Control.NavigationHistory();
        map.addControl(nav);
        nav.activate();
        var buttonPrevious = new Ext.Toolbar.Button({
            iconCls: 'back',
            tooltip: 'Forrige visning',
            disabled: true,
            handler: nav.previous.trigger
        });
        var buttonNext = new Ext.Toolbar.Button({
            iconCls: 'next',
            tooltip: 'Neste visning',
            disabled: true,
            handler: nav.next.trigger
        });

        toolbar.add(buttonPrevious);
        toolbar.add(buttonNext);

        addSeparator();
        //measure handler
        //createMeasureControls = function(map, toolbar) {
        // 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
            }
        };
        //Style of measure controls
        var style = new OpenLayers.Style();
        style.addRules([
            new OpenLayers.Rule({symbolizer: sketchSymbolizers})
        ]);
        var styleMap = new OpenLayers.StyleMap({"default": style});
        // Measure bottons and functionalities
        var measureControls = {
            line: new OpenLayers.Control.Measure(
                    OpenLayers.Handler.Path, {
                persist: true,
                handlerOptions: {
                    layerOptions: {styleMap: styleMap}
                		}
            		}
                 ),
            polygon: new OpenLayers.Control.Measure(
                    OpenLayers.Handler.Polygon, {
                persist: true,
                handlerOptions: {
                    layerOptions: {styleMap: styleMap}
                		}
            		}
                   )};
        var control;
        var iconclass;

        function handleMeasurements(event) {
            var units;
            var geometry = event.geometry;
            var order = event.order;
            var element = document.getElementById('measurementText');
            var out = "";
            if (order == 1) {
                var length = calcVincenty(geometry);
                units = " m";
                if (length > 1000.0) {
                    length /= 1000;
                    units = " km";
                }
                out = " Avstand: ";
                out += length.toFixed(2) + units;
            } else {
                var area = approxPolyAreaOnSphere(geometry);
                units = " m";
                if (area > 1000000.0) {
                    area /= 1000000;
                    units = " km";
                }
                out = " Areal: ";
                out += area.toFixed(2) + units + "<sup>2</sup>";
            }
            element.innerHTML = out;
        }

        for (var key in measureControls) {
            control = measureControls[key];
            if (key == 'line') {
                iconclass = 'calculateLength';
                tiptool = 'M&aring;l avstand';
            } else {
                iconclass = 'calculateArea';
                tiptool = 'M&aring;l areal';
            }
            control.events.on({
                "measure": handleMeasurements,
                "measurepartial": handleMeasurements
            });
            toolbar.addControl(control, {
                iconCls: iconclass,
                toggleGroup: 'map',
                tooltip: tiptool
            });
        }

        toolbar.add(new Ext.Toolbar.Spacer());
        toolbar.addElement('measurementText');
        function toRadian(angle) {
            return angle * Math.PI / 180.0;
        }

        // Distance and surface calculators
        // elemoine
        // the source projection is now EPSG:25833
        var target_proj = new OpenLayers.Projection("EPSG:4326");
        var source_projection = new OpenLayers.Projection("EPSG:25833");

        function transformToLatLon(point) {
            var new_point = new OpenLayers.Geometry.Point(point.x, point.y);
            OpenLayers.Projection.transform(new_point, source_projection, target_proj);
            return new_point;
        }

        function calcVincenty(geometry) {
            var dist = 0;
            for (var i = 1; i < geometry.components.length; i++) {
                // transform to EPSG:4326
                var first_wgs = transformToLatLon(geometry.components[i - 1]);
                var second_wgs = transformToLatLon(geometry.components[i]);
                dist += OpenLayers.Util.distVincenty(
                {lon: first_wgs.x, lat: first_wgs.y},
                {lon: second_wgs.x, lat: second_wgs.y}
                        );
            }
            return dist * 1000.0; // in [m]
        }

        function approxPolyAreaOnSphere(geometry) {
            var area = 0.0;
            if (geometry.components && (geometry.components.length > 0)) {
                var linear_ring = geometry.components[0];
                if (linear_ring.components && (linear_ring.components.length > 2)) {
                    // calculate area of polygon on sphere
                    var factor = 6378137.0 * 6378137.0 / 2.0;
                    for (var i = 0; i < linear_ring.components.length - 1; i++) {
                        // transform to EPSG:4326
                        var first_wgs = transformToLatLon(linear_ring.components[i]);
                        var second_wgs = transformToLatLon(linear_ring.components[i + 1]);
                        area += toRadian(second_wgs.x - first_wgs.x) * (2 + Math.sin(toRadian(first_wgs.y)) + Math.sin(toRadian(second_wgs.y)));
                    }
                    area = Math.abs(area * factor);
                }
            }
            return area;
        }

        nav.previous.events.register(
                "activate",
                buttonPrevious,
                function() {
                    this.setDisabled(false);
                }
                );
        nav.previous.events.register(
                "deactivate",
                buttonPrevious,
                function() {
                    this.setDisabled(true);
                }
                );
        nav.next.events.register(
                "activate",
                buttonNext,
                function() {
                    this.setDisabled(false);
                }
                );
        nav.next.events.register(
                "deactivate",
                buttonNext,
                function() {
                    this.setDisabled(true);
                }
                );

    };

    // public space:
    return {
        setStatus: function(text) {
            Ext.getCmp('statusBar').body.dom.innerHTML = text;
        },
        init: function() {
            // elemoine
            // we need to have the layer info before being able to
            // create the map, etc.
            var jsonp_url = basisURL + '?f=json&pretty=true&callback=?';
            $.getJSON(jsonp_url, OpenLayers.Function.bind(function (layerInfo) {
                createMap(layerInfo);

                // Norgeskart og europa cached
               // elemoine
               // disabling the Bakgrunnskart layer for now, it's a cached
               // layer that currenty works with EPSG:32632
               //createWmsLayer('Bakgrunnskart', url,
               //{layers: 'europa', format: 'image/png',transparent: 'true'},
               //{isBaseLayer: false, transitionEffect: 'resize', buffer: 0,ratio: 1} 
               //         );     
             //   createWmsLayer('Norgeskart', url,
             //  {layers: 'topo2', format: 'image/jpeg',transparent: 'true'},
             //  {isBaseLayer: false, visibility: true, transitionEffect: 'resize', buffer: 0,ratio: 1}
             //          );

               createWmsLayer('Norge i bilder', urlNIB,
               {layers: 'SatelliteImage,OrtofotoAlle', format: 'image/png',transparent: 'true'},
               { singleTile: true, ratio: 1, isBaseLayer: false, visibility: false, transitionEffect: 'resize'}
                       );        
                createWmsLayer(
                        "<span class='KulturminneFredetOstfold'>Arkeologiske minner</span>", "http://kart.naturkart.no/geoserver/wms",
                {layers: 'kulturminner_ns:KulturminneFredetOstfold',format: 'image/png', transparent: 'true'}, {singleTile: true, ratio: 1, isBaseLayer:false}
                        );

                createWmsLayer(
                        "<span class='kulturminne'>Kulturminner</span>", "http://kart.naturkart.no/geoserver/wms",
                {layers: 'kulturminner_ns:KulturminneLokaleOstfold',format: 'image/png', transparent: 'true'}, { singleTile: true, ratio: 1, isBaseLayer:false}
                        );
                                                

                addMapControls();
                createToolbar();
                createViewport();

    //            map.setCenter(new OpenLayers.LonLat(627740, 6583720), 7);
                //   if (!map.getCenter()) map.zoomToMaxExtent();
                setToolbarContent();
                toolbar.activate();

               // var popup;
              //  var info;
                    info = new OpenLayers.Control.WMSGetFeatureInfo({
                    url: 'http://kart.naturkart.no/geoserver/wms',
                    title: 'Identify features by clicking',
                    queryVisible: true,
                    infoFormat:'application/vnd.ogc.gml',
                    eventListeners: {
                        getfeatureinfo: function(event) {
                            if (popup) {
                                map.removePopup(popup);
                            }
                            var contentHtml = '';
                            // Manage the features
                            if (event.features.length > 0) {
                                for (var i = 0; i < event.features.length; i++) {
                                    var feature = event.features[i];
                                    // Identify the type
                                    if (feature.gml.featureType == 'KulturminneFredetOstfold' || feature.gml.featureType == 'KulturminneLokaleOstfold') {
                                        // Create HTML content for this feature type
                                        //  contentHtml = contentHtml + '<br><h1>' + feature.gml.featureType + '</h1>';
                                        var gardsnavn = feature.attributes['gardsnavn'];
                                        var navn = feature.attributes['navn'];
                                        var epost = feature.attributes['epost'];
                                        var lokalitetsid = feature.attributes['lokalitetsid'] 
                                        if (gardsnavn === null) {
                                            gardsnavn = '';
                                        }
                                        if (navn === null) {
                                            navn = '';
                                        }
                                        contentHtml = contentHtml + '<h2>' + feature.attributes['art'] + '</h2>';
                                        contentHtml = contentHtml + gardsnavn + ' | ' + navn + '<br/>';
                                        if (feature.attributes['bilde']>0){
                                        var imgcount = feature.attributes['bilde'];
                                        var lokalitetsid = feature.attributes['lokalitetsid'];
                                        var i=0;
                                        for (i=1;i<=imgcount;i++){
                                        contentHtml = contentHtml + '<a class="group" rel="lightbox" href="Eksport/BilderAvKulturminner/1024/'+ lokalitetsid +'-'+i+'.jpg" /><img src="Eksport/BilderAvKulturminner/80/'+ lokalitetsid +'-'+i+'.jpg" /></a>&nbsp;';
                                        }
                                        };
                                        contentHtml = contentHtml + '<span class="lesPDF">Les <a href="' + feature.attributes['urltilpdfark'] + '" target="_blank">mer</a> om dette minne.</span>';
                                        // elemoine
                                        // use fields eu8933x and eu8933y for the x and y values
                                        // in the links
                                        contentHtml = contentHtml + '<span class="popItem"><a href="http://kulturminnekart.no/ostfold/?x='+feature.attributes['eu8933x']+'&amp;y='+feature.attributes['eu8933y']+'">Direkte link</a> til dette minne.</span>';
                                        contentHtml = contentHtml + '<span class="sendMail"><a href="mailto:' +epost+ '?subject=Tilleggsopplysninger om kulturminnenr. '+lokalitetsid+'&body=Direkte link til kulturminne:%0Ahttp://kulturminnekart.no/ostfold/?x='+feature.attributes['eu8933x']+'%26y='+feature.attributes['eu8933y']+'%0AOpplysninger:%0A">Meld inn</a> opplysninger om dette eller andre kulturminner.</span><br/>';                                    }
                               
                               // TESTING - Asle - DUPLICATE??  alert(feature.attributes['navn']);
                                }
                            } else {
                                // Doesn't show any popup if no features.
                                return;
                            }
                            var popup = new Popup(
                                    "chicken",
                                    map.getLonLatFromPixel(event.xy),
                                    null,
                                    contentHtml,
                                    null,
                                    true
                                    );
                            popup.autoSize = true;
                            map.addPopup(popup, true);
                            Ext.ux.Lightbox.register("a[rel^=lightbox]",true);
                        }
                    }
                });
                map.addControl(info);
                info.activate();
                
                // If URL contains ref. to a location:
                var args = OpenLayers.Util.getParameters();
                if (args.x && args.y) {
                    var position = new OpenLayers.LonLat(parseFloat(args.x), parseFloat(args.y));
                    map.setCenter(position, 14);
                    var xy = map.getViewPortPxFromLonLat(position);
                    xy.x = Math.round(xy.x);
                    xy.y = Math.round(xy.y);
                    info.getInfoForClick({xy: xy});
                } else {
                   // elemoine
                   // set center to a EPSG:25833 lonlat
                   map.setCenter(new OpenLayers.LonLat(288925.57785132, 6582687.0734067), 7);
                }

            // display some text in the status bar:
                Ext.get('loading').remove();
                Ext.get('loading-mask').fadeOut({remove:true});
                this.setStatus('Kartgrunnlag: Statens kartverk, Geovekst og kommuner /Geodata AS');
            }, this)); 
        }
   };   
}(); // end of app

