Index: /gs3-extensions/atlas-src/trunk/src/org/greenstone/client/GS3MapLibrary.java
===================================================================
--- /gs3-extensions/atlas-src/trunk/src/org/greenstone/client/GS3MapLibrary.java	(revision 22276)
+++ /gs3-extensions/atlas-src/trunk/src/org/greenstone/client/GS3MapLibrary.java	(revision 22277)
@@ -11,7 +11,4 @@
 import com.google.gwt.event.dom.client.ClickEvent;
 import com.google.gwt.event.dom.client.ClickHandler;
-import com.google.gwt.event.dom.client.MouseDownEvent;
-import com.google.gwt.event.dom.client.MouseDownHandler;
-import com.google.gwt.event.dom.client.MouseEvent;
 import com.google.gwt.event.dom.client.MouseMoveEvent;
 import com.google.gwt.event.dom.client.MouseMoveHandler;
@@ -129,6 +126,7 @@
 
 	protected ArrayList<ArrayList<Place>> _currentMultiPlaces = null;
-
-	protected HashMap<String, Place> _chosenPlaces = new HashMap<String, Place>();
+	protected ArrayList<String> _removedPlaces = new ArrayList<String>();
+	
+	protected HashMap<String, Place> _chosenPlaces = new HashMap<String, Place>();	
 
 	protected HandlerRegistration _fishEyeHandlerReg = null;
@@ -1595,5 +1593,5 @@
 
 				//If a different place with this name has been chosen then don't use it
-				if (_chosenPlaces.containsKey(p.getName()) && !_chosenPlaces.get(p.getName()).equals(p))
+				if ((_chosenPlaces.containsKey(p.getName()) && !_chosenPlaces.get(p.getName()).equals(p)) || _removedPlaces.contains(p.getName()))
 				{
 					continue;
@@ -2325,6 +2323,6 @@
 			}
 		}));
-
-		final MenuItem prevMenuItem = new MenuItem("Remove all highlights", new ClickHandler()
+		
+		menuItems.add(new MenuItem("Remove all highlights", new ClickHandler()
 		{
 			public void onClick(ClickEvent event)
@@ -2350,8 +2348,31 @@
 				_currentDocumentMenu.hideMenu();
 			}
+		}));
+		
+		final MenuItem prevMenuItem = new MenuItem("Remove this place", new ClickHandler()
+		{
+			public void onClick(ClickEvent event)
+			{
+				_removedPlaces.add(_selectedPlaceName);
+				_currentDocumentMenu.hideMenu();
+				
+				JsArray<Element> textPlaces = getElementsByTagName("span");
+
+				//Add the place spans to the array
+				for (int j = 0; j < textPlaces.length(); j++)
+				{
+					Element e = textPlaces.get(j);
+					if (e.getAttribute("class").equals("place") && e.getInnerText().equals(_selectedPlaceName))
+					{
+						e.getParentElement().insertBefore(e.getFirstChild(), e);
+					}
+				}
+				
+				addPlacesToMap(_currentPlaces, "#FFFFFF", "#00FF00", false);
+			}
 		});
 		menuItems.add(prevMenuItem);
 
-		menuItems.add(new MenuItem("Choose correct place           >", new ClickHandler()
+		menuItems.add(new MenuItem("Choose correct place >", new ClickHandler()
 		{
 			public void onClick(ClickEvent event)
@@ -2359,4 +2380,5 @@
 				logToConsole("MARKER!");
 				ArrayList<MenuItem> places = new ArrayList<MenuItem>();
+
 				ArrayList<Place> matchingPlaces = new ArrayList<Place>();
 
@@ -2368,5 +2390,5 @@
 					}
 				}
-
+				
 				for (final Place p : matchingPlaces)
 				{
@@ -2425,5 +2447,29 @@
 				placeMenu.showMenu();
 			}
-		}));
+		}){
+			public boolean condition()
+			{
+				ArrayList<Place> matchingPlaces = new ArrayList<Place>();
+
+				if(_currentPlaces == null || _currentPlaces.size() == 0)
+				{
+					return false;
+				}
+				
+				for (Place p : _currentPlaces)
+				{
+					if (p.getName().equals(_selectedPlaceName))
+					{
+						matchingPlaces.add(p);
+					}
+				}
+				
+				if(matchingPlaces.size() > 1)
+				{
+					return true;
+				}
+				return false;
+			}
+		});
 
 		documentMenu.addMenuItems(menuItems);
@@ -2616,4 +2662,5 @@
 			public void run()
 			{
+				_currentDocumentMenu.refreshMenu();
 				_currentDocumentMenu.moveMenu(x, y);
 				_currentDocumentMenu.showMenu();
Index: /gs3-extensions/atlas-src/trunk/src/org/greenstone/client/Menu.java
===================================================================
--- /gs3-extensions/atlas-src/trunk/src/org/greenstone/client/Menu.java	(revision 22276)
+++ /gs3-extensions/atlas-src/trunk/src/org/greenstone/client/Menu.java	(revision 22277)
@@ -13,4 +13,5 @@
 public class Menu
 {
+	protected Element _parent = null;
 	protected ArrayList<Menu> _childMenus = new ArrayList<Menu>();
 	protected ArrayList<MenuItem> _menuItems = new ArrayList<MenuItem>();
@@ -21,4 +22,5 @@
 	public Menu(Element parent, MouseOverHandler onMouseOver, MouseOutHandler onMouseOut)
 	{
+		_parent = parent;
     	parent.appendChild(_menuDiv.getElement());
     	_menuDiv.getElement().getStyle().setProperty("background", "#FFFFFF");
@@ -32,7 +34,12 @@
 	public void addMenuItems(ArrayList<MenuItem> menuItems)
 	{
+		_menuItems = menuItems;
 		int maxWidth = -1;
     	for(int i = 0; i < menuItems.size(); i++)
     	{
+    		if(!menuItems.get(i).condition())
+    		{
+    			continue;
+    		}
     		Element item = menuItems.get(i).getMenuElement();
     		item.getStyle().setProperty("background", "#FFFFFF");
@@ -69,7 +76,5 @@
     	{
 			public void run() 
-			{
-				//GS3MapLibrary.logToConsole("Menu height = " + _menuDiv.getOffsetHeight() + ", Div height = " + GS3MapLibrary.getElementById("GSContent").getOffsetHeight() + ", Top = " + GS3MapLibrary.getElementById("GSContent").getAbsoluteTop());
-				
+			{				
 				if (_menuDiv.getOffsetHeight() > GS3MapLibrary.getElementById("GSContent").getOffsetHeight())
 				{
@@ -80,10 +85,5 @@
 				else if(y + _menuDiv.getOffsetHeight() > GS3MapLibrary.getElementById("GSFooter").getAbsoluteTop())
 		    	{
-		    		//GS3MapLibrary.logToConsole("TRUE, " + (y + _menuDiv.getOffsetHeight()) + " is greater than " + GS3MapLibrary.getElementById("GSFooter").getAbsoluteTop());
 		    		_menuDiv.getElement().getStyle().setProperty("top", (y - ( y + _menuDiv.getOffsetHeight() - GS3MapLibrary.getElementById("GSFooter").getAbsoluteTop()) + "px"));
-		    	}
-		    	else
-		    	{
-		    		//GS3MapLibrary.logToConsole("FALSE, " + (y + _menuDiv.getOffsetHeight()) + " is less than " + GS3MapLibrary.getElementById("GSFooter").getAbsoluteTop());
 		    	}
 				_menuDiv.setVisible(true);
@@ -111,4 +111,15 @@
 	}
 	
+	public void refreshMenu()
+	{
+		_parent.removeChild(_menuDiv.getElement());
+		_menuDiv = new HTML();
+    	_parent.appendChild(_menuDiv.getElement());
+    	_menuDiv.getElement().getStyle().setProperty("background", "#FFFFFF");
+    	_menuDiv.getElement().getStyle().setProperty("padding", "2px");
+    	_menuDiv.getElement().getStyle().setProperty("position", "absolute");
+    	addMenuItems(_menuItems);
+	}
+	
 	public void showMenu()
 	{
Index: /gs3-extensions/atlas-src/trunk/src/org/greenstone/client/MenuItem.java
===================================================================
--- /gs3-extensions/atlas-src/trunk/src/org/greenstone/client/MenuItem.java	(revision 22276)
+++ /gs3-extensions/atlas-src/trunk/src/org/greenstone/client/MenuItem.java	(revision 22277)
@@ -19,4 +19,9 @@
 	}
 	
+	public boolean condition()
+	{
+		return true;
+	}
+	
 	public ClickHandler getClickHandler()
 	{
Index: /gs3-extensions/atlas-src/trunk/src/org/greenstone/client/TemporaryFrame.java
===================================================================
--- /gs3-extensions/atlas-src/trunk/src/org/greenstone/client/TemporaryFrame.java	(revision 22276)
+++ /gs3-extensions/atlas-src/trunk/src/org/greenstone/client/TemporaryFrame.java	(revision 22277)
@@ -38,5 +38,5 @@
 			public void run()
 			{
-				if (timerCount++ > 25)
+				if (timerCount++ > 10)
 				{
 					_doneLoading = true;
Index: /gs3-extensions/atlas-src/trunk/src/org/greenstone/server/PageScanner.java
===================================================================
--- /gs3-extensions/atlas-src/trunk/src/org/greenstone/server/PageScanner.java	(revision 22276)
+++ /gs3-extensions/atlas-src/trunk/src/org/greenstone/server/PageScanner.java	(revision 22277)
@@ -7,6 +7,4 @@
 
 import org.greenstone.client.Place;
-
-import com.google.apphosting.utils.servlet.DatastoreViewerServlet.Page;
 
 public class PageScanner
