$(function() {
	$("#departure-date-input, #return-date-input").datepicker({
		dateFormat: 'yy-mm-dd'
	});

	$("#ask-form-dialog").dialog({
		modal: true,
		autoOpen: false
	});

	$.validator.addMethod("positiveNumber", function(value, element) {
		var v = parseInt(value);
		if (value == v) {
			return v > 0;
		}
		return false;
	}, "Invalid number");

	$.validator.addMethod("checkDate", function(value, element, params) {
		if (!value)
			return true;
		var rd = Date.parse(value, "Y-m-d");
		var dd = Date.parse($(params[0]).val(), "Y-m-d");
		if (params[1] == true) {
			if (rd <= dd)
				return true;
		} else {
			if (rd >= dd)
				return true;
		}

		return false;
	}, "Invalid date");

	var validator = $("#ask-form").validate({
		
		rules: {
			destination_city_id: "required",
			departure_date: "required",
			contact_phone: "required",
			departure_city_id: "required",
			seats: { required : true, positiveNumber : true },
			arrival_date:  { checkDate: ["#departure-date-input", false]},
			contact_email:  {required: true, email: true}
		},

		messages: Registry.validationMessages,
		
		submitHandler: function() {
			$("#ask-form").ajaxSubmit({
				dataType: 'json',
				clearForm: true,
				success: function(data) {
					if (data.success != undefined) {
						$("#ask-form-dialog").dialog("open");
					} else {
						alert("Internal server error");
					}
				},
				error: function() {
					alert("Internal server error");
				}
			});
		},

		errorPlacement: function(error, element) {
			error.appendTo(element.parent().parent());
		}
	});
	
});