var MI = {
    provinceBounds: null,

    initialize: function(){
        this.provinceBounds = new OpenLayers.Bounds(258000,4485000,536000,4752000);
    },

    switchBaseLayers: function(baseLayer){

        //TODO: optimize
         var map = eGV.getMap();
        
        /*
        if(baseLayer == "map" || baseLayer == "photo"){
           newBaseLayer = map.getConnection("capesICC").olLayer;
           map.setBaseLayer(newBaseLayer);
        } else if(baseLayer == "base"){
           newBaseLayer = map.getConnection("capesBaseMDE").olLayer;
           map.setBaseLayer(newBaseLayer);
        }
        */
        
        if(baseLayer == "photo"){
            map.getGroup("fonsTopo").changeDisplayed(false);
            map.getGroup("fonsEsq").changeDisplayed(false);
            map.getGroup("fonsOrto").changeDisplayed(true);
        }
        else if(baseLayer == "map"){
            map.getGroup("fonsOrto").changeDisplayed(false);
            map.getGroup("fonsEsq").changeDisplayed(false);
            map.getGroup("fonsTopo").changeDisplayed(true);
        }
    },

    bringPoint2Center: function(x,y){
        eGV.getMap().setCenter(new OpenLayers.LonLat(x,y));
        eGV.getMap().zoomTo(5);
    },
    
    bringExtent2Center: function(minx, miny, maxx, maxy){
        eGV.getMap().zoomToExtent(new OpenLayers.Bounds(minx, miny, maxx, maxy),false);
    },
    
    zoomToProvince: function(){
        eGV.getMap().zoomToExtent(MI.provinceBounds);
    },

    createOverViewMap: function(){
        var refArray = Array(
            /*refLimit = new OpenLayers.Layer.WMS(
                "Límit",
                "http://192.168.1.28/wms52/montserrat/patronat/referencia",
                {
                    "layers":"municipi,comarca",
                    "format":"image/png",
                    "exceptions":"application/vnd.ogc.se_xml",
                    "transparent":"true"
                },
                {buffer:0, transitionEffect:'resize',baseLayer:false,singleTile:true}
            ),*/
            refFons = new OpenLayers.Layer.WMS(
                "PNMM",
                serverURL+"/wms52/ftp/llenyoses/referencia",
                {
                    "layers":"comarca,provincia",
                    "format":"image/png",
                    "exceptions":"application/vnd.ogc.se_xml"
                },
                {buffer:0, transitionEffect:'resize',baseLayer:true,singleTile:true}
            )
        );

		
       var overviewMap = eGV.addControl(new eGV.Control.OverviewMap("divOverviewMap",{staticMap:false,size:[150,100],layers:refArray,id:"eGVOverviewMap"}),"eGVOverviewMap");
    },

    /**
     * Method: showHideLayer
     * Shows or hides the given layer accordingly
     *
     * Parameters:
     * layer_id - {String} the id of the layer
     * forceShow - {Boolean} whether to force the displaying of the layer,
     *              if true, the layer will be always displayed
     */
    showHideLayer: function(layer_id, forceShow){
        if(forceShow == 'undefined' || forceShow == null)
            forceShow = false;
        var map = eGV.getMap();
        for(var i=0, len=map.connections.length; i<len; i++){
            var layer = map.connections[i].getLayer(layer_id);
            if(layer != null){
                if(forceShow && layer.isVisible())
                    return layer.isVisible();
                else{
                    layer.changeDisplayed();
                    return layer.isVisible();
                }
            }
        }
        return null;
    },

     /**
     * Method: getLayerLegend
     * Returns the URL for the image of the layer's legend
     *
     * Parameters:
     * layer_id - {String} the id of the layer
     */
    getLayerLegend: function(layer_id){
        var map = eGV.getMap();
        for(var i=0, len=map.connections.length; i<len; i++){
            var layer = map.connections[i].getLayer(layer_id);
            if(layer != null){
                return layer.getLegendURL();
            }
        }
        return null;
    },


      /**
     * Method: minimizeControl
     * Set the display properties of the control to make it disappear.
     *
     * Parameters:
     * evt - {Event}
     */
    hideLoadingBar: function(evt) {
        this.div.style.display = "none";
        this.maximized = false;

        if (evt != null) {
            OpenLayers.Event.stop(evt);
        }
    },

    /**
     * Method: maximizeControl
     * Make the control visible.
     *
     * Parameters:
     * evt - {Event}
     */
    showLoadingBar: function(evt) {
        this.div.style.display = "block";
        this.maximized = true;

        if (evt != null) {
            OpenLayers.Event.stop(evt);
        }
    }

    
}

function initializeMapInterface(){
	return MI.initialize();
}

window.addEvent('domready', initializeMapInterface);


