
if (!autoSuggestMinChars) var autoSuggestMinChars = 3;

var ac_f = {script: 'ajax.php?a=iatalookup&b=a&', varname: 'input', minchars: autoSuggestMinChars, cache: false, timeout: 4000, json: true};
var ac_h = {script: 'ajax.php?a=iatalookup&b=h&', varname: 'input', minchars: autoSuggestMinChars, cache: false, timeout: 4000, json: true};
var ac_r = {script: 'ajax.php?a=iatalookup&b=h&showairportcodes=1&', varname: 'input', minchars: autoSuggestMinChars, cache: false, timeout: 4000, json: true};
var ac_cp = {script: 'ajax.php?a=iatalookup&b=c&', varname: 'input', minchars: autoSuggestMinChars, 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: autoSuggestMinChars, cache: false, timeout: 4000, json: true};
var ac_rh = {script: 'ajax.php?a=iatalookup&b=rh&', varname: 'input', minchars: autoSuggestMinChars, cache: false, timeout: 4000, json: true};

//var optlist = ['fare','flight','packages','hotel','flighthotel','carhire','flydrive','parking','transfers','cottages','insurance'];

// Pane options for setting up each pane
var optlist = {
	'fare': {
		'calendar': [['sb2_fare_outdateinput','sb2_fare_outdatetrigger'],['sb2_fare_retdateinput','sb2_fare_retdatetrigger']],
		'date': ['sb2_fare_out','sb2_fare_ret'],
		'autosuggest': [['sb2_fare_iatafrom',ac_f],['sb2_fare_iatato',ac_f]]
	},
	'flight': {
		'calendar': [['sb2_flight_outdateinput','sb2_flight_outdatetrigger'],['sb2_flight_retdateinput','sb2_flight_retdatetrigger']],
		'date': ['sb2_flight_out','sb2_flight_ret'],
		'autosuggest': [['sb2_flight_iatafrom',ac_f],['sb2_flight_iatato',ac_f]]
	},
	'packages': {
		'calendar': [['sb2_package_outdateinput','sb2_package_outdatetrigger'],['sb2_package_retdateinput','sb2_package_retdatetrigger']],
		'date': ['sb2_package_out','sb2_package_ret']
	},
	'hotel': {
		'calendar': [['sb2_hotel_indateinput','sb2_hotel_indatetrigger']],
		'date': ['sb2_hotel_in'],
		'autosuggest': [['sb2_hotel_city',ac_h]]
	},
	'flighthotel': {
		'calendar': [['sb2_flighthotel_indateinput','sb2_flighthotel_indatetrigger'],['sb2_flighthotel_outdateinput','sb2_flighthotel_outdatetrigger']],
		'date': ['sb2_flighthotel_in','sb2_flighthotel_out'],
		'autosuggest': [['sb2_flighthotel_iatafrom',ac_f],['sb2_flighthotel_iatato',ac_r]]
	},
	'carhire': {
		'calendar': [['sb2_carhire_pickupdateinput','sb2_carhire_pickupdatetrigger'],['sb2_carhire_dropoffdateinput','sb2_carhire_dropoffdatetrigger']],
		'date': ['sb2_carhire_pickup','sb2_carhire_dropoff'],
		'autosuggest': [['sb2_carhire_pickuploc',ac_cp],['sb2_carhire_dropoffloc',ac_cd]]
	},
	'flydrive': {
		'calendar': [['sb2_flydrive_outdateinput','sb2_flydrive_outdatetrigger'],['sb2_flydrive_retdateinput','sb2_flydrive_retdatetrigger']],
		'date': ['sb2_flydrive_out','sb2_flydrive_ret'],
		'autosuggest': [['sb2_flydrive_iatafrom',ac_f],['sb2_flydrive_iatato',ac_f]]
	},
	'parking': {
		'calendar': [['sb2_parking_arrdateinput','sb2_parking_arrdatetrigger'],['sb2_parking_retdateinput','sb2_parking_retdatetrigger']],
		'date': ['sb2_parking_arr','sb2_parking_ret']
	},
	'transfers': {
		'calendar': [['sb2_transfer_arrivaldateinput','sb2_transfer_arrivaldatetrigger'],['sb2_transfer_departuredateinput','sb2_transfer_departuredatetrigger']],
		'date': ['sb2_transfer_arrival','sb2_transfer_departure'],
		'autosuggest': [['sb2_transfer_arrivalairport',ac_f],['sb2_transfer_arrivalresort',ac_rh]]
	},
	'insurance': {
		'calendar': [[],[]],
		'date': [],
		'autosuggest': [[]]
	},
	'cottages': {
		'calendar': [['sb2_cottage_arrdateinput','sb2_cottage_arrdatetrigger']],
		'date': ['sb2_cottage_arr']
	}
};

var daysoftheweek = ["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"]

function sb2_init() {
	if (document.getElementById('sb2_hotel_rooms')) sb2_updaterooms('sb2_hotel_');
	if (document.getElementById('sb2_resorthotel_rooms')) sb2_updaterooms('sb2_resorthotel_');
	if (document.getElementById('sb2_flighthotel_rooms')) sb2_updaterooms('sb2_flighthotel_');
	if (document.getElementById('sb2_resortflighthotel_rooms')) sb2_updaterooms('sb2_resortflighthotel_');
	
	$('#sb2_resorthotel_area').change(function() {
	    $('#sb2_resorthotel_destination,#sb2_resorthotel_resort').hide();
	    $('#sb2_resorthotel_destination,#sb2_resorthotel_resort').empty();
	    if ($('#sb2_resorthotel_area').val() > 0) {
		$.getJSON('/ajax.php',{'a':'resortsearch','area':$('#sb2_resorthotel_area').val()},function($data) {
		    var $destoptions = [];
		    if ( $data.length > 0)
			{
			$destoptions.push('<option value="-1">Select Destination</option>');
			$.each($data,function($index,$item) {
			    $destoptions.push('<option value="' + $item['id'] + '">' + $item['name'] + '</option>');
			});
			$('#sb2_resorthotel_destination').append($destoptions.join(""));
			$('#sb2_resorthotel_destination').show();
		    }
		});
	    }
	});
	
	$('#sb2_resortflighthotel_area').change(function() {
	    $('#sb2_resortflighthotel_destination,#sb2_resortflighthotel_resort').hide();
	    $('#sb2_resortflighthotel_destination,#sb2_resortflighthotel_resort').empty();
	    if ($('#sb2_resortflighthotel_area').val() > 0) {
		$.getJSON('/ajax.php',{'a':'resortsearch','area':$('#sb2_resortflighthotel_area').val()},function($data) {
		    var $destoptions = [];
		    if ( $data.length > 0)
			{
			$destoptions.push('<option value="-1">Select Destination</option>');
			$.each($data,function($index,$item) {
			    $destoptions.push('<option value="' + $item['id'] + '">' + $item['name'] + '</option>');
			});
			$('#sb2_resortflighthotel_destination').append($destoptions.join(""));
			$('#sb2_resortflighthotel_destination').show();
		    }
		});
	    }
	});
	
	$('#sb2_resorthotel_destination').change(function() {
	    $('#sb2_resorthotel_resort').hide();
	    $('#sb2_resorthotel_resort').empty();
	    if ($('#sb2_resorthotel_destination').val() > 0) {
		$.getJSON('/ajax.php',{'a':'resortsearch','dest':$('#sb2_resorthotel_destination').val()},function($data) {
		    var $resoptions = [];
		    if ($data.length > 0) {
			$resoptions.push('<option value="-1">Select Resort</option>');
			$.each($data,function($index,$item) {
			    $resoptions.push('<option value="' + $item['id'] + '">' + $item['name'] + '</option>');
			});

			$('#sb2_resorthotel_resort').append($resoptions.join(""));
			$('#sb2_resorthotel_resort').show();
		    }
		});
	    }
	});
	
	$('#sb2_resortflighthotel_destination').change(function() {
	    $('#sb2_resortflighthotel_resort').hide();
	    $('#sb2_resortflighthotel_resort').empty();
	    if ($('#sb2_resortflighthotel_destination').val() > 0) {
		$.getJSON('/ajax.php',{'a':'resortsearch','dest':$('#sb2_resortflighthotel_destination').val()},function($data) {
		    var $resoptions = [];
		    if ($data.length > 0) {
			$resoptions.push('<option value="-1">Select Resort</option>');
			$.each($data,function($index,$item) {
			    $resoptions.push('<option value="' + $item['id'] + '">' + $item['name'] + '</option>');
			});

			$('#sb2_resortflighthotel_resort').append($resoptions.join(""));
			$('#sb2_resortflighthotel_resort').show();
		    }
		});
	    }
	});

	// Check to see if the value is not the default one and pre-show form entries if this is the case
	if ($('#sb2_resorthotel_area').val() > 0 ) {$('#sb2_resorthotel_destination').show();}
	if ($('#sb2_resorthotel_destination').val() > 0) {$('#sb2_resorthotel_resort').show();}
	if ($('#sb2_resortflighthotel_area').val() > 0 ) {$('#sb2_resortflighthotel_destination').show();}
	if ($('#sb2_resortflighthotel_destination').val() > 0) {$('#sb2_resortflighthotel_resort').show();}
	
	sb2_update_options();
}

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_fare_retdatetrigger":
			indexModifier=0;
			var dateId = calendar.params.button.id.replace('datetrigger','');
		break;
		case "sb2_fare_outdatetrigger":
			var dateId = "sb2_fare_out";
			document.getElementById('sb2_fare_outdateinput').value = calendar.date.getFullYear()+'-'+(calendar.date.getMonth()+1)+'-'+calendar.date.getDate();
			document.getElementById('sb2_fare_retdateinput').value = calendar.date.getFullYear()+'-'+(calendar.date.getMonth()+1)+'-'+calendar.date.getDate();
			break;
		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_package_outdatetrigger":
			var dateId = "sb2_package_out";
			document.getElementById('sb2_package_outdateinput').value = calendar.date.getDate()+'/'+(calendar.date.getMonth()+1)+'/'+calendar.date.getFullYear();
			document.getElementById('sb2_package_retdateinput').value = calendar.date.getDate()+'/'+(calendar.date.getMonth()+1)+'/'+calendar.date.getFullYear();
			break;
		case "sb2_package_retdatetrigger":
			var dateId = "sb2_package_ret";
			document.getElementById('sb2_package_retdateinput').value = calendar.date.getDate()+'/'+(calendar.date.getMonth()+1)+'/'+calendar.date.getFullYear()
			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;
	//alert(day);
	//alert(mon);
	var split = id.split("_");
	if (split[1] != "hotel") {
		if (split[1] == "flight" || split[1] == "flydrive" || split[1] == "package") {
			if (split[2] == "out") {
				split[2] = "ret";
			}
		} else if (split[1] == "transfer") {
			if (split[2] == "arrival") {
				split[2] = "departure";
			}
		} else if (split[1] == "flighthotel") {
			if (split[2] == "in") {
				split[2] = "out";
			}
		} else if (split[1] == "carhire") {
			if (split[2] == "pickup") {
				split[2] = "dropoff";
			}
		}
		var other = split.join("_");
		if (other != id) {
			var otherMonthIndex = document.getElementById(other+'month').selectedIndex;
			var idMonthIndex = document.getElementById(id+'month').selectedIndex;
			var change = true;
			if (split[1] == "flight") {
				if (idMonthIndex > 0 && otherMonthIndex > 0) {
					idMonthIndex = idMonthIndex + 1;
				} else {
					change = false;
				}
			}
			if ((otherMonthIndex < idMonthIndex) && (change)) {
				document.getElementById(other+'month').selectedIndex = idMonthIndex;
			}
		}
	}
	
	var dayofweek = $('#'+id+'dayofweek');
	
	if (day == 0 || mon == 0) {
		dayofweek.html('(one-way)');
		return;
	}
	var date = new Date(mon*1001);
	date.setDate(day);
	dayofweek.html(daysoftheweek[date.getDay()]);
	
	switch(id) {
		case "sb2_package_out":
			//var dateId = "sb2_package_out";
			$('#sb2_package_outdateinput').val(date.getDate()+'/'+(date.getMonth()+1)+'/'+date.getFullYear());
			break;
		case "sb2_package_ret":
			//var dateId = "sb2_package_ret";
			$('#sb2_package_retdateinput').val(date.getDate()+'/'+(date.getMonth()+1)+'/'+date.getFullYear());
			break;
	}
}

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_update_options() {
	var currentYearDate = new Date();
	var yearsAllowed = new Array;
	yearsAllowed[0] = currentYearDate.getFullYear();
	yearsAllowed[1] = (currentYearDate.getFullYear()+1);
	
	var sb2_opt, sb2_pane;
	for (var type in optlist) {
		var i;
		sb2_pane = $('#sb2_pane_'+type);
		// Hide/Show pane
		if ($('.sb2_opts').length) {
			sb2_opt = $('#sb2_opt_'+type);
			if (sb2_opt.attr('checked')) {
				sb2_pane.show();
			} else {
				sb2_pane.hide();
			}
		}
		// Init autosuggest for panes that have been displayed
		if (typeof optlist[type]['autosuggest'] != 'undefined') {
			for (i = 0; i < optlist[type]['autosuggest'].length; ++i) {
				new AutoSuggest(optlist[type]['autosuggest'][i][0], optlist[type]['autosuggest'][i][1]);
			}
		}
		// Init calendars in panes that have been displayed
		if (typeof optlist[type]['calendar'] != 'undefined') {
			for (i = 0; i < optlist[type]['calendar'].length; ++i) {
				if (!sb2_pane.attr('initcalendar'+i) && sb2_pane.css('display') == 'block') {
					if ($('#'+optlist[type]['calendar'][i][0]).length) {
						Calendar.setup({inputField:optlist[type]['calendar'][i][0], ifFormat:'%Y-%m-%d', button:optlist[type]['calendar'][i][1], onSelect:sb2_dateChanged, firstDay:1, range:yearsAllowed, weekNumbers:false, disableFunc:sb2_disallowDate, showOthers:true});
						$('#'+optlist[type]['calendar'][i][1]).click(function(){$('.calendar').fadeIn('medium');});
						sb2_updatedate(optlist[type]['date'][i]);
						sb2_pane.attr('initcalendar'+i, true);
					}
				}
			}
		}
	}
}

function showChildAges(i) {
	if (i > 3) i = 3;
	if (i > 0) {
		$("#ChildAges").show();
	} else {
		$("#ChildAges").hide();
	}

	for(n=1; n<=3; n++) {
		if (n <= i) $("#Child"+n).show();
		if (n > i) $("#Child"+n).hide();
	}

	return i;
}

var infoShowing = "";

function showInfo(id) {
	if (infoShowing) $("#"+infoShowing).hide();
	$("#"+id).show();
	infoShowing = id;
}

function DoReturnDate(type) {
	if (type=="flight" || type=="fare") {
		var OutboundDay = document.getElementById('sb2_'+type+'_outday').selectedIndex;
		var OutboundMonth = document.getElementById('sb2_'+type+'_outmonth').selectedIndex;
		var ReturnDay = document.getElementById('sb2_'+type+'_retday').selectedIndex;
		if (ReturnDay-1 < OutboundDay) {
			document.getElementById('sb2_'+type+'_retmonth').value = document.getElementById('sb2_'+type+'_outmonth').options[OutboundMonth + 1].value;
		} else {
			document.getElementById('sb2_'+type+'_retmonth').value = document.getElementById('sb2_'+type+'_outmonth').options[OutboundMonth].value;
		}
	} else {
		var OutboundDay = document.getElementById('sb2_'+type+'_inday').selectedIndex;
		var OutboundMonth = document.getElementById('sb2_'+type+'_inmonth').selectedIndex;
		var ReturnDay = document.getElementById('sb2_'+type+'_outday').selectedIndex;
		if (ReturnDay-1 < OutboundDay) {
			document.getElementById('sb2_'+type+'_outmonth').value = document.getElementById('sb2_'+type+'_inmonth').options[OutboundMonth + 1].value;
		} else {
			document.getElementById('sb2_'+type+'_outmonth').value = document.getElementById('sb2_'+type+'_inmonth').options[OutboundMonth].value;
		}
	}
}

function changeNumAdults() {
	var num = document.getElementById('insNumAdults').selectedIndex;
	num++;
	for (i=1; i<10; i++) {
		if (i <= num) {
			document.getElementById('ins_adult_age_'+i).style.display = "block";
		} else {
			document.getElementById('ins_adult_age_'+i).style.display = "none";
		}
	}
}

function updatePassengers(prefix, obj) {
	for (var i = 1; i < 10; ++i) {
		var passenger = $('#'+prefix+'passenger-'+i);
		if (passenger.length) {
			if (i <= obj.value) {
				passenger.show();
			} else {
				passenger.hide();
				// Reset the value back to the default if it is hidden
				$('select', passenger).val(0);
			}
		}
	}
	
}

function updateHolidayPassengers(prefix, room, obj) {
	if (obj !== null) {
		for (var i = 1; i < 10; ++i) {
			var passenger = $('#'+prefix+'passenger-'+room+'-'+i);
			if (passenger.length) {
				if (i <= obj.value) {
					passenger.show();
				} else {
					passenger.hide();
					// Reset the value back to the default if it is hidden
					$('select', passenger).val(0);
				}
			}
		}
	}
}

function updateAirlines(type) {
	var empty = false;
	for (var i = 1; i <= 10; ++i) {
		var airline = $('#sb2_'+type+'_airline_'+i);
		if (airline.length) {
			if (empty) {
				airline.val(0);
				airline.hide();
			} else if (airline.val() == 0) {
				empty = true;
				airline.show();
			} else {
				airline.show();
			}
		}
	}
}
