   var osMap;
   var baseLayer;
   var vectorLayer;


function showMap()
{
	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") ));
};

/*         var controls = [
                         new OpenSpace.Control.CopyrightCollection(),
                         new OpenLayers.Control.Navigation(),
			 ];*/
  
	var options = {
		resolutions: [200,100,50,25,10,5], 
//		resolutions: [500,200,100,50,25,10,5,2,1], 
	restrictedExtent: new OpenSpace.MapBounds(545000, 225000, 670000, 310000)};
	osMap = new OpenSpace.Map('map', options);
	osMap.setCenter(new OpenSpace.MapPoint(605500, 258500), 0);
	
	osMap.removeLayer(osMap.getMarkerLayer());
	osMap.removeLayer(osMap.getVectorLayer());
	baseLayer = new OpenLayers.Layer.Vector("County outline");
	osMap.addLayer(baseLayer);
	tenKmLayer = new OpenLayers.Layer.Vector("Ten Km Grid");
	osMap.addLayer(tenKmLayer);
	tetradLayer = new OpenLayers.Layer.Vector("Tetrad Grid");
	tetradLayer.setVisibility(false);
	osMap.addLayer(tetradLayer);
	vectorLayer = new OpenLayers.Layer.Vector("Coverage");
	osMap.addLayer(vectorLayer);
	addTenKmGridList(tenKmLayer, tenkmList, 10000);
	addTenKmGridList(tetradLayer, tetradsList, 2000);
	addBoundary(baseLayer, bound1);
 	addBoundary(baseLayer, bound2);
 	addBoundary(baseLayer, bound3);
 	addBoundary(baseLayer, bound4);
 	addBoundary(baseLayer, bound5);
 	addBoundary(baseLayer, coast1);

	var tetradPoints = truncatePoints(tetradList, 2000);
	addTetradCircleList(vectorLayer, tetradPoints);
	
	var layerSwitcher = new OpenLayers.Control.LayerSwitcher();
	osMap.addControl(layerSwitcher);
}

function truncatePoints(list, resolution)
{
	var points = new Array();
	for (var i = 0; i < list.length; i++)
	{
		var x = list[i][0] - (list[i][0] % resolution);
		var y = list[i][1] - (list[i][1] % resolution);
		points[x + ',' + y] = [x,y,list[i][2]];
	}
	var newpoints = new Array();
	for (var i in points)
	{
		newpoints.push(points[i]);
	}
	return newpoints;
}
function addBoundary(vectorLayer, list, colour)
{
	var points = new Array();

	for (var i = 0; i < list.length; i++)
	{
		var point = new OpenLayers.Geometry.Point(list[i][0], list[i][1]);
		points.push(point);
	}
	/*
	* Define polygon style
	*/
	var fill = colour || "#000000";
	var style_green =
	{
		strokeColor: "#000000",
		strokeOpacity: 0,
		strokeWidth: 2,
		fillColor: fill,
		fillOpacity: 0.4
	};
	// create a polygon feature from a list of points
	var linearRing = new OpenLayers.Geometry.LinearRing(points);
	var polygonFeature = new OpenLayers.Feature.Vector(linearRing, null, style_green);
	vectorLayer.addFeatures([polygonFeature]);
}

function addTetradList(vectorLayer, list, fillColor)
{
	for (var i = 0; i < list.length; i++)
	{
		addTetrad(vectorLayer, list[i][0], list[i][1], fillColor);
	}
}
function addTetrad(vectorLayer, left, bottom, fillColor)
{
	left -= left % 2000;
	bottom -= bottom % 2000;
	var right = left + 2000;
	var top = bottom + 2000;
	/*
	* Define polygon style
	*/
	var style_green =
	{
		strokeColor: "#000000",
		strokeOpacity: 1,
		strokeWidth: 2,
		fillColor: fillColor,
		fillOpacity: 0.6
	};
	// Define polygon area
	var points = new Array();
	points[0] = new OpenLayers.Geometry.Point(left, top);
	points[1] = new OpenLayers.Geometry.Point(right, top);
	points[2] = new OpenLayers.Geometry.Point(right, bottom);
	points[3] = new OpenLayers.Geometry.Point(left, bottom);
	// create a polygon feature from a list of points
	var linearRing = new OpenLayers.Geometry.LinearRing(points);
	var polygonFeature = new OpenLayers.Feature.Vector(linearRing, null, style_green);
	vectorLayer.addFeatures([polygonFeature]);
}

function convertIndexToColour(index)
{
	if (index < 10)
	{
		return '#FFFF00';
	}
	if (index < 20)
	{
			return '#FF6600';
	}
	return '#FF0000';
}

function addTetradCircleList(vectorLayer, list)
{
	for (var i = 0; i < list.length; i++)
	{
		var fillColor = convertIndexToColour(list[i][2]);
//		addTetradCircle(vectorLayer, list[i][0], list[i][1], fillColor);
		addTetradSquare(vectorLayer, list[i][0], list[i][1], fillColor);
	}
}
function addTetradCircle(vectorLayer, left, bottom, fillColor)
{
	left -= left % 2000;
	bottom -= bottom % 2000;
	var x = left + 1000;
	var y = bottom + 1000;
	fillColor = (fillColor != null) ? fillColor : '#00FF00';
	
	/*
	* Define polygon style
	*/
	var style_green =
	{
		strokeColor: "#000000",
		strokeOpacity: 1,
		strokeWidth: 2,
		fillColor: fillColor,
		fillOpacity: 0.6
	};
	// Define polygon area
	var origin = new OpenLayers.Geometry.Point(x, y);
	// create a polygon feature from a list of points
	var circle = OpenLayers.Geometry.Polygon.createRegularPolygon(origin, 1000, 30, 0);
	var polygonFeature = new OpenLayers.Feature.Vector(circle, null, style_green);
	vectorLayer.addFeatures([polygonFeature]);
}

function addTetradSquare(vectorLayer, left, bottom, fillColor)
{
	left -= left % 2000;
	bottom -= bottom % 2000;
	var right = left + 2000;
	var top = bottom + 2000;
	fillColor = (fillColor != null) ? fillColor : '#00FF00';
	/*
	* Define polygon style
	*/
	var style_black =
	{
		strokeColor: "#000000",
		strokeOpacity: 1,
		strokeWidth: 2,
		fillColor: fillColor,
		fillOpacity: 0.6
	};
	// Define polygon area
	var points = new Array();
	points[0] = new OpenLayers.Geometry.Point(left, top);
	points[1] = new OpenLayers.Geometry.Point(right, top);
	points[2] = new OpenLayers.Geometry.Point(right, bottom);
	points[3] = new OpenLayers.Geometry.Point(left, bottom);
	// create a polygon feature from a list of points
	var linearRing = new OpenLayers.Geometry.LinearRing(points);
	var polygonFeature = new OpenLayers.Feature.Vector(linearRing, null, style_black);
	vectorLayer.addFeatures([polygonFeature]);

}


function addTenKmGridList(vectorLayer, list, resolution)
{
	for (var i = 0; i < list.length; i++)
	{
		addTenKmGridSquare(vectorLayer, list[i][0], list[i][1], resolution);
	}
}

function addTenKmGridSquare(vectorLayer, left, bottom, resolution)
{
	if (left == 620000)
	console.info("left=" + left + ", bottom=" + bottom + ", right=" + right + ", top=" + top);
	left -= left % resolution;
	bottom -= bottom % resolution;
	var right = left + resolution;
	var top = bottom + resolution;
	/*
	* Define polygon style
	*/
	var style_black =
	{
		strokeColor: "#000000",
		strokeOpacity: 1,
		strokeWidth: 1,
		fillOpacity: 0.0001
	};
	// Define polygon area
	var points = new Array();
	points[0] = new OpenLayers.Geometry.Point(left, top);
	points[1] = new OpenLayers.Geometry.Point(right, top);
	points[2] = new OpenLayers.Geometry.Point(right, bottom);
	points[3] = new OpenLayers.Geometry.Point(left, bottom);
	// create a polygon feature from a list of points
	var linearRing = new OpenLayers.Geometry.LinearRing(points);
	var polygonFeature = new OpenLayers.Feature.Vector(linearRing, null, style_black);
	vectorLayer.addFeatures([polygonFeature]);

}

function addTenKmGreyList(vectorLayer, list)
{
	for (var i = 0; i < list.length; i++)
	{
		addTenKmGreySquare(vectorLayer, list[i][0], list[i][1]);
	}
}

function addTenKmGreySquare(vectorLayer, left, bottom)
{
	var right = left + 10000;
	var top = bottom + 10000;
	/*
	* Define polygon style
	*/
	var style_black =
	{
		strokeColor: "#000000",
		strokeOpacity: 0.4,
		strokeWidth: 2,
		fillColor: "#000000",
		fillOpacity: 0.4
	};
	// Define polygon area
	var points = new Array();
	points[0] = new OpenLayers.Geometry.Point(left, top);
	points[1] = new OpenLayers.Geometry.Point(right, top);
	points[2] = new OpenLayers.Geometry.Point(right, bottom);
	points[3] = new OpenLayers.Geometry.Point(left, bottom);
	// create a polygon feature from a list of points
	var linearRing = new OpenLayers.Geometry.LinearRing(points);
	var polygonFeature = new OpenLayers.Feature.Vector(linearRing, null, style_black);
	vectorLayer.addFeatures([polygonFeature]);

}

function addTenKmShadedList(vectorLayer, list, fillColor)
{
	for (var i = 0; i < list.length; i++)
	{
		addTenKmShaded(vectorLayer, list[i][0], list[i][1], fillColor);
	}
}

function addTenKmShaded(vectorLayer, left, bottom, fillColor)
{
	var right = left + 10000;
	var top = bottom + 10000;
	/*
	* Define polygon style
	*/
	var style_black =
	{
		strokeColor: "#000000",
		strokeOpacity: 0.4,
		strokeWidth: 1,
		fillColor: fillColor,
		fillOpacity: 0.4
	};
	// Define polygon area
	var points = new Array();
	points[0] = new OpenLayers.Geometry.Point(left, top);
	points[1] = new OpenLayers.Geometry.Point(right, top);
	points[2] = new OpenLayers.Geometry.Point(right, bottom);
	points[3] = new OpenLayers.Geometry.Point(left, bottom);
	// create a polygon feature from a list of points
	var linearRing = new OpenLayers.Geometry.LinearRing(points);
	var polygonFeature = new OpenLayers.Feature.Vector(linearRing, null, style_black);
	vectorLayer.addFeatures([polygonFeature]);

}
