$(function() {
	$("#empty-legs-index").attach(EmptyLegsHandler);
});

var EmptyLegsHandler = $.klass({

	flightId : null,

	dialog: null,
	
	initialize: function() {
		var self = this;
		this.loadFlights(Util.url("empty_legs/getFlights?") + this.getUrlQuery());
		$("#empty-legs-index .ajax-loading")
			.ajaxStart(function() {$(this).show();})
			.ajaxStop(function() {$(this).hide();})

		$("#departure-date-input, #return-date-input").datepicker({
			dateFormat: 'yy-mm-dd'
		});

		EmptyLegsHandler.dialog = $("#make-offer-dialog").dialog({
			modal: true,
			autoOpen: false,
			cache: false,
			width: 400,
			height: 420,
			open: function() {
				$("#make-offer-dialog").html("Loading...");
				$("#make-offer-dialog").load(Util.url("empty_legs/makeOfferForm/" + EmptyLegsHandler.flightId), {}, function() {
					self.setFormValidator();
					Util.setLinkSubmit();
				});
			}

		});
	},

	loadFlights: function(url) {
		$.ajax({
			type: "GET",
			url: url,
			cache: false,
			success: function(res) {
				$("#empty-legs-index .empty-legs-list").html(res);
				if (curvyCorners.init != undefined) {
					curvyCorners.init();
					curvyCorners.redraw();
				}
				Util.corners($("#empty-legs-index .flight-box, #empty-legs-index .flight-box .button2"), 7);
			}
		});
	},

	onclick: $.delegate({
		".show-empty-legs-btn": function(element, event) {
			var url = Util.url("empty_legs/getFlights/") + "?" + this.getUrlQuery(true);
			this.loadFlights(url);
			event.preventDefault();
		},

		".empty-legs-list .pagination a": function(element, event) {
			var page = $(element).attr('rel');
			var url = Util.url("empty_legs/getFlights/") + "?" + this.getUrlQuery(true) + "&page=" + page;
			this.loadFlights(url);
			event.preventDefault();
		},

		".empty-legs-list .make-offer-btn": function(element, event) {
			var id = $(element).siblings("input[name=flight_id]").val();
			EmptyLegsHandler.flightId = id;
			EmptyLegsHandler.dialog.dialog("open");
			event.preventDefault();
		}
	}),

	getUrlQuery: function(skipFlightId) {
		var selector = "#empty-legs-index .empty-legs-filter form";
		if (skipFlightId != null)
			selector += " :not(input[name=flight_id])";
		return $(selector).serialize();
	},

	setFormValidator: function() {
		$("#make-offer-form").validate({
			rules: {
				person: "required",
				tel: "required"
			},

			messages: Registry.validationMessages,

			submitHandler: function() {
				 $("#make-offer-form").ajaxSubmit({
					dataType: 'json',
					clearForm: true,
					success: function(data) {
						if (data.success != undefined) {
							jAlert("Thank you for your offer!", "Make an offer");
							EmptyLegsHandler.dialog.dialog("close");
						} else {
							alert("Internal server error");
						}
					},
					error: function() {
						alert("Internal server error");
					}
				});
			},

			errorPlacement: function(error, element) {
				error.appendTo(element.parent().parent());
			}
		});
	}

});
