﻿//Konstruktør
function RapportRedigering(kartId){
    if(visFunksjonsKall)alert('Oppretter RapportRedigering...');
    //Egenskaper
    this._kartId = kartId;
    kId = kartId;
}
    
//Eventer
RapportRedigering.prototype.onRadiusEndret = function()
{
    if(visFunksjonsKall)alert('RapportRedigering.onRadiusEndret()');
    try{       
        if(KARTLISTE.hentKart(kId)._utgangsPunkt._marker != null && !isNaN(this.radius()))
        {                                        
            KARTLISTE.hentKart(kId).oppdaterUtgangspunkt(KARTLISTE.hentKart(kId)._utgangsPunkt._marker.getPoint(), true);
        }            
   }
   catch(err)
   {   
        if(debug)alert("onRadiusEndret feilet. " + err);   
        return false;      
   }
}

RapportRedigering.prototype.onKoordEndret = function()
{    
    if(visFunksjonsKall)alert('RapportRedigering.onKoordEndret()');
    try{        
        
        this.settServicerMed();
        if(KARTLISTE.hentKart(kId)._rapportRedigering.lengdeGrad() != null)
        {            
            var lGrad = RapportRedigering.prototype.degreesTilGrader(KARTLISTE.hentKart(kId)._rapportRedigering.lengdeGrad());
            var bGrad = RapportRedigering.prototype.degreesTilGrader(KARTLISTE.hentKart(kId)._rapportRedigering.breddeGrad());
        
            if(!isNaN(lGrad) && !isNaN(bGrad)){
                var point = new GPoint(lGrad, bGrad);                  
                KARTLISTE.hentKart(kId).oppdaterUtgangspunkt(point, true);                                
            }            
        }
        else
        {
            var kart = KARTLISTE.hentKart(kId);
            kart.oppdaterUtgangspunkt(kart._utgangsPunkt._marker.getPoint(), true);
        }
    }
    catch(err)
    {
        if(debug)alert("onKoordEndret feilet. " + err);
        return false;
    }
}                        
   
   
//Metoder
RapportRedigering.prototype.radius =  function()
{
    if(visFunksjonsKall)alert('finnRadius()');
    return document.getElementById(tdRadiusId).value;    
}

RapportRedigering.prototype.breddeGrad = function()
{
    if(tdBreddeId != "")
    {
        if(visFunksjonsKall) alert('finnBreddegrad()');
        return document.getElementById(tdBreddeId).value;
    }
    return null; 
}

RapportRedigering.prototype.lengdeGrad = function()
{
    if(tdLengdeId != "")
    {
        if(visFunksjonsKall)alert('finnBreddegrad()');
        return document.getElementById(tdLengdeId).value;
    }
    return null;
}       

RapportRedigering.prototype.settServicerMed = function()
{
    if(visFunksjonsKall)alert('settServicerMed()');
    try{
        if(checkBoxIder != "")
        {
            var checkBoxListe = checkBoxIder.split(";");
            var serviceListe = document.getElementsByName("hService");
            var servicerMed;
            
            for(var i = 0; i < checkBoxListe.length; i++)
            {
                var checkBox = document.getElementById(checkBoxListe[i]);
                if(checkBox.checked)
                {
                    if((serviceListe[i].value != '') && (serviceListe[i].value != 'undefined'))
                    {                                
                        servicerMed += serviceListe[i].value;
                        if(i < checkBoxListe.length - 1)
                        {
                            servicerMed += ",";
                        }
                    }
                }                        
                
            }          
            
            if(servicerMed.indexOf('undefined') >= 0)
            {
                servicerMed = servicerMed.replace('undefined','');
            }
            if(servicerMed[servicerMed.length - 1] == ',')
            {
                servicerMed = servicerMed.substring(0,servicerMed.length - 2);
            }
            
            document.getElementById(hiddenTextBoxId).value = servicerMed;   
        }
    }
    catch(err)
    {
        if(debug)alert("settServicerMed feilet. " + err)
        return false;
    }            
    return true;
}

RapportRedigering.prototype.initialiserServiceTabeller = function () {
    if (visFunksjonsKall) alert('initialiserServiceTabeller())');
    try {
        var skalSkjuleStasjoner = false;
        var checkboxIdListe = checkBoxIder.split(";");
        var serviceListe = document.getElementsByName("hService");
        var skjulAlle = true;

        for (var i = 1; i < checkboxIdListe.length; i++) {
            var checkBox = document.getElementById(checkboxIdListe[i]);
            serviceTabell[i] = checkBox.checked;
            if (!checkBox.checked) skalSkjuleStasjoner = true;
            if (checkBox.checked) skjulAlle = false;
        }

        if (skjulAlle) {
            var rapportTabell = document.getElementById("tblRapport");
            removeChildren(rapportTabell);
            KARTLISTE.hentKart(kId).skjulStasjoner();
        }
        else {
            if (skalSkjuleStasjoner) {
                KARTLISTE.hentKart(kId).skjulStasjoner();
            }
            else {
                KARTLISTE.hentKart(kId).visStasjoner();
            }

            var leggTilStasjon = false;

            var leggTilXP = false;
            var leggTilG2 = false;

            if (document.getElementById(checkboxIdListe[0]).checked) { leggTilXP = true; }
            if (document.getElementById(checkboxIdListe[1]).checked) { leggTilG2 = true; }

            KARTLISTE.hentKart(kId)._rapport.leggTilGlobalStasjon(leggTilXP, "SkyFix-XP", "XP");
            KARTLISTE.hentKart(kId)._rapport.leggTilGlobalStasjon(leggTilG2, "Starfix.G2", "G2");
        }
        KARTLISTE.hentKart(kId)._rapport.lagRapport();
        KARTLISTE.hentKart(kId)._rapport.oppdaterRapport();
    }
    catch (err) {
        if (debug) alert("initialiserServieTabeller feilet. " + err);
        return false;
    }

}   

RapportRedigering.prototype.oppdaterTekstBokser = function(point)                                             
{
    if(visFunksjonsKall)alert('oppdaterTekstBokser()');
    try{
        if(point != null)
        {          
            if(tdBreddeId != "" && tdLengdeId != "")
            {  
                var nordSor = new Array();
                nordSor[0] = 'S';
                nordSor[1] = 'N';
                
                var ostVest = new Array();
                ostVest[0] = 'W';
                ostVest[1] = 'E';
                
                document.getElementById(tdBreddeId).value = this.graderTilDegrees(point.y, nordSor);
                document.getElementById(tdLengdeId).value = this.graderTilDegrees(point.x, ostVest);

                if(document.getElementById(tdRadiusId).value == "") document.getElementById(tdRadiusId).value = "1000";
           }                                
        }
    }
    catch(err)
    {
        if(debug)alert("oppdaterTekstBokser feilet. " + err);
        return false;
    }
}

RapportRedigering.prototype.graderTilDegrees = function(grad, himmelretning)
{
    if(visFunksjonsKall)alert('graderTilDegrees()');
    try{
        var retning;            
        
        var deg = parseInt(grad);
        var min = (grad - deg)*60;
        var sek = (min - parseInt(min)) * 60;
        min = parseInt(min);     
        
        if(deg < 0)
        {
            deg = deg * -1;
            retning = himmelretning[0];
        }       
        else
        {
            retning = himmelretning[1];
        }
        
        if(min < 0) min *= -1;
        if(sek < 0) sek *= -1;
        if(deg < 0) deg *= -1;
        
        sek = Math.round(sek * 1000)/1000;
        min = Math.round(min * 100) / 100;
                                        
        return deg + "°" + min + "'" + sek + "'' " + retning;
    }
    catch(err)
    {
        if(debug)alert("konverterTilDegrees feilet. " + err);
        return false
    }
    return '';
}

RapportRedigering.prototype.degreesTilGrader = function(degrees)
{   
    if(visFunksjonsKall)alert('degreesTilGrader()');
    try{
        var deg, min, sek, grader;
        var indeksGrader, indeksMin, indeksSek;
        
        indeksGrader = degrees.indexOf("°");
        indeksMin = degrees.indexOf("'");
        indeksSek = degrees.indexOf("''");
        
        deg = degrees.substring(0, indeksGrader);
        min = degrees.substring(indeksGrader + 1, indeksMin);
        sek = degrees.substring(indeksMin + 1, indeksSek);
        
        grader = parseInt(deg) + (parseInt(min)/60) + (parseInt(sek)/3600);
        
        if(degrees.indexOf('S') >= 0 || degrees.indexOf('W') >=0)
        {
            grader *= -1;
        }                
        grader = parseInt(grader * 1000000)/1000000;
        return grader;
    }
    catch(err)
    {
        if(debug)alert("degreesTilGrader feilet. " + err);
        return false;
    }
}

RapportRedigering.prototype.visKartRapport = function()
{   
    if(visFunksjonsKall)alert('visKartRapport()');
    try{
        if(document.getElementById(btnVisRapportId).value == 'skjul rapport')
        {
            KARTLISTE.hentKart(kId).visRapport(false);
            document.getElementById(btnVisRapportId).value = 'vis rapport';
        }
        else
        {
            KARTLISTE.hentKart(kId).visRapport(true);
            document.getElementById(btnVisRapportId).value = 'skjul rapport';
        }
        
        
    }
    catch(err)
    {
        if(debug)alert("visRapport i rapporderigering feilet. " + err);
        return false;
    }
    
    return false;
}
