﻿var _map=null;
var _shapeLayer=new VEShapeLayer();          

function GetMap()      
{
    var germany=new VELatLong('51.5','10.5');//Germany
    var mapOptions = new VEMapOptions();
    
    mapOptions.EnableBirdseye = false;
    
    _map = new VEMap('myMap');
    _map.SetClientToken(document.getElementById("HiddenFieldVirtualEarthToken").value);
    _map.LoadMap(germany, 6 ,VEMapStyle.Road ,false , VEMapMode.Mode2D, false, 1, mapOptions);
    _map.AddShapeLayer(_shapeLayer);
    _map.SetScaleBarDistanceUnit(VEDistanceUnit.Kilometers);
    
    _map.AttachEvent("onmouseover", OnMouseOverShape);
    _map.AttachEvent("onmouseout", OnMouseOutShape);
    _map.AttachEvent("ondoubleclick", OnMouseDoubleClick);
    
    LoadZones();          
}

function ShowGermany()
{
    var focus=new VELatLong('51.5','10.5');
    _map.SetCenterAndZoom(focus,6); 
}
          
function ShowCity(lat, lon, zoom)
{
    var focus=new VELatLong(lat,lon);
    _map.SetCenterAndZoom(focus,zoom);         
}

function LoadZones()
{
     umweltzonen.getSimpleZoneObjekte(showUmweltzonen, getZonenNamenFailed);

    function getZonenNamenFailed()
    {
        var confResult = confirm("Es wurden keine Umweltzonen geladen. Möchten Sie erneut versuchen Umweltzonen zu laden?");
        if(confResult == true)
        {
            LoadZones();
        }
    }
     
     function showUmweltzonen(result, context, operation)
     {                         
        for(var i=0;i<result.length;i++)
        {
            umweltzonen.getZone(result[i].Stadtname, result[i].Name, CreateZoneShape);
        }
    }
}

function CreateZoneShape(zone)
{
    var zonenpoints=new Array();
    
    if(zone.Coordinates.length > 0)
    {
    
        for(var i=0;i<zone.Coordinates.length;i++)
        { 
        
            var latLon=new VELatLong(zone.Coordinates[i].Lat,zone.Coordinates[i].Lon);
            
            zonenpoints.push(latLon);
 
        }
        
        zonenpoints.push(zonenpoints[0]);
        var shape=new VEShape(VEShapeType.Polygon,zonenpoints);
        shape.SetTitle("Umweltzone "+zone.Stadtname+" ("+zone.Name+")");
        shape.SetDescription(encode_entities(zone.Description)+AddAd(zone.Stadtname));
        shape.SetLineColor(GetColor(zone.Klasse));
        shape.SetFillColor(GetColor(zone.Klasse));
        shape.SetPhotoURL(GetClassImage(zone.Klasse));
        shape.HideIcon();
        
        _shapeLayer.AddShape(shape); 
        zonenpoints=new Array();
    }
}

function OnMouseOverShape(mapEventObject)
{
    shape = _map.GetShapeByID(mapEventObject.elementID);
    if(shape != null)
    {
        //document.getElementById("myMap").childNodes[0].style.cursor='hand';
        _map.HideInfoBox();
        _map.ShowInfoBox(shape);
    }
}

function OnMouseOutShape(mapEventObject)
{
    shape = _map.GetShapeByID(mapEventObject.elementID);
    if(shape != null)
    {
        document.getElementById("myMap").childNodes[0].style.cursor='default';
    }
}

function OnMouseDoubleClick(mapEventObject)
{
    shape = _map.GetShapeByID(mapEventObject.elementID);
    if(shape != null)
    {
        _map.SetMapView(shape.GetPoints());
        _map.ShowInfoBox(shape);
    }
    
    return true;
}

function GetClassImage(zonenKlasse)
{
    return document.URL.substring(0, document.URL.lastIndexOf("/"))+"/images/zonen_klassen/class"+zonenKlasse+".gif";
}

function GetColor(zonenKlasse)
{
    var veColor;
    
    switch (zonenKlasse)
    {
      case 2:
        veColor = new VEColor(204,0,0,0.35)//red
        break;
      case 3:
        veColor = new VEColor(255,204,51,0.45)//yellow
        break;
      case 4:
        veColor = new VEColor(0,153,51,0.35)//green
        break;
      default:
        veColor = new VEColor(0,0,0,0.5)//white
        break;
    }
    
    return veColor;

}

function AddAd(stadt)
{
    var adText;
    
    adText = "<br /><br /><a href=\"http://www.tuev-nord.de/48772.asp\" target=\"_blank\">Bestellen</a> Sie jetzt Ihre Umweltplakette, um in "+stadt+" eine Zufahrtsberechtigung zu erhalten.";
    
    return adText;
}

function encode_entities(s){
  var result = '';
  for (var i = 0; i < s.length; i++){
    var c = s.charAt(i);
    result += {'<':'&lt;', '>':'&gt;', '&':'&amp;', '"':'&quot;', '\n':'<br />'}[c] || c;
  }
  return result;
}


