function validateOneWayOrReturnDate(sender, args) {
	if (!$get(sender.multiCityRadioButtonClientID).checked) {
		validateDate(sender, args);
	} else {
		args.IsValid = true;
	}
}

function validateReturnDate(sender, args) {
	if ($get(sender.returnRadioButtonClientID).checked) {
		validateDate(sender, args);
	} else {
		args.IsValid = true;
	}
}

function validateInboundStopoverDate(sender, args) {
	if ($get(sender.stopoverRequiredCheckBoxClientID).checked && $get(sender.inboundStopoverRadioButtonClientID).checked) {
		validateReturnDate(sender, args);
	} else {
		args.IsValid = true;
	}
}

function validateOutboundStopoverDate(sender, args) {
	if ($get(sender.stopoverRequiredCheckBoxClientID).checked && $get(sender.outboundStopoverRadioButtonClientID).checked) {
		validateOneWayOrReturnDate(sender, args);
	} else {
		args.IsValid = true;
	}
}

function validateMultiCityDate(sender, args) {
	if ($get(sender.multiCityRadioButtonClientID).checked) {
		validateDate(sender, args);
	} else {
		args.IsValid = true;
	}
}

function validateOptionalMultiCityDate(sender, args) {
	if ($get(sender.multiCityDepartureTextBoxClientID).value != '' || $get(sender.multiCityArrivalTextBoxClientID).value != '') {
		validateMultiCityDate(sender, args);
	} else {
		args.IsValid = true;
	}
}

function validateDate(sender, args) {
	var result = Date.parseInvariant(args.Value + ' ' + $get(sender.monthDropDownListClientID).value, 'dd MMM yy');
	args.IsValid = (result != null);
	if (!args.IsValid) {
		sender.innerHTML = 'The selected date is not valid.';
	}
}

$(function () {
	$('.dateInputClass').each(function (i, e) {
		$(e).datepicker({
			dateFormat: "dd M y",
			minDate: $(e).attr('data-earliest-date'),
			maxDate: $(e).attr('data-latest-date'),
			changeMonth: false,
			numberOfMonths: 2,
			showOn: "button",
			buttonImage: "/images/flightsearch/calendar.gif",
			buttonImageOnly: true,
			buttonText: "calendarImage",
			gotoCurrent: true,
			onSelect: setDate
		});
	});
});

function setDate(text, control) {
	var dt = text.split(' ');

	$('#' + (control.id.toString().replace('_dateInput', '_dayDropDownList'))).val(dt[0]);
	$('#' + (control.id.toString().replace('_dateInput', '_monthDropDownList'))).val(dt[1] + ' ' + dt[2]);


	if (control.id.toString().substring(18, 24) == "depart") {
		handleDepartureDateChanged();
	}
	else if (control.id.toString().substring(18, 24) == "return") {
		handleReturnDateChanged();
		hasFocusedReturnDate = true;
	}
	else if (control.id.toString().substring(18, 34) == "outboundStopover") {
		hasFocusedOutboundStopoverDate = true;
	}
	else if (control.id.toString().substring(18, 33) == "inboundStopover") {
		hasFocusedInboundStopoverDate = true;
	}
	else if (control.id.toString().substring(18, 35) == "multiCitySegment1") {
		handleMultileg1DateChanged();
	}
	else if (control.id.toString().substring(18, 35) == "multiCitySegment2") {
		handleMultileg2DateChanged();
		hasFocusedMultileg2Date = true;
	}
	else if (control.id.toString().substring(18, 35) == "multiCitySegment3") {
		hasFocusedMultileg3Date = true;
	}
}

function updateDate(controlId) {
	var updateString = controlId.value;

	var matchPositionDay = controlId.id.search("dayDropDownList");
	var matchPositionMonth = controlId.id.search("monthDropDownList");

	if (matchPositionDay != -1) {
		var dateControl = $('#' + (controlId.id.replace('_dayDropDownList', '_dateInput')));
		var dateString = dateControl.val();
		dateControl.val(updateString + dateString.substring(2));
	}

	if (matchPositionMonth != -1) {
		var dateControl = $('#' + (controlId.id.replace('_monthDropDownList', '_dateInput')));
		var dateString = dateControl.val();
		dateControl.val(dateString.substring(0, 3) + updateString);
	}
}

