fixes after sync
diff --git a/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.js b/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.js
index a8550d5..7e77068 100644
--- a/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.js
+++ b/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.js
@@ -17,7 +17,7 @@
 cur_frm.cscript.tname = "Purchase Invoice Item";
 cur_frm.cscript.fname = "entries";
 cur_frm.cscript.other_fname = "purchase_tax_details";
-wn.require('erpnext/buying/doctype/purchase_other_charges/purchase_other_charges.js');
+wn.require('erpnext/accounts/doctype/purchase_taxes_and_charges_master/purchase_taxes_and_charges_master.js');
 wn.require('erpnext/buying/doctype/purchase_common/purchase_common.js');
 
 // On Load
diff --git a/erpnext/buying/doctype/purchase_taxes_and_charges_master/__init__.py b/erpnext/accounts/doctype/purchase_taxes_and_charges_master/__init__.py
similarity index 100%
rename from erpnext/buying/doctype/purchase_taxes_and_charges_master/__init__.py
rename to erpnext/accounts/doctype/purchase_taxes_and_charges_master/__init__.py
diff --git a/erpnext/buying/doctype/purchase_taxes_and_charges_master/purchase_taxes_and_charges_master.js b/erpnext/accounts/doctype/purchase_taxes_and_charges_master/purchase_taxes_and_charges_master.js
similarity index 100%
rename from erpnext/buying/doctype/purchase_taxes_and_charges_master/purchase_taxes_and_charges_master.js
rename to erpnext/accounts/doctype/purchase_taxes_and_charges_master/purchase_taxes_and_charges_master.js
diff --git a/erpnext/buying/doctype/purchase_taxes_and_charges_master/purchase_taxes_and_charges_master.py b/erpnext/accounts/doctype/purchase_taxes_and_charges_master/purchase_taxes_and_charges_master.py
similarity index 100%
rename from erpnext/buying/doctype/purchase_taxes_and_charges_master/purchase_taxes_and_charges_master.py
rename to erpnext/accounts/doctype/purchase_taxes_and_charges_master/purchase_taxes_and_charges_master.py
diff --git a/erpnext/buying/doctype/purchase_taxes_and_charges_master/purchase_taxes_and_charges_master.txt b/erpnext/accounts/doctype/purchase_taxes_and_charges_master/purchase_taxes_and_charges_master.txt
similarity index 98%
rename from erpnext/buying/doctype/purchase_taxes_and_charges_master/purchase_taxes_and_charges_master.txt
rename to erpnext/accounts/doctype/purchase_taxes_and_charges_master/purchase_taxes_and_charges_master.txt
index 4c07ca1..1ecac40 100644
--- a/erpnext/buying/doctype/purchase_taxes_and_charges_master/purchase_taxes_and_charges_master.txt
+++ b/erpnext/accounts/doctype/purchase_taxes_and_charges_master/purchase_taxes_and_charges_master.txt
@@ -19,7 +19,7 @@
 		'default_print_format': u'Standard',
 		'doctype': 'DocType',
 		'document_type': u'Master',
-		'module': u'Buying',
+		'module': u'Accounts',
 		'name': '__common__',
 		'section_style': u'Simple',
 		'server_code_error': u' ',
diff --git a/erpnext/accounts/doctype/sales_invoice/sales_invoice.js b/erpnext/accounts/doctype/sales_invoice/sales_invoice.js
index 68cdf1f..8091aee 100644
--- a/erpnext/accounts/doctype/sales_invoice/sales_invoice.js
+++ b/erpnext/accounts/doctype/sales_invoice/sales_invoice.js
@@ -23,7 +23,7 @@
 cur_frm.pformat.print_heading = 'Invoice';
 
 wn.require('erpnext/selling/doctype/sales_common/sales_common.js');
-wn.require('erpnext/setup/doctype/other_charges/other_charges.js');
+wn.require('erpnext/accounts/doctype/sales_taxes_and_charges_master/sales_taxes_and_charges_master.js');
 wn.require('erpnext/utilities/doctype/sms_control/sms_control.js');
 wn.require('erpnext/setup/doctype/notification_control/notification_control.js');
 
diff --git a/erpnext/setup/doctype/sales_taxes_and_charges_master/__init__.py b/erpnext/accounts/doctype/sales_taxes_and_charges_master/__init__.py
similarity index 100%
rename from erpnext/setup/doctype/sales_taxes_and_charges_master/__init__.py
rename to erpnext/accounts/doctype/sales_taxes_and_charges_master/__init__.py
diff --git a/erpnext/setup/doctype/sales_taxes_and_charges_master/sales_taxes_and_charges_master.js b/erpnext/accounts/doctype/sales_taxes_and_charges_master/sales_taxes_and_charges_master.js
similarity index 100%
rename from erpnext/setup/doctype/sales_taxes_and_charges_master/sales_taxes_and_charges_master.js
rename to erpnext/accounts/doctype/sales_taxes_and_charges_master/sales_taxes_and_charges_master.js
diff --git a/erpnext/setup/doctype/sales_taxes_and_charges_master/sales_taxes_and_charges_master.py b/erpnext/accounts/doctype/sales_taxes_and_charges_master/sales_taxes_and_charges_master.py
similarity index 100%
rename from erpnext/setup/doctype/sales_taxes_and_charges_master/sales_taxes_and_charges_master.py
rename to erpnext/accounts/doctype/sales_taxes_and_charges_master/sales_taxes_and_charges_master.py
diff --git a/erpnext/setup/doctype/sales_taxes_and_charges_master/sales_taxes_and_charges_master.txt b/erpnext/accounts/doctype/sales_taxes_and_charges_master/sales_taxes_and_charges_master.txt
similarity index 98%
rename from erpnext/setup/doctype/sales_taxes_and_charges_master/sales_taxes_and_charges_master.txt
rename to erpnext/accounts/doctype/sales_taxes_and_charges_master/sales_taxes_and_charges_master.txt
index 2ab0541..655269c 100644
--- a/erpnext/setup/doctype/sales_taxes_and_charges_master/sales_taxes_and_charges_master.txt
+++ b/erpnext/accounts/doctype/sales_taxes_and_charges_master/sales_taxes_and_charges_master.txt
@@ -19,7 +19,7 @@
 		'default_print_format': u'Standard',
 		'doctype': 'DocType',
 		'document_type': u'Master',
-		'module': u'Setup',
+		'module': u'Accounts',
 		'name': '__common__',
 		'section_style': u'Tabbed',
 		'server_code_error': u' ',
@@ -192,4 +192,4 @@
 		'options': u'Sales Taxes and Charges',
 		'permlevel': 0
 	}
-]
\ No newline at end of file
+]
diff --git a/erpnext/buying/doctype/purchase_order/purchase_order.js b/erpnext/buying/doctype/purchase_order/purchase_order.js
index 1505792..82abd6b 100644
--- a/erpnext/buying/doctype/purchase_order/purchase_order.js
+++ b/erpnext/buying/doctype/purchase_order/purchase_order.js
@@ -18,7 +18,7 @@
 cur_frm.cscript.fname = "po_details";
 cur_frm.cscript.other_fname = "purchase_tax_details";
 
-wn.require('erpnext/buying/doctype/purchase_other_charges/purchase_other_charges.js');
+wn.require('erpnext/accounts/doctype/purchase_taxes_and_charges_master/purchase_taxes_and_charges_master.js');
 wn.require('erpnext/buying/doctype/purchase_common/purchase_common.js');
 wn.require('erpnext/utilities/doctype/sms_control/sms_control.js');
 wn.require('erpnext/setup/doctype/notification_control/notification_control.js');
diff --git a/erpnext/home/page/event_updates/.DS_Store b/erpnext/home/page/event_updates/.DS_Store
deleted file mode 100644
index 5008ddf..0000000
--- a/erpnext/home/page/event_updates/.DS_Store
+++ /dev/null
Binary files differ
diff --git a/erpnext/home/page/event_updates/__init__.py b/erpnext/home/page/event_updates/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/erpnext/home/page/event_updates/__init__.py
+++ /dev/null
diff --git a/erpnext/home/page/event_updates/event_updates.css b/erpnext/home/page/event_updates/event_updates.css
deleted file mode 100644
index a88fed4..0000000
--- a/erpnext/home/page/event_updates/event_updates.css
+++ /dev/null
@@ -1,62 +0,0 @@
-div.home-status {
-	margin: 7px;
-	padding: 5px;
-	color: #666;
-}
-
-span.home-status-link {
-	cursor: pointer;
-	text-decoration: underline;
-}
-
-span.home-status-unread {
-	padding: 2px 3px;
-	font-size: 11px;
-	color: #FFF;
-	background-color: RED;
-}
-
-div.setup-wizard {
-	display: none;
-	margin: 13px 0px;
-	background-color: #FED;
-	padding: 13px;
-}
-
-div.setup-wizard .header {
-	font-size: 12px;
-	font-weight: bold;
-	color: #322;
-	margin-bottom: 7px;
-}
-
-
-div.setup-wizard .percent-outer {
-	height: 17px;
-	background-color: #FFF;
-	border: 2px solid #322;
-}
-
-div.setup-wizard .percent-inner {
-	height: 17px;
-	background-color: GREEN;
-}
-
-div.setup-wizard .suggestion {
-	margin: 7px 0px;
-	color: #322;	
-}
-
-div.setup-wizard .prev-next {
-	height: 13px;
-}
-
-div.setup-wizard .prev-next span {
-	display: none;
-	float: right;
-	margin-left: 13px;
-	color: #877;
-	font-size: 11px;
-}
-
-
diff --git a/erpnext/home/page/event_updates/event_updates.html b/erpnext/home/page/event_updates/event_updates.html
deleted file mode 100644
index 41ae9a5..0000000
--- a/erpnext/home/page/event_updates/event_updates.html
+++ /dev/null
@@ -1 +0,0 @@
-<div id="updates_div"></div>
\ No newline at end of file
diff --git a/erpnext/home/page/event_updates/event_updates.js b/erpnext/home/page/event_updates/event_updates.js
deleted file mode 100644
index 797d8e9..0000000
--- a/erpnext/home/page/event_updates/event_updates.js
+++ /dev/null
@@ -1,671 +0,0 @@
-// ERPNext - web based ERP (http://erpnext.com)
-// Copyright (C) 2012 Web Notes Technologies Pvt Ltd
-// 
-// This program is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-// 
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-// 
-// You should have received a copy of the GNU General Public License
-// along with this program.  If not, see <http://www.gnu.org/licenses/>.
-
-pscript['onload_Event Updates'] = function() {
-	if(user=='Guest') {
-		loadpage('Login Page');
-		return;
-	}
-			
-	pscript.home_make_body();
-	pscript.home_make_status();
-	pscript.home_set_banner();
-	pscript.home_make_widgets();
-}
-
-// ==================================
-
-pscript.home_make_body = function() {
-	var wrapper = wn.pages['Event Updates'];
-	
-	// body
-	$(wrapper).addClass('layout-wrapper').addClass('layout-wrapper-background')
-	
-	wrapper.body = $a(wrapper, 'div', 'layout-main-section');
-	wrapper.head = $a(wrapper.body, 'div');
-	wrapper.side_section =$a(wrapper, 'div', 'layout-side-section');
-	$a(wrapper, 'div', '', {clear:'both'});
-	
-	wrapper.banner_area = $a(wrapper.head, 'div');
-
-	wrapper.setup_wizard_area = $a(wrapper.body, 'div', 'setup-wizard');	
-}
-
-// ==================================
-
-pscript.home_set_banner = function(wrapper) {
-	var wrapper = wn.pages['Event Updates'];
-	var cp = wn.control_panel;
-
-	// banner
-	if(cp.client_name) {
-		var banner = $a(wrapper.banner_area, 'div', '', {paddingBottom:'4px'})
-		banner.innerHTML = cp.client_name;
-	}
-}
-
-// Widgets
-// ==================================
-
-pscript.home_make_widgets = function() {
-	var wrapper = wn.pages['Event Updates'];
-	var cell = wrapper.side_section;
-
-	// sidebar
-	sidebar = new wn.widgets.PageSidebar(cell, {
-		sections:[
-			{
-				title: 'Calendar',
-				display: function() { return !has_common(user_roles, ['Guest','Customer','Vendor'])},
-				render: function(wrapper) {
-					new HomeCalendar(new HomeWidget(wrapper, 'Calendar', 'Event'), wrapper);
-				}		
-			},
-			
-			{
-				title: 'To Do',
-				display: function() { return !has_common(user_roles, ['Guest','Customer','Vendor'])},
-				render: function(wrapper) {
-					new HomeToDo(new HomeWidget(wrapper, 'To Do', 'Item'));
-				}		
-			},
-
-			{
-				title: 'Online Users',
-				display: function() { return !has_common(user_roles, ['Guest','Customer','Vendor'])},
-				render: function(wrapper) {
-					pscript.online_users_obj = new OnlineUsers(wrapper);
-				}		
-			}
-		]
-	});
-		
-	new FeedList(wrapper.body);
-}
-
-OnlineUsers = function(wrapper) {
-	var me = this;
-	this.wrapper = wrapper;
-	
-	this.my_company_link = function() {
-		$a($a(wrapper, 'div', '', {marginBottom:'7px'}), 'span', 'link_type', 
-			{color:'#777', 'color:hover':'#FFF', fontSize:'11px'}, 
-			'See all users', function() {loadpage('My Company'); });
-	}
-	
-	this.render = function(online_users) {
-		me.my_company_link();
-		
-		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]);
-			}
-		} else {
-			$a(wrapper, 'div', '', {'color':'#888'}, 'No user online!')
-		}
-	}
-}
-
-OneOnlineUser = function(wrapper, det) {
-	var name = cstr(det[1]) + ' ' + cstr(det[2]);
-	if(det[1]==user) name = 'You'
-	var div = $a(wrapper, 'div', '', {padding:'3px 0px'});
-	$a(div, 'div', '', {width:'7px', height:'7px', cssFloat:'left', margin:'5px', backgroundColor:'green'});
-	$a(div, 'div', '', {marginLeft:'3px'}, name);
-}
-
-HomeWidget = function(parent, heading, item) {
-	var me = this; this.item = item;
-	
-	this.wrapper = $a(parent, 'div');
-	
-	
-	// body
-	this.body = $a(this.wrapper,'div','',{paddingBottom:'16px'});
-	this.footer = $a(this.wrapper,'div');
-	
-	// add button
-	this.add_btn = $btn(this.footer,'+ Add ' + item,function(){me.add()},null,'cupid-blue');
-
-	// refresh
-	this.refresh_btn = $ln(this.footer,'Refresh',function() { me.refresh(); },{fontSize:'11px',marginLeft:'7px',color:'#888'});
-}
-
-HomeWidget.prototype.refresh = function() {
-	var me = this;
-	$di(this.working_img);
-		
-	var callback = function(r,rt) {
-		$dh(me.working_img);
-		me.body.innerHTML = '';
-
-		// prepare (for calendar?)
-		if(me.decorator.setup_body) me.decorator.setup_body();
-
-		for(var i=0;i<r.message.length;i++) {
-			new HomeWidgetItem(me, r.message[i]);
-		}
-		if(!r.message.length) {
-			$a(me.body,'div','',{color:'#777'}, me.no_items_message);
-		}
-	}
-	$c_obj('Home Control',this.get_list_method,'',callback);
-}
-
-HomeWidget.prototype.make_dialog = function() {
-	var me = this;
-	if(!this.dialog) {
-		this.dialog = new wn.widgets.Dialog();
-		this.dialog.make({
-			width: 480,
-			title: 'New ' + this.item, 
-			fields:this.dialog_fields
-		});
-		
-		this.dialog.fields_dict.save.input.onclick = function() {
-			this.set_working();
-			me.decorator.save(this);	
-		}
-	}
-}
-
-HomeWidget.prototype.add = function() {
-	this.make_dialog();
-	this.decorator.clear_dialog();
-	this.dialog.show();
-}
-
-// Item
-// --------
-
-HomeWidgetItem = function(widget, det) {
-	var me = this; this.det = det; this.widget = widget;
-	this.widget = widget; this.det = det;
-	
-	// parent
-	if(widget.decorator.get_item_parent) parent = widget.decorator.get_item_parent(det);
-	else parent = widget.body;
-	
-	if(!parent) return;
-	
-	// wrapper
-	this.wrapper = $a(parent, 'div');
-	this.tab = make_table(this.wrapper, 1, 3, '100%', ['90%', '5%', '5%'],{paddingRight:'4px'});
-
-	// buttons
-	this.edit_btn = $a($td(this.tab,0,1),'div','wn-icon ' + 'ic-doc_edit', {cursor:'pointer'});
-	this.edit_btn.onclick = function() { me.edit(); }
-
-	this.del_btn = $a($td(this.tab,0,2),'div','wn-icon ' + 'ic-trash', {cursor:'pointer'});
-	this.del_btn.onclick = function() { me.delete_item(); }
-
-	widget.decorator.render_item(this, det);
-}
-
-HomeWidgetItem.prototype.edit = function() {
-	this.widget.make_dialog();
-	this.widget.decorator.set_dialog_values(this.det);
-	this.widget.dialog.show();
-}
-
-HomeWidgetItem.prototype.delete_item = function() {
-	var me = this;
-	this.wrapper.innerHTML = '<span style="color:#888">Deleting...</span>';
-	var callback = function(r,rt) {
-		$(me.wrapper).slideUp();
-	}
-	$c_obj('Home Control',this.widget.delete_method, 
-		this.widget.get_item_id(this.det) ,callback);
-		
-}
-
-// Calendar
-// ===========================
-
-HomeCalendar = function(widget, wrapper) {
-	// calendar link
-	$ln(widget.footer,'Full Calendar',function() { loadpage('_calendar'); },{marginLeft:'7px', fontSize:'11px', color:'#888'})
-
-	this.widget = widget;
-
-	// methods
-	this.widget.get_list_method = 'get_events_list'
-	this.widget.delete_method = 'delete_event';
-	this.widget.no_items_message = 'You have no events in the next 7 days';
-	this.widget.get_item_id = function(det) { return det.name; }
-
-	this.widget.decorator = this;
-
-	var hl = [];
-	for(var i=0; i<24; i++) {
-		hl.push(((i+8) % 24) + ':00');
-	}
-
-	this.widget.dialog_fields = [
-		{fieldtype:'Date', fieldname:'event_date', label:'Event Date', reqd:1},
-		{fieldtype:'Time', fieldname:'event_hour', label:'Event Time', reqd:1},
-		{fieldtype:'Text', fieldname:'description', label:'Description', reqd:1},
-		{fieldtype:'Button', fieldname:'save', label:'Save'}
-	];
-
-	this.widget.refresh();
-}
-
-// create calendar grid
-// --------------------
-HomeCalendar.prototype.setup_body = function() {
-	var w = this.widget;
-	w.date_blocks = {};
-	for(var i=0; i<7; i++) {
-		var dt = dateutil.obj_to_str(dateutil.add_days(new Date(),i));
-		var div = $a(w.body, 'div', '', {padding:'4px 0px', borderBottom:'1px solid #AAA',display:'none'});
-		div.head = $a(div, 'div', '', {fontWeight:'bold', paddingBottom:'4px'});
-		div.head.innerHTML  = (i==0 ? 'Today' : (i==1 ? 'Tomorrow' : dateutil.str_to_user(dt)))
-		w.date_blocks[dt] = div;
-	}
-}
-
-HomeCalendar.prototype.get_item_parent = function(det) {
-	var d = this.widget.date_blocks[det.event_date]; $ds(d);
-	return d;
-}
-
-HomeCalendar.prototype.render_item = function(item, det) {	
-	var tab = make_table($td(item.tab, 0, 0), 1, 2, '100%', ['48px', null], {padding:'2px', lineHeight:'1.5em'});
-	$y(tab, {tableLayout:'fixed'});
-
-	$td(tab, 0, 0).innerHTML = '<span style="color:#888">' + det.event_hour + ':</span> ';
-	$a($td(tab, 0, 1), 'span', 'social', {}, replace_newlines(det.description));
-
-	if(det.ref_type && det.ref_name && det.ref_name != 'None') {
-		var span=$a($a($td(tab, 0, 1),'div'),'span','link_type');
-		span.innerHTML = det.ref_name; span.dt = det.ref_type;
-		span.onclick = function() { loaddoc(this.dt, this.innerHTML); }
-	}
-}
-
-HomeCalendar.prototype.clear_dialog = function() {
-	this.set_dialog_values({event_date:get_today(), event_hour:'8:00', description:''});
-}
-
-HomeCalendar.prototype.set_dialog_values = function(det) {
-	var d = this.widget.dialog;
-	d.set_values(det);
-	d.det = det;
-}
-
-HomeCalendar.prototype.save = function(btn) {
-	var d = this.widget.dialog;
-	var me = this;
-	var det = d.get_values();
-	
-	if(!det) {
-		btn.done_working();
-	 	return;
-	}
-	
-	det.name = d.det.name;
-	det.owner = user;
-	if(!det.event_type)
-		det.event_type = 'Private';
-	
-	var callback = function(r,rt) {
-		btn.done_working();
-		me.widget.dialog.hide();
-		me.widget.refresh();
-	}
-	$c_obj('Home Control','edit_event',JSON.stringify(det),callback);	
-}
-
-// Todo
-// ===========================
-
-HomeToDo = function(widget) {
-	this.widget = widget;
-
-	// methods
-	this.widget.get_list_method = 'get_todo_list';
-	this.widget.delete_method = 'remove_todo_item';
-	this.widget.no_items_message = 'Nothing to do?';
-	this.widget.get_item_id = function(det) { return det.name; }
-
-	this.widget.decorator = this;
-
-	this.widget.dialog_fields = [
-		{fieldtype:'Date', fieldname:'date', label:'Event Date', reqd:1},
-		{fieldtype:'Text', fieldname:'description', label:'Description', reqd:1},
-		{fieldtype:'Check', fieldname:'checked', label:'Completed'},
-		{fieldtype:'Select', fieldname:'priority', label:'Priority', reqd:1, 'options':['Medium','High','Low'].join('\n')},
-		{fieldtype:'Button', fieldname:'save', label:'Save'}
-	];
-
-	this.widget.refresh();	
-}
-
-HomeToDo.prototype.render_item = function(item, det) {
-	
-	// priority tag
-	var tab = make_table($td(item.tab, 0, 0), 1, 2, '100%', ['48px', null], {padding:'2px'});
-	$y(tab, {tableLayout:'fixed'});
-
-	var span = $a($td(tab, 0, 0), 'span', '', {padding:'2px',color:'#FFF',fontSize:'10px'
-		, backgroundColor:(det.priority=='Low' ? '#888' : 
-			(det.priority=='High' ? '#EDA857' : '#687FD3'))});
-		
-	$(span).css('-moz-border-radius','3px').css('-webkit-border-radius','3px');
-	span.innerHTML = det.priority;
-
-	// text
-	var span = $a($td(tab, 0, 1), 'div', 'social', {lineHeight:'1.5em'}, 
-		replace_newlines(det.description));
-	if(det.checked) $y(span,{textDecoration:'line-through'});
-	
-	// reference link
-	if(det.reference_name) {
-		$a($td(tab, 0, 1), 'div', 'social', '', 
-			repl('<a href="#!Form/%(reference_type)s/%(reference_name)s">%(reference_name)s</a>',
-				det))
-	}
-	
-	// if expired & open, then in red
-	if(!det.checked && dateutil.str_to_obj(det.date) < new Date()) {
-		$y(span,{color:'RED'}); 
-		$a($td(tab, 0, 1), 'div', '', {fontSize:'10px', color:'#666'},
-		 	dateutil.str_to_user(det.date) + ' (Overdue)');
-	} else {
-		$a($td(tab, 0, 1), 'div', '', {fontSize:'10px', color:'#666'}, 
-			dateutil.str_to_user(det.date));		
-	}
-}
-
-HomeToDo.prototype.clear_dialog = function() {
-	this.set_dialog_values(['','',get_today(),'Medium',0]);
-}
-
-HomeToDo.prototype.set_dialog_values = function(det) {
-	var d = this.widget.dialog;
-	d.set_values({
-		date: det.date,
-		priority: det.priority,
-		description: det.description,
-		checked: det.checked
-	});
-	d.det = det;
-}
-
-HomeToDo.prototype.save = function(btn) {
-	var d = this.widget.dialog;
-	var me = this;
-	
-	var det = d.get_values()
-	if(!det) {
-		btn.done_working();
-	 	return;	
-	}
-
-	det.name = d.det.name;
-	var callback = function(r,rt) {
-		btn.done_working();
-		me.widget.dialog.hide();
-		me.widget.refresh();
-	}
-	$c_obj('Home Control','add_todo_item',JSON.stringify(det),callback);	
-}
-
-// Feed
-// ==================================
-
-
-FeedList = function(parent) {
-	// settings
-	this.auto_feed_off = cint(sys_defaults.auto_feed_off);
-	
-	this.wrapper = $a(parent, 'div');
-	this.make_head();
-	this.make_list();
-	this.list.run();
-}
-
-FeedList.prototype.make_head = function() {
-	var me = this;
-	this.head = $a(this.wrapper, 'div', '', {marginBottom:'8px'});
-	
-	// head
-
-	$a(this.head,'h1','', {display:'inline'}, 'Home'); 
-
-	// refresh
-	$a(this.head,'span','link_type', 
-		{marginLeft:'7px', fontSize:'11px'}, 'refresh',
-		function() { me.run(); }
-	);
-	
-	if(has_common(user_roles, ['System Manager','Accounts Manager'])) {
-		$btn(this.head, 'Dashboard', function() {loadpage('dashboard'); }, {marginLeft:'7px'}, 'cupid-blue')
-		
-	}
-}
-
-FeedList.prototype.run = function() {
-	this.prev_date = null;
-	this.list.run();
-}
-
-FeedList.prototype.make_list = function() {
-	var me = this;
-	this.list_area = $a(this.wrapper,'div')
-	
-	this.list = new wn.ui.Listing({
-		parent: this.list_area,
-		query: repl('select \
-			distinct t1.name, t1.feed_type, t1.doc_type, t1.doc_name, t1.subject, t1.modified_by, \
-			if(ifnull(t1.full_name,"")="", t1.owner, t1.full_name) as full_name, \
-			t1.modified, t1.color \
-			from tabFeed t1, tabUserRole t3, tabDocPerm t4 \
-			where t1.doc_type = t4.parent \
-			and t3.parent = "%(user)s" \
-			and t4.role = t3.role \
-			and ifnull(t4.`read`,0) = 1 \
-			order by t1.modified desc', {user:user}),
-		no_result_message: 'Nothing to show yet. Your feed will be updated as you start your activities',
-		render_row: function(parent, data) {
-			me.render_feed(parent, data)
-		},
-		onrun: function() {
-			$(me.wrapper).fadeIn(); 
-			if(me.after_run) me.after_run();
-		},
-		hide_refresh: true
-	});
-}
-
-FeedList.prototype.render_feed = function(parent, data) {
-	new FeedItem(parent, data, this);
-}
-
-// Item
-// -------------------------------
-
-FeedItem = function(cell, det, feedlist) {
-	var me = this;
-	
-	this.det = det; this.feedlist = feedlist;
-	this.wrapper = $a(cell,'div','',{paddingBottom:'4px'});
-	this.head = $a(this.wrapper,'div');
-
-	this.tab = make_table(this.wrapper, 1, 2, '100%', [(100/7)+'%', (600/7)+'%']);
-	$y(this.tab,{tableLayout:'fixed'})
-
-	$y($td(this.tab,0,0),{textAlign:'right',paddingRight:'4px'});
-	
-	// text
-	this.text_area = $a($td(this.tab,0,1), 'div');
-	this.render_references(this.text_area, det);	
-	this.render_tag(det);
-	
-	// add day separator
-	this.add_day_sep(det);
-}
-
-// Day separator
-// -------------------------------------------------
-
-FeedItem.prototype.add_day_sep = function(det) {
-	var me = this;
-	var prev_date = det.modified.split(' ')[0];
-	
-	var make_div = function() {
-		var div = $a(me.head, 'div', '', 
-			{borderBottom:'1px solid #888', margin:'8px 0px', padding:'2px 0px', color:'#888', fontSize:'11px'});
-		div.innerHTML = comment_when(det.modified, 1);
-		
-		// today?
-		if(prev_date==get_today()) {
-			div.innerHTML = '';
-			span = $a(div, 'span', '', {padding:'2px', color:'#000', fontWeight:'bold'});
-			span.innerHTML = 'Today';
-		}
-	}
-	
-	if(this.feedlist.prev_date && this.feedlist.prev_date != prev_date) { make_div(); }
-	if(!this.feedlist.prev_date) { make_div(); }
-	this.feedlist.prev_date = prev_date;
-}
-
-// Tag
-// -------------------------------------------------
-
-FeedItem.prototype.render_tag = function(det) {
-	// type is the name
-	tag = $a($td(this.tab,0,0), 'div', '', 
-		{color:'#FFF', padding:'3px', textAlign:'right', fontSize:'11px', 
-			whiteSpace:'nowrap', overflow:'hidden', cursor:'pointer'});
-	$br(tag,'3px');
-	$y(tag, {backgroundColor:(det.color || '#273')});
-	
-	// tag label
-	tag.innerHTML = det.feed_type || get_doctype_label(det.doc_type);
-	
-	// not comment / label
-	if(!det.feed_type) {
-		tag.dt = det.doc_type;
-		tag.onclick = function() { loaddocbrowser(this.dt); }		
-	}
-}
-
-FeedItem.prototype.render_references = function(div, det) {
-	// name
-	div.tab = make_table(div, 1, 2, '100%', [null, '15%'])	
-	var dt = det.doc_type; var dn = det.doc_name
-	
-	// link
-	if(det.feed_type=='Login') {
-		// nothing - no link		
-	} else {
-		var allow = in_list(profile.can_read, dt);
-		var span = $a($td(div.tab,0,0), 'span', (allow ? 'link_type': ''), null, 
-			det.doc_name);
-		span.dt = dt; span.dn = dn;
-		if(allow) span.onclick = function() { loaddoc(this.dt, this.dn); }		
-	}
-	
-	// subject
-	if(det.subject) {
-		$a($td(div.tab,0,0), 'span', '', {marginLeft:'7px', color:'#444'}, det.subject);
-	}
-	
-	// by
-	$y($td(div.tab,0,1), {fontSize:'11px'}).innerHTML = 
-		(strip(det.full_name) ? det.full_name : det.modified_by);
-}
-
-pscript.home_make_status = function() {
-	var wrapper = wn.pages['Event Updates'];
-
-	// get values
-	$c_page('home', 'event_updates', 'get_status_details', user,
-		function(r,rt) { 
-			//wn.container.wntoolbar.set_new_comments(r.message.unread_messages);
-										
-			// render online users
-			pscript.online_users_obj.render(r.message.online_users);
-			pscript.online_users = r.message.online_users;
-	
-			// complete registration
-			if(in_list(user_roles,'System Manager')) { 
-				wn.require("erpnext/home/page/event_updates/complete_registration.js");
-				pscript.complete_registration(r.message.registration_complete, r.message.profile); 
-			}
-			
-			// setup wizard
-			if(r.message.setup_status) {
-				new SetupWizard(r.message.setup_status)
-			}
-		}
-	);	
-}
-
-SetupWizard = function(status) { 
-	var me = this;
-	$.extend(this, {
-		make: function(status) {
-			me.status = status;
-			me.wrapper = wn.pages['Event Updates'].setup_wizard_area;
-			$ds(me.wrapper);
-			me.make_percent(status.percent);
-			me.make_suggestion(status.ret);
-		},
-		make_percent: function(percent) {
-			$a(me.wrapper, 'div', 'header', {}, 'Your setup is '+percent+'% complete');
-			var o = $a(me.wrapper, 'div', 'percent-outer');
-			$a(o, 'div', 'percent-inner', {width:percent + '%'});
-		},
-		make_suggestion: function(ret) {
-			me.suggest_area = $a(me.wrapper, 'div', 'suggestion');
-			if(me.status.ret.length>1) {
-				me.prev_next = $a(me.wrapper, 'div', 'prev-next');
-
-				// next
-				me.next = $a(me.prev_next, 'span', 'link_type', null, 'Next Suggestion',
-					function() { me.show_suggestion(me.cur_sugg+1) });
-
-				// prev
-				me.prev = $a(me.prev_next, 'span', 'link_type', null, 'Previous Suggestion',
-					function() { me.show_suggestion(me.cur_sugg-1) });
-
-			}
-			if(me.status.ret.length) {
-				me.show_suggestion(0);
-			} else {
-				me.suggest_area.innerHTML = 'Congratulations: '.bold() + 'You are now on your track... Good luck';
-			}
-		},
-		show_suggestion: function(idx) {
-			me.cur_sugg = idx;
-			me.suggest_area.innerHTML = 'What you can do next: '.bold() + me.status.ret[idx];
-
-			// show hide prev, next
-			if(me.status.ret.length>1) {
-				$dh(me.prev); $dh(me.next);
-				if(idx>0) $ds(me.prev);
-				if(idx<me.status.ret.length-1) $ds(me.next);			
-			}
-		}
-	})
-	this.make(status); 
-}
diff --git a/erpnext/home/page/event_updates/event_updates.py b/erpnext/home/page/event_updates/event_updates.py
deleted file mode 100644
index 7926925..0000000
--- a/erpnext/home/page/event_updates/event_updates.py
+++ /dev/null
@@ -1,152 +0,0 @@
-# ERPNext - web based ERP (http://erpnext.com)
-# Copyright (C) 2012 Web Notes Technologies Pvt Ltd
-# 
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-# 
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-# 
-# You should have received a copy of the GNU General Public License
-# along with this program.  If not, see <http://www.gnu.org/licenses/>.
-
-import webnotes
-from webnotes.utils import cint
-
-@webnotes.whitelist()
-def get_online_users(arg=None):
-	# get users
-	return webnotes.conn.sql("""SELECT DISTINCT t1.user, t2.first_name, t2.last_name 
-		from tabSessions t1, tabProfile t2
-		where t1.user = t2.name
-		and t1.user not in ('Guest','Administrator')
-		and TIMESTAMPDIFF(HOUR,t1.lastupdate,NOW()) <= 1""", as_list=1) or []
-
-def get_unread_messages():
-	"returns unread (docstatus-0 messages for a user)"
-	return webnotes.conn.sql("""\
-		SELECT name, comment
-		FROM `tabComment`
-		WHERE comment_doctype IN ('My Company', 'Message')
-		AND comment_docname = %s
-		AND ifnull(docstatus,0)=0
-		""", webnotes.user.name, as_list=1)
-
-def get_open_support_tickets():
-	"""
-		Returns a count of open support tickets
-	"""
-	from webnotes.utils import cint
-	open_support_tickets =  webnotes.conn.sql("""\
-		SELECT COUNT(*) FROM `tabSupport Ticket`
-		WHERE status = 'Open'""")
-	return open_support_tickets and cint(open_support_tickets[0][0]) or 0
-
-def get_things_todo():
-	"""
-		Returns a count of incomplete todos
-	"""
-	from webnotes.utils import cint
-	incomplete_todos = webnotes.conn.sql("""\
-		SELECT COUNT(*) FROM `tabToDo`
-		WHERE IFNULL(checked, 0) = 0
-		AND owner = %s""", webnotes.session.get('user'))
-	return incomplete_todos and cint(incomplete_todos[0][0]) or 0
-
-def get_todays_events():
-	"""
-		Returns a count of todays events in calendar
-	"""
-	from webnotes.utils import nowdate, cint
-	todays_events = webnotes.conn.sql("""\
-		SELECT COUNT(*) FROM `tabEvent`
-		WHERE owner = %s
-		AND event_type != 'Cancel'
-		AND event_date = %s""", (
-			webnotes.session.get('user'), nowdate()))
-	return todays_events and cint(todays_events[0][0]) or 0
-
-@webnotes.whitelist()
-def get_global_status_messages(arg=None):
-	return {
-		'unread_messages': get_unread_messages(),
-		'open_support_tickets': get_open_support_tickets(),
-		'things_todo': get_things_todo(),
-		'todays_events': get_todays_events(),
-	}
-
-@webnotes.whitelist()
-def get_status_details(arg=None):
-	"""get toolbar items"""
-	from webnotes.utils import cint, date_diff, nowdate, get_defaults
-		
-	online = get_online_users()
-			
-	# system messages			
-	ret = {
-		'user_count': len(online) or 0, 
-		#'unread_messages': get_unread_messages(),
-		#'open_support_tickets': get_open_support_tickets(),
-		'online_users': online or [],
-		'setup_status': get_setup_status(),
-		'registration_complete': cint(get_defaults('registration_complete')) and 'Yes' or 'No',
-		'profile': webnotes.conn.sql("""\
-			SELECT first_name, last_name FROM `tabProfile`
-			WHERE name=%s AND docstatus<2""", webnotes.user.name, as_dict=1)
-	}
-	return ret
-
-def get_setup_status(arg=None):
-	"""
-		Returns the setup status of the current account
-	"""
-	if cint(webnotes.conn.get_global('setup_done')):
-		return ''
-		
-	percent = 20
-	ret = []
-	
-	def is_header_set():
-		header = webnotes.conn.get_value('Control Panel', None, 'client_name') or ''
-
-		if header.startswith('<div style="padding:4px; font-size:20px;">'\
-			+(webnotes.conn.get_value('Control Panel', None, 'company_name') or '')):
-			return False
-			
-		elif 'Banner Comes Here' in header:
-			return False
-			
-		else:
-			return True
-	
-	if not is_header_set():
-		ret.append('<a href="#!Form/Personalize/Personalize">Upload your company banner</a>')
-	else:
-		percent += 20
-	
-	def check_type(doctype, ret, percent):	
-		if not webnotes.conn.sql("select count(*) from tab%s" % doctype)[0][0]:
-			ret.append('''
-				<a href="#!Form/%(dt)s/New">
-				Create a new %(dt)s
-				</a> or 
-				<a href="#!Import Data/%(dt)s">
-				Import from a spreadsheet</a>''' % {'dt':doctype})
-		else:
-			percent += 20
-		return ret, percent
-
-	ret, percent = check_type('Item', ret, percent)
-	ret, percent = check_type('Customer', ret, percent)
-	ret, percent = check_type('Supplier', ret, percent)
-	
-	if percent==100:
-		webnotes.conn.set_global('setup_done', '1')
-		return ''
-		
-	return {'ret': ret, 'percent': percent}
-		
diff --git a/erpnext/home/page/event_updates/event_updates.txt b/erpnext/home/page/event_updates/event_updates.txt
deleted file mode 100644
index 21d9350..0000000
--- a/erpnext/home/page/event_updates/event_updates.txt
+++ /dev/null
@@ -1,27 +0,0 @@
-# Page, Event Updates
-[
-
-	# These values are common in all dictionaries
-	{
-		'creation': '2010-12-14 10:23:23',
-		'docstatus': 0,
-		'modified': '2010-12-27 10:58:56',
-		'modified_by': 'Administrator',
-		'owner': 'Administrator'
-	},
-
-	# These values are common for all Page
-	{
-		'doctype': 'Page',
-		'module': 'Home',
-		'name': '__common__',
-		'page_name': 'Event Updates',
-		'standard': 'Yes'
-	},
-
-	# Page, Event Updates
-	{
-		'doctype': 'Page',
-		'name': 'Event Updates'
-	}
-]
\ No newline at end of file
diff --git a/erpnext/home/page/event_updates/event_updates_static.html b/erpnext/home/page/event_updates/event_updates_static.html
deleted file mode 100644
index 682f1b2..0000000
--- a/erpnext/home/page/event_updates/event_updates_static.html
+++ /dev/null
@@ -1 +0,0 @@
-Event Updates
\ No newline at end of file
diff --git a/erpnext/home/page/my_company/__init__.py b/erpnext/home/page/my_company/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/erpnext/home/page/my_company/__init__.py
+++ /dev/null
diff --git a/erpnext/home/page/my_company/my_company.css b/erpnext/home/page/my_company/my_company.css
deleted file mode 100644
index d2d9a66..0000000
--- a/erpnext/home/page/my_company/my_company.css
+++ /dev/null
@@ -1,82 +0,0 @@
-/* item */
-
-div.my-company-member-item-selected {
-	background-color: #BBC;
-}
-
-
-
-/* profile */
-.my-company-name-head {
-	font-size: 14px;
-	font-weight: bold;
-	margin-bottom: 7px;
-}
-
-.my-company-email {
-	margin-bottom: 7px;
-	color: #888;
-}
-
-.my-company-online-status {
-	font-weight: bold;
-	margin-left: 7px;
-}
-
-.my-company-status {
-	margin-bottom: 7px;	
-	color: #888;
-	font-style: italics;
-}
-
-.my-company-bio {
-	margin-bottom: 7px;	
-}
-
-.my-company-toolbar {
-	margin: 7px 0px;	
-}
-
-/* conversation */
-
-.my-company-input-wrapper {
-	color: #555;
-	padding: 13px;
-}
-
-.my-company-input-wrapper td {
-	vertical-align: bottom;
-}
-
-.my-company-input-wrapper textarea {
-	height: 3em;
-	font-size: 14px;
-	width: 100%;
-	margin: 7px 0px 3px 0px;
-}
-
-.my-company-input-wrapper button {
-	margin: 0px;
-}
-
-.my-company-conversation {
-	border-top: 1px solid #DDD;
-}
-.my-company-comment-wrapper {
-	padding: 7px;
-	border-bottom: 1px solid #DDD;
-}
-
-.my-company-timestamp {
-	color: #888;
-	font-size: 11px;
-	margin: 3px;
-}
-
-.my-company-conversation-head {
-	padding: 3px;
-	background-color: #DEDEDE;
-	color: #555;
-	font-size: 14px;
-	text-align: center;
-}
\ No newline at end of file
diff --git a/erpnext/home/page/my_company/my_company.html b/erpnext/home/page/my_company/my_company.html
deleted file mode 100644
index e69de29..0000000
--- a/erpnext/home/page/my_company/my_company.html
+++ /dev/null
diff --git a/erpnext/home/page/my_company/my_company.js b/erpnext/home/page/my_company/my_company.js
deleted file mode 100644
index f642563..0000000
--- a/erpnext/home/page/my_company/my_company.js
+++ /dev/null
@@ -1,760 +0,0 @@
-// ERPNext - web based ERP (http://erpnext.com)
-// Copyright (C) 2012 Web Notes Technologies Pvt Ltd
-// 
-// This program is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-// 
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-// 
-// You should have received a copy of the GNU General Public License
-// along with this program.  If not, see <http://www.gnu.org/licenses/>.
-
-pscript['onload_My Company'] = function() {
-	var wrapper = wn.pages['My Company'];
-	
-	// body
-	wrapper.className = 'layout_wrapper';
-	wrapper.head = new PageHeader(wrapper, 'People');
-	wrapper.body = $a(wrapper, 'div', '', {marginRight:'11px', marginTop:'11px'});
-	
-	wrapper.message = $a(wrapper.body, 'div');
-	wrapper.tab = make_table(wrapper.body, 1, 2, '100%', ['25%','75%']);
-	
-	$y(wrapper.tab, {tableLayout:'fixed'})
-	
-	pscript.myc_make_toolbar(wrapper);
-	pscript.myc_make_list(wrapper);
-	
-	if(pscript.is_erpnext_saas) {
-		pscript.myc_show_erpnext_message();
-	}
-}
-
-pscript.myc_make_toolbar = function(wrapper) {
-	if(has_common(user_roles, ['System Manager', 'Administrator'])) {
-		wrapper.head.add_button('Add User', pscript.myc_add_user)	
-	}
-}
-
-//
-// Only for erpnext product - show max users allowed
-//
-pscript.myc_show_erpnext_message = function() {
-	var callback = function(r, rt) {
-		if(r.exc) {msgprint(r.exc); return;}
-		$a(wrapper.message, 'div', 'help_box', '', 'You have ' + r.message.enabled 
-		+ ' users enabled out of ' + r.message.max_user 
-		+ '. Go to <a href="javascript:pscript.go_to_account_settings()">Account Settings</a> to increase the number of users');
-	}
-	$c_page('home', 'my_company', 'get_max_users', '', callback)
-}
-
-//
-// Add user dialog and server call
-//
-pscript.myc_add_user = function() {
-	var fields = [{
-			fieldtype: 'Data',
-			fieldname: 'user',
-			reqd: 1,
-			label: 'Email Id of the user to add'
-		},
-		{
-			fieldtype: 'Data',
-			fieldname: 'first_name',
-			reqd: 1,
-			label: 'First Name'
-		},
-		{
-			fieldtype: 'Data',
-			fieldname: 'last_name',
-			label: 'Last Name'
-		},
-		{
-			fieldtype: 'Data',
-			fieldname: 'password',
-			reqd: 1,
-			label: 'Password'
-		},
-		{
-			fieldtype: 'Button',
-			label: 'Add',
-			fieldname: 'add'
-		}];
-
-	fields.push();
-
-	var d = new wn.widgets.Dialog({
-		title: 'Add User',
-		width: 400,
-		fields: fields
-	});
-	d.make();
-	d.fields_dict.add.input.onclick = function() {
-		v = d.get_values();
-		if(v) {
-			d.fields_dict.add.input.set_working();
-			$c_page('home', 'my_company', 'add_user', v, function(r,rt) {
-				if(r.exc) { msgprint(r.exc); return; }
-				else {
-					d.hide();
-					pscript.myc_refresh();
-				}
-			})
-		}
-	}
-	d.show();
-}
-
-pscript.myc_refresh = function() {
-	wn.pages['My Company'].member_list.lst.run();	
-}
-
-pscript.myc_make_list= function(wrapper) {
-	wrapper.member_list = new MemberList(wrapper)
-}
-
-pscript.get_fullname=function(uid) {
-	if(uid=='Administrator') return uid;
-	return wn.pages['My Company'].member_list.member_items[uid].fullname;		
-}
-
-
-
-//=============================================
-
-MemberList = function(parent) {
-	var me = this;
-	this.profiles = {};
-	this.member_items = {};
-	this.role_objects = {};
-	this.cur_profile = null;
-	
-	this.list_wrapper = $a($td(parent.tab,0,0), 'div', '', {marginLeft:'11px'});
-	var cell = $td(parent.tab,0,1);
-	$y(cell, { border: '1px solid #aaa' });
-	cell.className = 'layout_wrapper';
-	this.profile_wrapper = $a(cell, 'div');
-	
-	this.no_user_selected = $a(this.profile_wrapper, 'div', 'help_box', null, 'Please select a user to view profile');
-	
-	this.make_search();
-	if(pscript.online_users) {
-		this.make_list();		
-	} else {
-		$c_page('home', 'event_updates', 'get_online_users', '', function(r,rt) {
-			pscript.online_users = r.message;
-			me.make_list();
-		})
-	}
-}
-
-// ----------------------
-
-MemberList.prototype.make_search = function() {
-	var me = this;
-	this.search_area = $a(this.list_wrapper, 'div', '', {textAlign:'center', padding:'8px'});
-	this.search_inp = $a(this.search_area, 'input', '', {fontSize:'14px', width:'80%'});
-	this.search_inp.set_empty = function() {
-		this.value = 'Search'; $fg(this,'#888');
-	}
-	this.search_inp.onfocus = function() {
-		$fg(this,'#000');
-		if(this.value=='Search')this.value = '';
-	}
-	this.search_inp.onchange = function() {
-		if(!this.value) this.set_empty();
-	}
-	this.search_inp.set_empty();
-}
-
-// ----------------------
-
-MemberList.prototype.make_list = function() {
-	var me = this;
-	this.lst_area = $a(this.list_wrapper, 'div');
-
-	this.lst = new wn.ui.Listing({
-		parent: this.lst_area,
-		as_dict: 1,
-		get_query: function() {
-			var c1 = '';
-			if(me.search_inp.value && me.search_inp.value != 'Search') {
-				var c1 = repl(' AND (first_name LIKE "%(txt)s" OR last_name LIKE "%(txt)s" OR name LIKE "%(txt)s")', {txt:'%' + me.search_inp.value + '%'});
-			}
-
-			return repl("SELECT name, \
-				ifnull(concat_ws(' ', first_name, last_name),'') as full_name, \
-				gender, file_list, enabled \
-				FROM tabProfile \
-				WHERE docstatus != 2 \
-				AND name not in ('Guest','Administrator') %(cond)s \
-				ORDER BY name asc",{cond:c1});			
-		},
-		render_row: function(parent, data) {
-			me.member_items[data.name] = new MemberItem(parent, data, me);			
-		}
-	});	
-	this.lst.run();
-}
-
-
-/*
-Create / show profile
-*/
-MemberList.prototype.show_profile = function(uid, member_item) {
-	$dh(this.no_user_selected);
-
-	// if not exists, create
-	if(!this.profiles[uid]) {
-		if(!member_item) member_item = this.member_items[uid];
-		this.profiles[uid] = new MemberProfile(this.profile_wrapper, uid, member_item);		
-	}
-
-	// hide current
-	if(this.cur_profile)
-		this.cur_profile.hide();
-	
-	// show this
-	this.profiles[uid].show();
-	this.cur_profile = this.profiles[uid];
-}
-
-
-// Member Item
-// List item of all profiles
-// on the left hand sidebar of the page
-
-MemberItem = function(parent, det, mlist) {
-	var me = this;
-	this.det = det;
-	this.wrapper = $a(parent, 'div');
-	this.enabled = det.enabled;
-	
-	this.tab = make_table(this.wrapper, 1,2,'100%', ['20%', '70%'], {padding:'4px', overflow:'hidden'});
-	$y(this.tab, {tableLayout:'fixed', borderCollapse:'collapse'})
-	
-	this.is_online = function() {
-		for(var i=0;i<pscript.online_users.length;i++) {
-			if(det.name==pscript.online_users[i][0]) return true;
-		}
-	}
-	
-	this.refresh_name_link = function() {
-		// online / offline
-		$fg(this.name_link,'#00B'); 
-		if(!this.is_online())
-			$fg(this.name_link,'#444');
-		if(!this.enabled)
-			$fg(this.name_link,'#777'); 
-
-	}
-	
-	this.set_image = function() {
-		// image
-		this.img = $a($td(this.tab,0,0),'img','',{width:'41px'});
-		set_user_img(this.img, det.name, null, 
-			(det.file_list ? det.file_list.split(NEWLINE)[0].split(',')[1] : 
-				('no_img_' + (det.gender=='Female' ? 'f' : 'm'))));
-	}
-	
-	// set other details like email id, name etc
-	this.set_details = function() {
-		// name
-		this.fullname = det.full_name || det.name;
-		var div = $a($td(this.tab, 0, 1), 'div', '', {fontWeight: 'bold',padding:'2px 0px'});
-		this.name_link = $a(div,'span','link_type');
-		this.name_link.innerHTML = crop(this.fullname, 15);
-		this.name_link.onclick = function() {
-			mlist.show_profile(me.det.name, me);
-		}
-
-		// "you" tag
-		if(user==det.name) {
-			var span = $a(div,'span','',{padding:'2px' ,marginLeft:'3px'});
-			span.innerHTML = '(You)'
-		}
-
-		// email id
-		var div = $a($td(this.tab, 0, 1), 'div', '', {color: '#777', fontSize:'11px'});
-		div.innerHTML = det.name;
-
-		// working img
-		var div = $a($td(this.tab, 0, 1), 'div');
-		this.working_img = $a(div,'img','',{display:'none'}); 
-		this.working_img.src = 'lib/images/ui/button-load.gif';
-		
-		this.refresh_name_link();
-		
-	}
-	
-	this.select = function() {
-		$(this.wrapper).addClass('my-company-member-item-selected');
-	}
-
-	this.deselect = function() {
-		$(this.wrapper).removeClass('my-company-member-item-selected');		
-	}
-	
-	this.set_image();
-	this.set_details();
-	
-	// show initial
-	if(user==det.name) me.name_link.onclick();
-}
-
-
-//
-// Member Profile
-// shows profile with Photo and conversation
-//
-MemberProfile = function(parent, uid, member_item) {
-	this.parent = parent;
-	this.uid = uid;
-	this.member_item = member_item;
-	var me = this;
-
-	// make the UI 
-	this.make = function() {
-		this.wrapper = $a(this.parent, 'div', '', {display:'none'});
-		this.tab = make_table(this.wrapper, 3, 2,'100%',['120px',null],{padding:'3px'});
-		$y(this.tab, {tableLayout: 'fixed'});
-		
-		this.make_image_and_bio();
-		this.make_toolbar();
-		this.make_message_list();
-	}
-	
-	// create elements
-	this.make_image_and_bio = function() {
-		var rh = $td(this.tab, 0, 1);
-		
-		// image
-		this.img = $a($td(this.tab, 0, 0), 'img','',{width:'80px', marginLeft:'10px'});
-		set_user_img(this.img, this.uid);
-
-		// details
-		this.name_area = $a(rh, 'div' , 'my-company-name-head');
-		var div = $a(rh, 'div', 'my-company-email');
-		this.email_area = $a(div, 'span');
-		this.online_status_area = $a(div, 'span', 'my-company-online-status');
-		this.bio_area = $a(rh, 'div', 'my-company-bio');	
-		this.toolbar_area = $a(rh, 'div', 'my-company-toolbar');	
-		this.status_span = $a(this.toolbar_area, 'span', '', {marginRight:'7px'});
-		
-	}
-	
-	// the toolbar
-	this.make_toolbar = function() {
-		if(has_common(['Administrator','System Manager'],user_roles)) {
-			var roles_btn = $btn(this.toolbar_area, 'Set Roles', function() { me.show_roles() },{marginRight:'3px'});
-			var delete_btn = $btn(this.toolbar_area, 'Delete User', function() { me.delete_user(); },{marginRight:'3px'});
-			var ip_btn = $btn(this.toolbar_area, 'Securty Settings', function() { me.set_security(); },{marginRight:'3px'});
-		}
-	}
-	
-	// create the role object
-	this.show_roles = function() {
-		if(!this.role_object)
-			this.role_object = new RoleObj(this.uid);
-		this.role_object.dialog.show();
-	}
-	
-	// show securty settings
-	this.set_security = function() {
-		var sd = new wn.widgets.Dialog({
-			title: 'Set User Security',
-			width: 500,
-			fields: [
-				{
-					label:'IP Address', 
-					description: 'Restrict user login by IP address, partial ips (111.111.111), \
-					multiple addresses (separated by commas) allowed', 
-					fieldname:'restrict_ip', 
-					fieldtype:'Data'
-				},
-				
-				{
-					label:'Login After',
-					description: 'User can only login after this hour (0-24)',
-					fieldtype: 'Int',
-					fieldname: 'login_after'
-				},
-
-				{
-					label:'Login Before',
-					description: 'User can only login before this hour (0-24)',
-					fieldtype: 'Int',
-					fieldname: 'login_before'
-				},
-				
-				{
-					label:'New Password',
-					description: 'Update the current user password',
-					fieldtype: 'Data',
-					fieldname: 'new_password'
-				},
-
-				{
-					label:'Update',
-					fieldtype:'Button',
-					fieldname:'update'
-				}
-			]
-		});
-
-		me.sec_dialog = sd
-
-		sd.onshow = function() {
-			me.sec_dialog.set_values({
-				restrict_ip: me.profile.restrict_ip || '',
-				login_before: me.profile.login_before || '',
-				login_after: me.profile.login_after || '',
-				new_password: ''
-			});
-		};
-		sd.fields_dict.update.input.onclick = function() {
-			var btn = this;
-			this.set_working();
-			var args = me.sec_dialog.get_values();
-			args.user = me.profile.name;
-
-			if (args.new_password) {
-				var pass_d = new wn.widgets.Dialog({
-					title: 'Your Password',
-					width: 300,
-					fields: [
-						{
-							label: 'Please Enter <b style="color: black">Your Password</b>',
-							description: "Your password is required to update the concerned user's password",
-							fieldtype: 'Password',
-							fieldname: 'sys_admin_pwd',
-							reqd: 1		
-						},
-
-						{
-							label: 'Continue',
-							fieldtype: 'Button',
-							fieldname: 'continue'
-						}
-					]
-				});
-
-				pass_d.fields_dict.continue.input.onclick = function() {
-					btn.pwd_dialog.hide();					
-					args.sys_admin_pwd = btn.pwd_dialog.get_values().sys_admin_pwd;					
-					btn.set_working();					
-					me.update_security(args);
-					btn.done_working();
-				}
-
-				pass_d.show();
-				btn.pwd_dialog = pass_d;
-				btn.done_working();
-			} else {
-				btn.done_working();
-				me.update_security(args);
-			}			
-		};
-		sd.show();		
-	}
-
-	this.update_security = function(args) {
-		$c_page('home', 'my_company', 'update_security', JSON.stringify(args), function(r,rt) {
-			if(r.exc) {
-				msgprint(r.exc);				
-				return;
-			}
-			me.sec_dialog.hide();
-			$.extend(me.profile, me.sec_dialog.get_values());
-		});
-	}
-	
-	// delete user
-	// create a confirm dialog and call server method
-	this.delete_user = function() {
-		var cp = wn.control_panel;
-
-		var d = new Dialog(400,200,'Delete User');
-		d.make_body([
-			['HTML','','Do you really want to remove '+this.uid+' from system?'],['Button','Delete']
-		]);
-		d.onshow = function() {
-			this.clear_inputs();
-		}
-
-		d.widgets['Delete'].onclick = function() {
-			this.set_working();
-
-			var callback = function(r,rt) {
-				d.hide();
-				if(r.exc) {
-					msgprint(r.exc);
-					return;
-				}
-				pscript.myc_refresh()
-				msgprint("User Deleted Successfully");
-			}
-			$c_page('home', 'my_company', 'delete_user', {'user': me.uid}, callback);
-		}
-		d.show();
-	}
-
-	// set enabled
-	this.set_enable_button = function() {
-		var me = this;
-		var act = this.profile.enabled ? 'Disable' : 'Enable';
-
-		if(this.status_button) {
-			this.status_button.innerHTML = act;	
-		} else {	
-			// make the button
-			this.status_button = $btn(this.toolbar_area, act, function() {
-				var callback = function(r,rt) {
-					locals['Profile'][me.profile.name].enabled = cint(r.message);
-					me.status_button.done_working();
-					me.refresh_enable_disable();
-				}
-				this.set_working();
-				$c_page('home','my_company', this.innerHTML.toLowerCase()+'_profile',me.profile.name, callback);
-			}, null, null, 1);
-		}
-		if(this.uid==user) $dh(this.status_button); else $di(this.status_button);
-	}
-	
-	// render the details of the user from Profile
-	this.render = function() {
-		this.profile = locals['Profile'][uid];
-		scroll(0, 0);
-
-		// name
-		if(cstr(this.profile.first_name) || cstr(this.profile.last_name)) {
-			this.fullname = cstr(this.profile.first_name) + ' ' + cstr(this.profile.last_name);
-		} else {
-			this.fullname = this.profile.name;
-		}
-		this.name_area.innerHTML = this.fullname;
-		
-		// email
-		this.email_area.innerHTML = this.profile.name;
-
-		// online / offline
-		this.online_status_area.innerHTML = (this.member_item.is_online() ? '(Online)' : '(Offline)')
-		if(this.member_item.is_online()) {
-			$y(this.online_status_area, {color:'green'});
-		}
-
-		// refresh enable / disabled
-		this.refresh_enable_disable();
-
-		// designation
-		this.bio_area.innerHTML = this.profile.designation ? ('Designation: ' + cstr(this.profile.designation) + '<br>') : '';
-		this.bio_area.innerHTML += this.profile.bio ? this.profile.bio : 'No bio';
-		
-		new MemberConversation(this.wrapper, this.profile.name, this.fullname);
-	}
-	
-	// refresh enable / disable
-	this.refresh_enable_disable = function() {
-		this.profile = locals['Profile'][this.uid]
-
-		if(!this.profile.enabled) {
-			$fg(this.name_area,'#999');
-		} else {
-			$fg(this.name_area,'#000');
-		}
-
-		this.member_item.enabled = this.profile.enabled;
-		this.member_item.refresh_name_link();
-		
-		this.status_span.innerHTML = this.profile.enabled ? 'Enabled' : 'Disabled';
-
-		// set styles and buttons
-		if(has_common(['Administrator','System Manager'],user_roles)) {
-			this.set_enable_button();
-		}		
-	}
-	
-	// Load user profile (if not loaded)
-	this.load = function() {
-		if(locals['Profile'] && locals['Profile'][uid]) {
-			this.render();
-			return;
-		}
-		var callback = function(r,rt) {
-			$dh(me.member_item.working_img);
-			$ds(me.wrapper);
-			me.loading = 0;
-			me.render();
-		}
-		$ds(this.member_item.working_img);
-		$dh(this.wrapper);
-		this.loading = 1;
-		$c('webnotes.widgets.form.load.getdoc', {'name':this.uid, 'doctype':'Profile', 'user':user}, callback);	// onload		
-	}
-	
-	// show / hide
-	this.show = function() {
-		if(!this.loading)$ds(this.wrapper);
-
-		// select profile
-		this.member_item.select();
-	}
-	this.hide = function() {
-		$dh(this.wrapper);
-
-		// select profile
-		this.member_item.deselect();
-	}
-	
-	this.make_message_list = function() {
-		
-	}
-	
-	this.make();
-	this.load();
-}
-
-
-
-
-// Member conversation
-// Between the current user and the displayed profile
-// or if same, then the conversation with all other
-// profiles
-MemberConversation = function(parent, uid, fullname) {
-	var me = this;
-	this.wrapper = $a(parent, 'div', 'my-company-conversation');
-	this.fullname = fullname;
-	this.make = function() {
-		if(user!=uid) {
-			this.make_input();			
-		}
-		this.make_list();
-		
-		// set all messages
-		// as "read" (docstatus = 0)
-		if(user==uid) {
-			$c_page('home', 'my_company', 'set_read_all_messages', '', function(r,rt) { });	
-		}
-	}
-	
-	this.make_input = function() {
-		this.input_wrapper = $a(this.wrapper, 'div', 'my-company-input-wrapper');
-		var tab = make_table(this.input_wrapper, 1, 2, '100%', ['64%','36%'], {padding: '3px'})
-		this.input = $a($td(tab,0,0), 'textarea');
-
-		// button
-		var div = $a(this.input_wrapper, 'div');
-		this.post = $btn(div, 'Post'.bold(), function() { me.post_message(); }, {margin:'0px 13px 0px 3px'})
-		this.post.disabled = true;
-		
-		this.input.onkeyup = this.input.onchange = function() {
-			if(this.value) {
-				me.post.disabled = false;
-			} else {
-				me.post.disabled = true;
-			}
-		}
-
-		// notification check
-		this.notify_check = $a_input(div, 'checkbox', null);
-		$a(div, 'span', '', {marginLeft:'3px'}, 'Notify ' + fullname + ' by email')
-	}
-	
-	this.post_message = function() {
-		if(me.input.value==$(me.input).attr('default_text')) {
-			msgprint('Please write a message first!'); return;
-		}
-		this.post.set_working();
-		$c_page('home', 'my_company', 'post_comment', {
-			uid: uid,
-			comment: $(me.input).val(),
-			notify: me.notify_check.checked ? 1 : 0
-		}, function(r,rt) {
-			$(me.input).val("").blur();
-			me.post.done_working();
-			if(r.exc) { msgprint(r.exc); return; }
-			me.notify_check.checked = false;
-			me.refresh();
-		})
-	}
-	
-	this.make_list = function() {
-		this.lst_area = $a(this.wrapper, 'div', 'my-company-conversation', {padding:'7px 13px'});
-
-		if(user==uid) {
-			this.my_messages_box = $a(this.lst_area, 'div', 'my-company-conversation-head', {marginBottom:'7px'}, 'Messages by everyone to me<br>To send a message, click on the user on the left')
-		}
-		
-		this.lst = new wn.ui.Listing({
-			parent: this.lst_area,
-			as_dict: 1,
-			no_result_message: (user==uid 
-				? 'No messages by anyone yet' 
-				: 'No messages yet. To start a conversation post a new message'),
-
-			get_query: function() {
-				if(uid==user) {
-					return repl("SELECT comment, owner, comment_docname, creation, docstatus " +
-					"FROM `tabComment` "+
-					"WHERE comment_doctype='My Company' " +
-					"AND comment_docname='%(user)s' " +
-					"ORDER BY creation DESC ", {user:user});
-
-				} else {
-					return repl("SELECT comment, owner, comment_docname, creation, docstatus " +
-					"FROM `tabComment` "+
-					"WHERE comment_doctype='My Company' " +
-					"AND ((owner='%(user)s' AND comment_docname='%(uid)s') " +
-					"OR (owner='%(uid)s' AND comment_docname='%(user)s')) " +
-					"ORDER BY creation DESC ", {uid:uid, user:user});
-
-				}
-			},
-			render_row: function(parent, data) {
-				new MemberCoversationComment(parent, data, me);
-			},
-			
-		})
-		this.refresh();
-	}
-	
-	this.refresh = function() {
-		me.lst.run()
-	}
-	
-	this.make();
-}
-
-MemberCoversationComment = function(cell, det, conv) {
-	var me = this;
-	this.det = det;
-	this.wrapper = $a(cell, 'div', 'my-company-comment-wrapper');
-	this.comment = $a(this.wrapper, 'div', 'my-company-comment');
-
-	this.user = $a(this.comment, 'span', 'link_type', {fontWeight:'bold'}, pscript.get_fullname(det.owner));
-	this.user.onclick = function() {
-		wn.pages['My Company'].member_list.show_profile(me.det.owner);
-	}
-
-	var st = (!det.docstatus ? {fontWeight: 'bold'} : null);
-	this.msg = $a(this.comment, 'span', 'social', st, ': ' + det.comment);
-
-	if(det.full_name==user) {
-		$y(this.wrapper, {backgroundColor: '#D9D9F3'});
-	}
-	this.timestamp = $a(this.wrapper, 'div', 'my-company-timestamp', '', comment_when(det.creation));
-}
-
-
-
-
-
-
-
diff --git a/erpnext/home/page/my_company/my_company.py b/erpnext/home/page/my_company/my_company.py
deleted file mode 100644
index 5e3ba94..0000000
--- a/erpnext/home/page/my_company/my_company.py
+++ /dev/null
@@ -1,218 +0,0 @@
-# ERPNext - web based ERP (http://erpnext.com)
-# Copyright (C) 2012 Web Notes Technologies Pvt Ltd
-# 
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-# 
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-# 
-# You should have received a copy of the GNU General Public License
-# along with this program.  If not, see <http://www.gnu.org/licenses/>.
-
-import webnotes
-
-from webnotes.utils import cint, load_json, cstr
-from webnotes.model.doc import Document
-
-try: import json
-except: import simplejson as json
-
-@webnotes.whitelist()
-def get_account_settings_url(arg=''):
-	import server_tools.gateway_utils
-	return server_tools.gateway_utils.get_account_settings_url()
-
-@webnotes.whitelist()
-def get_max_users(arg=''):
-	from server_tools.gateway_utils import get_max_users_gateway
-	return {
-		'max_users': get_max_users_gateway(),
-		'enabled': cint(webnotes.conn.sql("select count(*) from tabProfile where ifnull(enabled,0)=1 and name not in ('Administrator', 'Guest')")[0][0])
-	}
-
-@webnotes.whitelist()
-def enable_profile(arg=''):
-	webnotes.conn.sql("update tabProfile set enabled=1 where name=%s", arg)
-	return 1
-		
-@webnotes.whitelist()
-def disable_profile(arg=''):
-	if arg=='Administrator':
-		return 'Cannot disable Administrator'
-
-	webnotes.conn.sql("update tabProfile set enabled=0 where name=%s", arg)
-	webnotes.login_manager.logout(user=arg)
-	return 0
-
-@webnotes.whitelist()
-def delete_user(args):
-	args = json.loads(args)
-	webnotes.conn.sql("update tabProfile set enabled=0, docstatus=2 where name=%s", args['user'])
-	# erpnext-saas
-	import webnotes.defs
-	from webnotes.utils import cint
-	if hasattr(webnotes.defs, 'sync_with_gateway') and \
-			cint(webnotes.defs.sync_with_gateway) or 0:	
-		from server_tools.gateway_utils import remove_user_gateway
-		remove_user_gateway(args['user'])
-	
-	webnotes.login_manager.logout(user=args['user'])
-
-
-@webnotes.whitelist()
-def add_user(args):
-	args = json.loads(args)
-	# erpnext-saas
-	import webnotes.defs
-	from webnotes.utils import cint
-	if hasattr(webnotes.defs, 'sync_with_gateway') and \
-			cint(webnotes.defs.sync_with_gateway) or 0:
-		from server_tools.gateway_utils import add_user_gateway
-		add_user_gateway(args)
-	
-	add_profile(args)
-	
-@webnotes.whitelist()
-def add_profile(args):
-	from webnotes.utils import validate_email_add, now
-	email = args['user']
-			
-	sql = webnotes.conn.sql
-	
-	if not email:
-		email = webnotes.form_dict.get('user')
-	if not validate_email_add(email):
-		raise Exception
-		return 'Invalid Email Id'
-	
-	if sql("select name from tabProfile where name = %s", email):
-		# exists, enable it
-		sql("update tabProfile set enabled = 1, docstatus=0 where name = %s", email)
-		webnotes.msgprint('Profile exists, enabled it with new password')
-	else:
-		# does not exist, create it!
-		pr = Document('Profile')
-		pr.name = email
-		pr.email = email
-		pr.first_name = args.get('first_name')
-		pr.last_name = args.get('last_name')
-		pr.enabled = 1
-		pr.user_type = 'System User'
-		pr.save(1)
-
-	if args.get('password'):
-		sql("""
-			UPDATE tabProfile 
-			SET password = PASSWORD(%s), modified = %s
-			WHERE name = %s""", (args.get('password'), now, email))
-
-	send_welcome_mail(email, args)
-
-@webnotes.whitelist()
-def send_welcome_mail(email, args):
-	"""send welcome mail to user with password and login url"""
-	pr = Document('Profile', email)
-	from webnotes.utils.email_lib import sendmail_md
-	args.update({
-		'company': webnotes.conn.get_default('company'),
-		'password': args.get('password'),
-		'account_url': webnotes.conn.get_default('account_url')
-	})
-	if not args.get('last_name'): args['last_name'] = ''
-	sendmail_md(pr.email, subject="Welcome to ERPNext", msg=welcome_txt % args, from_defs=1)
-
-#
-# post comment
-#
-@webnotes.whitelist()
-def post_comment(arg):
-	arg = load_json(arg)
-	
-	from webnotes.model.doc import Document
-	d = Document('Comment')
-	d.comment_doctype = 'My Company'
-	d.comment_docname = arg['uid'] # to
-	d.owner = webnotes.user.name
-	d.comment = arg['comment']
-	d.save(1)
-	
-	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])
-		else:
-			fn = webnotes.user.name
-
-		message = '''A new comment has been posted on your page by %s:
-		
-		<b>Comment:</b> %s
-		
-		To answer, please login to your erpnext account!
-
-		<a href='https://signin.erpnext.com'>https://signin.erpnext.com</a>
-		''' % (fn, arg['comment'])
-		
-		from webnotes.model.code import get_obj
-		note = get_obj('Notification Control')
-		email_msg = note.prepare_message({
-			'type': 'New Comment',
-			'message': message
-		})
-
-		sender = webnotes.user.name!='Administrator' and webnotes.user.name or 'support+admin_post@erpnext.com'
-		
-		from webnotes.utils.email_lib import sendmail
-		sendmail([arg['uid']], sender, email_msg, fn + ' has posted a new comment')
-	
-#
-# update read messages
-#
-@webnotes.whitelist()
-def set_read_all_messages(arg=''):
-	webnotes.conn.sql("""UPDATE `tabComment`
-	SET docstatus = 1
-	WHERE comment_doctype = 'My Company'
-	AND comment_docname = %s
-	""", webnotes.user.name)
-
-@webnotes.whitelist()
-def update_security(args=''):
-	import json
-	args = json.loads(args)
-	webnotes.conn.set_value('Profile', args['user'], 'restrict_ip', args.get('restrict_ip'))
-	webnotes.conn.set_value('Profile', args['user'], 'login_after', args.get('login_after'))
-	webnotes.conn.set_value('Profile', args['user'], 'login_before', args.get('login_before'))
-
-	if 'new_password' in args:
-		import webnotes.defs
-		from webnotes.utils import cint
-		if hasattr(webnotes.defs, 'sync_with_gateway') and \
-				cint(webnotes.defs.sync_with_gateway) or 0:			
-			import server_tools.gateway_utils
-			res = server_tools.gateway_utils.change_password('', args['new_password'], args['user'], args['sys_admin_pwd'])
-			if 'Traceback' not in res['message']:
-				webnotes.msgprint(res['message'])
-		webnotes.conn.sql("update tabProfile set password=password(%s) where name=%s", (args['new_password'], args['user']))
-	else: webnotes.msgprint('Settings Updated')
-
-welcome_txt = """
-## %(company)s
-
-Dear %(first_name)s %(last_name)s
-
-Welcome!
-
-A new account has been created for you, here are your details:
-
-login-id: %(user)s
-password: %(password)s
-
-To login to your new ERPNext account, please go to:
-
-%(account_url)s
-"""
diff --git a/erpnext/home/page/my_company/my_company.txt b/erpnext/home/page/my_company/my_company.txt
deleted file mode 100644
index 3183315..0000000
--- a/erpnext/home/page/my_company/my_company.txt
+++ /dev/null
@@ -1,51 +0,0 @@
-# Page, My Company
-[
-
-	# These values are common in all dictionaries
-	{
-		'creation': '2010-12-14 10:23:19',
-		'docstatus': 0,
-		'modified': '2010-12-27 17:44:15',
-		'modified_by': 'Administrator',
-		'owner': 'Administrator'
-	},
-
-	# These values are common for all Page
-	{
-		'doctype': 'Page',
-		'module': 'Home',
-		'name': '__common__',
-		'page_name': 'My Company',
-		'show_in_menu': 1,
-		'standard': 'Yes'
-	},
-
-	# These values are common for all Page Role
-	{
-		'doctype': 'Page Role',
-		'name': '__common__',
-		'parent': 'My Company',
-		'parentfield': 'roles',
-		'parenttype': 'Page'
-	},
-
-	# Page, My Company
-	{
-		'doctype': 'Page',
-		'name': 'My Company'
-	},
-
-	# Page Role
-	{
-		'doctype': 'Page Role',
-		'idx': 1,
-		'role': 'Administrator'
-	},
-
-	# Page Role
-	{
-		'doctype': 'Page Role',
-		'idx': 2,
-		'role': 'All'
-	}
-]
\ No newline at end of file
diff --git a/erpnext/knowledge_base/page/questions/questions.py b/erpnext/knowledge_base/page/questions/questions.py
index 1b90fc7..52b80fe 100644
--- a/erpnext/knowledge_base/page/questions/questions.py
+++ b/erpnext/knowledge_base/page/questions/questions.py
@@ -17,6 +17,7 @@
 import webnotes
 
 from webnotes.utils import load_json, cint, cstr
+import json
 
 # add a new question
 @webnotes.whitelist()
@@ -30,14 +31,14 @@
 	d.save(1)
 	
 	if args['suggest']:
-		from home.page.my_company.my_company import post_comment
+		from utilities.page.messages import messages
 		for s in args['suggest']:
 			if s:
-				post_comment({
-					'uid': s,
-					'comment': 'Please help me and answer the question "%s" in the Knowledge Base' % d.question,
+				messages.post(json.dumps({
+					'contact': s,
+					'txt': 'Please help me and answer the question "%s" in the Knowledge Base' % d.question,
 					'notify': 1
-				})
+				}))
 	
 @webnotes.whitelist()
 def vote(arg):
@@ -60,4 +61,4 @@
 	"""
 	args = load_json(arg)
 	from webnotes.model import delete_doc
-	delete_doc(args['dt'], args['dn'])
\ No newline at end of file
+	delete_doc(args['dt'], args['dn'])
diff --git a/erpnext/patches/jan_mar_2012/rename_dt.py b/erpnext/patches/jan_mar_2012/rename_dt.py
index 01e6baf..a258f73 100644
--- a/erpnext/patches/jan_mar_2012/rename_dt.py
+++ b/erpnext/patches/jan_mar_2012/rename_dt.py
@@ -14,9 +14,7 @@
 	replace_labels_with_fieldnames()
 
 def execute():
-	# delete dt, mapper
-	delete_dt_and_mapper()
-	
+
 	#---------------------------------------------------
 	# doctype renaming
 	rendt = get_dt_to_be_renamed()
@@ -45,9 +43,52 @@
 	#---------------------------------------------------
 	# Reload mapper from file
 	for d in ren_mapper:
-		mod = '_'.join(webnotes.conn.sql("select module from `tabDocType Mapper` where name = %s", ren_mapper[d])[0][0].lower().split())
+		mod = '_'.join(webnotes.conn.sql("select module from `tabDocType Mapper` where name = %s", 
+			ren_mapper[d])[0][0].lower().split())
 		reload_doc(mod, 'DocType Mapper', ren_mapper[d])
+
+	delete_search_criteria()
+
+	# reload custom search criteria
+	#for d in  webnotes.conn.sql("""select name, module from
+	#		`tabSearch Criteria` where ifnull(standard, 'No') = 'Yes' and ifnull(disabled, 0) = 0"""):
+	#
+	for path, folders, files in os.walk(webnotes.defs.modules_path):
+		if not path.endswith('search_criteria'): continue
+		module = path.split(os.sep)[-2]
+		for sc in folders:
+			try:
+				reload_doc(module, 'search_criteria', sc)
+				print module, sc
+			except Exception, e:
+				print "did not reload: " + str(d)
 	
+	webnotes.conn.sql("""DELETE FROM `tabPrint Format`
+			WHERE name IN ('Delivery Note Format', 'Purchase Order Format',
+			'Quotation Format', 'Receivable Voucher Format', 'Sales Order',
+			'SalesInvoiceModern_test', 'SalesInvoiceStdNew',
+			'Service Order Format', 'Service Quotation Format')""")
+
+	# reload custom print format
+	for d in webnotes.conn.sql("""select name, module from `tabPrint Format`
+			where ifnull(standard, 'No') = 'Yes'"""):
+		try:
+			reload_doc(d[1], 'Print Format', d[0])
+		except Exception, e:
+			print "did not reload: " + str(d)
+
+	#  Reload GL Mapper
+	for d in webnotes.conn.sql("select name from `tabGL Mapper`"):
+		reload_doc('accounts', 'GL Mapper', d[0])
+		
+	#gl entry, stock ledger entry, 
+
+
+
+	# T0-do-list
+	# gl mapper name
+
+def delete_search_criteria():
 	webnotes.conn.sql("""DELETE FROM `tabSearch Criteria`
 			WHERE name IN ('', 'bills-to_be_paid',
 			'bills-to_be_submitted', 'cenvat_credit_-_input_or_capital_goods',
@@ -84,74 +125,18 @@
 			'projectwise_pending_qty_and_costs_as_per_purchase_cost', 'custom_test', 'custom_test1',
 			'delivery_notes', 'delivery_note_disabled', 'lead', 'lead_interested', 'lead_report',
 			'periodic_sales_summary', 'monthly_despatched_trend', 'sales', 'sales_order',
-			'sales_order1', 'sales_agentwise_commission', 'test_report', 'territory_wise_sales_-_target_vs_actual_')""")
+			'sales_order1', 'sales_agentwise_commission', 'test_report', 
+			'territory_wise_sales_-_target_vs_actual_')""")
 
 	webnotes.conn.sql("""
 		DELETE FROM `tabSearch Criteria`
 		WHERE name IN ('monthly_transaction_summary', 'trend_analyzer',
 		'yearly_transaction_summary', 'invoices-overdue', 'lead-to_follow_up',
 		'opportunity-to_follow_up', 'serial_no-amc_expiring_this_month',
-		'serial_no-warranty_expiring_this_month', )
+		'serial_no-warranty_expiring_this_month')
 		AND IFNULL(standard, 'No') = 'Yes'
 		""")
 
-	# reload custom search criteria
-	for d in  webnotes.conn.sql("""select name, module from
-			`tabSearch Criteria` where ifnull(standard, 'No') = 'Yes' and ifnull(disabled, 0) = 0"""):
-		try:
-			reload_doc(d[1], 'search_criteria', d[0].replace('-', '_'))
-			print d
-		except Exception, e:
-			print "did not reload: " + str(d)
-	
-	webnotes.conn.sql("""DELETE FROM `tabPrint Format`
-			WHERE name IN ('Delivery Note Format', 'Purchase Order Format',
-			'Quotation Format', 'Receivable Voucher Format', 'Sales Order',
-			'SalesInvoiceModern_test', 'SalesInvoiceStdNew',
-			'Service Order Format', 'Service Quotation Format')""")
-
-	# reload custom print format
-	for d in webnotes.conn.sql("""select name, module from `tabPrint Format`
-			where ifnull(standard, 'No') = 'Yes'"""):
-		try:
-			reload_doc(d[1], 'Print Format', d[0])
-		except Exception, e:
-			print "did not reload: " + str(d)
-
-	#  Reload GL Mapper
-	for d in webnotes.conn.sql("select name from `tabGL Mapper`"):
-		reload_doc('accounts', 'GL Mapper', d[0])
-		
-	#gl entry, stock ledger entry, 
-
-
-
-	# T0-do-list
-	# gl mapper name
-
-
-
-def delete_dt_and_mapper():
-	del_mapper = ['Production Forecast-Production Planning Tool', 'Production Forecast-Production Plan', 'Sales Order-Production Plan']
-	for d in del_mapper:
-		delete_doc('DocType Mapper', d)
-
-	del_dt = ['Widget Control', 'Update Delivery Date Detail', 'Update Delivery	Date',
-			'Tag Detail', 'Supplier rating', 'Stylesheet', 'Question Tag',
-			'PRO PP Detail', 'PRO Detail', 'PPW Detail', 'PF Detail',
-			'Personalize', 'Patch Util', 'Page Template', 'Module Def Role',
-			'Module Def Item', 'File Group', 'File Browser Control', 'File',
-			'Educational Qualifications', 'Earn Deduction Detail',
-			'DocType Property Setter', 'Contact Detail', 'BOM Report Detail', 
-			'BOM Replace Utility Detail', 'BOM Replace Utility', 
-			'Absent Days Detail', 'Activity Dashboard Control', 'Raw Materials Supplied',
-			'Setup Wizard Control', 'Company Group', 'Lease Agreement', 'Lease Installment'] # docformat
-
-	for d in del_dt:
-		delete_doc('DocType', d)
-
-
-
 def rename_in_db(ren_data, data_type, is_doctype):
 	for d in ren_data:
 		print colored('Renaming... ' + d + ' --> '+ ren_data[d], 'yellow')
@@ -166,7 +151,7 @@
 def update_dt_in_records(rendt):
 	for d in rendt:
 		# Feed, property setter, search criteria, gl mapper, form 16A, naming series options, doclayer - dodtype is not mentioed in options
-		dt_list = webnotes.conn.sql("select t1.parent, t1.fieldname from tabDocField t1, tabDocType t2 where t1.parent = t2.name and t1.fieldname in ('dt', 'doctype', 'doc_type', 'dt_type') and ifnull(t1.options, '') = '' and ifnull(t2.issingle, 0) = 0")
+		dt_list = webnotes.conn.sql("select t1.parent, t1.fieldname from tabDocField t1, tabDocType t2 where t1.parent = t2.name and t1.fieldname in ('dt', 'doctype', 'doc_type', 'dt_type') and ifnull(t1.options, '') = '' and ifnull(t2.issingle, 0) = 0 and t1.parent in ('Custom Field', 'Custom Script')")
 		for dt in dt_list:
 			webnotes.conn.sql("update `tab%s` set %s = replace(%s, '%s', '%s') where %s = '%s'" % (dt[0], dt[1], dt[1], d, rendt[d], dt[1], d))
 
diff --git a/erpnext/patches/jan_mar_2012/sync_ref_db.py b/erpnext/patches/jan_mar_2012/sync_ref_db.py
index efc831d..2997d9c 100644
--- a/erpnext/patches/jan_mar_2012/sync_ref_db.py
+++ b/erpnext/patches/jan_mar_2012/sync_ref_db.py
@@ -1,15 +1,49 @@
-def execute():
-	import webnotes
-	sql = webnotes.conn.sql
-	from webnotes.model import delete_doc
+import webnotes
+sql = webnotes.conn.sql
+from webnotes.model import delete_doc
 
+def execute():
 	del_rec = {
-		'DocType'	:	['Update Series', 'File', 'File Browser Control', 'File Group', 'Tag Detail', 'DocType Property Setter', 'Company Group'],
-		'Page'		:	['File Browser']
+		'DocType'	:	['Update Series', 'File', 'File Browser Control', 'File Group',
+			'Tag Detail', 'DocType Property Setter', 'Company Group', 'Widget Control', 
+			'Update Delivery Date Detail', 'Update Delivery	Date',
+			'Tag Detail', 'Supplier rating', 'Stylesheet', 'Question Tag',
+			'PRO PP Detail', 'PRO Detail', 'PPW Detail', 'PF Detail',
+			'Personalize', 'Patch Util', 'Page Template', 'Module Def Role',
+			'Module Def Item', 'File Group', 'File Browser Control', 'File',
+			'Educational Qualifications', 'Earn Deduction Detail',
+			'DocType Property Setter', 'Contact Detail', 'BOM Report Detail', 
+			'BOM Replace Utility Detail', 'BOM Replace Utility', 
+			'Absent Days Detail', 'Activity Dashboard Control', 'Raw Materials Supplied',
+			'Setup Wizard Control', 'Company Group', 'Lease Agreement', 'Lease Installment',
+			'Terms and Conditions', 'Time Sheet', 'Time Sheet Detail', 'Naming Series Options'],
+		'Page'		:	['File Browser'],
+		'DocType Mapper': ['Production Forecast-Production Planning Tool', 'Production Forecast-Production Plan', 'Sales Order-Production Plan']
 	}
 
 	for d in del_rec:
 		for r in del_rec[d]:
+			if d=='DocType':
+				sql("delete from tabFeed where doc_type=%s", r)
 			delete_doc(d, r)
 
 	sql("delete from tabDocField where label='Repair Purchase Request' and parent = 'Purchase Request'")
+
+	drop_tables()
+
+
+def drop_tables():
+	webnotes.conn.commit()
+	from webnotes.model.db_schema import remove_all_foreign_keys
+	remove_all_foreign_keys()
+	count = 0
+	tab_list = sql("SHOW TABLES")
+	for tab in tab_list:
+		if tab[0].startswith('_') or tab[0] in ('tabSingles', 'tabSessions', 'tabSeries'): continue
+		res = sql("SELECT COUNT(*) FROM `tabDocType` WHERE name = %s", tab[0][3:])
+		if not res[0][0]:
+			count += 1
+			print tab[0]
+			sql("DROP TABLE `%s`" % tab[0])
+	print count
+	webnotes.conn.begin()
diff --git a/erpnext/selling/doctype/quotation/quotation.js b/erpnext/selling/doctype/quotation/quotation.js
index a589a32..563052f 100644
--- a/erpnext/selling/doctype/quotation/quotation.js
+++ b/erpnext/selling/doctype/quotation/quotation.js
@@ -22,7 +22,7 @@
 
 // =====================================================================================
 wn.require('erpnext/selling/doctype/sales_common/sales_common.js');
-wn.require('erpnext/setup/doctype/other_charges/other_charges.js');
+wn.require('erpnext/accounts/doctype/sales_taxes_and_charges_master/sales_taxes_and_charges_master.js');
 wn.require('erpnext/utilities/doctype/sms_control/sms_control.js');
 wn.require('erpnext/setup/doctype/notification_control/notification_control.js');
 
diff --git a/erpnext/selling/doctype/sales_common/sales_common.js b/erpnext/selling/doctype/sales_common/sales_common.js
index fd043af..2a6e5a3 100644
--- a/erpnext/selling/doctype/sales_common/sales_common.js
+++ b/erpnext/selling/doctype/sales_common/sales_common.js
@@ -18,7 +18,7 @@
 // ------
 // cur_frm.cscript.tname - Details table name
 // cur_frm.cscript.fname - Details fieldname
-// cur_frm.cscript.other_fname - wn.require('erpnext/setup/doctype/other_charges/other_charges.js'); fieldname
+// cur_frm.cscript.other_fname - wn.require('erpnext/accounts/doctype/sales_taxes_and_charges_master/sales_taxes_and_charges_master.js'); fieldname
 // cur_frm.cscript.sales_team_fname - Sales Team fieldname
 
 // ============== Load Default Taxes ===================
diff --git a/erpnext/selling/doctype/sales_order/sales_order.js b/erpnext/selling/doctype/sales_order/sales_order.js
index 1fe5fe1..24e69a2 100644
--- a/erpnext/selling/doctype/sales_order/sales_order.js
+++ b/erpnext/selling/doctype/sales_order/sales_order.js
@@ -23,7 +23,7 @@
 
 
 wn.require('erpnext/selling/doctype/sales_common/sales_common.js');
-wn.require('erpnext/setup/doctype/other_charges/other_charges.js');
+wn.require('erpnext/accounts/doctype/sales_taxes_and_charges_master/sales_taxes_and_charges_master.js');
 wn.require('erpnext/utilities/doctype/sms_control/sms_control.js');
 wn.require('erpnext/setup/doctype/notification_control/notification_control.js');
 
diff --git a/erpnext/startup/startup.js b/erpnext/startup/startup.js
index 27befaf..5d7e663 100644
--- a/erpnext/startup/startup.js
+++ b/erpnext/startup/startup.js
@@ -114,34 +114,38 @@
 	if(inList(['Guest'], user) || !wn.session_alive) { return; }
 
 	if(!reset) {
-		$c_page('home', 'event_updates', 'get_global_status_messages', null,
-			function(r,rt) {
-				if(!r.exc) {
-					// This function is defined in toolbar.js
-					wn.container.wntoolbar.set_new_comments(r.message.unread_messages);
-					
-					var show_in_circle = function(parent_id, msg) {
-						var parent = $('#'+parent_id);
-						if(parent) {
-							if(msg) {
-								parent.find('span:first').text(msg);
-								parent.toggle(true);
-							} else {
-								parent.toggle(false);
-							}
+		var set_messages = function(r) {
+			if(!r.exc) {
+				// This function is defined in toolbar.js
+				wn.container.wntoolbar.set_new_comments(r.message.unread_messages);
+				
+				var show_in_circle = function(parent_id, msg) {
+					var parent = $('#'+parent_id);
+					if(parent) {
+						if(msg) {
+							parent.find('span:first').text(msg);
+							parent.toggle(true);
+						} else {
+							parent.toggle(false);
 						}
 					}
-
-					show_in_circle('unread_messages', r.message.unread_messages.length);
-					show_in_circle('open_support_tickets', r.message.open_support_tickets);
-					show_in_circle('things_todo', r.message.things_todo);
-					show_in_circle('todays_events', r.message.todays_events);
-
-				} else {
-					clearInterval(wn.updates.id);
 				}
+				
+				show_in_circle('unread_messages', r.message.unread_messages.length);
+				show_in_circle('open_support_tickets', r.message.open_support_tickets);
+				show_in_circle('things_todo', r.message.things_todo);
+				show_in_circle('todays_events', r.message.todays_events);
+
+			} else {
+				clearInterval(wn.updates.id);
 			}
-		);
+		}
+
+		wn.call({
+			method: 'startup.startup.get_global_status_messages',
+			callback: set_messages
+		});
+	
 	} else {
 		wn.container.wntoolbar.set_new_comments(0);
 		$('#unread_messages').toggle(false);
diff --git a/erpnext/startup/startup.py b/erpnext/startup/startup.py
new file mode 100644
index 0000000..8bc13f8
--- /dev/null
+++ b/erpnext/startup/startup.py
@@ -0,0 +1,54 @@
+import webnotes
+
+def get_unread_messages():
+	"returns unread (docstatus-0 messages for a user)"
+	return webnotes.conn.sql("""\
+		SELECT name, comment
+		FROM `tabComment`
+		WHERE comment_doctype IN ('My Company', 'Message')
+		AND comment_docname = %s
+		AND ifnull(docstatus,0)=0
+		""", webnotes.user.name, as_list=1)
+
+def get_open_support_tickets():
+	"""
+		Returns a count of open support tickets
+	"""
+	from webnotes.utils import cint
+	open_support_tickets = webnotes.conn.sql("""\
+		SELECT COUNT(*) FROM `tabSupport Ticket`
+		WHERE status = 'Open'""")
+	return open_support_tickets and cint(open_support_tickets[0][0]) or 0
+
+def get_things_todo():
+	"""
+		Returns a count of incomplete todos
+	"""
+	from webnotes.utils import cint
+	incomplete_todos = webnotes.conn.sql("""\
+		SELECT COUNT(*) FROM `tabToDo`
+		WHERE IFNULL(checked, 0) = 0
+		AND owner = %s""", webnotes.session.get('user'))
+	return incomplete_todos and cint(incomplete_todos[0][0]) or 0
+
+def get_todays_events():
+	"""
+		Returns a count of todays events in calendar
+	"""
+	from webnotes.utils import nowdate, cint
+	todays_events = webnotes.conn.sql("""\
+		SELECT COUNT(*) FROM `tabEvent`
+		WHERE owner = %s
+		AND event_type != 'Cancel'
+		AND event_date = %s""", (
+		webnotes.session.get('user'), nowdate()))
+	return todays_events and cint(todays_events[0][0]) or 0
+
+@webnotes.whitelist()
+def get_global_status_messages(arg=None):
+	return {
+		'unread_messages': get_unread_messages(),
+		'open_support_tickets': get_open_support_tickets(),
+		'things_todo': get_things_todo(),
+		'todays_events': get_todays_events(),
+	}
diff --git a/erpnext/stock/doctype/delivery_note/delivery_note.js b/erpnext/stock/doctype/delivery_note/delivery_note.js
index d9368bd..8e15897 100644
--- a/erpnext/stock/doctype/delivery_note/delivery_note.js
+++ b/erpnext/stock/doctype/delivery_note/delivery_note.js
@@ -21,7 +21,7 @@
 cur_frm.cscript.sales_team_fname = "sales_team";
 
 wn.require('erpnext/selling/doctype/sales_common/sales_common.js');
-wn.require('erpnext/setup/doctype/other_charges/other_charges.js');
+wn.require('erpnext/accounts/doctype/sales_taxes_and_charges_master/sales_taxes_and_charges_master.js');
 wn.require('erpnext/utilities/doctype/sms_control/sms_control.js');
 wn.require('erpnext/setup/doctype/notification_control/notification_control.js');
 
diff --git a/erpnext/stock/doctype/purchase_receipt/purchase_receipt.js b/erpnext/stock/doctype/purchase_receipt/purchase_receipt.js
index abeac49..7e81b88 100644
--- a/erpnext/stock/doctype/purchase_receipt/purchase_receipt.js
+++ b/erpnext/stock/doctype/purchase_receipt/purchase_receipt.js
@@ -18,7 +18,7 @@
 cur_frm.cscript.fname = "purchase_receipt_details";
 cur_frm.cscript.other_fname = "purchase_tax_details";
 
-wn.require('erpnext/buying/doctype/purchase_other_charges/purchase_other_charges.js');
+wn.require('erpnext/accounts/doctype/purchase_taxes_and_charges_master/purchase_taxes_and_charges_master.js');
 wn.require('erpnext/buying/doctype/purchase_common/purchase_common.js');
 wn.require('erpnext/utilities/doctype/sms_control/sms_control.js');
 wn.require('erpnext/setup/doctype/notification_control/notification_control.js');
diff --git a/erpnext/utilities/page/messages/messages.py b/erpnext/utilities/page/messages/messages.py
index 3a27bca..212a268 100644
--- a/erpnext/utilities/page/messages/messages.py
+++ b/erpnext/utilities/page/messages/messages.py
@@ -68,9 +68,41 @@
 	d.comment_docname = arg['contact']
 	d.comment_doctype = 'Message'
 	d.save()
+
+	import webnotes.utils
+	if webnotes.utils.cint(arg.get('notify')):
+		notify(arg)
 	
 @webnotes.whitelist()
 def delete(arg=None):
 	webnotes.conn.sql("""delete from `tabComment` where name=%s""", 
 		webnotes.form_dict['name']);
+
+def notify(arg=None):
+	from webnotes.utils import cstr
+	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])
+	else:
+		fn = webnotes.user.name
+
+	message = '''A new comment has been posted on your page by %s:
 	
+	<b>Comment:</b> %s
+	
+	To answer, please login to your erpnext account!
+
+	<a href='https://signin.erpnext.com'>https://signin.erpnext.com</a>
+	''' % (fn, arg['txt'])
+	
+	from webnotes.model.code import get_obj
+	note = get_obj('Notification Control')
+	email_msg = note.prepare_message({
+		'type': 'New Comment',
+		'message': message
+	})
+
+	sender = webnotes.user.name!='Administrator' and webnotes.user.name or 'support+admin_post@erpnext.com'
+	
+	from webnotes.utils.email_lib import sendmail
+	sendmail([arg['contact']], sender, email_msg, fn + ' has posted a new comment')