Index: /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelChan.java
===================================================================
--- /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelChan.java	(revision 26988)
+++ /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelChan.java	(revision 26989)
@@ -61,5 +61,5 @@
 			}
 			if (safeWaterButton.isSelected()) {
-				dlg.mark.setCategory(Cat.UNKNOWN);
+				dlg.mark.setCategory(Cat.NONE);
 				if (panelSaw.shapes.containsKey(shp)) {
 					panelSaw.shapes.get(shp).doClick();
Index: /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelFog.java
===================================================================
--- /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelFog.java	(revision 26988)
+++ /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelFog.java	(revision 26989)
@@ -2,18 +2,144 @@
 
 import javax.swing.*;
+
 import java.awt.*;
 import java.awt.event.*;
+import java.util.EnumMap;
 
 import oseam.Messages;
 import oseam.dialogs.OSeaMAction;
-
+import oseam.seamarks.SeaMark.*;
 
 public class PanelFog extends JPanel {
 
 	private OSeaMAction dlg;
+	private ButtonGroup fogButtons = new ButtonGroup();
+	public JRadioButton noFogButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/OffButton.png")));
+	public JRadioButton yesFogButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/OffButton.png")));
+	public JRadioButton hornButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/OffButton.png")));
+	public JRadioButton sirenButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/OffButton.png")));
+	public JRadioButton diaButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/OffButton.png")));
+	public JRadioButton bellButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/OffButton.png")));
+	public JRadioButton whisButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/OffButton.png")));
+	public JRadioButton gongButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/OffButton.png")));
+	public JRadioButton explosButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/OffButton.png")));
+	private EnumMap<Fog, JRadioButton> fogs = new EnumMap<Fog, JRadioButton>(Fog.class);
+	private ActionListener alFog = new ActionListener() {
+		public void actionPerformed(java.awt.event.ActionEvent e) {
+			if (dlg.mark != null) {
+				for (Fog fog : fogs.keySet()) {
+					JRadioButton button = fogs.get(fog);
+					if (button.isSelected()) {
+						dlg.mark.setFogSound(fog);
+						button.setBorderPainted(true);
+					} else
+						button.setBorderPainted(false);
+				}
+				dlg.mark.setFog(!noFogButton.isSelected());
+				dlg.mark.paintSign();
+			}
+		}
+	};
+	public JLabel groupLabel;
+	public JTextField groupBox;
+	private ActionListener alGroup = new ActionListener() {
+		public void actionPerformed(java.awt.event.ActionEvent e) {
+			if (dlg.mark != null)
+				dlg.mark.setFogGroup(groupBox.getText());
+		}
+	};
+	public JLabel periodLabel;
+	public JTextField periodBox;
+	private ActionListener alPeriod = new ActionListener() {
+		public void actionPerformed(java.awt.event.ActionEvent e) {
+			if (dlg.mark != null)
+				dlg.mark.setFogPeriod(periodBox.getText());
+		}
+	};
+	public JLabel seqLabel;
+	public JTextField seqBox;
+	private ActionListener alSeq = new ActionListener() {
+		public void actionPerformed(java.awt.event.ActionEvent e) {
+			if (dlg.mark != null)
+				dlg.mark.setFogSequence(seqBox.getText());
+		}
+	};
+	public JLabel rangeLabel;
+	public JTextField rangeBox;
+	private ActionListener alRange = new ActionListener() {
+		public void actionPerformed(java.awt.event.ActionEvent e) {
+			if (dlg.mark != null)
+				dlg.mark.setFogRange(rangeBox.getText());
+		}
+	};
 
 	public PanelFog(OSeaMAction dia) {
 		dlg = dia;
 		this.setLayout(null);
+		this.add(getFogButton(noFogButton, 0, 5, 27, 27, "NoFog", Fog.NONE), null);
+		this.add(getFogButton(yesFogButton, 0, 35, 27, 27, "FogSignal", Fog.UNKNOWN), null);
+		this.add(getFogButton(hornButton, 0, 65, 27, 27, "Horn", Fog.HORN), null);
+		this.add(getFogButton(sirenButton, 0, 95, 27, 27, "Siren", Fog.SIREN), null);
+		this.add(getFogButton(diaButton, 30, 5, 27, 27, "Diaphone", Fog.DIA), null);
+		this.add(getFogButton(bellButton, 30, 35, 27, 27, "Bell", Fog.BELL), null);
+		this.add(getFogButton(whisButton, 30, 65, 27, 27, "Whistle", Fog.WHIS), null);
+		this.add(getFogButton(explosButton, 30, 95, 27, 27, "Explosion", Fog.EXPLOS), null);
+
+		groupLabel = new JLabel(Messages.getString("Group"), SwingConstants.CENTER);
+		groupLabel.setBounds(new Rectangle(75, 0, 100, 20));
+		this.add(groupLabel, null);
+		groupBox = new JTextField();
+		groupBox.setBounds(new Rectangle(100, 20, 50, 20));
+		this.add(groupBox, null);
+		groupBox.addActionListener(alGroup);
+
+		periodLabel = new JLabel(Messages.getString("Period"), SwingConstants.CENTER);
+		periodLabel.setBounds(new Rectangle(75, 40, 100, 20));
+		this.add(periodLabel, null);
+		periodBox = new JTextField();
+		periodBox.setBounds(new Rectangle(100, 60, 50, 20));
+		this.add(periodBox, null);
+		periodBox.addActionListener(alPeriod);
+
+		seqLabel = new JLabel(Messages.getString("Sequence"), SwingConstants.CENTER);
+		seqLabel.setBounds(new Rectangle(75, 80, 100, 20));
+		this.add(seqLabel, null);
+		seqBox = new JTextField();
+		seqBox.setBounds(new Rectangle(100, 100, 50, 20));
+		this.add(seqBox, null);
+		seqBox.addActionListener(alSeq);
+
+		rangeLabel = new JLabel(Messages.getString("Range"), SwingConstants.CENTER);
+		rangeLabel.setBounds(new Rectangle(75, 120, 100, 20));
+		this.add(rangeLabel, null);
+		rangeBox = new JTextField();
+		rangeBox.setBounds(new Rectangle(100, 140, 50, 20));
+		this.add(rangeBox, null);
+		rangeBox.addActionListener(alRange);
+
+	}
+	
+	public void syncPanel() {
+		for (Fog fog : fogs.keySet()) {
+			JRadioButton button = fogs.get(fog);
+			if (dlg.mark.getFogSound() == fog) {
+				button.setBorderPainted(true);
+			} else
+				button.setBorderPainted(false);
+		}
+		groupBox.setText(dlg.mark.getFogGroup());
+		seqBox.setText(dlg.mark.getFogSequence());
+		periodBox.setText(dlg.mark.getFogPeriod());
+		rangeBox.setText(dlg.mark.getFogRange());
+	}
+
+	private JRadioButton getFogButton(JRadioButton button, int x, int y, int w, int h, String tip, Fog fog) {
+		button.setBounds(new Rectangle(x, y, w, h));
+		button.setBorder(BorderFactory.createLoweredBevelBorder());
+		button.setToolTipText(Messages.getString(tip));
+		button.addActionListener(alFog);
+		fogButtons.add(button);
+		fogs.put(fog, button);
+		return button;
 	}
 
Index: /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelHaz.java
===================================================================
--- /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelHaz.java	(revision 26988)
+++ /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelHaz.java	(revision 26989)
@@ -70,5 +70,5 @@
 				}
 				if (isolButton.isSelected()) {
-					dlg.mark.setCategory(Cat.UNKNOWN);
+					dlg.mark.setCategory(Cat.NONE);
 					dlg.panelMain.panelMore.panelPat.panelCol.blackButton.doClick();
 					dlg.mark.setColour(Ent.BODY, Col.BLACK);
@@ -198,5 +198,5 @@
 		eastButton.setBorderPainted(dlg.mark.getCategory() == Cat.CAM_EAST);
 		westButton.setBorderPainted(dlg.mark.getCategory() == Cat.CAM_WEST);
-		isolButton.setBorderPainted(dlg.mark.getCategory() == Cat.UNKNOWN);
+		isolButton.setBorderPainted(dlg.mark.getCategory() == Cat.NONE);
 		for (Shp shp : shapes.keySet()) {
 			JRadioButton button = shapes.get(shp);
Index: /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelLights.java
===================================================================
--- /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelLights.java	(revision 26988)
+++ /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelLights.java	(revision 26989)
@@ -100,5 +100,5 @@
 		this.add(trafficCatBox, null);
 		trafficCatBox.addActionListener(alTrafficCatBox);
-		addTCItem(Messages.getString("UKCategory"), Cat.UNKNOWN);
+		addTCItem(Messages.getString("UKCategory"), Cat.NONE);
 		addTCItem(Messages.getString("Traffic"), Cat.SIS_TRFC);
 		addTCItem(Messages.getString("PortControl"), Cat.SIS_PTCL);
@@ -117,5 +117,5 @@
 		this.add(warningCatBox, null);
 		warningCatBox.addActionListener(alWarningCatBox);
-		addWCItem(Messages.getString("UKCategory"), Cat.UNKNOWN);
+		addWCItem(Messages.getString("UKCategory"), Cat.NONE);
 		addWCItem(Messages.getString("Danger"), Cat.SIS_DNGR);
 		addWCItem(Messages.getString("Storm"), Cat.SIS_STRM);
Index: /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelLit.java
===================================================================
--- /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelLit.java	(revision 26988)
+++ /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelLit.java	(revision 26989)
@@ -2,4 +2,5 @@
 
 import javax.swing.*;
+
 import java.awt.*;
 import java.awt.event.*;
@@ -17,33 +18,86 @@
 	public JLabel groupLabel;
 	public JTextField groupBox;
+	private ActionListener alGroup = new ActionListener() {
+		public void actionPerformed(java.awt.event.ActionEvent e) {
+			String str = groupBox.getText();
+		}
+	};
 	public JLabel periodLabel;
 	public JTextField periodBox;
+	private ActionListener alPeriod = new ActionListener() {
+		public void actionPerformed(java.awt.event.ActionEvent e) {
+			String str = periodBox.getText();
+		}
+	};
 	public JLabel sequenceLabel;
 	public JTextField sequenceBox;
+	private ActionListener alSequence = new ActionListener() {
+		public void actionPerformed(java.awt.event.ActionEvent e) {
+			String str = sequenceBox.getText();
+		}
+	};
 	public JLabel visibilityLabel;
 	public JComboBox visibilityBox;
+	private ActionListener alVisibility = new ActionListener() {
+		public void actionPerformed(java.awt.event.ActionEvent e) {
+		}
+	};
 	public JLabel heightLabel;
 	public JTextField heightBox;
+	private ActionListener alHeight = new ActionListener() {
+		public void actionPerformed(java.awt.event.ActionEvent e) {
+			String str = heightBox.getText();
+		}
+	};
 	public JLabel rangeLabel;
 	public JTextField rangeBox;
+	private ActionListener alRange = new ActionListener() {
+		public void actionPerformed(java.awt.event.ActionEvent e) {
+			String str = rangeBox.getText();
+		}
+	};
 	public JLabel orientationLabel;
 	public JTextField orientationBox;
+	private ActionListener alOrientation = new ActionListener() {
+		public void actionPerformed(java.awt.event.ActionEvent e) {
+			String str = orientationBox.getText();
+		}
+	};
 	public JLabel categoryLabel;
 	public JComboBox categoryBox;
+	private ActionListener alCategory = new ActionListener() {
+		public void actionPerformed(java.awt.event.ActionEvent e) {
+		}
+	};
 	public JLabel exhibitionLabel;
 	public JComboBox exhibitionBox;
+	private ActionListener alExhibition = new ActionListener() {
+		public void actionPerformed(java.awt.event.ActionEvent e) {
+		}
+	};
 	private ButtonGroup typeButtons;
 	public JRadioButton singleButton;
 	public JRadioButton sectorButton;
-	private ActionListener alType;
-	private ActionListener alGroupBox;
-	private ActionListener alPeriodBox;
-	private ActionListener alSequenceBox;
-	private ActionListener alVisibilityBox;
-	private ActionListener alHeightBox;
-	private ActionListener alRangeBox;
-	private ActionListener alOrientationBox;
-	private ActionListener alCategoryBox;
-	private ActionListener alExhibitionBox;
+	private ActionListener alType = new ActionListener() {
+		public void actionPerformed(java.awt.event.ActionEvent e) {
+			singleButton.setBorderPainted(singleButton.isSelected());
+			sectorButton.setBorderPainted(sectorButton.isSelected());
+			if (sectorButton.isSelected()) {
+				if (panelSector == null) {
+					panelSector = new PanelSectors(dlg.mark.light);
+					panelSector.setAlwaysOnTop(true);
+					panelSector.setLocation(450, 0);
+				}
+				if (panelSector.getSectorCount() == 0) {
+					panelSector.addSector(1);
+					panelSector.light.setSectored(true);
+				}
+				panelSector.setVisible(true);
+			} else {
+				dlg.mark.light.setSectored(false);
+				panelSector.setVisible(false);
+			}
+		}
+	};
 
 	public PanelLit(OSeaMAction dia) {
@@ -57,25 +111,4 @@
 		this.add(panelCol, null);
 
-		alType = new ActionListener() {
-			public void actionPerformed(java.awt.event.ActionEvent e) {
-				singleButton.setBorderPainted(singleButton.isSelected());
-				sectorButton.setBorderPainted(sectorButton.isSelected());
-				if (sectorButton.isSelected()) {
-					if (panelSector == null) {
-						panelSector = new PanelSectors(dlg.mark.light);
-						panelSector.setAlwaysOnTop(true);
-						panelSector.setLocation(450, 0);
-					}
-					if (panelSector.getSectorCount() == 0) {
-						panelSector.addSector(1);
-						panelSector.light.setSectored(true);
-					}
-					panelSector.setVisible(true);
-				} else {
-					dlg.mark.light.setSectored(false);
-					panelSector.setVisible(false);
-				}
-			}
-		};
 		typeButtons = new ButtonGroup();
 		singleButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/SingleButton.png")));
@@ -84,9 +117,4 @@
 		this.add(getTypeButton(sectorButton, 315, 125, 34, 30, "Sector"), null);
 
-		alGroupBox = new ActionListener() {
-			public void actionPerformed(java.awt.event.ActionEvent e) {
-				String str = groupBox.getText();
-			}
-		};
 		groupLabel = new JLabel(Messages.getString("Group"), SwingConstants.CENTER);
 		groupLabel.setBounds(new Rectangle(123, 0, 65, 20));
@@ -96,11 +124,6 @@
 		groupBox.setHorizontalAlignment(SwingConstants.CENTER);
 		this.add(groupBox, null);
-		groupBox.addActionListener(alGroupBox);
-
-		alPeriodBox = new ActionListener() {
-			public void actionPerformed(java.awt.event.ActionEvent e) {
-				String str = periodBox.getText();
-			}
-		};
+		groupBox.addActionListener(alGroup);
+
 		periodLabel = new JLabel(Messages.getString("Period"), SwingConstants.CENTER);
 		periodLabel.setBounds(new Rectangle(123, 40, 65, 20));
@@ -110,11 +133,6 @@
 		periodBox.setHorizontalAlignment(SwingConstants.CENTER);
 		this.add(periodBox, null);
-		periodBox.addActionListener(alPeriodBox);
-
-		alHeightBox = new ActionListener() {
-			public void actionPerformed(java.awt.event.ActionEvent e) {
-				String str = heightBox.getText();
-			}
-		};
+		periodBox.addActionListener(alPeriod);
+
 		heightLabel = new JLabel(Messages.getString("Height"), SwingConstants.CENTER);
 		heightLabel.setBounds(new Rectangle(123, 80, 65, 20));
@@ -124,11 +142,6 @@
 		heightBox.setHorizontalAlignment(SwingConstants.CENTER);
 		this.add(heightBox, null);
-		heightBox.addActionListener(alHeightBox);
-
-		alRangeBox = new ActionListener() {
-			public void actionPerformed(java.awt.event.ActionEvent e) {
-				String str = rangeBox.getText();
-			}
-		};
+		heightBox.addActionListener(alHeight);
+
 		rangeLabel = new JLabel(Messages.getString("Range"), SwingConstants.CENTER);
 		rangeLabel.setBounds(new Rectangle(123, 120, 65, 20));
@@ -138,11 +151,6 @@
 		rangeBox.setHorizontalAlignment(SwingConstants.CENTER);
 		this.add(rangeBox, null);
-		rangeBox.addActionListener(alRangeBox);
-
-		alSequenceBox = new ActionListener() {
-			public void actionPerformed(java.awt.event.ActionEvent e) {
-				String str = sequenceBox.getText();
-			}
-		};
+		rangeBox.addActionListener(alRange);
+
 		sequenceLabel = new JLabel(Messages.getString("Sequence"), SwingConstants.CENTER);
 		sequenceLabel.setBounds(new Rectangle(188, 120, 80, 20));
@@ -152,10 +160,6 @@
 		sequenceBox.setHorizontalAlignment(SwingConstants.CENTER);
 		this.add(sequenceBox, null);
-		sequenceBox.addActionListener(alSequenceBox);
-
-		alCategoryBox = new ActionListener() {
-			public void actionPerformed(java.awt.event.ActionEvent e) {
-			}
-		};
+		sequenceBox.addActionListener(alSequence);
+
 		categoryLabel = new JLabel(Messages.getString("Category"), SwingConstants.CENTER);
 		categoryLabel.setBounds(new Rectangle(185, 0, 165, 20));
@@ -164,12 +168,8 @@
 		categoryBox.setBounds(new Rectangle(185, 20, 165, 20));
 		this.add(categoryBox, null);
-		categoryBox.addActionListener(alCategoryBox);
+		categoryBox.addActionListener(alCategory);
 		categoryBox.addItem(Messages.getString("NoneSpecified"));
 		categoryBox.addItem(Messages.getString("Vert2"));
 
-		alVisibilityBox = new ActionListener() {
-			public void actionPerformed(java.awt.event.ActionEvent e) {
-			}
-		};
 		visibilityLabel = new JLabel(Messages.getString("Visibility"), SwingConstants.CENTER);
 		visibilityLabel.setBounds(new Rectangle(185, 40, 165, 20));
@@ -178,5 +178,5 @@
 		visibilityBox.setBounds(new Rectangle(185, 60, 165, 20));
 		this.add(visibilityBox, null);
-		visibilityBox.addActionListener(alVisibilityBox);
+		visibilityBox.addActionListener(alVisibility);
 		visibilityBox.addItem(Messages.getString("NoneSpecified"));
 		visibilityBox.addItem(Messages.getString("Intensified"));
@@ -184,8 +184,4 @@
 		visibilityBox.addItem(Messages.getString("PartiallyObscured"));
 
-		alExhibitionBox = new ActionListener() {
-			public void actionPerformed(java.awt.event.ActionEvent e) {
-			}
-		};
 		exhibitionLabel = new JLabel(Messages.getString("Exhibition"), SwingConstants.CENTER);
 		exhibitionLabel.setBounds(new Rectangle(280, 80, 70, 20));
@@ -194,5 +190,5 @@
 		exhibitionBox.setBounds(new Rectangle(280, 100, 70, 20));
 		this.add(exhibitionBox, null);
-		exhibitionBox.addActionListener(alExhibitionBox);
+		exhibitionBox.addActionListener(alExhibition);
 		exhibitionBox.addItem("-");
 		exhibitionBox.addItem(Messages.getString("24h"));
@@ -201,9 +197,4 @@
 		exhibitionBox.addItem(Messages.getString("Fog"));
 
-		alOrientationBox = new ActionListener() {
-			public void actionPerformed(java.awt.event.ActionEvent e) {
-				String str = orientationBox.getText();
-			}
-		};
 		orientationLabel = new JLabel(Messages.getString("Orientation"), SwingConstants.CENTER);
 		orientationLabel.setBounds(new Rectangle(188, 80, 80, 20));
@@ -213,5 +204,8 @@
 		orientationBox.setHorizontalAlignment(SwingConstants.CENTER);
 		this.add(orientationBox, null);
-		orientationBox.addActionListener(alOrientationBox);
+		orientationBox.addActionListener(alOrientation);
+	}
+
+	public void syncPanel() {
 	}
 
Index: /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelMain.java
===================================================================
--- /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelMain.java	(revision 26988)
+++ /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelMain.java	(revision 26989)
@@ -14,29 +14,4 @@
 
 	private OSeaMAction dlg;
-	public JLabel shapeIcon = null;
-	public JLabel lightIcon = null;
-	public JLabel topIcon = null;
-	public JLabel radarIcon = null;
-	public JLabel fogIcon = null;
-	public JLabel colLabel = null;
-	public JLabel nameLabel = null;
-	public JTextField nameBox = null;
-	private JButton saveButton = null;
-	private ActionListener alSave = null;
-	public JButton moreButton = null;
-	private ActionListener alMore = null;
-	public ButtonGroup typeButtons = null;
-	public JRadioButton chanButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/ChanButton.png")));
-	public JRadioButton hazButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/HazButton.png")));
-	public JRadioButton specButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/SpecButton.png")));
-	public JRadioButton lightsButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/LightsButton.png")));
-	private ActionListener alType = null;
-	private ButtonGroup miscButtons = null;
-	public JRadioButton topButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/TopButton.png")));
-	public JRadioButton fogButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/FogButton.png")));
-	public JRadioButton radButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/RadarButton.png")));
-	public JRadioButton litButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/LitButton.png")));
-	private ActionListener alMisc = null;
-	private ActionListener alName = null;
 	public PanelChan panelChan = null;
 	public PanelHaz panelHaz = null;
@@ -48,4 +23,142 @@
 	public PanelRadar panelRadar = null;
 	public PanelLit panelLit = null;
+	public JLabel shapeIcon = null;
+	public JLabel lightIcon = null;
+	public JLabel topIcon = null;
+	public JLabel radarIcon = null;
+	public JLabel fogIcon = null;
+	public JLabel colLabel = null;
+	public JLabel nameLabel = null;
+	public JTextField nameBox = null;
+	private ActionListener alName = new ActionListener() {
+		public void actionPerformed(java.awt.event.ActionEvent e) {
+			if (dlg.mark != null)
+				dlg.mark.setName(nameBox.getText());
+		}
+	};
+	private JButton saveButton = null;
+	private ActionListener alSave = new ActionListener() {
+		public void actionPerformed(java.awt.event.ActionEvent e) {
+			if (dlg.mark != null) {
+				dlg.mark.saveSign(dlg.node);
+			}
+		}
+	};
+	public JButton moreButton = null;
+	private ActionListener alMore = new ActionListener() {
+		public void actionPerformed(java.awt.event.ActionEvent e) {
+			if (panelMore.isVisible()) {
+				moreButton.setText("v v v");
+				panelMore.setVisible(false);
+				topButton.setEnabled(true);
+				radButton.setEnabled(true);
+				fogButton.setEnabled(true);
+				litButton.setEnabled(true);
+			} else {
+				panelMore.setVisible(true);
+				moreButton.setText("^ ^ ^");
+				miscButtons.clearSelection();
+				panelTop.setVisible(false);
+				topButton.setBorderPainted(false);
+				topButton.setEnabled(false);
+				panelRadar.setVisible(false);
+				radButton.setBorderPainted(false);
+				radButton.setEnabled(false);
+				panelFog.setVisible(false);
+				fogButton.setBorderPainted(false);
+				fogButton.setEnabled(false);
+				panelLit.setVisible(false);
+				litButton.setBorderPainted(false);
+				litButton.setEnabled(false);
+			}
+		}
+	};
+	public ButtonGroup typeButtons = null;
+	public JRadioButton chanButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/ChanButton.png")));
+	public JRadioButton hazButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/HazButton.png")));
+	public JRadioButton specButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/SpecButton.png")));
+	public JRadioButton lightsButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/LightsButton.png")));
+	private ActionListener alType = new ActionListener() {
+		public void actionPerformed(java.awt.event.ActionEvent e) {
+			if (dlg.node == null)
+				typeButtons.clearSelection();
+			if (chanButton.isSelected()) {
+				chanButton.setBorderPainted(true);
+				panelChan.setVisible(true);
+			} else {
+				chanButton.setBorderPainted(false);
+				panelChan.setVisible(false);
+			}
+			if (hazButton.isSelected()) {
+				hazButton.setBorderPainted(true);
+				panelHaz.setVisible(true);
+			} else {
+				hazButton.setBorderPainted(false);
+				panelHaz.setVisible(false);
+			}
+			if (specButton.isSelected()) {
+				specButton.setBorderPainted(true);
+				panelSpec.setVisible(true);
+			} else {
+				specButton.setBorderPainted(false);
+				panelSpec.setVisible(false);
+			}
+			if (lightsButton.isSelected()) {
+				lightsButton.setBorderPainted(true);
+				panelLights.setVisible(true);
+			} else {
+				lightsButton.setBorderPainted(false);
+				panelLights.setVisible(false);
+			}
+		}
+	};
+	private ButtonGroup miscButtons = null;
+	public JRadioButton topButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/TopButton.png")));
+	public JRadioButton fogButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/FogButton.png")));
+	public JRadioButton radButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/RadarButton.png")));
+	public JRadioButton litButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/LitButton.png")));
+	private ActionListener alMisc = new ActionListener() {
+		public void actionPerformed(java.awt.event.ActionEvent e) {
+			if (dlg.mark == null) {
+				miscButtons.clearSelection();
+			}
+			if (topButton.isSelected()) {
+				moreButton.setText("v v v");
+				panelMore.setVisible(false);
+				topButton.setBorderPainted(true);
+				panelTop.setVisible(true);
+			} else {
+				topButton.setBorderPainted(false);
+				panelTop.setVisible(false);
+			}
+			if (fogButton.isSelected()) {
+				moreButton.setText("v v v");
+				panelMore.setVisible(false);
+				fogButton.setBorderPainted(true);
+				panelFog.setVisible(true);
+			} else {
+				fogButton.setBorderPainted(false);
+				panelFog.setVisible(false);
+			}
+			if (radButton.isSelected()) {
+				moreButton.setText("v v v");
+				panelMore.setVisible(false);
+				radButton.setBorderPainted(true);
+				panelRadar.setVisible(true);
+			} else {
+				radButton.setBorderPainted(false);
+				panelRadar.setVisible(false);
+			}
+			if (litButton.isSelected()) {
+				moreButton.setText("v v v");
+				panelMore.setVisible(false);
+				litButton.setBorderPainted(true);
+				panelLit.setVisible(true);
+			} else {
+				litButton.setBorderPainted(false);
+				panelLit.setVisible(false);
+			}
+		}
+	};
 
 	public PanelMain(OSeaMAction dia) {
@@ -117,38 +230,4 @@
 		typeButtons.add(specButton);
 		typeButtons.add(lightsButton);
-		alType = new ActionListener() {
-			public void actionPerformed(java.awt.event.ActionEvent e) {
-				if (dlg.node == null)
-					typeButtons.clearSelection();
-				if (chanButton.isSelected()) {
-					chanButton.setBorderPainted(true);
-					panelChan.setVisible(true);
-				} else {
-					chanButton.setBorderPainted(false);
-					panelChan.setVisible(false);
-				}
-				if (hazButton.isSelected()) {
-					hazButton.setBorderPainted(true);
-					panelHaz.setVisible(true);
-				} else {
-					hazButton.setBorderPainted(false);
-					panelHaz.setVisible(false);
-				}
-				if (specButton.isSelected()) {
-					specButton.setBorderPainted(true);
-					panelSpec.setVisible(true);
-				} else {
-					specButton.setBorderPainted(false);
-					panelSpec.setVisible(false);
-				}
-				if (lightsButton.isSelected()) {
-					lightsButton.setBorderPainted(true);
-					panelLights.setVisible(true);
-				} else {
-					lightsButton.setBorderPainted(false);
-					panelLights.setVisible(false);
-				}
-			}
-		};
 		chanButton.addActionListener(alType);
 		hazButton.addActionListener(alType);
@@ -165,47 +244,4 @@
 		miscButtons.add(radButton);
 		miscButtons.add(litButton);
-		alMisc = new ActionListener() {
-			public void actionPerformed(java.awt.event.ActionEvent e) {
-				if (dlg.mark == null) {
-					miscButtons.clearSelection();
-				}
-				if (topButton.isSelected()) {
-					moreButton.setText("v v v");
-					panelMore.setVisible(false);
-					topButton.setBorderPainted(true);
-					panelTop.setVisible(true);
-				} else {
-					topButton.setBorderPainted(false);
-					panelTop.setVisible(false);
-				}
-				if (fogButton.isSelected()) {
-					moreButton.setText("v v v");
-					panelMore.setVisible(false);
-					fogButton.setBorderPainted(true);
-					panelFog.setVisible(true);
-				} else {
-					fogButton.setBorderPainted(false);
-					panelFog.setVisible(false);
-				}
-				if (radButton.isSelected()) {
-					moreButton.setText("v v v");
-					panelMore.setVisible(false);
-					radButton.setBorderPainted(true);
-					panelRadar.setVisible(true);
-				} else {
-					radButton.setBorderPainted(false);
-					panelRadar.setVisible(false);
-				}
-				if (litButton.isSelected()) {
-					moreButton.setText("v v v");
-					panelMore.setVisible(false);
-					litButton.setBorderPainted(true);
-					panelLit.setVisible(true);
-				} else {
-					litButton.setBorderPainted(false);
-					panelLit.setVisible(false);
-				}
-			}
-		};
 		topButton.addActionListener(alMisc);
 		fogButton.addActionListener(alMisc);
@@ -220,10 +256,4 @@
 		nameBox.setBounds(new Rectangle(60, 330, 200, 20));
 		this.add(nameBox, null);
-		alName = new ActionListener() {
-			public void actionPerformed(java.awt.event.ActionEvent e) {
-				if (dlg.mark != null)
-					dlg.mark.setName(nameBox.getText());
-			}
-		};
 		nameBox.addActionListener(alName);
 
@@ -232,11 +262,4 @@
 		saveButton.setText(tr("Save"));
 		this.add(saveButton, null);
-		alSave = new ActionListener() {
-			public void actionPerformed(java.awt.event.ActionEvent e) {
-				if (dlg.mark != null) {
-					dlg.mark.saveSign(dlg.node);
-				}
-			}
-		};
 		saveButton.addActionListener(alSave);
 
@@ -246,32 +269,4 @@
 		moreButton.setText("v v v");
 		this.add(moreButton, null);
-		alMore = new ActionListener() {
-			public void actionPerformed(java.awt.event.ActionEvent e) {
-				if (panelMore.isVisible()) {
-					moreButton.setText("v v v");
-					panelMore.setVisible(false);
-					if (topButton.isSelected())
-						panelTop.setVisible(true);
-					if (radButton.isSelected())
-						panelRadar.setVisible(true);
-					if (fogButton.isSelected())
-						panelFog.setVisible(true);
-					if (litButton.isSelected())
-						panelLit.setVisible(true);
-				} else {
-					panelMore.setVisible(true);
-					moreButton.setText("^ ^ ^");
-					miscButtons.clearSelection();
-						panelTop.setVisible(false);
-						topButton.setBorderPainted(false);
-						panelRadar.setVisible(false);
-						radButton.setBorderPainted(false);
-						panelFog.setVisible(false);
-						fogButton.setBorderPainted(false);
-						panelLit.setVisible(false);
-						litButton.setBorderPainted(false);
-				}
-			}
-		};
 		moreButton.addActionListener(alMore);
 
@@ -308,6 +303,9 @@
 		dlg.panelMain.panelMore.setVisible(false);
 		dlg.panelMain.panelMore.syncPanel();
+		moreButton.setVisible(dlg.mark.isValid());
 		dlg.panelMain.panelTop.syncPanel();
-		moreButton.setVisible(dlg.mark.isValid());
+		dlg.panelMain.panelFog.syncPanel();
+		dlg.panelMain.panelRadar.syncPanel();
+		dlg.panelMain.panelLit.syncPanel();
 	}
 
Index: /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelRadar.java
===================================================================
--- /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelRadar.java	(revision 26988)
+++ /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelRadar.java	(revision 26989)
@@ -3,16 +3,169 @@
 import java.awt.*;
 import java.awt.event.*;
+
 import javax.swing.*;
+
 import java.util.*;
 
+import oseam.Messages;
 import oseam.dialogs.OSeaMAction;
+import oseam.seamarks.SeaMark.*;
 
 public class PanelRadar extends JPanel {
 
 	private OSeaMAction dlg;
+	private ButtonGroup radarButtons = new ButtonGroup();
+	public JRadioButton noRadButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/OffButton.png")));
+	public JRadioButton reflButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/OffButton.png")));
+	public JRadioButton raconButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/OffButton.png")));
+	public JRadioButton ramarkButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/OffButton.png")));
+	public JRadioButton leadingButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/OffButton.png")));
+	private EnumMap<Rtb, JRadioButton> rads = new EnumMap<Rtb, JRadioButton>(Rtb.class);
+	private ActionListener alRad = new ActionListener() {
+		public void actionPerformed(java.awt.event.ActionEvent e) {
+			if (dlg.mark != null) {
+				for (Rtb rtb : rads.keySet()) {
+					JRadioButton button = rads.get(rtb);
+					if (button.isSelected()) {
+						dlg.mark.setRaType(rtb);
+						button.setBorderPainted(true);
+					} else
+						button.setBorderPainted(false);
+				}
+				dlg.mark.paintSign();
+			}
+		}
+	};
+	public JLabel groupLabel;
+	public JTextField groupBox;
+	private ActionListener alGroup = new ActionListener() {
+		public void actionPerformed(java.awt.event.ActionEvent e) {
+			if (dlg.mark != null)
+				dlg.mark.setRaconGroup(groupBox.getText());
+		}
+	};
+	public JLabel periodLabel;
+	public JTextField periodBox;
+	private ActionListener alPeriod = new ActionListener() {
+		public void actionPerformed(java.awt.event.ActionEvent e) {
+			if (dlg.mark != null)
+				dlg.mark.setRaconPeriod(periodBox.getText());
+		}
+	};
+	public JLabel seqLabel;
+	public JTextField seqBox;
+	private ActionListener alSeq = new ActionListener() {
+		public void actionPerformed(java.awt.event.ActionEvent e) {
+			if (dlg.mark != null)
+				dlg.mark.setRaconSequence(seqBox.getText());
+		}
+	};
+	public JLabel rangeLabel;
+	public JTextField rangeBox;
+	private ActionListener alRange = new ActionListener() {
+		public void actionPerformed(java.awt.event.ActionEvent e) {
+			if (dlg.mark != null)
+				dlg.mark.setRaconRange(rangeBox.getText());
+		}
+	};
+	public JLabel sector1Label;
+	public JTextField sector1Box;
+	private ActionListener alSector1 = new ActionListener() {
+		public void actionPerformed(java.awt.event.ActionEvent e) {
+			if (dlg.mark != null)
+				dlg.mark.setRaconSector1(rangeBox.getText());
+		}
+	};
+	public JLabel sector2Label;
+	public JTextField sector2Box;
+	private ActionListener alSector2 = new ActionListener() {
+		public void actionPerformed(java.awt.event.ActionEvent e) {
+			if (dlg.mark != null)
+				dlg.mark.setRaconSector2(rangeBox.getText());
+		}
+	};
 
 	public PanelRadar(OSeaMAction dia) {
 		dlg = dia;
 		this.setLayout(null);
+		this.add(getRadButton(noRadButton, 0, 3, 27, 27, "NoRadar", Rtb.NONE), null);
+		this.add(getRadButton(reflButton, 0, 33, 27, 27, "RadarReflector", Rtb.REFLECTOR), null);
+		this.add(getRadButton(raconButton, 0, 63, 27, 27, "Racon", Rtb.RACON), null);
+		this.add(getRadButton(ramarkButton, 0, 93, 27, 27, "Ramark", Rtb.RAMARK), null);
+		this.add(getRadButton(leadingButton, 0, 123, 27, 27, "LeadingBeacon", Rtb.LEADING), null);
+
+		groupLabel = new JLabel(Messages.getString("Group"), SwingConstants.CENTER);
+		groupLabel.setBounds(new Rectangle(75, 0, 100, 20));
+		this.add(groupLabel, null);
+		groupBox = new JTextField();
+		groupBox.setBounds(new Rectangle(100, 20, 50, 20));
+		this.add(groupBox, null);
+		groupBox.addActionListener(alGroup);
+
+		periodLabel = new JLabel(Messages.getString("Period"), SwingConstants.CENTER);
+		periodLabel.setBounds(new Rectangle(75, 40, 100, 20));
+		this.add(periodLabel, null);
+		periodBox = new JTextField();
+		periodBox.setBounds(new Rectangle(100, 60, 50, 20));
+		this.add(periodBox, null);
+		periodBox.addActionListener(alPeriod);
+
+		seqLabel = new JLabel(Messages.getString("Sequence"), SwingConstants.CENTER);
+		seqLabel.setBounds(new Rectangle(75, 80, 100, 20));
+		this.add(seqLabel, null);
+		seqBox = new JTextField();
+		seqBox.setBounds(new Rectangle(100, 100, 50, 20));
+		this.add(seqBox, null);
+		seqBox.addActionListener(alSeq);
+
+		rangeLabel = new JLabel(Messages.getString("Range"), SwingConstants.CENTER);
+		rangeLabel.setBounds(new Rectangle(75, 120, 100, 20));
+		this.add(rangeLabel, null);
+		rangeBox = new JTextField();
+		rangeBox.setBounds(new Rectangle(100, 140, 50, 20));
+		this.add(rangeBox, null);
+		rangeBox.addActionListener(alRange);
+
+		sector1Label = new JLabel(Messages.getString("SectorStart"), SwingConstants.CENTER);
+		sector1Label.setBounds(new Rectangle(175, 40, 100, 20));
+		this.add(sector1Label, null);
+		sector1Box = new JTextField();
+		sector1Box.setBounds(new Rectangle(200, 60, 50, 20));
+		this.add(sector1Box, null);
+		sector1Box.addActionListener(alSector1);
+
+		sector2Label = new JLabel(Messages.getString("SectorEnd"), SwingConstants.CENTER);
+		sector2Label.setBounds(new Rectangle(175, 80, 100, 20));
+		this.add(sector2Label, null);
+		sector2Box = new JTextField();
+		sector2Box.setBounds(new Rectangle(200, 100, 50, 20));
+		this.add(sector2Box, null);
+		sector2Box.addActionListener(alSector1);
+	}
+
+	public void syncPanel() {
+		for (Rtb rtb : rads.keySet()) {
+			JRadioButton button = rads.get(rtb);
+			if (dlg.mark.getRaType() == rtb) {
+				button.setBorderPainted(true);
+			} else
+				button.setBorderPainted(false);
+		}
+		groupBox.setText(dlg.mark.getRaconGroup());
+		seqBox.setText(dlg.mark.getRaconSequence());
+		periodBox.setText(dlg.mark.getRaconPeriod());
+		rangeBox.setText(dlg.mark.getRaconRange());
+		sector1Box.setText(dlg.mark.getRaconSector1());
+		sector2Box.setText(dlg.mark.getRaconSector2());
+	}
+
+	private JRadioButton getRadButton(JRadioButton button, int x, int y, int w, int h, String tip, Rtb rtb) {
+		button.setBounds(new Rectangle(x, y, w, h));
+		button.setBorder(BorderFactory.createLoweredBevelBorder());
+		button.setToolTipText(Messages.getString(tip));
+		button.addActionListener(alRad);
+		radarButtons.add(button);
+		rads.put(rtb, button);
+		return button;
 	}
 
Index: /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelSpec.java
===================================================================
--- /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelSpec.java	(revision 26988)
+++ /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelSpec.java	(revision 26989)
@@ -100,4 +100,5 @@
 		this.add(categoryBox, null);
 		categoryBox.addActionListener(alCategoryBox);
+		addCatItem(Messages.getString("NotSet"), Cat.NONE);
 		addCatItem(Messages.getString("UKPurpose"), Cat.SPM_UNKN);
 		addCatItem(Messages.getString("Warning"), Cat.SPM_WARN);
Index: /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/seamarks/SeaMark.java
===================================================================
--- /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/seamarks/SeaMark.java	(revision 26988)
+++ /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/seamarks/SeaMark.java	(revision 26989)
@@ -160,5 +160,12 @@
 
 	public enum Cat {
-		UNKNOWN, LAM_PORT, LAM_STBD, LAM_PPORT, LAM_PSTBD, CAM_NORTH, CAM_EAST, CAM_SOUTH, CAM_WEST, ACH_URST, ACH_DEEP, ACH_TANK, ACH_EXPL, ACH_QUAR, ACH_SPLN, ACH_SCAN, ACH_SCMO, ACH_T24H, ACH_TLIM, SPM_UNKN, SPM_WARN, SPM_CHBF, SPM_YCHT, SPM_CABL, SPM_OFAL, SPM_ODAS, SPM_RECN, SPM_MOOR, SPM_LNBY, SPM_LDNG, SPM_NOTC, SPM_TSS, SPM_FOUL, SPM_DIVE, SPM_FRRY, SPM_ANCH, MOR_DLPN, MOR_DDPN, MOR_BLRD, MOR_WALL, MOR_POST, MOR_CHWR, MOR_BUOY, SIS_PTCL, SIS_PTED, SIS_IPT, SIS_BRTH, SIS_DOCK, SIS_LOCK, SIS_FBAR, SIS_BRDG, SIS_DRDG, SIS_TRFC, SIS_DNGR, SIS_OBST, SIS_CABL, SIS_MILY, SIS_DSTR, SIS_WTHR, SIS_STRM, SIS_ICE, SIS_TIME, SIS_TIDE, SIS_TSTM, SIS_TGAG, SIS_TSCL, SIS_DIVE, SIS_LGAG, LIT_DIRF, LIT_LEDG
+		NONE, LAM_PORT, LAM_STBD, LAM_PPORT, LAM_PSTBD, CAM_NORTH, CAM_EAST, CAM_SOUTH, CAM_WEST,
+		ACH_URST, ACH_DEEP, ACH_TANK, ACH_EXPL, ACH_QUAR, ACH_SPLN, ACH_SCAN, ACH_SCMO, ACH_T24H, ACH_TLIM,
+		SPM_UNKN, SPM_WARN, SPM_CHBF, SPM_YCHT, SPM_CABL, SPM_OFAL, SPM_ODAS, SPM_RECN, SPM_MOOR, SPM_LNBY,
+		SPM_LDNG, SPM_NOTC, SPM_TSS, SPM_FOUL, SPM_DIVE, SPM_FRRY, SPM_ANCH,
+		MOR_DLPN, MOR_DDPN, MOR_BLRD, MOR_WALL, MOR_POST, MOR_CHWR, MOR_BUOY,
+		SIS_PTCL, SIS_PTED, SIS_IPT, SIS_BRTH, SIS_DOCK, SIS_LOCK, SIS_FBAR, SIS_BRDG, SIS_DRDG, SIS_TRFC,
+		SIS_DNGR, SIS_OBST, SIS_CABL, SIS_MILY, SIS_DSTR, SIS_WTHR, SIS_STRM, SIS_ICE, SIS_TIME, SIS_TIDE,
+		SIS_TSTM, SIS_TGAG, SIS_TSCL, SIS_DIVE, SIS_LGAG, LIT_DIRF, LIT_LEDG
 	}
 
@@ -224,5 +231,5 @@
 	}
 
-	private Cat category = Cat.UNKNOWN;
+	private Cat category = Cat.NONE;
 
 	public Cat getCategory() {
@@ -528,8 +535,8 @@
 
 	public enum Rtb {
-		UNKNOWN, RACON, RAMARK, LEADING
-	}
-
-	private Rtb RaType = Rtb.UNKNOWN;
+		NONE, REFLECTOR, RACON, RAMARK, LEADING
+	}
+
+	private Rtb RaType = Rtb.NONE;
 
 	public Rtb getRaType() {
@@ -547,6 +554,56 @@
 	}
 
-	public void setRaconGroup(String raconGroup) {
-		RaconGroup = raconGroup;
+	public void setRaconGroup(String grp) {
+		RaconGroup = grp;
+	}
+
+	private String RaconSequence = "";
+
+	public String getRaconSequence() {
+		return RaconSequence;
+	}
+
+	public void setRaconSequence(String seq) {
+		RaconSequence = seq;
+	}
+
+	private String RaconPeriod = "";
+
+	public String getRaconPeriod() {
+		return RaconPeriod;
+	}
+
+	public void setRaconPeriod(String per) {
+		RaconPeriod = validDecimal(per);
+	}
+
+	private String RaconRange = "";
+
+	public String getRaconRange() {
+		return RaconRange;
+	}
+
+	public void setRaconRange(String rng) {
+		RaconRange = validDecimal(rng);
+	}
+
+	private String RaconSector1 = "";
+
+	public String getRaconSector1() {
+		return RaconSector1;
+	}
+
+	public void setRaconSector1(String sec) {
+		RaconSector1 = validDecimal(sec);
+	}
+
+	private String RaconSector2 = "";
+
+	public String getRaconSector2() {
+		return RaconSector2;
+	}
+
+	public void setRaconSector2(String sec) {
+		RaconSector2 = validDecimal(sec);
 	}
 
@@ -767,5 +824,5 @@
 		case BOYCAR:
 		case BOYLAT:
-			if ((getCategory() != Cat.UNKNOWN) && (getShape() != Shp.UNKNOWN))
+			if ((getCategory() != Cat.NONE) && (getShape() != Shp.UNKNOWN))
 				return true;
 			break;
@@ -859,5 +916,5 @@
 			if (keys.containsKey("seamark:" + ObjSTR.get(obj) + ":category")) {
 				str = keys.get("seamark:" + ObjSTR.get(obj) + ":category");
-				setCategory(Cat.UNKNOWN);
+				setCategory(Cat.NONE);
 				for (Cat cat : CatSTR.keySet()) {
 					if (CatSTR.get(cat).equals(str)) {
@@ -919,5 +976,5 @@
 				if ((getColour(Ent.BODY, 1) == Col.WHITE) && (getColour(Ent.BODY, 2) == Col.UNKNOWN)) {
 					setObject(Obj.FLTSAW);
-					setCategory(Cat.UNKNOWN);
+					setCategory(Cat.NONE);
 				} else if (getColour(Ent.BODY, 1) == Col.UNKNOWN) {
 					setObject(Obj.FLTLAT);
@@ -939,5 +996,5 @@
 				} else {
 					setObject(Obj.FLTSPP);
-					setCategory(Cat.UNKNOWN);
+					setCategory(Cat.NONE);
 				}
 				break;
@@ -962,5 +1019,5 @@
 				} else {
 					setObject(Obj.FLTSPP);
-					setCategory(Cat.UNKNOWN);
+					setCategory(Cat.NONE);
 				}
 				break;
@@ -975,5 +1032,5 @@
 				} else {
 					setObject(Obj.FLTSPP);
-					setCategory(Cat.UNKNOWN);
+					setCategory(Cat.NONE);
 				}
 				break;
@@ -981,5 +1038,5 @@
 				if (getColour(Ent.BODY, 1) == Col.RED) {
 					setObject(Obj.FLTISD);
-					setCategory(Cat.UNKNOWN);
+					setCategory(Cat.NONE);
 				} else if (getColour(Ent.BODY, 1) == Col.YELLOW) {
 					if (getColour(Ent.BODY, 2) == Col.BLACK) {
@@ -990,10 +1047,10 @@
 				} else {
 					setObject(Obj.FLTSPP);
-					setCategory(Cat.UNKNOWN);
+					setCategory(Cat.NONE);
 				}
 				break;
 			default:
 				setObject(Obj.FLTSPP);
-				setCategory(Cat.UNKNOWN);
+				setCategory(Cat.NONE);
 			}
 		}
@@ -1478,4 +1535,8 @@
 			dlg.panelMain.topIcon.setIcon(null);
 		}
+		
+		if (hasFog()) {
+			dlg.panelMain.fogIcon.setIcon(new ImageIcon(getClass().getResource("/images/Fog_Signal.png")));
+		}
 	}
 
@@ -1546,4 +1607,43 @@
 				}
 			}
+			if (hasFog()) {
+				Main.main.undoRedo.add(new ChangePropertyCommand(node, "seamark:fog_signal", FogSTR.get(getFogSound())));
+				if (!getFogGroup().isEmpty()) {
+					Main.main.undoRedo.add(new ChangePropertyCommand(node, "seamark:fog_signal:group", getFogGroup()));
+				}
+				if (!getFogPeriod().isEmpty()) {
+					Main.main.undoRedo.add(new ChangePropertyCommand(node, "seamark:fog_signal:period", getFogPeriod()));
+				}
+				if (!getFogSequence().isEmpty()) {
+					Main.main.undoRedo.add(new ChangePropertyCommand(node, "seamark:fog_signal:sequence", getFogSequence()));
+				}
+				if (!getFogRange().isEmpty()) {
+					Main.main.undoRedo.add(new ChangePropertyCommand(node, "seamark:fog_signal:range", getFogRange()));
+				}
+			}
+			if (!getInfo().isEmpty()) {
+				Main.main.undoRedo.add(new ChangePropertyCommand(node, "seamark:information", getInfo()));
+			}
+			if (!getSource().isEmpty()) {
+				Main.main.undoRedo.add(new ChangePropertyCommand(node, "seamark:source", getSource()));
+			}
+			if (!getHeight().isEmpty()) {
+				Main.main.undoRedo.add(new ChangePropertyCommand(node, "seamark:height", getHeight()));
+			}
+			if (!getElevation().isEmpty()) {
+				Main.main.undoRedo.add(new ChangePropertyCommand(node, "seamark:elevation", getElevation()));
+			}
+			if (getStatus() != Sts.UNKNOWN) {
+				Main.main.undoRedo.add(new ChangePropertyCommand(node, "seamark:status", StsSTR.get(getStatus())));
+			}
+			if (getConstr() != Cns.UNKNOWN) {
+				Main.main.undoRedo.add(new ChangePropertyCommand(node, "seamark:construction", CnsSTR.get(getConstr())));
+			}
+			if (getVis() != Vis.UNKNOWN) {
+				Main.main.undoRedo.add(new ChangePropertyCommand(node, "seamark:visibility", VisSTR.get(getVis())));
+			}
+			if (getRvis() != Vis.UNKNOWN) {
+				Main.main.undoRedo.add(new ChangePropertyCommand(node, "seamark:reflectivity", VisSTR.get(getRvis())));
+			}
 		}
 	}
