function toggleQQ(name){
	var layers = new Object();
	layers.Air = $('Air');
	layers.Hotel = $('Hotel');
	var tabs = new Object();
	tabs.Air = $('AirTab');
	tabs.Hotel = $('HotelTab');

	var lastItem = 'Hotel';

	for (var key in layers) {
		if(tabs[key]) {
			if(key == name) {
				layers[key].style.display = 'block';
				tabs[key].className = 'Tab On';
			} else {
				layers[key].style.display = 'none';
				tabs[key].className = 'Tab';
			}
			if(key == lastItem) {
				tabs[key].className = tabs[key].className+' Last';
			}
		}
	}
}

function toggleTripType(name){
	var layers = new Object();
	layers['RoundTrip'] = document.getElementById('RoundTrip');
	layers['OneWay'] = document.getElementById('OneWay');
	layers['OpenJaw'] = document.getElementById('OpenJaw');

	for (var key in layers) {
		if(key == name) {
			layers[key].style.display = 'block';
		} else if(layers[key]) {
			layers[key].style.display = 'none';
		}
	}
}

function toggleAdvanced(id) {
	adv = document.getElementById(id+'Content');
	advImg = document.getElementById(id+'Button');
	advFlag = document.getElementById(id+'Flag');
	if(adv.style.display == 'none') {
		adv.style.display = 'block';
		advImg.src = '/images/min.gif';
		advFlag.value = 1;
	} else {
		adv.style.display = 'none';
		advImg.src = '/images/max.gif';
		advFlag.value = 0;
	}
}

function toggleVIA(viaElementId) {
	viaDiv = document.getElementById(viaElementId);
	if (viaDiv.offsetHeight) { //element's offsetHeight is 0 when not displayed
		viaDiv.style.display = 'none';
	} else {
		viaDiv.style.display = 'block';
	}
}

function initAdvanced() {
	advFlag = document.getElementById('AirRTAdvancedFlag');
	//I can use RT because OW and OJ will always have the same value.
	if(advFlag.value == 1) {
		toggleAdvanced('AirRTAdvanced');
		toggleAdvanced('AirOWAdvanced');
		toggleAdvanced('AirOJAdvanced');
	}
}

function initQQ(mode, tripType, hotelCity) {
	toggleQQ(mode);
	toggleTripType(tripType);
	initAdvanced();
	
	if($('HotelCity')) {
		new Ajax.Autocompleter('HotelCity', 'HotelCityAutoComplete', '/ajax/hotel_cities.php', {
			minChars: 3, 
			afterUpdateElement : function(text, li){
				updatedDestination = true;
				$('HotelDestination').value = li.id;
			}
		});
	}
	
	countries = document.getElementById('HotelCountry');
	if(countries) {
		updateHotelCities(countries.options[countries.selectedIndex].value, hotelCity);
		//checkAges(document.getElementById('HotelChild'));
		checkBeds(document.getElementById('HotelAdult'));
	}
	
	if(name == 'Air') {
		document.forms[tripType+'Form'].elements['outbound[from]'].focus();
	}
	updateCity(document.forms['RoundTripForm'].elements['outbound[from]'].value, 'AirRTOutboundFromCity');
	updateCity(document.forms['RoundTripForm'].elements['outbound[to]'].value, 'AirRTOutboundToCity');
	updateCity(document.forms['OneWayForm'].elements['outbound[from]'].value, 'AirOWOutboundFromCity');
	updateCity(document.forms['OneWayForm'].elements['outbound[to]'].value, 'AirOWOutboundToCity');
	
	if(document.forms['OpenJawForm']) {
		updateCity(document.forms['OpenJawForm'].elements['outbound[from]'].value, 'AirOJOutboundFromCity');
		updateCity(document.forms['OpenJawForm'].elements['outbound[to]'].value, 'AirOJOutboundToCity');
		updateCity(document.forms['OpenJawForm'].elements['inbound[from]'].value, 'AirOJInboundFromCity');
		updateCity(document.forms['OpenJawForm'].elements['inbound[to]'].value, 'AirOJInboundToCity');
	}
	
	if($('AirRTFareTypeSTU')) { checkFareType('RT', 'STU'); }
	if($('AirOWFareTypeSTU')) { checkFareType('OW', 'STU'); }
	if($('AirOJFareTypeSTU')) { checkFareType('OJ', 'STU'); }
}

//global used to keep track of the hotel destination.
updatedDestination = false;

function checkDestination() {
	if(updatedDestination) {
		updatedDestination = false;
	} else {
		$('HotelDestination').value = '';
	}
}

function initQQ2(mode, tripType, hotelCity) {
	toggleQQ(mode);
	toggleTripType(tripType);
	checkBeds(document.getElementById('HotelAdult'));
	if(name == 'Air') {
		document.forms[tripType+'Form'].elements['outbound[from]'].focus();
	}
}

//used to cached the city results below to cut down on ajax calls.
var resultCache = new Array();

function updateCity(airport, id) {
	if(airport != '') {
		if(typeof(resultCache[airport]) == "undefined") {
			var http = getHTTPObject();
			http.open("GET", "/get_city.php?airport="+airport, false);
			http.send(null);
			document.getElementById(id).innerHTML = http.responseText;
			resultCache[airport] = http.responseText;
		} else {
			document.getElementById(id).innerHTML = resultCache[airport];
		}
	}
 }
 function updateHotelCities(country,selectedCity) {
 	cities = document.getElementById('HotelDestination');
 	if(cities) {
		if(country != '') {
			cities.options.length = 0;
			cities.options[0] = new Option('Please Wait...','');
	
			var http = getHTTPObject();
			http.open("GET", "/get_hotel_cities.php?country="+country, false);
			http.send(null);
			opts = http.responseText.split('|');
	
			cities.options.length = 0;
			for(i=0; i<opts.length; i++) {
				optValues = opts[i].split(',');
				cities.options[i] = new Option(optValues[1],optValues[0]);
				if(selectedCity == optValues[0]) {
					cities.selectedIndex = i;
				}
			}
		} else {
			cities.options.length = 0;
		}
	}
 }

var explainedPassengers = false;
function checkPassengers(formname, changed) {
	my_form = document.forms[formname];
	updated = false;
	
	if(changed == 'ADT' && my_form.elements['passengers[ADT]'].options.selectedIndex != 0) {
		if(my_form.elements['passengers[MIS]'].options.selectedIndex != 0 || my_form.elements['passengers[STU]'].options.selectedIndex != 0) {
			my_form.elements['passengers[MIS]'].options.selectedIndex = 0;
			my_form.elements['passengers[STU]'].options.selectedIndex = 0;
			updated = true;
		}
	} else if(changed == 'CHD' && my_form.elements['passengers[CHD]'].options.selectedIndex != 0) {
		if(my_form.elements['passengers[STU]'].options.selectedIndex != 0) {
			my_form.elements['passengers[STU]'].options.selectedIndex = 0;
			updated = true;
		}
	} else if(changed == 'STU' && my_form.elements['passengers[STU]'].options.selectedIndex != 0) {
		if(my_form.elements['passengers[MIS]'].options.selectedIndex != 0 || my_form.elements['passengers[ADT]'].options.selectedIndex != 0 || my_form.elements['passengers[CHD]'].options.selectedIndex != 0) {
			my_form.elements['passengers[ADT]'].options.selectedIndex = 0;
			my_form.elements['passengers[CHD]'].options.selectedIndex = 0;
			my_form.elements['passengers[MIS]'].options.selectedIndex = 0;
			updated = true;
		}
	} else if(changed == 'MIS' && my_form.elements['passengers[MIS]'].options.selectedIndex != 0) {
		if(my_form.elements['passengers[STU]'].options.selectedIndex != 0 || my_form.elements['passengers[ADT]'].options.selectedIndex != 0) {
			my_form.elements['passengers[ADT]'].options.selectedIndex = 0;
			my_form.elements['passengers[STU]'].options.selectedIndex = 0;
			updated = true;
		}
	}
	
	if(updated && !explainedPassengers) {
		alert('Your passenger values have been changed for you to match a valid passenger combination.\nValid passenger combinations are as follows:\n\n- only Adults\n- Adults & Children\n- only Students\n- only Humanitarian\n- Humanitarian and Children\n\nThis message will only be displayed once.');
		explainedPassengers = true;
	}
}

function getHTTPObject() {
	var xmlhttp = false;
	if (window.XMLHttpRequest) { //Mozilla XML request
		xmlhttp = new XMLHttpRequest();
	} else if (window.ActiveXObject) { //IE XML request
		xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
	}
	return xmlhttp;
}

var currentInput;
var iFrameFocus = 0;

function openCalendar(originDiv, baseInput) {
	if (!originDiv.id) {
		originDiv = document.getElementById(originDiv);
	}
	if (baseInput) {
		baseDate = document.getElementById(baseInput).value;
	} else {
		baseDate = '0';
	}

	IFrameDiv = document.getElementById('IFrameCalendar');
	originDivPositions = findPos(originDiv);
	IFrameDiv.style.left = originDivPositions[0];
	IFrameDiv.style.top = originDivPositions[1] + 22;

	frames.Calendar.location.href = '/calendar.php?base_date=' + baseDate + '&selected_date=' + originDiv.value;

	currentInput = originDiv;
}
function setVal(val) {
	currentInput.value = val;
}
function closeCalendar() {
	if(document.getElementById('IFrameCalendar').style.display == 'block') {
		setTimeout('reallyCloseCalendar()',25);
	}
}
function reallyCloseCalendar() {
	if(!iFrameFocus) {
		setTimeout('frames.Calendar.closeIFrame()',25);
	}
}
function setIFrameFocus(bln) {
	iFrameFocus = bln;
}
function findPos(obj) {
	var curleft = curtop = 0;
	if (obj.offsetParent) {
		curleft = obj.offsetLeft
		curtop = obj.offsetTop
		while (obj = obj.offsetParent) {
			curleft += obj.offsetLeft
			curtop += obj.offsetTop
		}
	}
	return [curleft,curtop];
}


function checkCount(guests) {
	var amount = guests.options[guests.selectedIndex].value;
	if(amount == 2) {
		document.getElementById('HotelRoomType').style.display = 'block';
	} else {
		document.getElementById('HotelRoomType').style.display = 'none';
	}
}

function checkAges(children) {
	var amount = children.options[children.selectedIndex].value;
	if(amount == 0) {
		document.getElementById('HotelChildOne').style.display = 'none';
		document.getElementById('HotelChildTwo').style.display = 'none';
	} else if(amount == 1) {
		document.getElementById('HotelChildOne').style.display = 'block';
		document.getElementById('HotelChildTwo').style.display = 'none';
	} else if(amount == 2) {
		document.getElementById('HotelChildOne').style.display = 'block';
		document.getElementById('HotelChildTwo').style.display = 'block';
	}
}

function checkBeds(adults) {
	var amount = adults.options[adults.selectedIndex].value;
	if(amount == 2) {
		document.getElementById('HotelBeds').style.display = 'block';
	} else {
		document.getElementById('HotelBeds').style.display = 'none';
	}
}

function checkFareType(formName) {
	if(($('Air'+formName+'FareTypeCRU') && $('Air'+formName+'FareTypeCRU').checked) || ($('Air'+formName+'FareTypeSTU') && $('Air'+formName+'FareTypeSTU').checked)) {
		if(!$('Air'+formName+'Child').disabled && $('Air'+formName+'Child').selectedIndex != 0) {
			$('Air'+formName+'PassengerChild').highlight();
		}
		$('Air'+formName+'Child').selectedIndex = 0;
		$('Air'+formName+'Child').disabled = true;
	} else {
		$('Air'+formName+'Child').disabled = false;
	}
}
