
var optlist = new Array('flight', 'hotel', 'flighthotel', 'carhire', 'flydrive', 'parking', 'transfers', 'cottages');

var ac_f = { script: 'ajax.php?a=iatalookup&b=a&', varname: 'input', minchars: 3, cache: false, timeout: 4000, json: true };
var ac_h = { script: 'ajax.php?a=iatalookup&b=h&', varname: 'input', minchars: 3, cache: false, timeout: 4000, json: true };
var ac_r = { script: 'ajax.php?a=iatalookup&b=h&showairportcodes=1&', varname: 'input', minchars: 3, cache: false, timeout: 4000, json: true };
var ac_cp = { script: 'ajax.php?a=iatalookup&b=c&', varname: 'input', minchars: 3, cache: false, timeout: 4000, json: true, callback: function (obj) { var d=document.getElementById('sb2_carhire_dropoffloc'); if (d.value=='') { d.value=document.getElementById('sb2_carhire_pickuploc').value; } } };
var ac_cd = { script: 'ajax.php?a=iatalookup&b=c&', varname: 'input', minchars: 3, cache: false, timeout: 4000, json: true };
var ac_rh = { script: 'ajax.php?a=iatalookup&b=rh&', varname: 'input', minchars: 3, cache: false, timeout: 4000, json: true };
var daysoftheweek = ["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"]

function sb2_init() {

	if (document.getElementById('sb2_flight_iatafrom')) var asFrom = new AutoSuggest('sb2_flight_iatafrom', ac_f);
	if (document.getElementById('sb2_flight_iatato')) var asTo = new AutoSuggest('sb2_flight_iatato', ac_f);
	if (document.getElementById('sb2_hotel_city')) var asHotel = new AutoSuggest('sb2_hotel_city', ac_h);
	if (document.getElementById('sb2_flighthotel_iatafrom')) var asHotel = new AutoSuggest('sb2_flighthotel_iatafrom', ac_f);
	if (document.getElementById('sb2_flighthotel_iatato')) var asHotel = new AutoSuggest('sb2_flighthotel_iatato', ac_r);
	if (document.getElementById('sb2_carhire_pickuploc')) var asHotel = new AutoSuggest('sb2_carhire_pickuploc', ac_cp);
	if (document.getElementById('sb2_carhire_dropoffloc')) var asHotel = new AutoSuggest('sb2_carhire_dropoffloc', ac_cd);
	if (document.getElementById('sb2_flydrive_iatafrom')) var asFrom = new AutoSuggest('sb2_flydrive_iatafrom', ac_f);
	if (document.getElementById('sb2_flydrive_iatato')) var asTo = new AutoSuggest('sb2_flydrive_iatato', ac_f);
	if (document.getElementById('sb2_transfer_arrivalairport')) var asTo = new AutoSuggest('sb2_transfer_arrivalairport', ac_f);
	if (document.getElementById('sb2_transfer_arrivalresort')) var asTo = new AutoSuggest('sb2_transfer_arrivalresort', ac_rh);
	//if (document.getElementById('sb2_parking_iatafrom')) var asFrom = new AutoSuggest('sb2_flydrive_iatafrom', ac_f);

	var currentYearDate = new Date();
	var yearsAllowed = new Array;
	yearsAllowed[0] = currentYearDate.getFullYear();
	yearsAllowed[1] = (currentYearDate.getFullYear()+1);
	
	if (document.getElementById('sb2_flight_outdateinput')) {
		Calendar.setup( { inputField:'sb2_flight_outdateinput', ifFormat:"%Y-%m-%d", button:'sb2_flight_outdatetrigger', onSelect:sb2_dateChanged, firstDay:1, range:yearsAllowed, weekNumbers:false, disableFunc:sb2_disallowDate, showOthers:true } );
		$('#sb2_flight_outdatetrigger').click(function(){ $('.calendar').fadeIn('medium'); });
		sb2_updatedate('sb2_flight_out');
	}
	if (document.getElementById('sb2_flight_retdateinput')) {
		Calendar.setup( { inputField:'sb2_flight_retdateinput', ifFormat:"%Y-%m-%d", button:'sb2_flight_retdatetrigger', onSelect:sb2_dateChanged, firstDay:1, range:yearsAllowed, weekNumbers:false, disableFunc:sb2_disallowDate, showOthers:true } );
		$('#sb2_flight_retdatetrigger').click(function(){ $('.calendar').fadeIn('medium'); });
		sb2_updatedate('sb2_flight_ret');
	}
	if (document.getElementById('sb2_hotel_indateinput')) {
		Calendar.setup( { inputField:'sb2_hotel_indateinput', ifFormat:"%Y-%m-%d", button:'sb2_hotel_indatetrigger', onSelect:sb2_dateChanged, firstDay:1, range:yearsAllowed, weekNumbers:false, disableFunc:sb2_disallowDate, showOthers:true } );
		$('#sb2_hotel_indatetrigger').click(function(){ $('.calendar').fadeIn('medium'); });
		sb2_updatedate('sb2_hotel_in');
	}
	if (document.getElementById('sb2_flighthotel_indatetrigger')) {
		Calendar.setup( { inputField:'sb2_flighthotel_indateinput', ifFormat:"%Y-%m-%d", button:'sb2_flighthotel_indatetrigger', onSelect:sb2_dateChanged, firstDay:1, range:yearsAllowed, weekNumbers:false, disableFunc:sb2_disallowDate, showOthers:true } );
		$('#sb2_flighthotel_indatetrigger').click(function(){ $('.calendar').fadeIn('medium'); });
		sb2_updatedate('sb2_flighthotel_in'); 
	}
	if (document.getElementById('sb2_flighthotel_outdateinput')) {
		Calendar.setup( { inputField:'sb2_flighthotel_outdateinput', ifFormat:"%Y-%m-%d", button:'sb2_flighthotel_outdatetrigger', onSelect:sb2_dateChanged, firstDay:1, range:yearsAllowed, weekNumbers:false, disableFunc:sb2_disallowDate, showOthers:true } );
		$('#sb2_flighthotel_outdatetrigger').click(function(){ $('.calendar').fadeIn('medium'); });
		sb2_updatedate('sb2_flighthotel_out');
	}
	if (document.getElementById('sb2_carhire_pickupdateinput')) {
		Calendar.setup( { inputField:'sb2_carhire_pickupdateinput', ifFormat:"%Y-%m-%d", button:'sb2_carhire_pickupdatetrigger', onSelect:sb2_dateChanged, firstDay:1, range:yearsAllowed, weekNumbers:false, disableFunc:sb2_disallowDate, showOthers:true } );
		$('#sb2_carhire_pickupdatetrigger').click(function(){ $('.calendar').fadeIn('medium'); });
		sb2_updatedate('sb2_carhire_pickup');
	}
	if (document.getElementById('sb2_carhire_dropoffdateinput')) {
		Calendar.setup( { inputField:'sb2_carhire_dropoffdateinput', ifFormat:"%Y-%m-%d", button:'sb2_carhire_dropoffdatetrigger', onSelect:sb2_dateChanged, firstDay:1, range:yearsAllowed, weekNumbers:false, disableFunc:sb2_disallowDate, showOthers:true } );
		$('#sb2_carhire_dropoffdatetrigger').click(function(){ $('.calendar').fadeIn('medium'); });
		sb2_updatedate('sb2_carhire_dropoff');
	}
	if (document.getElementById('sb2_flydrive_outdateinput')) {
		Calendar.setup( { inputField:'sb2_flydrive_outdateinput', ifFormat:"%Y-%m-%d", button:'sb2_flydrive_outdatetrigger', onSelect:sb2_dateChanged, firstDay:1, range:yearsAllowed, weekNumbers:false, disableFunc:sb2_disallowDate, showOthers:true } );
		$('#sb2_flydrive_outdatetrigger').click(function(){ $('.calendar').fadeIn('medium'); });
		sb2_updatedate('sb2_flydrive_out');
	}
	if (document.getElementById('sb2_flydrive_retdateinput')) {
		Calendar.setup( { inputField:'sb2_flydrive_retdateinput', ifFormat:"%Y-%m-%d", button:'sb2_flydrive_retdatetrigger', onSelect:sb2_dateChanged, firstDay:1, range:yearsAllowed, weekNumbers:false, disableFunc:sb2_disallowDate, showOthers:true } );
		$('#sb2_flydrive_retdatetrigger').click(function(){ $('.calendar').fadeIn('medium'); });
		sb2_updatedate('sb2_flydrive_ret');
	}
	if (document.getElementById('sb2_parking_arrdatetrigger')) {
		Calendar.setup( { inputField:'sb2_parking_arrdateinput', ifFormat:"%Y-%m-%d", button:'sb2_parking_arrdatetrigger', onSelect:sb2_dateChanged, firstDay:1, range:yearsAllowed, weekNumbers:false, disableFunc:sb2_disallowDate, showOthers:true } );
		$('#sb2_parking_arrdatetrigger').click(function(){ $('.calendar').fadeIn('medium'); });
		sb2_updatedate('sb2_parking_arr');
	}
	if (document.getElementById('sb2_parking_retdatetrigger')) {
		Calendar.setup( { inputField:'sb2_parking_retdateinput', ifFormat:"%Y-%m-%d", button:'sb2_parking_retdatetrigger', onSelect:sb2_dateChanged, firstDay:1, range:yearsAllowed, weekNumbers:false, disableFunc:sb2_disallowDate, showOthers:true } );
		$('#sb2_parking_retdatetrigger').click(function(){ $('.calendar').fadeIn('medium'); });
		sb2_updatedate('sb2_parking_ret');
	}
	if (document.getElementById('sb2_transfer_arrivaldateinput')) {
		Calendar.setup( { inputField:'sb2_transfer_arrivaldateinput', ifFormat:"%Y-%m-%d", button:'sb2_transfer_arrivaldatetrigger', onSelect:sb2_dateChanged, firstDay:1, range:yearsAllowed, weekNumbers:false, disableFunc:sb2_disallowDate, showOthers:true } );
		$('#sb2_transfer_arrivaldatetrigger').click(function(){ $('.calendar').fadeIn('medium'); });
		sb2_updatedate('sb2_transfer_arrival');
	}
	if (document.getElementById('sb2_transfer_departuredateinput')) {
		Calendar.setup( { inputField:'sb2_transfer_departuredateinput', ifFormat:"%Y-%m-%d", button:'sb2_transfer_departuredatetrigger', onSelect:sb2_dateChanged, firstDay:1, range:yearsAllowed, weekNumbers:false, disableFunc:sb2_disallowDate, showOthers:true } );
		$('#sb2_transfer_departuredatetrigger').click(function(){ $('.calendar').fadeIn('medium'); });
		sb2_updatedate('sb2_transfer_departure');
	}
	if (document.getElementById('sb2_cottage_arrdatetrigger')) {
		Calendar.setup( { inputField:'sb2_cottage_arrdateinput', ifFormat:"%d-%m-%Y", button:'sb2_cottage_arrdatetrigger', onSelect:sb2_dateChanged, firstDay:1, range:yearsAllowed, weekNumbers:false, disableFunc:sb2_disallowDate, showOthers:true } );
		$('#sb2_cottage_arrdatetrigger').click(function(){ $('.calendar').fadeIn('medium'); });
		sb2_updatedate('sb2_cottage_arr');
	}
	
	if (document.getElementById('sb2_hotel_rooms')) sb2_updaterooms('sb2_hotel_');
	if (document.getElementById('sb2_flighthotel_rooms')) sb2_updaterooms('sb2_flighthotel_');

	sb2_selopt();

}

function sb2_updaterooms(id) {
	var numRooms = document.getElementById(id+'rooms').options[document.getElementById(id+'rooms').selectedIndex].value;
	for(var j=1; j<=3; j++) document.getElementById(id+'room'+j).style.display = (j<=numRooms ? 'block' : 'none');
}

function sb2_dateChanged(calendar) {
	if (!calendar.dateClicked) return;
	var indexModifier = -1;
	switch(calendar.params.button.id) {
		case "sb2_flight_retdatetrigger":
			indexModifier=0;
			var dateId = calendar.params.button.id.replace('datetrigger','');
		break;
		case "sb2_flight_outdatetrigger":
			var dateId = "sb2_flight_out";
			document.getElementById('sb2_flight_outdateinput').value = calendar.date.getFullYear()+'-'+(calendar.date.getMonth()+1)+'-'+calendar.date.getDate();
			document.getElementById('sb2_flight_retdateinput').value = calendar.date.getFullYear()+'-'+(calendar.date.getMonth()+1)+'-'+calendar.date.getDate();
			break;
		case "sb2_flighthotel_indatetrigger":
			var dateId = "sb2_flighthotel_in";
			document.getElementById('sb2_flighthotel_indateinput').value = calendar.date.getFullYear()+'-'+(calendar.date.getMonth()+1)+'-'+calendar.date.getDate();
			document.getElementById('sb2_flighthotel_outdateinput').value = calendar.date.getFullYear()+'-'+(calendar.date.getMonth()+1)+'-'+calendar.date.getDate();
			break;
		case "sb2_cottage_arrdatetrigger":
			var dateId = "sb2_cottage_arr";
			document.getElementById('sb2_cottage_arrdateinput').value = calendar.date.getDate()+'-'+(calendar.date.getMonth()+1)+'-'+calendar.date.getFullYear();
			break;
		default:
			$(calendar.params.inputField).value = calendar.date.getFullYear()+'-'+(calendar.date.getMonth()+1)+'-'+calendar.date.getDate();
			var dateId = calendar.params.button.id.replace('datetrigger','');
			break;
	}
	document.getElementById(dateId+'day').selectedIndex = (calendar.date.getDate()+indexModifier);
	var month = (datetounixtime(calendar.date.getFullYear(),calendar.date.getMonth(),1));
	for (i=0; i<document.getElementById(dateId+'month').options.length; i++) if (document.getElementById(dateId+'month').options[i].value == month) document.getElementById(dateId+'month').selectedIndex = i;
	calendar.setDate(calendar.date);
	calendar.hide();
	sb2_updatedate(dateId);
}

function sb2_updatedate(id) {

	var day = document.getElementById(id+'day').options[document.getElementById(id+'day').selectedIndex].value;
	var mon = document.getElementById(id+'month').options[document.getElementById(id+'month').selectedIndex].value;
	if (day == 0 || mon == 0) {
		document.getElementById(id+'dayofweek').innerHTML = "(one-way)";
		return;
	}
	var date = new Date(mon*1000); date.setDate(day);
	document.getElementById(id+'dayofweek').innerHTML = daysoftheweek[date.getDay()];
}

function sb2_disallowDate(date) {
	// date is a JS Date object
	currentDate = new Date();
	currentDateUnix = datetounixtime(currentDate.getFullYear(), currentDate.getMonth(), currentDate.getDate());
	blockoutDateUnix = 0;
	dateUnix = datetounixtime(date.getFullYear(), date.getMonth(), date.getDate());
	maxDateUnix = datetounixtime((currentDate.getFullYear()+1), (currentDate.getMonth()-1), currentDate.getDate());
	if ((dateUnix < blockoutDateUnix) || (dateUnix > maxDateUnix)) {
		return true;
	} else { 
		return false;
	}
}

function datetounixtime(passedYear, passedMonth, passedDay) {
	var humDate = new Date(Date.UTC(passedYear, passedMonth, passedDay, 0,0,0));
	return (parseInt(humDate.getTime()/1000.0));
}

function sb2_selopt() {
	for(i=0;i<optlist.length;i++) if (document.getElementById('sb2_opt_'+optlist[i])) document.getElementById('sb2_pane_'+optlist[i]).style.display = document.getElementById('sb2_opt_'+optlist[i]).checked ? 'block' : 'none';
}