/*
  $Id$
*/

var isIE = (navigator.userAgent.indexOf("MSIE") >= 0);

var ports_london = new Array('LON', 'LHR', 'LGW', 'LTN', 'STN', 'LCY');
var ports_uk = new Array('ABZ', 'BHD', 'BFS', 'BHX', 'BLK', 'BOH', 
			'BRS', 'CWL', 'MME', 'EDI', 'EXT', 'GLA', 
			'PIK', 'GCI', 'JER', 'LBA', 'LPL', 'MAN', 
			'NCL', 'NWI', 'EMA', 'DSA', 'SOU');

function loadOrigin() {
	var originCity = document.getElementById('originCity');

	var option = new Option('------ London -------', '');
	originCity.options[originCity.options.length] = option;
	for (var i in ports_london) {
		if (origs[ports_london[i]]) {
			var port = origs[ports_london[i]][0].split('-');
			var code = port[0].replace(/^\s*|\s*$/g,"");
			var name = port[1].replace(/^\s*|\s*$/g,"");
			var option = new Option(name, code);
			originCity.options[originCity.options.length] = option;
		}
	}

	var option = new Option('------ Rest of the UK -------', '');
	originCity.options[originCity.options.length] = option;
	for (var i in ports_uk) {
		if (origs[ports_uk[i]]) {
			var port = origs[ports_uk[i]][0].split('-');
			var code = port[0].replace(/^\s*|\s*$/g,"");
			var name = port[1].replace(/^\s*|\s*$/g,"");
			var option = new Option(name, code);
			originCity.options[originCity.options.length] = option;
		}
	}

	var option = new Option('------ Europe & Others -------', '');
	originCity.options[originCity.options.length] = option;
	for (var i in origs) {
		// skip pre-selected items
		if (origs[i][0]) {
			var port = origs[i][0].split('-');
			var code = port[0].replace(/^\s*|\s*$/g,"");
			var name = port[1].replace(/^\s*|\s*$/g,"");
			var option = new Option(name, code);
			originCity.options[originCity.options.length] = option;
		}
	}

	var selectedOriginCity = document.getElementById('selectedOriginCity');
	if (selectedOriginCity && selectedOriginCity.value != '') {
		originCity.value = selectedOriginCity.value;
		loadDestination();
	}
}

function loadDestination() {
	var originCity = document.getElementById('originCity');
	var orig = originCity.value;

	var destinationCity = document.getElementById('destinationCity');

	while (destinationCity.options.length > 1) {
		destinationCity.options[destinationCity.options.length-1] = null;
	}

	var dests = origs[orig][1];
	if (dests) {
		for (var i=0; i<dests.length-1; i++) {
			var port = dests[i].split('-');
			var code = port[0].replace(/^\s*|\s*$/g,"");
			var name = port[1].replace(/^\s*|\s*$/g,"");
			var option = new Option(name, code);
			destinationCity.options[destinationCity.options.length] = option;
		}
	}

	var selectedDestinationCity = document.getElementById('selectedDestinationCity');
	if (selectedDestinationCity && selectedDestinationCity.value != '') {
		destinationCity.value = selectedDestinationCity.value;
	}
}

function bookingTypeChanged(which) {
	// reset form
	document.getElementById("labelOrig").innerHTML = "From";
	document.getElementById("labelDepart").innerHTML = "Depart";
	document.getElementById("labelDest").style.display = "";
	document.getElementById("destinationCity").style.display = "";
	document.getElementById("labelReturn").innerHTML = "Return";
	document.getElementById("labelDouble").style.display = "";
	document.getElementById("doubleRooms").style.display = "";
	document.getElementById("labelTwin").style.display = "";
	document.getElementById("twinRooms").style.display = "";
	document.getElementById("labelSingle").style.display = "";
	document.getElementById("singleRooms").style.display = "";
	if (which.value == 'B') {
		// nothing to do
	}
	if (which.value == 'H') {
		document.getElementById("labelOrig").innerHTML = "Destination";
		document.getElementById("labelDepart").innerHTML = "Check-in";
		document.getElementById("labelDest").style.display = "none";
		document.getElementById("destinationCity").style.display = "none";
		document.getElementById("labelReturn").innerHTML = "Check-out";
	}
	if (which.value == 'F') {
		document.getElementById("labelDouble").style.display = "none";
		document.getElementById("doubleRooms").style.display = "none";
		document.getElementById("labelTwin").style.display = "none";
		document.getElementById("twinRooms").style.display = "none";
		document.getElementById("labelSingle").style.display = "none";
		document.getElementById("singleRooms").style.display = "none";
	}
}

function dateChanged(which) {
	var departDate = document.getElementById('departDate');
	var returnDate = document.getElementById('returnDate');
	var dd = parseDate(departDate.value, true);
	var dr = parseDate(returnDate.value, true);
	if ((dr.valueOf() - dd.valueOf()) <  0) {
		// keep the changed date, adjust the other
		if (which.id == 'departDate') {
			returnDate.value = departDate.value; 
		} else if (which.id == 'returnDate') {
			departDate.value = returnDate.value;
		}
	}
}

function simpleCalendar(trigger) {
	var target = trigger;

	if (trigger.id == 'departCal') {
		target = document.getElementById('departDate');
	}
	if (trigger.id == 'returnCal') {
		target = document.getElementById('returnDate');
	}
	scwNextAction = dateChanged.runsAfterSCW(trigger, target);
	scwShow(target, trigger);
}

function initPlanForm() {
	var bookingType = document.getElementsByName("bookingType");
	for (i=0; i<bookingType.length; i++) {
		if (bookingType[i].checked) {
			bookingTypeChanged(bookingType[i]);
		}
	}
	loadOrigin();
}

