/*****************************************************/
/*  Diverse globale Datums- und Kalenderfunktionen   */
/*  für alle Fälle, besonders jedoch für flightmore  */
/*****************************************************/

	monats_lenge = new Array (31,28,31,30,31,30,31,31,30,31,30,31)

function extract_datum (datstr)
{
//  Eingabe: ein Datumsstring der Form dd.mm.yyyy
//  Ausgabe: Eine Datumszahl der Form yyyymmdd, bei Fehler wird 0 zurückgegeben
	
	var pos1, pos2, tag, monat, jahr;
	
	pos1 = datstr.indexOf (".");	
	if (pos1 < 0) pos1 = datstr.indexOf ("-");
	if (pos1 < 0) pos1 = datstr.indexOf ("/");
	
	if (pos1 < 0) return (0);
	
	pos2 = datstr.indexOf (".",pos1+1);	
	if (pos2 < 0) pos1 = datstr.indexOf ("-",pos1+1);
	if (pos2 < 0) pos1 = datstr.indexOf ("/", pos1+1);
	
	if (pos2 < 0) return (0);

	tag = parseInt (parseFloat(datstr));
	monat = parseInt (parseFloat(datstr.substr(pos1+1,2)));
	jahr = parseInt (parseFloat(datstr.substr(pos2+1,4)));

	if (jahr <= 99) jahr += 2000;

	if (! teste_datum (tag,monat,jahr)) return (0);

	dat = jahr*10000 + monat*100 + tag;	
		
	return (dat);
}

function teste_datum (tag,monat,jahr)
{
// überprüft, ob es sich um ein gültiges Datum handelt
// Eingabe: Tag, Monat und Jahr
// Ausgabe: true oder false
		
	if (tag > 0 && tag <= monats_lenge[monat-1]) return (true);
		
	if (monat == 2 && tag == 29 && ist_schaltjahr(jahr)) return (true);
			
	return (false);
}

function calc_datum_diff (datum, diff)
{
//  berechnet ein neues datum, <diff> Tage später als das vorgegebene
//  Eingabe: Datumzahl der Form yyyymmdd
//  Ausgabe: neue Datumzahl der Form yyyymmdd
var i, tag, monat, jahr, tzahl, leng;

	tag = parseInt (datum%100);
	jahr = parseInt(datum/10000);
	monat = parseInt((datum-jahr*10000)/100);
	
	tzahl = tag;
	for (i=0 ; i<monat-1 ; i++)
		tzahl += monats_lenge[i]

	if (monat >= 3 && ist_schaltjahr (jahr)) tzahl ++;
	tzahl += diff;

	if (tzahl <= 0)
	{
		jahr --;
		tzahl += 365;
		if (ist_schaltjahr (jahr)) tzahl ++;
	}
	monat = 1;

	for (i=0 ; i<12 ; i++)
	{
		leng = monats_lenge[i];
		if (i == 1 && ist_schaltjahr (jahr)) leng ++;
		if (leng >= tzahl) break;
		tzahl -= leng;
		monat ++;
		if (monat > 12)
		{
			monat = 1;
			jahr ++;
		}
	}

	return (jahr*10000 + monat*100 + tzahl);
}

function ist_schaltjahr (year)  //  berechnet, ob Schaltjahr
{
	if (! (year%100) && (year/100)%4 ) return (false);
	if (year % 4)
		return (false);
	else
		return (true);
}

