Index: /applications/editors/josm/plugins/toms/src/toms/dialogs/SmpDialogAction.java
===================================================================
--- /applications/editors/josm/plugins/toms/src/toms/dialogs/SmpDialogAction.java	(revision 23072)
+++ /applications/editors/josm/plugins/toms/src/toms/dialogs/SmpDialogAction.java	(revision 23073)
@@ -1016,5 +1016,5 @@
 			cbM01Racon.setFont(new Font("Dialog", Font.PLAIN, 12)); //$NON-NLS-1$
 			cbM01Racon.removeAllItems();
-			cbM01Racon.addItem("Not Set");
+			cbM01Racon.addItem("Any");
 			cbM01Racon.addItem("Racon");
 			cbM01Racon.addItem("Ramark");
@@ -1066,5 +1066,5 @@
 			cbM01Fog.setFont(new Font("Dialog", Font.PLAIN, 12)); //$NON-NLS-1$
 			cbM01Fog.removeAllItems();
-			cbM01Fog.addItem("Not Set");
+			cbM01Fog.addItem("Any");
 			cbM01Fog.addItem("Horn");
 			cbM01Fog.addItem("Siren");
@@ -1077,7 +1077,7 @@
 				public void actionPerformed(ActionEvent e) {
 					if (cbM01Fog.getSelectedIndex() > 0)
-						buoy.setFogSound((String) cbM01Fog.getSelectedItem());
+						buoy.setFogSound(cbM01Fog.getSelectedIndex());
 					else
-						buoy.setFogSound("");
+						buoy.setFogSound(0);
 					buoy.paintSign();
 				}
Index: /applications/editors/josm/plugins/toms/src/toms/seamarks/SeaMark.java
===================================================================
--- /applications/editors/josm/plugins/toms/src/toms/seamarks/SeaMark.java	(revision 23072)
+++ /applications/editors/josm/plugins/toms/src/toms/seamarks/SeaMark.java	(revision 23073)
@@ -107,5 +107,5 @@
 	
 	/**
-	 * Radar Beacons - correspond to Ratyp
+	 * Radar Beacons - correspond to Ratyp Index
 	 */
 	
@@ -116,4 +116,17 @@
 
 	/**
+	 * Fog Signals - correspond to FogSound Index
+	 */
+	
+	public final static int UNKNOWN_FOG = 0;
+	public final static int FOG_HORN = 1;
+	public final static int FOG_SIREN = 2;
+	public final static int FOG_DIA = 3;
+	public final static int FOG_BELL = 4;
+	public final static int FOG_WHIS = 5;
+	public final static int FOG_GONG = 6;
+	public final static int FOG_EXPLOS = 7;
+
+	/**
 	 * Variables
 	 */
Index: /applications/editors/josm/plugins/toms/src/toms/seamarks/buoys/Buoy.java
===================================================================
--- /applications/editors/josm/plugins/toms/src/toms/seamarks/buoys/Buoy.java	(revision 23072)
+++ /applications/editors/josm/plugins/toms/src/toms/seamarks/buoys/Buoy.java	(revision 23073)
@@ -107,11 +107,11 @@
 	}
 
-	private String FogSound = "";
-
-	public String getFogSound() {
+	private int FogSound = 0;
+
+	public int getFogSound() {
 		return FogSound;
 	}
 
-	public void setFogSound(String fogSound) {
+	public void setFogSound(int fogSound) {
 		FogSound = fogSound;
 	}
@@ -124,5 +124,5 @@
 
 	public void setFogGroup(String fogGroup) {
-		FogSound = fogGroup;
+		FogGroup = fogGroup;
 	}
 
@@ -290,4 +290,8 @@
 	protected Buoy(SmpDialogAction dia) {
 		dlg = dia;
+	}
+
+	public boolean isValid() {
+		return false;
 	}
 
@@ -305,104 +309,144 @@
 		dlg.rbM01RegionB.setSelected(getRegion());
 
-		dlg.cM01TopMark.setSelected(hasTopMark());
-		dlg.cM01Fired.setSelected(isFired());
-
-		dlg.tfM01RepeatTime.setText(LightPeriod);
-
-		dlg.tfM01Name.setText(getName());
-
-		if (hasRadar()) {
-			dlg.lM03Icon.setIcon(new ImageIcon(getClass().getResource(
-					"/images/Radar_Reflector.png")));
-		}
-
-		if (hasRacon()) {
-			dlg.lM04Icon.setIcon(new ImageIcon(getClass().getResource(
-					"/images/Radar_Station.png")));
-			dlg.cbM01Racon.setVisible(true);
-			if (getRaType() == RATYP_RACON) {
-				dlg.lM01Racon.setVisible(true);
-				dlg.tfM01Racon.setVisible(true);
-				dlg.tfM01Racon.setEnabled(true);
+		if (isValid()) {
+			dlg.bM01Save.setEnabled(true);
+
+			dlg.cM01TopMark.setSelected(hasTopMark());
+			dlg.cM01Fired.setSelected(isFired());
+
+			dlg.tfM01RepeatTime.setText(LightPeriod);
+
+			dlg.tfM01Name.setText(getName());
+
+			if (hasRadar()) {
+				dlg.lM03Icon.setIcon(new ImageIcon(getClass().getResource(
+						"/images/Radar_Reflector.png")));
+			}
+
+			if (hasRacon()) {
+				dlg.lM04Icon.setIcon(new ImageIcon(getClass().getResource(
+						"/images/Radar_Station.png")));
+				dlg.cbM01Racon.setVisible(true);
+				if (getRaType() == RATYP_RACON) {
+					dlg.lM01Racon.setVisible(true);
+					dlg.tfM01Racon.setVisible(true);
+					dlg.tfM01Racon.setEnabled(true);
+				} else {
+					dlg.lM01Racon.setVisible(false);
+					dlg.tfM01Racon.setVisible(false);
+				}
 			} else {
+				dlg.cbM01Racon.setVisible(false);
 				dlg.lM01Racon.setVisible(false);
 				dlg.tfM01Racon.setVisible(false);
 			}
-		} else {
-			dlg.cbM01Racon.setVisible(false);
-			dlg.lM01Racon.setVisible(false);
-			dlg.tfM01Racon.setVisible(false);
-		}
-
-		if (hasFog()) {
-			dlg.lM05Icon.setIcon(new ImageIcon(getClass().getResource(
-					"/images/Fog_Signal.png")));
-			dlg.cbM01Fog.setVisible(true);
-			if (getFogSound().equals("")) {
+
+			if (hasFog()) {
+				dlg.lM05Icon.setIcon(new ImageIcon(getClass().getResource(
+						"/images/Fog_Signal.png")));
+				dlg.cbM01Fog.setVisible(true);
+				if (getFogSound() == 0) {
+					dlg.lM01FogGroup.setVisible(false);
+					dlg.tfM01FogGroup.setVisible(false);
+					dlg.lM01FogPeriod.setVisible(false);
+					dlg.tfM01FogPeriod.setVisible(false);
+				} else {
+					dlg.lM01FogGroup.setVisible(true);
+					dlg.tfM01FogGroup.setVisible(true);
+					dlg.lM01FogPeriod.setVisible(true);
+					dlg.tfM01FogPeriod.setVisible(true);
+				}
+			} else {
+				dlg.cbM01Fog.setVisible(false);
 				dlg.lM01FogGroup.setVisible(false);
 				dlg.tfM01FogGroup.setVisible(false);
 				dlg.lM01FogPeriod.setVisible(false);
 				dlg.tfM01FogPeriod.setVisible(false);
+			}
+
+			if (isFired()) {
+				String lp, c;
+				String tmp = null;
+				int i1;
+
+				String col = getLightColour();
+				if (col.equals("W"))
+					dlg.lM02Icon.setIcon(new ImageIcon(getClass().getResource(
+							"/images/Light_White_120.png")));
+				else if (col.equals("R"))
+					dlg.lM02Icon.setIcon(new ImageIcon(getClass().getResource(
+							"/images/Light_Red_120.png")));
+				else if (col.equals("G"))
+					dlg.lM02Icon.setIcon(new ImageIcon(getClass().getResource(
+							"/images/Light_Green_120.png")));
+				else
+					dlg.lM02Icon.setIcon(new ImageIcon(getClass().getResource(
+							"/images/Light_Magenta_120.png")));
+
+				dlg.cbM01Kennung.setEnabled(true);
+
+				c = getLightChar();
+				if (dlg.cbM01Kennung.getSelectedIndex() == 0)
+					dlg.tfM01RepeatTime.setEnabled(false);
+				else
+					dlg.tfM01RepeatTime.setEnabled(true);
+
+				if (c.contains("+")) {
+					i1 = c.indexOf("+");
+					tmp = c.substring(i1, c.length());
+					c = c.substring(0, i1);
+				}
+
+				if (getLightGroup() != "")
+					c = c + "(" + getLightGroup() + ")";
+				if (tmp != null)
+					c = c + tmp;
+
+				c = c + " " + getLightColour();
+				lp = getLightPeriod();
+				if (lp != "" && lp != " ")
+					c = c + " " + lp + "s";
+				dlg.lM01FireMark.setText(c);
 			} else {
-				dlg.lM01FogGroup.setVisible(true);
-				dlg.tfM01FogGroup.setVisible(true);
-				dlg.lM01FogPeriod.setVisible(true);
-				dlg.tfM01FogPeriod.setVisible(true);
+				dlg.tfM01RepeatTime.setEnabled(false);
+				dlg.cbM01Kennung.setEnabled(false);
+				dlg.lM01FireMark.setText("");
 			}
 		} else {
+			dlg.bM01Save.setEnabled(false);
+			dlg.cM01TopMark.setVisible(false);
+			dlg.cbM01TopMark.setVisible(false);
+			dlg.cM01Radar.setVisible(false);
+			dlg.cM01Racon.setVisible(false);
+			dlg.cbM01Racon.setVisible(false);
+			dlg.tfM01Racon.setVisible(false);
+			dlg.lM01Racon.setVisible(false);
+			dlg.cM01Fog.setVisible(false);
 			dlg.cbM01Fog.setVisible(false);
+			dlg.tfM01FogGroup.setVisible(false);
 			dlg.lM01FogGroup.setVisible(false);
-			dlg.tfM01FogGroup.setVisible(false);
+			dlg.tfM01FogPeriod.setVisible(false);
 			dlg.lM01FogPeriod.setVisible(false);
-			dlg.tfM01FogPeriod.setVisible(false);
-		}
-
-		if (isFired()) {
-			String lp, c;
-			String tmp = null;
-			int i1;
-
-			String col = getLightColour();
-			if (col.equals("W"))
-				dlg.lM02Icon.setIcon(new ImageIcon(getClass().getResource(
-						"/images/Light_White_120.png")));
-			else if (col.equals("R"))
-				dlg.lM02Icon.setIcon(new ImageIcon(getClass().getResource(
-						"/images/Light_Red_120.png")));
-			else if (col.equals("G"))
-				dlg.lM02Icon.setIcon(new ImageIcon(getClass().getResource(
-						"/images/Light_Green_120.png")));
-			else
-				dlg.lM02Icon.setIcon(new ImageIcon(getClass().getResource(
-						"/images/Light_Magenta_120.png")));
-
-			dlg.cbM01Kennung.setEnabled(true);
-
-			c = getLightChar();
-			if (dlg.cbM01Kennung.getSelectedIndex() == 0)
-				dlg.tfM01RepeatTime.setEnabled(false);
-			else
-				dlg.tfM01RepeatTime.setEnabled(true);
-
-			if (c.contains("+")) {
-				i1 = c.indexOf("+");
-				tmp = c.substring(i1, c.length());
-				c = c.substring(0, i1);
-			}
-
-			if (getLightGroup() != "")
-				c = c + "(" + getLightGroup() + ")";
-			if (tmp != null)
-				c = c + tmp;
-
-			c = c + " " + getLightColour();
-			lp = getLightPeriod();
-			if (lp != "" && lp != " ")
-				c = c + " " + lp + "s";
-			dlg.lM01FireMark.setText(c);
-		} else {
-			dlg.tfM01RepeatTime.setEnabled(false);
-			dlg.cbM01Kennung.setEnabled(false);
-			dlg.lM01FireMark.setText("");
+			dlg.cM01Fired.setVisible(false);
+			dlg.rbM01Fired1.setVisible(false);
+			dlg.rbM01FiredN.setVisible(false);
+			dlg.cbM01Kennung.setVisible(false);
+			dlg.lM01Kennung.setVisible(false);
+			dlg.tfM01Height.setVisible(false);
+			dlg.lM01Height.setVisible(false);
+			dlg.tfM01Range.setVisible(false);
+			dlg.lM01Range.setVisible(false);
+			dlg.cbM01Colour.setVisible(false);
+			dlg.lM01Colour.setVisible(false);
+			dlg.cbM01Sector.setVisible(false);
+			dlg.lM01Sector.setVisible(false);
+			dlg.tfM01Group.setVisible(false);
+			dlg.lM01Group.setVisible(false);
+			dlg.tfM01RepeatTime.setVisible(false);
+			dlg.lM01RepeatTime.setVisible(false);
+			dlg.tfM01Bearing.setVisible(false);
+			dlg.lM01Bearing.setVisible(false);
+			dlg.tfM02Bearing.setVisible(false);
+			dlg.tfM01Radius.setVisible(false);
 		}
 	}
@@ -450,5 +494,4 @@
 						"seamark:light:group", LightGroup));
 		}
-
 	}
 
@@ -460,6 +503,85 @@
 					"seamark:topmark:colour", colour));
 		}
-
-	}
+	}
+
+	protected void saveRadarFogData() {
+		if (hasRadar()) {
+			Main.main.undoRedo.add(new ChangePropertyCommand(Node,
+					"seamark:radar_reflector", "yes"));
+		}
+		if (hasRacon()) {
+			switch (RaType) {
+			case RATYP_RACON:
+				Main.main.undoRedo.add(new ChangePropertyCommand(Node,
+						"seamark:radar_transponder:category", "racon"));
+				if (!getRaconGroup().equals(""))
+					Main.main.undoRedo.add(new ChangePropertyCommand(Node,
+							"seamark:radar_transponder:group", getRaconGroup()));
+				break;
+			case RATYP_RAMARK:
+				Main.main.undoRedo.add(new ChangePropertyCommand(Node,
+						"seamark:radar_transponder:category", "ramark"));
+				break;
+			case RATYP_LEADING:
+				Main.main.undoRedo.add(new ChangePropertyCommand(Node,
+						"seamark:radar_transponder:category", "leading"));
+				break;
+			default:
+				Main.main.undoRedo.add(new ChangePropertyCommand(Node,
+						"seamark:radar_transponder", "yes"));
+			}
+		}
+		if (hasFog()) {
+			if (FogSound == 0) {
+				Main.main.undoRedo.add(new ChangePropertyCommand(Node,
+						"seamark:fog_signal", "yes"));
+			} else {
+				switch (FogSound) {
+				case FOG_HORN:
+					Main.main.undoRedo.add(new ChangePropertyCommand(Node,
+							"seamark:fog_signal:category", "horn"));
+					break;
+				case FOG_SIREN:
+					Main.main.undoRedo.add(new ChangePropertyCommand(Node,
+							"seamark:fog_signal:category", "siren"));
+					break;
+				case FOG_DIA:
+					Main.main.undoRedo.add(new ChangePropertyCommand(Node,
+							"seamark:fog_signal:category", "diaphone"));
+					break;
+				case FOG_BELL:
+					Main.main.undoRedo.add(new ChangePropertyCommand(Node,
+							"seamark:fog_signal:category", "bell"));
+					break;
+				case FOG_WHIS:
+					Main.main.undoRedo.add(new ChangePropertyCommand(Node,
+							"seamark:fog_signal:category", "whistle"));
+					break;
+				case FOG_GONG:
+					Main.main.undoRedo.add(new ChangePropertyCommand(Node,
+							"seamark:fog_signal:category", "gong"));
+					break;
+				case FOG_EXPLOS:
+					Main.main.undoRedo.add(new ChangePropertyCommand(Node,
+							"seamark:fog_signal:category", "explosive"));
+					break;
+				}
+			if (!getFogGroup().equals(""))
+				Main.main.undoRedo.add(new ChangePropertyCommand(Node,
+						"seamark:fog_group:group", getFogGroup()));
+			if (!getFogPeriod().equals(""))
+				Main.main.undoRedo.add(new ChangePropertyCommand(Node,
+						"seamark:fog_period:group", getFogPeriod()));
+			}
+		}
+	}
+
+	public final static int FOG_HORN = 1;
+	public final static int FOG_SIREN = 2;
+	public final static int FOG_DIA = 3;
+	public final static int FOG_BELL = 4;
+	public final static int FOG_WHIS = 5;
+	public final static int FOG_GONG = 6;
+	public final static int FOG_EXPLOS = 7;
 
 	public void refreshStyles() {
@@ -507,5 +629,5 @@
 		dlg.cM01Fog.setVisible(false);
 		dlg.cbM01Fog.setVisible(false);
-		setFogSound("");
+		setFogSound(0);
 		dlg.tfM01FogGroup.setText("");
 		dlg.tfM01FogGroup.setVisible(false);
Index: /applications/editors/josm/plugins/toms/src/toms/seamarks/buoys/BuoyCard.java
===================================================================
--- /applications/editors/josm/plugins/toms/src/toms/seamarks/buoys/BuoyCard.java	(revision 23072)
+++ /applications/editors/josm/plugins/toms/src/toms/seamarks/buoys/BuoyCard.java	(revision 23073)
@@ -185,4 +185,8 @@
 		}
 
+	}
+
+	public boolean isValid() {
+		return (getBuoyIndex() > 0) && (getStyleIndex() > 0);
 	}
 
@@ -408,5 +412,5 @@
 		saveTopMarkData(shape, "black");
 		saveLightData("white");
-
+		saveRadarFogData();
 	}
 }
Index: /applications/editors/josm/plugins/toms/src/toms/seamarks/buoys/BuoyIsol.java
===================================================================
--- /applications/editors/josm/plugins/toms/src/toms/seamarks/buoys/BuoyIsol.java	(revision 23072)
+++ /applications/editors/josm/plugins/toms/src/toms/seamarks/buoys/BuoyIsol.java	(revision 23073)
@@ -102,27 +102,26 @@
 		}
 	}
+	
+	public boolean isValid() {
+		return (getBuoyIndex() > 0) && (getStyleIndex() > 0);
+	}
 
 	public void paintSign() {
 		if (dlg.paintlock)
 			return;
+		
 		super.paintSign();
 
 		dlg.sM01StatusBar.setText(getErrMsg());
 
-		if ((getBuoyIndex() > 0) && (getStyleIndex() > 0)) {
+		if (isValid()) {
 			dlg.tfM01Name.setEnabled(true);
 			dlg.tfM01Name.setText(getName());
-			dlg.cM01TopMark.setEnabled(false);
 			dlg.cM01TopMark.setVisible(true);
-			dlg.cM01Radar.setEnabled(true);
 			dlg.cM01Radar.setVisible(true);
-			dlg.cM01Racon.setEnabled(true);
 			dlg.cM01Racon.setVisible(true);
-			dlg.cM01Fog.setEnabled(true);
 			dlg.cM01Fog.setVisible(true);
-
 			dlg.cM01Fired.setVisible(true);
-			dlg.cM01Fired.setEnabled(true);
-
+			
 			String image = "/images/Cardinal";
 
@@ -151,4 +150,12 @@
 			} else
 				dlg.lM01Icon.setIcon(null);
+		} else {
+			dlg.tfM01Name.setEnabled(false);
+			dlg.tfM01Name.setText("");
+			dlg.cM01TopMark.setVisible(false);
+			dlg.cM01Radar.setVisible(false);
+			dlg.cM01Racon.setVisible(false);
+			dlg.cM01Fog.setVisible(false);
+			dlg.cM01Fired.setVisible(false);
 		}
 	}
@@ -212,6 +219,6 @@
 
 		saveTopMarkData("2 spheres", "black");
-
 		saveLightData("white");
+		saveRadarFogData();
 
 	}
Index: /applications/editors/josm/plugins/toms/src/toms/seamarks/buoys/BuoyLat.java
===================================================================
--- /applications/editors/josm/plugins/toms/src/toms/seamarks/buoys/BuoyLat.java	(revision 23072)
+++ /applications/editors/josm/plugins/toms/src/toms/seamarks/buoys/BuoyLat.java	(revision 23073)
@@ -345,4 +345,8 @@
 	}
 
+	public boolean isValid() {
+		return (getBuoyIndex() > 0) && (getStyleIndex() > 0);
+	}
+
 	public void paintSign() {
 		if (dlg.paintlock)
@@ -957,7 +961,7 @@
 		default:
 		}
-
 		saveTopMarkData(shape, colour);
 		saveLightData(colour);
+		saveRadarFogData();
 
 		Main.pref.put("tomsplugin.IALA", getRegion() ? "B" : "A"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
Index: /applications/editors/josm/plugins/toms/src/toms/seamarks/buoys/BuoyNota.java
===================================================================
--- /applications/editors/josm/plugins/toms/src/toms/seamarks/buoys/BuoyNota.java	(revision 23072)
+++ /applications/editors/josm/plugins/toms/src/toms/seamarks/buoys/BuoyNota.java	(revision 23073)
@@ -43,4 +43,8 @@
 		setTopMark(false);
 		paintSign();
+	}
+
+	public boolean isValid() {
+		return (getBuoyIndex() > 0);
 	}
 
@@ -106,6 +110,6 @@
 		default:
 		}
-
 		saveLightData("white");
+		saveRadarFogData();
 	}
 
Index: /applications/editors/josm/plugins/toms/src/toms/seamarks/buoys/BuoySaw.java
===================================================================
--- /applications/editors/josm/plugins/toms/src/toms/seamarks/buoys/BuoySaw.java	(revision 23072)
+++ /applications/editors/josm/plugins/toms/src/toms/seamarks/buoys/BuoySaw.java	(revision 23073)
@@ -102,4 +102,8 @@
 	}
 
+	public boolean isValid() {
+		return (getBuoyIndex() > 0) && (getStyleIndex() > 0);
+	}
+
 	public void paintSign() {
 		if (dlg.paintlock)
@@ -212,9 +216,7 @@
 		default:
 		}
-
 		saveTopMarkData("spherical", "red");
-
 		saveLightData("white");
-
+		saveRadarFogData();
 	}
 
Index: /applications/editors/josm/plugins/toms/src/toms/seamarks/buoys/BuoySpec.java
===================================================================
--- /applications/editors/josm/plugins/toms/src/toms/seamarks/buoys/BuoySpec.java	(revision 23072)
+++ /applications/editors/josm/plugins/toms/src/toms/seamarks/buoys/BuoySpec.java	(revision 23073)
@@ -136,4 +136,8 @@
 	}
 
+	public boolean isValid() {
+		return (getBuoyIndex() > 0) && (getStyleIndex() > 0);
+	}
+
 	public void paintSign() {
 		if (dlg.paintlock)
@@ -258,9 +262,7 @@
 		default:
 		}
-
 		saveTopMarkData("x-shape", "yellow");
-
 		saveLightData("white");
-
+		saveRadarFogData();
 	}
 
