﻿Ext.namespace("TISolution");
Ext.namespace("TISolution.Map");


TISolution.Map.Manager = Ext.extend(Object, (function() {
    //#region fields
    var screenOverlay;
    var mapContainer;
    var map = null;
    var markerUrlDefault = "resource/images/monkey.png";
    //#endregion fields

    //#region Internal Methods
    var createMap = function() {
        var map = new TISolution.Map(mapContainer, { mapversion: "geo" });


        var layerRaster = AddLayer(map, "geo_hibrido", "Hibrido");
        var layerBH = AddLayer(map, "bacia_hidrografica", "Bacia Hidrografica");
        var layerFR = AddLayer(map, "NaPegada.FazendaRefugio", "Fazenda Ref&uacute;gio");
        var layerPP = AddLayer(map, "NaPegada.PrimeiroPlantio", "Primeiro Plantio");


        map.setLayerIndex(layerRaster, 0);
        map.setLayerIndex(layerBH, 1);
        map.setLayerIndex(layerFR, 2);
        map.setLayerIndex(layerPP, 3);

        map.addControl(new OpenLayers.Control.MousePosition({ div: document.getElementById('mapMousePosition'), numdigits: 5 }));
        map.addControl(new OpenLayers.Control.Scale('mapScale'));
        map.addControl(new OpenLayers.Control.LayerSwitcher());
        var control = new TISolution.Control.OverviewMap();
        map.addControl(control);
        control.maximizeControl();

        map.setCenter(new TISolution.MapPoint(-51.1619, -23.3119), 12);

        var measureControl = new TISolution.Control.MeasureControl();
        map.addControl(measureControl);
        measureControl.setOutputElement(document.getElementById('mapOutput'));

        return map;
    }

    var AddLayer = function(map, layerName, label) {
        var layer = new OpenLayers.Layer.WMS(label, "http://sistemas.tisolution.com:8085/mapsolution/wms",
        {
            layers: layerName,
            format: "image/png",
            transparent: 'true',
            tiled: 'true'
        });

        layer.setVisibility(false);
        map.addLayer(layer);

        return layer;
    }

    var GetHtml = function(nome, sigla) {
        return "<label class='lblNome'>" + nome + "<label><br /><label class='lblSigla'>" + sigla + "<label>";
    }

    //#endregion Internal Methods        
    return {
        constructor: function(mapContainerId) {
            mapContainer = document.getElementById(mapContainerId)
            map = createMap();
        },


        createMarker: function(imageURL, x, y, openInfoHTML, size) {
            var icon = new OpenLayers.Marker.defaultIcon();
            icon.size = new OpenLayers.Size(36, 36);
            icon.url = imageURL;
            return map.createMarker(new TISolution.MapPoint(x, y), icon, openInfoHTML, size);
        },

        removeMarker: function(marker) {
            map.removeMarker(marker);
        }
    };
})());
