//Global Vars

var osMap; 
var vectorLayer;
var lineFeature;
var lineString;
var points = new Array();
var selectedPosn=0;
var posmarkers;
var markers;
var offs;

// Line colour/width for route
var style_blue = 
{ 
   strokeColor: "#0000FF", 
   strokeOpacity: 0.5,
   strokeWidth: 5 
};

// For alternative route sections
var style_red =
{
   strokeColor: "#F407F9", 
   strokeOpacity: 0.5,
   strokeWidth: 5 
};


/* Create map - open layers for marker and route */ 

function drawMap(mapeast, mapnorth)
{  
   OpenLayers.Renderer.SVG.prototype.supported = function()
   {
      var svgFeature = "http://www.w3.org/TR/SVG11/feature#";
      return (document.implementation &&
             (document.implementation.hasFeature("org.w3c.svg", "1.0") ||
                document.implementation.hasFeature(svgFeature + "SVG", "1.1") ||
                document.implementation.hasFeature(svgFeature + "BasicStructure", "1.1") ));
   }; 
    
   osMap = new OpenSpace.Map('map');
   osMap.setCenter(new OpenSpace.MapPoint(mapeast, mapnorth), 7); // Zoom level 7
   posmarkers = new OpenLayers.Layer.Markers( "posMarkers" );
   osMap.addLayer(posmarkers);
   if (navigator.appName == "Netscape")
   {
      document.getElementById("map").style.top="0";
      document.getElementById("map").style.right="0";
      document.getElementById("map").style.bottom="0";
      document.getElementById("map").style.left="0";
   };
//   osMap.zoomTo(7);
} 

// To draw the route
function drawRoute(colour)
{
   var lineString = new OpenLayers.Geometry.LineString(points); 
   lineFeature = new OpenLayers.Feature.Vector(lineString, null, colour); 
   vectorLayer = new OpenLayers.Layer.Vector("Vector Layer"); 
   osMap.addLayer(vectorLayer); 
   vectorLayer.addFeatures(lineFeature); 
}

var gridProjection = new OpenSpace.GridProjection();
var lonlat = new OpenLayers.LonLat(0, 0);

// To set waypoints
function setPoint(latitude, longitude)
{
   lonlat.lat = latitude;
   lonlat.lon = longitude;
   var pos = gridProjection.getMapPointFromLonLat(lonlat); 
   points.push(new OpenLayers.Geometry.Point(pos.lon,pos.lat));
}

// To clear the waypoint array, needed to draw alternatives
function clearRoute()
{
   while(points.length>0){points.pop();}
}


// To draw the start/finish marker
function setStart(easting, northing)
{
   var pos = new OpenSpace.MapPoint(easting, northing);
   var marker = new OpenLayers.Marker(pos);
   posmarkers.addMarker(marker);
}

// To draw a direction arrow
// function showDirection(latitude, longitude, arrow)
// {
//   var size = new OpenLayers.Size(50, 50);
//   var offset = new OpenLayers.Pixel(-size.w/2, -size.h/2);
//   var icon = new OpenLayers.Icon(arrow, size, offset);
//   lonlat.lat = latitude;
//   lonlat.lon = longitude;
//   posmarkers.addMarker(new OpenLayers.Marker(lonlat,icon.clone()));
// }

// To draw a direction arrow
function showDirection(easting, northing, arrow)
{
   var size = new OpenLayers.Size(50, 50);
   var offset = new OpenLayers.Pixel(-size.w/2, -size.h/2);
   var icon = new OpenLayers.Icon(arrow, size, offset);
   var pos = new OpenSpace.MapPoint(easting, northing);
   var marker = new OpenLayers.Marker(pos, icon);
   posmarkers.addMarker(marker);
}
