﻿var AccGroupsInList = (function ($) {

    return {

        setAgBlockControlStates: function(v) {
            AccGroupsInList.agBlockControlStates = v;
        },

        getAgBlockControlStates: function() {
            return typeof AccGroupsInList.agBlockControlStates == 'undefined' ? null : AccGroupsInList.agBlockControlStates;
        },

        initialize: function() {
            AccGroupsInList.updateAccGroupControlStatesInList();
            $j('.accommodation-in-list .ag-number-of-persons').live('click select change', function() {
                if ($j(this).val() != AccGroupsInList.getAgBlockControlStates()[ControlSettingsSaver.getElementKey(this)]) {
                    AccGroupsInList.onAgNumberOfPersonsChange(this);
                }
            });
        },

        onAgNumberOfPersonsChange: function(sender) {
            AccGroupsInList.updateAccGroupControlStatesInList();
            var $agBlock = $j(sender).closest('.accommodation-in-list');
            var isHpPopup = $agBlock.closest('#popup-res-list').length > 0;
            var agId = $agBlock.find('input[name="AgId"]').val();
            var chkInDate;
            var chkOutDate;
            if (isHpPopup) {
                chkInDate = $j('#bs-date-from-hidden').val();
                chkOutDate = $j('#bs-date-to-hidden').val();
            } else {
                chkInDate = $j('#date-from-hidden').val();
                chkOutDate = $j('#date-to-hidden').val();
            }
            var agNumberOfPersons = $j(sender).val();

            $agBlock.find('.ag-number-of-persons').attr('disabled', 'disabled');
            $agBlock.find('.booking-options .prices').html('<div class="ag-in-list-loader"><center><img src="/local/css/images/loader-small.gif" alt="loader image"/></center></div>');
            TB.invoke({ ActionType: 'UpdateAccommodationGroupInList', InvokeUrl: TB.resources['Core.UrlPrefix'] + '/booking/select-accommodation/', AccommodationGroupId: agId, CheckInDate: chkInDate, CheckOutDate: chkOutDate, AgNumberOfPersons: agNumberOfPersons, IsHpPopup: (isHpPopup ? 'True' : 'False') });
        },

        updateAccGroupControlStatesInList: function() {
            var areas = $j('.accommodation-in-list');
            var keysToIgnore = [];
            var storage = ControlSettingsSaver.saveControlSettingsToStorage(areas, keysToIgnore, null);
            AccGroupsInList.setAgBlockControlStates(storage);
        }

    };
})(jQuery);
