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);
                }
            }
        }
        finnBeamElev(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 + "'";
        }
    }
    markers[indeks].inReport = true;
    this.leggTilStasjonKortRapport(indeks, markers, utgangspunkt);
    this.leggTilStasjonFullRapport(indeks, markers, utgangspunkt);
}

KartRapport.prototype.leggTilGlobalStasjon = function (vis, stasjon, id) {
    var rapportTabell = document.getElementById("tblRapport");
    var fullRapportTabell = document.getElementById("tblFullRapport");
    if (vis) {
        var test = document.getElementById(stasjon);
        if (test != null) {
            rapportTabell.tBodies[0].removeChild(test);
        }
        var tr = document.createElement("tr");
        tr.id = stasjon;
        tr.className = "MargTekst";
        var td = document.createElement("td");
        td.appendChild(document.createTextNode(stasjon));
        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 += ",'" + id + "'";
        }
        else {
            document.getElementById(hiddenPunktIderId).value += "'" + id + "'";
        }

    }
    else {
        var tr = document.getElementById(stasjon);
        if (tr != null) {
            rapportTabell.tBodies[0].removeChild(tr);
            document.getElementById(hiddenPunktIderId).value = document.getElementById(hiddenPunktIderId).value.replace(",'" + id + "'", "");
            document.getElementById(hiddenPunktIderId).value = document.getElementById(hiddenPunktIderId).value.replace("'" + id + "'", "");
        }
    }

    if (vis) {
        var test = document.getElementById(stasjon + "_Full");
        if (test != null) {
            fullRapportTabell.tBodies[0].removeChild(test);
        }
        var farge2 = "#d7e2eb";
        //Full rapport        
        var trFull = document.createElement("tr");
        trFull.id = stasjon + "_Full";
        trFull.width = "100%";
        if (this._flippFlopp < 0) {
            trFull.style.backgroundColor = farge2;
        }
        trFull.className = "InnholdTekst";

        var antallKolonner = fullRapportTabell.getElementsByTagName("th").length;

        var tdFull = document.createElement("td");
        tdFull.appendChild(document.createTextNode(stasjon));
        trFull.appendChild(tdFull);

        var tdFull = document.createElement("td");
        tdFull.appendChild(document.createTextNode("Global"));
        tdFull.align = "center";
        trFull.appendChild(tdFull);

        tdFull = document.createElement("td");
        tdFull.appendChild(document.createTextNode("coverage"));
        tdFull.align = "center";
        trFull.appendChild(tdFull);

        for (var i = 0; i < antallKolonner - 3; i++) {
            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(stasjon + "_Full");
        if (tr != null) {
            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));
            td.align = "right";
            tr.appendChild(td);

            var td = document.createElement("td");
            td.align = "right";
            td.appendChild(document.createTextNode(avstand + " km"));
            tr.appendChild(td);

            var headerCells = fullRapportTabell.getElementsByTagName("tr")[0].getElementsByTagName("th");
            for (var i = 3; i < headerCells.length; i++) {
                var key = headerCells[i].innerText;
                if (key == null) key = headerCells[i].innerHTML;
                var value = markers[indeks].beams[key];
                var td = document.createElement("td");
                td.align = "center"
                if (value != null && value != "") {
                    td.appendChild(document.createTextNode(value));
                }
                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) {
            markers[indeks].inReport = false;
            
            //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;
                }
            }
        }
    }
}
