
$(document).ready(function() {
	carBookingWidget_setupCalendars();
	carBookingWidget_setupValidation();
});

function carBookingWidget_setupCalendars() {
	swa.calendar.createCalendarPair($('#pickup_date'), $('#dropoff_date'), defaultMinDateForCalendar, carBookingWidget_maxBookingDaysInAdvance);
}

function carBookingWidget_setupValidation() {

	$("#carBookingWidget_form").validate({
		rules: {
			cPickUpLocMapValue: {
				required: function() {
					return ($('#cPickUpLocNameMapValue').val() == '');
				}
			},
			cPickUpLocNameMapValue: {
				singlePickUpLocation: $('#cPickUpLocMapValue')
			},
			cDropOffLocNameMapValue: {
				singleDropOffLocation: $('#cDropOffLocMapValue')
			},
			pickup_date: {
				required: true,
				date: true
			},
			dropoff_date: {
				required: true,
				date: true
			}
		},
		messages: {
			cPickUpLocMapValue: "Please choose a pickup location.",
			pickup_date: "Please select a pickup date.",
			dropoff_date: "Please select a return date."
		},
		errorPlacement: function(label, element) {
			label.insertBefore(element);
		},
		focusInvalid: false,
		onfocusout: false,
		onkeyup: false,
		onclick: false,
		submitHandler: function(form) {
			carBookingWidget_customOnSubmit();
			form.submit();
		}
	});
}

function carBookingWidget_customOnSubmit() {
	if ($('#cDropOffLocNameMapValue').val().length != 0)
		$('#cDropOffLocMapValue').val("");

	if ($('#cDropOffLocNameMapValue').val().length == 0 && $('#cDropOffLocMapValue').val().length == 0)
		$('#cDropOffLocMapValue').val("same");

	var pickUpDate  = fixDate($('#pickup_date') .val());
	var dropOffDate = fixDate($('#dropoff_date').val());

	$('#cPickUpMonth').attr('value', swa.calendar.util.parseDateToMonth(pickUpDate));
	$('#cPickUpDay').attr('value', pickUpDate.substring(3, 5));

	$('#cDropOffMonth').attr('value', swa.calendar.util.parseDateToMonth(dropOffDate));
	$('#cDropOffDay').attr('value', dropOffDate.substring(3, 5));
	
	setPromoCodes();

	setCompanyCode('cFRValue', 'cFRCompany');
	setCompanyCode('cCRValue', 'cCRCompany');
	setCompanyCode('cRCValue', 'cRCCompany');
	setCompanyCode('cPCValue', 'cPCCompany');

	$('#carBooking_submit').css("display", "none");
	$('#loading_results').css("display", "block");
}

function setPromoCodes() {
	$('#cCRValue').attr('value','');
	$('#cRCValue').attr('value','');
	$('#cPCValue').attr('value','');
	var enteredDealCode     = $('#cPickUpLocNameMapValue').val().replace(/\s+$/, '').toUpperCase();
	var selectedDealCode    = $('#cPickUpLocMapValue').val().replace(/\s+$/, '').toUpperCase();
	for(i=0;i<dealCodesByStation.length;i++) {
		var fullDealCode = dealCodesByStation[i][0].replace(/\s+$/, '').toUpperCase();
		var dealCode     = fullDealCode.substring(fullDealCode.length - 3);

		if(fullDealCode ==  selectedDealCode || dealCode == enteredDealCode ||
		    (enteredDealCode.length >3 && fullDealCode.indexOf(enteredDealCode) > -1 )) {
		       $('#cCRValue').attr('value',dealCodesByStation[i][1]);
			$('#cRCValue').attr('value',dealCodesByStation[i][2]);
			$('#cPCValue').attr('value',dealCodesByStation[i][3]);
		}
	}
}


function setCompanyCode(codeField, companyField) {
	if ($('#' + codeField).attr('value') != "") {
		$('#' + companyField).attr('value', partnerCode);
	} else {
		$('#' + companyField).attr('value', 'none');
	}
}
