o: ActiveSupport::Cache::Entry	:@compressedF:@expires_in0:@created_atf1380709799.0183198:@value"�{I"
class:ETI"BundledAsset;�FI"logical_path;�TI"8Widgets/BaseLayerPicker/BaseLayerPickerViewModel.js;�TI"
pathname;�TI"q/Users/bogumil/www/engines/cesium/app/assets/javascripts/Widgets/BaseLayerPicker/BaseLayerPickerViewModel.js;�FI"content_type;�TI"application/javascript;�TI"
mtime;�TI"2013-10-02T12:16:28+02:00;�TI"length;�Ti~I"digest;�TI"%26284e9d92d925c7683d3c59214db18f;�FI"source;�TI"~/*global define*/

define(['Core/defined', 'Core/defineProperties', 'Core/DeveloperError', 'Widgets/createCommand', 'ThirdParty/knockout'], function(
        defined,
        defineProperties,
        DeveloperError,
        createCommand,
        knockout) {
    "use strict";

    /**
     * The view model for {@link BaseLayerPicker}.
     * @alias BaseLayerPickerViewModel
     * @constructor
     *
     * @param {ImageryLayerCollection} imageryLayers The imagery layer collection to use.
     * @param {Array} [imageryProviderViewModels=[]] The array of ImageryProviderViewModel instances to use.
     *
     * @exception {DeveloperError} imageryLayers is required.
     * @exception {DeveloperError} imageryProviderViewModels must be an array.
     *
     * @see ImageryProviderViewModel
     */
    var BaseLayerPickerViewModel = function(imageryLayers, imageryProviderViewModels) {
        if (!defined(imageryLayers)) {
            throw new DeveloperError('imageryLayers is required');
        }

        if (!defined(imageryProviderViewModels)) {
            imageryProviderViewModels = [];
        } else if (!Array.isArray(imageryProviderViewModels)) {
            throw new DeveloperError('imageryProviderViewModels must be an array');
        }

        var that = this;

        this._imageryLayers = imageryLayers;

        /**
         * Gets or sets an array of ImageryProviderViewModel instances available for selection.
         * This property is observable.
         * @type {Array}
         */
        this.imageryProviderViewModels = imageryProviderViewModels.slice(0);

        /**
         * Gets or sets whether the imagery selection drop-down is currently visible.
         * @type {Boolean}
         * @default false
         */
        this.dropDownVisible = false;

        knockout.track(this, ['imageryProviderViewModels', 'dropDownVisible']);

        /**
         * Gets the currently selected item name.  This property is observable.
         * @type {String}
         * @default undefined
         */
        this.selectedName = undefined;
        knockout.defineProperty(this, 'selectedName', function() {
            var selected = that.selectedItem;
            return defined(selected) ? selected.name : undefined;
        });

        /**
         * Gets the image url of the currently selected item.  This property is observable.
         * @type {String}
         * @default undefined
         */
        this.selectedIconUrl = undefined;
        knockout.defineProperty(this, 'selectedIconUrl', function() {
            var viewModel = that.selectedItem;
            return defined(viewModel) ? viewModel.iconUrl : undefined;
        });

        /**
         * Gets or sets the currently selected item.  This property is observable.
         * @type {ImageryProviderViewModel}
         * @default undefined
         */
        this.selectedItem = undefined;
        var selectedViewModel = knockout.observable();

        this._currentProviders = [];
        knockout.defineProperty(this, 'selectedItem', {
            get : function() {
                return selectedViewModel();
            },
            set : function(value) {
                var i;
                var currentProviders = that._currentProviders;
                var currentProvidersLength = currentProviders.length;
                for (i = 0; i < currentProvidersLength; i++) {
                    var layersLength = imageryLayers.getLength();
                    for ( var x = 0; x < layersLength; x++) {
                        var layer = imageryLayers.get(x);
                        if (layer.getImageryProvider() === currentProviders[i]) {
                            imageryLayers.remove(layer);
                            break;
                        }
                    }
                }

                if (defined(value)) {
                    var newProviders = value.creationCommand();
                    if (Array.isArray(newProviders)) {
                        var newProvidersLength = newProviders.length;
                        for (i = newProvidersLength - 1; i >= 0; i--) {
                            imageryLayers.addImageryProvider(newProviders[i], 0);
                        }
                        that._currentProviders = newProviders.slice(0);
                    } else {
                        that._currentProviders = [newProviders];
                        imageryLayers.addImageryProvider(newProviders, 0);
                    }

                    selectedViewModel(value);
                }
                that.dropDownVisible = false;
            }
        });

        this._toggleDropDown = createCommand(function() {
            that.dropDownVisible = !that.dropDownVisible;
        });
    };

    defineProperties(BaseLayerPickerViewModel.prototype, {
        /**
         * Gets the command to toggle the visibility of the drop down.
         * @memberof BaseLayerPickerViewModel.prototype
         *
         * @type {Command}
         */
        toggleDropDown : {
            get : function() {
                return this._toggleDropDown;
            }
        },

        /**
         * Gets the imagery layer collection.
         * @memberof BaseLayerPickerViewModel.prototype
         *
         * @type {ImageryLayerCollection}
         */
        imageryLayers : {
            get : function() {
                return this._imageryLayers;
            }
        }
    });

    return BaseLayerPickerViewModel;
});
;�TI"required_assets_digest;�TI"%3b1e74a928c9d6189beac980ae6ac71b;�FI"
_version;�TI"%6776f581a4329e299531e1d52aa59832;�F