@Override
	public void delProperRoom(Room R)
	{
		if(R==null) return;
		if(R instanceof GridLocale)
			((GridLocale)R).clearGrid(null);
		synchronized(properRooms)
		{
			if(R.roomID().length()==0)
			{
				if((R.getGridParent()!=null)&&(R.getGridParent().roomID().length()>0))
				{
					final String id=R.getGridParent().getGridChildCode(R);
					delProperRoomnumber(id);
					delMetroRoom(R);
				}
			}
			else
			if(properRooms.get(R.roomID())==R)
			{
				properRooms.remove(R.roomID());
				delMetroRoom(R);
				delProperRoomnumber(R.roomID());
			}
			else
			if(properRooms.containsValue(R))
			{
				for(final Map.Entry<String,Room> entry : properRooms.entrySet())
					if(entry.getValue()==R)
					{
						properRooms.remove(entry.getKey());
						delProperRoomnumber(entry.getKey());
					}
				delProperRoomnumber(R.roomID());
				delMetroRoom(R);
			}
		}
	}