// 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	= "Derzeit liegen keine Informationen vor."

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()
}

