var monthDays=new Array(31,28,31,30,31,30,31,31,30,31,30,31);
var monthNameForCalc = new Array("January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December");
var dayNameShort= new Array("So","Mo","Di","Mi","Do","Fr","Sa");

rightnow = new Date();

function month(i,name) {
	var thisyear = rightnow.getFullYear();
	var nextyear = thisyear + 1;
	var a = "<option value=\"";
	(i<rightnow.getMonth()) ? a +=nextyear : a +=thisyear;
	(i<9) ? a += "0"+(i+1) : a +=(i+1);
	a += "\">"+name+" 0";
	(i<rightnow.getMonth()) ? a +=(nextyear-2000) : a +=(thisyear-2000);
	a += "</option>\n";
	this.option = a;
}
																				
var months = new Array(new month(0,"Jan"), new month(1,"Feb"),new month(2,"Mär"),new month(3,"Apr"),new month(4,"Mai"), new month(5,"Jun"), new month(6,"Jul"), new month(7,"Aug"), new month(8,"Sep"), new month(9,"Okt"), new month(10,"Nov"), new month(11,"Dez"));

function filterDropdownForAdults(passedDropdown, maxSize) {
  for (i=0; i < maxSize; i++) {
    passedDropdown.options[i] = new Option(i);
    passedDropdown.options[i].value = parseInt(i)+1;
    passedDropdown.options[i].text = parseInt(i)+1;
  }
}
function filterDropdown(passedDropdown, maxSize) {
  for (i=0; i <=maxSize; i++) {
    passedDropdown.options[i] = new Option(i);
    passedDropdown.options[i].value = parseInt(i);
    passedDropdown.options[i].text = parseInt(i);
  }
}

function flightSearchDropDownFilter(selectedDropdown) {
  var maxPassengers = 9;

  var oAdultField = document.forms.flightSearch.BE_AIR_NUM_OF_ADULTS;
  var oChildrenField =  document.forms.flightSearch.BE_AIR_NUM_OF_CHILDREN;
  var chosenAdults = parseInt(oAdultField.selectedIndex)+1;
  var chosenChildren  = parseInt(oChildrenField.selectedIndex);
  
  switch(selectedDropdown) {
    case 'Adults':
    var otherPassengers = chosenChildren;
    var remainderForOtherPassengers = parseInt(maxPassengers - (otherPassengers + chosenAdults));
    var remainderForAdult = parseInt(maxPassengers - otherPassengers);
    oAdultField.length = 0;
    filterDropdownForAdults(oAdultField, remainderForAdult);
    oAdultField.selectedIndex = chosenAdults-1;
    oChildrenField.length = 0;
    filterDropdown(oChildrenField, (remainderForOtherPassengers + chosenChildren))
    oChildrenField.selectedIndex = chosenChildren;
    break;
  case 'Children':
    var otherPassengers = chosenAdults;
    var remainderForOtherPassengers = parseInt(maxPassengers - (otherPassengers + chosenChildren));
    var remainderForChildren = parseInt(maxPassengers - otherPassengers);
    oChildrenField.length = 0;
    filterDropdown(oChildrenField, remainderForChildren);
    oChildrenField.selectedIndex = chosenChildren;
    oAdultField.length = 0;
    filterDropdownForAdults(oAdultField, (remainderForOtherPassengers + chosenAdults));
    oAdultField.selectedIndex = chosenAdults-1;
    break;
  }
}
function createDate(day, monthYear) {
		dayVal = day;
		monthYearVal = monthYear;
		x = dayVal.substr(0,1);
		(x == "0") ? day = parseInt(dayVal.substr(1,1)) : day = parseInt(dayVal.substr(0,2));
		
		y = monthYearVal.substr(4,1);
		(y == "0") ? month = parseInt(monthYearVal.substr(5,1)) : month = parseInt(monthYearVal.substr(4,2));
		
		year = parseInt(monthYearVal.substr(0,4));
		if (year < 1900) {
			year = year + 1900;
		}
		date = new Date(year, month-1, day);
		return date;
}
	
function validReturnDate(formName, elementArray) {
		firstDay = eval('document.' + formName + '.'  + elementArray[0] + ".options[" + 'document.' + formName + '.' + elementArray[0] + '.selectedIndex].value');
		firstMonth = eval('document.' + formName + '.'  + elementArray[1] + ".options[" + 'document.'	+ formName + '.' + elementArray[1] + '.selectedIndex].value');
		firstYear = firstMonth.substr(0,4);
		secondDay = eval('document.' + formName + '.'  + elementArray[2] + ".options[" + 'document.'	+ formName + '.' + elementArray[2] + '.selectedIndex].value');
		secondMonth = eval('document.' + formName + '.'  + elementArray[3] + ".options[" + 'document.'	+ formName + '.' + elementArray[3] + '.selectedIndex].value');
		secondYear = secondMonth.substr(0,4);
		if ((validMonthDay(firstDay, firstMonth, firstYear))&& (validMonthDay(secondDay, secondMonth, secondYear))){
			createDate(firstDay, firstMonth);
			outboundDate = date;
			createDate(secondDay, secondMonth);
			returnDate = date;
			return ((outboundDate.valueOf() <= returnDate.valueOf()) && (outboundDate.valueOf() > rightnow.valueOf())) ? true : false;
		} else {
			return false;
		}	
}
function isLeapYear(year){
		if (((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0)){
			return true;
		} else {
		return false;
		}
	}
	
function validMonthDay(dayVal, monthVal, yearVal){
	var error = 0;
	if ((monthVal.substr(4,2) == 4)||(monthVal.substr(4,2) == 6)||(monthVal.substr(4,2) == 9)||(monthVal.substr(4,2) == 11)){
		if (dayVal>30){
			error = 1;
		}
	} else if (monthVal.substr(4,2) == 2) {
				if (isLeapYear(yearVal)){ 
					if (dayVal>29) {
						error = 1;
					}
				} else if (dayVal>28) { 
						error = 1;
				}
		} else {
			if (dayVal>31){
				error = 1;
			}
		}
	return (error == 1) ?  false :  true;	
}
	

function flightSearchSubmit(buttonValue){
		document.flightSearch.whereTo.value = buttonValue;
		document.flightSearch.BE_QUICK_SEARCH_FLAG.value = true;
		var datesArray= new Array('D_Day', 'D_Month', 'R_Day', 'R_Month');
		var formName = 'flightSearch';
		firstDay = eval('document.' + formName + '.'  + datesArray[0] + ".options[" + 'document.' + formName + '.' + datesArray[0] + '.selectedIndex].value');
		firstMonth = eval('document.' + formName + '.'  + datesArray[1] + ".options[" + 'document.' + formName + '.' + datesArray[1] + '.selectedIndex].value');
		firstYear=firstMonth.substr(0,4);
		secondDay = eval('document.' + formName + '.'  + datesArray[2] + ".options[" + 'document.' + formName + '.' + datesArray[2] + '.selectedIndex].value');
		secondMonth = eval('document.' + formName + '.'  + datesArray[3] + ".options[" + 'document.'	+ formName + '.' + datesArray[3] + '.selectedIndex].value');
		secondYear=secondMonth.substr(0,4);
		
		if((document.flightSearch.D_City.value.length > 0) && (document.flightSearch.A_City.value.length > 0)) {
					if(!validMonthDay(firstDay, firstMonth, firstYear)) {
						alert("Bitte ein gültiges Abflugdatum eingeben");
					} else { 
							if(!validMonthDay(secondDay, secondMonth, secondYear)){
								alert("Bitte ein gültiges Rückreisedatum eingeben");
						   } else { 
									if (validReturnDate(formName, datesArray)){
										document.flightSearch.submit();
									} else {
								  			alert("Bitte ein gültiges Rückreisedatum eingeben");
									}
						   }
					}
		} else {
				alert("Sie haben wahrscheinlich Ihren Abflugort oder Ihren Zielort falsch eingegeben. Bitte ändern Sie Ihre Eingabe, und versuchen Sie es noch einmal.");
		}

}
	
	
function emptyDropDown(whichDD) {
	var thisDD = eval('document.forms.flightSearch.' + whichDD);
	var oOptions = thisDD.options;
	for (var i=oOptions.length; i>=0; i--) {
		oOptions[i]	= null;
	}
		thisDD.selectedIndex=0;
		thisDD.length=0;
}


function addOptionToDD(whichDD, optionText, optionValue) {
	var thisDD = eval('document.forms.flightSearch.' + whichDD);
	thisDD[thisDD.length] = new Option(optionText, optionValue);
}


function populateDDforThisMonth(sWhich, iYear, iMonth, iDay) {
	var thisDate;
	if(sWhich == 'D'){
		emptyDropDown('D_Day');
		for (counter=1; counter<=monthDays[parseInt(iMonth - 1)]; counter++) {
			thisDate = new Date(monthNameForCalc[parseInt(iMonth - 1)] + ' ' + counter + ', ' + iYear);
			addOptionToDD('D_Day', dayNameShort[thisDate.getDay()] + ' ' + counter, (counter<10)?"0"+counter:counter);
		}
	
		addOptionToDD('D_Day', ' ', 100);
		var newIndex = monthDays[parseInt(iMonth - 1)];
		if((iDay<=monthDays[parseInt(iMonth - 1)])&&(iDay>0)){
			newIndex = iDay - 1;
		}
		document.flightSearch.D_Day.selectedIndex=newIndex;
	} else {
		emptyDropDown('R_Day');
		for (counter=1; counter<=monthDays[parseInt(iMonth - 1)]; counter++) {
			thisDate = new Date(monthNameForCalc[parseInt(iMonth - 1)] + ' ' + counter + ', ' + iYear);
			addOptionToDD('R_Day', dayNameShort[thisDate.getDay()] + ' ' + counter, (counter<10)?"0"+counter:counter);
		}
		addOptionToDD('R_Day', ' ', 100);
		var newIndex = monthDays[parseInt(iMonth - 1)];
		if((iDay<=monthDays[parseInt(iMonth - 1)])&&(iDay>0)){
			newIndex = iDay - 1;
		}
		document.flightSearch.R_Day.selectedIndex = newIndex;
	}
}

function calcDayOfWeek(sWhich) {

if (sWhich == 'D') {
	var iYear = parseInt(document.forms.flightSearch.D_Month.options[document.forms.flightSearch.D_Month.selectedIndex].value.substring(0,4));
	var iMonth = document.forms.flightSearch.D_Month.options[document.forms.flightSearch.D_Month.selectedIndex].value.substring(4,6);
	var iDay = document.forms.flightSearch.D_Day.options[document.forms.flightSearch.D_Day.selectedIndex].value;
	
	monthDays[1] = ((iYear%4==0 && iYear%100!=0)||(iYear%400==0)) ? 29 : 28;
} else {
	var iYear = parseInt(document.forms.flightSearch.R_Month.options[document.forms.flightSearch.R_Month.selectedIndex].value.substring(0,4));
	var iMonth = document.forms.flightSearch.R_Month.options[document.forms.flightSearch.R_Month.selectedIndex].value.substring(4,6);
	if (document.forms.flightSearch.R_Day.selectedIndex < 0){
	document.forms.flightSearch.R_Day.selectedIndex=0;
	}
	var iDay = document.forms.flightSearch.R_Day.options[document.forms.flightSearch.R_Day.selectedIndex].value;
	
	monthDays[1] = ((iYear%4==0 && iYear%100!=0)||(iYear%400==0)) ? 29 : 28;
	}
populateDDforThisMonth(sWhich, iYear, iMonth, iDay);
}	
function submitExploreForm(){
document.frmExplore.submit();
}
function openWin() { 
var iSelectedIndex = document.travelTools.toolLink.selectedIndex;
var toolsLink = document.travelTools.toolLink.options[iSelectedIndex].value;
if(toolsLink=="map")
window.open('http://www.opodo.de:80/mqbv/mqinterconnect?link=en_UK_find&width=371&height=251',"hp_MapquestPopup","width=751,height=450,scrollbars=yes,toolbar=no,menubar=no,location=no,directories=no,status=no,resizable=no,copyhistory=no,top=20%,left=20%");
}
function init() {
		
		tomorrow = new Date(rightnow.getTime()+(86400000));
		document.flightSearch.D_Day.selectedIndex = tomorrow.getDate()-1;
		document.flightSearch.D_Month.selectedIndex = tomorrow.getMonth();	
		then = new Date(tomorrow.getTime()+(604800000))
		document.flightSearch.R_Day.selectedIndex = then.getDate()-1;
		document.flightSearch.R_Month.selectedIndex = then.getMonth();

		var oldDepartIndex = document.flightSearch.D_Day.selectedIndex;
		calcDayOfWeek('D');
		document.flightSearch.D_Day.selectedIndex = oldDepartIndex;
		var oldReturnIndex = document.flightSearch.R_Day.selectedIndex;
		calcDayOfWeek('R');
		document.flightSearch.R_Day.selectedIndex = oldReturnIndex;
}
function newWin() {
	var win = "https://opodode.custhelp.com/cgi-bin/opodode.cfg/php/enduser/std_alp.php"
	window.open(win, 'newWin', 'width=740; height=550; scrollbars=yes');
}
