function updateMinDate() {
    jQuery("#DateTo").datepicker('destroy');
    jQuery("#DateTo").val("Date To");
    jQuery("#DateTo").datepicker({
        changeMonth: false,
        dateFormat: 'dd/mm/yy',
        changeYear: false,
        minDate: DateAdd(jQuery("#DateFrom").datepicker('getDate'), "D", +5)
    });
}

function DateAdd(objDate, strInterval, intIncrement) {
    if (typeof (objDate) == "string") {
        objDate = new Date(objDate);

        if (isNaN(objDate)) {
            throw ("DateAdd: Date is not a valid date");
        }
    }
    else if (typeof (objDate) != "object" || objDate.constructor.toString().indexOf("Date()") == -1) {
        throw ("DateAdd: First parameter must be a date object");
    }

    if (
            strInterval != "M"
            && strInterval != "D"
            && strInterval != "Y"
            && strInterval != "h"
            && strInterval != "m"
            && strInterval != "uM"
            && strInterval != "uD"
            && strInterval != "uY"
            && strInterval != "uh"
            && strInterval != "um"
            && strInterval != "us"
            ) {
        throw ("DateAdd: Second parameter must be M, D, Y, h, m, uM, uD, uY, uh, um or us");
    }

    if (typeof (intIncrement) != "number") {
        throw ("DateAdd: Third parameter must be a number");
    }

    switch (strInterval) {
        case "M":
            objDate.setMonth(parseInt(objDate.getMonth()) + parseInt(intIncrement));
            break;
        case "D":
            objDate.setDate(parseInt(objDate.getDate()) + parseInt(intIncrement));
            break;
        case "Y":
            objDate.setYear(parseInt(objDate.getYear()) + parseInt(intIncrement));
            break;
        case "h":
            objDate.setHours(parseInt(objDate.getHours()) + parseInt(intIncrement));
            break;
        case "m":
            objDate.setMinutes(parseInt(objDate.getMinutes()) + parseInt(intIncrement));
            break;
        case "s":
            objDate.setSeconds(parseInt(objDate.getSeconds()) + parseInt(intIncrement));
            break;
        case "uM":
            objDate.setUTCMonth(parseInt(objDate.getUTCMonth()) + parseInt(intIncrement));
            break;
        case "uD":
            objDate.setUTCDate(parseInt(objDate.getUTCDate()) + parseInt(intIncrement));
            break;
        case "uY":
            objDate.setUTCFullYear(parseInt(objDate.getUTCFullYear()) + parseInt(intIncrement));
            break;
        case "uh":
            objDate.setUTCHours(parseInt(objDate.getUTCHours()) + parseInt(intIncrement));
            break;
        case "um":
            objDate.setUTCMinutes(parseInt(objDate.getUTCMinutes()) + parseInt(intIncrement));
            break;
        case "us":
            objDate.setUTCSeconds(parseInt(objDate.getUTCSeconds()) + parseInt(intIncrement));
            break;
    }
    return objDate;
}

$(document).ready(function () {

	if($('#Withflight').is(":checked")){
		$("#DepartureAirport").show();
	}else{
		$("#DepartureAirport").hide();
	}
	
	$('#Withflight').change(function(){
		if($(this).is(":checked")){
			$("#DepartureAirport").show();
		}else{
			$("#DepartureAirport").hide();
		}
	})

	$("#DepartureAirport").focus(function(){
		$("#DepartureAirport").val("");	
        $("#DepartureAirportCode").val("");	
	})
	
	$("#DepartureAirport").blur(function(){
		if($("#DepartureAirport").val() == ""){
			$("#DepartureAirport").val("Departure Airport");
			$("#DepartureAirportCode").val("");	
		}
	});

    $("#DepartureAirport").autocomplete({
        source: function (request, response) {
            $("#DepartureAirport").removeClass("error");
            $("#DepartureAirport").removeClass("borderRed");
            $("#DepartureAirportCode").val("");
            $.ajax({
                url: "http://airports.addajet.com/default.asp?searchQuery=" + $("#DepartureAirport").val() + "&rnd=" + Math.random() + "&jsoncallback=?",
                dataType: "jsonp",
                data: {
                    featureClass: "P",
                    style: "full",
                    maxRows: 12,
                    name_startsWith: request.term
                },
                success: function (data) {
                    response($.map(data.airports, function (item) {
                        return {
                            label: item.AirportName + " (" + item.AirportCode + ")",
                            value: item.AirportName + " (" + item.AirportCode + ")",
                            option: item.AirportCode
                        }
                    }));
                }
            });
        },
        minLength: 1,
        select: function (event, ui) {
            $("#DepartureAirportCode").val(ui.item.option);
        }
    });
	
	jQuery("#DateFrom").datepicker({
        changeMonth: false,
        dateFormat: 'dd/mm/yy',
        changeYear: false,
        minDate: +0,
        onSelect: updateMinDate
    });

    jQuery("#DateTo").datepicker({
        changeMonth: false,
        dateFormat: 'dd/mm/yy',
        changeYear: false,
        minDate: DateAdd(jQuery("#DateFrom").datepicker('getDate'), "D", +5)
    });

});
