
try
{
    wedebug.addLogger("poi", "POIController");
}
catch(e)
{
    alert(e.message);
}

var POIController = Class.create();

POIController.prototype = {
    m_xmlTemp : null,
    m_guiController : null,    
    m_poiCollection : null,
    m_mapController : null,
    m_poiCollectionId : "POI",
    m_upperLevel : 66,
    m_menuController : null,
    m_currentProvider : null,
    m_scriptService : null,
    m_loypeTimer : null,
    m_mouseLat : null,
    m_mouseLon : null,
    measureState : false,
    m_mouseInside : false,
    m_allSelected : true,
    m_searchresultPOI: {'no':-1,'ea':-1,'t':-1},
    m_tooltipLayersSummer : [
            {'name' : 'Sykkelruter', 'visible' : true},
            {'name' : 'TurstiMarka', 'visible' : true},
            {'name' : 'TurstiMarka_Natur', 'visible' : true},
            {'name' : 'TurstierBy', 'visible' : true},      
            {'name' : 'TurveierBy', 'visible' : true}
            ],
    m_tooltipLayersWinter : [
            {'name' : 'Lys_status', 'visible' : true},
            {'name' : 'Skoyting_status', 'visible' : true},
            {'name' : 'Tospor_status', 'visible' : true},
            {'name' : 'Tospor', 'visible' : true},
            {'name' : 'Lys', 'visible' : true},
            {'name' : 'Skoyting', 'visible' : true},
            {'name' : 'Scooter', 'visible' : true},
            {'name' : 'Skiforeningen', 'visible' : true}
            ],
    
    initialize : function(t_upperLevel, t_guiController, t_mapController, t_menuController, t_scriptService, t_loypeService)
    {
        this.m_loypeService = t_loypeService;
        this.m_scriptService = t_scriptService;
        this.m_menuController = t_menuController;
        this.m_upperLevel = t_upperLevel;
        this.m_guiController = t_guiController;
        this.m_mapController = t_mapController;
        this.m_poiCollection = $H(
            {
                // Vinter:
                "Skileik"                       :       {selected: false, viewport: null, featureNumber: "Skileik"},
                "Alpinbakke"                    :       {selected: false, viewport: null, featureNumber: "Alpinbakke"},
                "Hoppbakke"                     :       {selected: false, viewport: null, featureNumber: "Hoppbakke"},
                "Skianlegg langrenn"            :       {selected: false, viewport: null, featureNumber: "Skianlegg langrenn"},
                "Skiskyteanlegg"                :       {selected: false, viewport: null, featureNumber: "Skiskyteanlegg"},
                "Akebakke"                      :       {selected: false, viewport: null, featureNumber: "Akebakke"},
                "Isbane"                        :       {selected: false, viewport: null, featureNumber: "Isbane"},
                "Hytter til leie"               :       {selected: false, viewport: null, featureNumber: "Hytter til leie"},
                "Informasjonstavle"             :       {selected: false, viewport: null, featureNumber: "Informasjonstavle"},
                "Markastue"                     :       {selected: false, viewport: null, featureNumber: "Markastue"},
                "Toalett"                       :       {selected: false, viewport: null, featureNumber: "Toalett"},
                "Fredet fornminne"              :       {selected: false, viewport: null, featureNumber: "Fredet fornminne"},
                "Fredet kulturminne"            :       {selected: false, viewport: null, featureNumber: "Fredet kulturminne"},
                "Bom"                           :       {selected: false, viewport: null, featureNumber: "Bom"},
                "Holdeplass"                    :       {selected: false, viewport: null, featureNumber: "Holdeplass"},
                "Parkeringsplass"               :       {selected: false, viewport: null, featureNumber: "Parkeringsplass"},
                "Buss"                          :       {selected: false, viewport: null, featureNumber: "Buss"},
                "Trikk"                         :       {selected: false, viewport: null, featureNumber: "Trikk"},
                "T-bane"                        :       {selected: false, viewport: null, featureNumber: "T-bane"},
                // Sommer:
                "Badeplass"                     :       {selected: false, viewport: null, featureNumber: "Badeplass"},
                "Kiosk"                         :       {selected: false, viewport: null, featureNumber: "Kiosk"},
                "Kafe restaurant"               :       {selected: false, viewport: null, featureNumber: "Kafe restaurant"},
                "Fastgrill"                     :       {selected: false, viewport: null, featureNumber: "Fastgrill"},
                "Smabathavn"                    :       {selected: false, viewport: null, featureNumber: "Smabathavn"},
                "Ildsted"                       :       {selected: false, viewport: null, featureNumber: "Ildsted"},
                "Fiskevann"                     :       {selected: false, viewport: null, featureNumber: "Fiskevann"},
                "Drikkevannskilde"              :       {selected: false, viewport: null, featureNumber: "Drikkevannskilde"},
                "Friomrade for hund"            :       {selected: false, viewport: null, featureNumber: "Friomrade for hund"},
                "Stille omrade"                 :       {selected: false, viewport: null, featureNumber: "Stille omrade"},
                "Lekeplass"                     :       {selected: false, viewport: null, featureNumber: "Lekeplass"},
                "Besoksgard"                    :       {selected: false, viewport: null, featureNumber: "Besoksgard"},
                "Klatrefelt"                    :       {selected: false, viewport: null, featureNumber: "Klatrefelt"},
                "Bevaringsverdig skog"          :       {selected: false, viewport: null, featureNumber: "Bevaringsverdig skog"},
                "HC-tilrettelagt toalett"       :       {selected: false, viewport: null, featureNumber: "HC-tilrettelagt toalett"},
                "HC-tilrettelagt badeplass"     :       {selected: false, viewport: null, featureNumber: "HC-tilrettelagt badeplass"},
                "HC-tilrettelagt fiskevann"     :       {selected: false, viewport: null, featureNumber: "HC-tilrettelagt fiskevann"},
                "DNT hytte ubetjent"            :       {selected: false, viewport: null, featureNumber: "DNT hytte ubetjent"},
                "DNT hytte betjent"             :       {selected: false, viewport: null, featureNumber: "DNT hytte betjent"},
                "Privat hytte ubetjent"         :       {selected: false, viewport: null, featureNumber: "Privat hytte ubetjent"},
                "Privat hytte betjent"          :       {selected: false, viewport: null, featureNumber: "Privat hytte betjent"},
                "Normal"                        :       {selected: false, viewport: null, featureNumber: "Normal"}
            }       
        );
        
        t_mapController.addEventListener("onchangeview", this._cb_onChangeView.bind(this));
        t_mapController.addEventListener("onmapstylechange", this._cb_onChangeStyle.bind(this)); 
        t_mapController.addGlobalStateListener(this._stateChanged.bind(this));
        
        if( t_mapController.getZoomLevel() <= this.m_upperLevel &&
            t_mapController.getMapStyle() != MapController.Styles.BIRDS_EYE )
        {
            var t_menu = this.m_menuController.getMenu();
            if( t_menu != null && t_menu.collapsible)
            {
                t_menu.collapsible.showPane(
                    t_menu.Collapsible.PANELS.POI, true, false
                ); 
            }
        }
    },
    
    selectAllPOI : function(){
                
        var t_check = function(t_value) 
        {
            t_value[1].selected = true;                
        };
        

        
        if(this.m_mapController.getSeason()== 'sommer'){
                    this.m_poiCollection = $H(
            {

                "Hytter til leie"           :       {selected: false, viewport: null, featureNumber: "Hytter til leie"},
                "Informasjonstavle"         :       {selected: false, viewport: null, featureNumber: "Informasjonstavle"},
                "Markastue"                 :       {selected: false, viewport: null, featureNumber: "Markastue"},
                "Toalett"                   :       {selected: false, viewport: null, featureNumber: "Toalett"},
                "Fredet fornminne"          :       {selected: false, viewport: null, featureNumber: "Fredet fornminne"},
                "Fredet kulturminne"        :       {selected: false, viewport: null, featureNumber: "Fredet kulturminne"},
                "Bom"                       :       {selected: false, viewport: null, featureNumber: "Bom"},
                "Holdeplass"                :       {selected: false, viewport: null, featureNumber: "Holdeplass"},
                "Parkeringsplass"           :       {selected: false, viewport: null, featureNumber: "Parkeringsplass"},
                "Buss"                      :       {selected: false, viewport: null, featureNumber: "Buss"},
                "Trikk"                     :       {selected: false, viewport: null, featureNumber: "Trikk"},
                "T-bane"                    :       {selected: false, viewport: null, featureNumber: "T-bane"},
                // Sommer:
                "Badeplass"                 :       {selected: false, viewport: null, featureNumber: "Badeplass"},
                "Kiosk"                     :       {selected: false, viewport: null, featureNumber: "Kiosk"},
                "Kafe restaurant"           :       {selected: false, viewport: null, featureNumber: "Kafe restaurant"},
                "Fastgrill"                 :       {selected: false, viewport: null, featureNumber: "Fastgrill"},
                "Smabathavn"                :       {selected: false, viewport: null, featureNumber: "Smabathavn"},
                "Ildsted"                   :       {selected: false, viewport: null, featureNumber: "Ildsted"},
                "Fiskevann"                 :       {selected: false, viewport: null, featureNumber: "Fiskevann"},
                "Drikkevannskilde"          :       {selected: false, viewport: null, featureNumber: "Drikkevannskilde"},
                "Friomrade for hund"        :       {selected: false, viewport: null, featureNumber: "Friomrade for hund"},
                "Stille omrade"             :       {selected: false, viewport: null, featureNumber: "Stille omrade"},
                "Lekeplass"                 :       {selected: false, viewport: null, featureNumber: "Lekeplass"},
                "Besoksgard"                :       {selected: false, viewport: null, featureNumber: "Besoksgard"},
                "Klatrefelt"                :       {selected: false, viewport: null, featureNumber: "Klatrefelt"},
                "Bevaringsverdig skog"      :       {selected: false, viewport: null, featureNumber: "Bevaringsverdig skog"},
                "HC-tilrettelagt toalett"   :       {selected: false, viewport: null, featureNumber: "HC-tilrettelagt toalett"},
                "HC-tilrettelagt badeplass" :       {selected: false, viewport: null, featureNumber: "HC-tilrettelagt badeplass"},
                "HC-tilrettelagt fiskevann" :       {selected: false, viewport: null, featureNumber: "HC-tilrettelagt fiskevann"},
                "DNT hytte ubetjent"        :       {selected: false, viewport: null, featureNumber: "DNT hytte ubetjent"},
                "DNT hytte betjent"         :       {selected: false, viewport: null, featureNumber: "DNT hytte betjent"},
                "Privat hytte ubetjent"     :       {selected: false, viewport: null, featureNumber: "Privat hytte ubetjent"},
                "Privat hytte betjent"      :       {selected: false, viewport: null, featureNumber: "Privat hytte betjent"},
                "Normal"                    :       {selected: false, viewport: null, featureNumber: "Normal"}
            }       
        );
        
                            map.WMSLayers = [
                    {'name' : 'Lys_status', 'visible' : false},
                    {'name' : 'Skoyting_status', 'visible' : false},
                    {'name' : 'Tospor_status', 'visible' : false},
                    {'name' : 'Normal', 'visible' : false},
                    {'name' : 'Tospor', 'visible' : false},
                    {'name' : 'Kommuneskogen', 'visible' : true},
                    {'name' : 'Markagrense', 'visible' : true},
                    {'name' : 'Lys', 'visible' : false},
                    {'name' : 'Skoyting', 'visible' : false},
                    {'name' : 'Scooter', 'visible' : false},
                    {'name' : 'Skiforeningen', 'visible' : false},
                    {'name' : 'StilleOmr', 'visible' : true},
                    {'name' : 'FriOmrHund', 'visible' : true},
                    {'name' : 'TurstiMarka_Natur', 'visible' : true},
                    {'name' : 'Skogsbilveier', 'visible' : true},
                    {'name' : 'Sykkelruter', 'visible' : true},
                    {'name' : 'TurstiMarka', 'visible' : true},
                    {'name' : 'TurstierBy', 'visible' : true},
                    {'name' : 'TurveierBy', 'visible' : true}
                    ];
            }
            else
            {
                this.m_poiCollection = $H(
            {
                // Vinter:
                "Skileik"               :       {selected: false, viewport: null, featureNumber: "Skileik"},
                "Alpinbakke"            :       {selected: false, viewport: null, featureNumber: "Alpinbakke"},
                "Hoppbakke"             :       {selected: false, viewport: null, featureNumber: "Hoppbakke"},
                "Skianlegg langrenn"    :       {selected: false, viewport: null, featureNumber: "Skianlegg langrenn"},
                "Skiskyteanlegg"        :       {selected: false, viewport: null, featureNumber: "Skiskyteanlegg"},
                "Akebakke"              :       {selected: false, viewport: null, featureNumber: "Akebakke"},
                "Isbane"                :       {selected: false, viewport: null, featureNumber: "Isbane"},
                "Hytter til leie"       :       {selected: false, viewport: null, featureNumber: "Hytter til leie"},
                "Informasjonstavle"     :       {selected: false, viewport: null, featureNumber: "Informasjonstavle"},
                "Markastue"             :       {selected: false, viewport: null, featureNumber: "Markastue"},
                "Toalett"               :       {selected: false, viewport: null, featureNumber: "Toalett"},
                "Fredet fornminne"      :       {selected: false, viewport: null, featureNumber: "Fredet fornminne"},
                "Fredet kulturminne"    :       {selected: false, viewport: null, featureNumber: "Fredet kulturminne"},
                "Bom"                   :       {selected: false, viewport: null, featureNumber: "Bom"},
                "Holdeplass"            :       {selected: false, viewport: null, featureNumber: "Holdeplass"},
                "Parkeringsplass"       :       {selected: false, viewport: null, featureNumber: "Parkeringsplass"},
                "Buss"                  :       {selected: false, viewport: null, featureNumber: "Buss"},
                "Trikk"                 :       {selected: false, viewport: null, featureNumber: "Trikk"},
                "T-bane"                :       {selected: false, viewport: null, featureNumber: "T-bane"},
                "DNT hytte ubetjent"    :       {selected: false, viewport: null, featureNumber: "DNT hytte ubetjent"},
                "DNT hytte betjent"     :       {selected: false, viewport: null, featureNumber: "DNT hytte betjent"},
                "Privat hytte ubetjent" :       {selected: false, viewport: null, featureNumber: "Privat hytte ubetjent"},
                "Privat hytte betjent"  :       {selected: false, viewport: null, featureNumber: "Privat hytte betjent"}
            }       
        );
            map.WMSLayers = [
                {'name' : 'Lys_status', 'visible' : true},
                {'name' : 'Skoyting_status', 'visible' : true},
                {'name' : 'Tospor_status', 'visible' : true},
                {'name' : 'Normal', 'visible' : true},
                {'name' : 'Tospor', 'visible' : true},
                {'name' : 'Kommuneskogen', 'visible' : true},
                {'name' : 'Markagrense', 'visible' : true},
                {'name' : 'Lys', 'visible' : true},
                {'name' : 'Skoyting', 'visible' : true},
                {'name' : 'Scooter', 'visible' : true},
                {'name' : 'Skiforeningen', 'visible' : true},
                {'name' : 'StilleOmr', 'visible' : false},
                {'name' : 'FriOmrHund', 'visible' : false},
                {'name' : 'TurstiMarka_Natur', 'visible' : false},
                {'name' : 'Skogsbilveier', 'visible' : false},
                {'name' : 'Sykkelruter', 'visible' : false},
                {'name' : 'TurstiMarka', 'visible' : false},
                {'name' : 'TurstierBy', 'visible' : false},
                {'name' : 'TurveierBy', 'visible' : false}
            ];
            }
        map._createWMSLayer();
        this.m_poiCollection.each(t_check);
    },
    
    toggleAllOnOff : function(){
        this.m_allSelected = !this.m_allSelected;
        
        if(this.m_allSelected == true){
            this.selectAllPOI();
            this.selectTooltipLayers();
            this._createRequest();
        }
        else{
            this.deselectAllPOI();
            this.deSelectTooltipLayers();
            this._createRequest();
            this.m_mapController.removeHotspots('cID');
        }
    },
    
    deselectAllPOI : function(){
                
        var t_check = function(t_value) 
        {
            t_value[1].selected = false;                
        };
        this.m_poiCollection.each(t_check);
        
        map.WMSLayers = [
            {'name' : 'Lys_status', 'visible' : false},
            {'name' : 'Skoyting_status', 'visible' : false},
            {'name' : 'Tospor_status', 'visible' : false},
            {'name' : 'Normal', 'visible' : false},
            {'name' : 'Tospor', 'visible' : false},
            {'name' : 'Kommuneskogen', 'visible' : false},
            {'name' : 'Markagrense', 'visible' : false},
            {'name' : 'Lys', 'visible' : false},
            {'name' : 'Skoyting', 'visible' : false},
            {'name' : 'Scooter', 'visible' : false},
            {'name' : 'Skiforeningen', 'visible' : false},
            {'name' : 'StilleOmr', 'visible' : false},
            {'name' : 'FriOmrHund', 'visible' : false},
            {'name' : 'TurstiMarka_Natur', 'visible' : false},
            {'name' : 'Skogsbilveier', 'visible' : false},
            {'name' : 'Sykkelruter', 'visible' : false},
            {'name' : 'TurstiMarka', 'visible' : false},
            {'name' : 'TurstierBy', 'visible' : false},
            {'name' : 'TurveierBy', 'visible' : false}
            ];
            map._createWMSLayer();
    },
    
    deselectAll : function(){
            this.m_poiCollection = $H(
            {
                // Vinter:
                "Skileik"                   :       {selected: false, viewport: null, featureNumber: "Skileik"},
                "Alpinbakke"                :       {selected: false, viewport: null, featureNumber: "Alpinbakke"},
                "Hoppbakke"                 :       {selected: false, viewport: null, featureNumber: "Hoppbakke"},
                "Skianlegg langrenn"        :       {selected: false, viewport: null, featureNumber: "Skianlegg langrenn"},
                "Skiskyteanlegg"            :       {selected: false, viewport: null, featureNumber: "Skiskyteanlegg"},
                "Akebakke"                  :       {selected: false, viewport: null, featureNumber: "Akebakke"},
                "Isbane"                    :       {selected: false, viewport: null, featureNumber: "Isbane"},
                "Hytter til leie"           :       {selected: false, viewport: null, featureNumber: "Hytter til leie"},
                "Informasjonstavle"         :       {selected: false, viewport: null, featureNumber: "Informasjonstavle"},
                "Markastue"                 :       {selected: false, viewport: null, featureNumber: "Markastue"},
                "Toalett"                   :       {selected: false, viewport: null, featureNumber: "Toalett"},
                "Fredet fornminne"          :       {selected: false, viewport: null, featureNumber: "Fredet fornminne"},
                "Fredet kulturminne"        :       {selected: false, viewport: null, featureNumber: "Fredet kulturminne"},
                "Bom"                       :       {selected: false, viewport: null, featureNumber: "Bom"},
                "Holdeplass"                :       {selected: false, viewport: null, featureNumber: "Holdeplass"},
                "Parkeringsplass"           :       {selected: false, viewport: null, featureNumber: "Parkeringsplass"},
                "Buss"                      :       {selected: false, viewport: null, featureNumber: "Buss"},
                "Trikk"                     :       {selected: false, viewport: null, featureNumber: "Trikk"},
                "T-bane"                    :       {selected: false, viewport: null, featureNumber: "T-bane"},
                // Sommer:
                "Badeplass"                 :       {selected: false, viewport: null, featureNumber: "Badeplass"},
                "Kiosk"                     :       {selected: false, viewport: null, featureNumber: "Kiosk"},
                "Kafe restaurant"           :       {selected: false, viewport: null, featureNumber: "Kafe restaurant"},
                "Fastgrill"                 :       {selected: false, viewport: null, featureNumber: "Fastgrill"},
                "Smabathavn"                :       {selected: false, viewport: null, featureNumber: "Smabathavn"},
                "Ildsted"                   :       {selected: false, viewport: null, featureNumber: "Ildsted"},
                "Fiskevann"                 :       {selected: false, viewport: null, featureNumber: "Fiskevann"},
                "Drikkevannskilde"          :       {selected: false, viewport: null, featureNumber: "Drikkevannskilde"},
                "Friomrade for hund"        :       {selected: false, viewport: null, featureNumber: "Friomrade for hund"},
                "Stille omrade"             :       {selected: false, viewport: null, featureNumber: "Stille omrade"},
                "Lekeplass"                 :       {selected: false, viewport: null, featureNumber: "Lekeplass"},
                "Besoksgard"                :       {selected: false, viewport: null, featureNumber: "Besoksgard"},
                "Klatrefelt"                :       {selected: false, viewport: null, featureNumber: "Klatrefelt"},
                "Bevaringsverdig skog"      :       {selected: false, viewport: null, featureNumber: "Bevaringsverdig skog"},
                "HC-tilrettelagt toalett"   :       {selected: false, viewport: null, featureNumber: "HC-tilrettelagt toalett"},
                "HC-tilrettelagt badeplass" :       {selected: false, viewport: null, featureNumber: "HC-tilrettelagt badeplass"},
                "HC-tilrettelagt fiskevann" :       {selected: false, viewport: null, featureNumber: "HC-tilrettelagt fiskevann"},
                "DNT hytte ubetjent"        :       {selected: false, viewport: null, featureNumber: "DNT hytte ubetjent"},
                "DNT hytte betjent"         :       {selected: false, viewport: null, featureNumber: "DNT hytte betjent"},
                "Privat hytte ubetjent"     :       {selected: false, viewport: null, featureNumber: "Privat hytte ubetjent"},
                "Privat hytte betjent"      :       {selected: false, viewport: null, featureNumber: "Privat hytte betjent"},
                "Normal"                    :       {selected: false, viewport: null, featureNumber: "Normal"}
            }       
        );
    },
    
    _stateChanged : function(t_eventDetails){
    
    this.m_mouseLat = t_eventDetails.lat;
    this.m_mouseLon = t_eventDetails.lon;
        if(t_eventDetails.eventType == StateManager.Mouse.MOVE){
        this.m_mouseInside = true;
            //alert(t_eventDetails.lat);
            this.m_guiController.closeLoypePop();
            this.m_guiController.closeBubble();
            
            	if(this.m_loypeTimer != null){
	    clearTimeout(this.m_loypeTimer)
	    }
	            //alert(t_value);
            //if(this.m_mapController.getSeason() == 'vinter')   
                this.m_loypeTimer = setTimeout(this.fetchLoypeInfo.bind(this),750);
                
            //$('loypePop').style.top = (parseInt(t_eventDetails.y) - 50) + "px";
            //$('loypePop').style.left = (parseInt(t_eventDetails.x) + 150) +"px";
            mouseX = Event.pointerX(t_eventDetails.event);
            mouseY = Event.pointerY(t_eventDetails.event);

            $('loypePop').style.top = (mouseY - 10) + "px";
            $('loypePop').style.left = (mouseX - 10) +"px";
        }
        
        if(t_eventDetails.eventType == StateManager.Mouse.OUT){
            //alert(t_eventDetails.lat);
        
        }
        if(t_eventDetails.eventType == StateManager.Mouse.UP){
        // HACK: direct link to map
        //map.clearDistanceMarkers();
            if(map.getMeasureState() == false){
                map.addDistanceMarker(this.m_mouseLat, this.m_mouseLon);
                //alert(map.fillCoordinateBox());
                if(map.getState() == 'showcoordinate'){
                    map.clearDistanceMarkers();
                    map.addDistanceMarker(this.m_mouseLat, this.m_mouseLon);
                    this.m_menuController.setCoordinateHTML(map.fillGPSBox());
                }
                else{
                    this.m_menuController.setDistanceHTML(map.fillCoordinateBox());
                }
            }
        }
        
        if(t_eventDetails.eventType == StateManager.Mouse.OUT){
            if(this.m_loypeTimer != null){
	            clearTimeout(this.m_loypeTimer)
	        }
        }
    },
    
    searchAddress : function(search){
        Opplysningen.Rio.Web.AjaxServices.AddressService.searchAddress(search,this.onAddressSuccess, this.onAddressFailed, this);
    },
    
    selectTooltipLayers : function(season){
                   for(var j = 0; j < this.m_tooltipLayersSummer.length; j++){
                    this.m_tooltipLayersSummer[j].visible = true;
                }
           for(var j = 0; j < this.m_tooltipLayersWinter.length; j++){
                    this.m_tooltipLayersWinter[j].visible = true;
                } 
    },
    
    deSelectTooltipLayers : function(season){
                   for(var j = 0; j < this.m_tooltipLayersSummer.length; j++){
                    this.m_tooltipLayersSummer[j].visible = false;
                }
           for(var j = 0; j < this.m_tooltipLayersWinter.length; j++){
                    this.m_tooltipLayersWinter[j].visible = false;
                }
    },
    
    addTooltipLayers : function(layer){ 
           for(var j = 0; j < this.m_tooltipLayersSummer.length; j++){
                if(this.m_tooltipLayersSummer[j].name == layer){
                    this.m_tooltipLayersSummer[j].visible = true;
                    break;
                }
            }
           for(var j = 0; j < this.m_tooltipLayersWinter.length; j++){
                if(this.m_tooltipLayersWinter[j].name == layer){
                    this.m_tooltipLayersWinter[j].visible = true;
                    break;
                }
            }            
    },
    
    getTooltipLayers : function(){
    var ret = "";
    if(this.m_mapController.getSeason() == 'sommer'){
           for(var j = 0; j < this.m_tooltipLayersSummer.length; j++){
                if(this.m_tooltipLayersSummer[j].visible == true){
                    this.m_tooltipLayersSummer[j].visible = true;
                    ret += this.m_tooltipLayersSummer[j].name;
                    if(j < this.m_tooltipLayersSummer.length - 1)
                        ret += ',';
                }
            }  
             
            }
            else{
                for(var j = 0; j < this.m_tooltipLayersWinter.length; j++){
                if(this.m_tooltipLayersWinter[j].visible == true){
                    this.m_tooltipLayersWinter[j].visible = true;
                    ret += this.m_tooltipLayersWinter[j].name;
                    if(j < this.m_tooltipLayersWinter.length - 1)
                        ret += ',';
                }
            } 
            }
            return ret;     
    },
    
    removeTooltipLayers : function(layer){
            for(var j = 0; j < this.m_tooltipLayersSummer.length; j++){
                if(this.m_tooltipLayersSummer[j].name == layer){
                    this.m_tooltipLayersSummer[j].visible = false;
                }
            }
            
            for(var j = 0; j < this.m_tooltipLayersWinter.length; j++){
                if(this.m_tooltipLayersWinter[j].name == layer){
                    this.m_tooltipLayersWinter[j].visible = false;
                }
            }
    },
    
    selectPOI : function(controller){
        var someNodeList = this.m_menuController.getMenu().$(controller).getElementsByTagName('option');
		var nodes = $A(someNodeList);
		var selected = "";
		nodes.each(function(node){
		    if(node.selected == true){
		        //alert(node.nodeName + ': ' + node.value);
		        selected = node.value;
		    }
				
			});
        if(selected != "dummy"){
		    var coordinates = selected.split(";");    
            var wgs = UTMToLatLon(Number(coordinates[0]), Number(coordinates[1]), 33);
            this.m_mapController.centerAndZoomUTM(Number(coordinates[0]), Number(coordinates[1]),1);
            this.m_guiController.setFlag(wgs.lat,wgs.lon,"","");
            this.addAnnotation(coordinates[0],coordinates[1],coordinates[3],coordinates[2],"");
        }
    },
    
    addLabels : function(labels){
        for(var i = 0; i < labels.length; i++){
            this.m_guiController.addFlags(labels);
        }
    },
    
    setAndCenterOnPOIFlag : function(northing, easting){
        var wgs = UTMToLatLon(Number(northing), Number(easting), 33);
        this.m_mapController.centerAndZoomUTM(northing,easting,3);
        this.m_guiController.setFlag(wgs.lat,wgs.lon,"","");
        // TEST:
        this.addAnnotation(northing,easting);
    },
    
    addAnnotation : function(northing, easting, cat, title, description,url)
    {
        if(!url)
            url = "";
        this.m_guiController.addSingleAnnotation(northing,easting,cat,title,description,url);
        this.m_searchresultPOI = {'no':northing,'ea':easting,'t':cat};
        //this.m_mapController.addHotspot($('controllerNavigationPane'),"test",$('controllerNavigationPane'),"Resource/Map/images/gfx2/poi/Badeplass.gif",northing, easting,"title","d",null,0,99,0,0,"type");
    },
    
    searchAll : function(search){

		var someNodeList = this.m_menuController.getMenu().$('searchOptions').getElementsByTagName('input');
		var nodes = $A(someNodeList);
        var selected = "";
		nodes.each(function(node){
		    if(node.checked == true){
		        //alert(node.nodeName + ': ' + node.value);
		        selected = node.value;
		    }
				
			});
			
	    if(selected == "loype"){
	        Opplysningen.Rio.Web.AjaxServices.POIProxy.searchLoype(search,this.onPOISuccess,this.onPOIFailed,this);
	    }
	    if(selected == "poi"){
	        Opplysningen.Rio.Web.AjaxServices.POIProxy.searchPOI(search,this.onPOISuccess,this.onPOIFailed,this);
	    }
	    if(selected == "adr"){
	        Opplysningen.Rio.Web.AjaxServices.AddressService.searchAddress(search,this.onAddressSuccess, this.onAddressFailed, this);
	    }
	    if(selected == "sted"){
	        Opplysningen.Rio.Web.AjaxServices.AddressService.searchPlace(search, this.onAddressSuccess, this.onAddsessFailed, this);
	    }
	
    },
    
    onAddressSuccess : function(t_value, t_thisbind)
    {
        t_thisbind.m_menuController.updateSearchResult(t_value);
    },
    
    onPOISuccess : function(t_value, t_thisbind)
    {
        t_thisbind.m_menuController.updateSearchResult(t_value);
    },
    
    fetchLoypeInfo : function(){
    
	Opplysningen.Rio.Web.AjaxServices.LoypeInfoProxy.getLoypeInfo(
	    this.m_mouseLon,
	    this.m_mouseLat,
	    this.m_mapController.getSeason(),
	    this.getTooltipLayers(),                  
	    this._onLoypeSuccess,
        this._onLoypeFailed,
        this);
	},
	
	_onLoypeSuccess : function(t_value, t_thisbind)
    {
    
        //wedebug.log("poi", "_onPOISuccess: " + t_value);
        try
        {
            t_thisbind.m_guiController.openLoypePop(t_value);
            
            //var pois = t_value;
            //wedebug.log("poi", "POI querystring: " + t_thisbind.m_guiController );
            //wedebug.log("poi", "_onPOISuccess: " + pois[0].Name);
            //t_thisbind.m_guiController.addAnnotationsFromService(t_value,t_thisbind.m_poiCollectionId, t_thisbind.m_upperLevel);
            //t_thisbind.m_guiController.addAnnotationsFromService(t_value,t_thisbind.m_poiCollectionId, 66);
        }
        catch(e)
        {}
        
        //t_thisbind.m_guiController.hideSpinner();
    },
    
    _onLoypeFailed : function(t_value, t_thisbind)
    {
  
        //wedebug.log("poi", "Error communicating with shortest path web service proxy.","error");
        //t_thisbind.m_guiController.hideSpinner();
    },
    
    poiChecked : function(t_type, t_icon)
    {        
        this.m_poiCollection[t_type].selected = true;                    
        var t_bbox = this.m_mapController.getViewport();
        this._createRequest(t_bbox);  
        this.m_poiCollection[t_type].viewport = t_bbox;      
    },
    
    getUpperLevel : function()
    {
        return m_upperLevel;
    },

//    poiChecked : function(t_type, icon)
//    {
//        this.m_poiCollection[t_type].selected = true;
//        var t_bbox = this.m_mapController.getViewport();
//        this.m_poiCollection[t_type].viewport = t_bbox;   
//        
////                "minX" : (t_bbox.minLat),
////                "maxX" : (t_bbox.maxLat),
////                "minY" : (t_bbox.minLon),
////                "maxY" : (t_bbox.maxLon)
//        
//        Opplysningen.Online.Web.Map.WebAtlasMap.POIProxy.GetPOI(
//            "", //id
//            "", //gruppe
//            t_type, //t_type
//            "", //poitype?
//            "", //kommune
//            "", //postnummer
//            "", //brandname
//            "", //companyname
//            t_bbox.minLat, //minX
//            t_bbox.maxLat, //maxX
//            t_bbox.minLon, //minY
//            t_bbox.maxLon, //maxY
//            "", //kunde
//            "23", //koordsys
//            this.cb_poiWSSuccess,
//            this.cb_poiWSFailed,
//            this);
//    },
//    
//    _cb_poiWSSuccess : function(t_value, t_thisbind)
//    {
//        alert(t_value);
//    },
//    
//    _cb_poiWSFailed : function(t_value, t_thisbind)
//    {
//    
//    },

    _getCheckedPoiTypes : function()
    {
        var t_types = "";       
        
        var t_check = function(t_value) 
        {
            if( t_value[1].selected )
            {
                if(t_types != "")
                {
                    t_types += ",";
                }
                t_types += t_value[1].featureNumber;                
            }
        };
        this.m_poiCollection.each(t_check);
        return t_types;
    },
    
    _createRequest : function(t_bbox)
    {
        var t_types = this._getCheckedPoiTypes(); 
        
        if( t_types != "" )
        {
//            var min = decimalDegreesToUTM({x: t_bbox.minLon, y: t_bbox.minLat});
//            var max = decimalDegreesToUTM({x: t_bbox.maxLon, y: t_bbox.maxLat});
            //alert([min.x, min.y, max.x, max.y]);
//            var t_params = $H({
//                "Layers" : types,
//                //"koordsys" : 23,
//                "SRS" : "EPSG:4236",
////                "minX" : parseInt(t_bbox.maxLon),
////                "maxX" : parseInt(t_bbox.minLat),
////                "minY" : parseInt(t_bbox.minLon),
////                "maxY" : parseInt(t_bbox.maxLat)
//                "minX" : (t_bbox.minLat),
//                "maxX" : (t_bbox.maxLat),
//                "minY" : (t_bbox.minLat),
//                "maxY" : (t_bbox.maxLon)
//                //"kommune" : "0301"
//            });
            
    //        string URL = "http://test.gisline.no/GISLINEPOI/RssService.aspx?koordsys=23&minY=" + envelope.left + 
    //        "&minX=" + envelope.bottom + 
    //        "&maxY=" + envelope.right + 
    //        "&maxX=" + envelope.top;
            
            //this.m_guiController.loadGeoRSS(url, this.m_poiCollectionId, null, null, this.m_upperLevel);  
            this._fetchPOIFromProxy(t_types);           
        }
        else
        {
            this.m_mapController.removeHotspots(this.m_poiCollectionId);       
        }
    },
    
    _fetchPOIFromProxy : function(t_types)
    {
        if( this.m_currentProvider != null &&
            this.m_currentProvider == "VirtualEarthMap" )
        {
            return;
        }
        
        if( t_types != "" )
        {
            var t_bbox = this.m_mapController.getViewport();
            //wedebug.log("poi", "_fetchPOIFromProxy ");
            //var t_bottomLeft = decimalDegreesToUTM({ 'x': t_bbox.minLon, 'y': t_bbox.minLat });
            //var t_topRight = decimalDegreesToUTM({ 'x': t_bbox.maxLon, 'y': t_bbox.maxLat });
    
            var t_bottomLeft = { 'x': Math.ceil(t_bbox.minLon), 'y': Math.ceil(t_bbox.minLat) };
            var t_topRight = { 'x': Math.ceil(t_bbox.maxLon), 'y': Math.ceil(t_bbox.maxLat)};

            this.m_guiController.showSpinner();
            //Opplysningen.Rio.Web.AjaxServices.POIProxy.getPOI(
            this.m_scriptService(
                    t_types,
                    t_bottomLeft.x,
                    t_bottomLeft.y,
                    t_topRight.x,
                    t_topRight.y,
                    this._onPOISuccess,
                    this._onPOIFailed,
                    this);
                    wedebug.log("poi", "BottomX: " + t_bottomLeft.x + " Bottom.y " + t_bottomLeft.y + "BottomX: " + t_topRight.x + " Top.y " + t_topRight.y);
        }
        else
        {
            this.m_mapController.removeHotspots(this.m_poiCollectionId);       
        }
    },
    
    _onPOISuccess : function(t_value, t_thisbind)
    {
        //wedebug.log("poi", "_onPOISuccess: " + t_value);
        try
        {
            //var pois = t_value;
            wedebug.log("poi", "POI querystring: " + t_thisbind.m_guiController );
            //wedebug.log("poi", "_onPOISuccess: " + pois[0].Name);
            //t_thisbind.m_guiController.addAnnotationsFromService(t_value,t_thisbind.m_poiCollectionId, t_thisbind.m_upperLevel);
            t_thisbind.m_guiController.addAnnotationsFromService(t_value,t_thisbind.m_poiCollectionId, 66);
        }
        catch(e)
        {}
        
        t_thisbind.m_guiController.hideSpinner();
    },
    
    _onPOIFailed : function(t_value, t_thisbind)
    {
        wedebug.log("poi", "Error communicating with shortest path web service proxy.","error");
        t_thisbind.m_guiController.hideSpinner();
    },
    
    poiUnchecked : function(t_type)
    {
        this.m_poiCollection[t_type].selected = false;
        var t_bbox = this.m_mapController.getViewport();
        this._createRequest(t_bbox);  
        this.m_mapController.removeHotspots(t_type);        
    },
    
    _cb_onChangeStyle : function(t_style)
    {
        this._cb_onChangeView(null, t_style, this.m_mapController.getZoomLevel(), null, this.m_mapController.getMapProvider());
    },
    
    _cb_onChangeView : function(t_center, t_style, t_level, t_viewport, t_mapProvider)
    {
        wedebug.log("poi", "-> _cb_onChangeView: " + [t_center, t_style, t_level, t_viewport, t_mapProvider]);
        
        this.m_currentProvider = t_mapProvider;
        
        var t_menu = this.m_menuController.getMenu();        
        if( t_level <= 66 && 
            t_style != MapController.Styles.BIRDS_EYE &&
            t_mapProvider == "GLMap" )
        {
            this._createRequest(t_viewport);  
            
            if( t_menu != null )
            {
                t_menu.$attemptInvoke(
                    function()
                    {
                        t_menu.collapsible.showPane(
                            t_menu.Collapsible.PANELS.POI, false, false
                        );   
                    }
                ); 
            }
        }
        else if( t_menu != null )
        {
        /*
            t_menu.$attemptInvoke(
                function()
                {
                    t_menu.collapsible.hidePane(
                        //t_menu.Collapsible.PANELS.POI
                    );  
                }
            );             
        */}
        
    }   
}

