Index: /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/msg/messages.properties
===================================================================
--- /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/msg/messages.properties	(revision 29488)
+++ /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/msg/messages.properties	(revision 29489)
@@ -350,4 +350,17 @@
 Surveillance=Surveillance
 CoastRadar=Coast radar
+AIS=Physical AIS
+S-AIS=Synthetic AIS
+V-AIS=Virtual AIS
+V-AISNC=V-AIS North Cardinal
+V-AISSC=V-AIS South Cardinal
+V-AISEC=V-AIS East Cardinal
+V-AISWC=V-AIS West Cardinal
+V-AISPL=V-AIS Port Lateral
+V-AISSL=V-AIS Starboard Lateral
+V-AISID=V-AIS isolated Danger
+V-AISSW=V-AIS Safe Water
+V-AISSP=V-AIS Special Purpose
+V-AISWK=V-AIS Emergency Wreck
 
 NotDecimal=Not a valid decimal string
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 29488)
+++ /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelLights.java	(revision 29489)
@@ -396,22 +396,35 @@
 		radioCatBox.addActionListener(alRadioCatBox);
 		addROItem("", Cat.NOCAT);
-		addROItem(Messages.getString("CircularBeacon"), Cat.ROS_BNO);
-		addROItem(Messages.getString("DirectionalBeacon"), Cat.ROS_BND);
-		addROItem(Messages.getString("RotatingBeacon"), Cat.ROS_BNR);
-		addROItem(Messages.getString("ConsolBeacon"), Cat.ROS_BNC);
+		addROItem(Messages.getString("CircularBeacon"), Cat.ROS_OMNI);
+		addROItem(Messages.getString("DirectionalBeacon"), Cat.ROS_DIRL);
+		addROItem(Messages.getString("RotatingBeacon"), Cat.ROS_ROTP);
+		addROItem(Messages.getString("ConsolBeacon"), Cat.ROS_CNSL);
 		addROItem(Messages.getString("DirectionFinding"), Cat.ROS_RDF);
 		addROItem(Messages.getString("QTGService"), Cat.ROS_QTG);
-		addROItem(Messages.getString("AeronaticalBeacon"), Cat.ROS_AER);
-		addROItem(Messages.getString("Decca"), Cat.ROS_DCA);
-		addROItem(Messages.getString("LoranC"), Cat.ROS_LRN);
+		addROItem(Messages.getString("AeronaticalBeacon"), Cat.ROS_AERO);
+		addROItem(Messages.getString("Decca"), Cat.ROS_DECA);
+		addROItem(Messages.getString("LoranC"), Cat.ROS_LORN);
 		addROItem(Messages.getString("DGPS"), Cat.ROS_DGPS);
-		addROItem(Messages.getString("Toran"), Cat.ROS_TRN);
-		addROItem(Messages.getString("Omega"), Cat.ROS_OMA);
-		addROItem(Messages.getString("Syledis"), Cat.ROS_SDS);
-		addROItem(Messages.getString("Chiaka"), Cat.ROS_CKA);
-		addROItem(Messages.getString("PublicCommunication"), Cat.ROS_PUB);
-		addROItem(Messages.getString("CommercialBroadcast"), Cat.ROS_COM);
-		addROItem(Messages.getString("Facsimile"), Cat.ROS_FAX);
-		addROItem(Messages.getString("TimeSignal"), Cat.ROS_TIM);
+		addROItem(Messages.getString("Toran"), Cat.ROS_TORN);
+		addROItem(Messages.getString("Omega"), Cat.ROS_OMGA);
+		addROItem(Messages.getString("Syledis"), Cat.ROS_SYLD);
+		addROItem(Messages.getString("Chiaka"), Cat.ROS_CHKA);
+		addROItem(Messages.getString("PublicCommunication"), Cat.ROS_PCOM);
+		addROItem(Messages.getString("CommercialBroadcast"), Cat.ROS_COMB);
+		addROItem(Messages.getString("Facsimile"), Cat.ROS_FACS);
+		addROItem(Messages.getString("TimeSignal"), Cat.ROS_TIME);
+		addROItem(Messages.getString("AIS"), Cat.ROS_PAIS);
+		addROItem(Messages.getString("S-AIS"), Cat.ROS_SAIS);
+		addROItem(Messages.getString("V-AIS"), Cat.ROS_VAIS);
+		addROItem(Messages.getString("V-AISNC"), Cat.ROS_VANC);
+		addROItem(Messages.getString("V-AISSC"), Cat.ROS_VASC);
+		addROItem(Messages.getString("V-AISEC"), Cat.ROS_VAEC);
+		addROItem(Messages.getString("V-AISWC"), Cat.ROS_VAWC);
+		addROItem(Messages.getString("V-AISPL"), Cat.ROS_VAPL);
+		addROItem(Messages.getString("V-AISSL"), Cat.ROS_VASL);
+		addROItem(Messages.getString("V-AISID"), Cat.ROS_VAID);
+		addROItem(Messages.getString("V-AISSW"), Cat.ROS_VASW);
+		addROItem(Messages.getString("V-AISSP"), Cat.ROS_VASP);
+		addROItem(Messages.getString("V-AISWK"), Cat.ROS_VAWK);
 		radioCatBox.setVisible(false);
 
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 29488)
+++ /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/seamarks/SeaMark.java	(revision 29489)
@@ -218,10 +218,11 @@
 		OFP_OIL, OFP_PRD, OFP_OBS, OFP_ALP, OFP_SALM, OFP_MOR, OFP_ISL, OFP_FPSO, OFP_ACC, OFP_NCCB,
 		RSC_LFB, RSC_RKT, RSC_RSW, RSC_RIT, RSC_MLB, RSC_RAD, RSC_FAE, RSC_SPL, RSC_AIR, RSC_TUG,
-		ROS_BNO, ROS_BND, ROS_BNR, ROS_BNC, ROS_RDF, ROS_QTG, ROS_AER, ROS_DCA, ROS_LRN, ROS_DGPS, ROS_TRN, ROS_OMA,
-		ROS_SDS, ROS_CKA, ROS_PUB, ROS_COM, ROS_FAX, ROS_TIM, RAS_SRV, RAS_CST, PIL_VESS, PIL_HELI, PIL_SHORE,
+		RAS_SRV, RAS_CST, PIL_VESS, PIL_HELI, PIL_SHORE,
 		NTC_A1, NTC_A1a, NTC_A2, NTC_A3, NTC_A4, NTC_A4_1, NTC_A5, NTC_A5_1, NTC_A6, NTC_A7, NTC_A8, NTC_A9,
 		NTC_A10a, NTC_A10b, NTC_A12, NTC_A13, NTC_A14, NTC_A15, NTC_A16, NTC_A17, NTC_A18, NTC_A19, NTC_A20,
 		NTC_B1a, NTC_B1b, NTC_B2a, NTC_B2b, NTC_B3a, NTC_B3b, NTC_B4a, NTC_B4b, NTC_B5, NTC_B6, NTC_B7, NTC_B8, NTC_B9a, NTC_B9b, NTC_B11,
-		NTC_C1, NTC_C2, NTC_C3, NTC_C4, NTC_C5a, NTC_C5b, NTC_D1a, NTC_D1b, NTC_D2a, NTC_D2b, NTC_D3a, NTC_D3b
+		NTC_C1, NTC_C2, NTC_C3, NTC_C4, NTC_C5a, NTC_C5b, NTC_D1a, NTC_D1b, NTC_D2a, NTC_D2b, NTC_D3a, NTC_D3b,
+		NOROS, ROS_UNKN, ROS_OMNI, ROS_DIRL, ROS_ROTP, ROS_CNSL, ROS_RDF, ROS_QTG, ROS_AERO, ROS_DECA, ROS_LORN, ROS_DGPS, ROS_TORN, ROS_OMGA, ROS_SYLD, ROS_CHKA,
+		ROS_PCOM, ROS_COMB, ROS_FACS, ROS_TIME, ROS_PAIS, ROS_SAIS, ROS_VAIS, ROS_VANC, ROS_VASC, ROS_VAEC, ROS_VAWC, ROS_VAPL, ROS_VASL, ROS_VAID, ROS_VASW, ROS_VASP, ROS_VAWK
 	}
 		 
@@ -334,22 +335,35 @@
 		CatSTR.put(Cat.RAS_SRV, "surveillance");
 		CatSTR.put(Cat.RAS_CST, "coast");
-		CatSTR.put(Cat.ROS_BNO, "beacon_circular");
-		CatSTR.put(Cat.ROS_BND, "beacon_directional");
-		CatSTR.put(Cat.ROS_BNR, "beacon_rotating");
-		CatSTR.put(Cat.ROS_BNC, "beacon_consol");
-		CatSTR.put(Cat.ROS_RDF, "direction_finding");
-		CatSTR.put(Cat.ROS_QTG, "qtg_service");
-		CatSTR.put(Cat.ROS_AER, "beacon_aero");
-		CatSTR.put(Cat.ROS_DCA, "decca");
-		CatSTR.put(Cat.ROS_LRN, "loran");
+		CatSTR.put(Cat.ROS_OMNI, "omnidirectional");
+		CatSTR.put(Cat.ROS_DIRL, "directional");
+		CatSTR.put(Cat.ROS_ROTP, "rotating_pattern");
+		CatSTR.put(Cat.ROS_CNSL, "consol");
+		CatSTR.put(Cat.ROS_RDF, "rdf");
+		CatSTR.put(Cat.ROS_QTG, "qtg");
+		CatSTR.put(Cat.ROS_AERO, "aeronautical");
+		CatSTR.put(Cat.ROS_DECA, "decca");
+		CatSTR.put(Cat.ROS_LORN, "loran");
 		CatSTR.put(Cat.ROS_DGPS, "dgps");
-		CatSTR.put(Cat.ROS_TRN, "toran");
-		CatSTR.put(Cat.ROS_OMA, "omega");
-		CatSTR.put(Cat.ROS_SDS, "syledis");
-		CatSTR.put(Cat.ROS_CKA, "chiaka");
-		CatSTR.put(Cat.ROS_PUB, "public_communication");
-		CatSTR.put(Cat.ROS_COM, "comercial_broadcast");
-		CatSTR.put(Cat.ROS_FAX, "facsimile");
-		CatSTR.put(Cat.ROS_TIM, "time_signal");
+		CatSTR.put(Cat.ROS_TORN, "toran");
+		CatSTR.put(Cat.ROS_OMGA, "omega");
+		CatSTR.put(Cat.ROS_SYLD, "syledis");
+		CatSTR.put(Cat.ROS_CHKA, "chaika");
+		CatSTR.put(Cat.ROS_PCOM, "public_communication");
+		CatSTR.put(Cat.ROS_COMB, "commercial_broadcast");
+		CatSTR.put(Cat.ROS_FACS, "facsimile");
+		CatSTR.put(Cat.ROS_TIME, "time_signal");
+		CatSTR.put(Cat.ROS_PAIS, "ais");
+		CatSTR.put(Cat.ROS_SAIS, "s-ais");
+		CatSTR.put(Cat.ROS_VAIS, "v-ais");
+		CatSTR.put(Cat.ROS_VANC, "v-ais_north_cardinal");
+		CatSTR.put(Cat.ROS_VASC, "v-ais_south_cardinal");
+		CatSTR.put(Cat.ROS_VAEC, "v-ais_east_cardinal");
+		CatSTR.put(Cat.ROS_VAWC, "v-ais_west_cardinal");
+		CatSTR.put(Cat.ROS_VAPL, "v-ais_port_lateral");
+		CatSTR.put(Cat.ROS_VASL, "v-ais_starboard_lateral");
+		CatSTR.put(Cat.ROS_VAID, "v-ais_isolated_danger");
+		CatSTR.put(Cat.ROS_VASW, "v-ais_safe_water");
+		CatSTR.put(Cat.ROS_VASP, "v-ais_special_purpose");
+		CatSTR.put(Cat.ROS_VAWK, "v-ais_wreck"); 
 		CatSTR.put(Cat.NTC_A1, "no_entry");
 		CatSTR.put(Cat.NTC_A1a, "closed_area");
@@ -861,4 +875,15 @@
 	public void setTopmark(Top top) {
 		topShape = top;
+		repaint();
+	}
+
+	private Cat RoType = Cat.NOROS;
+
+	public Cat getRadio() {
+		return RoType;
+	}
+
+	public void setRadio(Cat type) {
+		RoType = type;
 		repaint();
 	}
@@ -1359,4 +1384,5 @@
 		setFogSound(Fog.NOFOG);
 		setRadar(Rtb.NORTB);
+		setRadio(Cat.NOROS);
 		setStatus(Sts.UNKSTS);
 		setConstr(Cns.UNKCNS);
@@ -1441,8 +1467,10 @@
 			if (keys.containsKey("seamark:" + ObjSTR.get(obj) + ":category")) {
 				str = keys.get("seamark:" + ObjSTR.get(obj) + ":category");
-				setCategory(Cat.NOCAT);
-				for (Cat cat : CatSTR.keySet()) {
-					if (CatSTR.get(cat).equals(str)) {
-						setCategory(cat);
+				if (obj == getObject()) {
+					setCategory(Cat.NOCAT);
+					for (Cat cat : CatSTR.keySet()) {
+						if (CatSTR.get(cat).equals(str)) {
+							setCategory(cat);
+						}
 					}
 				}
@@ -1794,4 +1822,14 @@
 		if (keys.containsKey("seamark:fog_signal:range")) {
 			setFogRange(keys.get("seamark:fog_signal:range"));
+		}
+
+		if (keys.containsKey("seamark:radio_station:category")) {
+			str = keys.get("seamark:radio_station:category");
+			setRadio(Cat.NOROS);
+			for (Cat rdo : CatSTR.keySet()) {
+				if (CatSTR.get(rdo).equals(str)) {
+					setRadio(rdo);
+				}
+			}
 		}
 
@@ -2693,4 +2731,8 @@
 			}
 
+			if (RoType != Cat.NOROS) {
+				Main.main.undoRedo.add(new ChangePropertyCommand(node, "seamark:radio_station:category", CatSTR.get(getRadio())));
+			}
+
 			if (RaType != Rtb.NORTB) {
 				if (getRadar() == Rtb.REFLECTOR) {
