var kategoriId = 0;

//Konstruktør
function KartRapport(kartId){
    if(visFunksjonsKall)alert('Oppretter KartRapport...');
    //Egenskaper
    this._kartId = kartId;
    this._flippFlopp = 1;
}

//Metoder
KartRapport.prototype.oppdaterRapport = function(tblMarkers, skala, radius, utgangsPunkt, indeks)
{
    if(visFunksjonsKall)alert('OppdaterRapport()');
    try{
        KARTLISTE.hentKart(this._kartId).oppdaterHiddenTekstBokser();
        if(indeks != null)
        {
            if(!tblMarkers[indeks].isHidden())
            {           
               this.sjekkStasjon(indeks, utgangsPunkt, skala, radius, tblMarkers);
            }
        }
        else
        {
            tblMarkers.sort(function(a,b){ return a.kategori - b.kategori});
            
            for(var i = 0; i < tblMarkers.length; i++)
            {   
                if(!tblMarkers[i].isHidden())
                {
                    this.sjekkStasjon(i, utgangsPunkt, skala, radius, tblMarkers);
                }
                else
                {
                    this.fjernStasjon(i, tblMarkers);
                }
            }
        }
    } 
    catch(err)
    {
        if(debug)alert("oppdaterRapport feilet. " + err);
    }
}        

KartRapport.prototype.sjekkStasjon = function(indeks, utgangsPunkt, skala, radius, tblMarkers)
{
    if(utgangsPunkt._marker != null)
    {
        var punkt = tblMarkers[indeks].getPoint();                    
        var gjoerOmTilM = 1000;
        
        if(skala.maaleStokk == "km") 
        {
            gjoerOmTilM = 1;
            if((utgangsPunkt._marker.getPoint().distanceFrom(punkt)/1000) <= (radius * gjoerOmTilM))
            {           
                this.fjernStasjon(indeks, tblMarkers);  
                this.leggTilStasjon(indeks, tblMarkers, utgangsPunkt);
            }
            else
            {
                this.fjernStasjon(indeks, tblMarkers);   
            }
        }
        else
        {
            if(utgangsPunkt._marker.getPoint().distanceFrom(punkt) <= (radius * gjoerOmTilM))
            {              
                this.fjernStasjon(indeks, tblMarkers);   
                this.leggTilStasjon(indeks, tblMarkers, utgangsPunkt);
            }
            else
            {
                this.fjernStasjon(indeks, tblMarkers);   
            }
        }
    }
}

KartRapport.prototype.lagRapport = function(markers, utgangspunkt, radius)
{            
    if(visFunksjonsKall)alert('LagRapport()');
    try{
        if(utgangspunkt != null)
        {
            for(var i = 0; i < markers.length; i++)
            {
                if(!markers[i].isHidden())
                {                    
                    var punkt = markers[i].getPoint();
                    var skala = finnSkala();                    
                    this.sjekkStasjon(i, utgangspunkt, skala, radius, markers);
                } 
            }
        }
     }
    catch(err)
    {
        if(debug)alert("lagRapport feilet <br />" + err);
    }
}

KartRapport.prototype.leggTilStasjon = function(indeks, markers, utgangspunkt)
{
    if(visFunksjonsKall)alert('LeggTilStasjon()');
     if(document.getElementById(hiddenPunktIderId).value.indexOf(",'" + markers[indeks].tittel + "'") < 0 && document.getElementById(hiddenPunktIderId).value.indexOf("'" + markers[indeks].tittel + "'") < 0)
    {
        if(document.getElementById(hiddenPunktIderId).value.length > 0)
        {
            document.getElementById(hiddenPunktIderId).value += ",'" + markers[indeks].tittel + "'";
        }
        else
        {
            document.getElementById(hiddenPunktIderId).value += "'" + markers[indeks].tittel + "'";
        }
    }
    this.leggTilStasjonKortRapport(indeks, markers, utgangspunkt);
    this.leggTilStasjonFullRapport(indeks, markers, utgangspunkt);      
}          

KartRapport.prototype.leggTilXpStasjon = function(vis)
{
    var rapportTabell = document.getElementById("tblRapport");
    var fullRapportTabell = document.getElementById("tblFullRapport");
    if(vis)
    {
        var test = document.getElementById("Skyfix-XP");
        if (test != null)
        {
            rapportTabell.tBodies[0].removeChild(test); 
        }
        var tr = document.createElement("tr");
        tr.id = "SkyFix-XP";                
        tr.className = "MargTekst";
        var td = document.createElement("td");                
        td.appendChild(document.createTextNode("SkyFix-XP"));
        tr.appendChild(td);
        
        td = document.createElement("td");
        td.appendChild(document.createTextNode(""));
        tr.appendChild(td);
        
        td = document.createElement("td");
        td.appendChild(document.createTextNode(""));
        tr.appendChild(td);
        
        td = document.createElement("td");
        td.appendChild(document.createTextNode("Global"));
        tr.appendChild(td);
        
        rapportTabell.tBodies[0].appendChild(tr);   
        
        if(document.getElementById(hiddenPunktIderId).value.length > 0)
        {
            document.getElementById(hiddenPunktIderId).value += ",'XP'";
        }
        else
        {
            document.getElementById(hiddenPunktIderId).value += "'XP'";
        }              
        
    }
    else
    {
        var tr = document.getElementById("SkyFix-XP");             
        rapportTabell.tBodies[0].removeChild(tr); 
        document.getElementById(hiddenPunktIderId).value = document.getElementById(hiddenPunktIderId).value.replace(",'XP'", ""); 
        document.getElementById(hiddenPunktIderId).value = document.getElementById(hiddenPunktIderId).value.replace("'XP'", ""); 
    }
    
    if(vis)
    {
        var test = document.getElementById("Skyfix-XP_Full");
        if (test != null)
        {
            fullRapportTabell.tBodies[0].removeChild(test); 
        }
        var farge2 = "#d7e2eb";    
        //Full rapport        
        var trFull = document.createElement("tr");
        trFull.id = "SkyFix-XP_Full";
        trFull.width = "100%";
        if(this._flippFlopp < 0){
            trFull.style.backgroundColor = farge2;
        }
        trFull.className = "InnholdTekst";
        
        var tdFull = document.createElement("td");
        tdFull.appendChild(document.createTextNode("SkyFix-XP"));
        trFull.appendChild(tdFull);            
        
        var tdFull = document.createElement("td");
        tdFull.appendChild(document.createTextNode(""));
        trFull.appendChild(tdFull);
        
        var tdFull = document.createElement("td");
        tdFull.appendChild(document.createTextNode(""));
        trFull.appendChild(tdFull);
       
        var tdFull = document.createElement("td");
        tdFull.colspan = 3;
        tdFull.appendChild(document.createTextNode("Global"));
        trFull.appendChild(tdFull);
        
        var tdFull = document.createElement("td");
        tdFull.appendChild(document.createTextNode("coverage"));
        trFull.appendChild(tdFull);
        
        var tdFull = document.createElement("td");
        tdFull.appendChild(document.createTextNode(""));
        trFull.appendChild(tdFull);
        
        var tdFull = document.createElement("td");
        tdFull.appendChild(document.createTextNode(""));
        trFull.appendChild(tdFull);
        
        var tdFull = document.createElement("td");
        tdFull.appendChild(document.createTextNode(""));
        trFull.appendChild(tdFull);
        
        var tdFull = document.createElement("td");
        tdFull.appendChild(document.createTextNode(""));
        trFull.appendChild(tdFull);
        
        var tdFull = document.createElement("td");
        tdFull.appendChild(document.createTextNode(""));
        trFull.appendChild(tdFull);
        
        var tdFull = document.createElement("td");
        tdFull.appendChild(document.createTextNode(""));
        trFull.appendChild(tdFull);
        
        var tdFull = document.createElement("td");
        tdFull.appendChild(document.createTextNode(""));
        trFull.appendChild(tdFull);
        
        var tdFull = document.createElement("td");
        tdFull.appendChild(document.createTextNode(""));
        trFull.appendChild(tdFull);
        
        var tdFull = document.createElement("td");
        tdFull.appendChild(document.createTextNode(""));
        trFull.appendChild(tdFull);
        
        var tdFull = document.createElement("td");
        tdFull.appendChild(document.createTextNode(""));
        trFull.appendChild(tdFull);
        
        var tdFull = document.createElement("td");
        tdFull.appendChild(document.createTextNode(""));
        trFull.appendChild(tdFull);
        
        var tdFull = document.createElement("td");
        tdFull.appendChild(document.createTextNode(""));
        trFull.appendChild(tdFull);
        
        fullRapportTabell.tBodies[0].appendChild(trFull);
        this._flippFlopp = this._flippFlopp*(-1);
    }
    else
    {
        var trFull = document.getElementById("SkyFix-XP_Full");    
        fullRapportTabell.tBodies[0].removeChild(trFull);
        this._flippFlopp = this._flippFlopp*(-1);
    }
}     

KartRapport.prototype.leggTilStasjonKortRapport = function(indeks, markers, utgangspunkt)
{
    if(visFunksjonsKall)alert('leggTilStasjonKortRapport()');
    try{     
        if(kommunalRapport == undefined)
        {            
            var rapportTabell = document.getElementById("tblRapport");                                
            var test = document.getElementById(markers[indeks].refId + "_kort");
            
            var avstand = utgangspunkt._marker.getPoint().distanceFrom(markers[indeks].getPoint());
            avstand = parseInt(parseInt((avstand * 0.001) * 100)/100);
            markers[indeks].avstand = avstand;
            
            if(test != null)
            {
                this.fjernStasjonFraElement(2, rapportTabell.tBodies[0], markers[indeks].refId);
            }
            var tr = document.createElement("tr");
            tr.id = markers[indeks].refId + "_kort";                
            tr.className = "MargTekst";
            var td = document.createElement("td");                
            td.appendChild(document.createTextNode(markers[indeks].tittel));
            tr.appendChild(td);        
            
            if(markers[indeks].refId > -1)
            {
                td = document.createElement("td");
                td.appendChild(document.createTextNode(markers[indeks].refId));
                tr.appendChild(td);            
            }        
           
            if(markers[indeks].avstand > 0)
            {
                td = document.createElement("td");
                td.appendChild(document.createTextNode(markers[indeks].avstand));
                tr.appendChild(td);
            }
            
            if(markers[indeks].dataType != undefined)
            {
                td = document.createElement("td");
                td.appendChild(document.createTextNode(markers[indeks].dataType));
                tr.appendChild(td);        
            }
            rapportTabell.tBodies[0].appendChild(tr);  
        }
        else
        {
            var rapportTabell = document.getElementById("tblRapport");                                
            var test = document.getElementById(markers[indeks].tittel.replace(" ", "_").toLowerCase() + "_kort");
            var avstand = utgangspunkt._marker.getPoint().distanceFrom(markers[indeks].getPoint());
            avstand = parseInt(parseInt((avstand * 0.001) * 100)/100);
            markers[indeks].avstand = avstand;
            if(test != null)
            {
                fjernStasjon(indeks, markers);
            }
            var tr;
            var td;
            if(markers[indeks].kategori != kategoriId)                
            {                
                kategoriId = markers[indeks].kategori;
                var kategoriTittel = kategoriTab[markers[indeks].kategori];
                tr = document.createElement("tr");                  
                tr.id = kategoriTittel;  
                this.fjernStasjonFraElement(0, rapportTabell.tBodies[0], kategoriTittel);          
                tr.style.textAlign = "left";
                tr.style.color = "black";
                tr.className = "MargTekst";
                td = document.createElement("td");                
                td.appendChild(document.createTextNode(kategoriTittel));
                tr.appendChild(td);                 
                rapportTabell.tBodies[0].appendChild(tr);                
            }            
            
            tr = document.createElement("tr");            
            tr.id = markers[indeks].tittel.replace(" ", "_").toLowerCase() + "_kort";  
            tr.style.textAlign = "left";
            tr.style.color = "#9a9a9a";            
            tr.className = "MargTekst";
            td = document.createElement("td");   
            var link = document.createElement("a");
            var href = "";
            if(document.getElementById(sokStedId).value != "")
            {
                href = 'KartRute.aspx?KartId=' + kartIdVerdi + '&Fra=' + document.getElementById(sokStedId).value + '&Til=' + markers[indeks].tittel;
            }
            else
            {
                href = 'KartRute.aspx?KartId=' + kartIdVerdi + '&Fra=' + KARTLISTE.hentKart(kartId)._utgangsPunkt._sirkel._marker.getPoint().toUrlValue() + '&Til=' + markers[indeks].tittel;
            }
            if(menyId1 != "")
            {
                href += "&MId1=" + menyId1;
            }
            else if(menyId2 != "")
            {
                href += "&MId2=" + menyId2;
            }
            else if(menyId3 != "")
            {
                href += "&MId3=" + menyId3;
            }
            if(artikkelId != "")
            {
                href += "&AId=" + artikkelId;
            }
            link.href = href;
            link.className = "InnholdLink";
            link.title = linkTitle;
            link.style.color = "#9a9a9a";
            link.style.fontSize = "11px";
            link.appendChild(document.createTextNode(markers[indeks].tittel));
            td.appendChild(link);
            td.style.paddingLeft = "10px";
            tr.appendChild(td);  
            
            /*if(markers[indeks].avstand > 0)
            {
                td = document.createElement("td");
                td.appendChild(document.createTextNode(markers[indeks].avstand));
                tr.appendChild(td);
            }*/
            rapportTabell.tBodies[0].appendChild(tr);    
        }
    }
    catch(err)
    {
        if(debug)alert("leggTilStasjonKortRapport feilet. " + err);
    }
}

KartRapport.prototype.leggTilStasjonFullRapport = function(indeks, markers, utgangspunkt) {
    if (visFunksjonsKall) alert('leggTilStasjonFullRapport()');
    try {
        var fullRapportTabell = document.getElementById("tblFullRapport");
        if (fullRapportTabell != undefined) {
            var sjekk = document.getElementById(markers[indeks].refId + "_full");
            var punkt = markers[indeks].getPoint();
            var avstand = utgangspunkt._marker.getPoint().distanceFrom(punkt);
            var farge2 = "#d7e2eb";

            avstand = parseInt(parseInt((avstand * 0.001) * 100) / 100);
            markers[indeks].avstand = avstand;

            if (document.getElementById(hiddenAvstanderId).value != "") {
                document.getElementById(hiddenAvstanderId).value += ",";
            }
            document.getElementById(hiddenAvstanderId).value += avstand;

            if (sjekk != null) {
                fjernStasjon(indeks, markers);
            }
            var tr = document.createElement("tr");
            if (this._flippFlopp < 0) {
                tr.style.backgroundColor = farge2;
            }
            tr.id = markers[indeks].refId + "_full";
            tr.className = "InnholdTekst";

            var td = document.createElement("td");
            td.appendChild(document.createTextNode(markers[indeks].tittel));
            tr.appendChild(td);

            var td = document.createElement("td");
            td.appendChild(document.createTextNode(markers[indeks].refId));
            tr.appendChild(td);

            var td = document.createElement("td");
            td.appendChild(document.createTextNode(avstand + " km"));
            tr.appendChild(td);

            var td = document.createElement("td");
            if (markers[indeks].aoreh != undefined) {
                td.appendChild(document.createTextNode(markers[indeks].aoreh));
            }
            tr.appendChild(td);

            var td = document.createElement("td");
            if (markers[indeks].iorh != undefined) {
                td.appendChild(document.createTextNode(markers[indeks].iorh));
            }
            tr.appendChild(td);

            var td = document.createElement("td");
            if (markers[indeks].aorwh != undefined) {
                td.appendChild(document.createTextNode(markers[indeks].aorwh));
            }
            tr.appendChild(td);

            var td = document.createElement("td");
            if (markers[indeks].por != undefined) {
                td.appendChild(document.createTextNode(markers[indeks].por));
            }
            tr.appendChild(td);

            var td = document.createElement("td");
            if (markers[indeks].amsat != undefined) {
                td.appendChild(document.createTextNode(markers[indeks].amsat));
            }
            tr.appendChild(td);

            var td = document.createElement("td");
            if (markers[indeks].msven != undefined) {
                td.appendChild(document.createTextNode(markers[indeks].msven));
            }
            tr.appendChild(td);

            var td = document.createElement("td");
            if (markers[indeks].msvcn != undefined) {
                td.appendChild(document.createTextNode(markers[indeks].msvcn));
            }
            tr.appendChild(td);

            var td = document.createElement("td");
            if (markers[indeks].msvwn != undefined) {
                td.appendChild(document.createTextNode(markers[indeks].msvwn));
            }
            tr.appendChild(td);

            var td = document.createElement("td");
            if (markers[indeks].ocsat != undefined) {
                td.appendChild(document.createTextNode(markers[indeks].ocsat));
            }
            tr.appendChild(td);

            var td = document.createElement("td");
            if (markers[indeks].apsat != undefined) {
                td.appendChild(document.createTextNode(markers[indeks].apsat));
            }
            tr.appendChild(td);

            var td = document.createElement("td");
            if (markers[indeks].eusat != undefined) {
                td.appendChild(document.createTextNode(markers[indeks].eusat));
            }
            tr.appendChild(td);

            fullRapportTabell.tBodies[0].appendChild(tr);
            this._flippFlopp = this._flippFlopp * (-1);
        }
    }
    catch (err) {
        if (debug) alert("leggTilStasjonFullRapport feilet. " + err);
    }
}

KartRapport.prototype.fjernStasjon = function(indeks, markers)
{         
    if(visFunksjonsKall)alert('fjernStasjon()');
    try{       
        if(indeks != null){                                                
            //Fjerner id fra hidden tekstboks
            var hiddenPunkter = document.getElementById(hiddenPunktIderId);
            var avstander = document.getElementById(hiddenAvstanderId);
            if(hiddenPunkter.value.indexOf("'" + markers[indeks].tittel + "'") == 0)
            {
                hiddenPunkter.value = hiddenPunkter.value.replace("'" + markers[indeks].tittel + "'", "");                
                avstander.value = avstander.value.replace(markers[indeks].avstand,"");
                if(hiddenPunkter.value.indexOf(",") == 0)
                {
                    hiddenPunkter.value = hiddenPunkter.value.substring(1);
                }
                if (avstander.value.indexOf(",") == 0)
                {
                    avstander.value = avstander.value.substring(1);
                }
            }            
            else if(hiddenPunkter.value.indexOf(",'" + markers[indeks].tittel + "',") > 0)
            {
                hiddenPunkter.value = hiddenPunkter.value.replace(",'" + markers[indeks].tittel + "'," , ",");                
                avstander.value = avstander.value.replace(markers[indeks].avstand + ",","");
            }
            else if(hiddenPunkter.value.indexOf(",'" + markers[indeks].tittel + "'") > 0)
            {
                var index = hiddenPunkter.value.indexOf(",'" + markers[indeks].tittel + "'");
                if(index > 0)
                {
                   hiddenPunkter.value =  hiddenPunkter.value.replace(",'" + markers[indeks].tittel + "'", "");
                }
                index = avstander.value.indexOf("," + markers[indeks].avstand);
                if(index > 0)
                {
                    avstander.value = avstander.value.replace("," + markers[indeks].avstander,"");
                }
            }
            if(avstander.value.indexOf(",,") >= 0)
            {
                avstander.value = avstander.value.replace(",,",",");
            }
            if(hiddenPunkter.value == "")
            {
                avstander.value = "";
            }
            if(kommunalRapport == undefined)
            {
                var rapportTabell = document.getElementById("tblRapport");
                var tr = document.getElementById(markers[indeks].refId + "_kort");
                if(tr != null) 
                {
                    rapportTabell.tBodies[0].removeChild(tr);
                }       
                
                var fullRapportTabell = document.getElementById("tblFullRapport");
                var trFull = document.getElementById(markers[indeks].refId + "_full");
                if(trFull != null)
                {
                    fullRapportTabell.tBodies[0].removeChild(trFull);
                }        
            }
            else
            {
                var rapportTabell = document.getElementById("tblRapport");                
                var tr = document.getElementById(markers[indeks].tittel.replace(" ", "_").toLowerCase() + "_kort");
                rapportTabell.tBodies[0].removeChild(tr);
            }
        }
    }
    catch(err)
    {
       if(debug)alert("fjernStasjon feilet. " + err);
    }
} 

KartRapport.prototype.visRapport = function(vis)
{
    if(visFunksjonsKall)alert('visRapport()');
    try{
        if(vis)
        {
            document.getElementById("tblRapport").style.display = 'none';
        }
        else
        {
            document.getElementById("tblRapport").style.display = '';
        }
     }
    catch(err)
    {
        if(debug)alert("visRapport i rapport feilet. " + err);
    }            
}

KartRapport.prototype.fjernStasjonFraElement = function(startIndeks, element, id)
{    
    if(typeof element != 'undefined')
    {
        for(var i = startIndeks; i < (element.childNodes.length); i++)
        {
            var tr = element.childNodes[i];
            if(typeof tr.id != 'undefined')
            {
                if(tr.id.indexOf(id) >= 0)
                {
                    element.removeChild(tr);
                    break;
                }
            }
        }
    }    
}
