﻿// JavaScript Document
monthNames = new Array("Jan", "Feb", "Mär", "Apr", "Mai", "Jun", "Jul", "Aug", "Sep", "Okt", "Nov", "Dez");
now = new Date();
nowInMS = Date.parse(now);
weekInMS = 7 * 24 * 60 * 60 * 1000;

startDate = new Date(nowInMS + weekInMS);
endDate = new Date(nowInMS + (3 * weekInMS));
var Today = new Date();

function dateLogic(day_diff) {
	var rd = new Date(Today.getFullYear(), Today.getMonth(), Today.getDate());
	rd.setDate(rd.getDate() + day_diff);
	return rd;
}
function to2digits(no) {
	var from_date;
	thestrNo = "" + no;
	return ((thestrNo.length == 1) ? "0" : "") + thestrNo;
}
var normDate = dateLogic(0);
var departDate = dateLogic(7);
var returnDate = dateLogic(14);

var dayN = normDate.getDate();
var dayD = departDate.getDate();
var dayR = returnDate.getDate();
dayN = to2digits(dayN);
dayD = to2digits(dayD);
dayR = to2digits(dayR);
var monthR = departDate.getMonth();
var monthD = returnDate.getMonth();
var year = normDate.getFullYear();

function generateMonths(DateObject) {
	var select = '';
	if(DateObject == 'startDate' ){
		select = document.getElementById('MONTH_DATE');
	}
	else if(DateObject == 'returnDate' ){
		select = document.getElementById('MONTH_RDATE');
	}
	for (monthNo = now.getMonth(); monthNo < 12; monthNo++) {		
		if (((monthNo == monthD) && (DateObject == 'startDate')) || ((monthNo == monthR) && (DateObject == 'returnDate'))) {
			select.options[select.options.length] = new Option(monthNames[monthNo] + ' ' + to2digits((year) - 2000), (now.getFullYear()) + to2digits(monthNo + 1), true);
		} 
		else {
			select.options[select.options.length] = new Option(monthNames[monthNo] + ' ' + to2digits((year) - 2000), (now.getFullYear()) + to2digits(monthNo + 1));
		}
	}
	for (monthNo = 0; monthNo < now.getMonth(); monthNo++) {			
		if (((monthNo == monthD) && (DateObject == 'startDate')) || ((monthNo == monthR) && (DateObject == 'returnDate'))) {
			select.options[select.options.length] = new Option(monthNames[monthNo] + ' ' + to2digits((year + 1) - 2000), (year + 1) + to2digits(monthNo + 1), true);
		}
		else {
			select.options[select.options.length] = new Option(monthNames[monthNo] + ' ' + to2digits((year + 1) - 2000), (year + 1) + to2digits(monthNo + 1));
		}
	}
}

function generatedaytxt(txtname) {
	var select = document.getElementById(txtname);
	for (var i=1; i < 32; i++) {
		var j = to2digits(i);
		select.options[select.options.length] = new Option(j, j);
	}
}

function updateDates() {
	generatedaytxt('DAY_DATE');
	generatedaytxt('DAY_RDATE');
	generateMonths('startDate');	
	generateMonths('returnDate');	
	document.getElementById('DAY_DATE').value = dayD;
	document.getElementById('DAY_RDATE').value = dayR;
}

function validateForm() {
	var orig = document.air300x250form.origin.value;
	var dest = document.air300x250form.dest.value;
	orig = orig.replace("ä", "ae");
	orig = orig.replace("Ä", "Ae");
	orig = orig.replace("ü", "ue");
	orig = orig.replace("Ü", "Ue");
	orig = orig.replace("ö", "oe");
	orig = orig.replace("Ö", "Oe");
	orig = orig.replace("ß", "ss");

	dest = dest.replace("ä", "ae");
	dest = dest.replace("Ä", "Ae");
	dest = dest.replace("ü", "ue");
	dest = dest.replace("Ü", "Ue");
	dest = dest.replace("ö", "oe");
	dest = dest.replace("Ö", "Oe");
	dest = dest.replace("ß", "ss");

	document.air300x250form.origin.value = orig;
	document.air300x250form.dest.value = dest;

	if (document.air300x250form.origin.value.length < 3) {
		alert("Bitte wählen Sie einen Abflughafen");
		document.air300x250form.origin.focus();
		return false;
	} else if (document.air300x250form.dest.value == "") {
		alert("Bitte geben Sie ein Ziel ein (Stadt oder Flughafen-Code).");
		document.air300x250form.dest.focus();
		return false;
	}
	if (checkValidDay()) {} else {
		return false;
	}

	//setting the departdate and returndate in the hidden value
	str_departyearandmonth = document.air300x250form.MONTH_DATE.options[document.air300x250form.MONTH_DATE.selectedIndex].value;
	str_departyear = str_departyearandmonth.substring(0, 4);
	str_departmonth = str_departyearandmonth.substring(4, 6);
	document.air300x250form.departdate.value = str_departdate = str_departyear + "-" + str_departmonth + "-" + document.air300x250form.DAY_DATE.options[document.air300x250form.DAY_DATE.selectedIndex].value;

	str_returnyearandmonth = document.air300x250form.MONTH_RDATE.options[document.air300x250form.MONTH_RDATE.selectedIndex].value;
	str_returnyear = str_returnyearandmonth.substring(0, 4);
	str_returnmonth = str_returnyearandmonth.substring(4, 6);
	document.air300x250form.returndate.value = str_returndate = str_returnyear + "-" + str_returnmonth + "-" + document.air300x250form.DAY_RDATE.options[document.air300x250form.DAY_RDATE.selectedIndex].value;
	return true;
}

function return_Date() {
	var from_date;

	from_date = document.air300x250form.DAY_DATE.options[document.air300x250form.DAY_DATE.selectedIndex].value;
	from_date = from_date + document.air300x250form.MONTH_DATE.options[document.air300x250form.MONTH_DATE.selectedIndex].value;
	update_return_date(from_date);
}

function update_return_date(from) {
	var rd = new Date(from.substr(2, 4), from.substr(6, 2) - 1, from.substr(0, 2));
	rd.setDate(rd.getDate() + 7);
	var day = rd.getDate();
	var month = rd.getMonth() + 1;
	var year = rd.getFullYear();
	var yearMonth;
	if (month < 10) {
		yearMonth = year + '0' + month;
	} else {
		yearMonth = year + '' + month;
	}
	if (day < 10) {
		day = '0' + day;
	}
	document.air300x250form.DAY_RDATE.value = day;
	document.air300x250form.MONTH_RDATE.value = yearMonth;
}

function GetMonthMaxDays(y, m) // accepts 0 index month
{
	return new Date(y, m + 1, 0).getDate();
}

function checkValidDay() {

	var dep_day = document.air300x250form.DAY_DATE.options[document.air300x250form.DAY_DATE.selectedIndex].value;
	var ret_day = document.air300x250form.DAY_RDATE.options[document.air300x250form.DAY_RDATE.selectedIndex].value;
	var dep_monyear = document.air300x250form.MONTH_DATE.options[document.air300x250form.MONTH_DATE.selectedIndex].value;
	var ret_monyear = document.air300x250form.MONTH_RDATE.options[document.air300x250form.MONTH_RDATE.selectedIndex].value;

	var dep_year = dep_monyear.substr(0, 4);
	var dep_month = dep_monyear.substr(4, 2);
	var ret_year = ret_monyear.substr(0, 4);
	var ret_month = ret_monyear.substr(4, 2);

	var depday_max = GetMonthMaxDays(dep_year, dep_month - 1);
	var retday_max = GetMonthMaxDays(ret_year, ret_month - 1);

	return true;
}

function hideRetDate() {
	if (document.air300x250form.oneway.checked == true) {
		document.getElementById('DAY_RDATE').disabled = true;
		document.getElementById('MONTH_RDATE').disabled = true;
	}
	else {
		document.getElementById('DAY_RDATE').disabled = false;
		document.getElementById('MONTH_RDATE').disabled = false;
	}
}

var regFirefox = new RegExp("MSIE");
var regOpera = new RegExp("Opera");
//this if to make it work for MSIE & Opera supported browsers when using document write only
if(regFirefox.test(navigator.userAgent) || regOpera.test(navigator.userAgent)) { 
	updateDates();
}

