Index: /Dev/trunk/src/client/qed-client/app/Router.js
===================================================================
--- /Dev/trunk/src/client/qed-client/app/Router.js	(revision 456)
+++ /Dev/trunk/src/client/qed-client/app/Router.js	(revision 457)
@@ -78,5 +78,5 @@
                         route.callback(params);
                     } catch(err) {
-                        console.error("Page change failed.",err);
+                        console.error("Page change failed with",err.toString());
                     }
                     return;
Index: /Dev/trunk/src/client/qed-client/model/classes/SurveyRun.js
===================================================================
--- /Dev/trunk/src/client/qed-client/model/classes/SurveyRun.js	(revision 456)
+++ /Dev/trunk/src/client/qed-client/model/classes/SurveyRun.js	(revision 457)
@@ -11,4 +11,9 @@
                 }
                 return d;
+            },
+            set: function(sr,d) {
+                if ( d ) {
+                    sr.startDate = lang.isString(d) ? stamp.toISOString(d) : d;
+                }
             }
         },
@@ -20,4 +25,9 @@
                 }
                 return d;
+            },
+            set: function(sr,d) {
+                if ( d ) {
+                    sr.endDate = lang.isString(d) ? stamp.toISOString(d) : d;
+                }
             }
         },
Index: v/trunk/src/client/qed-client/model/widgets/SurveyFieldset.js
===================================================================
--- /Dev/trunk/src/client/qed-client/model/widgets/SurveyFieldset.js	(revision 456)
+++ 	(revision )
@@ -1,13 +1,0 @@
-define([
-    'dojo/_base/declare',
-    'dijit/_Container',
-    'dijit/_WidgetBase',
-    'dijit/_TemplatedMixin',
-    'dijit/_WidgetsInTemplateMixin',
-    'dojo/text!./templates/SurveyFieldset.html'
-],function(declare,_Container,_WidgetBase,_TemplatedMixin,_WidgetsInTemplateMixin,template){
-    return declare([_WidgetBase,_TemplatedMixin,_WidgetsInTemplateMixin,_Container],{
-        templateString: template,
-        baseClass: "rftSurveyFieldset"
-    });
-});
Index: /Dev/trunk/src/client/qed-client/model/widgets/SurveyRenderWidget.js
===================================================================
--- /Dev/trunk/src/client/qed-client/model/widgets/SurveyRenderWidget.js	(revision 457)
+++ /Dev/trunk/src/client/qed-client/model/widgets/SurveyRenderWidget.js	(revision 457)
@@ -0,0 +1,36 @@
+define([
+    "../../widgets/_ComplexValueWidget",
+    "../classes/Survey",
+    "./questions/Factory",
+    "dojo/_base/array",
+    "dojo/_base/declare",
+    "dojo/dom-construct",
+    "dojo/text!./templates/SurveyRenderWidget.html"
+], function(_ComplexValueWidget, Survey, QuestionWidgetFactory, array, declare, domConstruct, template) {
+    return declare([_ComplexValueWidget],{
+        templateString: template,
+        survey: null,
+        startup: function() {
+            if ( this._started ) { return; }
+            this.inherited(arguments);
+            if ( this.survey ) {
+                this._setSurveyAttr(this.survey);
+            }
+        },
+        _setSurveyAttr: function(survey) {
+            domConstruct.empty(this.domNode);
+            this.survey = survey;
+            var f = new QuestionWidgetFactory();
+            array.forEach(Survey.Questions.get(this.survey),function(question){
+                array.forEach(question.content || [],function(item,index){
+                    // The dot causes values to be grouped in an object!
+                    item.code = question.code.toString()+'.'+index.toString();
+                    var w = f.createViewWidget(item);
+                    if ( w !== null ) {
+                        w.placeAt(this.domNode);
+                    }
+                },this);
+            },this);
+        }
+    });
+});
Index: v/trunk/src/client/qed-client/model/widgets/SurveyRunFieldset.js
===================================================================
--- /Dev/trunk/src/client/qed-client/model/widgets/SurveyRunFieldset.js	(revision 456)
+++ 	(revision )
@@ -1,13 +1,0 @@
-define([
-    'dojo/_base/declare',
-    'dijit/_Container',
-    'dijit/_WidgetBase',
-    'dijit/_TemplatedMixin',
-    'dijit/_WidgetsInTemplateMixin',
-    'dojo/text!./templates/SurveyRunFieldset.html'
-],function(declare,_Container,_WidgetBase,_TemplatedMixin,_WidgetsInTemplateMixin,template){
-    return declare([_WidgetBase,_TemplatedMixin,_WidgetsInTemplateMixin,_Container],{
-        templateString: template,
-        baseClass: "rftSurveyRunFieldset"
-    });
-});
Index: /Dev/trunk/src/client/qed-client/model/widgets/SurveyRunWidget.js
===================================================================
--- /Dev/trunk/src/client/qed-client/model/widgets/SurveyRunWidget.js	(revision 457)
+++ /Dev/trunk/src/client/qed-client/model/widgets/SurveyRunWidget.js	(revision 457)
@@ -0,0 +1,16 @@
+define([
+    "../../widgets/_ComplexValueWidget",
+    "dojo/_base/declare",
+    "dojo/date",
+    "dojo/text!./templates/SurveyRunWidget.html"
+], function(_ComplexValueWidget, declare, date, template) {
+    return declare([_ComplexValueWidget],{
+        templateString: template,
+        postCreate: function() {
+            var endDateBox = this.endDateBox;
+            this.startDateBox.on('change', function(value){
+                endDateBox.constraints.min  = value;
+            });
+        }
+    });
+});
Index: /Dev/trunk/src/client/qed-client/model/widgets/SurveySummary.js
===================================================================
--- /Dev/trunk/src/client/qed-client/model/widgets/SurveySummary.js	(revision 456)
+++ /Dev/trunk/src/client/qed-client/model/widgets/SurveySummary.js	(revision 457)
@@ -1,8 +1,11 @@
 define([
-    'dojo/_base/declare',
-    'dijit/_WidgetBase',
-    'dijit/_TemplatedMixin',
-    'dojo/text!./templates/SurveySummary.html'
-],function(declare,_WidgetBase,_TemplatedMixin,template){
+    "../../store",
+    "../classes/Survey",
+    "dijit/_TemplatedMixin",
+    "dijit/_WidgetBase",
+    "dojo/_base/declare",
+    "dojo/dom-attr",
+    "dojo/text!./templates/SurveySummary.html"
+], function(store, Survey, _TemplatedMixin, _WidgetBase, declare, domAttr, template) {
     return declare([_WidgetBase,_TemplatedMixin],{
         templateString: template,
@@ -15,5 +18,7 @@
         },
         _setValueAttr: function(survey) {
-            this.titleNode.innerHTML = survey.title;
+            this.titleNode.innerHTML = Survey.DisplayTitle.get(survey);
+            var id = store.getIdentity(survey);
+            domAttr.set(this.titleNode, "href", id && ("#!/survey/"+id));
             this.descriptionNode.innerHTML = survey.description;
             this.questionsNode.innerHTML = (survey.questions || []).length;
Index: /Dev/trunk/src/client/qed-client/model/widgets/SurveyWidget.js
===================================================================
--- /Dev/trunk/src/client/qed-client/model/widgets/SurveyWidget.js	(revision 456)
+++ /Dev/trunk/src/client/qed-client/model/widgets/SurveyWidget.js	(revision 457)
@@ -1,39 +1,9 @@
 define([
-    "../classes/Survey",
-    "./questions/Factory",
-    "dijit/_Container",
-    "dijit/_TemplatedMixin",
-    "dijit/_WidgetBase",
-    "dijit/_WidgetsInTemplateMixin",
-    "dojo/_base/array",
+    "../../widgets/_ComplexValueWidget",
     "dojo/_base/declare",
-    "dojo/dom-construct",
     "dojo/text!./templates/SurveyWidget.html"
-], function(Survey, QuestionWidgetFactory, _Container, _TemplatedMixin, _WidgetBase, _WidgetsInTemplateMixin, array, declare, domConstruct, template) {
-    return declare([_WidgetBase,_TemplatedMixin,_WidgetsInTemplateMixin,_Container],{
-        templateString: template,
-        survey: null,
-        startup: function() {
-            if ( this._started ) { return; }
-            this.inherited(arguments);
-            if ( this.survey ) {
-                this._setSurveyAttr(this.survey);
-            }
-        },
-        _setSurveyAttr: function(survey) {
-            domConstruct.empty(this.domNode);
-            this.survey = survey;
-            var f = new QuestionWidgetFactory();
-            array.forEach(Survey.Questions.get(this.survey),function(question){
-                array.forEach(question.content || [],function(item,index){
-                    // The dot causes values to be grouped in an object!
-                    item.code = question.code.toString()+'.'+index.toString();
-                    var w = f.createViewWidget(item);
-                    if ( w !== null ) {
-                        w.placeAt(this.domNode);
-                    }
-                },this);
-            },this);
-        }
+], function(_ComplexValueWidget, declare, template) {
+    return declare([_ComplexValueWidget],{
+        templateString: template
     });
 });
Index: v/trunk/src/client/qed-client/model/widgets/templates/SurveyFieldset.html
===================================================================
--- /Dev/trunk/src/client/qed-client/model/widgets/templates/SurveyFieldset.html	(revision 456)
+++ 	(revision )
@@ -1,6 +1,0 @@
-<fieldset class="${baseClass}">
-    <label for="title">Title</label>
-    <input data-dojo-type="dijit/form/TextBox" name="title"/><br/>
-    <label for="description">Description</label>
-    <input data-dojo-type="dijit/form/Textarea" name="description"/><br/>
-</fieldset>
Index: /Dev/trunk/src/client/qed-client/model/widgets/templates/SurveyRenderWidget.html
===================================================================
--- /Dev/trunk/src/client/qed-client/model/widgets/templates/SurveyRenderWidget.html	(revision 457)
+++ /Dev/trunk/src/client/qed-client/model/widgets/templates/SurveyRenderWidget.html	(revision 457)
@@ -0,0 +1,2 @@
+<div class="${baseClass}">
+</div>
Index: v/trunk/src/client/qed-client/model/widgets/templates/SurveyRunFieldset.html
===================================================================
--- /Dev/trunk/src/client/qed-client/model/widgets/templates/SurveyRunFieldset.html	(revision 456)
+++ 	(revision )
@@ -1,26 +1,0 @@
-<fieldset class="${baseClass} qedFieldset">
-
-    <div>
-    <label for="mode" class="qedLabel">Description</label>
-    <textarea name="description" class="qedField" data-dojo-type="dijit/form/Textarea"></textarea>
-    </div>
-
-    <div>
-    <label for="startDate" class="qedLabel">Start date</label>
-    <input type="text" name="startDate" class="qedField" data-dojo-type="dijit/form/DateTextBox" data-dojo-attach-point="startDateBox" />
-    </div>
-
-    <div>
-    <label for="endDate" class="qedLabel">End date</label>
-    <input type="text" name="endDate" class="qedField" data-dojo-type="dijit/form/DateTextBox" data-dojo-attach-point="endDateBox" />
-    </div>
-
-    <div>
-    <label for="mode" class="qedLabel">Mode</label>
-    <select name="mode" class="qedField" data-dojo-type="dijit/form/Select">
-        <option value="open" selected="selected">Open</option>
-        <option value="closed">Closed</option>
-    </select>
-    </div>
-
-</fieldset>
Index: /Dev/trunk/src/client/qed-client/model/widgets/templates/SurveyRunWidget.html
===================================================================
--- /Dev/trunk/src/client/qed-client/model/widgets/templates/SurveyRunWidget.html	(revision 457)
+++ /Dev/trunk/src/client/qed-client/model/widgets/templates/SurveyRunWidget.html	(revision 457)
@@ -0,0 +1,26 @@
+<div class="${baseClass}">
+
+    <div>
+        <label for="mode" class="qedLabel">Description</label>
+        <textarea name="description" class="qedField" data-dojo-type="dijit/form/Textarea"></textarea>
+    </div>
+
+    <div>
+        <label for="startDate" class="qedLabel">Start date</label>
+        <input type="text" name="startDate" class="qedField" data-dojo-type="dijit/form/DateTextBox" data-dojo-attach-point="startDateBox" />
+    </div>
+
+    <div>
+        <label for="endDate" class="qedLabel">End date</label>
+        <input type="text" name="endDate" class="qedField" data-dojo-type="dijit/form/DateTextBox" data-dojo-attach-point="endDateBox" />
+    </div>
+
+    <div>
+        <label for="mode" class="qedLabel">Mode</label>
+        <select name="mode" class="qedField" data-dojo-type="dijit/form/Select">
+            <option value="open" selected="selected">Open</option>
+            <option value="closed">Closed</option>
+        </select>
+    </div>
+
+</div>
Index: /Dev/trunk/src/client/qed-client/model/widgets/templates/SurveySummary.html
===================================================================
--- /Dev/trunk/src/client/qed-client/model/widgets/templates/SurveySummary.html	(revision 456)
+++ /Dev/trunk/src/client/qed-client/model/widgets/templates/SurveySummary.html	(revision 457)
@@ -1,6 +1,5 @@
-<fieldset class="qedFieldset">
-    <legend>Survey</legend>
-    <div><div class="qedLabel">Title</div><div class="qedField" data-dojo-attach-point="titleNode"></div></div>
+<div>
+    <div><div class="qedLabel">Title</div><div class="qedField"><a data-dojo-attach-point="titleNode"></a></div></div>
     <div><div class="qedLabel">Description</div><div class="qedField" data-dojo-attach-point="descriptionNode"></div></div>
     <div><div class="qedLabel">Questions</div><div class="qedField" data-dojo-attach-point="questionsNode"></div></div>
-</fieldset>
+</div>
Index: /Dev/trunk/src/client/qed-client/model/widgets/templates/SurveyWidget.html
===================================================================
--- /Dev/trunk/src/client/qed-client/model/widgets/templates/SurveyWidget.html	(revision 456)
+++ /Dev/trunk/src/client/qed-client/model/widgets/templates/SurveyWidget.html	(revision 457)
@@ -1,2 +1,6 @@
-<div class="${baseClass}">
-</div>
+<fieldset class="${baseClass}">
+    <label for="title">Title</label>
+    <input data-dojo-type="dijit/form/TextBox" name="title"/><br/>
+    <label for="description">Description</label>
+    <input data-dojo-type="dijit/form/Textarea" name="description"/><br/>
+</fieldset>
Index: /Dev/trunk/src/client/qed-client/pages/surveyRun.js
===================================================================
--- /Dev/trunk/src/client/qed-client/pages/surveyRun.js	(revision 456)
+++ /Dev/trunk/src/client/qed-client/pages/surveyRun.js	(revision 457)
@@ -21,5 +21,5 @@
             if ( this._started ) { return; }
             this.inherited(arguments);
-            this.propertiesForm.on("blur",lang.hitch(this,'_onPropChange'));
+            this.surveyRunWidget.on("blur",lang.hitch(this,'_onPropChange'));
             if ( this.surveyRunId ) {
                 this._loadSurveyRun();
@@ -38,6 +38,6 @@
         refreshSurveyRun: function() {
             this.titleNode.innerHTML = SurveyRun.DisplayTitle.get(this.surveyRun);
-            this.surveyNode.set('value',SurveyRun.Survey.get(this.surveyRun));
-            this.propertiesForm.set('value',this.surveyRun);
+            this.surveySummaryWidget.set('value',SurveyRun.Survey.get(this.surveyRun));
+            this.surveyRunWidget.set('value',this.surveyRun);
             this._onPropChange();
         },
@@ -70,5 +70,5 @@
         },
         _onPropChange: function(e) {
-            var surveyRun = this.propertiesForm.get('value');
+            var surveyRun = this.surveyRunWidget.get('value');
             if ( surveyRun.mode === "open" ) {
                 this.runURLNode.innerHTML = this._link(this._getGeneralURL(store.getIdentity(this.surveyRun)));
@@ -87,14 +87,19 @@
         },
         _onSave: function(evt) {
-            lang.mixin(this.surveyRun,this.propertiesForm.get('value'));
-            var not = function(p){ return !p; };
-            func.modPropIf(this.surveyRun,"startDate",not.compose(lang.isString),store.formatDate);
-            func.modPropIf(this.surveyRun,"endDate",not.compose(lang.isString),store.formatDate);
-            store.put(this.surveyRun)
-            .then(function() { 
-                Router.go('/surveys');
-            },function(err){
-                Content.notify(err);
-            });
+            if ( this.surveyRunWidget.validate() ) {
+                lang.mixin(this.surveyRun,this.surveyRunWidget.get('value'));
+
+                var SD = SurveyRun.StartDate;
+                var ED = SurveyRun.EndDate;
+                SD.set(this.surveyRun, SD.get(this.surveyRun));
+                ED.set(this.surveyRun, ED.get(this.surveyRun));
+
+                store.put(this.surveyRun)
+                .then(function() { 
+                    Router.go('/surveys');
+                },function(err){
+                    Content.notify(err);
+                });
+            }
             event.stop(evt);
             return false;
Index: /Dev/trunk/src/client/qed-client/pages/templates/previewSurvey.html
===================================================================
--- /Dev/trunk/src/client/qed-client/pages/templates/previewSurvey.html	(revision 456)
+++ /Dev/trunk/src/client/qed-client/pages/templates/previewSurvey.html	(revision 457)
@@ -10,5 +10,5 @@
     <div data-dojo-type="dijit/layout/ContentPane" data-dojo-props="region:'center'" data-dojo-attach-point="questionsPane">
         <form data-dojo-type="dijit/form/Form" data-dojo-attach-point="questionsForm" style="overflow: auto">
-            <div data-dojo-type="../model/widgets/SurveyWidget" data-dojo-attach-point="surveyWidget"></div>
+            <div data-dojo-type="../model/widgets/SurveyRenderWidget" data-dojo-attach-point="surveyWidget"></div>
         </form>
     </div>
Index: /Dev/trunk/src/client/qed-client/pages/templates/response.html
===================================================================
--- /Dev/trunk/src/client/qed-client/pages/templates/response.html	(revision 456)
+++ /Dev/trunk/src/client/qed-client/pages/templates/response.html	(revision 457)
@@ -11,5 +11,5 @@
         <form data-dojo-type="dijit/form/Form" data-dojo-attach-point="responseForm"
               data-dojo-attach-event="onSubmit:_ignoreEvent" style="overflow: auto">
-            <div data-dojo-type="../model/widgets/SurveyWidget" data-dojo-attach-point="surveyWidget"></div>
+            <div data-dojo-type="../model/widgets/SurveyRenderWidget" data-dojo-attach-point="surveyWidget"></div>
         </form>
     </div>
Index: /Dev/trunk/src/client/qed-client/pages/templates/survey.html
===================================================================
--- /Dev/trunk/src/client/qed-client/pages/templates/survey.html	(revision 456)
+++ /Dev/trunk/src/client/qed-client/pages/templates/survey.html	(revision 457)
@@ -40,5 +40,7 @@
          data-dojo-attach-point="propertiesDialog"
          data-dojo-attach-event="onSubmit:_onPropertiesOk">
-        <fieldset data-dojo-type="../model/widgets/SurveyFieldset"></fieldset>
+        <fieldset class="qedFieldset">
+            <div data-dojo-type="../model/widgets/SurveyWidget"></div>
+        </fieldset>
         <button data-dojo-type="dijit/form/Button"
                 type="submit"
Index: /Dev/trunk/src/client/qed-client/pages/templates/surveyRun.html
===================================================================
--- /Dev/trunk/src/client/qed-client/pages/templates/surveyRun.html	(revision 456)
+++ /Dev/trunk/src/client/qed-client/pages/templates/surveyRun.html	(revision 457)
@@ -9,10 +9,14 @@
     
     <div data-dojo-type="dijit/layout/ContentPane" data-dojo-props="region:'center'">
-        <div data-dojo-type="../model/widgets/SurveySummary" data-dojo-attach-point="surveyNode"></div>
-        <div data-dojo-type="dijit/form/Form"
-             data-dojo-attach-point="propertiesForm">
-            <fieldset data-dojo-type="../model/widgets/SurveyRunFieldset"></fieldset>
-        </div>
         <fieldset class="qedFieldset">
+            <legend>Survey</legend>
+            <div data-dojo-type="../model/widgets/SurveySummary" data-dojo-attach-point="surveySummaryWidget"></div>
+        </fieldset>
+        <fieldset class="qedFieldset">
+            <legend>Run Details</legend>
+            <div data-dojo-type="../model/widgets/SurveyRunWidget" data-dojo-attach-point="surveyRunWidget"></div>
+        </fieldset>
+        <fieldset class="qedFieldset">
+            <legend>Response Details</legend>
             <div><div class="qedLabel">General URL</div><div class="qedField" data-dojo-attach-point="runURLNode" style="overflow: ellipsis"></div></div>
             <div><div class="qedLabel">Responses <span data-dojo-attach-point="responsesCountNode"></span></div><div class="qedField qedFill" data-dojo-attach-point="responsesNode"></div></div>
Index: /Dev/trunk/src/client/qed-client/stddeps.js
===================================================================
--- /Dev/trunk/src/client/qed-client/stddeps.js	(revision 456)
+++ /Dev/trunk/src/client/qed-client/stddeps.js	(revision 457)
@@ -28,6 +28,6 @@
 
     './model/widgets/AccountListView',
-    './model/widgets/SurveyFieldset',
-    './model/widgets/SurveyRunFieldset',
+    './model/widgets/SurveyRenderWidget',
+    './model/widgets/SurveyRunWidget',
     './model/widgets/SurveySummary',
     './model/widgets/SurveyWidget',
