﻿/// <reference path="VEJS/VeJavaScriptIntellisenseHelper.js" />

var map;

function pageLoad() {
	map = new VEMap("Div1");
	map.LoadMap(null,null,VEMapStyle.Aerial);
}

function visualise(ShapesArray) {

	var pointsArray;
	var shape;
				
	for (var i=0; i<ShapesArray.length; i++) {
	
		if (ShapesArray[i].length > 0) {

			if (ShapesArray[i].search(/^ *POLYGON/i) != -1) {
				pointsArray = drawShape(ShapesArray[i], /^ *POLYGON *\(\(/i, / *\)\) */);
				shape = new VEShape(VEShapeType.Polygon, pointsArray);
			}
			else if (ShapesArray[i].search(/^ *POINT/i) != -1) {
				pointsArray = drawShape(ShapesArray[i], /^ *POINT *\(/i, / *\) */);
				shape = new VEShape(VEShapeType.Pushpin, pointsArray);
			}
			else if (ShapesArray[i].search(/^ *LINESTRING/i) != -1) {
				pointsArray = drawShape(ShapesArray[i], /^ *LINESTRING *\(/i, / *\) */);
				shape = new VEShape(VEShapeType.Polyline, pointsArray);
			}
			
			map.AddShape(shape);
			
			if (i==0) {
				map.SetMapView(shape.GetPoints());
			}
		}
	}
}

function drawShape(ShapeString, StartRegex, EndRegex) {

	var shapeArray = cleanupWKT(ShapeString, StartRegex, EndRegex);	
	
	var pointsArray = new Array();
	var tempLatLon;

	for (var i=0; i<shapeArray.length; i++)
	{
		tempLatLon = shapeArray[i].split(/ /);
		pointsArray[i] = new VELatLong(parseFloat(tempLatLon[1]), parseFloat(tempLatLon[0]));
	}
	
	return pointsArray;	
}

function cleanupWKT(ShapeString, StartRegex, EndRegex) {

	var cleanedString = ShapeString.replace(StartRegex, "");
	cleanedString = cleanedString.replace(EndRegex, "");
	var shapeArray = cleanedString.split(",");
	
	return shapeArray;	
}