﻿
Vtab.Application.Events = function() {
    //In OpenLayers 2.7 The OpenLayers.Events object no longer automatically includes the 'xy' property on all browser events. 
    //You can override it by adding the following: 
    //    OpenLayers.Events.prototype.includeXY = true;

    //adds onclick event on kmllayer
    //    var kmlLayer = map.getLayersByName("kmlLayer")[0];
    //    var select = new OpenLayers.Control.SelectFeature(kmlLayer, {
    //        callbacks: {
    //            //                over: VR.Application.hover,
    //            click: Vtab.Application.onFeatureSelect
    //        }
    //    });
    //    map.addControl(select);
    //    select.activate();

    //    jQuery("#removeMask").toggle(
    //        function() {
    //            jQuery(this).text("Visa maskning");
    //            addMask();
    //        },
    //        function() {
    //            jQuery(this).text("Ta bort maskning");
    //            removeMask();
    //        }
    //    );


    //    kmlLayer.events.register("loadend", kmlLayer, function() {
    //        Vtab.Application.checkboxChanged();
    //    });
    var kmlLayer = map.getLayersByName("kmlLayer")[0];
    var select = new OpenLayers.Control.SelectFeature(kmlLayer, {
        callbacks: {
            //                over: VR.Application.hover,
            click: Vtab.Application.onFeatureSelect
        }
    });
    map.addControl(select);
    select.activate();

    //Add event to changeiconsize and zoomlevel visibility to kmllayer
    map.events.register('moveend', null, function() {
        Vtab.Application.getCurrentFeatures();
    });
    map.events.register('zoomend', null, function() {
        Vtab.Application.getCurrentFeatures();
    });

    //    if (window.addEventListener) {
    //        window.addEventListener('unload', onClose, false);
    //    }
    //    else {
    //        window.attachEvent('onunload', onClose)
    //    }
}
Vtab.Application.getCurrentFeatures = function() {
    var currentZoomLevel = map.getZoom();
    if (currentZoomLevel > 8) {
        var controlToDestroy = map.getControlsBy("name", "select");
        bbox = map.getExtent();
        var left = bbox.left;
        var bottom = bbox.bottom;
        var right = bbox.right;
        var top = bbox.top;
        //kontrollera bbox först
        var temporaryFeatureLayer = new OpenLayers.Layer.Vector("temporaryFeatureLayer", {
            //                projection: map.displayProjection,
            rendererOptions: { yOrdering: true },
            type: "KML",
            strategies: [new OpenLayers.Strategy.Fixed()],
            protocol: new OpenLayers.Protocol.HTTP({
                url: "services/getKMLdata.aspx?left=" + left + "&right=" + right + "&top=" + top + "&bottom=" + bottom,
                //                url: "hpl.kml",
                format: new OpenLayers.Format.KML({
                    extractStyles: true,
                    extractAttributes: true
                })
            })
        });
        map.addLayer(temporaryFeatureLayer);

        temporaryFeatureLayer.events.register("loadend", temporaryFeatureLayer, function() {
            var features = temporaryFeatureLayer.features;
            var kmlLayer = map.getLayersByName("kmlLayer")[0];
            kmlLayer.destroyFeatures();
            map.removeLayer(temporaryFeatureLayer);
            kmlLayer.addFeatures(features);
            Vtab.Application.checkboxChanged();
        });
    }
    else {
        var kmlLayer = map.getLayersByName("kmlLayer")[0];
        kmlLayer.destroyFeatures();
    }
}
Vtab.Application.checkZoomLevelForIconSize = function(zoomLevel, layer) {
    //size = parseInt(zoomLevel) * 5;
    //this.changeIconSize(layer, size)
    switch (zoomLevel) {
        case 5:
            Vtab.Application.changeIconSize(layer, 5);
            break;
        case 6:
            Vtab.Application.changeIconSize(layer, 6);
            break;
        case 7:
            Vtab.Application.changeIconSize(layer, 7);
            break;
        case 8:
            Vtab.Application.changeIconSize(layer, 8);
            break;
        case 9:
            Vtab.Application.changeIconSize(layer, 9);
            break;
        case 10:
            Vtab.Application.changeIconSize(layer, 10);
            break;
        case 11:
            Vtab.Application.changeIconSize(layer, 20);
            break;
        case 12:
            Vtab.Application.changeIconSize(layer, 30);
            break;
        case 13:
            Vtab.Application.changeIconSize(layer, 40);
            break;
        case 14:
            Vtab.Application.changeIconSize(layer, 50);
            break;
        case 15:
            Vtab.Application.changeIconSize(layer, 60);
            break;
        case 16:
            Vtab.Application.changeIconSize(layer, 70);
            break;
        case 17:
            Vtab.Application.changeIconSize(layer, 80);
            break;
    }
}

Vtab.Application.changeIconSize = function(layer, iconSize) {
    if (layer.CLASS_NAME == "OpenLayers.Layer.Vector") {
        for (var feature in layer.features) {
            layer.features[feature].style.graphicHeight = iconSize;
            layer.features[feature].style.graphicWidth = iconSize;
        }
        layer.redraw();
    }
    if (layer.CLASS_NAME == "OpenLayers.Layer.Markers") {
        for (var marker in layer.markers) {
            layer.features[feature].style.graphicHeight = iconSize;
            layer.features[feature].style.graphicWidth = iconSize;
        }
        layer.redraw();
    }
}


