// Funktionen fuer die Meldungsanzeige
// ===================================

// Autor: Dietmar Rabich
// http://www.rabich.de

// 28.2.2000

// --- Hilfswerte ---

var        wochentage        =
[
        "Sonntag",
        "Montag",
        "Dienstag",
        "Mittwoch",
        "Donnerstag",
        "Freitag",
        "Sonnabend"
]

var        monate        =
[
        "Januar",
        "Februar",
        "M&auml;rz",
        "April",
        "Mai",
        "Juni",
        "Juli",
        "August",
        "September",
        "Oktober",
        "November",
        "Dezember"
]

var        anfang        = "<%"
var        ende        = "%>"

var        standard_meldung        = ""

var        cnt

// --- Interne Funktionen ---

// Formate
function datum_format_kurz(d)
{
        return String(d.getDate()) + "." +
                        String(d.getMonth() + 1) + "." +
                        String(d.getFullYear ? d.getFullYear() : d.getYear())
}

function datum_format_lang(d)
{
        return wochentage[d.getDay()] + ", " +
                        String(d.getDate()) + ". " +
                        monate[d.getMonth()] + " " +
                        String(d.getFullYear ? d.getFullYear() : d.getYear())
}

function datum_format_mit_zeit(d)
{
        return d.toString()
}

function zwei_ziffern(x)
{
        if(x < 10)
                return "0" + String(x)
        return String(x)
}

function datum_format_zeit(d)
{
        return String(d.getHours()) + ":" +
                        zwei_ziffern(d.getMinutes()) + ":" +
                        zwei_ziffern(d.getSeconds())
}

// Konfigurationsparameter
function datum_und_zeit()
{
        var        heute        = new Date()
        return datum_format_mit_zeit(heute)
}

function datum_lang()
{
        var        heute        = new Date()
        return datum_format_lang(heute)
}

function datum()
{
        var        heute        = new Date()
        return datum_format_kurz(heute)
}

function zeit()
{
        var        heute        = new Date()
        return datum_format_zeit(heute)
}

function nummer()
{
        return String(cnt)
}

// --- Liste der Werte und Systemwerte sowie die Ersetzungen ---
// typ=0 Wert aus Meldungen, typ=1 Systemwert (Funktion), typ=2 Datum

var        liste        =
[
        {
                variable:"titel",
                feld:"Titel",
                typ:0,
                subtyp:0
        },
        {
                variable:"text",
                feld:"Text",
                typ:0,
                subtyp:0
        },
        {
                variable:"autor",
                feld:"Autor",
                typ:0,
                subtyp:0
        },
        {
                variable:"datum",
                feld:"Meldungsdatum",
                typ:2,
                subtyp:0
        },
        {
                variable:"datum",
                feld:"MeldungsdatumLang",
                typ:2,
                subtyp:1
        },
        {
                variable:"datum",
                feld:"MeldungsdatumUndZeit",
                typ:2,
                subtyp:2
        },
        {
                variable:"datum",
                feld:"Meldungszeit",
                typ:2,
                subtyp:3
        },
        {
                variable:datum_und_zeit,
                feld:"DatumUndZeit",
                typ:1,
                subtyp:0
        },
        {
                variable:datum,
                feld:"Datum",
                typ:1,
                subtyp:0
        },
        {
                variable:datum_lang,
                feld:"DatumLang",
                typ:1,
                subtyp:0
        },
        {
                variable:zeit,
                feld:"Zeit",
                typ:1,
                subtyp:0
        },
        {
                variable:nummer,
                feld:"Nummer",
                typ:1,
                subtyp:0
        }
]

// --- Hauptfunktionen ---

// Wert zum Feld ermitteln
function wert(nr, p)
{
        var        i
        for(i = 0; i < liste.length; i++)
        {
                if(liste[i].feld == p)
                        switch(liste[i].typ)
                        {
                                // Funktion
                                case 1:
                                        return liste[i].variable()

                                // Datum
                                case 2:
                                        var        temp        = new Date(meldungen[nr][liste[i].variable])
                                        switch(liste[i].subtyp)
                                        {
                                                case 0:
                                                        return isNaN(temp) ?
                                                                datum() :
                                                                datum_format_kurz(temp)

                                                case 1:
                                                        return isNaN(temp) ?
                                                                datum_lang() :
                                                                datum_format_lang(temp)

                                                case 2:
                                                        return isNaN(temp) ?
                                                                datum_und_zeit() :
                                                                datum_format_mit_zeit(temp)

                                                case 3:
                                                        return isNaN(temp) ?
                                                                zeit() :
                                                                datum_format_zeit(temp)

                                                default:
                                                        break
                                        }
                                        break

                                // Normalwert
                                default:
                                        return meldungen[nr][liste[i].variable]
                        }
        }
        return "Unbekannter Wert!!!"
}

// Platzhalter durch Werte ersetzen
function ersetze(mldg_nr)
{
        var        s        = vorlagen[meldungen[mldg_nr].vorlage]

        ++cnt

        var        pos                        = s.indexOf(anfang)
        var        platzhalter        = ""
        var        s_anfang        = ""
        var        s_ende                = ""
        var        temp                = 0

        while(pos != -1)
        {
                s_anfang        = s.substring(0, pos)
                platzhalter        = s.substring(pos)
                pos2                = platzhalter.indexOf(ende)
                s_ende                = platzhalter.substring(pos2 + ende.length)
                platzhalter        = platzhalter.substring(anfang.length, pos2)
                s                        = s_anfang + wert(mldg_nr, platzhalter)
                temp                = s.length
                s                        += s_ende
                pos                        = s.indexOf(anfang, temp)
        }

        return s
}

// Test, ob die Meldung angezeigt werden soll
function anzuzeigen(nr)
{
        var        heute        = new Date()
        var        von                = ((meldungen[nr].von == "") || (meldungen[nr].von == null)) ? null : new Date(meldungen[nr].von)
        var        bis                = ((meldungen[nr].bis == "") || (meldungen[nr].bis == null)) ? null : new Date(meldungen[nr].bis)

        if(!von && !bis)
                return true
        if(!von)
                return (heute.getTime() <= bis.getTime())
        if(!bis)
                return (von.getTime() <= heute.getTime())

        return ((von.getTime() <= heute.getTime()) && (heute.getTime() <= bis.getTime()))
}

// Anzeige aller Meldungen
function anzeige()
{
        var        i
        var        anzeige_erfolgt        = false
        cnt        = 0

        document.open("text/html")

        for(i = 0; i < meldungen.length; i++)
                if(anzuzeigen(i))
                {
                        document.writeln(ersetze(i))
                        anzeige_erfolgt        = true
                }

        if(!anzeige_erfolgt)
                document.writeln(standard_meldung)

        document.close()
}
