diff --git a/erpnext/accounts/doctype/budget/budget.js b/erpnext/accounts/doctype/budget/budget.js
index 40e929a..6697b17 100644
--- a/erpnext/accounts/doctype/budget/budget.js
+++ b/erpnext/accounts/doctype/budget/budget.js
@@ -36,5 +36,18 @@
 				}
 			}
 		})
+	},
+
+	refresh: function(frm) {
+		frm.trigger("toggle_reqd_fields")
+	},
+
+	budget_against: function(frm) {
+		frm.trigger("toggle_reqd_fields")
+	},
+
+	toggle_reqd_fields: function(frm) {
+		frm.toggle_reqd("cost_center", frm.doc.budget_against=="Cost Center");
+		frm.toggle_reqd("project", frm.doc.budget_against=="Project");
 	}
 });
diff --git a/erpnext/accounts/report/budget_variance_report/budget_variance_report.js b/erpnext/accounts/report/budget_variance_report/budget_variance_report.js
index 8cfbc83..2b7f1f3 100644
--- a/erpnext/accounts/report/budget_variance_report/budget_variance_report.js
+++ b/erpnext/accounts/report/budget_variance_report/budget_variance_report.js
@@ -31,6 +31,14 @@
 			options: "Company",
 			default: frappe.defaults.get_user_default("Company"),
 			reqd: 1
+		},
+		{
+			fieldname: "budget_against",
+			label: __("Budget Against"),
+			fieldtype: "Select",
+			options: ["Cost Center", "Project"],
+			default: "Cost Center",
+			reqd: 1
 		}
 	]
 }
diff --git a/erpnext/accounts/report/budget_variance_report/budget_variance_report.py b/erpnext/accounts/report/budget_variance_report/budget_variance_report.py
index 0be0b3d..875ec99 100644
--- a/erpnext/accounts/report/budget_variance_report/budget_variance_report.py
+++ b/erpnext/accounts/report/budget_variance_report/budget_variance_report.py
@@ -12,7 +12,7 @@
 	if not filters: filters = {}
 
 	columns = get_columns(filters)
-	cost_centers = get_cost_centers(filters.company)
+	cost_centers = get_cost_centers(filters)
 	period_month_ranges = get_period_month_ranges(filters["period"], filters["fiscal_year"])
 	cam_map = get_cost_center_account_month_map(filters)
 
@@ -40,7 +40,7 @@
 	return columns, data
 
 def get_columns(filters):
-	columns = [_("Cost Center") + ":Link/Cost Center:120", _("Account") + ":Link/Account:120"]
+	columns = [_(filters.get("budget_against")) + ":Link/%s:120"%(filters.get("budget_against")), _("Account") + ":Link/Account:120"]
 
 	group_months = False if filters["period"] == "Monthly" else True
 
@@ -56,16 +56,23 @@
 	return columns + [_("Total Target") + ":Float:120", _("Total Actual") + ":Float:120",
 		_("Total Variance") + ":Float:120"]
 		
-def get_cost_centers(company):
-	return frappe.db.sql_list("select name from `tabCost Center` where company=%s order by lft", company)
+def get_cost_centers(filters):
+	cond = "and 1=1"
+	if filters.get("budget_against") == "Cost Center":
+		cond = "order by lft"
+
+	return frappe.db.sql_list("""select name from `tab{tab}` where company=%s 
+		{cond}""".format(tab=filters.get("budget_against"), cond=cond), filters.get("company"))
 
 #Get cost center & target details
 def get_cost_center_target_details(filters):
 	return frappe.db.sql("""
-			select b.cost_center, b.monthly_distribution, ba.account, ba.budget_amount
+			select b.{budget_against} as budget_against, b.monthly_distribution, ba.account, ba.budget_amount
 			from `tabBudget` b, `tabBudget Account` ba
-			where b.name=ba.parent and b.docstatus = 1 and b.fiscal_year=%s and b.company=%s 
-		""", (filters.fiscal_year, filters.company), as_dict=True)
+			where b.name=ba.parent and b.docstatus = 1 and b.fiscal_year=%s
+			and b.budget_against = %s and b.company=%s
+		""".format(budget_against=filters.get("budget_against").replace(" ", "_").lower()),
+		(filters.fiscal_year, filters.budget_against, filters.company), as_dict=True)
 
 #Get target distribution details of accounts of cost center
 def get_target_distribution_details(filters):
@@ -78,20 +85,26 @@
 	return target_details
 
 #Get actual details from gl entry
-def get_actual_details(cost_center, fiscal_year):
-	cc_lft, cc_rgt = frappe.db.get_value("Cost Center", cost_center, ["lft", "rgt"])
+def get_actual_details(name, filters):
+	cond = "1=1"
+	budget_against=filters.get("budget_against").replace(" ", "_").lower()
+
+	if filters.get("budget_against") == "Cost Center":
+		cc_lft, cc_rgt = frappe.db.get_value("Cost Center", name, ["lft", "rgt"])
+		cond = "lft>='{lft}' and rgt<='{rgt}'".format(lft = cc_lft, rgt=cc_rgt)
 	
 	ac_details = frappe.db.sql("""select gl.account, gl.debit, gl.credit,
-		MONTHNAME(gl.posting_date) as month_name, b.cost_center
+		MONTHNAME(gl.posting_date) as month_name, b.{budget_against} as budget_against
 		from `tabGL Entry` gl, `tabBudget Account` ba, `tabBudget` b
 		where
 			b.name = ba.parent
 			and b.docstatus = 1
 			and ba.account=gl.account 
 			and gl.fiscal_year=%s 
-			and b.cost_center=%s
-			and exists(select name from `tabCost Center` where name=gl.cost_center and lft>=%s and rgt<=%s)
-	""", (fiscal_year, cost_center, cc_lft, cc_rgt), as_dict=1)
+			and b.{budget_against}=%s
+			and exists(select name from `tab{tab}` where name=gl.{budget_against} and {cond})
+	""".format(tab = filters.budget_against, budget_against = budget_against, cond = cond),
+	(filters.fiscal_year, name), as_dict=1)
 
 	cc_actual_details = {}
 	for d in ac_details:
@@ -107,17 +120,17 @@
 	cam_map = {}
 
 	for ccd in cost_center_target_details:
-		actual_details = get_actual_details(ccd.cost_center, filters.fiscal_year)
+		actual_details = get_actual_details(ccd.budget_against, filters)
 		
 		for month_id in range(1, 13):
 			month = datetime.date(2013, month_id, 1).strftime('%B')
 
-			cam_map.setdefault(ccd.cost_center, {}).setdefault(ccd.account, {})\
+			cam_map.setdefault(ccd.budget_against, {}).setdefault(ccd.account, {})\
 				.setdefault(month, frappe._dict({
 					"target": 0.0, "actual": 0.0
 				}))
 
-			tav_dict = cam_map[ccd.cost_center][ccd.account][month]
+			tav_dict = cam_map[ccd.budget_against][ccd.account][month]
 			month_percentage = tdd.get(ccd.monthly_distribution, {}).get(month, 0) \
 				if ccd.monthly_distribution else 100.0/12
 
