﻿var selFromCountry = document.getElementById("e2bFromCountry");
var selFromCity = document.getElementById("e2bFromCity");
var selToCountry = document.getElementById("e2bToCountry");
var selToCity = document.getElementById("e2bToCity");
var selOutMonth = document.getElementById("e2bSelOutMonth");
var selBackMonth = document.getElementById("e2bSelHomeMonth");
var tblOutMonth = document.getElementById("e2bTblOutMonth");
var tblBackMonth = document.getElementById("e2bTblBackMonth");
var outTravelDate, backTravelDate;

selFromCountry.onchange = changeFromCountry;
function changeFromCountry()
{
	setupCitySelector(selFromCountry, selFromCity);
}

selToCountry.onchange = changeToCountry;
function changeToCountry()
{
	setupCitySelector(selToCountry, selToCity);
}

function setupCitySelector(countrySel, citySel)
{
	var aCities = getCities(countrySel.options[countrySel.selectedIndex].value);
	var optionCount = citySel.options.length-1;
	for (var i = optionCount; i >= 0; i--)
		citySel.remove(i);
	for (var i = 0; i < aCities.length; i++)
	{
		try 
			{ citySel.add(createCitySelectorOption(aCities[i])); }
		catch (ex)
			{ citySel.add(createCitySelectorOption(aCities[i]), null); }
	}
}

function createCitySelectorOption(values)
{
	var o = document.createElement("option");
	var a = values.split("|");
	o.value = a[0]
	o.text = a[1];
	return o;
}

function getCities(id)
{
	var arrAE=new Array("-1|Vælg by", "DXB|Dubai");
	var arrAR=new Array("-1|Vælg by", "BUE|Buenos Aires");
	var arrAU=new Array("-1|Vælg by", "SYD|Sydney");
	var arrBE=new Array("-1|Vælg by", "BRU|Bruxelles");
	var arrBR=new Array("-1|Vælg by", "SAO|Sao Paulo");
	var arrCA=new Array("-1|Vælg by", "YTO|Toronto");
	var arrDK=new Array("-1|Vælg by", "CPH|København", "BLL|Billund", "EBJ|Esbjerg", "KRP|Karup", "SBO|Sønderborg", "AAL|Aalborg", "AAR|Århus");
	var arrEE=new Array("-1|Vælg by", "TLL|Tallinn");
	var arrFI=new Array("-1|Vælg by", "HEL|Helsinki", "OUL|Oulu", "TMP|Tampere", "TUR|Turku");
	var arrFR=new Array("-1|Vælg by", "PAR|Paris", "LYS|Lyon", "NCE|Nice");
	var arrGR=new Array("-1|Vælg by", "ATH|Athen");
	var arrGL=new Array("-1|Vælg by", "GOH|Nuuk (Godthåb)", "JAV|Ilulissat (Jakobshavn)");
	var arrNL=new Array("-1|Vælg by", "AMS|Amsterdam");
	var arrHK=new Array("-1|Vælg by", "HKG|Hong Kong");
	var arrIN=new Array("-1|Vælg by", "BLR|Bangalore", "BOM|Bombay (Mumbai)", "DEL|Delhi");
	var arrIE=new Array("-1|Vælg by", "DUB|Dublin");
	var arrIS=new Array("-1|Vælg by", "REK|Reykjavik");
	var arrIT=new Array("-1|Vælg by", "MIL|Milano", "ROM|Rom");
	var arrJP=new Array("-1|Vælg by", "TYO|Tokyo");
	var arrKE=new Array("-1|Vælg by", "NBO|Nairobi");
	var arrCN=new Array("-1|Vælg by", "PEK|Beijing", "SHA|Shanghai", "CAN|Guanzhou");
	var arrLV=new Array("-1|Vælg by", "RIX|Riga");
	var arrLT=new Array("-1|Vælg by", "VNO|Vilnius");
	var arrLU=new Array("-1|Vælg by", "LUX|Luxembourg");
	var arrMY=new Array("-1|Vælg by", "KUL|Kuala Lumpur");
	var arrMX=new Array("-1|Vælg by", "MEX|Mexico City");
	var arrNO=new Array("-1|Vælg by", "OSL|Oslo", "BGO|Bergen", "SVG|Stavanger");
	var arrPL=new Array("-1|Vælg by", "WAW|Warszava");
	var arrPT=new Array("-1|Vælg by", "LIS|Lissabon");
	var arrRU=new Array("-1|Vælg by", "MOW|Moskva");
	var arrCH=new Array("-1|Vælg by", "BSL|Basel", "GVA|Geneve", "ZRH|Zurich");
	var arrSG=new Array("-1|Vælg by", "SIN|Singapore");
	var arrES=new Array("-1|Vælg by", "BCN|Barcelona", "MAD|Madrid", "VGO|Vigo");
	var arrGB=new Array("-1|Vælg by", "LON|London", "BHX|Birmingham", "EDI|Edinburgh", "MAN|Manchester");
	var arrSE=new Array("-1|Vælg by", "STO|Stockholm", "GOT|Göteborg");
	var arrZA=new Array("-1|Vælg by", "CPT|Cape Town", "JNB|Johannesburg");
	var arrTW=new Array("-1|Vælg by", "TPE|Taipei");
	var arrTH=new Array("-1|Vælg by", "BKK|Bangkok");
	var arrCZ=new Array("-1|Vælg by", "PRG|Prag");
	var arrTR=new Array("-1|Vælg by", "IST|Istanbul");
	var arrDE=new Array("-1|Vælg by", "BER|Berlin", "DUS|Düsseldorf", "FRA|Frankfurt", "HAM|Hamborg", "MUC|München", "STR|Stuttgart");
	var arrUN=new Array("-1|Vælg by", "BUD|Budapest");
	var arrUS=new Array("-1|Vælg by", "ATL|Atlanta", "BOS|Boston", "CHI|Chicago", "DEN|Denver", "DFW|Dallas", "HOU|Houston", "LAS|Las Vegas", "LAX| Los Angeles", "MIA|Miami", "MKC|Kansas City", "MSP|Minneapolis", "NYC|New York", "ORL|Orlando", "RDU|Raleigh", "SAN|San Diego", "SEA|Seattle", "SFO|San Francisco", "WAS|Washington");
	var arrAT=new Array("-1|Vælg by", "VIE|Wien");
	try
		{ return eval("arr" + id); }
	catch (ex)
		{ return new Array("-1|Vælg by"); }
}

function setMonthSelectors()
{
	for (var i = 0; i < 13; i++)
	{
		var d = Date.today().set({day:1}).addMonths(i);
		try
		{
			selOutMonth.add(createMonthSelectorOption(d));
			selBackMonth.add(createMonthSelectorOption(d));
		}
		catch (ex)
		{
			selOutMonth.add(createMonthSelectorOption(d), null);
			selBackMonth.add(createMonthSelectorOption(d), null);
		}
	}
	renderMonth(tblOutMonth, selOutMonth.options[0].value);
	selOutMonth.onchange = selectOutMonth;
	renderMonth(tblBackMonth, selBackMonth.options[0].value);
	selBackMonth.onchange = selectBackMonth;
}

function selectOutMonth(selectedDate)
{
	var selectedDate = selOutMonth.options[selOutMonth.selectedIndex].value;
	outTravelDate = null;
	renderMonth(tblOutMonth, selectedDate);
	setBackMonth(selectedDate);
}

function selectBackMonth()
{
	var selectedDate = selBackMonth.options[selBackMonth.selectedIndex].value;
	validateMonthSelectors(selectedDate);
	backTravelDate = null;
	renderMonth(tblBackMonth, selBackMonth.options[selBackMonth.selectedIndex].value);
}

function setBackMonth(date)
{
	for (var i = 0; i < selBackMonth.options.length; i++)
	{
		if (date == selBackMonth.options[i].value) selBackMonth.selectedIndex = i;
	}
	backTravelDate = null;
	renderMonth(tblBackMonth, selBackMonth.options[selBackMonth.selectedIndex].value);
}

function validateMonthSelectors(date)
{
	var outDate = selOutMonth.options[selOutMonth.selectedIndex].value;
	if (Date.parseExact(outDate, "dd-MM-yyyy").compareTo(Date.parseExact(date, "dd-MM-yyyy")) == 1)
	{
		alert("Udrejsedato skal være før hjemrejsedato");
		setBackMonth(selBackMonth, outDate);
	}
}

function renderMonth(table, startDate)
{
	rowCount = table.rows.length-1;
	for (i = rowCount; i >= 0; i--)
		table.deleteRow(i);
	var headerRow = table.insertRow(0);
	var myDayNames = new Array("m","t","o","t","f","l","s");
	for (var i = 0; i < myDayNames.length; i++)
	{
		var cell = headerRow.insertCell(i);
		cell.style.textAlign = "center";
		cell.style.padding = "2px 0";
		cell.innerHTML = myDayNames[i].toUpperCase();
	}
	var month = Date.parseExact(startDate, "dd-MM-yyyy").getMonth();
	var firstDate = Date.parseExact(startDate, "dd-MM-yyyy").last().sunday();
	for (var i = 1; i < 6; i++)
	{
		var row = table.insertRow(i)
		for (var j = 0; j < 7; j++)
		{
			var cell = row.insertCell(j);
			cell.innerHTML = firstDate.addDays(1).toString("d");
			cell.id = table.id + firstDate.toString("yyyyMMdd")
			cell.style.border = "1px solid #dedede";
			cell.style.textAlign = "center";
			cell.style.padding = "2px 0";
			if (firstDate.getMonth() != month) cell.style.color = "#ccc";
			if (firstDate < Date.today()) 
				cell.style.backgroundColor = "#666666";
			else
				cell.onclick = selectDate;
		}
	}
}

function selectDate()
{
	if (this.id.indexOf("Out")>0)
	{
		outTravelDate = Date.parseExact(this.id.slice(-8), "yyyyMMdd");
		if (validateDates())
		{
			resetBackgrounds(tblOutMonth);
			this.style.background= "#f00";
		}
		else
		{
			resetBackgrounds(tblOutMonth);
			this.style.background= "#f00";
			backTravelDate = outTravelDate;
			resetBackgrounds(tblBackMonth);
			document.getElementById(tblBackMonth.id + outTravelDate.toString("yyyyMMdd")).style.background = "#f00";
		}
	}
	else
	{
		backTravelDate = 	Date.parseExact(this.id.slice(-8), "yyyyMMdd");
		if (validateDates())
		{
			resetBackgrounds(tblBackMonth);
			this.style.background= "#f00";
		}
		else
		{
			backTravelDate = outTravelDate;
			resetBackgrounds(tblBackMonth);
			document.getElementById(tblBackMonth.id + outTravelDate.toString("yyyyMMdd")).style.background = "#f00";
			alert("Udrejsedato skal være før hjemrejsedato");
		}
	}
}

function resetBackgrounds(el)
{
	for (var i = 0; i < el.rows.length; i++)
		for (var j = 0; j < el.rows[i].cells.length; j++)
			if (el.rows[i].cells[j].onclick != null)
				el.rows[i].cells[j].style.background = "#00929c";
	
}

function validateDates()
{
	if (backTravelDate == null)
		return true;
	if (outTravelDate.compareTo(backTravelDate) == 1)
		return false;
	return true;
}

function createMonthSelectorOption(date)
{
	var o = document.createElement("option");
	o.text = date.toString("MMMM yyyy");
	o.value = date.toString("dd-MM-yyyy");
	return o;
}

function setBackDateForm()
{
	if (document.getElementById("e2bTravelType1").checked)
	{
		document.getElementById("e2bBackMonthTd1").style.visibility = "visible";
		document.getElementById("e2bBackMonthTd2").style.visibility = "visible";
	}
	else
	{
		document.getElementById("e2bBackMonthTd1").style.visibility = "hidden";
		document.getElementById("e2bBackMonthTd2").style.visibility = "hidden";
	}
}

function e2bSendForm()
{
	var location = "http://flights2.infosys.de/index.phtml?agent=cwldk_new&AorK=K&pax=1&pax_chd=0&pax_inf=0&only_avail=Y"
	location += "&from=" + selFromCity.options[selFromCity.selectedIndex].value;
	location += "&Day=" + outTravelDate.toString("d");
	location += "&month_1=" + outTravelDate.toString("M-yyyy");
	location += "&to=" + selToCity.options[selToCity.selectedIndex].value;
	location += "&tarif_klasse=";
	location += document.getElementById("e2bTravelClassN").checked ? "N" : "JB";
	if (document.getElementById("e2bTravelType1").checked)
	{
		location += "&onewayswitch=0"
		location += "&RetDay=" + backTravelDate.toString("d");
		location += "&month_2=" + backTravelDate.toString("M-yyyy");
	}
	else
	{
		location += "&onewayswitch=1"
	}
	window.navigate(location);
}

setMonthSelectors();
changeFromCountry();
changeToCountry();

