					var xmlHttpInfo = null;
					var map = null;
					var markerManager = null;
					var centered = false;
					var lastMarker = null;
					
					/*
					var allmarkers = [];
					allmarkers.length = 0;
					*/
					
					function loadMapForGroup()
					{
				    	if( GBrowserIsCompatible() )
				    	{
				        	Event.observe(window, "unload", GUnload );
				    		map = new GMap2( document.getElementById( "map" ) );
				    		GEvent.addListener( map, "load", function()
							{
								lastLocationGroup();
							});		
				    		map.addControl(new GSmallMapControl());
				    		map.addControl(new GMapTypeControl());
				    		
				    		var firstCenter = new GLatLng( 51.8223265, 5.87103937 );
				    		map.setCenter( firstCenter, 8 );
				    		// NB creating the markermanager must be AFTER setCenter (loads the map)
				    		markerManager = new GMarkerManager(map, {trackMarkers:true});
				    		
					    }
				    }
				    
				    function loadMapForUser()
					{
				    	if( GBrowserIsCompatible() )
				    	{
				        	Event.observe(window, "unload", GUnload );
				    		map = new GMap2( document.getElementById( "map" ) );
				    		GEvent.addListener( map, "load", 	
				    							function()
				    							{
							  						lastLocationUser();
												}
											  );		
				    		
				    		map.addControl(new GSmallMapControl());
				    		map.addControl(new GMapTypeControl());
				    		
				    		var firstCenter = new GLatLng( 51.8223265, 5.87103937 );
				    		map.setCenter( firstCenter, 8 );
					    }
				    }
					
					function lastLocationUser()
					{
						//var deviceUidObj = document.getElementById( "device_uid" );
						//if( deviceUidObj )
						//{
							xmlHttpInfo = null;
							xmlHttpInfo = new XMLHttpRequest();
							xmlHttpInfo.onreadystatechange = onLastLocationUser;
							
							xmlHttpInfo.open( 'POST', './mapsDataFetcher.php', true );
							xmlHttpInfo.setRequestHeader('Content-Type', 'text/xml');
							
							var xmlString = '\<\?xml version="1.0" encoding="UTF-8" standalone="yes" \?\><webservice>'
							xmlString += '<action>showUserLastLocation</action>';
							xmlString += '<gps_uid>' + gps_uid_global + '</gps_uid>';
							xmlString += '</webservice>';
							xmlHttpInfo.send( xmlString );
						//}
					}
					
					function lastLocationGroup()
					{
						xmlHttpInfo = null;
						xmlHttpInfo = new XMLHttpRequest();
						xmlHttpInfo.onreadystatechange = onLastLocationGroup;
						
						xmlHttpInfo.open( 'POST', './mapsDataFetcher.php', true );
						xmlHttpInfo.setRequestHeader('Content-Type', 'text/xml');
						
						var xmlString = '\<\?xml version="1.0" encoding="UTF-8" standalone="yes" \?\><webservice>'
						xmlString += '<action>showAllKnownUsersLastLocation</action>';
						xmlString += '</webservice>';
						xmlHttpInfo.send( xmlString );
					}
					
					function getIcon( live )
					{
						var icon = new GIcon(); 
					    if( live == "true" )
					    {
						    icon.image = '../../images/maps/darkgreen_MarkerO.png';
						    icon.shadow = '../../images/darkgreen_MarkerO.png';
					    }
					    else
					    {
					        icon.image = '../../images/maps/brown_MarkerO.png';
						    icon.shadow = '../../images/brown_MarkerO.png';
					    }
					    icon.iconSize = new GSize(20, 34);
					    icon.shadowSize = new GSize(20,34);
					    icon.iconAnchor = new GPoint(10,34);
					    icon.infoWindowAnchor = new GPoint(5, 1);
					   	
					   	return( icon )				
					}
					
					function showMarkerForUser(userName)
					{
							alert( userName );
					}
					
					function getListHtml( userName, live, gps_uid )
					{
						var html = "";
						var imagename = "brown_MarkerO.png";
						if( live == "true" )
						{
							imagename = "darkgreen_MarkerO.png";
						}
						html += "<img src='../../images/maps/" + imagename + "' height='17px'/>";
						html += "&nbsp;<a href='./maps.php?gps_uid=" + gps_uid + "'><span style='font-size:12pt;'>" + userName + "</span><br /></a>";
						return( html );
					}
					
					function onLastLocationUser()
					{
						if( xmlHttpInfo.readyState == 4 )
						{
						    if( xmlHttpInfo.status == 200 )
						    {
								if( map )
								{
									var markers = xmlHttpInfo.responseXML.selectNodes( "/webservice/response/markers/marker" );
  									var listHTML = "<b>Users</b><br /><br />";
  									
									var i = 0;
									var lat = XmlNodeGetText( findSubNode( markers.item(i), "lat" ) );
    								var long = XmlNodeGetText( findSubNode( markers.item(i), "long" ) );
    								var live = XmlNodeGetText( findSubNode( markers.item(i), "live" ) );
									/*
									console.log( "lat: " + lat );
									console.log( "long: " + long );
									*/
									if( lat && long )
									{
										var punt = new GLatLng(lat,long);
										if( !centered )
										{
											map.setCenter( punt, 16 );
											centered = true;
										}
										
										if( lastMarker )
											map.removeOverlay( lastMarker );
										
										var icon = getIcon( live );
										lastMarker = new GMarker( punt, icon );
										
										map.addOverlay( lastMarker );
										
										var userName = XmlNodeGetText( findSubNode( markers.item(i), "name" ) );
										var userLastSeen = XmlNodeGetText( findSubNode( markers.item(i), "datetime" ) );
										
										var markerHtml = userName + "<br />" + userLastSeen;
										lastMarker.openInfoWindowHtml( markerHtml );
									}
									
								}
								else
								{
									// console.log("map object not found");
								}
								// console.log("again");
								window.setTimeout( "lastLocationUser()", 5000 );
							}
						}
								
					}
						
					function onLastLocationGroup()
					{
						if( xmlHttpInfo.readyState == 4 )
						{
						    if( xmlHttpInfo.status == 200 )
						    {
								if( map )
								{
									var markers = xmlHttpInfo.responseXML.selectNodes( "/webservice/response/markers/marker" );
  									var listHTML = "<b>Users</b><br /><br />";
  									for (var i = 0; i < markers.length; i++)
  									{
    									var lat = XmlNodeGetText( findSubNode( markers.item(i), "lat" ) );
    									var long = XmlNodeGetText( findSubNode( markers.item(i), "long" ) );
    									var live = XmlNodeGetText( findSubNode( markers.item(i), "live" ) );
    									var gps_uid = XmlNodeGetText( findSubNode( markers.item(i), "gps_uid" ) );
    									var point = new GLatLng( lat, long );
                            			
                            			if( !centered )
										{
											map.setCenter( point );
											centered = true;
										}
										
										// if( lastMarker )
										//	map.removeOverlay( lastMarker );
										
										var icon = getIcon( live );
										lastMarker = new GMarker( point, icon );
										markerManager.addMarker(lastMarker,0,17);
										
										// map.addOverlay( lastMarker );
										
										var userName = XmlNodeGetText( findSubNode( markers.item(i), "name" ) );
										var userLastSeen = XmlNodeGetText( findSubNode( markers.item(i), "datetime" ) );
										listHTML += getListHtml( userName, live, gps_uid );
										// var markerHtml = userName + "<br />" + userLastSeen;
										// lastMarker.openInfoWindowHtml( markerHtml );
										
										
										
    								}
    								document.getElementById("info").innerHTML = listHTML;
								}
								else
								{
									// console.log("map object not found");
								}
								
								
								// window.setTimeout( "getLastLocations()", 5000 );
							}
						}
					}
					