diff --git a/www/index.html b/www/index.html
index 91e482c..a50e7c8 100644
--- a/www/index.html
+++ b/www/index.html
@@ -10,6 +10,7 @@
+
diff --git a/www/main.js b/www/main.js
index bfb9952..dfc8840 100644
--- a/www/main.js
+++ b/www/main.js
@@ -7,6 +7,7 @@ window.addEventListener('load', function() {
var save = Save();
var screen = Screen({dom: dom, i18n: i18n});
var messaging = Messaging({screen: screen});
+ var ui = Ui({messaging: messaging});
var session = Session({messaging: messaging, save: save});
var room = Room({dom: dom, messaging: messaging, session: session, fun: fun});
var statusHandler = StatusHandler();
diff --git a/www/ui.js b/www/ui.js
new file mode 100644
index 0000000..8558895
--- /dev/null
+++ b/www/ui.js
@@ -0,0 +1,38 @@
+function Ui(modules) {
+ var connectedForms = {};
+
+ modules.messaging.addEventListener('open', refreshForms);
+ modules.messaging.addEventListener('close', refreshForms);
+
+ return {
+ connectedForm: connectedForm,
+ enableForm: enableForm
+ };
+
+ function connectedForm(formId) {
+ var root = document.getElementById(formId);
+ connectedForms[formId] = {
+ root: root,
+ submits: root.querySelectorAll('[type=submit]'),
+ enabled: false
+ };
+ return root;
+ }
+
+ function enableForm(formId, enabled) {
+ connectedForms[formId].enabled = enabled || undefined == enabled;
+ refreshForm(connectedForms[formId]);
+ }
+
+ function refreshForms() {
+ for(var key in connectedForms) {
+ refreshForm(connectedForms[key]);
+ }
+ }
+
+ function refreshForm(form) {
+ form.submits.forEach(function(button) {
+ button.disabled = !(modules.messaging.isOn() && form.enabled);
+ });
+ }
+}