﻿Type.registerNamespace("Sembo.Site.Transportation.UC");

Sembo.Site.Transportation.UC.FerryPackageSearchControl = function(element) {
    Sembo.Site.Transportation.UC.FerryPackageSearchControl.initializeBase(this, [element]);

    function getChildElement(elementId) {
        return $get(element.id + "_" + elementId);
    };

    this._accommodation = null; // Client side control for accommodation (set up in application_load-handler).
    this._transportation = null;
}

Sembo.Site.Transportation.UC.FerryPackageSearchControl.prototype = {

    // Methods
    initialize: function() {
        Sembo.Site.Transportation.UC.FerryPackageSearchControl.callBaseMethod(this, "initialize");
        this.createEventHandlers();

        Sys.Application.add_load(this.application_load);
    },

    dispose: function() {
        Sembo.Site.Transportation.UC.FerryPackageSearchControl.callBaseMethod(this, "dispose");

        Sys.Application.remove_load(this.application_load);
    },

    // Event handlers
    createEventHandlers: function() {
        var me = this;

        this.application_load = function(s, e) {
            var element = me.get_element();
            me._accommodation = $find(element.id + "_accommodationFields");
            me._transportation = $find(element.id + "_transportationFields");

            me._accommodation.add_arrivalDateChanged(me.accommodation_arrivalDateChanged);
            me._accommodation.add_departureDateChanged(me.accommodation_departureDateChanged);

            me._transportation.add_ferryOutDateChanged(me.transportation_ferryOutDateChanged);
            me._transportation.add_ferryHomeDateChanged(me.transportation_ferryHomeDateChanged);
        };

        this.accommodation_arrivalDateChanged = function(s, e) {
            if (!me._transportation.get_userChangedDateInControl()) {
                me._transportation.set_ferryOutDate(me._accommodation.get_arrivalDate(), true);
            }
        };

        this.accommodation_departureDateChanged = function(s, e) {
            if (!me._transportation.get_userChangedDateInControl()) {
                me._transportation.set_ferryHomeDate(me._accommodation.get_departureDate(), true);
            }
        };

        this.transportation_ferryOutDateChanged = function(s, e) {
            if (!me._accommodation.get_userChangedDateInControl()) {
                me._accommodation.set_arrivalDate(me._transportation.get_ferryOutDate(), true);
            }
        };

        this.transportation_ferryHomeDateChanged = function(s, e) {
            if (!me._accommodation.get_userChangedDateInControl()) {
                me._accommodation.set_departureDate(me._transportation.get_ferryHomeDate(), true);
            }
        };
    }
}


Sembo.Site.Transportation.UC.FerryPackageSearchControl.registerClass("Sembo.Site.Transportation.UC.FerryPackageSearchControl", Sys.UI.Control);
if (typeof (Sys) !== 'undefined') Sys.Application.notifyScriptLoaded();
