function Kart(id, map,kartPunkter, rapport, rapportRedigering, utgangsPunkt)
{   
    if(visFunksjonsKall)alert('Oppretter kart objekt...');
   //Egenskaper
   this._id = id;
   this._map = map;
   this._kartPunkter = kartPunkter;
   this._rapport = rapport;
   this._rapportRedigering = rapportRedigering;   
   this._utgangsPunkt = utgangsPunkt;  
   
}

//Metoder
Kart.prototype.finnSkala = function()
{
   if(visFunksjonsKall)alert('finnSkala()');
   try{
        var skala;
        var maaleStokk;
        /*if(this._map.scaleControl.B.metricLbl.innerHTML.match("km")){
            skala = this._map.scaleControl.B.metricLbl.innerHTML.replace("km","");                            
            maaleStokk = "km";
        }
        else if (this._map.scaleControl.B.metricLbl.innerHTML.match("m")){
            skala = this._map.scaleControl.B.metricLbl.innerHTML.replace("m","");                            
            maaleStokk = "m";
        }*/
        maaleStokk = "m";
        skala = "1";
        
        return{
            skala: skala,
            maaleStokk: maaleStokk
        }
    }
    catch(err)
    {
        if(debug)alert("finnSkala feilet. " + err);
    }  
}

Kart.prototype.visStasjoner = function()
{
    if(visFunksjonsKall)alert('visStasjoner()');
    for(var i = 0; i < this._kartPunkter.length; i++)
    {
        this._kartPunkter[i].show();
    }
}

Kart.prototype.skjulStasjoner = function()
{
    if(visFunksjonsKall)alert('SkjulStasjoner()');
    try{
        for(var i = 0; i < this._kartPunkter.length; i++)
        {
            if(this._kartPunkter[i].dataType != null && this._kartPunkter[i].dataType != "")
            {
                var stasjonsServicer = this._kartPunkter[i].dataType.split("");
                
                var skjulStasjon = true;
                for(var j=0; j < stasjonsServicer.length; j++)
                {   
                    var serviceId;
                    switch(stasjonsServicer[j])
                    {
                        case "D":
                            serviceId = 1;
                            break;
                        case "H":
                            serviceId = 2;
                            break;
                        case "S":
                            serviceId = 3;
                            break;
                        case "G":
                            serviceId = 4;
                            break;
                        default:
                            serviceId = -1;
                            break                            
                    }                           
                    skjulStasjon = skjulStasjon && !serviceTabell[serviceId];
                }
                
                if(skjulStasjon)
                {
                    this._kartPunkter[i].hide();                    
                    this._rapport.fjernStasjon(i, this._kartPunkter);
                }
                else
                {   
                    this._kartPunkter[i].show();
                    this._rapport.oppdaterRapport(this._kartPunkter, this.finnSkala(), this._rapportRedigering.radius, this._utgangsPunkt, i);
                }
            }
        } 
    }
    catch(err)
    {
        if(debug)alert("skjulStasjoner feilet. " + err);
    }         
}

Kart.prototype.punktKlikk = function(marker, html)
{
    if(visFunksjonsKall)alert('punktKlikk()');
    if(html != null && html != "" && html != "$html$")
    {
        marker.openInfoWindow(html);
    }
    
    marker.openInfoWindow(marker.html);
}

Kart.prototype.oppdaterUtgangspunkt = function(point, fraTekstBoks)
{
    if(visFunksjonsKall)alert('oppdaterUtgangsPunkt()');
    try{                                                 
        
        this._rapportRedigering.oppdaterTekstBokser(point);        
        this.oppdaterHiddenTekstBokser();
        
        if(this._utgangsPunkt != null)
        {
            if(this._utgangsPunkt._marker != null)
            {
                this._utgangsPunkt.oppdaterPunkt(point);                
            }            
        }     
         
        if(this._utgangsPunkt._sirkel._marker != null)
        {
            this._map.removeOverlay(this._utgangsPunkt._sirkel._marker)
        }
        //this._map.addOverlay(this._utgangsPunkt._marker);
        
        var diameter = this._utgangsPunkt._sirkel.finnDiameter(); 
        
        this._utgangsPunkt._sirkel._marker  = new GMarker(point, this._utgangsPunkt._sirkel._ikon);                                                                                   
        this._utgangsPunkt._sirkel._ikon.iconSize = new GSize(diameter,diameter);
        this._utgangsPunkt._sirkel._ikon.iconAnchor = new GPoint(diameter/2,diameter/2);        
        
        //Oppdaterer sirkel
        this.oppdaterUtgangspunktSirkel(diameter);   
        
        //oppdaterer kartsentrum
        if(fraTekstBoks != null)
        {
            if(fraTekstBoks != false)
            {
                this._map.setCenter(new GLatLng(point.y, point.x)); 
                
            }
        }           
        
        this._rapport.oppdaterRapport(this._kartPunkter, this.finnSkala(), this._rapportRedigering.radius(), this._utgangsPunkt);                   
    }
    catch(err)
    {
       if(debug)alert("oppdaterUtgangspunkt feilet. " + err);
    }
}

Kart.prototype.oppdaterUtgangspunktSirkel = function(diameter)
{
    if(visFunksjonsKall)alert('OppdaterUtgangsPunktSirkel()');
    
    try{
        this._map.addOverlay(this._utgangsPunkt._sirkel._marker, this._utgangsPunkt._sirkel._ikon);            
    }
    catch(err)
    {
        if(debug)alert("oppdaterUtgangsPunktSirkel feilet. Error : " + err);
    }
}

Kart.prototype.visRapport = function(vis)
{
    if(visFunksjonsKall) alert("Kart.VisRapport()");
    if(this._rapport != null)
    {
        this.skjul(vis);
        this._rapport.visRapport(vis);
    }
}

Kart.prototype.skjul = function(vis)
{   
    if(visFunksjonsKall) alert("Kart.Skjul()");
    try{
        if(!vis)
        {   
            document.getElementById("tblFullRapport").style.display = 'none';
            document.getElementById(pnlElevId).style.display = 'none';
            //document.getElementById(pnlElevId).style.display = 'none';
            document.getElementById("tblLagPdf").style.display = 'none';
            //document.getElementById("tblLagPDF").style.display = 'none';
            document.getElementById(kartPanelId).style.display = '';
        }
        else
        {
            document.getElementById("tblFullRapport").style.display = '';
            document.getElementById(pnlElevId).style.display = '';
            //document.getElementById(pnlElevId).style.display = '';
            document.getElementById("tblLagPdf").style.display = '';
            //document.getElementById("tblLagPDF").style.display = '';
            document.getElementById(kartPanelId).style.display = 'none';
        }
    }
    catch(err)
    {
        if(debug) alert("skjulKart feilet. " + err);
    }
}

Kart.prototype.oppdaterHiddenTekstBokser = function()
{    
        
    if(document.getElementById(hiddenSenterId) != undefined)
    {        
        if(hiddenSenterId != "")
        {
            document.getElementById(hiddenSenterId).value = this._utgangsPunkt._marker.getPoint().y + "," + this._utgangsPunkt._marker.getPoint().x;
        }
                
        if(hiddenLengdeId != "")
        {
            document.getElementById(hiddenLengdeId).value = this._rapportRedigering.lengdeGrad();
        }
        
        if(hiddenBreddeId != "")        
        {
            document.getElementById(hiddenBreddeId).value = this._rapportRedigering.breddeGrad();
        }       
        if(hiddenRadiusId != "")
        {
            document.getElementById(hiddenRadiusId).value = this._rapportRedigering.radius();
        }
        
        if(hiddenRektangelGrenseSWId != "" && hiddenRektangelGrenseNEId != "")
        {
            var grenser = this.finnRektangelGrense(this._utgangsPunkt._marker.getPoint(), this._rapportRedigering.radius(), 0);
            var NE = grenser.NE;
            var SW = grenser.SW;        
                    
            document.getElementById(hiddenRektangelGrenseSWId).value = SW.y + "," + SW.x;
            document.getElementById(hiddenRektangelGrenseNEId).value = NE.y + "," + NE.x;
        }     
          
    }
}

Kart.prototype.finnRektangelGrense = function(point, radius, delta)
{
    var Px = point.x;
    var Py = point.y;
    var deltaX = deltaY = delta;
//    alert(point + ";" + radius + ";" + delta);    
    var avstandIGrader = parseFloat(parseFloat(radius + delta) / 111);
//    alert(avstandIGrader);
    
    var P1 = new GPoint();
    var P2 = new GPoint();
    
    P1.x = parseFloat(Px) - avstandIGrader;
    P1.y = parseFloat(Py) - avstandIGrader;
    
//    alert(P1);
    P2.x = parseFloat(Px) + avstandIGrader;
    P2.y = parseFloat(Py) + avstandIGrader;
//    alert(P2);
    
//    alert("P1 : " + P1.x + "," + P1.y);
//    alert("P2 : " + P2.x + "," + P2.y);

    return {SW: P1,NE: P2};
}


//            this._map.utgangsPunkt = UTGANGSPUNKT;")
//            this._map.scaleControl = new GScaleControl();")
//            this._map.rapportRedigering = RAPPORTREDIGERING;")
//            this._map.rapport = RAPPORT;")

//            this._map.rapportRedigering.initialiserServiceTabeller;")

//            this._map.utgangsPunkt.sirkel.ikon = new GIcon();")
//            this._map.utgangsPunkt.sirkel.ikon.image = infolinkUrl + '/Images/KartIkoner/sirkel.png'; ")


