// Script zur Berechnung des nächsten Samstags bzw. des darauf folgenden Samstags
// Funktion zur Berechnung des Anfangswertes der beiden Textfelder
// 1. Feld --> Datum des naechsten Samstags
// 2. Feld --> Datum des uebernaechsten Samstags
function setDate(arrivalName, departureName, daysName)
{
	var arrival = document.getElementById(arrivalName);
	var departure = document.getElementById(departureName);
	var days = document.getElementById(daysName);
	if (!arrival || !departure)
	{
		return;
	}
	var time = new Date(); //Datum-Objekt                
	var now = time.getTime();
	var day = time.getDay(); //Aktueller Wochentag (0..6)
	var rest = 6 - day; //restliche Tage bis zum naechsten Samstag
	var samstag = now + (1000*60*60*24*rest);
	var nextsamstag = now + (1000*60*60*24*(rest+7));
	// Ausgabe des naechsten Samstages im Textfeld            
	if (arrival.value == '')
	{
		time.setTime(samstag);
		arrival.value = getDateStringFromDate(time);
	}
	// Ausgabe des uebernaechsten Samstages im Textfeld
	if (departure.value == '')
	{
		time.setTime(nextsamstag);
		departure.value = getDateStringFromDate(time);
	}
	if (days)
	{
		days.value = '7';
	}
}

// Funktion zur Berechung des zweiten Datumsfeldes
function setLowerDate(arrivalName, departureName, daysName, calcFrom)
{
	var arrivalObj = document.getElementById(arrivalName);
	var departureObj = document.getElementById(departureName);
	var daysObj = document.getElementById(daysName);
	if (!arrivalObj || !departureObj)
	{
		return;
	}
	if (calcFrom != arrivalName && calcFrom != departureName && calcFrom != daysName && typeof(calcFrom) != 'undefined')
	{
		return;
	}
	if (daysObj)
	{
		var days = parseInt(daysObj.value);
		if (!isFinite(days) || days < 1 || days > 365)
		{
			days = 7;
		}
	}
	else
	{
		var days = 7;
		calcFrom = arrivalName;
	}
	// Auslesen des Datums im ersten Textfeld
	var arrivaldate = getDateFromString(arrivalObj.value);
	var departuredate = getDateFromString(departureObj.value);
	if (!arrivaldate || !departuredate)
	{
		return;
	}
	switch (calcFrom)
	{
		case arrivalName:
		case daysName:
			var date = new Date(arrivaldate[2], arrivaldate[1], arrivaldate[0] + days);
			departureObj.value = getDateStringFromDate(date);
			break;
		case departureName:
			var dateArrival = new Date(arrivaldate[2], arrivaldate[1], arrivaldate[0]);
			var dateDeparture = new Date(departuredate[2], departuredate[1], departuredate[0]);
			var dateArrivalMs = dateArrival.getTime();
			var dateDepartureMs = dateDeparture.getTime();
			if (dateArrivalMs > dateDepartureMs)
			{
				var dateDeparture = new Date(arrivaldate[2], arrivaldate[1], arrivaldate[0] + days);
				departureObj.value = getDateStringFromDate(dateDeparture);
				var dateDepartureMs = dateDeparture.getTime();
			}
			var days = (dateDepartureMs - dateArrivalMs) / 24 / 60 / 60 / 1000;
			break;
	}
	if (daysObj)
	{
		daysObj.value = days;
	}
}

// Funktion zum parsen einer Datumsangabe aus einem string
function getDateFromString(datestring)
{
	if (typeof(datestring) != 'string' || datestring == '')
	{
		return false;
	}
	var value = datestring.split('/');
	if (value.length != 3)
	{
		return false;
	}
	if (value[0].substr(0,1) == '0')
	{
		var day = parseInt(value[0].substr(1, 1));
	}
	else
	{
		var day = parseInt(value[0]);
	}
	if (!isFinite(day) || day < 1 || day > 31)
	{
		return false;
	}
	if (value[1].substr(0, 1) == '0')
	{
		var month = parseInt(value[1].substr(1, 1)) - 1;
	}
	else
	{
		var month = parseInt(value[1]) - 1;
	}
	if (!isFinite(month) || month < 0 || month > 11)
	{
		return false;
	}
	var year = parseInt(value[2]);
	if (year < 100)
	{
		year += 2000;
	}
	if (year < 1900 || year > 3000)
	{
		return false;
	}
	return new Array(day, month, year);
}

// Funktion zum erstellen eines Datum-Strings aus einem Datum-Object
function getDateStringFromDate(dateobject)
{
	if (typeof(dateobject) != 'object' || !dateobject.getTime())
	{
		dateobject = new Date();
	}
	var newday = ((dateobject.getDate() < 10) ? "0" : "") + (dateobject.getDate());
	var newmonth = ((dateobject.getMonth() + 1 < 10) ? "0" : "") + (dateobject.getMonth() + 1);
	var newyear = dateobject.getFullYear();
	return newday + '/' + newmonth + '/' + newyear;
}

function shortYear(obj)
{
	if (obj && obj.value)
	{
		var value = obj.value.split('/');
		if (value[2].length > 2) value[2] = value[2].substr(2);
		obj.value = value[0] + '/' + value[1] + '/' + value[2];
	}
}