function airBookingWidget_setupWidget(parentId) {
	var parent = "#" + parentId + " ";
	airBookingWidget_attachOnClicks(parentId);
	airBookingWidget_setupFormValidation(parentId);
	routing_setupRoutingLogic(parentId);
	swa.calendar.createCalendarPair($(parent + '#outbound_depart_date'),$(parent + '#return_depart_date'),defaultMinDateForCalendar,airBookingWidget_maxBookingDaysInAdvance);
	airBookingWidget_browserSpecificSetup();
}

function airBookingWidget_customOnSubmit(parentId) {
	var parent = "#" + parentId + " ";

	var outboundDate = fixDate($(parent+'#outbound_depart_date').val());
	var returnDate   = fixDate($(parent+'#return_depart_date')  .val());

	$(parent+'#outbound_depart_month').attr('value', swa.calendar.util.parseDateToMonth(outboundDate));
	$(parent+'#outbound_depart_day').attr('value', outboundDate.substring(3, 5));

	$(parent+'#return_depart_month').attr('value', swa.calendar.util.parseDateToMonth(returnDate));
	$(parent+'#return_depart_day').attr('value', returnDate.substring(3, 5));

	$(parent+"input[name=s0m3valu3]").attr('value', $(parent+'#s0m3valu3').val());
	$(parent+"input[name=out_arr_airport]").attr('value', $(parent+'#out_arr_airport').val());

	$(parent+'#s0m3valu3').attr('name', 's0m3valu3');
	$(parent+'#out_arr_airport').attr('name', 'out_arr_airport');
}

function airBookingWidget_attachOnClicks(parentId) {
	var parent = "#" + parentId + " ";

	$(parent + "input[name=return_arrive_airport]").click(function() {
		if ($(this).attr('value') == 'RoundTrip') {
			$(parent + '#return_depart_date').attr('disabled', false);
			$(parent + '#return_depart_time').attr('disabled', false);
		} else {
			$(parent + '#return_depart_date').attr('disabled', true);
			$(parent + '#return_depart_time').attr('disabled', true);
			$(parent + '#return_date label.error').remove();
			$(parent + '#return_date input').removeClass('error');
		}
	});
}

function airBookingWidget_setupFormValidation(parentId) {
	var parent = "#" + parentId + " ";

	$(parent + '#bookingWidgetForm').validate({
		rules: {
			departFrom: {
				required: true,
				validAirport: true
			},
			arriveAt: {
				required:true,
				validAirport: true
			},
			outbound_depart_date: {
				required: true,
				date: true
			},
			return_depart_date: {
				date: function() {
					return $(parent+'input[name=return_arrive_airport]:checked').val() == 'RoundTrip';
				}
			},
			PAX_COUNT: {
				validMinPassengerCount: [$(parent + "#PAX_COUNT"), $(parent + '#SENIOR_PAX_COUNT')],
				validMaxPassengerCount: [$(parent + "#PAX_COUNT"), $(parent + '#SENIOR_PAX_COUNT')]
			}
		},
		messages: {
			departFrom: s0m3valu3ForDealDetailWidgetRequiredError,
			arriveAt: out_arr_airportForDealDetailWidgetRequiredError,
			outbound_depart_date: outbound_depart_dateForDealDetailWidgetRequiredError,
			return_depart_date: return_depart_dateForDealDetailWidgetRequiredError,
			PAX_COUNT: {
				validMinPassengerCount: passengerCountForDealDetailWidgetMinError,
				validMaxPassengerCount: passengerCountForDealDetailWidgetMaxError
			}
		},
		errorPlacement: function(label, element) {
			if (element.attr("name") == "departFrom" || element.attr("name") == "arriveAt") {
				label.insertAfter(parent + "#out_arr_airport").css({width:300,margin:0,padding:0,float:'left',clear:'both',display:'block'});
			}
			else if (element.attr("name") == "PAX_COUNT") {
				label.insertBefore(".adults")
			} else if (element.attr("name") == "outbound_depart_date" || element.attr("name")
			    == "return_depart_date") {
				label.insertBefore(element).css({display:'block',width:'120px'});
			}
			else {
				label.insertBefore(element);
			}
		},
		focusInvalid: false,
		onfocusout: false,
		onkeyup: false,
		onclick: false,
		submitHandler: function(form) {
			airBookingWidget_customOnSubmit(parentId);
			form.submit();
		}
	});

}

function airBookingWidget_browserSpecificSetup() {
	if (jQuery.browser.msie && (jQuery.browser.version <= 7)) {
		var selectedArriveAtOption = $("#selectedArriveAt").val();
		var selectedDepartFromOption = $("#selectedDepartFrom").val();
		var s0m3valu3Selector = $("#s0m3valu3")[0];
		if (s0m3valu3Selector != null) {
			for (i = 0; i < s0m3valu3Selector.length; i++) {
				if (s0m3valu3Selector.options[i].value == selectedDepartFromOption) {
					s0m3valu3Selector.selectedIndex = i;
				}
			}
		}
		var outArrAirportSelector = $("#out_arr_airport")[0];
		if (outArrAirportSelector != null) {
			for (i = 0; i < outArrAirportSelector.length; i++) {
				if (outArrAirportSelector.options[i].value == selectedArriveAtOption) {
					outArrAirportSelector.selectedIndex = i;
				}
			}
		}
	}
}

function openAirBookingWidgetModal(origin, destination, promoCode) {
	$('#airBookingWidget_modal').show();
	$('.modal_background').show();
	$("#airBookingWidget_modal #s0m3valu3 option[@value='" + origin + "']").attr("selected","selected");
	$("#airBookingWidget_modal #s0m3valu3").trigger("change");
	$("#airBookingWidget_modal #out_arr_airport option[@value='" + destination + "']").attr("selected","selected");
	$("#airBookingWidget_modal #promoCodeInput").val(promoCode);
	if (jQuery.browser.msie && (jQuery.browser.version == 6)) {
		$("#air_detail_booking_widget").hide();
		window.location.href = window.location.href + "#";
	}
}
function hideAirBookingWidgetModal() {
	$('#airBookingWidget_modal').hide();
	$('.modal_background').hide();
	if (jQuery.browser.msie && (jQuery.browser.version == 6)) {
		$("#air_detail_booking_widget").show();
	}
}