﻿function UpdateAirports($, url, airport, param, defaultText) {
    $(function () {
        airport.empty();
        $.ajax({
            url: url,
            type: "POST",
            dataType: "json",
            data: "{'AirportDisplayName':'" + param + "'}",
            contentType: "application/json; charset=utf-8",
            success: function (data) {
                if (data.hasOwnProperty("d")) {
                    var origins = data.d;
                }
                else {
                    var origins = data
                }

                airport.append($("<option></option>").attr("value", "").text(defaultText));

                $.each(origins, function () {
                    airport.append($("<option></option>").attr("value", this.AirportCode).text(this.DisplayName));
                });

                airport.selectBox('options', airport.children);
            }
        });
    });
}

(function ($) {
    $(function () {
        var originAirports = $("#ddlOrigins");        
        var destinationAirports = $("#ddlDestinations");

        $("#ddlOrigins, #ddlDestinations, #ddlAdultPassengers, #ddlChildPassengers, #ddlInfantPassengers").selectBox();              
        
        UpdateAirports($, "/AirAustralia modules/AirportDestinationServices.asmx/GetAirportOrigins", originAirports, "", "Origin");

        var dates = $("#txtDepartureDate, #txtReturnDate").datepicker({
            changeMonth: true,
            numberOfMonths: 3,
            dateFormat: "dd/mm/yy",
            minDate: 0,
            showOn: "both",
            buttonImage: "/css/images/jquerycal.png",
            buttonImageOnly: true,
            onSelect: function (selectedDate) {
                var option = this.id == "txtDepartureDate" ? "minDate" : "maxDate",
					instance = $(this).data("datepicker"),
					date = $.datepicker.parseDate(
						instance.settings.dateFormat ||
						$.datepicker._defaults.dateFormat,
						selectedDate, instance.settings);
                dates.not(this).datepicker("option", option, date);
            }
        });              

        originAirports.change(function () {
            UpdateAirports(jQuery, "/AirAustralia modules/AirportDestinationServices.asmx/GetAirportDestinations", destinationAirports, $(originAirports).find("option:selected").text(), "Destination");
        });

        $("#mainform").validate({
            rules: {
                txtDepartureDate: "required",
                ddlOrigins: "required",
                ddlDestinations: "required",
                txtReturnDate: "required"
            },
            messages: {
                txtDepartureDate: "Departure date is required",
                ddlOrigins: "Origin is required",
                ddlDestinations: "Destination is required",
                txtReturnDate: "Return date is required"
            },
            onsubmit: false,
            errorPlacement: function(error, element) {
                error.insertBefore(element);
            }
        });  
                
        $("#one-way").change(function () {
            if ($(this).is(":checked")) {
                $("#returnFieldSet").hide("500");
            }
        });

        $("#return").change(function () {
            if ($(this).is(":checked")) {
                $("#returnFieldSet").show("500");
            }
        });                                

        $("#btnBook").click(function (event) {            
            returnDate = "";

            if ($("#return").is(":checked")) {
                $("#txtReturnDate").addClass("required");
                returnDate = $.datepicker.formatDate("yy-mm-dd", $.datepicker.parseDate("dd/mm/yy", $("#txtReturnDate").val()));
            }
            else {
                $("#txtReturnDate").removeClass("required");
            }

            $("#ddlOrigins, #ddlDestinations").selectBox('destroy');
            if (!$("#mainform").valid()) {
                event.preventDefault();
                $("#ddlOrigins, #ddlDestinations, #ddlAdultPassengers, #ddlChildPassengers, #ddlInfantPassengers").selectBox();              
                return;
            }

            $("#ddlOrigins, #ddlDestinations, #ddlAdultPassengers, #ddlChildPassengers, #ddlInfantPassengers").selectBox();              
            window.open($.AirAustralia.bookingEngineUrl + "?ori=" + $("#ddlOrigins").find("option:selected").val() +
                    "&des=" + $("#ddlDestinations").find("option:selected").val() +
                    "&dep=" + $.datepicker.formatDate("yy-mm-dd", $.datepicker.parseDate("dd/mm/yy", $("#txtDepartureDate").val())) +
                    "&ret=" + returnDate +
                    "&adt=" + $("#ddlAdultPassengers").find("option:selected").val() +
                    "&chd=" + $("#ddlChildPassengers").find("option:selected").val() +
                    "&inf=" + $("#ddlInfantPassengers").find("option:selected").val() +
                    "&currency=AUD&langculture=en-us&bLFF=true", "bookDialog");
            event.preventDefault();
        });    
                     
    });
})(jQuery);
