// Global variables -----------------------------------------------------------
var osMap, osMarkers, osVectorLayer, poiPos, icnBed, icnFilm,
  lati = 53.060406, loni = -2.0891577, togZ = 0,
  gridProj = new OpenSpace.GridProjection(),
  num = ["zero","one","two","three","four","five","six","seven","eight","nine"];

// Initialise maps and set up event handlers and map objects ------------------
function mapLoad()
{
	// Set up the initial sizes of the page elements
	setSizes(pageWidth(),pageHeight());
	
	// TODO - dodgy fix for IE8 exit error
	OpenSpace.Control.SmallMapControl.prototype.destroy = function() {}
	
	// Init code for OS map
	osMap = new OpenSpace.Map('osmap', {controls: []});
	osMap.removeLayer(osMap.getMarkerLayer());
	osMap.removeLayer(osMap.getVectorLayer());
	osMap.addControl(new OpenLayers.Control.Navigation());
	osMap.addControl(new OpenSpace.Control.SmallMapControl());
	osMap.addControl(new OpenSpace.Control.CopyrightCollection());
	osMap.addControl(new OpenSpace.Control.PoweredBy());
	osMap.zoomTo(1);
	osMap.setCenter(osPos(lati,loni));

	osVectorLayer = new OpenLayers.Layer.Vector("Vector Layer");
	osMarkers = new OpenLayers.Layer.Markers("Markers"); 
	osMap.addLayer(osVectorLayer);
	osMap.addLayer(osMarkers);

	// Create icons for film and overnight stops
	var sze = new OpenLayers.Size(25,22);			// 60,30
	var off = new OpenLayers.Pixel(-sze.w/2,-sze.h/2); 
	icnBed = new OpenSpace.Icon("images/camera1.gif", sze, off, null,
    new OpenLayers.Pixel(0,0) ),
	icnFilm = new OpenSpace.Icon("images/camera2.gif", sze, off, null,
    new OpenLayers.Pixel(0,0) );
	
	// Add route to map
	var mileage = 0;
	if( rtePts.length > 0 )
	{
		// Set up track start and end markers 
		var sze = new OpenLayers.Size(30,25);
		var off = new OpenLayers.Pixel(-sze.w/2,-sze.h/2); 
		var osIconStart = new OpenLayers.Icon('images/start.gif', sze, off);
		var startMarker = new OpenLayers.Marker(osPos(rtePts[0],rtePts[1]), 
			osIconStart );

		var sze = new OpenLayers.Size(30,25);
		var off = new OpenLayers.Pixel(-sze.w/2,-sze.h/2); 
		var osIconEnd = new OpenLayers.Icon('images/end.gif', sze, off);
		var endMarker = new OpenLayers.Marker(osPos(rtePts[rtePts.length-2],
			rtePts[rtePts.length-1]), osIconEnd );

		osMarkers.addMarker(startMarker);
		osMarkers.addMarker(endMarker);

		// Create and display track
		var cnt = rtePts.length;
		var osRte = [];
		var lStyle = osLineStyle = { strokeColor:  "#0000FF",
		  strokeOpacity: 0.9, strokeWidth: 3 }; 

		for( var i=0; i < cnt; i+=2 )
		{	
			var oll = osPos(rtePts[i], rtePts[i+1]);
			osRte.push( new OpenLayers.Geometry.Point( 
			  oll.getEasting(), oll.getNorthing() ) );
		}
		var lineString = new OpenLayers.Geometry.LineString(osRte); 
		var lineFeature = new OpenLayers.Feature.Vector(lineString, null, 
		  lStyle);

		osVectorLayer.addFeatures([lineFeature]);
		mileage = Math.round((lineString.getLength()/1000)/1.6093);
	}
	else
	{
		// Position the start marker on Nick's street
		var sze = new OpenLayers.Size(30,25);
		var off = new OpenLayers.Pixel(-sze.w/2,-sze.h/2); 
		var osIconStart = new OpenLayers.Icon('images/start.gif', sze, off);
		var startMarker = new OpenLayers.Marker(osPos(51.475240,-2.600800), 
			osIconStart );
		osMarkers.addMarker(startMarker);
	}

	// Add markers to map
	if( poi.length > 0 )
	{
		for( var i=poi.length-1; i >= 0; i-- )
		{
			var p = poi[i].split('|');
			var pos = new OpenSpace.MapPoint(p[4],p[5]);
			addPoi( p[0], p[2], p[3], p[1], pos );
		}
	}

	// Register OS event listeners
	osMap.events.register("click", osMap, oClick);
	if( adminPage == 1 )
	{
		osMap.events.register("mousedown", osMap, oRClick);		// hack to catch right click
	}

	// fill in number of days and mileage
	var today = new Date();
	var startDate = new Date(2009,5,21);	// 21 June 2009
	var day_ms = 24*60*60*1000;
	//var numDays = Math.ceil((today.getTime() - startDate.getTime())/day_ms);
	//numDays = (numDays < 0) ? 0: numDays;
	var numDays = 105;

	//document.getElementById('numdays').innerHTML = numDays;
	//document.getElementById('mileage').innerHTML = mileage;
	//document.getElementById('numdays').value = numDays;
	//document.getElementById('mileage').value = mileage;

	for( var i=1; i < 5; i++ )
	{
		var n = Math.round(((numDays/10) - Math.floor(numDays/10)) * 10,0);
		numDays = Math.floor(numDays/10);
		document.getElementById('di'+i).src = 'images/'+num[n]+'.gif';
		n = Math.round(((mileage/10) - Math.floor(mileage/10)) * 10,0);
		mileage = Math.floor(mileage/10);
		document.getElementById('mi'+i).src = 'images/'+num[n]+'.gif';
	}
}
window.onload = mapLoad;

// Function to be called on page resize ---------------------------------------
function resize()
{
	setSizes(pageWidth(),pageHeight());
}
window.onresize = resize;

function setSizes(pw,ph)
{
	// set the sizes of the page elements
	var o = document.getElementById('osmap');
	o.style.left   = '1px';
	o.style.top    = '1px';
	if( adminPage == 1 )
	{
		var p = document.getElementById('upload');
		o.style.height = (ph-1) + 'px';
		o.style.width  = ((0.7*pw)-10) + 'px';
		p.style.height = (ph-18) + 'px';
		p.style.width  = ((0.3*pw)-10) + 'px';
	}
	else
	{
		o.style.height = (ph-3) + 'px';
		o.style.width  = ((pw-3) > 0 ? (pw-3) : 0) + 'px';
	}
}
