$(document).ready(function() {
	hotelBookingWidget_changeWidgetBasedOnHotelType();
	hotelBookingWidget_setupCalendars();
	hotelBookingWidget_setupValidation();
});

function hotelBookingWidget_changeWidgetBasedOnHotelType() {
	var hotelType = $('#hotelType').val();
	if (hotelType == 'CHAIN') {
		$('#pointOfInterestDiv').show();
		$('#chainSelectDiv').hide();
		$('#hotelBookingWidgetForm').attr("action", "http://www.southwest.com/cgi-bin/hotelSelect");
	} else if (hotelType == 'MULTICHAIN') {
		$('#pointOfInterestDiv').show();
		$('#chainSelectDiv').show();
		$('#hotelBookingWidgetForm').attr("action", "http://www.southwest.com/cgi-bin/hotelSelect");
	} else {
		$('#pointOfInterestDiv').hide();
		$('#chainSelectDiv').hide();
		$('#hotelBookingWidgetForm').attr("action", "http://www.southwest.com/cgi-bin/hotelPrice");
	}
}

function hotelBookingWidget_setupCalendars() {
	swa.calendar.createCalendarPair($('#hCheckInDate'), $('#hCheckOutDate'), defaultMinDateForCalendar, hotelBookingWidget_maxBookingDaysInAdvance)
}

function hotelBookingWidget_setupValidation() {

	$('#hotelBookingWidgetForm').validate({
		rules: {
			hCheckInDate: {
				required: true,
				date: true
			},
			hCheckOutDate: {
				required: true,
				date: true,
				notEqualTo: $('#hCheckInDate')
			},
			chainList: {
				required: function() {
					return ($('#hotelType').val() == 'MULTICHAIN');
				}
			},
			hPointOfInterest: {
				required: function() {
					return ($('#hotelType').val() != 'PROPERTY');
				}
			},
			hNumGuests: {
				validMaxGuestCount: [$("#hNumGuests"),$("#hNumChildren")]
			}
		},
		messages: {
			hCheckInDate: hCheckInDateForDealDetailWidgetRequiredError,
			hCheckOutDate:  {
				required: hCheckOutDateForDealDetailWidgetRequiredError,
				date: hCheckOutDateForDealDetailWidgetRequiredError,
				notEqualTo: hSameCheckInAndCheckOutDatesForDealDetailWidgetError
			},
			chainList: hChainNotSelectedForDealDetailWidgetError,
			hPointOfInterest: hPointOfInterestForDealDetailWidgetRequiredError,
			hNumGuests: guestCountForHotelBookingWidgetMaxError
		},

		errorPlacement: function(label, element) {
			if (element.attr("name") == "hNumGuests") {
				label.insertAfter("#children").css({display:'block',clear:'both'});

			} else if (element.attr("name") == "hCheckInDate") {
				if ($("#hCheckInDate + img").length) {
					label.insertAfter("#hCheckInDate + img").css({display:'block',clear:'both',padding:0});
				}
				else
				{
					label.insertAfter("#checkout_date").css({display:'block',clear:'both'});
				}
			} else if (element.attr("name") == "hCheckOutDate") {
				if ($("#hCheckOutDate + img").length) {
					label.insertAfter("#hCheckOutDate + img").css({display:'block',clear:'both',padding:0});
				}
				else
				{
					label.insertAfter("#checkout_date").css({display:'block',clear:'both',padding:0});
				}
			} else {
				label.insertBefore(element);
			}
		},

//		errorPlacement: function(label, element) {
//			if (element.attr("name") == "hNumGuests") {
//				label.insertAfter("#children").css({display:'block',clear:'both'});
//
//			} else if (element.attr("name") == "hCheckInDate" || element.attr("name") == "hCheckOutDate") {
//				label.insertAfter("#checkout_date").css({display:'block',clear:'both',padding:0});
//			} else {
//				label.insertBefore(element);
//			}
//		},

		focusInvalid: false,
		onfocusout: false,
		onkeyup: false,
		onclick: false,
		submitHandler: function(form) {
			hotelBookingWidget_customOnSubmit();
			form.submit();
		}
	});
}

function hotelBookingWidget_customOnSubmit() {
	var checkInDate  = fixDate($('#hCheckInDate') .val());
	var checkOutDate = fixDate($('#hCheckOutDate').val());

	$('#hCheckInMonth').attr('value', swa.calendar.util.parseDateToMonth(checkInDate));
	$('#hCheckInDay').attr('value', checkInDate.substring(3, 5));

	$('#hCheckOutMonth').attr('value', swa.calendar.util.parseDateToMonth(checkOutDate));
	$('#hCheckOutDay').attr('value', checkOutDate.substring(3, 5));

	if ($('#hotelType').val() == 'MULTICHAIN') {
		$('#hShopWho').attr('value', $('#chainList').attr('value'));
	}
	$('#view_rates').css("display", "none");
	$('#loading_results').css("display", "block");
}