diff --git a/webconsole-plugins/event/src/main/resources/res/events.html b/webconsole-plugins/event/src/main/resources/res/events.html
index 4f7b700..89bc616 100644
--- a/webconsole-plugins/event/src/main/resources/res/events.html
+++ b/webconsole-plugins/event/src/main/resources/res/events.html
@@ -6,6 +6,7 @@
 	displayTimeline: '${displayTimeline}',
 	displayList    : '${displayList}',
 	close          : '${close}',
+    reset          : '${reset}',
 	send           : '${send}',
 	post           : '${post}'
 }
@@ -58,9 +59,7 @@
 		</tr>
 		<tr>
 			<th>${properties}:</th>
-			<td>
-				<div id="sendProperties">&nbsp;</div>
-			</td>
+			<td id="sendProperties"></td>
 		</tr>
 	</tbody>
 	</table>
diff --git a/webconsole-plugins/event/src/main/resources/res/ui/events.css b/webconsole-plugins/event/src/main/resources/res/ui/events.css
index ea62a6b..a8dbe20 100644
--- a/webconsole-plugins/event/src/main/resources/res/ui/events.css
+++ b/webconsole-plugins/event/src/main/resources/res/ui/events.css
@@ -31,6 +31,6 @@
 .addremove button { width: 16px; height: 16px; line-height: 10px; font-size: 10px; margin: 2px 2px }
 .addremove_inner { display: inline }
 .propeditor_entry select {	margin-left: 4px }
-#sendTopic { width: 100% }
+#sendTopic { width: 100%; margin-bottom: 1em }
 #sendDialog table { margin-left: auto; margin-right: auto }
 #sendDialog table th { text-align: right; font-weight: bold; padding-right: .5em }
diff --git a/webconsole-plugins/event/src/main/resources/res/ui/events.js b/webconsole-plugins/event/src/main/resources/res/ui/events.js
index 2cd1abd..89c835d 100644
--- a/webconsole-plugins/event/src/main/resources/res/ui/events.js
+++ b/webconsole-plugins/event/src/main/resources/res/ui/events.js
@@ -104,10 +104,10 @@
 		if (topicOk) {
 			sendTopic.removeClass('ui-state-error');
 		} else {
-			addTopic.removeClass('ui-state-error');
+			sendTopic.addClass('ui-state-error');
 		}
 		var data = sendProperties.propeditor('serialize');
-		if (topicOk && data != false) {
+		if (topicOk && typeof data != 'boolean') {
 			$.post(pluginRoot,
 				data.concat([
 					{name : 'action', value : action},
@@ -125,6 +125,9 @@
 	sendButtons[i18n.close] = function() {
 		$(this).dialog("close");
 	}
+	sendButtons[i18n.reset] = function() {
+		sendProperties.propeditor('reset');
+	}
 	sendButtons[i18n.send] = function() {
 		sendData('send');
 	}
@@ -137,8 +140,8 @@
 		width   : '40%',
 		buttons : sendButtons,
 		open    : function() {
-			sendTopic.val('');
-			sendProperties.propeditor('reset');
+			//sendTopic.val('');
+			//sendProperties.propeditor('reset');
 		}
 	});
 	var sendTopic = $('#sendTopic');
diff --git a/webconsole-plugins/event/src/main/resources/res/ui/propeditor.js b/webconsole-plugins/event/src/main/resources/res/ui/propeditor.js
index 51f47d7..9cfd895 100644
--- a/webconsole-plugins/event/src/main/resources/res/ui/propeditor.js
+++ b/webconsole-plugins/event/src/main/resources/res/ui/propeditor.js
@@ -21,22 +21,22 @@
 	
 	Options:
 	validator : function(keyInputField, valInputField, type)
+	types     : ['byte', 'int', 'long', 'float', 'double', 'string', 'char', 'hex', 'base64', 'sha1']
 */
 (function( $ ){
-	var TYPES = ['byte', 'int', 'long', 'float', 'double', 'string', 'char', 'hex', 'base64', 'sha1'];
-
 	var methods = {
 		init : function(options) {
 			return this.each( function() {
 				// If options exist, lets merge them with our default settings
 				var settings = {
 					validator  : false,
+					types      : ['byte', 'int', 'long', 'float', 'double', 'string', 'char', 'hex', 'base64', 'sha1']
 				};
 				if (options) settings = $.extend(settings, options);
 
 				var _this = $(this);
 				_this.data('propeditor_settings', settings);
-				_this.append(_entry());
+				_this.append(_entry(settings.types));
 				_this.addremove(settings);
 			})
 		},
@@ -56,15 +56,13 @@
 			if (entries.size() == 1) {
 				var k = entries.find('.key').removeClass('ui-state-error').val();
 				var v = entries.find('.val').removeClass('ui-state-error').val();
-				if (k != '' || v != '') {
+				if (k || v) {
 					var data = _check_entry( entries, validator );
-					//if ( data == false ) ok = false; else result.push(data);
 					if ( data == false ) ok = false; else result = data;
 				}
 			} else {
 				entries.each(function() {
 					var data = _check_entry( $(this), validator );
-					//if ( data == false ) ok = false; else result.push(data);
 					if ( data == false ) ok = false; else result = result.concat(data);
 				});
 			}
@@ -102,7 +100,7 @@
 		return ret;
 	}
 
-	var _entry = function() {
+	var _entry = function(TYPES) {
 		var sel = _el('select', 'typ');
 		for(var i in TYPES) {
 			sel.append( _el('option').text( TYPES[i] ) );
