﻿/// <reference path="jquery.vsdoc.1.2.6.js" />
/// <reference path="Date.1.0.js" />

function Route() {
    /// <summary>
    /// Class for performing route specific tasks, e.g. route validation.
    /// Note: depends on jquery and Date.1.0.js and DateConstraint.1.0.js
    /// </summary>
}

Route.ValidateFlightDatesForRoute = function(linkedAirportData, outboundDate, returnDate, originAirportCode, destinationAirportCode, dateBeforeRouteStartErrorMessage, dateAfterRouteEndErrorMessage, dateBeforeRouteStartErrorMessageBER, dateAfterRouteEndErrorMessageSXF) {
    {

        // Do not validate routes when market groups are used
        if (originAirportCode.indexOf("*") >= 0 || destinationAirportCode.indexOf("*") >= 0) {
            return true;
        }

        for (i = 0; i < linkedAirportData.length; i++) {
            var parts = linkedAirportData[i].split('|');
            var oa = parts[0];
            var da = parts[1];
            var sd = parts[2];
            var ed = parts[3];

            //if (linkedAirportData[i].OA == originAirportCode && linkedAirportData[i].DA == destinationAirportCode)
            if (oa == originAirportCode && da == destinationAirportCode) {
                var oDate = new Date(outboundDate);
                //var startDate = Date.fromJson(linkedAirportData[i].SD);
                //var endDate = Date.fromJson(linkedAirportData[i].ED);
                var startDate = Date.parse(sd);
                var endDate = Date.parse(ed);

                if (!Date.IsEmpty(startDate) && oDate.compareTo(startDate) == -1) {
                    DisplayFlightNotStartedForRoute(oDate, startDate, originAirportCode, destinationAirportCode, dateBeforeRouteStartErrorMessage, dateBeforeRouteStartErrorMessageBER);
                    return false;
                }

                if (!Date.IsEmpty(endDate) && oDate.compareTo(endDate) == 1) {
                    DisplayFlightFinishedForRoute(oDate, endDate, originAirportCode, destinationAirportCode, dateAfterRouteEndErrorMessage, dateAfterRouteEndErrorMessageSXF);
                    return false;
                }

                if (returnDate != undefined && returnDate != "") {
                    var rDate = new Date(returnDate);

                    if (!Date.IsEmpty(startDate) && rDate.compareTo(startDate) == -1) {
                        alert(dateBeforeRouteStartErrorMessage.replace("{0}", startDate.toString("dd MMM yyyy")));
                        return false;
                    }
                    if (!Date.IsEmpty(endDate) && rDate.compareTo(endDate) == 1) {
                        DisplayFlightFinishedForRoute(rDate, endDate, originAirportCode, destinationAirportCode, dateAfterRouteEndErrorMessage, dateAfterRouteEndErrorMessageSXF);
                        return false;
                    }
                }

                return true;
            }
        }

        return false;

    }
};

function DisplayFlightNotStartedForRoute (selectedDate, routeStartDate, sFrom, sTo, defaultMessage, berlinMessage) {

    var customMessage = defaultMessage;

    if ((sFrom == "BER" || sTo == "BER") && (selectedDate < routeStartDate)) {
        customMessage = berlinMessage;
}

    alert(customMessage.replace("{0}", routeStartDate.toString("dd MMM yyyy")));

};

function DisplayFlightFinishedForRoute (selectedDate, routeEndDate, sFrom, sTo, defaultMessage, berlinMessage) {

    var customMessage = defaultMessage;

    if ((sFrom == "SXF" || sTo == "SXF") && (selectedDate > routeEndDate) && (new Date()) < routeEndDate) {
        customMessage = berlinMessage;
    }

    alert(customMessage.replace("{0}", routeEndDate.toString("dd MMM yyyy")));

};

