function PlanMal(planMalUid, planMalId, manuell) {
    this.planMalUid = planMalUid;
    this.planMalId = planMalId;
    this.manuell = manuell;

    this.getPlanMalUid = getPlanMalUid;
    this.getPlanMalId = getPlanMalId;
    this.isPlanMalManuell = isPlanMalManuell;
    this.setPlanMalId = setPlanMalId;
    this.setPlanMalManuell = setPlanMalManuell;
}
function getPlanMalUid() {
    return this.planMalUid;
}
function getPlanMalId() {
    return this.planMalId;
}
function isPlanMalManuell() {
    return this.manuell;
}
function setPlanMalId(malId) {
    this.planMalId = malId;
}
function setPlanMalManuell(man) {
    this.manuell = man;
}

function PlanStatus(statusId, planStatus, overstatus, manuell) {
    this.statusId = statusId;
    this.planStatus = planStatus;
    this.overstatus = overstatus;
    this.planstatustxt;
    this.manuell = manuell;

    this.getPlanStatusId = getPlanStatusId;
    this.getPlanStatus = getPlanStatus;
    this.getOverstatus = getOverstatus;
    this.isManuell = isManuell;
    this.setOverstatus = setOverstatus;
    this.setPlanStatus = setPlanStatus;
    this.setPlanStatusTxt = setPlanStatusTxt;
    this.getPlanStatusTxt = getPlanStatusTxt;
    this.setManuell = setManuell;
}

function setPlanStatusTxt(pst) {
    this.planstatustxt = pst;
}

function getPlanStatusTxt() {
    if (typeof this.planstatustxt == "undefined") {
        return '-';
    } else {
        return this.planstatustxt;
    }
}


function getPlanStatusId() {
    return this.statusId;
}
function getPlanStatus() {
    return this.planStatus;
}

function getOverstatus() {
    return this.overstatus;
}

function isManuell() {
    return this.manuell;
}
function setPlanStatus(ps) {
    this.planStatus = ps;
}

function setOverstatus(os) {
    this.overstatus = os;
}

function getOverstatus() {
    return this.overstatus;
}


function setManuell(man) {
    this.manuell = man;
}

function comparePlanHendelse(a, b) {
    var malId = ThePlanMal.getPlanMalId();
    var adato = a.getFromDate();
    if ((a.getFromDate() == null || a.getFromDate() == "") && GetHendelseIsPeriode(malId, a.getHendTrinn())) {
        adato = a.getToDate();
    }
    var bdato = b.getFromDate();
    if ((b.getFromDate() == null || b.getFromDate() == "") && GetHendelseIsPeriode(malId, b.getHendTrinn())) {
        bdato = b.getToDate();
    }
    if (grtDato(adato, bdato)) return -1;
    if (grtDato(bdato, adato)) return 1;
    return b.getHendTrinn() - a.getHendTrinn();
}

function comparePlanHendelseByStatus(a, b) {
    var malId = ThePlanMal.getPlanMalId();
    return GetHendelseStatus(malId, b.getHendTrinn()) - GetHendelseStatus(malId, a.getHendTrinn());
}


function addPlanHendelse(hendelseId, fromDate, toDate, malId, hendTrinn, saksbeh, myndighet, kommentar, oppsettende, disptype, dispfra, saksgangsnavn, saksnr) {
    PlanHendelser.push(new PlanHendelse(hendelseId, fromDate, toDate, malId, hendTrinn, saksbeh, myndighet, kommentar, oppsettende, disptype, dispfra, saksgangsnavn, saksnr));
}

function removePlanHendelse(hendelseIndex) {
    PlanHendelser.splice(hendelseIndex, 1);
}

function getPlanHendelseIndex(hendelseId) {
    for (var i = 0; i < PlanHendelser.length; i++) {
        if (PlanHendelser[i].getHendelseId() == hendelseId) return i;
    }
}

function PlanHendelse(hendelseId, fromDate, toDate, malId, hendTrinn, saksbeh, myndighet, kommentar, oppsettende, dispType, dispFra, saksgangsnavn, saksnummer) {
    this.hendelseId = hendelseId;
    this.fromDate = fromDate;
    this.toDate = toDate;
    this.malId = malId;
    this.hendTrinn = hendTrinn;
    this.saksbeh = saksbeh;
    this.myndighet = myndighet;
    this.kommentar = kommentar;
    this.oppsettende = oppsettende;
    this.dispType = dispType;
    this.dispFra = dispFra;
    this.saksgangsnavn = saksgangsnavn;
    this.saksnummer = saksnummer;

    this.getHendelseId = getHendelseId;
    this.getFromDate = getFromDate;
    this.getToDate = getToDate;
    this.getMalId = getMalId;
    this.getHendTrinn = getHendTrinn;
    this.getSaksbehandler = getSaksbehandler;
    this.getMyndighet = getMyndighet;
    this.getKommentar = getKommentar;
    this.getOppsettende = getOppsettende;
    this.getDispType = getDispType;
    this.getDispFra = getDispFra;
    this.getSaksnr = getSaksnr;
    this.getSaksgangsnavn = getSaksgangsnavn;   

    this.setFromDate = setFromDate;
    this.setToDate = setToDate;
    this.setMalId = setMalId;
    this.setHendTrinn = setHendTrinn;
    this.setSaksbehandler = setSaksbehandler;
    this.setMyndighet = setMyndighet;
    this.setKommentar = setKommentar;
    this.setOppsettende = setOppsettende;
    this.setDispType = setDispType;
    this.setDispFra = setDispFra;
    this.setSaksgangsnavn = setSaksgangsnavn;
    this.setSaksnr = setSaksnr;

}

function getOppsettende() {
    return this.oppsettende;
}

function setOppsettende(opps) {
    this.oppsettende = opps;
}

function getDispType() {
    return this.dispType;
}

function setDispType(dt) {
    this.dispType = dt;
}

function getDispFra() {
    return this.dispFra;
}

function setDispFra(df) {
    this.dispFra = df;
}

function setFromDate(dato) {
    this.fromDate = dato;
}
function setToDate(dato) {
    this.toDate = dato;
}
function setMalId(mal) {
    this.malId = mal;
}
function setHendTrinn(hend) {
    this.hendTrinn = hend;
}
function setSaksgangsnavn(saksgangsnavn) {
    this.saksgangsnavn = saksgangsnavn;
}
function setSaksnr(saksnr) {
    this.saksnummer = saksnr;
}
function setSaksbehandler(saksb) {
    this.saksbeh = saksb;
}
function setMyndighet(myndigh) {
    this.myndighet = myndigh;
}
function setKommentar(kommen) {
    this.kommentar = kommen;
}
function getHendelseId() {
    return this.hendelseId;
}
function getFromDate() {
    return this.fromDate;
    //alert('Hendelse:'+hendTrinn+', Fradato:'+fromDate);
}
function getToDate() {
    return this.toDate;
}
function getMalId() {
    return this.malId;
}
function getHendTrinn() {
    return this.hendTrinn;
}
function getSaksbehandler() {
    return this.saksbeh;
}
function getMyndighet() {
    return this.myndighet;
}
function getKommentar() {
    return this.kommentar;
}
function getSaksgangsnavn() {
    return this.saksgangsnavn;
}
function getSaksnr() {
    return this.saksnummer;
}


function finnDatoFraHendelseTrinn(hendTrinn) {
    //alert("Du fant meg");
    var dato = "";
    for (var n = 0; n < PlanHendelser.length; n++) {

        var malid = ThePlanMal.getPlanMalId();
        var maltrinn = "" + PlanHendelser[n].getHendTrinn();
        if (maltrinn.length == 1) {
            //            alert("legger til 0");
            maltrinn = "0" + maltrinn
        }
        var utrykk = "" + malid + "-" + maltrinn;
//        alert("utrykk:"+utrykk);
        //        alert("MALID:" + malid);
        //        alert("hendTrinn:" + PlanHendelser[n].getHendTrinn());
        if (utrykk == hendTrinn) {
            dato = PlanHendelser[n].getFromDate();
        }
    }
    return dato;
}

function finnSaksbehandlerFraHendelseTrinn(hendTrinn) {
    //alert("Du fant meg");
    var saksbehandler = "";
    for (var n = 0; n < PlanHendelser.length; n++) {

        var malid = ThePlanMal.getPlanMalId();
        var maltrinn = "" + PlanHendelser[n].getHendTrinn();
        if (maltrinn.length == 1) {
            //          alert("legger til 0");
            maltrinn = "0" + maltrinn
        }
        var utrykk = "" + malid + "-" + maltrinn;
        //alert("utrykk:"+utrykk);
        //alert("MALID:" + malid);
        //alert("hendTrinn:" + PlanHendelser[n].getHendTrinn());
        if (utrykk == hendTrinn) {
            saksbehandler = PlanHendelser[n].getSaksbehandler();
        }
    }
    return saksbehandler;
}


function antTidlHendelser(i) {
    var sokTrinn = PlanHendelser[i].getHendTrinn();
    var totaltAntall = 0;
    var rekkefolge = 0;
    for (var a = 0; a < PlanHendelser.length; a++) {
        if (PlanHendelser[a].getHendTrinn() == sokTrinn) totaltAntall++;
    }
    if (totaltAntall > 1) {
        for (var a = i; a < PlanHendelser.length; a++) {
            if (PlanHendelser[a].getHendTrinn() == sokTrinn) rekkefolge++;
        }
    }
    return rekkefolge;
}

function grtDato(dato1, dato2) { //returnerer 1 dersom dato1 > dato2) ... en tom dato kommer etter en som ikke er tom....
    //Bug ved tallene 08 og 09
    //alert('in grtDato..' + dato1.length + ' - ' + dato2.length);

    if ((dato1.length == 0) && (dato2.length > 0)) { //dato1 er tom
        return 0;
    } else if ((dato2.length == 0) && (dato1.length > 0)) {
        return 1;
    } else if ((dato2.length == 0) && (dato1.length == 0)) {
        return 0;
    }

    var month1, month2, day1, day2;
    if (dato1.substring(3, 4) == "0") {
        month1 = parseInt(dato1.substring(4, 5));
    } else {
        month1 = parseInt(dato1.substring(3, 5))
    }

    if (dato1.substring(0, 1) == "0") {
        day1 = parseInt(dato1.substring(1, 2))
    } else {
        day1 = parseInt(dato1.substring(0, 2))
    }

    if (dato2.substring(3, 4) == "0") {
        month2 = parseInt(dato2.substring(4, 5));
    } else {
        month2 = parseInt(dato2.substring(3, 5))
    }

    if (dato2.substring(0, 1) == "0") {
        day2 = parseInt(dato2.substring(1, 2))
    } else {
        day2 = parseInt(dato2.substring(0, 2))
    }

    if (((parseInt(dato1.substring(6, 10))) - (parseInt(dato2.substring(6, 10)))) > 0) { //Year
        return 1;
    } else if (((parseInt(dato1.substring(6, 10))) - (parseInt(dato2.substring(6, 10)))) < 0) { //Year
        return 0;
    } else if (month1 > month2) {
        return 1;
    } else if (month1 < month2) {
        return 0;
    } else if (day1 > day2) {
        return 1;
    } else {
        return 0;
    }
}
