var start = new Date(),
	end = new Date(),
	today = new Date();

$(function () {

    var $departure_field = $('input.medium.departure'),
		$return_field = $('input.medium.return'),
		$departure_field2 = $('input.small.departure'),
		$return_field2 = $('input.small.return'),
		$departure_button2 = $('a.datepick.departure'),
		$return_button2 = $('a.datepick.return');

    var settings = {
        numberOfMonths: 2,
        showButtonPanel: true,
        closeText: 'Close',
        showOn: "both",
        buttonImage: "img/datepick.png",
        buttonImageOnly: true
    };

    // Departure 1
    start = date(today, 2);

    settings.defaultDate = start.format();
    settings.minDate = today;
    settings.onSelect = function (d, $this) { departure_selected(); };

    $departure_field.datepicker(settings);
    $departure_field.val(start.format());

    $departure_field.change(function () {
        if (!valid_date($(this).val())) {
           // $(this).datepicker('setDate', date(today, 2));
            departure_selected();
        }
    });

    // Return 1
    end = date(start, 7);

    settings.defaultDate = end.format();
    settings.minDate = date(start, 1);
    settings.onSelect = function (d, $this) { return_selected(d, $this); };

    $return_field.datepicker(settings);
    $return_field.val(end.format());

    $departure_field.change(function () {
        if (!valid_date($(this).val())) {
          //  $(this).datepicker('setDate', date(today, 9));
            return_selected();
        }
    });

    // Departure 2
    settings.showOn = 'focus';
    $departure_field2.datepicker(settings);

    $departure_button2.click(function () {
        $departure_field2.datepicker('show');
    });

    // Return 2
    settings.showOn = 'focus';
    $return_field2.datepicker(settings);

    $return_button2.click(function () {
        $return_field2.datepicker('show');
    });

    // Taxes Dialog
    $taxes_dialog = $('#taxes_dialog');
    $taxes_dialog.dialog({
        autoOpen: false,
        title: 'Fare Details',
        width: 400,
        height: 300,
        modal: false,
        draggable: true
    });

    tax_desc = $('#tax_description').html();

    $('.tax').hover(function () {
        $this = $(this);
        $taxes_dialog.html($this.parent().parent().find('.taxes').html() + '<div class="scroll">' + tax_desc + '</div>');
        var o = $this.offset();
        $taxes_dialog.dialog('option', 'position', [o.left - 30, o.top + 20]);
        $taxes_dialog.dialog('open');
    }).click(function () { return false; });

    // Connection Dialog
    $details_dialog = $('#details_dialog');
    $details_dialog.dialog({
        autoOpen: false,
        title: 'Flight Details',
        width: 700,
        height: 410,
        modal: false,
        draggable: true,
        resizable: true,
        buttons: {
            "Select this Flight": function () {
                $(this).dialog('close');
            },
            "Print": function () {
                $(this).dialog('close');
            },
            "Close": function () {
                $(this).dialog('close');
            }
        }
    });

    $('.detail').click(function () {
        $this = $(this);
        $details_dialog.html('<div class="details_inner">' + $this.parents('.ticket').children('.details').html() + '</div>');
        $details_dialog.dialog('open');
        return false;
    });

    //

    function date(d, days) {
        var t = new Date(d.getFullYear(), d.getMonth(), d.getDate());
        t.setDate(t.getDate() + days);
        return t;
    }

    function departure_selected() {
        start = $departure_field.datepicker('getDate');

        $return_field.datepicker('option', 'minDate', date(start, 1));
        if (start >= end) {
            end = date(start, 7);
            $return_field.datepicker('setDate', end);
        }
    }

    function return_selected() {
        end = $return_field.datepicker('getDate');
    }

    function valid_date(d) {
        return d.length == 8 && d.substr(2, 1) == '/' && d.substr(5, 1);
    }
});


Date.prototype.format = function () {
    var d = (this.getDate() < 10 ? '0' : '') + this.getDate();
    var m = (this.getMonth() < 9 ? '0' : '') + (this.getMonth() + 1)
    var y = this.getFullYear();

    return m + '/' + d + '/' + y;
};


