diff --git a/css/all-app.css b/css/all-app.css
index 7faff74..5ee09bf 100644
--- a/css/all-app.css
+++ b/css/all-app.css
@@ -2252,4 +2252,16 @@
 .module-icons-selling{ background-position: 0 -528px;  } 
 .module-icons-setup{ background-position: 0 -594px;  } 
 .module-icons-stock{ background-position: 0 -660px;  } 
-.module-icons-support{ background-position: 0 -726px;  } 
\ No newline at end of file
+.module-icons-support{ background-position: 0 -726px;  } 
+
+.topbar-new-comments {
+	margin: -3px 0px;
+	padding: 2px;
+	font-size: 14px;
+	color: #fff;
+	background-color: #B00D07;
+	min-width: 20px;
+	text-align: center;
+	display: inline-block;
+	border-radius: 2px;
+}
diff --git a/css/all-web.css b/css/all-web.css
index 3350100..13ea802 100644
--- a/css/all-web.css
+++ b/css/all-web.css
@@ -1036,6 +1036,19 @@
 .module-icons-setup{ background-position: 0 -594px;  } 
 .module-icons-stock{ background-position: 0 -660px;  } 
 .module-icons-support{ background-position: 0 -726px;  } 
+
+.topbar-new-comments {
+	margin: -3px 0px;
+	padding: 2px;
+	font-size: 14px;
+	color: #fff;
+	background-color: #B00D07;
+	min-width: 20px;
+	text-align: center;
+	display: inline-block;
+	border-radius: 2px;
+}
+
 /*
  *	erpnext/website/css/website.css
  */#body_div {
diff --git a/erpnext/home/doctype/home_control/home_control.py b/erpnext/home/doctype/home_control/home_control.py
index 9d82153..1999345 100644
--- a/erpnext/home/doctype/home_control/home_control.py
+++ b/erpnext/home/doctype/home_control/home_control.py
@@ -197,10 +197,11 @@
 		return count
 		
 	def get_todo_list(self):
-		return sql("""select name, description, date, 
+		res = sql("""select name, description, `date`, 
 			priority, checked, reference_type, reference_name from `tabToDo Item` 
 			where owner=%s order by field(priority,'High','Medium','Low') asc, date asc""", \
 				session['user'], as_dict=1)
+		return res
 		
 	def add_todo_item(self,args):
 		args = json.loads(args)
@@ -213,11 +214,27 @@
 		d.owner = session['user']
 		d.save(not args.get('name') and 1 or 0)
 
+		if args.get('name') and d.checked:
+			self.notify_assignment(d)
+	
 		return d.name
 
 	def remove_todo_item(self,nm):
+		d = Document('ToDo Item', nm or None)
+		if d and d.name:
+			self.notify_assignment(d)
 		sql("delete from `tabToDo Item` where name = %s",nm)
 
+	def notify_assignment(self, d):
+		doc_type = d.fields.get('reference_type')
+		doc_name = d.fields.get('reference_name')
+		assigned_by = d.fields.get('assigned_by')
+		if doc_type and doc_name and assigned_by:
+			from webnotes.widgets.form import assign_to
+			assign_to.notify_assignment(assigned_by, d.owner, doc_type, doc_name)
+
+
+
 	# -------------------------------------------------------------------------------------------------------
 
 	def dismiss_message(self, arg=''):
diff --git a/erpnext/home/page/event_updates/event_updates.js b/erpnext/home/page/event_updates/event_updates.js
index 4df78e3..15f84d9 100644
--- a/erpnext/home/page/event_updates/event_updates.js
+++ b/erpnext/home/page/event_updates/event_updates.js
@@ -95,6 +95,7 @@
 		
 		if(online_users.length) {
 			var max = online_users.length; max = (max > 10 ? 10 : max)
+			me.wrapper.innerHTML = "";
 			for(var i=0; i<max; i++) {
 				new OneOnlineUser(me.wrapper, online_users[i]);
 			}
@@ -577,34 +578,13 @@
 		(strip(det.full_name) ? det.full_name : det.modified_by);
 }
 
-HomeStatusBar = function() {
-	var me = this;
-	var parent = page_body.pages['Event Updates'];
-	this.wrapper = $a($td(parent.main_tab, 0, 1), 'div', 'home-status', {}, 'Loading...');
-	$br(this.wrapper, '3px');
-	
-	this.render = function(r) {
-		this.wrapper.innerHTML = '';
-		this.span = $a($a(this.wrapper, 'p'), 'span', 'link_type', {fontWeight:'bold'});
-		this.span.onclick = function() { loadpage('My Company')	}
-		
-		if(r.unread_messages) {
-			this.span.innerHTML = '<span class="home-status-unread">' + r.unread_messages + '</span> unread';
-		} else {
-			this.span.innerHTML = 'Team / Messages';			
-		}
-		
-	}
-}
-
 pscript.home_make_status = function() {
-	var home_status_bar = new HomeStatusBar()
 	var wrapper = page_body.pages['Event Updates'];
 
 	// get values
 	$c_page('home', 'event_updates', 'get_status_details', user,
 		function(r,rt) { 
-			home_status_bar.render(r.message);
+			page_body.wntoolbar.set_new_comments(r.message.unread_messages);
 										
 			// render online users
 			pscript.online_users_obj.render(r.message.online_users);
diff --git a/erpnext/home/page/event_updates/event_updates.py b/erpnext/home/page/event_updates/event_updates.py
index 6966b87..05f3d93 100644
--- a/erpnext/home/page/event_updates/event_updates.py
+++ b/erpnext/home/page/event_updates/event_updates.py
@@ -10,13 +10,16 @@
 		and t1.user not in ('Guest','Administrator')
 		and TIMESTAMPDIFF(HOUR,t1.lastupdate,NOW()) <= 1""", as_list=1) or []
 
+@webnotes.whitelist()
 def get_unread_messages(arg=None):
 	"returns unread (docstatus-0 messages for a user)"
-	return cint(webnotes.conn.sql("""SELECT COUNT(*) FROM `tabComment Widget Record`
-	WHERE comment_doctype='My Company'
-	AND comment_docname = %s
-	AND ifnull(docstatus,0)=0
-	""", webnotes.user.name)[0][0])
+	return webnotes.conn.sql("""\
+		SELECT name, comment
+		FROM `tabComment Widget Record`
+		WHERE comment_doctype='My Company'
+		AND comment_docname = %s
+		AND ifnull(docstatus,0)=0
+		""", webnotes.user.name, as_list=1)
 
 @webnotes.whitelist()
 def get_status_details(arg=None):
@@ -30,8 +33,6 @@
 		'user_count': len(online) or 0, 
 		'unread_messages': get_unread_messages(),
 		'online_users': online or [],
-		'is_trial': webnotes.conn.get_global('is_trial'),
-		'days_to_expiry': (webnotes.conn.get_global('days_to_expiry') or '0'),
 		'setup_status': get_setup_status(),
 		'registration_complete': cint(get_defaults('registration_complete')) and 'Yes' or 'No',
 		'profile': webnotes.conn.sql("""\
diff --git a/erpnext/home/page/my_company/my_company.py b/erpnext/home/page/my_company/my_company.py
index a63e8d9..ead5333 100644
--- a/erpnext/home/page/my_company/my_company.py
+++ b/erpnext/home/page/my_company/my_company.py
@@ -119,7 +119,7 @@
 	d.comment = arg['comment']
 	d.save(1)
 	
-	if cint(arg['notify']):
+	if cint(arg.get('notify')):
 		fn = webnotes.conn.sql('select first_name, last_name from tabProfile where name=%s', webnotes.user.name)[0]
 		if fn[0] or f[1]:
 			fn = cstr(fn[0]) + (fn[0] and ' ' or '') + cstr(fn[1])
diff --git a/erpnext/patches/jan_mar_2012/apps/__init__.py b/erpnext/patches/jan_mar_2012/apps/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/erpnext/patches/jan_mar_2012/apps/__init__.py
diff --git a/erpnext/patches/jan_mar_2012/apps/todo_item.py b/erpnext/patches/jan_mar_2012/apps/todo_item.py
new file mode 100644
index 0000000..f2239f5
--- /dev/null
+++ b/erpnext/patches/jan_mar_2012/apps/todo_item.py
@@ -0,0 +1,6 @@
+def execute():
+	"""
+		* Reload ToDo Item
+	"""
+	from webnotes.modules.module_manager import reload_doc
+	reload_doc('utilities', 'doctype', 'todo_item')
diff --git a/erpnext/patches/jan_mar_2012/website/all.py b/erpnext/patches/jan_mar_2012/website/all.py
index 2a55d72..c68e653 100644
--- a/erpnext/patches/jan_mar_2012/website/all.py
+++ b/erpnext/patches/jan_mar_2012/website/all.py
@@ -3,6 +3,9 @@
 import patches.jan_mar_2012.website.website
 import patches.jan_mar_2012.website.cleanups
 import patches.jan_mar_2012.website.domain_list
+import patches.jan_mar_2012.website.file_data_rename
+import patches.jan_mar_2012.website.analytics
+
 
 def execute():
 	patches.jan_mar_2012.website.login.execute()
@@ -11,3 +14,4 @@
 	patches.jan_mar_2012.website.cleanups.execute()
 	patches.jan_mar_2012.website.domain_list.execute()
 	patches.jan_mar_2012.website.file_data_rename.execute()
+	patches.jan_mar_2012.website.analytics.execute()
diff --git a/erpnext/startup/startup.css b/erpnext/startup/startup.css
index 6e368ac..0fee616 100644
--- a/erpnext/startup/startup.css
+++ b/erpnext/startup/startup.css
@@ -43,4 +43,16 @@
 .module-icons-selling{ background-position: 0 -528px;  } 
 .module-icons-setup{ background-position: 0 -594px;  } 
 .module-icons-stock{ background-position: 0 -660px;  } 
-.module-icons-support{ background-position: 0 -726px;  } 
\ No newline at end of file
+.module-icons-support{ background-position: 0 -726px;  } 
+
+.topbar-new-comments {
+	margin: -3px 0px;
+	padding: 2px;
+	font-size: 14px;
+	color: #fff;
+	background-color: #B00D07;
+	min-width: 20px;
+	text-align: center;
+	display: inline-block;
+	border-radius: 2px;
+}
diff --git a/erpnext/startup/startup.js b/erpnext/startup/startup.js
index d40f233..c68650a 100644
--- a/erpnext/startup/startup.js
+++ b/erpnext/startup/startup.js
@@ -29,13 +29,16 @@
 
 		// setup toolbar
 		erpnext.toolbar.setup();
+		
+		// set interval for updates
+		erpnext.startup.set_periodic_updates();
 
 		// border to the body
 		// ------------------
 		$('footer').html('<div class="erpnext-footer">\
 			Powered by <a href="https://erpnext.com">ERPNext</a></div>');
 	}
-	
+
 	$('#startup_div').toggle(false);
 }
 
@@ -77,6 +80,35 @@
 	if(callback) this.callback = function(){ callback(); }
 }
 
+// ========== Update Messages ============
+var update_messages = function() {
+	// Updates Team Messages
+	
+	if(inList(['Guest', 'Administrator'], user)) { return; }
+	
+	$c_page('home', 'event_updates', 'get_unread_messages', null,
+		function(r,rt) {
+			if(!r.exc) {
+				// This function is defined in toolbar.js
+				page_body.wntoolbar.set_new_comments(r.message);
+			}
+		}
+	);
+}
+
+erpnext.startup.set_periodic_updates = function() {
+	// Set interval for periodic updates of team messages
+	wn.updates = {};
+
+	if(wn.updates.id) {
+		clearInterval(wn.updates.id);
+	}
+
+	wn.updates.id = setInterval(update_messages, 180000);
+}
+
+// =======================================
+
 // start
 $(document).bind('startup', function() {
 	erpnext.startup.start();	
diff --git a/erpnext/startup/toolbar.js b/erpnext/startup/toolbar.js
index 49738ce..11499b8 100644
--- a/erpnext/startup/toolbar.js
+++ b/erpnext/startup/toolbar.js
@@ -3,7 +3,12 @@
 
 erpnext.toolbar.setup = function() {
 	// profile
-	$('#toolbar-user').append('<li><a href="#profile-settings">Profile Settings</a></li>')
+	$('#toolbar-user').append('<li><a href="#profile-settings">Profile Settings</a></li>');
+	
+	$('#toolbar-user').append('<li><a href="#My Company">Team / Messages</a></li>');
+
+	$('.topbar .secondary-nav').prepend('\
+		<li><a href="#" id="toolbar-new-comments"></a></li>');
 
 	// help
 	$('.topbar .secondary-nav').append('<li class="dropdown">\
@@ -24,4 +29,25 @@
 	if(pscript.is_erpnext_saas && is_system_manager) {
 		$('#toolbar-user').append('<li><a href="#billing">Billing</a></li>')
 	}
-}
\ No newline at end of file
+
+	$.extend(page_body.wntoolbar, {
+		set_new_comments: function(new_comments) {
+			var topbar_nc = $('#toolbar-new-comments');
+			if(new_comments && new_comments.length>0) {
+				topbar_nc.html('<span class="topbar-new-comments">' + new_comments.length + '</span>');
+				topbar_nc.click(function() { loadpage('My Company'); });
+				$.each(new_comments, function(i, v) {
+					var msg = 'New Message: ' + (v[1].length<=100 ? v[1] : (v[1].substr(0, 100) + "..."));
+					var id = v[0].replace('/', '-');
+					if(!$('#' + id)[0]) { show_alert(msg, id); }
+				})
+			} else {
+				topbar_nc.html('');
+				topbar_nc.click(function() { return false; });
+			}
+		}
+	});
+
+	page_body.wntoolbar.set_new_comments();
+}
+
diff --git a/erpnext/utilities/doctype/todo_item/todo_item.txt b/erpnext/utilities/doctype/todo_item/todo_item.txt
index 28745ae..86f5d0d 100644
--- a/erpnext/utilities/doctype/todo_item/todo_item.txt
+++ b/erpnext/utilities/doctype/todo_item/todo_item.txt
@@ -3,140 +3,211 @@
 
 	# These values are common in all dictionaries
 	{
-		'creation': '2009-05-12 11:19:11',
+		'creation': '2009-05-12 16:43:58',
 		'docstatus': 0,
-		'modified': '2010-09-20 14:06:57',
-		'modified_by': 'yogesh@webnotestech.com',
-		'owner': 'Administrator'
+		'modified': '2012-02-17 15:48:54',
+		'modified_by': u'Administrator',
+		'owner': u'Administrator'
 	},
 
 	# These values are common for all DocType
 	{
-		'autoname': 'TDI.########',
-		'colour': 'White:FFF',
+		'allow_attach': 0,
+		'allow_copy': 0,
+		'allow_email': 0,
+		'allow_print': 0,
+		'allow_rename': 0,
+		'allow_trash': 0,
+		'autoname': u'TDI.########',
+		'colour': u'White:FFF',
 		'doctype': 'DocType',
+		'hide_heading': 0,
+		'hide_toolbar': 0,
 		'in_create': 1,
-		'module': 'Utilities',
+		'in_dialog': 0,
+		'is_transaction_doc': 0,
+		'issingle': 0,
+		'max_attachments': 0,
+		'module': u'Utilities',
 		'name': '__common__',
 		'read_only': 1,
-		'section_style': 'Simple',
-		'server_code_error': ' ',
-		'show_in_menu': 0
+		'read_only_onload': 0,
+		'section_style': u'Simple',
+		'server_code_error': u' ',
+		'show_in_menu': 0,
+		'use_template': 0,
+		'version': 5
 	},
 
 	# These values are common for all DocField
 	{
-		'doctype': 'DocField',
+		'doctype': u'DocField',
 		'name': '__common__',
-		'parent': 'ToDo Item',
-		'parentfield': 'fields',
-		'parenttype': 'DocType',
+		'parent': u'ToDo Item',
+		'parentfield': u'fields',
+		'parenttype': u'DocType',
 		'permlevel': 0
 	},
 
 	# These values are common for all DocPerm
 	{
 		'create': 1,
-		'doctype': 'DocPerm',
-		'idx': 1,
+		'doctype': u'DocPerm',
 		'name': '__common__',
-		'parent': 'ToDo Item',
-		'parentfield': 'permissions',
-		'parenttype': 'DocType',
+		'parent': u'ToDo Item',
+		'parentfield': u'permissions',
+		'parenttype': u'DocType',
 		'permlevel': 0,
 		'read': 1,
-		'role': 'All'
+		'role': u'All',
+		'write': 1
 	},
 
 	# DocType, ToDo Item
 	{
 		'doctype': 'DocType',
-		'name': 'ToDo Item'
+		'name': u'ToDo Item'
 	},
 
 	# DocPerm
 	{
-		'doctype': 'DocPerm'
+		'doctype': u'DocPerm'
 	},
 
 	# DocField
 	{
-		'doctype': 'DocField',
-		'fieldname': 'description',
-		'fieldtype': 'Text',
-		'idx': 1,
-		'label': 'Description',
-		'oldfieldname': 'description',
-		'oldfieldtype': 'Text',
-		'width': '300px'
+		'allow_on_submit': 0,
+		'doctype': u'DocField',
+		'fieldname': u'description',
+		'fieldtype': u'Text',
+		'hidden': 0,
+		'in_filter': 0,
+		'label': u'Description',
+		'no_copy': 0,
+		'oldfieldname': u'description',
+		'oldfieldtype': u'Text',
+		'print_hide': 0,
+		'report_hide': 0,
+		'reqd': 0,
+		'search_index': 0,
+		'width': u'300px'
 	},
 
 	# DocField
 	{
-		'doctype': 'DocField',
-		'fieldname': 'date',
-		'fieldtype': 'Date',
-		'idx': 2,
-		'label': 'Date',
-		'oldfieldname': 'date',
-		'oldfieldtype': 'Date',
-		'reqd': 1
+		'allow_on_submit': 0,
+		'doctype': u'DocField',
+		'fieldname': u'date',
+		'fieldtype': u'Date',
+		'hidden': 0,
+		'in_filter': 0,
+		'label': u'Date',
+		'no_copy': 0,
+		'oldfieldname': u'date',
+		'oldfieldtype': u'Date',
+		'print_hide': 0,
+		'report_hide': 0,
+		'reqd': 0,
+		'search_index': 0
 	},
 
 	# DocField
 	{
-		'doctype': 'DocField',
-		'fieldname': 'priority',
-		'fieldtype': 'Data',
-		'idx': 3,
-		'label': 'Priority',
-		'oldfieldname': 'priority',
-		'oldfieldtype': 'Data',
-		'reqd': 1
+		'allow_on_submit': 0,
+		'doctype': u'DocField',
+		'fieldname': u'priority',
+		'fieldtype': u'Data',
+		'hidden': 0,
+		'in_filter': 0,
+		'label': u'Priority',
+		'no_copy': 0,
+		'oldfieldname': u'priority',
+		'oldfieldtype': u'Data',
+		'print_hide': 0,
+		'report_hide': 0,
+		'reqd': 0,
+		'search_index': 0
 	},
 
 	# DocField
 	{
-		'doctype': 'DocField',
-		'fieldname': 'reference_type',
-		'fieldtype': 'Data',
-		'idx': 4,
-		'label': 'Reference Type',
-		'oldfieldname': 'reference_type',
-		'oldfieldtype': 'Data'
+		'allow_on_submit': 0,
+		'doctype': u'DocField',
+		'fieldname': u'reference_type',
+		'fieldtype': u'Data',
+		'hidden': 0,
+		'in_filter': 0,
+		'label': u'Reference Type',
+		'no_copy': 0,
+		'oldfieldname': u'reference_type',
+		'oldfieldtype': u'Data',
+		'print_hide': 0,
+		'report_hide': 0,
+		'reqd': 0,
+		'search_index': 0
 	},
 
 	# DocField
 	{
-		'doctype': 'DocField',
-		'fieldname': 'reference_name',
-		'fieldtype': 'Data',
-		'idx': 5,
-		'label': 'Reference Name',
-		'oldfieldname': 'reference_name',
-		'oldfieldtype': 'Data'
+		'allow_on_submit': 0,
+		'doctype': u'DocField',
+		'fieldname': u'reference_name',
+		'fieldtype': u'Data',
+		'hidden': 0,
+		'in_filter': 0,
+		'label': u'Reference Name',
+		'no_copy': 0,
+		'oldfieldname': u'reference_name',
+		'oldfieldtype': u'Data',
+		'print_hide': 0,
+		'report_hide': 0,
+		'reqd': 0,
+		'search_index': 0
 	},
 
 	# DocField
 	{
-		'doctype': 'DocField',
-		'fieldname': 'checked',
-		'fieldtype': 'Check',
-		'idx': 6,
-		'label': 'Checked',
-		'oldfieldname': 'checked',
-		'oldfieldtype': 'Check'
+		'allow_on_submit': 0,
+		'doctype': u'DocField',
+		'fieldname': u'checked',
+		'fieldtype': u'Check',
+		'hidden': 0,
+		'in_filter': 0,
+		'label': u'Checked',
+		'no_copy': 0,
+		'oldfieldname': u'checked',
+		'oldfieldtype': u'Check',
+		'print_hide': 0,
+		'report_hide': 0,
+		'reqd': 0,
+		'search_index': 0
 	},
 
 	# DocField
 	{
-		'doctype': 'DocField',
-		'fieldname': 'role',
-		'fieldtype': 'Link',
-		'idx': 7,
-		'label': 'Role',
-		'oldfieldname': 'role',
-		'oldfieldtype': 'Link',
-		'options': 'Role'
+		'allow_on_submit': 0,
+		'doctype': u'DocField',
+		'fieldname': u'role',
+		'fieldtype': u'Link',
+		'hidden': 0,
+		'in_filter': 0,
+		'label': u'Role',
+		'no_copy': 0,
+		'oldfieldname': u'role',
+		'oldfieldtype': u'Link',
+		'options': u'Role',
+		'print_hide': 0,
+		'report_hide': 0,
+		'reqd': 0,
+		'search_index': 0
+	},
+
+	# DocField
+	{
+		'doctype': u'DocField',
+		'fieldname': u'assigned_by',
+		'fieldtype': u'Link',
+		'label': u'Assigned By',
+		'options': u'Profile'
 	}
 ]
\ No newline at end of file
diff --git a/js/all-app.js b/js/all-app.js
index 839b8ef..0c8cad7 100644
--- a/js/all-app.js
+++ b/js/all-app.js
Binary files differ
diff --git a/js/all-web.js b/js/all-web.js
index 663dd45..33348c5 100644
--- a/js/all-web.js
+++ b/js/all-web.js
@@ -407,8 +407,9 @@
 if(!msg_dialog.display)msg_dialog.show();var has_msg=msg_dialog.msg_area.innerHTML?1:0;var m=$a(msg_dialog.msg_area,'div','');if(has_msg)$y(m,{marginTop:'4px'});$dh(msg_dialog.msg_icon);if(msg.substr(0,6).toLowerCase()=='error:'){msg_dialog.msg_icon.src='lib/images/icons/error.gif';$di(msg_dialog.msg_icon);msg=msg.substr(6);}else if(msg.substr(0,8).toLowerCase()=='message:'){msg_dialog.msg_icon.src='lib/images/icons/application.gif';$di(msg_dialog.msg_icon);msg=msg.substr(8);}else if(msg.substr(0,3).toLowerCase()=='ok:'){msg_dialog.msg_icon.src='lib/images/icons/accept.gif';$di(msg_dialog.msg_icon);msg=msg.substr(3);}
 m.innerHTML=replace_newlines(msg);if(m.offsetHeight>200){$y(m,{height:'200px',width:'400px',overflow:'auto'})}
 msg_dialog.custom_onhide=callback;}
-var growl_area;function show_alert(txt){if(!growl_area){growl_area=$a(popup_cont,'div','',{position:'fixed',bottom:'8px',right:'8px',width:'320px',zIndex:10});}
-var wrapper=$a(growl_area,'div','',{position:'relative'});var body=$a(wrapper,'div','notice');var c=$a(body,'div','wn-icon ic-round_delete',{cssFloat:'right'});$(c).click(function(){$dh(this.wrapper)});c.wrapper=wrapper;var t=$a(body,'div','',{color:'#FFF'});$(t).html(txt);$(wrapper).hide().fadeIn(1000);}
+var growl_area;function show_alert(txt,id){if(!growl_area){growl_area=$a(popup_cont,'div','',{position:'fixed',bottom:'8px',right:'8px',width:'320px',zIndex:10});}
+var wrapper=$a(growl_area,'div','',{position:'relative'});var body=$a(wrapper,'div','notice');var c=$a(body,'div','wn-icon ic-round_delete',{cssFloat:'right'});$(c).click(function(){$dh(this.wrapper)});c.wrapper=wrapper;var t=$a(body,'div','',{color:'#FFF'});$(t).html(txt);if(id){$(t).attr('id',id);}
+$(wrapper).hide().fadeIn(1000);}
 /*
  *	lib/js/legacy/utils/shortcut.js
  */
@@ -1111,7 +1112,7 @@
 var current_module;var is_system_manager=0;var module_content_dict={};var user_full_nm={};wn.provide('erpnext.startup');erpnext.startup.set_globals=function(){pscript.is_erpnext_saas=cint(wn.control_panel.sync_with_gateway)
 if(inList(user_roles,'System Manager'))is_system_manager=1;}
 erpnext.startup.start=function(){$('#startup_div').html('Starting up...').toggle(true);erpnext.startup.set_globals();if(user=='Guest'){$dh(page_body.left_sidebar);if(wn.boot.custom_css){set_style(wn.boot.custom_css);}
-if(wn.boot.website_settings.title_prefix){wn.title_prefix=wn.boot.website_settings.title_prefix;}}else{pscript.startup_make_sidebar();erpnext.toolbar.setup();$('footer').html('<div class="erpnext-footer">\
+if(wn.boot.website_settings.title_prefix){wn.title_prefix=wn.boot.website_settings.title_prefix;}}else{pscript.startup_make_sidebar();erpnext.toolbar.setup();erpnext.startup.set_periodic_updates();$('footer').html('<div class="erpnext-footer">\
    Powered by <a href="https://erpnext.com">ERPNext</a></div>');}
 $('#startup_div').toggle(false);}
 show_chart_browser=function(nm,chart_type){var call_back=function(){if(nm=='Sales Browser'){var sb_obj=new SalesBrowser();sb_obj.set_val(chart_type);}
@@ -1121,6 +1122,10 @@
 ModulePage=function(parent,module_name,module_label,help_page,callback){this.parent=parent;page_body.cur_page.module_page=this;this.wrapper=$a(parent,'div');this.module_name=module_name;this.transactions=[];this.page_head=new PageHeader(this.wrapper,module_label);if(help_page){var btn=this.page_head.add_button('Help',function(){loadpage(this.help_page)},1,'ui-icon-help')
 btn.help_page=help_page;}
 if(callback)this.callback=function(){callback();}}
+var update_messages=function(){if(inList(['Guest','Administrator'],user)){return;}
+$c_page('home','event_updates','get_unread_messages',null,function(r,rt){if(!r.exc){page_body.wntoolbar.set_new_comments(r.message);}});}
+erpnext.startup.set_periodic_updates=function(){wn.updates={};if(wn.updates.id){clearInterval(wn.updates.id);}
+wn.updates.id=setInterval(update_messages,180000);}
 $(document).bind('startup',function(){erpnext.startup.start();});
 /*
  *	erpnext/website/js/topbar.js
diff --git a/version.num b/version.num
index 1e27e32..6aedc8e 100644
--- a/version.num
+++ b/version.num
@@ -1 +1 @@
-478
\ No newline at end of file
+571
