diff --git a/erpnext/projects/doctype/activity_type/__init__.py b/erpnext/projects/doctype/activity_type/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/erpnext/projects/doctype/activity_type/__init__.py
+++ /dev/null
diff --git a/erpnext/projects/doctype/activity_type/activity_type.txt b/erpnext/projects/doctype/activity_type/activity_type.txt
deleted file mode 100644
index 46ed917..0000000
--- a/erpnext/projects/doctype/activity_type/activity_type.txt
+++ /dev/null
@@ -1,78 +0,0 @@
-# DocType, Activity Type
-[
-
-	# These values are common in all dictionaries
-	{
-		'creation': '2012-03-27 14:36:05',
-		'docstatus': 0,
-		'modified': '2012-03-27 14:36:05',
-		'modified_by': u'Administrator',
-		'owner': u'Administrator'
-	},
-
-	# These values are common for all DocType
-	{
-		'autoname': u'field:activity_type',
-		'colour': u'White:FFF',
-		'doctype': 'DocType',
-		'in_dialog': 1,
-		'module': u'Projects',
-		'name': '__common__',
-		'section_style': u'Simple',
-		'server_code_error': u' ',
-		'version': 12
-	},
-
-	# These values are common for all DocField
-	{
-		'doctype': u'DocField',
-		'fieldname': u'activity_type',
-		'fieldtype': u'Data',
-		'label': u'Activity Type',
-		'name': '__common__',
-		'parent': u'Activity Type',
-		'parentfield': u'fields',
-		'parenttype': u'DocType',
-		'permlevel': 0,
-		'reqd': 1
-	},
-
-	# These values are common for all DocPerm
-	{
-		'amend': 0,
-		'cancel': 0,
-		'create': 1,
-		'doctype': u'DocPerm',
-		'name': '__common__',
-		'parent': u'Activity Type',
-		'parentfield': u'permissions',
-		'parenttype': u'DocType',
-		'permlevel': 0,
-		'read': 1,
-		'submit': 0,
-		'write': 1
-	},
-
-	# DocType, Activity Type
-	{
-		'doctype': 'DocType',
-		'name': u'Activity Type'
-	},
-
-	# DocPerm
-	{
-		'doctype': u'DocPerm',
-		'role': u'System Manager'
-	},
-
-	# DocPerm
-	{
-		'doctype': u'DocPerm',
-		'role': u'Projects User'
-	},
-
-	# DocField
-	{
-		'doctype': u'DocField'
-	}
-]
\ No newline at end of file
diff --git a/erpnext/projects/doctype/project/project.js b/erpnext/projects/doctype/project/project.js
index faa175f..eca9261 100644
--- a/erpnext/projects/doctype/project/project.js
+++ b/erpnext/projects/doctype/project/project.js
@@ -14,42 +14,16 @@
 // You should have received a copy of the GNU General Public License
 // along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
-//-------------------------- Onload ---------------------------
-cur_frm.cscript.onload = function(doc, cdt, cdn) {
-  if(!doc.status) set_multiple(cdt,cdn,{status:'Draft'});
-}
+// show tasks
 
-//-------------------  Get Contact Person based on customer selected ---------------------------
-cur_frm.fields_dict['contact_person'].get_query = function(doc, cdt, cdn) {
-  if(doc.customer)
-    return 'SELECT `tabContact`.contact_name FROM `tabContact` WHERE (`tabContact`.is_customer = 1 AND `tabContact`.customer_name = "'+ doc.customer+'") AND `tabContact`.docstatus != 2 AND `tabContact`.contact_name LIKE "%s" ORDER BY `tabContact`.contact_name ASC LIMIT 50';
-  else
-    msgprint("Please select Customer first")
-}
-
-//-------------------------------- get query select Territory ------------------------------------------
-cur_frm.fields_dict['territory'].get_query = function(doc,cdt,cdn) {
-  return 'SELECT `tabTerritory`.`name`,`tabTerritory`.`parent_territory` FROM `tabTerritory` WHERE `tabTerritory`.`is_group` = "No" AND `tabTerritory`.`docstatus`!= 2 AND `tabTerritory`.%(key)s LIKE "%s"  ORDER BY  `tabTerritory`.`name` ASC LIMIT 50';
-}
-
-//------------------------ Customer and its primary contact Details ------------------------------------
-cur_frm.cscript.customer = function(doc, cdt, cdn) {
-  if(doc.customer) get_server_fields('get_customer_details', '','', doc, cdt, cdn, 1);
-}
-
-//--------------------- Customer's Contact Person Details --------------------------------------------
-cur_frm.cscript.contact_person = function(doc, cdt, cdn) {
-  if(doc.contact_person) {
-    get_server_fields('get_contact_details','','',doc, cdt, cdn, 1);
-  }
-}
-
-//--------- calculate gross profit --------------------------------
-cur_frm.cscript.project_value = function(doc, cdt, cdn){
-  get_server_fields('get_gross_profit','','',doc, cdt, cdn, 1);
-}
-
-//--------- calculate gross profit --------------------------------
-cur_frm.cscript.est_material_cost = function(doc, cdt, cdn){
-  get_server_fields('get_gross_profit','','',doc, cdt, cdn, 1);
-}
+cur_frm.cscript.refresh = function(doc) {
+	if(!doc.__islocal) {
+		// refresh gantt chart
+		wn.require('erpnext/projects/gantt_task.js');
+		if(!cur_frm.gantt_area)
+			cur_frm.gantt_area = $('<div>')
+				.appendTo(cur_frm.fields_dict.project_tasks.wrapper);
+		cur_frm.gantt_area.empty();
+		erpnext.show_task_gantt(cur_frm.gantt_area, cur_frm.docname);		
+	}
+}
\ No newline at end of file
diff --git a/erpnext/projects/doctype/project/project.txt b/erpnext/projects/doctype/project/project.txt
index 43cab39..1463f78 100644
--- a/erpnext/projects/doctype/project/project.txt
+++ b/erpnext/projects/doctype/project/project.txt
@@ -3,9 +3,9 @@
 
 	# These values are common in all dictionaries
 	{
-		'creation': '2012-05-03 18:41:42',
+		'creation': '2012-08-08 13:25:19',
 		'docstatus': 0,
-		'modified': '2012-08-07 15:48:47',
+		'modified': '2012-08-08 13:55:01',
 		'modified_by': u'Administrator',
 		'owner': u'Administrator'
 	},
@@ -225,6 +225,8 @@
 
 	# DocField
 	{
+		'colour': u'White:FFF',
+		'description': u'Milestones will be added as Events in the Calendar',
 		'doctype': u'DocField',
 		'fieldname': u'project_milestones',
 		'fieldtype': u'Table',
@@ -239,6 +241,26 @@
 
 	# DocField
 	{
+		'colour': u'White:FFF',
+		'description': u'Tasks belonging to this Project.',
+		'doctype': u'DocField',
+		'fieldname': u'sb_tasks',
+		'fieldtype': u'Section Break',
+		'label': u'Tasks',
+		'permlevel': 0
+	},
+
+	# DocField
+	{
+		'doctype': u'DocField',
+		'fieldname': u'project_tasks',
+		'fieldtype': u'HTML',
+		'label': u'Project Tasks',
+		'permlevel': 0
+	},
+
+	# DocField
+	{
 		'doctype': u'DocField',
 		'fieldname': u'section_break0',
 		'fieldtype': u'Section Break',
@@ -282,7 +304,7 @@
 		'oldfieldname': u'project_value',
 		'oldfieldtype': u'Currency',
 		'permlevel': 0,
-		'reqd': 1,
+		'reqd': 0,
 		'search_index': 0,
 		'trigger': u'Client'
 	},
@@ -322,7 +344,7 @@
 		'oldfieldname': u'gross_margin_value',
 		'oldfieldtype': u'Currency',
 		'permlevel': 0,
-		'reqd': 1,
+		'reqd': 0,
 		'search_index': 0
 	},
 
@@ -336,7 +358,7 @@
 		'oldfieldname': u'per_gross_margin',
 		'oldfieldtype': u'Currency',
 		'permlevel': 0,
-		'reqd': 1,
+		'reqd': 0,
 		'search_index': 0
 	},
 
diff --git a/erpnext/projects/doctype/project_activity/__init__.py b/erpnext/projects/doctype/project_activity/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/erpnext/projects/doctype/project_activity/__init__.py
+++ /dev/null
diff --git a/erpnext/projects/doctype/project_activity/project_activity.js b/erpnext/projects/doctype/project_activity/project_activity.js
deleted file mode 100644
index ad33e3c..0000000
--- a/erpnext/projects/doctype/project_activity/project_activity.js
+++ /dev/null
@@ -1,99 +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/>.
-
-cur_frm.cscript.onload = function(doc, dt, dn) {
-  // created?
-  if(cur_frm.mylist) {
-     cur_frm.mylist.run();
-     return;
-  } else {
-
-    // create a new listing
-    var lst = new Listing('Activities Updates');
-
-    lst.colwidths = ['5%','30%','40%','25%'];
- 
-    // define options
-    var opts = {};
-
-    opts.head_main_style = {};
-    opts.cell_style = { padding:'3px 2px', borderRight : '0px', borderBottom : '1px solid #AAA', verticalAlign: 'top'}
-    opts.head_style = { padding:'3px 2px', borderBottom : '1px solid #AAA'}
-    opts.alt_cell_style = {};
-    opts.hide_print = 1;
-    opts.no_border = 1;
-
-    opts.hide_export = 1;
-    opts.hide_print = 1;
-    opts.hide_rec_label = 1;
-
-    lst.opts = opts;
-  
-    // query
-    lst.get_query = function() {
-      var doc = cur_frm.doc;
-      this.query = "select owner,creation,`update`, hours from `tabProject Activity Update` where parent = '"+doc.name+"'";
-      this.query_max = "select count(*) from `tabProject Activity Update` where parent = '"+doc.name+"'";
-    }
-
-    lst.show_cell = function(cell,ri,ci,d){
- 
-      // owner and date
-      if (ci==0){ 
-        var d1 = $a(cell,'div');
-        var img = $a(cell,'img','',{width:'40px'});
-        img.src = wn.user_info(d[ri][0]).image;
-        var d2 = $a(cell,'div');
-        d2.innerHTML =  d[ri][0] + ' on: ' + date.str_to_user(d[ri][1]);
-      }
-
-      // update
-      if(ci==1) {
-        cell.innerHTML =  replace_newlines(d[ri][2]);
-      }
-
-      // Hours
-      if (ci==2) { 
-        cell.innerHTML = d[ri][3] + ' hrs';
-      }
-    }
-  
-    lst.make(cur_frm.fields_dict['updates_html'].wrapper);
-    cur_frm.mylist = lst;
-    lst.run();
-  }
-}
-
-cur_frm.cscript.refresh = function(doc, dt, dn) {
-
-  // show activities only after project is saved
-
-  var fl = ['new_update','add','hours','updates_html'];
-  if(doc.__islocal) { 
-    hide_field(fl);}
-  else { 
-    unhide_field(fl); }
-}
-
-cur_frm.cscript.add = function(doc, dt, dn) {
-  var callback = function(r,rt) {
-    
-    // refresh listing
-    cur_frm.mylist.run();
-
-  }
-  $c_obj(make_doclist(doc.doctype, doc.name),'add_update','',callback);
-}
diff --git a/erpnext/projects/doctype/project_activity/project_activity.py b/erpnext/projects/doctype/project_activity/project_activity.py
deleted file mode 100644
index 950e7e8..0000000
--- a/erpnext/projects/doctype/project_activity/project_activity.py
+++ /dev/null
@@ -1,48 +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/>.
-
-# Please edit this list and import only required elements
-import webnotes
-
-from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, generate_hash, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
-from webnotes.model import db_exists
-from webnotes.model.doc import Document, addchild, getchildren, make_autoname
-from webnotes.model.doclist import getlist, copy_doclist
-from webnotes.model.code import get_obj, get_server_obj, run_server_obj, updatedb, check_syntax
-from webnotes import session, form, is_testing, msgprint, errprint
-
-set = webnotes.conn.set
-sql = webnotes.conn.sql
-get_value = webnotes.conn.get_value
-in_transaction = webnotes.conn.in_transaction
-convert_to_lists = webnotes.conn.convert_to_lists
-	
-# -----------------------------------------------------------------------------------------
-
-
-class DocType:
-  def __init__(self,d,dl):
-    self.doc, self.doclist = d, dl
-
-  def add_update(self):
-    d = Document('Project Activity Update')
-    d.parent = self.doc.name
-    d.update = self.doc.new_update
-    d.hours = self.doc.hours
-    d.save(1)
-
-    self.doc.new_update = ''
-    self.doc.hours = ''
\ No newline at end of file
diff --git a/erpnext/projects/doctype/project_activity/project_activity.txt b/erpnext/projects/doctype/project_activity/project_activity.txt
deleted file mode 100644
index 5447165..0000000
--- a/erpnext/projects/doctype/project_activity/project_activity.txt
+++ /dev/null
@@ -1,167 +0,0 @@
-# DocType, Project Activity
-[
-
-	# These values are common in all dictionaries
-	{
-		'creation': '2012-03-27 14:36:06',
-		'docstatus': 0,
-		'modified': '2012-03-27 14:36:06',
-		'modified_by': u'Administrator',
-		'owner': u'Administrator'
-	},
-
-	# These values are common for all DocType
-	{
-		'autoname': u'Activity.######',
-		'colour': u'White:FFF',
-		'doctype': 'DocType',
-		'module': u'Projects',
-		'name': '__common__',
-		'section_style': u'Simple',
-		'server_code_error': u' ',
-		'version': 15
-	},
-
-	# These values are common for all DocField
-	{
-		'doctype': u'DocField',
-		'name': '__common__',
-		'parent': u'Project Activity',
-		'parentfield': u'fields',
-		'parenttype': u'DocType',
-		'permlevel': 0
-	},
-
-	# These values are common for all DocPerm
-	{
-		'create': 1,
-		'doctype': u'DocPerm',
-		'name': '__common__',
-		'parent': u'Project Activity',
-		'parentfield': u'permissions',
-		'parenttype': u'DocType',
-		'permlevel': 0,
-		'read': 1,
-		'role': u'All',
-		'write': 1
-	},
-
-	# DocType, Project Activity
-	{
-		'doctype': 'DocType',
-		'name': u'Project Activity'
-	},
-
-	# DocPerm
-	{
-		'doctype': u'DocPerm'
-	},
-
-	# DocField
-	{
-		'doctype': u'DocField',
-		'fieldname': u'project',
-		'fieldtype': u'Link',
-		'label': u'Project',
-		'oldfieldname': u'project',
-		'oldfieldtype': u'Link',
-		'options': u'Project'
-	},
-
-	# DocField
-	{
-		'doctype': u'DocField',
-		'fieldname': u'activity_name',
-		'fieldtype': u'Data',
-		'label': u'Activity Name',
-		'oldfieldname': u'activity_name',
-		'oldfieldtype': u'Data',
-		'print_hide': 1,
-		'reqd': 1
-	},
-
-	# DocField
-	{
-		'doctype': u'DocField',
-		'fieldname': u'percent_complete',
-		'fieldtype': u'Select',
-		'label': u'Percent Complete',
-		'oldfieldname': u'percent_complete',
-		'oldfieldtype': u'Select',
-		'options': u'0\n5\n10\n15\n20\n25\n30\n35\n40\n45\n50\n55\n60\n65\n70\n75\n80\n85\n90\n95\n100',
-		'reqd': 0
-	},
-
-	# DocField
-	{
-		'doctype': u'DocField',
-		'fieldname': u'last_update',
-		'fieldtype': u'Date',
-		'hidden': 1,
-		'label': u'Last Update',
-		'oldfieldname': u'last_update',
-		'oldfieldtype': u'Date',
-		'print_hide': 1
-	},
-
-	# DocField
-	{
-		'doctype': u'DocField',
-		'fieldname': u'last_update_by',
-		'fieldtype': u'Data',
-		'hidden': 1,
-		'label': u'Last Update By',
-		'oldfieldname': u'last_update_by',
-		'oldfieldtype': u'Data',
-		'print_hide': 1
-	},
-
-	# DocField
-	{
-		'doctype': u'DocField',
-		'fieldname': u'updates',
-		'fieldtype': u'Section Break',
-		'label': u'Updates',
-		'oldfieldtype': u'Section Break'
-	},
-
-	# DocField
-	{
-		'doctype': u'DocField',
-		'fieldname': u'updates_html',
-		'fieldtype': u'HTML',
-		'label': u'Updates HTML',
-		'oldfieldtype': u'HTML'
-	},
-
-	# DocField
-	{
-		'doctype': u'DocField',
-		'fieldname': u'new_update',
-		'fieldtype': u'Text',
-		'label': u'New Update',
-		'oldfieldname': u'new_update',
-		'oldfieldtype': u'Text'
-	},
-
-	# DocField
-	{
-		'doctype': u'DocField',
-		'fieldname': u'hours',
-		'fieldtype': u'Float',
-		'label': u'Hours',
-		'oldfieldname': u'hours',
-		'oldfieldtype': u'Float'
-	},
-
-	# DocField
-	{
-		'colour': u'White:FFF',
-		'doctype': u'DocField',
-		'fieldname': u'add',
-		'fieldtype': u'Button',
-		'label': u'Add',
-		'oldfieldtype': u'Button',
-		'trigger': u'Client'
-	}
-]
\ No newline at end of file
diff --git a/erpnext/projects/doctype/project_activity_update/__init__.py b/erpnext/projects/doctype/project_activity_update/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/erpnext/projects/doctype/project_activity_update/__init__.py
+++ /dev/null
diff --git a/erpnext/projects/doctype/project_activity_update/project_activity_update.txt b/erpnext/projects/doctype/project_activity_update/project_activity_update.txt
deleted file mode 100644
index 8155ccf..0000000
--- a/erpnext/projects/doctype/project_activity_update/project_activity_update.txt
+++ /dev/null
@@ -1,61 +0,0 @@
-# DocType, Project Activity Update
-[
-
-	# These values are common in all dictionaries
-	{
-		'creation': '2012-03-27 14:36:06',
-		'docstatus': 0,
-		'modified': '2012-03-27 14:36:06',
-		'modified_by': u'Administrator',
-		'owner': u'Administrator'
-	},
-
-	# These values are common for all DocType
-	{
-		'colour': u'White:FFF',
-		'doctype': 'DocType',
-		'istable': 1,
-		'module': u'Projects',
-		'name': '__common__',
-		'section_style': u'Simple',
-		'version': 1
-	},
-
-	# These values are common for all DocField
-	{
-		'doctype': u'DocField',
-		'name': '__common__',
-		'parent': u'Project Activity Update',
-		'parentfield': u'fields',
-		'parenttype': u'DocType',
-		'permlevel': 0
-	},
-
-	# DocType, Project Activity Update
-	{
-		'doctype': 'DocType',
-		'name': u'Project Activity Update'
-	},
-
-	# DocField
-	{
-		'doctype': u'DocField',
-		'fieldname': u'update',
-		'fieldtype': u'Text',
-		'label': u'Update',
-		'oldfieldname': u'update',
-		'oldfieldtype': u'Text'
-	},
-
-	# DocField
-	{
-		'colour': u'White:FFF',
-		'description': u'e.g. 0.5, 2.5 etc',
-		'doctype': u'DocField',
-		'fieldname': u'hours',
-		'fieldtype': u'Float',
-		'label': u'Hours',
-		'oldfieldname': u'hours',
-		'oldfieldtype': u'Float'
-	}
-]
\ No newline at end of file
diff --git a/erpnext/projects/doctype/project_control/__init__.py b/erpnext/projects/doctype/project_control/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/erpnext/projects/doctype/project_control/__init__.py
+++ /dev/null
diff --git a/erpnext/projects/doctype/project_control/project_control.py b/erpnext/projects/doctype/project_control/project_control.py
deleted file mode 100644
index 9928ffd..0000000
--- a/erpnext/projects/doctype/project_control/project_control.py
+++ /dev/null
@@ -1,160 +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/>.
-
-# Please edit this list and import only required elements
-import webnotes
-
-from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, generate_hash, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, set_default, str_esc_quote, user_format, validate_email_add, add_days
-from webnotes.model import db_exists
-from webnotes.model.doc import Document, addchild, getchildren, make_autoname
-from webnotes.model.doclist import getlist, copy_doclist
-from webnotes.model.code import get_obj, get_server_obj, run_server_obj, updatedb, check_syntax
-from webnotes import session, form, is_testing, msgprint, errprint
-from webnotes.utils.email_lib import sendmail
-set = webnotes.conn.set
-sql = webnotes.conn.sql
-get_value = webnotes.conn.get_value
-in_transaction = webnotes.conn.in_transaction
-convert_to_lists = webnotes.conn.convert_to_lists
-	
-# -----------------------------------------------------------------------------------------
-
-
-class DocType:
-	def __init__(self,d,dl):		
-		self.doc, self.doclist = d,dl
-	
-	def get_projects(self, arg):
-	# project list
-		pl=[]
-		status={}
-		if arg == 'Open':
-			pl = [p[0] for p in sql("select name from `tabProject` where status = 'Open' order by creation desc limit 20")]
-			for p1 in pl:
-				status[p1] = 'Open'
-		elif arg == 'Completed':
-			pl = [p[0] for p in sql("select name from `tabProject` where status = 'Completed' order by creation desc limit 20")]
-			for p2 in pl:
-				status[p2] = 'Completed'
-		elif arg == 'Cancelled':
-			pl = [p[0] for p in sql("select name from `tabProject` where status = 'Cancelled' order by creation desc limit 20")]
-			for p3 in pl:
-				status[p3] = 'Cancelled'
-		else:
-			#pl = [p[0] for p in sql("select name from `tabProject` order by creation desc limit 20")]
-			pl1 = sql("select name, status from `tabProject` order by creation desc limit 20", as_dict=1)
-			for p4 in pl1:
-				status[p4['name']] = p4['status']
-				pl.append(p4['name'])
-		
-		# milestones in the next 7 days for active projects
-		ml = convert_to_lists(sql("select t1.milestone_date, t1.milestone, t1.parent from `tabProject Milestone` t1, tabProject t2 where t1.parent = t2.name and t2.status='Open' and DATEDIFF(t1.milestone_date, CURDATE()) BETWEEN 0 AND 7 ORDER BY t1.milestone_date ASC"))
-
-		# percent of activity completed per project
-		comp = {}
-		n_tasks = {}
-		
-		for p in pl:
-			t1 = sql('select count(*) from tabTask where project=%s and docstatus!=2', p)[0][0]
-			n_tasks[p] = t1 or 0
-			if t1:
-				t2 = sql('select count(*) from tabTask where project=%s and docstatus!=2 and status="Closed"', p)[0][0]
-				comp[p] = cint(flt(t2)*100/t1)
-		
-		return {'pl':pl, 'ml':ml, 'comp':comp, 'n_tasks':n_tasks, 'status':status}
-		
-	def get_resources(self):
-		ret = {}
-
-		# resource list
-		rl = sql("select distinct allocated_to, assignee_email from tabTask")
-
-		# get open & closed tickets
-		for r in rl:
-			if r[0]:
-				ret[r[1]] = {}
-				ret[r[1]]['id'] = r[0]
-				ret[r[1]]['Total'] = sql("select count(*) from tabTask where allocated_to=%s and docstatus!=2", r[0])[0][0]
-				ret[r[1]]['Closed'] = sql("select count(*) from tabTask where allocated_to=%s and status='Closed' and docstatus!=2", r[0])[0][0]
-				ret[r[1]]['percent'] = cint(flt(ret[r[1]]['Closed']) * 100 / ret[r[1]]['Total'])
-
-		return ret
-
-	# --------------------------------------------------------------
-	# for Gantt Chart
-
-	def get_init_data(self, arg=''):
-		pl = [p[0] for p in sql('select name from tabProject where docstatus != 2')]
-		rl = [p[0] for p in sql('select distinct allocated_to from tabTask where docstatus != 2 and ifnull(allocated_to,"") != ""')]
-		return {'pl':pl, 'rl':rl}
-
-	def get_tasks(self, arg):
-		start_date, end_date, project, resource = arg.split('~~~')
-
-		cl = ''
-		if project and project != 'All':
-			cl = " and ifnull(project,'') = '%s'" % project
-
-		if resource and resource != 'All':
-			cl = " and ifnull(allocated_to,'') = '%s'" % resource
-
-		tl = sql("""
-			select subject, allocated_to, project, exp_start_date, exp_end_date, priority, status, name
-			from tabTask 
-			where 
-				((exp_start_date between '%(st)s' and '%(end)s') or 
-				(exp_end_date between '%(st)s' and '%(end)s') or 
-				(exp_start_date < '%(st)s' and exp_end_date > '%(end)s')) %(cond)s order by exp_start_date limit 100""" % {'st': start_date, 'end': end_date, 'cond':cl})
-
-		return convert_to_lists(tl)
-	
-	def declare_proj_completed(self, arg):
-		chk = sql("select name from `tabTask` where project=%s and status='Open'", arg)
-		if chk:
-			chk_lst = [x[0] for x in chk]
-			msgprint("Task(s) "+','.join(chk_lst)+" has staus 'Open'. Please submit all tasks against this project before closing the project.")
-			return cstr('false')
-		else:
-			sql("update `tabProject` set status = 'Completed' where name = %s", arg)
-			return cstr('true')
-			
-			
-def sent_reminder_task():
-	task_list = sql("""
-		select subject, allocated_to, project, exp_start_date, exp_end_date,
-			priority, status, name, senders_name, opening_date, review_date, description 
-		from tabTask
-		where task_email_notify=1 
-			and sent_reminder=0 
-			and status='Open' 
-			and exp_start_date is not null""",as_dict=1)
-	for i in task_list:		
-		if date_diff(i['exp_start_date'],nowdate()) ==2:
-			msg2="""<h2>Two days to complete: %(name)s</h2>
-			<p>This is a reminder for the task %(name)s has been assigned to you 
-				by %(senders_name)s on %(opening_date)s</p>
-			<p><b>Subject:</b> %(subject)s </p>
-			<p><b>Project:</b> %(project)s</p>
-			<p><b>Expected Start Date:</b> %(exp_start_date)s</p>
-			<p><b>Expected End Date:</b> %(exp_end_date)s</p>
-			<p><b>Review Date:</b> %(review_date)s</p>
-			<p><b>Details:</b> %(description)s</p>
-			<p>If you have already completed this task, please update the system</p>
-			<p>Good Luck!</p>
-			<p>(This notification is autogenerated)</p>""" % i
-			sendmail(i['allocated_to'], msg=msg2, subject='A task has been assigned')
-			sql("update `tabTask` set sent_reminder='1' where name='%(name)s' and allocated_to= '%(allocated_to)s'" % i)	
-	
diff --git a/erpnext/projects/doctype/project_control/project_control.txt b/erpnext/projects/doctype/project_control/project_control.txt
deleted file mode 100644
index 76861cc..0000000
--- a/erpnext/projects/doctype/project_control/project_control.txt
+++ /dev/null
@@ -1,30 +0,0 @@
-# DocType, Project Control
-[
-
-	# These values are common in all dictionaries
-	{
-		'creation': '2012-03-27 14:36:06',
-		'docstatus': 0,
-		'modified': '2012-03-27 14:36:06',
-		'modified_by': u'Administrator',
-		'owner': u'harshada@webnotestech.com'
-	},
-
-	# These values are common for all DocType
-	{
-		'colour': u'White:FFF',
-		'doctype': 'DocType',
-		'issingle': 1,
-		'module': u'Projects',
-		'name': '__common__',
-		'section_style': u'Simple',
-		'server_code_error': u' ',
-		'version': 30
-	},
-
-	# DocType, Project Control
-	{
-		'doctype': 'DocType',
-		'name': u'Project Control'
-	}
-]
\ No newline at end of file
diff --git a/erpnext/projects/doctype/task/task.txt b/erpnext/projects/doctype/task/task.txt
index 9c9f07d..e5a5602 100644
--- a/erpnext/projects/doctype/task/task.txt
+++ b/erpnext/projects/doctype/task/task.txt
@@ -5,7 +5,7 @@
 	{
 		'creation': '2012-06-04 14:05:07',
 		'docstatus': 0,
-		'modified': '2012-08-08 12:53:33',
+		'modified': '2012-08-08 14:01:34',
 		'modified_by': u'Administrator',
 		'owner': u'Administrator'
 	},
@@ -35,7 +35,8 @@
 		'name': '__common__',
 		'parent': u'Task',
 		'parentfield': u'fields',
-		'parenttype': u'DocType'
+		'parenttype': u'DocType',
+		'permlevel': 0
 	},
 
 	# These values are common for all DocPerm
@@ -54,390 +55,6 @@
 		'name': u'Task'
 	},
 
-	# DocField
-	{
-		'doctype': u'DocField',
-		'fieldname': u'task_details',
-		'fieldtype': u'Section Break',
-		'label': u'Task Details',
-		'oldfieldtype': u'Section Break',
-		'permlevel': 0,
-		'search_index': 0,
-		'width': u'50%'
-	},
-
-	# DocField
-	{
-		'doctype': u'DocField',
-		'fieldname': u'subject',
-		'fieldtype': u'Data',
-		'in_filter': 1,
-		'label': u'Subject',
-		'oldfieldname': u'subject',
-		'oldfieldtype': u'Data',
-		'permlevel': 0,
-		'reqd': 1
-	},
-
-	# DocField
-	{
-		'doctype': u'DocField',
-		'fieldname': u'exp_start_date',
-		'fieldtype': u'Date',
-		'label': u'Expected Start Date',
-		'oldfieldname': u'exp_start_date',
-		'oldfieldtype': u'Date',
-		'permlevel': 0,
-		'reqd': 0
-	},
-
-	# DocField
-	{
-		'doctype': u'DocField',
-		'fieldname': u'exp_end_date',
-		'fieldtype': u'Date',
-		'in_filter': 1,
-		'label': u'Expected End Date',
-		'oldfieldname': u'exp_end_date',
-		'oldfieldtype': u'Date',
-		'permlevel': 0,
-		'reqd': 0,
-		'search_index': 1
-	},
-
-	# DocField
-	{
-		'doctype': u'DocField',
-		'fieldname': u'column_break0',
-		'fieldtype': u'Column Break',
-		'oldfieldtype': u'Column Break',
-		'permlevel': 0,
-		'width': u'50%'
-	},
-
-	# DocField
-	{
-		'colour': u'White:FFF',
-		'doctype': u'DocField',
-		'fieldname': u'project',
-		'fieldtype': u'Link',
-		'label': u'Project',
-		'oldfieldname': u'project',
-		'oldfieldtype': u'Link',
-		'options': u'Project',
-		'permlevel': 0,
-		'trigger': u'Client'
-	},
-
-	# DocField
-	{
-		'colour': u'White:FFF',
-		'doctype': u'DocField',
-		'fieldname': u'status',
-		'fieldtype': u'Select',
-		'label': u'Status',
-		'no_copy': 1,
-		'oldfieldname': u'status',
-		'oldfieldtype': u'Select',
-		'options': u'Open\nWorking\nPending Review\nClosed\nCancelled',
-		'permlevel': 0,
-		'trigger': u'Client'
-	},
-
-	# DocField
-	{
-		'doctype': u'DocField',
-		'fieldname': u'priority',
-		'fieldtype': u'Select',
-		'in_filter': 1,
-		'label': u'Priority',
-		'oldfieldname': u'priority',
-		'oldfieldtype': u'Select',
-		'options': u'Low\nMedium\nHigh\nUrgent',
-		'permlevel': 0,
-		'reqd': 0,
-		'search_index': 1
-	},
-
-	# DocField
-	{
-		'doctype': u'DocField',
-		'fieldname': u'section_break0',
-		'fieldtype': u'Section Break',
-		'oldfieldtype': u'Section Break',
-		'options': u'Simple',
-		'permlevel': 0
-	},
-
-	# DocField
-	{
-		'doctype': u'DocField',
-		'fieldname': u'description',
-		'fieldtype': u'Text Editor',
-		'label': u'Details',
-		'oldfieldname': u'description',
-		'oldfieldtype': u'Text Editor',
-		'permlevel': 0,
-		'reqd': 0,
-		'width': u'300px'
-	},
-
-	# DocField
-	{
-		'colour': u'White:FFF',
-		'description': u'If linked to a Customer',
-		'doctype': u'DocField',
-		'fieldname': u'customer_details',
-		'fieldtype': u'Section Break',
-		'label': u'Customer Details',
-		'permlevel': 0
-	},
-
-	# DocField
-	{
-		'doctype': u'DocField',
-		'fieldname': u'external_or_internal',
-		'fieldtype': u'Select',
-		'label': u'External or Internal',
-		'oldfieldname': u'external_or_internal',
-		'oldfieldtype': u'Select',
-		'options': u'External\nInternal',
-		'permlevel': 0
-	},
-
-	# DocField
-	{
-		'colour': u'White:FFF',
-		'doctype': u'DocField',
-		'fieldname': u'customer',
-		'fieldtype': u'Link',
-		'label': u'Customer',
-		'oldfieldname': u'customer',
-		'oldfieldtype': u'Link',
-		'options': u'Customer',
-		'permlevel': 0,
-		'trigger': u'Client'
-	},
-
-	# DocField
-	{
-		'doctype': u'DocField',
-		'fieldname': u'customer_name',
-		'fieldtype': u'Data',
-		'label': u'Customer Name',
-		'oldfieldname': u'customer_name',
-		'oldfieldtype': u'Data',
-		'permlevel': 1
-	},
-
-	# DocField
-	{
-		'doctype': u'DocField',
-		'fieldname': u'column_break25',
-		'fieldtype': u'Column Break',
-		'permlevel': 0
-	},
-
-	# DocField
-	{
-		'doctype': u'DocField',
-		'fieldname': u'senders_contact_no',
-		'fieldtype': u'Data',
-		'label': u'Senders Contact No',
-		'oldfieldname': u'senders_contact_no',
-		'oldfieldtype': u'Data',
-		'permlevel': 0
-	},
-
-	# DocField
-	{
-		'doctype': u'DocField',
-		'fieldname': u'senders_company',
-		'fieldtype': u'Data',
-		'label': u'Senders Company',
-		'oldfieldname': u'senders_company',
-		'oldfieldtype': u'Data',
-		'permlevel': 0
-	},
-
-	# DocField
-	{
-		'doctype': u'DocField',
-		'fieldname': u'time_and_budget',
-		'fieldtype': u'Section Break',
-		'label': u'Time and Budget',
-		'oldfieldtype': u'Section Break',
-		'permlevel': 0
-	},
-
-	# DocField
-	{
-		'doctype': u'DocField',
-		'fieldname': u'expected',
-		'fieldtype': u'Column Break',
-		'label': u'Expected',
-		'oldfieldtype': u'Column Break',
-		'permlevel': 0,
-		'width': u'50%'
-	},
-
-	# DocField
-	{
-		'doctype': u'DocField',
-		'fieldname': u'exp_total_hrs',
-		'fieldtype': u'Data',
-		'label': u'Total Hours (Expected)',
-		'oldfieldname': u'exp_total_hrs',
-		'oldfieldtype': u'Data',
-		'permlevel': 0,
-		'reqd': 0
-	},
-
-	# DocField
-	{
-		'doctype': u'DocField',
-		'fieldname': u'allocated_budget',
-		'fieldtype': u'Currency',
-		'label': u'Allocated Budget',
-		'oldfieldname': u'allocated_budget',
-		'oldfieldtype': u'Currency',
-		'permlevel': 0
-	},
-
-	# DocField
-	{
-		'doctype': u'DocField',
-		'fieldname': u'actual',
-		'fieldtype': u'Column Break',
-		'label': u'Actual',
-		'oldfieldtype': u'Column Break',
-		'permlevel': 0,
-		'width': u'50%'
-	},
-
-	# DocField
-	{
-		'doctype': u'DocField',
-		'fieldname': u'act_start_date',
-		'fieldtype': u'Date',
-		'label': u'Actual Start Date',
-		'oldfieldname': u'act_start_date',
-		'oldfieldtype': u'Date',
-		'permlevel': 0
-	},
-
-	# DocField
-	{
-		'doctype': u'DocField',
-		'fieldname': u'act_end_date',
-		'fieldtype': u'Date',
-		'label': u'Actual End Date',
-		'oldfieldname': u'act_end_date',
-		'oldfieldtype': u'Date',
-		'permlevel': 0
-	},
-
-	# DocField
-	{
-		'doctype': u'DocField',
-		'fieldname': u'act_total_hrs',
-		'fieldtype': u'Data',
-		'label': u'Total Hours (Actual)',
-		'oldfieldname': u'act_total_hrs',
-		'oldfieldtype': u'Data',
-		'permlevel': 0
-	},
-
-	# DocField
-	{
-		'doctype': u'DocField',
-		'fieldname': u'actual_budget',
-		'fieldtype': u'Currency',
-		'label': u'Actual Budget',
-		'oldfieldname': u'actual_budget',
-		'oldfieldtype': u'Currency',
-		'permlevel': 0
-	},
-
-	# DocField
-	{
-		'doctype': u'DocField',
-		'fieldname': u'more_details',
-		'fieldtype': u'Section Break',
-		'label': u'More Details',
-		'permlevel': 0
-	},
-
-	# DocField
-	{
-		'doctype': u'DocField',
-		'fieldname': u'opening_date',
-		'fieldtype': u'Date',
-		'label': u'Creation Date',
-		'oldfieldname': u'opening_date',
-		'oldfieldtype': u'Date',
-		'permlevel': 0,
-		'reqd': 1
-	},
-
-	# DocField
-	{
-		'colour': u'White:FFF',
-		'depends_on': u'eval:doc.status == "Closed" || doc.status == "Pending Review"',
-		'doctype': u'DocField',
-		'fieldname': u'review_date',
-		'fieldtype': u'Date',
-		'hidden': 1,
-		'label': u'Review Date',
-		'oldfieldname': u'review_date',
-		'oldfieldtype': u'Date',
-		'permlevel': 0
-	},
-
-	# DocField
-	{
-		'colour': u'White:FFF',
-		'depends_on': u'eval:doc.status == "Closed"',
-		'doctype': u'DocField',
-		'fieldname': u'closing_date',
-		'fieldtype': u'Date',
-		'hidden': 1,
-		'label': u'Closing Date',
-		'oldfieldname': u'closing_date',
-		'oldfieldtype': u'Date',
-		'permlevel': 0
-	},
-
-	# DocField
-	{
-		'doctype': u'DocField',
-		'fieldname': u'amended_from',
-		'fieldtype': u'Data',
-		'hidden': 1,
-		'label': u'Amended From',
-		'no_copy': 1,
-		'oldfieldname': u'amended_from',
-		'oldfieldtype': u'Data',
-		'permlevel': 1,
-		'print_hide': 1,
-		'report_hide': 1
-	},
-
-	# DocField
-	{
-		'doctype': u'DocField',
-		'fieldname': u'amendment_date',
-		'fieldtype': u'Date',
-		'hidden': 1,
-		'label': u'Amendment Date',
-		'no_copy': 1,
-		'oldfieldname': u'amendment_date',
-		'oldfieldtype': u'Date',
-		'permlevel': 1,
-		'print_hide': 1,
-		'report_hide': 1
-	},
-
 	# DocPerm
 	{
 		'amend': 1,
@@ -473,5 +90,247 @@
 		'doctype': u'DocPerm',
 		'permlevel': 1,
 		'role': u'Projects User'
+	},
+
+	# DocField
+	{
+		'doctype': u'DocField',
+		'fieldname': u'task_details',
+		'fieldtype': u'Section Break',
+		'label': u'Task Details',
+		'oldfieldtype': u'Section Break',
+		'search_index': 0,
+		'width': u'50%'
+	},
+
+	# DocField
+	{
+		'doctype': u'DocField',
+		'fieldname': u'subject',
+		'fieldtype': u'Data',
+		'in_filter': 1,
+		'label': u'Subject',
+		'oldfieldname': u'subject',
+		'oldfieldtype': u'Data',
+		'reqd': 1
+	},
+
+	# DocField
+	{
+		'doctype': u'DocField',
+		'fieldname': u'exp_start_date',
+		'fieldtype': u'Date',
+		'label': u'Expected Start Date',
+		'oldfieldname': u'exp_start_date',
+		'oldfieldtype': u'Date',
+		'reqd': 0
+	},
+
+	# DocField
+	{
+		'doctype': u'DocField',
+		'fieldname': u'exp_end_date',
+		'fieldtype': u'Date',
+		'in_filter': 1,
+		'label': u'Expected End Date',
+		'oldfieldname': u'exp_end_date',
+		'oldfieldtype': u'Date',
+		'reqd': 0,
+		'search_index': 1
+	},
+
+	# DocField
+	{
+		'doctype': u'DocField',
+		'fieldname': u'column_break0',
+		'fieldtype': u'Column Break',
+		'oldfieldtype': u'Column Break',
+		'width': u'50%'
+	},
+
+	# DocField
+	{
+		'colour': u'White:FFF',
+		'doctype': u'DocField',
+		'fieldname': u'project',
+		'fieldtype': u'Link',
+		'label': u'Project',
+		'oldfieldname': u'project',
+		'oldfieldtype': u'Link',
+		'options': u'Project',
+		'trigger': u'Client'
+	},
+
+	# DocField
+	{
+		'colour': u'White:FFF',
+		'doctype': u'DocField',
+		'fieldname': u'status',
+		'fieldtype': u'Select',
+		'label': u'Status',
+		'no_copy': 1,
+		'oldfieldname': u'status',
+		'oldfieldtype': u'Select',
+		'options': u'Open\nWorking\nPending Review\nClosed\nCancelled',
+		'trigger': u'Client'
+	},
+
+	# DocField
+	{
+		'doctype': u'DocField',
+		'fieldname': u'priority',
+		'fieldtype': u'Select',
+		'in_filter': 1,
+		'label': u'Priority',
+		'oldfieldname': u'priority',
+		'oldfieldtype': u'Select',
+		'options': u'Low\nMedium\nHigh\nUrgent',
+		'reqd': 0,
+		'search_index': 1
+	},
+
+	# DocField
+	{
+		'doctype': u'DocField',
+		'fieldname': u'section_break0',
+		'fieldtype': u'Section Break',
+		'oldfieldtype': u'Section Break',
+		'options': u'Simple'
+	},
+
+	# DocField
+	{
+		'doctype': u'DocField',
+		'fieldname': u'description',
+		'fieldtype': u'Text Editor',
+		'label': u'Details',
+		'oldfieldname': u'description',
+		'oldfieldtype': u'Text Editor',
+		'reqd': 0,
+		'width': u'300px'
+	},
+
+	# DocField
+	{
+		'doctype': u'DocField',
+		'fieldname': u'time_and_budget',
+		'fieldtype': u'Section Break',
+		'label': u'Time and Budget',
+		'oldfieldtype': u'Section Break'
+	},
+
+	# DocField
+	{
+		'doctype': u'DocField',
+		'fieldname': u'expected',
+		'fieldtype': u'Column Break',
+		'label': u'Expected',
+		'oldfieldtype': u'Column Break',
+		'width': u'50%'
+	},
+
+	# DocField
+	{
+		'doctype': u'DocField',
+		'fieldname': u'exp_total_hrs',
+		'fieldtype': u'Data',
+		'label': u'Total Hours (Expected)',
+		'oldfieldname': u'exp_total_hrs',
+		'oldfieldtype': u'Data',
+		'reqd': 0
+	},
+
+	# DocField
+	{
+		'doctype': u'DocField',
+		'fieldname': u'allocated_budget',
+		'fieldtype': u'Currency',
+		'label': u'Allocated Budget',
+		'oldfieldname': u'allocated_budget',
+		'oldfieldtype': u'Currency'
+	},
+
+	# DocField
+	{
+		'doctype': u'DocField',
+		'fieldname': u'actual',
+		'fieldtype': u'Column Break',
+		'label': u'Actual',
+		'oldfieldtype': u'Column Break',
+		'width': u'50%'
+	},
+
+	# DocField
+	{
+		'doctype': u'DocField',
+		'fieldname': u'act_start_date',
+		'fieldtype': u'Date',
+		'label': u'Actual Start Date',
+		'oldfieldname': u'act_start_date',
+		'oldfieldtype': u'Date'
+	},
+
+	# DocField
+	{
+		'doctype': u'DocField',
+		'fieldname': u'act_end_date',
+		'fieldtype': u'Date',
+		'label': u'Actual End Date',
+		'oldfieldname': u'act_end_date',
+		'oldfieldtype': u'Date'
+	},
+
+	# DocField
+	{
+		'doctype': u'DocField',
+		'fieldname': u'act_total_hrs',
+		'fieldtype': u'Data',
+		'label': u'Total Hours (Actual)',
+		'oldfieldname': u'act_total_hrs',
+		'oldfieldtype': u'Data'
+	},
+
+	# DocField
+	{
+		'doctype': u'DocField',
+		'fieldname': u'actual_budget',
+		'fieldtype': u'Currency',
+		'label': u'Actual Budget',
+		'oldfieldname': u'actual_budget',
+		'oldfieldtype': u'Currency'
+	},
+
+	# DocField
+	{
+		'doctype': u'DocField',
+		'fieldname': u'more_details',
+		'fieldtype': u'Section Break',
+		'label': u'More Details'
+	},
+
+	# DocField
+	{
+		'colour': u'White:FFF',
+		'depends_on': u'eval:doc.status == "Closed" || doc.status == "Pending Review"',
+		'doctype': u'DocField',
+		'fieldname': u'review_date',
+		'fieldtype': u'Date',
+		'hidden': 1,
+		'label': u'Review Date',
+		'oldfieldname': u'review_date',
+		'oldfieldtype': u'Date'
+	},
+
+	# DocField
+	{
+		'colour': u'White:FFF',
+		'depends_on': u'eval:doc.status == "Closed"',
+		'doctype': u'DocField',
+		'fieldname': u'closing_date',
+		'fieldtype': u'Date',
+		'hidden': 1,
+		'label': u'Closing Date',
+		'oldfieldname': u'closing_date',
+		'oldfieldtype': u'Date'
 	}
 ]
\ No newline at end of file
diff --git a/erpnext/projects/gantt_task.js b/erpnext/projects/gantt_task.js
new file mode 100644
index 0000000..aa3adbb
--- /dev/null
+++ b/erpnext/projects/gantt_task.js
@@ -0,0 +1,88 @@
+// 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/>.
+
+// gantt chart for project tasks
+
+wn.require('js/lib/jQuery.Gantt/css/style.css');
+wn.require('js/lib/jQuery.Gantt/js/jquery.fn.gantt.min.js');
+
+erpnext.show_task_gantt = function(parent, project) {
+	
+	$(parent).css('min-height', '300px').html('<div class="help-box">Loading...</div>')
+	
+	var get_source = function(r) {
+		var source = [];
+		// projects
+		$.each(r.message, function(i,v) {
+			source.push({
+				name: v.project, 
+				desc: v.subject,
+				values: [{
+					label: v.subject,
+					desc: v.description || v.subject,
+					from: '/Date("'+v.exp_start_date+'")/',
+					to: '/Date("'+v.exp_end_date+'")/',
+					customClass: {
+						'Open':'ganttRed',
+						'Pending Review':'ganttOrange',
+						'Working':'',
+						'Completed':'ganttGreen',
+						'Cancelled':'ganttGray'
+					}[v.status],
+					dataObj: v
+				}]
+			})
+		});
+		return source	
+	}
+	wn.call({
+		method: 'projects.page.projects.projects.get_tasks',
+		args: {
+			project: project || ''
+		},
+		callback: function(r) {
+			$(parent).empty();
+			if(!r.message.length) {
+				$(parent).html('<div class="help-box">No Tasks Yet.</div>');
+			} else {
+				var gantt_area = $('<div class="gantt">').appendTo(parent);
+				gantt_area.gantt({
+					source: get_source(r),
+					navigate: project ? "button" : "scroll",
+					scale: "weeks",
+					minScale: "weeks",
+					maxScale: "months",
+					onItemClick: function(data) {
+						wn.set_route('Form', 'Task', data.name);
+					},
+					onAddClick: function(dt, rowId) {
+						newdoc('Task');
+					}
+				});				
+			}
+
+			$('<button class="btn"><i class="icon icon-plus"></i>\
+				Create a new Task</button>').click(function() {
+				wn.model.with_doctype('Task', function() {
+					var new_name = LocalDB.create('Task');
+					if(project)
+						locals.Task[new_name].project = project;
+					wn.set_route('Form', 'Task', new_name);
+				});
+			}).appendTo(parent);
+		}
+	})	
+}
diff --git a/erpnext/projects/page/projects/projects.js b/erpnext/projects/page/projects/projects.js
index f9af826..e67959e 100644
--- a/erpnext/projects/page/projects/projects.js
+++ b/erpnext/projects/page/projects/projects.js
@@ -16,56 +16,9 @@
 
 pscript.onload_Projects = function(wrapper) {
 	wn.ui.make_app_page({parent:wrapper, title:'Gantt Chart: All Tasks', single_column:true});
-	
-	$(wrapper).find('.layout-main').html('<div class="help-box">Loading...</div>')
-	
-	
-	wn.require('js/lib/jQuery.Gantt/css/style.css');
-	wn.require('js/lib/jQuery.Gantt/js/jquery.fn.gantt.min.js');
-	
-	wn.call({
-		method: 'projects.page.projects.projects.get_tasks',
-		callback: function(r) {
-			$(wrapper).find('.layout-main').empty();
-			
-			var source = [];
-			// projects
-			$.each(r.message, function(i,v) {
-				source.push({
-					name: v.project, 
-					desc: v.subject,
-					values: [{
-						label: v.subject,
-						desc: v.description || v.subject,
-						from: '/Date("'+v.exp_start_date+'")/',
-						to: '/Date("'+v.exp_end_date+'")/',
-						customClass: {
-							'Open':'ganttRed',
-							'Pending Review':'ganttOrange',
-							'Working':'',
-							'Completed':'ganttGreen',
-							'Cancelled':'ganttGray'
-						}[v.status],
-						dataObj: v
-					}]
-				})
-			})
-			
-			var gantt_area = $('<div class="gantt">').appendTo($(wrapper).find('.layout-main'));
-			gantt_area.gantt({
-				source: source,
-				navigate: "scroll",
-				scale: "weeks",
-				minScale: "weeks",
-				maxScale: "months",
-				onItemClick: function(data) {
-					wn.set_route('Form', 'Task', data.name);
-				},
-				onAddClick: function(dt, rowId) {
-					
-				}
-			});
-			
-		}
-	})
+	if(!erpnext.show_task_gantt)
+		wn.require('js/gantt_task.js');
+
+	var gantt_area = $('<div>').appendTo($(wrapper).find('.layout-main'));
+	erpnext.show_task_gantt(gantt_area);
 }
\ No newline at end of file
diff --git a/erpnext/projects/page/projects/projects.py b/erpnext/projects/page/projects/projects.py
index 4774194..b9ee190 100644
--- a/erpnext/projects/page/projects/projects.py
+++ b/erpnext/projects/page/projects/projects.py
@@ -18,8 +18,11 @@
 
 @webnotes.whitelist()
 def get_tasks():
+	cond = ''
+	if webnotes.form_dict.get('project'):
+		cond = ' and project="%s"' % webnotes.form_dict.get('project')
 	return webnotes.conn.sql("""select name, project, subject, exp_start_date, exp_end_date, 
 		description, status from tabTask where 
 		project is not null
 		and exp_start_date is not null 
-		and exp_end_date is not null""", as_dict=True)
\ No newline at end of file
+		and exp_end_date is not null %s""" % cond, as_dict=True)
\ No newline at end of file
