﻿Type.registerNamespace("Sembo.Site.Common.Uc");

Sembo.Site.Common.Uc.TravelersSearchFields = function(element) {
    Sembo.Site.Common.Uc.TravelersSearchFields.initializeBase(this, [element]);

    function getChildControl(controlId) {
        return $get(element.id + "_" + controlId);
    };

    this._adultDropDown = getChildControl("AccomodationPaxAdultDropdown");
    this._childrenDropDown = getChildControl("AccomodationPaxChildDropdown");

    this.maximumTravelers = null;
    this.maximumMessage = null;
}

Sembo.Site.Common.Uc.TravelersSearchFields.prototype =
{
    // properties
    get_maximumTravelers: function() {
        return this.maximumTravelers;
    },

    set_maximumTravelers: function(value) {
        this.maximumTravelers = value;
    },

    get_maximumMessage: function() {
        return this.maximumMessage;
    },

    set_maximumMessage: function(value) {
        this.maximumMessage = value;
    },

    get_numberOfAdults: function() {
        var value = Sembo.Dom.getSelectedValue(this._adultDropDown);
        return value ? parseInt(value, 10) : null;
    },

    set_numberOfAdults: function(value) {
        var dd = this._adultDropDown;
        Sembo.Dom.setSelectedValue(dd, value.toString());
    },

    get_numberOfChildren: function() {
        var value = Sembo.Dom.getSelectedValue(this._childrenDropDown);
        return value ? parseInt(value, 10) : null;
    },

    set_numberOfChildren: function(value) {
        var dd = this._childrenDropDown;
        Sembo.Dom.setSelectedValue(dd, value.toString());
    },

    //methods
    initialize: function() {
        Sembo.Site.Common.Uc.TravelersSearchFields.callBaseMethod(this, "initialize");
        var me = this;

        //event handlers
        this.adultDropDown_change = function(sender, eventArgs) {
            me.onAdultDropDownChanged();
        };

        this.childrenDropDown_change = function(sender, eventArgs) {
            me.onChildrenDropDownChanged();
        };

        $addHandler(this._adultDropDown, "change", this.adultDropDown_change);
        $addHandler(this._childrenDropDown, "change", this.childrenDropDown_change);
    },

    dispose: function() {
        Sembo.Site.Common.Uc.TravelersSearchFields.callBaseMethod(this, "dispose");

        $removeHandler(this._adultDropDown, "change", this.adultDropDown_change);
        $removeHandler(this._childrenDropDown, "change", this.childrenDropDown_change);
    },

    //event handlers
    onAdultDropDownChanged: function() {
        if (this.get_maximumTravelers() > 0) {
            if ((this.get_numberOfAdults() + this.get_numberOfChildren()) > this.get_maximumTravelers()) {
                this.set_numberOfAdults(this.get_maximumTravelers() - this.get_numberOfChildren());
                alert(this.get_maximumMessage() + " " + this.get_maximumTravelers());
            }
        }
    },

    onChildrenDropDownChanged: function() {
        if (this.get_maximumTravelers() > 0) {
            if ((this.get_numberOfChildren() + this.get_numberOfAdults()) > this.get_maximumTravelers()) {
                this.set_numberOfChildren(this.get_maximumTravelers() - this.get_numberOfAdults());
                alert(this.get_maximumMessage() + " " + this.get_maximumTravelers());
            }
        }
    }
} 

Sembo.Site.Common.Uc.TravelersSearchFields.registerClass("Sembo.Site.Common.Uc.TravelersSearchFields", Sys.UI.Control);
if (typeof (Sys) !== 'undefined') Sys.Application.notifyScriptLoaded();
