updated email digest ui
diff --git a/accounts/search_criteria/lease_agreement_list/lease_agreement_list.txt b/accounts/search_criteria/lease_agreement_list/lease_agreement_list.txt
index 164da38..19f5e1d 100644
--- a/accounts/search_criteria/lease_agreement_list/lease_agreement_list.txt
+++ b/accounts/search_criteria/lease_agreement_list/lease_agreement_list.txt
@@ -3,9 +3,9 @@
 
 	# These values are common in all dictionaries
 	{
-		'creation': '2011-07-27 13:14:29',
+		'creation': '2011-07-27 16:17:04',
 		'docstatus': 0,
-		'modified': '2011-07-27 13:14:29',
+		'modified': '2011-07-27 16:17:04',
 		'modified_by': 'Administrator',
 		'owner': 'Administrator'
 	},
diff --git a/accounts/search_criteria/lease_monthly_future_installment_inflows/lease_monthly_future_installment_inflows.txt b/accounts/search_criteria/lease_monthly_future_installment_inflows/lease_monthly_future_installment_inflows.txt
index a531bb9..bbb62bb 100644
--- a/accounts/search_criteria/lease_monthly_future_installment_inflows/lease_monthly_future_installment_inflows.txt
+++ b/accounts/search_criteria/lease_monthly_future_installment_inflows/lease_monthly_future_installment_inflows.txt
@@ -3,9 +3,9 @@
 
 	# These values are common in all dictionaries
 	{
-		'creation': '2011-07-27 13:14:29',
+		'creation': '2011-07-27 16:17:04',
 		'docstatus': 0,
-		'modified': '2011-07-27 13:14:29',
+		'modified': '2011-07-27 16:17:04',
 		'modified_by': 'Administrator',
 		'owner': 'Administrator'
 	},
diff --git a/accounts/search_criteria/lease_overdue_age_wise/lease_overdue_age_wise.txt b/accounts/search_criteria/lease_overdue_age_wise/lease_overdue_age_wise.txt
index dcd0f94..3c63377 100644
--- a/accounts/search_criteria/lease_overdue_age_wise/lease_overdue_age_wise.txt
+++ b/accounts/search_criteria/lease_overdue_age_wise/lease_overdue_age_wise.txt
@@ -3,9 +3,9 @@
 
 	# These values are common in all dictionaries
 	{
-		'creation': '2011-07-27 13:14:29',
+		'creation': '2011-07-27 16:17:04',
 		'docstatus': 0,
-		'modified': '2011-07-27 13:14:29',
+		'modified': '2011-07-27 16:17:04',
 		'modified_by': 'Administrator',
 		'owner': 'Administrator'
 	},
diff --git a/accounts/search_criteria/lease_receipt_summary_year_to_date/lease_receipt_summary_year_to_date.txt b/accounts/search_criteria/lease_receipt_summary_year_to_date/lease_receipt_summary_year_to_date.txt
index 405c8a3..c61f17b 100644
--- a/accounts/search_criteria/lease_receipt_summary_year_to_date/lease_receipt_summary_year_to_date.txt
+++ b/accounts/search_criteria/lease_receipt_summary_year_to_date/lease_receipt_summary_year_to_date.txt
@@ -3,9 +3,9 @@
 
 	# These values are common in all dictionaries
 	{
-		'creation': '2011-07-27 13:14:29',
+		'creation': '2011-07-27 16:17:04',
 		'docstatus': 0,
-		'modified': '2011-07-27 13:14:29',
+		'modified': '2011-07-27 16:17:04',
 		'modified_by': 'Administrator',
 		'owner': 'Administrator'
 	},
diff --git a/accounts/search_criteria/lease_receipts_client_wise/lease_receipts_client_wise.txt b/accounts/search_criteria/lease_receipts_client_wise/lease_receipts_client_wise.txt
index eff4087..ff3194c 100644
--- a/accounts/search_criteria/lease_receipts_client_wise/lease_receipts_client_wise.txt
+++ b/accounts/search_criteria/lease_receipts_client_wise/lease_receipts_client_wise.txt
@@ -3,9 +3,9 @@
 
 	# These values are common in all dictionaries
 	{
-		'creation': '2011-07-27 13:14:29',
+		'creation': '2011-07-27 16:17:04',
 		'docstatus': 0,
-		'modified': '2011-07-27 13:14:29',
+		'modified': '2011-07-27 16:17:04',
 		'modified_by': 'Administrator',
 		'owner': 'Administrator'
 	},
diff --git a/accounts/search_criteria/lease_yearly_future_installment_inflows/lease_yearly_future_installment_inflows.txt b/accounts/search_criteria/lease_yearly_future_installment_inflows/lease_yearly_future_installment_inflows.txt
index aa52224..c64be0a 100644
--- a/accounts/search_criteria/lease_yearly_future_installment_inflows/lease_yearly_future_installment_inflows.txt
+++ b/accounts/search_criteria/lease_yearly_future_installment_inflows/lease_yearly_future_installment_inflows.txt
@@ -3,9 +3,9 @@
 
 	# These values are common in all dictionaries
 	{
-		'creation': '2011-07-27 13:14:29',
+		'creation': '2011-07-27 16:17:04',
 		'docstatus': 0,
-		'modified': '2011-07-27 13:14:29',
+		'modified': '2011-07-27 16:17:04',
 		'modified_by': 'Administrator',
 		'owner': 'Administrator'
 	},
diff --git a/setup/doctype/email_digest/email_digest.coffee b/setup/doctype/email_digest/email_digest.coffee
index d6f5002..1b17d5b 100644
--- a/setup/doctype/email_digest/email_digest.coffee
+++ b/setup/doctype/email_digest/email_digest.coffee
@@ -1,29 +1,46 @@
 content_items = ['Sales','Expenses','Bank Balance','Activity']
-freq = ['Daily', 'Weekly']
 
 # make a grid with items and columns of checkboxes
 # Parameters:
+#   parent
 # 	label (main heading)
 #	items = [] (rows)
 #	columns = [] (columns of checks)
+#	widths
+#	description
 
 class CheckGrid
-	constructor: (@parent, @label, @items, @columns) ->
-		@tab = make_table @parent, @items.length + 1, @columns.length + 1, '80%'
+	constructor: (@args) ->
+		$.extend @, args
+		@wrapper = $a @parent, 'div', 'check-grid round'
+		@render()
+		
+	render: ->
+		$a @wrapper, 'h3', 'check-grid-title', null, @label
+		
+		if @description
+			$a @wrapper, 'div', 'help-box', null, @description
+		
+		@tab = make_table @wrapper, @items.length + 1, @columns.length, '100%', @widths
 		@checks = {}
 
 		# render heads
 		for i in [0..@columns.length-1]
-			$td(@tab, 0, i+1).innerHTML = @columns[i]
-		
+			$($td(@tab, 0, i))
+				.addClass('check-grid-head gradient')
+				.html @columns[i]
+
+		@render_rows()
+	
+	render_rows: ->
 		# render rows
 		for i in [0..@items.length-1]
 			$td(@tab, i+1, 0).innerHTML = @items[i]
 			
 			# render checkboxes for this row
 			@checks[@items[i]] = {}
-			for c in [0..@columns.length-1]
-				check = $a_input $td(@tab, i+1, c+1), 'checkbox'
+			for c in [1..@columns.length-1]
+				check = $a_input $td(@tab, i+1, c), 'checkbox'
 				
 				# tag keys to checkbox
 				check.item = @items[i]
@@ -38,8 +55,7 @@
 		for item in keys @checks
 			for column in keys @checks[item]
 				check = @checks[item][column]
-				if not val[check.item]
-					val[check.item] = {}
+				val[check.item] or= {}
 				val[check.item][check.column] = if check.checked then 1 else 0
 		val
 	
@@ -47,25 +63,39 @@
 	set: (val) =>
 		for item in keys @checks
 			for column in keys @checks[item]
-				check = @checks[item][column] 
-				check.checked = val[check.item][check.row]
+				if val[item][column]
+					@checks[item][column] .checked = val[item][column] 
+		return
 
 # attach it to onload
 cx = cur_frm.cscript
 cx.onload = (doc, dt, dn) ->
 
 	# make the content grid
-	cx.content_grid = new CheckGrid cur_frm.fields_dict.Body.wrapper, 'Email Settings',
-		content_items, freq
+	cx.content_grid = new CheckGrid 
+		parent: cur_frm.fields_dict.Body.wrapper
+		label: 'Email Settings'
+		items: content_items
+		columns: ['Item','Daily','Weekly']
+		widths: ['60%', '20%', '20%']
+		description: 'Select items to be compiled for Email Digest'
 
 	# make the email grid
-	cx.email_grid = new CheckGrid cur_frm.fields_dict.Body.wrapper, 'Send To',
-		['test1@erpnext', 'test2@erpnext'], freq
+	cx.email_grid = new CheckGrid 
+		parent: cur_frm.fields_dict.Body.wrapper
+		label: 'Send To'
+		items: ['test1@erpnext', 'test2@erpnext']
+		columns: ['Email','Daily','Weekly']
+		widths: ['60%', '20%', '20%']
+		description: 'Select who gets daily and weekly mails'
+		
+	cx.content_grid.set JSON.parse doc.content_config if doc.content_config
+	cx.email_grid.set JSON.parse doc.email_config if doc.email_config
+	
+	return
 
 # update the data before sending
 cx.validate = (doc, dt, dn) ->
 	doc.content_config = JSON.stringify cx.content_grid.get()
 	doc.email_config = JSON.stringify cx.email_grid.get()
-
-	
 		
\ No newline at end of file
diff --git a/setup/doctype/email_digest/email_digest.js b/setup/doctype/email_digest/email_digest.js
index 77d11e6..ddb13f4 100644
--- a/setup/doctype/email_digest/email_digest.js
+++ b/setup/doctype/email_digest/email_digest.js
@@ -1,35 +1,51 @@
 (function() {
-  var CheckGrid, content_items, cx, freq;
+  var CheckGrid, content_items, cx;
   var __bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; };
   content_items = ['Sales', 'Expenses', 'Bank Balance', 'Activity'];
-  freq = ['Daily', 'Weekly'];
   CheckGrid = (function() {
-    function CheckGrid(parent, label, items, columns) {
-      var c, check, i, _ref, _ref2, _ref3;
-      this.parent = parent;
-      this.label = label;
-      this.items = items;
-      this.columns = columns;
+    function CheckGrid(args) {
+      this.args = args;
       this.set = __bind(this.set, this);
       this.get = __bind(this.get, this);
-      this.tab = make_table(this.parent, this.items.length + 1, this.columns.length + 1, '80%');
+      $.extend(this, args);
+      this.wrapper = $a(this.parent, 'div', 'check-grid round');
+      this.render();
+    }
+    CheckGrid.prototype.render = function() {
+      var i, _ref;
+      $a(this.wrapper, 'h3', 'check-grid-title', null, this.label);
+      if (this.description) {
+        $a(this.wrapper, 'div', 'help-box', null, this.description);
+      }
+      this.tab = make_table(this.wrapper, this.items.length + 1, this.columns.length, '100%', this.widths);
       this.checks = {};
       for (i = 0, _ref = this.columns.length - 1; 0 <= _ref ? i <= _ref : i >= _ref; 0 <= _ref ? i++ : i--) {
-        $td(this.tab, 0, i + 1).innerHTML = this.columns[i];
+        $($td(this.tab, 0, i)).addClass('check-grid-head gradient').html(this.columns[i]);
       }
-      for (i = 0, _ref2 = this.items.length - 1; 0 <= _ref2 ? i <= _ref2 : i >= _ref2; 0 <= _ref2 ? i++ : i--) {
+      return this.render_rows();
+    };
+    CheckGrid.prototype.render_rows = function() {
+      var c, check, i, _ref, _results;
+      _results = [];
+      for (i = 0, _ref = this.items.length - 1; 0 <= _ref ? i <= _ref : i >= _ref; 0 <= _ref ? i++ : i--) {
         $td(this.tab, i + 1, 0).innerHTML = this.items[i];
         this.checks[this.items[i]] = {};
-        for (c = 0, _ref3 = this.columns.length - 1; 0 <= _ref3 ? c <= _ref3 : c >= _ref3; 0 <= _ref3 ? c++ : c--) {
-          check = $a_input($td(this.tab, i + 1, c + 1), 'checkbox');
-          check.item = this.items[i];
-          check.column = this.columns[c];
-          this.checks[this.items[i]][this.columns[c]] = check;
-        }
+        _results.push((function() {
+          var _ref2, _results2;
+          _results2 = [];
+          for (c = 1, _ref2 = this.columns.length - 1; 1 <= _ref2 ? c <= _ref2 : c >= _ref2; 1 <= _ref2 ? c++ : c--) {
+            check = $a_input($td(this.tab, i + 1, c), 'checkbox');
+            check.item = this.items[i];
+            check.column = this.columns[c];
+            _results2.push(this.checks[this.items[i]][this.columns[c]] = check);
+          }
+          return _results2;
+        }).call(this));
       }
-    }
+      return _results;
+    };
     CheckGrid.prototype.get = function() {
-      var check, column, item, val, _i, _j, _len, _len2, _ref, _ref2;
+      var check, column, item, val, _i, _j, _len, _len2, _name, _ref, _ref2;
       val = {};
       _ref = keys(this.checks);
       for (_i = 0, _len = _ref.length; _i < _len; _i++) {
@@ -38,40 +54,52 @@
         for (_j = 0, _len2 = _ref2.length; _j < _len2; _j++) {
           column = _ref2[_j];
           check = this.checks[item][column];
-          if (!val[check.item]) {
-            val[check.item] = {};
-          }
+          val[_name = check.item] || (val[_name] = {});
           val[check.item][check.column] = check.checked ? 1 : 0;
         }
       }
       return val;
     };
     CheckGrid.prototype.set = function(val) {
-      var check, column, item, _i, _len, _ref, _results;
+      var column, item, _i, _j, _len, _len2, _ref, _ref2;
       _ref = keys(this.checks);
-      _results = [];
       for (_i = 0, _len = _ref.length; _i < _len; _i++) {
         item = _ref[_i];
-        _results.push((function() {
-          var _j, _len2, _ref2, _results2;
-          _ref2 = keys(this.checks[item]);
-          _results2 = [];
-          for (_j = 0, _len2 = _ref2.length; _j < _len2; _j++) {
-            column = _ref2[_j];
-            check = this.checks[item][column];
-            _results2.push(check.checked = val[check.item][check.row]);
+        _ref2 = keys(this.checks[item]);
+        for (_j = 0, _len2 = _ref2.length; _j < _len2; _j++) {
+          column = _ref2[_j];
+          if (val[item][column]) {
+            this.checks[item][column].checked = val[item][column];
           }
-          return _results2;
-        }).call(this));
+        }
       }
-      return _results;
     };
     return CheckGrid;
   })();
   cx = cur_frm.cscript;
   cx.onload = function(doc, dt, dn) {
-    cx.content_grid = new CheckGrid(cur_frm.fields_dict.Body.wrapper, 'Email Settings', content_items, freq);
-    return cx.email_grid = new CheckGrid(cur_frm.fields_dict.Body.wrapper, 'Send To', ['test1@erpnext', 'test2@erpnext'], freq);
+    cx.content_grid = new CheckGrid({
+      parent: cur_frm.fields_dict.Body.wrapper,
+      label: 'Email Settings',
+      items: content_items,
+      columns: ['Item', 'Daily', 'Weekly'],
+      widths: ['60%', '20%', '20%'],
+      description: 'Select items to be compiled for Email Digest'
+    });
+    cx.email_grid = new CheckGrid({
+      parent: cur_frm.fields_dict.Body.wrapper,
+      label: 'Send To',
+      items: ['test1@erpnext', 'test2@erpnext'],
+      columns: ['Email', 'Daily', 'Weekly'],
+      widths: ['60%', '20%', '20%'],
+      description: 'Select who gets daily and weekly mails'
+    });
+    if (doc.content_config) {
+      cx.content_grid.set(JSON.parse(doc.content_config));
+    }
+    if (doc.email_config) {
+      cx.email_grid.set(JSON.parse(doc.email_config));
+    }
   };
   cx.validate = function(doc, dt, dn) {
     doc.content_config = JSON.stringify(cx.content_grid.get());
diff --git a/setup/doctype/email_digest/email_digest.txt b/setup/doctype/email_digest/email_digest.txt
index 4258f84..026caa7 100644
--- a/setup/doctype/email_digest/email_digest.txt
+++ b/setup/doctype/email_digest/email_digest.txt
@@ -5,14 +5,14 @@
 	{
 		'creation': '2011-07-27 14:23:09',
 		'docstatus': 0,
-		'modified': '2011-07-27 15:22:11',
+		'modified': '2011-07-27 17:32:27',
 		'modified_by': 'Administrator',
 		'owner': 'Administrator'
 	},
 
 	# These values are common for all DocType
 	{
-		'_last_update': '1311759390',
+		'_last_update': '1311760331',
 		'colour': 'White:FFF',
 		'doctype': 'DocType',
 		'issingle': 1,
@@ -20,7 +20,7 @@
 		'name': '__common__',
 		'section_style': 'Simple',
 		'show_in_menu': 0,
-		'version': 3
+		'version': 4
 	},
 
 	# These values are common for all DocField
@@ -72,6 +72,7 @@
 		'doctype': 'DocField',
 		'fieldname': 'content_config',
 		'fieldtype': 'Text',
+		'hidden': 1,
 		'idx': 2,
 		'label': 'Content Config'
 	},
@@ -81,6 +82,7 @@
 		'doctype': 'DocField',
 		'fieldname': 'email_config',
 		'fieldtype': 'Text',
+		'hidden': 1,
 		'idx': 3,
 		'label': 'Email Config'
 	}