﻿// Map Variables
var map;
// highlighted circle object 
var highlightCircle;
// current marker object
var currentMarker;
// center Gpoint 
var centerPoint;
// Gpoint to set a radius to draw a circle
var radiusPoint;

// Default coordinates to start from
var defaultLat = 51.514298;
var defaultLong = -0.107803;
// radius of the circle (equals about 200m)
var defaultRadius = 0.002
// scales the random coordinates value. The more is the value the less is the jump size.
var defaultJumpScale = 10;

// current index of person	
var index = 0;
// array size
var peoplecount = 6;
var arrayNames = new Array();
arrayNames[0] = 'Peter Smith';
arrayNames[1] = 'Debora Davidson';
arrayNames[2] = 'Fiona Crawshaw';
arrayNames[3] = 'Garry Taylor';
arrayNames[4] = 'Colin Cross';
arrayNames[5] = 'Micheal Smith';

var arrayMobiles = new Array();
arrayMobiles[0] = '0784578XXXX';
arrayMobiles[1] = '0788578XXXX';
arrayMobiles[2] = '0738545XXXX';
arrayMobiles[3] = '0726548XXXX';
arrayMobiles[4] = '0728548XXXX';
arrayMobiles[5] = '0758348XXXX';

function load() {
  if (GBrowserIsCompatible()) {
    map = new GMap2(document.getElementById('map'));
    centerPoint = new GLatLng(defaultLat + Math.random()/defaultJumpScale, defaultLong + Math.random()/defaultJumpScale);
    radiusPoint = new GLatLng(centerPoint.lat() + defaultRadius, centerPoint.lng());
    map.setCenter(centerPoint, 15);  
    //map.addControl(new GLargeMapControl());
    map.addControl(new GLargeMapControl3D()); 
    map.addControl(new GMapTypeControl());
    map.addControl(new GScaleControl());
    map.setMapType(G_NORMAL_MAP);

    moveToNewPoint();    
  }
}


function highlightCurrentMarker(){   
      var mapNormalProj = map.getCurrentMapType().getProjection();
      var markerPoint = currentMarker.getPoint();
      var polyPoints = Array();
            
      if (highlightCircle) { map.removeOverlay(highlightCircle);  }

      var mapZoom = map.getZoom();
      var clickedPixel = mapNormalProj.fromLatLngToPixel(markerPoint, mapZoom);
      var polySmallRadius = 35;
      var polyNumSides = 40;
      var polySideLength = 9;
      var centerPt = mapNormalProj.fromLatLngToPixel(centerPoint, mapZoom);
      var radiusPt = mapNormalProj.fromLatLngToPixel(radiusPoint, mapZoom);

      for (var a = 0; a<(polyNumSides+1); a++) 
      {
	    var aRad = polySideLength * a * (Math.PI/180);
	    var polyRadius =  Math.floor(Math.sqrt(Math.pow((centerPt.x-radiusPt.x),2) + Math.pow((centerPt.y-radiusPt.y),2))); 
	    var pixelX = clickedPixel.x + polyRadius * Math.cos(aRad);
	    var pixelY = clickedPixel.y + polyRadius * Math.sin(aRad);
	    var polyPixel = new GPoint(pixelX,pixelY);
	    var polyPoint = mapNormalProj.fromPixelToLatLng(polyPixel,mapZoom);
	    polyPoints.push(polyPoint);
      }
      // Using GPolygon(points,  strokeColor?,  strokeWeight?,  strokeOpacity?,  fillColor?,  fillOpacity?)
      highlightCircle = new GPolygon(polyPoints, '#000000', 2, 0.0, '#7fd3f7', 0.5);
      map.addOverlay(highlightCircle);
}


// Randomly moves to a new point in England
function moveToNewPoint()
{
	map.clearOverlays();
    centerPoint = new GLatLng(defaultLat + Math.random()/defaultJumpScale, defaultLong + Math.random()/defaultJumpScale);
    radiusPoint = new GLatLng(centerPoint.lat() + defaultRadius, centerPoint.lng());
    
	index += 1;  //Math.round(Math.random() * peoplecount);
	if (index >= peoplecount){ index = 0;}
	map.panTo(centerPoint);

    GEvent.addListener(map, 'zoomend', function() {  highlightCurrentMarker();	});
    var markerOptions = { title: arrayNames[index] };

    var marker = new GMarker(centerPoint, markerOptions);
    var now = new Date();    
    var nowString = now.toLocaleDateString() + ' ' + checkTimeValue(now.getHours()) + ':' + checkTimeValue(now.getMinutes()); 
	var infostring = "<div style=\'color:#474747;\'><b>" + arrayNames[index] + "</b><br />" + nowString
	    + "<br /><b>Mobile: </b>" + arrayMobiles[index] + "<br/></div>";
	    //<b>Lat:</b>&nbsp;" + centerPoint.lat().toFixed(6) +
	    //"  <b>Lon:</b>&nbsp;" + centerPoint.lng().toFixed(6) + "
	    
    // This line highlights the marker when it's clicked    
    GEvent.addListener(marker, 'click', function() {currentMarker = marker; highlightCurrentMarker(); });
	// This line highlights the marker when its moused over
    GEvent.addListener(marker, 'mouseover', function() {currentMarker = marker; highlightCurrentMarker(); });
        
    map.addOverlay(marker);
    currentMarker = marker;  
	window.setTimeout(function(){highlightCurrentMarker();}, 0);
	window.setTimeout(function(){marker.openInfoWindowHtml( infostring );}, 0);

	window.setTimeout(function(){moveToNewPoint();},5000);
}

function checkTimeValue(timestring) {

    if (timestring.toString().length == 1) {
        timestring = '0' + timestring;
    }
    return timestring
}

