/**
 * @requires OpenLayers/Control/Panel.js
 * @requires OpenLayers/Control/MapType.js
 */

/**
 * Class: OpenLayers.Control.MapTypePanel
 *
 *
 * Inherits from:
 *  - <OpenLayers.Control.Panel>
 */
OpenLayers.Control.MapTypePanel = OpenLayers.Class(OpenLayers.Control.Panel, {

    /**
     * Constructor: OpenLayers.Control.MapTypePanel
     * Add buttons to switch between baseLayers.
     *
     * Parameters:
     * options - {Object} An optional object whose properties will be used
     *     to extend the control.
     */
    initialize: function(options) {
        OpenLayers.Control.Panel.prototype.initialize.apply(this, [options]);
    },

    /**
     * Method: setMap
     *
     * Properties:
     * map - {<OpenLayers.Map>}
     */
    setMap: function(map) {
        var layers = map.layers;
        for(var i=0, len=layers.length; i<len; i++) {
            var layer = layers[i];
            if (layer.isBaseLayer) {
                var control = new OpenLayers.Control.MapType(layer);

                if (layer == map.baseLayer) {
                    this.defaultControl = control;
                }
                this.addControls(control);
            }
        }

        OpenLayers.Control.prototype.setMap.apply(this, arguments);
    },
    /**
     * Method: redraw
     */
    redraw: function() {
//        this.div.innerHTML = "";
        if (this.active) {
            for (var i=0, len=this.controls.length; i<len; i++) {
                var element = this.controls[i].panel_div;
                if (this.controls[i].active) {
                    element.className = this.controls[i].displayClass + "ItemActive";
                } else {    
                    element.className = this.controls[i].displayClass + "ItemInactive";
                }    
                this.div.appendChild(element);
            }
        }
        //OpenLayers.Control.Panel.prototype.redraw.apply(this);
        if (this.active) {
            for (var i=0, len=this.controls.length; i<len; i++) {
                var element = this.controls[i].panel_div;
                var subelement = this.controls[i].div;
                element.appendChild(subelement);
            }
        }
    },

    CLASS_NAME: "OpenLayers.Control.MapTypePanel"
});
