diff --git a/web/.ht-inc/addomain.php b/web/.ht-inc/addomain.php
index 7e9f5a1..f86ebf7 100644
--- a/web/.ht-inc/addomain.php
+++ b/web/.ht-inc/addomain.php
@@ -119,6 +119,8 @@
 				return 'Domain DNS Name';
 			case 'dnsservers':
 				return 'DNS Server(s)';
+			case 'usedbhostnames':
+				return 'Use Database Hostnames';
 		}
 		return ucfirst($field);
 	}
diff --git a/web/js/resources/addomain.js b/web/js/resources/addomain.js
index e782586..cffbf94 100644
--- a/web/js/resources/addomain.js
+++ b/web/js/resources/addomain.js
@@ -21,6 +21,16 @@
 }
 ADdomain.prototype = new Resource();
 
+ADdomain.prototype.colformatter = function(value, rowIndex, obj) {
+	if(obj.field == 'usedbhostnames') {
+		if(value == "0")
+			return '<span class="rederrormsg">' + _('false') + '</span>';
+		if(value == "1")
+			return '<span class="ready">' + _('true') + '</span>';
+	}
+	return value;
+}
+
 var resource = new ADdomain();
 
 function addNewResource(title) {
@@ -44,9 +54,7 @@
 		dijit.byId('domaindnsname').set('value', data.items.data.domaindnsname);
 		dijit.byId('username').set('value', data.items.data.username);
 		dijit.byId('dnsservers').set('value', data.items.data.dnsservers);
-		if(data.items.data.usedbhostnames == 1) {
-			dijit.byId('usedbhostnames').set('checked', data.items.data.usedbhostnames)
-		}
+		dijit.byId('usedbhostnames').set('checked', parseInt(data.items.data.usedbhostnames))
 		dijit.byId('password').set('value', '********');
 		dijit.byId('password2').set('value', 'xxxxxxxx');
 
@@ -132,7 +140,7 @@
 			resourcegrid.store.fetch({
 				query: {id: data.items.data.id},
 				onItem: function(item) {
-					var fields = ['name', 'owner', 'domaindnsname', 'username','dnsservers'];
+					var fields = ['name', 'owner', 'domaindnsname', 'username', 'usedbhostnames', 'dnsservers'];
 					for(var i = 0; i < fields.length; i++) {
 						dijit.byId(fields[i]).reset();
 						resourcegrid.store.setValue(item, fields[i], data.items.data[fields[i]]);
