Lint and fix JS files
diff --git a/erpnext/accounts/doctype/account/account.js b/erpnext/accounts/doctype/account/account.js
index 4c04fc6..8a9a439 100644
--- a/erpnext/accounts/doctype/account/account.js
+++ b/erpnext/accounts/doctype/account/account.js
@@ -2,26 +2,26 @@
 // License: GNU General Public License v3. See license.txt
 
 
-cur_frm.cscript.refresh = function(doc, cdt, cdn) {
-	if(doc.__islocal) {
-		msgprint(__("Please create new account from Chart of Accounts."));
+cur_frm.cscript.refresh = function (doc, cdt, cdn) {
+	if (doc.__islocal) {
+		frappe.msgprint(__("Please create new account from Chart of Accounts."));
 		throw "cannot create";
 	}
 
 	cur_frm.toggle_display('account_name', doc.__islocal);
 
 	// hide fields if group
-	cur_frm.toggle_display(['account_type', 'tax_rate'], cint(doc.is_group)==0)
+	cur_frm.toggle_display(['account_type', 'tax_rate'], cint(doc.is_group) == 0)
 
 	// disable fields
 	cur_frm.toggle_enable(['account_name', 'is_group', 'company'], false);
 
-	if(cint(doc.is_group)==0) {
+	if (cint(doc.is_group) == 0) {
 		cur_frm.toggle_display('freeze_account', doc.__onload && doc.__onload.can_freeze_account);
 	}
 
 	// read-only for root accounts
-	if(!doc.parent_account) {
+	if (!doc.parent_account) {
 		cur_frm.set_read_only();
 		cur_frm.set_intro(__("This is a root account and cannot be edited."));
 	} else {
@@ -38,53 +38,53 @@
 cur_frm.add_fetch('parent_account', 'report_type', 'report_type');
 cur_frm.add_fetch('parent_account', 'root_type', 'root_type');
 
-cur_frm.cscript.account_type = function(doc, cdt, cdn) {
-	if(doc.is_group==0) {
+cur_frm.cscript.account_type = function (doc, cdt, cdn) {
+	if (doc.is_group == 0) {
 		cur_frm.toggle_display(['tax_rate'], doc.account_type == 'Tax');
-		cur_frm.toggle_display('warehouse', doc.account_type=='Stock');
+		cur_frm.toggle_display('warehouse', doc.account_type == 'Stock');
 	}
 }
 
-cur_frm.cscript.add_toolbar_buttons = function(doc) {
+cur_frm.cscript.add_toolbar_buttons = function (doc) {
 	cur_frm.add_custom_button(__('Chart of Accounts'),
-		function() { frappe.set_route("Tree", "Account"); });
+		function () { frappe.set_route("Tree", "Account"); });
 
 	if (doc.is_group == 1) {
 		cur_frm.add_custom_button(__('Group to Non-Group'),
-			function() { cur_frm.cscript.convert_to_ledger(); }, 'fa fa-retweet', 'btn-default');
+			function () { cur_frm.cscript.convert_to_ledger(); }, 'fa fa-retweet', 'btn-default');
 	} else if (cint(doc.is_group) == 0) {
-		cur_frm.add_custom_button(__('Ledger'), function() {
+		cur_frm.add_custom_button(__('Ledger'), function () {
 			frappe.route_options = {
 				"account": doc.name,
-				"from_date": sys_defaults.year_start_date,
-				"to_date": sys_defaults.year_end_date,
+				"from_date": frappe.sys_defaults.year_start_date,
+				"to_date": frappe.sys_defaults.year_end_date,
 				"company": doc.company
 			};
 			frappe.set_route("query-report", "General Ledger");
 		});
 
 		cur_frm.add_custom_button(__('Non-Group to Group'),
-			function() { cur_frm.cscript.convert_to_group(); }, 'fa fa-retweet', 'btn-default')
+			function () { cur_frm.cscript.convert_to_group(); }, 'fa fa-retweet', 'btn-default')
 	}
 }
 
-cur_frm.cscript.convert_to_ledger = function(doc, cdt, cdn) {
-  return $c_obj(cur_frm.doc,'convert_group_to_ledger','',function(r,rt) {
-    if(r.message == 1) {
-	  cur_frm.refresh();
-    }
-  });
+cur_frm.cscript.convert_to_ledger = function (doc, cdt, cdn) {
+	return $c_obj(cur_frm.doc, 'convert_group_to_ledger', '', function (r, rt) {
+		if (r.message == 1) {
+			cur_frm.refresh();
+		}
+	});
 }
 
-cur_frm.cscript.convert_to_group = function(doc, cdt, cdn) {
-  return $c_obj(cur_frm.doc,'convert_ledger_to_group','',function(r,rt) {
-    if(r.message == 1) {
-	  cur_frm.refresh();
-    }
-  });
+cur_frm.cscript.convert_to_group = function (doc, cdt, cdn) {
+	return $c_obj(cur_frm.doc, 'convert_ledger_to_group', '', function (r, rt) {
+		if (r.message == 1) {
+			cur_frm.refresh();
+		}
+	});
 }
 
-cur_frm.fields_dict['parent_account'].get_query = function(doc) {
+cur_frm.fields_dict['parent_account'].get_query = function (doc) {
 	return {
 		filters: {
 			"is_group": 1,
diff --git a/erpnext/accounts/doctype/account/account_tree.js b/erpnext/accounts/doctype/account/account_tree.js
index 1fbbf4f..2cfafd1 100644
--- a/erpnext/accounts/doctype/account/account_tree.js
+++ b/erpnext/accounts/doctype/account/account_tree.js
@@ -72,8 +72,8 @@
 			click: function(node, btn) {
 				frappe.route_options = {
 					"account": node.label,
-					"from_date": sys_defaults.year_start_date,
-					"to_date": sys_defaults.year_end_date,
+					"from_date": frappe.sys_defaults.year_start_date,
+					"to_date": frappe.sys_defaults.year_end_date,
 					"company": frappe.defaults.get_default('company') ? frappe.defaults.get_default('company'): ""
 				};
 				frappe.set_route("query-report", "General Ledger");
diff --git a/erpnext/accounts/doctype/asset/asset.js b/erpnext/accounts/doctype/asset/asset.js
index a1b3dd3..7c4eeae 100644
--- a/erpnext/accounts/doctype/asset/asset.js
+++ b/erpnext/accounts/doctype/asset/asset.js
@@ -14,7 +14,7 @@
 				}
 			};
 		});
-		
+
 		frm.set_query("warehouse", function() {
 			return {
 				"filters": {
@@ -24,12 +24,12 @@
 			};
 		});
 	},
-	
+
 	refresh: function(frm) {
 		frappe.ui.form.trigger("Asset", "is_existing_asset");
 		frm.toggle_display("next_depreciation_date", frm.doc.docstatus < 1);
 		frm.events.make_schedules_editable(frm);
-				
+
 		if (frm.doc.docstatus==1) {
 			if (frm.doc.status=='Submitted' && !frm.doc.is_existing_asset && !frm.doc.purchase_invoice) {
 				frm.add_custom_button("Make Purchase Invoice", function() {
@@ -40,60 +40,60 @@
 				frm.add_custom_button("Transfer Asset", function() {
 					erpnext.asset.transfer_asset(frm);
 				});
-				
+
 				frm.add_custom_button("Scrap Asset", function() {
 					erpnext.asset.scrap_asset(frm);
 				});
-				
+
 				frm.add_custom_button("Sell Asset", function() {
 					erpnext.asset.make_sales_invoice(frm);
 				});
-				
+
 			} else if (frm.doc.status=='Scrapped') {
 				frm.add_custom_button("Restore Asset", function() {
 					erpnext.asset.restore_asset(frm);
 				});
 			}
-			
+
 			frm.trigger("show_graph");
 		}
 	},
-	
-	show_graph: function(frm) {		
+
+	show_graph: function(frm) {
 		var x_intervals = ["x", frm.doc.purchase_date];
 		var asset_values = ["Asset Value", frm.doc.gross_purchase_amount];
 		var last_depreciation_date = frm.doc.purchase_date;
-		
+
 		if(frm.doc.opening_accumulated_depreciation) {
-			last_depreciation_date = frappe.datetime.add_months(frm.doc.next_depreciation_date, 
+			last_depreciation_date = frappe.datetime.add_months(frm.doc.next_depreciation_date,
 				-1*frm.doc.frequency_of_depreciation);
-			
+
 			x_intervals.push(last_depreciation_date);
-			asset_values.push(flt(frm.doc.gross_purchase_amount) - 
+			asset_values.push(flt(frm.doc.gross_purchase_amount) -
 				flt(frm.doc.opening_accumulated_depreciation));
 		}
-		
+
 		$.each(frm.doc.schedules || [], function(i, v) {
 			x_intervals.push(v.schedule_date);
-			asset_value = flt(frm.doc.gross_purchase_amount) - flt(v.accumulated_depreciation_amount);
-			if(v.journal_entry) {				
+			var asset_value = flt(frm.doc.gross_purchase_amount) - flt(v.accumulated_depreciation_amount);
+			if(v.journal_entry) {
 				last_depreciation_date = v.schedule_date;
 				asset_values.push(asset_value)
 			} else {
 				if (in_list(["Scrapped", "Sold"], frm.doc.status)) {
-	 				asset_values.push(null)
+					asset_values.push(null)
 				} else {
 					asset_values.push(asset_value)
 				}
 			}
 		})
-		
+
 		if(in_list(["Scrapped", "Sold"], frm.doc.status)) {
 			x_intervals.push(frm.doc.disposal_date);
 			asset_values.push(0);
 			last_depreciation_date = frm.doc.disposal_date;
 		}
-		
+
 		frm.dashboard.setup_chart({
 			data: {
 				x: 'x',
@@ -117,9 +117,9 @@
 					padding: {bottom: 10}
 				}
 			}
-		});		
+		});
 	},
-	
+
 	item_code: function(frm) {
 		if(frm.doc.item_code) {
 			frappe.call({
@@ -137,27 +137,27 @@
 			})
 		}
 	},
-	
+
 	is_existing_asset: function(frm) {
 		frm.toggle_enable("supplier", frm.doc.is_existing_asset);
 		frm.toggle_reqd("next_depreciation_date", !frm.doc.is_existing_asset);
 	},
-	
+
 	opening_accumulated_depreciation: function(frm) {
 		erpnext.asset.set_accululated_depreciation(frm);
 	},
-	
+
 	depreciation_method: function(frm) {
 		frm.events.make_schedules_editable(frm);
 	},
-	
+
 	make_schedules_editable: function(frm) {
 		var is_editable = frm.doc.depreciation_method==="Manual" ? true : false;
 		frm.toggle_enable("schedules", is_editable);
 		frm.fields_dict["schedules"].grid.toggle_enable("schedule_date", is_editable);
 		frm.fields_dict["schedules"].grid.toggle_enable("depreciation_amount", is_editable);
 	}
-	
+
 });
 
 frappe.ui.form.on('Depreciation Schedule', {
@@ -177,7 +177,7 @@
 			})
 		}
 	},
-	
+
 	depreciation_amount: function(frm, cdt, cdn) {
 		erpnext.asset.set_accululated_depreciation(frm);
 	}
@@ -186,11 +186,11 @@
 
 erpnext.asset.set_accululated_depreciation = function(frm) {
 	if(frm.doc.depreciation_method != "Manual") return;
-	
-	accumulated_depreciation = flt(frm.doc.opening_accumulated_depreciation);
+
+	var accumulated_depreciation = flt(frm.doc.opening_accumulated_depreciation);
 	$.each(frm.doc.schedules || [], function(i, row) {
 		accumulated_depreciation  += flt(row.depreciation_amount);
-		frappe.model.set_value(row.doctype, row.name, 
+		frappe.model.set_value(row.doctype, row.name,
 			"accumulated_depreciation_amount", accumulated_depreciation);
 	})
 }
@@ -260,9 +260,9 @@
 		title: __("Transfer Asset"),
 		fields: [
 			{
-				"label": __("Target Warehouse"), 
+				"label": __("Target Warehouse"),
 				"fieldname": "target_warehouse",
-				"fieldtype": "Link", 
+				"fieldtype": "Link",
 				"options": "Warehouse",
 				"get_query": function () {
 					return {
@@ -271,13 +271,13 @@
 							["Warehouse", "is_group", "=", 0]
 						]
 					}
-				}, 
-				"reqd": 1 
+				},
+				"reqd": 1
 			},
 			{
-				"label": __("Date"), 
+				"label": __("Date"),
 				"fieldname": "transfer_date",
-				"fieldtype": "Datetime", 
+				"fieldtype": "Datetime",
 				"reqd": 1,
 				"default": frappe.datetime.now_datetime()
 			}
@@ -285,7 +285,7 @@
 	});
 
 	dialog.set_primary_action(__("Transfer"), function() {
-		args = dialog.get_values();
+		var args = dialog.get_values();
 		if(!args) return;
 		dialog.hide();
 		return frappe.call({
diff --git a/erpnext/accounts/doctype/asset/asset_list.js b/erpnext/accounts/doctype/asset/asset_list.js
index 961ab3f..8e262f1 100644
--- a/erpnext/accounts/doctype/asset/asset_list.js
+++ b/erpnext/accounts/doctype/asset/asset_list.js
@@ -1,3 +1,3 @@
 frappe.listview_settings['Asset'] = {
-    add_fields: ['image']
+	add_fields: ['image']
 }
\ No newline at end of file
diff --git a/erpnext/accounts/doctype/asset_movement/asset_movement.js b/erpnext/accounts/doctype/asset_movement/asset_movement.js
index 808f01a..70c4080 100644
--- a/erpnext/accounts/doctype/asset_movement/asset_movement.js
+++ b/erpnext/accounts/doctype/asset_movement/asset_movement.js
@@ -4,7 +4,7 @@
 frappe.ui.form.on('Asset Movement', {
 	onload: function(frm) {
 		frm.add_fetch("asset", "warehouse", "source_warehouse");
-		
+
 		frm.set_query("target_warehouse", function() {
 			return {
 				filters: [
diff --git a/erpnext/accounts/doctype/bank_guarantee/bank_guarantee.js b/erpnext/accounts/doctype/bank_guarantee/bank_guarantee.js
index 4993202..0439b73 100644
--- a/erpnext/accounts/doctype/bank_guarantee/bank_guarantee.js
+++ b/erpnext/accounts/doctype/bank_guarantee/bank_guarantee.js
@@ -20,11 +20,11 @@
 		});
 	},
 	start_date: function(frm) {
-		end_date = frappe.datetime.add_days(cur_frm.doc.start_date, cur_frm.doc.validity - 1);
+		var end_date = frappe.datetime.add_days(cur_frm.doc.start_date, cur_frm.doc.validity - 1);
 		cur_frm.set_value("end_date", end_date);
 	},
 	validity: function(frm) {
-		end_date = frappe.datetime.add_days(cur_frm.doc.start_date, cur_frm.doc.validity - 1);
+		var end_date = frappe.datetime.add_days(cur_frm.doc.start_date, cur_frm.doc.validity - 1);
 		cur_frm.set_value("end_date", end_date);
 	}
 });
\ No newline at end of file
diff --git a/erpnext/accounts/doctype/cost_center/cost_center.js b/erpnext/accounts/doctype/cost_center/cost_center.js
index 5d11005..cbc37ff 100644
--- a/erpnext/accounts/doctype/cost_center/cost_center.js
+++ b/erpnext/accounts/doctype/cost_center/cost_center.js
@@ -43,7 +43,7 @@
 
 cur_frm.cscript.parent_cost_center = function(doc, cdt, cdn) {
 	if(!doc.company){
-		msgprint(__('Please enter company name first'));
+		frappe.msgprint(__('Please enter company name first'));
 	}
 }
 
diff --git a/erpnext/accounts/doctype/fiscal_year/fiscal_year.js b/erpnext/accounts/doctype/fiscal_year/fiscal_year.js
index a516557..4dc6433 100644
--- a/erpnext/accounts/doctype/fiscal_year/fiscal_year.js
+++ b/erpnext/accounts/doctype/fiscal_year/fiscal_year.js
@@ -13,7 +13,7 @@
 		this.frm.toggle_enable('year_start_date', doc.__islocal)
 		this.frm.toggle_enable('year_end_date', doc.__islocal)
 
-		if (!doc.__islocal && (doc.name != sys_defaults.fiscal_year)) {
+		if (!doc.__islocal && (doc.name != frappe.sys_defaults.fiscal_year)) {
 			this.frm.add_custom_button(__("Default"),
 				this.frm.cscript.set_as_default, "fa fa-star");
 			this.frm.set_intro(__("To set this Fiscal Year as Default, click on 'Set as Default'"));
@@ -30,7 +30,7 @@
 	year_start_date: function(doc, dt, dn) {
 		var me = this;
 
-		year_end_date =
+		var year_end_date =
 			frappe.datetime.add_days(frappe.datetime.add_months(this.frm.doc.year_start_date, 12), -1);
 		this.frm.set_value("year_end_date", year_end_date);
 	},
diff --git a/erpnext/accounts/doctype/journal_entry/journal_entry.js b/erpnext/accounts/doctype/journal_entry/journal_entry.js
index bb01103..4880224 100644
--- a/erpnext/accounts/doctype/journal_entry/journal_entry.js
+++ b/erpnext/accounts/doctype/journal_entry/journal_entry.js
@@ -62,11 +62,10 @@
 		if(this.frm.doc.__islocal && this.frm.doc.company) {
 			frappe.model.set_default_values(this.frm.doc);
 			$.each(this.frm.doc.accounts || [], function(i, jvd) {
-					frappe.model.set_default_values(jvd);
-				}
-			);
+				frappe.model.set_default_values(jvd);
+			});
 
-			if(!this.frm.doc.amended_from) this.frm.doc.posting_date = this.frm.posting_date || get_today();
+			if(!this.frm.doc.amended_from) this.frm.doc.posting_date = this.frm.posting_date || frappe.datetime.get_today();
 		}
 	},
 
@@ -124,7 +123,7 @@
 				// account filter
 				frappe.model.validate_missing(jvd, "account");
 
-				party_account_field = jvd.reference_type==="Sales Invoice" ? "debit_to": "credit_to";
+				var party_account_field = jvd.reference_type==="Sales Invoice" ? "debit_to": "credit_to";
 				out.filters.push([jvd.reference_type, party_account_field, "=", jvd.account]);
 			} else {
 				// party_type and party mandatory
@@ -243,7 +242,7 @@
 cur_frm.cscript.get_balance = function(doc,dt,dn) {
 	cur_frm.cscript.update_totals(doc);
 	return $c_obj(cur_frm.doc, 'get_balance', '', function(r, rt){
-	cur_frm.refresh();
+		cur_frm.refresh();
 	});
 }
 
diff --git a/erpnext/accounts/doctype/monthly_distribution/monthly_distribution.js b/erpnext/accounts/doctype/monthly_distribution/monthly_distribution.js
index 6f3c1c4..7b489de 100644
--- a/erpnext/accounts/doctype/monthly_distribution/monthly_distribution.js
+++ b/erpnext/accounts/doctype/monthly_distribution/monthly_distribution.js
@@ -2,13 +2,13 @@
 // License: GNU General Public License v3. See license.txt
 
 cur_frm.cscript.onload = function(doc,cdt,cdn){
-  if(doc.__islocal){
-    var callback1 = function(r,rt){
-      refresh_field('percentages');
-    }
+	if(doc.__islocal){
+		var callback1 = function(r,rt){
+			refresh_field('percentages');
+		}
 
-    return $c('runserverobj',args={'method':'get_months', 'docs':doc}, callback1);
-  }
+		return $c('runserverobj', {'method':'get_months', 'docs':doc}, callback1);
+	}
 }
 
 cur_frm.cscript.refresh = function(doc,cdt,cdn){
diff --git a/erpnext/accounts/doctype/payment_entry/payment_entry.js b/erpnext/accounts/doctype/payment_entry/payment_entry.js
index 2eef79c..f54193b 100644
--- a/erpnext/accounts/doctype/payment_entry/payment_entry.js
+++ b/erpnext/accounts/doctype/payment_entry/payment_entry.js
@@ -36,7 +36,7 @@
 		frm.set_query("paid_to", function() {
 			var party_account_type = frm.doc.party_type=="Customer" ? "Receivable" : "Payable";
 			var account_types = in_list(["Receive", "Internal Transfer"], frm.doc.payment_type) ?
-	 			["Bank", "Cash"] : party_account_type;
+				["Bank", "Cash"] : party_account_type;
 
 			return {
 				filters: {
@@ -182,8 +182,8 @@
 		if(frm.doc.payment_type == "Internal Transfer") {
 			$.each(["party", "party_balance", "paid_from", "paid_to",
 				"references", "total_allocated_amount"], function(i, field) {
-					frm.set_value(field, null);
-			})
+				frm.set_value(field, null);
+			});
 		} else {
 			if(!frm.doc.party)
 				frm.set_value("party_type", frm.doc.payment_type=="Receive" ? "Customer" : "Supplier");
@@ -200,9 +200,10 @@
 			$.each(["party", "party_balance", "paid_from", "paid_to",
 				"paid_from_account_currency", "paid_from_account_balance",
 				"paid_to_account_currency", "paid_to_account_balance",
-				"references", "total_allocated_amount"], function(i, field) {
+				"references", "total_allocated_amount"],
+				function(i, field) {
 					frm.set_value(field, null);
-			})
+				})
 		}
 	},
 
@@ -487,13 +488,17 @@
 						}
 					});
 
-					if((frm.doc.payment_type=="Receive" && frm.doc.party_type=="Customer") ||
-						(frm.doc.payment_type=="Pay" && frm.doc.party_type=="Supplier")) {
-							if(total_positive_outstanding > total_negative_outstanding)
-								frm.set_value("paid_amount",
-									total_positive_outstanding - total_negative_outstanding);
-					} else if (total_negative_outstanding &&
-							(total_positive_outstanding < total_negative_outstanding)) {
+					if(
+						(frm.doc.payment_type=="Receive" && frm.doc.party_type=="Customer") ||
+						(frm.doc.payment_type=="Pay" && frm.doc.party_type=="Supplier")
+					) {
+						if(total_positive_outstanding > total_negative_outstanding)
+							frm.set_value("paid_amount",
+								total_positive_outstanding - total_negative_outstanding);
+					} else if (
+						total_negative_outstanding &&
+						total_positive_outstanding < total_negative_outstanding
+					) {
 						frm.set_value("received_amount",
 							total_negative_outstanding - total_positive_outstanding);
 					}
@@ -561,9 +566,11 @@
 			row.allocated_amount = 0 //If allocate payment amount checkbox is unchecked, set zero to allocate amount
 			if(frm.doc.allocate_payment_amount){
 				if(row.outstanding_amount > 0 && allocated_positive_outstanding > 0) {
-					if(row.outstanding_amount >= allocated_positive_outstanding)
-							row.allocated_amount = allocated_positive_outstanding;
-					else row.allocated_amount = row.outstanding_amount;
+					if(row.outstanding_amount >= allocated_positive_outstanding) {
+						row.allocated_amount = allocated_positive_outstanding;
+					} else {
+						row.allocated_amount = row.outstanding_amount;
+					}
 
 					allocated_positive_outstanding -= flt(row.allocated_amount);
 				} else if (row.outstanding_amount < 0 && allocated_negative_outstanding) {
@@ -581,7 +588,8 @@
 	},
 
 	set_total_allocated_amount: function(frm) {
-		var total_allocated_amount = base_total_allocated_amount = 0.0;
+		var total_allocated_amount = 0.0;
+		var base_total_allocated_amount = 0.0;
 		$.each(frm.doc.references || [], function(i, row) {
 			if (row.allocated_amount) {
 				total_allocated_amount += flt(row.allocated_amount);
@@ -653,19 +661,21 @@
 				return;
 			}
 
-			if(frm.doc.party_type=="Customer"
-				&& !in_list(["Sales Order", "Sales Invoice", "Journal Entry"], row.reference_doctype)) {
-					frappe.model.set_value(row.doctype, row.name, "reference_doctype", null);
-					frappe.msgprint(__("Row #{0}: Reference Document Type must be one of Sales Order, Sales Invoice or Journal Entry", [row.idx]));
-					return false;
-				}
+			if(frm.doc.party_type=="Customer" &&
+				!in_list(["Sales Order", "Sales Invoice", "Journal Entry"], row.reference_doctype)
+			) {
+				frappe.model.set_value(row.doctype, row.name, "reference_doctype", null);
+				frappe.msgprint(__("Row #{0}: Reference Document Type must be one of Sales Order, Sales Invoice or Journal Entry", [row.idx]));
+				return false;
+			}
 
-			if(frm.doc.party_type=="Supplier" && !in_list(["Purchase Order",
-				"Purchase Invoice", "Journal Entry"], row.reference_doctype)) {
-					frappe.model.set_value(row.doctype, row.name, "against_voucher_type", null);
-					frappe.msgprint(__("Row #{0}: Reference Document Type must be one of Purchase Order, Purchase Invoice or Journal Entry", [row.idx]));
-					return false;
-				}
+			if(frm.doc.party_type=="Supplier" &&
+				!in_list(["Purchase Order", "Purchase Invoice", "Journal Entry"], row.reference_doctype)
+			) {
+				frappe.model.set_value(row.doctype, row.name, "against_voucher_type", null);
+				frappe.msgprint(__("Row #{0}: Reference Document Type must be one of Purchase Order, Purchase Invoice or Journal Entry", [row.idx]));
+				return false;
+			}
 		}
 
 		if (row) {
diff --git a/erpnext/accounts/doctype/payment_reconciliation/payment_reconciliation.js b/erpnext/accounts/doctype/payment_reconciliation/payment_reconciliation.js
index 272e474..ebd9439 100644
--- a/erpnext/accounts/doctype/payment_reconciliation/payment_reconciliation.js
+++ b/erpnext/accounts/doctype/payment_reconciliation/payment_reconciliation.js
@@ -14,7 +14,7 @@
 
 		this.frm.set_query('receivable_payable_account', function() {
 			if(!me.frm.doc.company || !me.frm.doc.party_type) {
-				msgprint(__("Please select Company and Party Type first"));
+				frappe.msgprint(__("Please select Company and Party Type first"));
 			} else {
 				return{
 					filters: {
@@ -29,7 +29,7 @@
 
 		this.frm.set_query('bank_cash_account', function() {
 			if(!me.frm.doc.company) {
-				msgprint(__("Please select Company first"));
+				frappe.msgprint(__("Please select Company first"));
 			} else {
 				return{
 					filters:[
@@ -96,10 +96,11 @@
 	},
 
 	set_invoice_options: function() {
+		var me = this;
 		var invoices = [];
 
 		$.each(me.frm.doc.invoices || [], function(i, row) {
-			if (row.invoice_number && !inList(invoices, row.invoice_number))
+			if (row.invoice_number && !in_list(invoices, row.invoice_number))
 				invoices.push(row.invoice_type + " | " + row.invoice_number);
 		});
 
@@ -108,7 +109,7 @@
 				me.frm.doc.name).options = "\n" + invoices.join("\n");
 
 			$.each(me.frm.doc.payments || [], function(i, p) {
-				if(!inList(invoices, cstr(p.invoice_number))) p.invoice_number = null;
+				if(!in_list(invoices, cstr(p.invoice_number))) p.invoice_number = null;
 			});
 		}
 
diff --git a/erpnext/accounts/doctype/period_closing_voucher/period_closing_voucher.js b/erpnext/accounts/doctype/period_closing_voucher/period_closing_voucher.js
index c5ded6d..03b8f93 100644
--- a/erpnext/accounts/doctype/period_closing_voucher/period_closing_voucher.js
+++ b/erpnext/accounts/doctype/period_closing_voucher/period_closing_voucher.js
@@ -3,7 +3,7 @@
 
 frappe.ui.form.on('Period Closing Voucher', {
 	onload: function(frm) {
-		if (!frm.doc.transaction_date) frm.doc.transaction_date = dateutil.obj_to_str(new Date());
+		if (!frm.doc.transaction_date) frm.doc.transaction_date = frappe.datetime.obj_to_str(new Date());
 	},
 	
 	setup: function(frm) {
diff --git a/erpnext/accounts/doctype/pos_profile/pos_profile.js b/erpnext/accounts/doctype/pos_profile/pos_profile.js
index c1aa0c3..83016a9 100755
--- a/erpnext/accounts/doctype/pos_profile/pos_profile.js
+++ b/erpnext/accounts/doctype/pos_profile/pos_profile.js
@@ -35,8 +35,8 @@
 			'company': doc.company,
 			'account_type': "Income Account"
 		}
-	}
-}
+	};
+};
 
 
 // Cost Center
@@ -47,8 +47,8 @@
 			'company': doc.company,
 			'is_group': 0
 		}
-	}
-}
+	};
+};
 
 
 // Expense Account
@@ -60,8 +60,8 @@
 			"company": doc.company,
 			"is_group": 0
 		}
-	}
-}
+	};
+};
 
 // ------------------ Get Print Heading ------------------------------------
 cur_frm.fields_dict['select_print_heading'].get_query = function(doc, cdt, cdn) {
@@ -69,13 +69,13 @@
 		filters:[
 			['Print Heading', 'docstatus', '!=', 2]
 		]
-	}
-}
+	};
+};
 
 
 cur_frm.fields_dict.user.get_query = function(doc,cdt,cdn) {
-	return{	query:"frappe.core.doctype.user.user.user_query"}
-}
+	return{	query:"frappe.core.doctype.user.user.user_query"};
+};
 
 cur_frm.fields_dict.write_off_account.get_query = function(doc) {
 	return{
@@ -84,16 +84,16 @@
 			'is_group': 0,
 			'company': doc.company
 		}
-	}
-}
+	};
+};
 
 // Write off cost center
-//-----------------------
+// -----------------------
 cur_frm.fields_dict.write_off_cost_center.get_query = function(doc) {
 	return{
 		filters:{
 			'is_group': 0,
 			'company': doc.company
 		}
-	}
-}
+	};
+};
diff --git a/erpnext/accounts/doctype/pricing_rule/pricing_rule.js b/erpnext/accounts/doctype/pricing_rule/pricing_rule.js
index 03bb7ae..120329b 100644
--- a/erpnext/accounts/doctype/pricing_rule/pricing_rule.js
+++ b/erpnext/accounts/doctype/pricing_rule/pricing_rule.js
@@ -2,63 +2,65 @@
 // License: GNU General Public License v3. See license.txt
 
 frappe.ui.form.on("Pricing Rule", "refresh", function(frm) {
-	var help_content = ['<table class="table table-bordered" style="background-color: #f9f9f9;">',
-		'<tr><td>',
-			'<h4><i class="fa fa-hand-right"></i> ',
-				__('Notes'),
-			':</h4>',
-			'<ul>',
-				'<li>',
-					__("Pricing Rule is made to overwrite Price List / define discount percentage, based on some criteria."),
-				'</li>',
-				'<li>',
-					__("If selected Pricing Rule is made for 'Price', it will overwrite Price List. Pricing Rule price is the final price, so no further discount should be applied. Hence, in transactions like Sales Order, Purchase Order etc, it will be fetched in 'Rate' field, rather than 'Price List Rate' field."),
-				'</li>',
-				'<li>',
-					__('Discount Percentage can be applied either against a Price List or for all Price List.'),
-				'</li>',
-				'<li>',
-					__('To not apply Pricing Rule in a particular transaction, all applicable Pricing Rules should be disabled.'),
-				'</li>',
-			'</ul>',
-		'</td></tr>',
-		'<tr><td>',
-			'<h4><i class="fa fa-question-sign"></i> ',
-				__('How Pricing Rule is applied?'),
-			'</h4>',
-			'<ol>',
-				'<li>',
-					__("Pricing Rule is first selected based on 'Apply On' field, which can be Item, Item Group or Brand."),
-				'</li>',
-				'<li>',
-					__("Then Pricing Rules are filtered out based on Customer, Customer Group, Territory, Supplier, Supplier Type, Campaign, Sales Partner etc."),
-				'</li>',
-				'<li>',
-					__('Pricing Rules are further filtered based on quantity.'),
-				'</li>',
-				'<li>',
-					__('If two or more Pricing Rules are found based on the above conditions, Priority is applied. Priority is a number between 0 to 20 while default value is zero (blank). Higher number means it will take precedence if there are multiple Pricing Rules with same conditions.'),
-				'</li>',
-				'<li>',
-					__('Even if there are multiple Pricing Rules with highest priority, then following internal priorities are applied:'),
-					'<ul>',
-						'<li>',
-							__('Item Code > Item Group > Brand'),
-						'</li>',
-						'<li>',
-							__('Customer > Customer Group > Territory'),
-						'</li>',
-						'<li>',
-							__('Supplier > Supplier Type'),
-						'</li>',
-					'</ul>',
-				'</li>',
-				'<li>',
-					__('If multiple Pricing Rules continue to prevail, users are asked to set Priority manually to resolve conflict.'),
-				'</li>',
-			'</ol>',
-		'</td></tr>',
-	'</table>'].join("\n");
+	var help_content =
+		`<table class="table table-bordered" style="background-color: #f9f9f9;">
+			<tr><td>
+				<h4>
+					<i class="fa fa-hand-right"></i>
+					${__('Notes')}
+				</h4>
+				<ul>
+					<li>
+						${__("Pricing Rule is made to overwrite Price List / define discount percentage, based on some criteria.")}
+					</li>
+					<li>
+						${__("If selected Pricing Rule is made for 'Price', it will overwrite Price List. Pricing Rule price is the final price, so no further discount should be applied. Hence, in transactions like Sales Order, Purchase Order etc, it will be fetched in 'Rate' field, rather than 'Price List Rate' field.")}
+					</li>
+					<li>
+						${__('Discount Percentage can be applied either against a Price List or for all Price List.')}
+					</li>
+					<li>
+						${__('To not apply Pricing Rule in a particular transaction, all applicable Pricing Rules should be disabled.')}
+					</li>
+				</ul>
+			</td></tr>
+			<tr><td>
+				<h4><i class="fa fa-question-sign"></i>
+					${__('How Pricing Rule is applied?')}
+				</h4>
+				<ol>
+					<li>
+						${__("Pricing Rule is first selected based on 'Apply On' field, which can be Item, Item Group or Brand.")}
+					</li>
+					<li>
+						${__("Then Pricing Rules are filtered out based on Customer, Customer Group, Territory, Supplier, Supplier Type, Campaign, Sales Partner etc.")}
+					</li>
+					<li>
+						${__('Pricing Rules are further filtered based on quantity.')}
+					</li>
+					<li>
+						${__('If two or more Pricing Rules are found based on the above conditions, Priority is applied. Priority is a number between 0 to 20 while default value is zero (blank). Higher number means it will take precedence if there are multiple Pricing Rules with same conditions.')}
+					</li>
+					<li>
+						${__('Even if there are multiple Pricing Rules with highest priority, then following internal priorities are applied:')}
+						<ul>
+							<li>
+								${__('Item Code > Item Group > Brand')}
+							</li>
+							<li>
+								${__('Customer > Customer Group > Territory')}
+							</li>
+							<li>
+								${__('Supplier > Supplier Type')}
+							</li>
+						</ul>
+					</li>
+					<li>
+						${__('If multiple Pricing Rules continue to prevail, users are asked to set Priority manually to resolve conflict.')}
+					</li>
+				</ol>
+			</td></tr>
+		</table>`;
 
 	set_field_options("pricing_rule_help", help_content);
 
diff --git a/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.js b/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.js
index b48fb20..9462151 100644
--- a/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.js
+++ b/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.js
@@ -101,8 +101,8 @@
 				account: this.frm.doc.credit_to,
 				price_list: this.frm.doc.buying_price_list,
 			}, function() {
-			me.apply_pricing_rule();
-		})
+				me.apply_pricing_rule();
+			})
 	},
 
 	credit_to: function() {
@@ -130,7 +130,7 @@
 		if(cint(this.frm.doc.is_paid)) {
 			if(!this.frm.doc.company) {
 				this.frm.set_value("is_paid", 0)
-				msgprint(__("Please specify Company to proceed"));
+				frappe.msgprint(__("Please specify Company to proceed"));
 			}
 		}
 		this.calculate_outstanding_amount();
@@ -195,19 +195,19 @@
 // Hide Fields
 // ------------
 function hide_fields(doc) {
-	parent_fields = ['due_date', 'is_opening', 'advances_section', 'from_date', 'to_date'];
+	var parent_fields = ['due_date', 'is_opening', 'advances_section', 'from_date', 'to_date'];
 
 	if(cint(doc.is_paid) == 1) {
 		hide_field(parent_fields);
 	} else {
-		for (i in parent_fields) {
+		for (var i in parent_fields) {
 			var docfield = frappe.meta.docfield_map[doc.doctype][parent_fields[i]];
 			if(!docfield.hidden) unhide_field(parent_fields[i]);
 		}
 
 	}
 
-	item_fields_stock = ['warehouse_section', 'received_qty', 'rejected_qty'];
+	var item_fields_stock = ['warehouse_section', 'received_qty', 'rejected_qty'];
 
 	cur_frm.fields_dict['items'].grid.set_column_disp(item_fields_stock,
 		(cint(doc.update_stock)==1 || cint(doc.is_return)==1 ? true : false));
diff --git a/erpnext/accounts/doctype/purchase_taxes_and_charges_template/purchase_taxes_and_charges_template.js b/erpnext/accounts/doctype/purchase_taxes_and_charges_template/purchase_taxes_and_charges_template.js
index a1d8bf8..eb0ea7f 100644
--- a/erpnext/accounts/doctype/purchase_taxes_and_charges_template/purchase_taxes_and_charges_template.js
+++ b/erpnext/accounts/doctype/purchase_taxes_and_charges_template/purchase_taxes_and_charges_template.js
@@ -9,11 +9,11 @@
 	var d = locals[cdt][cdn];
 
 	if(!d.category && d.add_deduct_tax) {
-		msgprint(__("Please select Category first"));
+		frappe.msgprint(__("Please select Category first"));
 		d.add_deduct_tax = '';
 	}
 	else if(d.category != 'Total' && d.add_deduct_tax == 'Deduct') {
-		msgprint(__("Cannot deduct when category is for 'Valuation' or 'Valuation and Total'"));
+		frappe.msgprint(__("Cannot deduct when category is for 'Valuation' or 'Valuation and Total'"));
 		d.add_deduct_tax = '';
 	}
 	refresh_field('add_deduct_tax', d.name, 'taxes');
@@ -23,7 +23,7 @@
 	var d = locals[cdt][cdn];
 
 	if (d.category != 'Total' && d.add_deduct_tax == 'Deduct') {
-		msgprint(__("Cannot deduct when category is for 'Valuation' or 'Vaulation and Total'"));
+		frappe.msgprint(__("Cannot deduct when category is for 'Valuation' or 'Vaulation and Total'"));
 		d.add_deduct_tax = '';
 	}
 	refresh_field('add_deduct_tax', d.name, 'taxes');
diff --git a/erpnext/accounts/doctype/sales_invoice/sales_invoice.js b/erpnext/accounts/doctype/sales_invoice/sales_invoice.js
index 3fbde29..e03d4d4 100644
--- a/erpnext/accounts/doctype/sales_invoice/sales_invoice.js
+++ b/erpnext/accounts/doctype/sales_invoice/sales_invoice.js
@@ -175,8 +175,8 @@
 				account: this.frm.doc.debit_to,
 				price_list: this.frm.doc.selling_price_list,
 			}, function() {
-			me.apply_pricing_rule();
-		})
+				me.apply_pricing_rule();
+			})
 	},
 
 	debit_to: function() {
@@ -267,7 +267,7 @@
 		if(this.frm.doc.is_pos) {
 			if(!this.frm.doc.company) {
 				this.frm.set_value("is_pos", 0);
-				msgprint(__("Please specify Company to proceed"));
+				frappe.msgprint(__("Please specify Company to proceed"));
 			} else {
 				var me = this;
 				return this.frm.call({
@@ -311,19 +311,19 @@
 // Hide Fields
 // ------------
 cur_frm.cscript.hide_fields = function(doc) {
-	parent_fields = ['project', 'due_date', 'is_opening', 'source', 'total_advance', 'get_advances',
+	var parent_fields = ['project', 'due_date', 'is_opening', 'source', 'total_advance', 'get_advances',
 		'advances', 'sales_partner', 'commission_rate', 'total_commission', 'advances', 'from_date', 'to_date'];
 
 	if(cint(doc.is_pos) == 1) {
 		hide_field(parent_fields);
 	} else {
-		for (i in parent_fields) {
+		for (var i in parent_fields) {
 			var docfield = frappe.meta.docfield_map[doc.doctype][parent_fields[i]];
 			if(!docfield.hidden) unhide_field(parent_fields[i]);
 		}
 	}
 
-	item_fields_stock = ['batch_no', 'actual_batch_qty', 'actual_qty', 'expense_account',
+	var item_fields_stock = ['batch_no', 'actual_batch_qty', 'actual_qty', 'expense_account',
 		'warehouse', 'expense_account', 'quality_inspection']
 	cur_frm.fields_dict['items'].grid.set_column_disp(item_fields_stock,
 		(cint(doc.update_stock)==1 || cint(doc.is_return)==1 ? true : false));
@@ -400,7 +400,7 @@
 });
 
 // expense account
-if (sys_defaults.auto_accounting_for_stock) {
+if (frappe.sys_defaults.auto_accounting_for_stock) {
 	cur_frm.fields_dict['items'].grid.get_field('expense_account').get_query = function(doc) {
 		return {
 			filters: {
@@ -442,11 +442,12 @@
 	})
 
 	if(cur_frm.doc.is_pos) {
-		cur_frm.msgbox = frappe.msgprint(format('<a class="btn btn-primary" \
-			onclick="cur_frm.print_preview.printit(true)" style="margin-right: 5px;">{0}</a>\
-			<a class="btn btn-default" href="javascript:frappe.new_doc(cur_frm.doctype);">{1}</a>', [
-			__('Print'), __('New')
-		]));
+		cur_frm.msgbox = frappe.msgprint(
+			`<a class="btn btn-primary" onclick="cur_frm.print_preview.printit(true)" style="margin-right: 5px;">
+				${__('Print')}</a>
+			<a class="btn btn-default" href="javascript:frappe.new_doc(cur_frm.doctype);">
+				${__('New')}</a>`
+			);
 
 	} else if(cint(frappe.boot.notification_settings.sales_invoice)) {
 		cur_frm.email_doc(frappe.boot.notification_settings.sales_invoice_message);
diff --git a/erpnext/accounts/page/pos/pos.js b/erpnext/accounts/page/pos/pos.js
index dc524e1..b80bf46 100644
--- a/erpnext/accounts/page/pos/pos.js
+++ b/erpnext/accounts/page/pos/pos.js
@@ -113,7 +113,7 @@
 
 	email_prompt: function() {
 		var me = this;
-		fields = [{label:__("To"), fieldtype:"Data", reqd: 0, fieldname:"recipients",length:524288},
+		var fields = [{label:__("To"), fieldtype:"Data", reqd: 0, fieldname:"recipients",length:524288},
 			{fieldtype: "Section Break", collapsible: 1, label: "CC & Standard Reply"},
 			{fieldtype: "Section Break"},
 			{label:__("Subject"), fieldtype:"Data", reqd: 1,
@@ -602,7 +602,7 @@
 		var html = "";
 		if(this.si_docs.length) {
 			this.si_docs.forEach(function (data, i) {
-				for (key in data) {
+				for (var key in data) {
 					html += frappe.render_template("pos_invoice_list", {
 						sr: i + 1,
 						name: key,
@@ -965,7 +965,7 @@
 	make_item_list: function () {
 		var me = this;
 		if (!this.price_list) {
-			msgprint(__("Price List not found or disabled"));
+			frappe.msgprint(__("Price List not found or disabled"));
 			return;
 		}
 
@@ -1232,7 +1232,7 @@
 
 	remove_zero_qty_item: function () {
 		var me = this;
-		idx = 0
+		var idx = 0;
 		this.items = []
 		$.each(this.frm.doc["items"] || [], function (i, d) {
 			if (!in_list(me.remove_item, d.idx)) {
@@ -1250,7 +1250,7 @@
 
 		this.wrapper.find('input.discount-percentage').on("change", function () {
 			me.frm.doc.additional_discount_percentage = flt($(this).val(), precision("additional_discount_percentage"));
-			total = me.frm.doc.grand_total
+			var total = me.frm.doc.grand_total
 
 			if (me.frm.doc.apply_discount_on == 'Net Total') {
 				total = me.frm.doc.net_total
@@ -1442,7 +1442,7 @@
 
 		if (this.frm.doc.docstatus == 1) {
 			this.page.set_secondary_action(__("Print"), function () {
-				html = frappe.render(me.print_template_data, me.frm.doc)
+				var html = frappe.render(me.print_template_data, me.frm.doc)
 				me.print_document(html)
 			})
 			this.page.add_menu_item(__("Email"), function () {
@@ -1465,19 +1465,18 @@
 	print_dialog: function () {
 		var me = this;
 
-		this.msgprint = frappe.msgprint(format('<a class="btn btn-primary print_doc" \
-			style="margin-right: 5px;">{0}</a>\
-			<a class="btn btn-default new_doc">{1}</a>', [
-				__('Print'), __('New')
-			]));
+		this.frappe.msgprint = frappe.msgprint(
+			`<a class="btn btn-primary print_doc"
+				style="margin-right: 5px;">${__('Print')}</a>
+			<a class="btn btn-default new_doc">${__('New')}</a>`);
 
 		$('.print_doc').click(function () {
-			html = frappe.render(me.print_template_data, me.frm.doc)
+			var html = frappe.render(me.print_template_data, me.frm.doc)
 			me.print_document(html)
 		})
 
 		$('.new_doc').click(function () {
-			me.msgprint.hide()
+			me.frappe.msgprint.hide()
 			me.make_new_cart()
 		})
 	},
@@ -1506,9 +1505,9 @@
 
 		//Remove the sold serial no from the cache
 		$.each(this.frm.doc.items, function(index, data) {
-			sn = data.serial_no.split('\n')
+			var sn = data.serial_no.split('\n')
 			if(sn.length) {
-				serial_no_list = me.serial_no_data[data.item_code]
+				var serial_no_list = me.serial_no_data[data.item_code]
 				if(serial_no_list) {
 					$.each(sn, function(i, serial_no) {
 						if(in_list(Object.keys(serial_no_list), serial_no)) {
@@ -1531,7 +1530,7 @@
 
 	toggle_input_field: function () {
 		var pointer_events = 'inherit'
-		disabled = this.frm.doc.docstatus == 1 ? true: false;
+		var disabled = this.frm.doc.docstatus == 1 ? true: false;
 		$(this.wrapper).find('input').attr("disabled", disabled);
 		$(this.wrapper).find('select').attr("disabled", disabled);
 		$(this.wrapper).find('input').attr("disabled", disabled);
@@ -1571,7 +1570,7 @@
 		var me = this;
 		this.si_docs = this.get_doc_from_localstorage();
 		$.each(this.si_docs, function (index, data) {
-			for (key in data) {
+			for (var key in data) {
 				if (key == me.name) {
 					me.si_docs[index][key] = me.frm.doc;
 					me.update_localstorage();
@@ -1634,10 +1633,10 @@
 	get_submitted_invoice: function () {
 		var invoices = [];
 		var index = 1;
-		docs = this.get_doc_from_localstorage();
+		var docs = this.get_doc_from_localstorage();
 		if (docs) {
 			invoices = $.map(docs, function (data) {
-				for (key in data) {
+				for (var key in data) {
 					if (data[key].docstatus == 1 && index < 50) {
 						index++
 						data[key].docstatus = 0;
@@ -1656,7 +1655,7 @@
 		this.new_si_docs = [];
 		if (this.removed_items) {
 			$.each(this.si_docs, function (index, data) {
-				for (key in data) {
+				for (var key in data) {
 					if (!in_list(me.removed_items, key)) {
 						me.new_si_docs.push(data);
 					}
@@ -1715,8 +1714,9 @@
 
 	validate_serial_no: function () {
 		var me = this;
-		var item_code = serial_no = '';
-		for (key in this.item_serial_no) {
+		var item_code = ''
+		var serial_no = '';
+		for (var key in this.item_serial_no) {
 			item_code = key;
 			serial_no = me.item_serial_no[key][0];
 		}
@@ -1763,20 +1763,24 @@
 	mandatory_batch_no: function () {
 		var me = this;
 		if (this.items[0].has_batch_no && !this.item_batch_no[this.items[0].item_code]) {
-			frappe.prompt([
-				{'fieldname': 'batch', 'fieldtype': 'Select', 'label': __('Batch No'), 'reqd': 1, 'options':this.batch_no_data[this.items[0].item_code]}
-				],
-				function(values){
-					me.item_batch_no[me.items[0].item_code] = values.batch;
-				},
-				__('Select Batch No'))
-			}
+			frappe.prompt([{
+				'fieldname': 'batch',
+				'fieldtype': 'Select',
+				'label': __('Batch No'),
+				'reqd': 1,
+				'options': this.batch_no_data[this.items[0].item_code]
+			}],
+			function(values){
+				me.item_batch_no[me.items[0].item_code] = values.batch;
+			},
+			__('Select Batch No'))
+		}
 	},
 
 	apply_pricing_rule: function () {
 		var me = this;
 		$.each(this.frm.doc["items"], function (n, item) {
-			pricing_rule = me.get_pricing_rule(item)
+			var pricing_rule = me.get_pricing_rule(item)
 			me.validate_pricing_rule(pricing_rule)
 			if (pricing_rule.length) {
 				item.pricing_rule = pricing_rule[0].name;
@@ -1836,7 +1840,7 @@
 
 	validate_condition: function (data) {
 		//This method check condition based on applicable for
-		condition = this.get_mapper_for_pricing_rule(data)[data.applicable_for]
+		var condition = this.get_mapper_for_pricing_rule(data)[data.applicable_for]
 		if (in_list(condition[1], condition[0])) {
 			return true
 		}
@@ -1869,7 +1873,7 @@
 				}
 			})
 
-			count = 0
+			var count = 0
 			$.each(priority_list, function (index, value) {
 				if (value == priority) {
 					count++
diff --git a/erpnext/accounts/report/accounts_payable/accounts_payable.js b/erpnext/accounts/report/accounts_payable/accounts_payable.js
index 3ab522e..0c24feb 100644
--- a/erpnext/accounts/report/accounts_payable/accounts_payable.js
+++ b/erpnext/accounts/report/accounts_payable/accounts_payable.js
@@ -20,13 +20,13 @@
 			"fieldname":"report_date",
 			"label": __("As on Date"),
 			"fieldtype": "Date",
-			"default": get_today()
+			"default": frappe.datetime.get_today()
 		},
 		{
 			"fieldname":"ageing_based_on",
 			"label": __("Ageing Based On"),
 			"fieldtype": "Select",
-			"options": 'Posting Date' + NEWLINE + 'Due Date',
+			"options": 'Posting Date\nDue Date',
 			"default": "Posting Date"
 		},
 		{
diff --git a/erpnext/accounts/report/accounts_payable_summary/accounts_payable_summary.js b/erpnext/accounts/report/accounts_payable_summary/accounts_payable_summary.js
index 0a1734a..6277cc7 100644
--- a/erpnext/accounts/report/accounts_payable_summary/accounts_payable_summary.js
+++ b/erpnext/accounts/report/accounts_payable_summary/accounts_payable_summary.js
@@ -20,13 +20,13 @@
 			"fieldname":"report_date",
 			"label": __("Date"),
 			"fieldtype": "Date",
-			"default": get_today()
+			"default": frappe.datetime.get_today()
 		},
 		{
 			"fieldname":"ageing_based_on",
 			"label": __("Ageing Based On"),
 			"fieldtype": "Select",
-			"options": 'Posting Date' + NEWLINE + 'Due Date',
+			"options": 'Posting Date\nDue Date',
 			"default": "Posting Date"
 		},
 		{
diff --git a/erpnext/accounts/report/accounts_receivable/accounts_receivable.js b/erpnext/accounts/report/accounts_receivable/accounts_receivable.js
index f98d037..55d8639 100644
--- a/erpnext/accounts/report/accounts_receivable/accounts_receivable.js
+++ b/erpnext/accounts/report/accounts_receivable/accounts_receivable.js
@@ -26,7 +26,7 @@
 			"fieldname":"credit_days_based_on",
 			"label": __("Credit Days Based On"),
 			"fieldtype": "Select",
-			"options": "" + NEWLINE + "Fixed Days" + NEWLINE + "Last Day of the Next Month"
+			"options": "\nFixed Days\nLast Day of the Next Month"
 		},
 		{
 			"fieldtype": "Break",
@@ -35,13 +35,13 @@
 			"fieldname":"report_date",
 			"label": __("As on Date"),
 			"fieldtype": "Date",
-			"default": get_today()
+			"default": frappe.datetime.get_today()
 		},
 		{
 			"fieldname":"ageing_based_on",
 			"label": __("Ageing Based On"),
 			"fieldtype": "Select",
-			"options": 'Posting Date' + NEWLINE + 'Due Date',
+			"options": 'Posting Date\nDue Date',
 			"default": "Posting Date"
 		},
 		{
diff --git a/erpnext/accounts/report/accounts_receivable_summary/accounts_receivable_summary.js b/erpnext/accounts/report/accounts_receivable_summary/accounts_receivable_summary.js
index a18c1a7..ceed5e5 100644
--- a/erpnext/accounts/report/accounts_receivable_summary/accounts_receivable_summary.js
+++ b/erpnext/accounts/report/accounts_receivable_summary/accounts_receivable_summary.js
@@ -26,7 +26,7 @@
 			"fieldname":"credit_days_based_on",
 			"label": __("Credit Days Based On"),
 			"fieldtype": "Select",
-			"options": "" + NEWLINE + "Fixed Days" + NEWLINE + "Last Day of the Next Month"
+			"options": "\nFixed Days\nLast Day of the Next Month"
 		},
 		{
 			"fieldtype": "Break",
@@ -35,13 +35,13 @@
 			"fieldname":"report_date",
 			"label": __("Date"),
 			"fieldtype": "Date",
-			"default": get_today()
+			"default": frappe.datetime.get_today()
 		},
 		{
 			"fieldname":"ageing_based_on",
 			"label": __("Ageing Based On"),
 			"fieldtype": "Select",
-			"options": 'Posting Date' + NEWLINE + 'Due Date',
+			"options": 'Posting Date\nDue Date',
 			"default": "Posting Date"
 		},
 		{
@@ -70,7 +70,7 @@
 	onload: function(report) {
 		report.page.add_inner_button(__("Accounts Receivable"), function() {
 			var filters = report.get_values();
-			frappe.set_route('query-report', 'Accounts Receivable', {company: filters.company});
+			frappe.set_route('query-report', 'Accounts Receivable', { company: filters.company });
 		});
 	}
 }
diff --git a/erpnext/accounts/report/bank_clearance_summary/bank_clearance_summary.js b/erpnext/accounts/report/bank_clearance_summary/bank_clearance_summary.js
index e4f0384..dbee022 100644
--- a/erpnext/accounts/report/bank_clearance_summary/bank_clearance_summary.js
+++ b/erpnext/accounts/report/bank_clearance_summary/bank_clearance_summary.js
@@ -14,7 +14,7 @@
 			"fieldname":"to_date",
 			"label": __("To Date"),
 			"fieldtype": "Date",
-			"default": get_today()
+			"default": frappe.datetime.get_today()
 		},
 		{
 			"fieldname":"account",
diff --git a/erpnext/accounts/report/bank_reconciliation_statement/bank_reconciliation_statement.js b/erpnext/accounts/report/bank_reconciliation_statement/bank_reconciliation_statement.js
index e420fb9..0f9fdd7 100644
--- a/erpnext/accounts/report/bank_reconciliation_statement/bank_reconciliation_statement.js
+++ b/erpnext/accounts/report/bank_reconciliation_statement/bank_reconciliation_statement.js
@@ -25,7 +25,7 @@
 			"fieldname":"report_date",
 			"label": __("Date"),
 			"fieldtype": "Date",
-			"default": get_today(),
+			"default": frappe.datetime.get_today(),
 			"reqd": 1
 		},
 	]
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 2b7f1f3..1315b25 100644
--- a/erpnext/accounts/report/budget_variance_report/budget_variance_report.js
+++ b/erpnext/accounts/report/budget_variance_report/budget_variance_report.js
@@ -8,7 +8,7 @@
 			label: __("Fiscal Year"),
 			fieldtype: "Link",
 			options: "Fiscal Year",
-			default: sys_defaults.fiscal_year,
+			default: frappe.sys_defaults.fiscal_year,
 			reqd: 1
 		},
 		{
diff --git a/erpnext/accounts/report/item_wise_purchase_register/item_wise_purchase_register.js b/erpnext/accounts/report/item_wise_purchase_register/item_wise_purchase_register.js
index bad826e..8d33524 100644
--- a/erpnext/accounts/report/item_wise_purchase_register/item_wise_purchase_register.js
+++ b/erpnext/accounts/report/item_wise_purchase_register/item_wise_purchase_register.js
@@ -14,7 +14,7 @@
 			"fieldname":"to_date",
 			"label": __("To Date"),
 			"fieldtype": "Date",
-			"default": get_today()
+			"default": frappe.datetime.get_today()
 		},
 		{
 			"fieldname": "item_code",
diff --git a/erpnext/accounts/report/item_wise_sales_register/item_wise_sales_register.js b/erpnext/accounts/report/item_wise_sales_register/item_wise_sales_register.js
index 142a55f..65cec51 100644
--- a/erpnext/accounts/report/item_wise_sales_register/item_wise_sales_register.js
+++ b/erpnext/accounts/report/item_wise_sales_register/item_wise_sales_register.js
@@ -14,7 +14,7 @@
 			"fieldname":"to_date",
 			"label": __("To Date"),
 			"fieldtype": "Date",
-			"default": get_today()
+			"default": frappe.datetime.get_today()
 		},
 		{
 			"fieldname":"customer",
diff --git a/erpnext/accounts/report/payment_period_based_on_invoice_date/payment_period_based_on_invoice_date.js b/erpnext/accounts/report/payment_period_based_on_invoice_date/payment_period_based_on_invoice_date.js
index 5c20510..9d4a352 100644
--- a/erpnext/accounts/report/payment_period_based_on_invoice_date/payment_period_based_on_invoice_date.js
+++ b/erpnext/accounts/report/payment_period_based_on_invoice_date/payment_period_based_on_invoice_date.js
@@ -21,7 +21,7 @@
 			fieldname:"to_date",
 			label: __("To Date"),
 			fieldtype: "Date",
-			default: get_today()
+			default: frappe.datetime.get_today()
 		},
 		{
 			fieldname:"payment_type",
diff --git a/erpnext/accounts/report/purchase_invoice_trends/purchase_invoice_trends.js b/erpnext/accounts/report/purchase_invoice_trends/purchase_invoice_trends.js
index cc00b2a..a95cfac 100644
--- a/erpnext/accounts/report/purchase_invoice_trends/purchase_invoice_trends.js
+++ b/erpnext/accounts/report/purchase_invoice_trends/purchase_invoice_trends.js
@@ -3,6 +3,6 @@
 
 frappe.require("assets/erpnext/js/purchase_trends_filters.js", function() {
 	frappe.query_reports["Purchase Invoice Trends"] = {
-		filters: get_filters()
+		filters: erpnext.get_purchase_trends_filters()
 	}
 });
\ No newline at end of file
diff --git a/erpnext/accounts/report/purchase_register/purchase_register.js b/erpnext/accounts/report/purchase_register/purchase_register.js
index d32f7b6..cd79531 100644
--- a/erpnext/accounts/report/purchase_register/purchase_register.js
+++ b/erpnext/accounts/report/purchase_register/purchase_register.js
@@ -14,7 +14,7 @@
 			"fieldname":"to_date",
 			"label": __("To Date"),
 			"fieldtype": "Date",
-			"default": get_today()
+			"default": frappe.datetime.get_today()
 		},
 		{
 			"fieldname":"supplier",
diff --git a/erpnext/accounts/report/sales_invoice_trends/sales_invoice_trends.js b/erpnext/accounts/report/sales_invoice_trends/sales_invoice_trends.js
index 0f92223..2d320f5 100644
--- a/erpnext/accounts/report/sales_invoice_trends/sales_invoice_trends.js
+++ b/erpnext/accounts/report/sales_invoice_trends/sales_invoice_trends.js
@@ -3,6 +3,6 @@
 
 frappe.require("assets/erpnext/js/sales_trends_filters.js", function() {
 	frappe.query_reports["Sales Invoice Trends"] = {
-		filters: get_filters()
+		filters: erpnext.get_sales_trends_filters()
 	}
 });
\ No newline at end of file
diff --git a/erpnext/accounts/report/sales_register/sales_register.js b/erpnext/accounts/report/sales_register/sales_register.js
index d7aac5a..2ac4ae8 100644
--- a/erpnext/accounts/report/sales_register/sales_register.js
+++ b/erpnext/accounts/report/sales_register/sales_register.js
@@ -14,7 +14,7 @@
 			"fieldname":"to_date",
 			"label": __("To Date"),
 			"fieldtype": "Date",
-			"default": get_today()
+			"default": frappe.datetime.get_today()
 		},
 		{
 			"fieldname":"customer",
diff --git a/erpnext/buying/doctype/purchase_order/purchase_order.js b/erpnext/buying/doctype/purchase_order/purchase_order.js
index cfd3336..c533e6b 100644
--- a/erpnext/buying/doctype/purchase_order/purchase_order.js
+++ b/erpnext/buying/doctype/purchase_order/purchase_order.js
@@ -55,7 +55,7 @@
 
 			if(is_drop_ship && doc.status!="Delivered"){
 				cur_frm.add_custom_button(__('Delivered'),
-					 this.delivered_by_supplier, __("Status"));
+					this.delivered_by_supplier, __("Status"));
 
 				cur_frm.page.set_inner_btn_group_as_primary(__("Status"));
 			}
diff --git a/erpnext/buying/doctype/purchase_order/purchase_order_list.js b/erpnext/buying/doctype/purchase_order/purchase_order_list.js
index f6e7eeb..99f372b 100644
--- a/erpnext/buying/doctype/purchase_order/purchase_order_list.js
+++ b/erpnext/buying/doctype/purchase_order/purchase_order_list.js
@@ -1,34 +1,34 @@
 frappe.listview_settings['Purchase Order'] = {
 	add_fields: ["base_grand_total", "company", "currency", "supplier",
 		"supplier_name", "per_received", "per_billed", "status"],
-	get_indicator: function(doc) {
-        if(doc.status==="Closed"){
+	get_indicator: function (doc) {
+		if (doc.status === "Closed") {
 			return [__("Closed"), "green", "status,=,Closed"];
-		} else if (doc.status==="Delivered") {
+		} else if (doc.status === "Delivered") {
 			return [__("Delivered"), "green", "status,=,Closed"];
-		}else if(flt(doc.per_received, 2) < 100 && doc.status!=="Closed") {
-			if(flt(doc.per_billed, 2) < 100) {
+		} else if (flt(doc.per_received, 2) < 100 && doc.status !== "Closed") {
+			if (flt(doc.per_billed, 2) < 100) {
 				return [__("To Receive and Bill"), "orange",
 					"per_received,<,100|per_billed,<,100|status,!=,Closed"];
 			} else {
 				return [__("To Receive"), "orange",
 					"per_received,<,100|per_billed,=,100|status,!=,Closed"];
 			}
-		} else if(flt(doc.per_received, 2) == 100 && flt(doc.per_billed, 2) < 100 && doc.status!=="Closed") {
+		} else if (flt(doc.per_received, 2) == 100 && flt(doc.per_billed, 2) < 100 && doc.status !== "Closed") {
 			return [__("To Bill"), "orange", "per_received,=,100|per_billed,<,100|status,!=,Closed"];
-		} else if(flt(doc.per_received, 2) == 100 && flt(doc.per_billed, 2) == 100 && doc.status!=="Closed") {
+		} else if (flt(doc.per_received, 2) == 100 && flt(doc.per_billed, 2) == 100 && doc.status !== "Closed") {
 			return [__("Completed"), "green", "per_received,=,100|per_billed,=,100|status,!=,Closed"];
 		}
 	},
-	onload: function(listview) {
+	onload: function (listview) {
 		var method = "erpnext.buying.doctype.purchase_order.purchase_order.close_or_unclose_purchase_orders";
 
-		listview.page.add_menu_item(__("Close"), function() {
-			listview.call_for_selected_items(method, {"status": "Closed"});
+		listview.page.add_menu_item(__("Close"), function () {
+			listview.call_for_selected_items(method, { "status": "Closed" });
 		});
 
-		listview.page.add_menu_item(__("Re-open"), function() {
-			listview.call_for_selected_items(method, {"status": "Submitted"});
+		listview.page.add_menu_item(__("Re-open"), function () {
+			listview.call_for_selected_items(method, { "status": "Submitted" });
 		});
 	}
 };
diff --git a/erpnext/buying/doctype/request_for_quotation/request_for_quotation.js b/erpnext/buying/doctype/request_for_quotation/request_for_quotation.js
index 593f667..ce759aa 100644
--- a/erpnext/buying/doctype/request_for_quotation/request_for_quotation.js
+++ b/erpnext/buying/doctype/request_for_quotation/request_for_quotation.js
@@ -56,17 +56,17 @@
 		var dialog = new frappe.ui.Dialog({
 			title: __("For Supplier"),
 			fields: [
-				{"fieldtype": "Select", "label": __("Supplier"),
-					"fieldname": "supplier", "options":"Supplier",
-					"options": $.map(doc.suppliers,
-						function(d) { return d.supplier }), "reqd": 1 },
-				{"fieldtype": "Button", "label": __("Make Supplier Quotation"),
-					"fieldname": "make_supplier_quotation", "cssClass": "btn-primary"},
+				{	"fieldtype": "Select", "label": __("Supplier"),
+					"fieldname": "supplier",
+					"options": doc.suppliers.map(d => d.supplier),
+					"reqd": 1 },
+				{	"fieldtype": "Button", "label": __("Make Supplier Quotation"),
+					"fieldname": "make_supplier_quotation", "cssClass": "btn-primary" },
 			]
 		});
 
 		dialog.fields_dict.make_supplier_quotation.$input.click(function() {
-			args = dialog.get_values();
+			var args = dialog.get_values();
 			if(!args) return;
 			dialog.hide();
 			return frappe.call({
@@ -117,7 +117,7 @@
 			+"&supplier_idx="+encodeURIComponent(child.idx)
 			+"&no_letterhead=0"));
 		if(!w) {
-			msgprint(__("Please enable pop-ups")); return;
+			frappe.msgprint(__("Please enable pop-ups")); return;
 		}
 	}
 })
@@ -144,44 +144,44 @@
 						}
 					})
 				}, __("Get items from"));
-				// Get items from open Material Requests based on supplier
-				this.frm.add_custom_button(__('Possible Supplier'), function() {
-					// Create a dialog window for the user to pick their supplier
-					var d = new frappe.ui.Dialog({
-						title: __('Select Possible Supplier'),
-						fields: [
-						{fieldname: 'supplier', fieldtype:'Link', options:'Supplier', label:'Supplier', reqd:1},
-						{fieldname: 'ok_button', fieldtype:'Button', label:'Get Items from Material Requests'},
-						]
-					});
+			// Get items from open Material Requests based on supplier
+			this.frm.add_custom_button(__('Possible Supplier'), function() {
+				// Create a dialog window for the user to pick their supplier
+				var d = new frappe.ui.Dialog({
+					title: __('Select Possible Supplier'),
+					fields: [
+					{fieldname: 'supplier', fieldtype:'Link', options:'Supplier', label:'Supplier', reqd:1},
+					{fieldname: 'ok_button', fieldtype:'Button', label:'Get Items from Material Requests'},
+					]
+				});
 
-					// On the user clicking the ok button
-					d.fields_dict.ok_button.input.onclick = function() {
-						var btn = d.fields_dict.ok_button.input;
-						var v = d.get_values();
-						if(v) {
-							$(btn).set_working();
+				// On the user clicking the ok button
+				d.fields_dict.ok_button.input.onclick = function() {
+					var btn = d.fields_dict.ok_button.input;
+					var v = d.get_values();
+					if(v) {
+						$(btn).set_working();
 
-							erpnext.utils.map_current_doc({
-								method: "erpnext.buying.doctype.request_for_quotation.request_for_quotation.get_item_from_material_requests_based_on_supplier",
-								source_name: v.supplier,
-								target: me.frm,
-								setters: {
-									company: me.frm.doc.company
-								},
-								get_query_filters: {
-									material_request_type: "Purchase",
-									docstatus: 1,
-									status: ["!=", "Stopped"],
-									per_ordered: ["<", 99.99]
-								}
-							});
-							$(btn).done_working();
-							d.hide();
-						}
+						erpnext.utils.map_current_doc({
+							method: "erpnext.buying.doctype.request_for_quotation.request_for_quotation.get_item_from_material_requests_based_on_supplier",
+							source_name: v.supplier,
+							target: me.frm,
+							setters: {
+								company: me.frm.doc.company
+							},
+							get_query_filters: {
+								material_request_type: "Purchase",
+								docstatus: 1,
+								status: ["!=", "Stopped"],
+								per_ordered: ["<", 99.99]
+							}
+						});
+						$(btn).done_working();
+						d.hide();
 					}
-					d.show();
-				}, __("Get items from"));
+				}
+				d.show();
+			}, __("Get items from"));
 
 		}
 	},
diff --git a/erpnext/buying/doctype/supplier/supplier.js b/erpnext/buying/doctype/supplier/supplier.js
index 7e5e045..c7df33d 100644
--- a/erpnext/buying/doctype/supplier/supplier.js
+++ b/erpnext/buying/doctype/supplier/supplier.js
@@ -2,10 +2,10 @@
 // License: GNU General Public License v3. See license.txt
 
 frappe.ui.form.on("Supplier", {
-	setup: function(frm) {
-		frm.set_query('default_price_list', { 'buying': 1});
-		frm.set_query('account', 'accounts', function(doc, cdt, cdn) {
-			var d  = locals[cdt][cdn];
+	setup: function (frm) {
+		frm.set_query('default_price_list', { 'buying': 1 });
+		frm.set_query('account', 'accounts', function (doc, cdt, cdn) {
+			var d = locals[cdt][cdn];
 			return {
 				filters: {
 					'account_type': 'Payable',
@@ -15,30 +15,30 @@
 			}
 		});
 	},
-	refresh: function(frm) {
-		frappe.dynamic_link = {doc: frm.doc, fieldname: 'name', doctype: 'Supplier'}
+	refresh: function (frm) {
+		frappe.dynamic_link = { doc: frm.doc, fieldname: 'name', doctype: 'Supplier' }
 
-		if(frappe.defaults.get_default("supp_master_name")!="Naming Series") {
+		if (frappe.defaults.get_default("supp_master_name") != "Naming Series") {
 			frm.toggle_display("naming_series", false);
 		} else {
 			erpnext.toggle_naming_series();
 		}
 
-		if(frm.doc.__islocal){
-	    	hide_field(['address_html','contact_html']);
+		if (frm.doc.__islocal) {
+			hide_field(['address_html', 'contact_html']);
 			frappe.geo.clear_address_and_contact(frm);
 		}
 		else {
-		  	unhide_field(['address_html','contact_html']);
+			unhide_field(['address_html', 'contact_html']);
 			frappe.geo.render_address_and_contact(frm);
 
 			// custom buttons
-			frm.add_custom_button(__('Accounting Ledger'), function() {
+			frm.add_custom_button(__('Accounting Ledger'), function () {
 				frappe.set_route('query-report', 'General Ledger',
-					{party_type:'Supplier', party:frm.doc.name});
+					{ party_type: 'Supplier', party: frm.doc.name });
 			});
-			frm.add_custom_button(__('Accounts Payable'), function() {
-				frappe.set_route('query-report', 'Accounts Payable', {supplier:frm.doc.name});
+			frm.add_custom_button(__('Accounts Payable'), function () {
+				frappe.set_route('query-report', 'Accounts Payable', { supplier: frm.doc.name });
 			});
 
 			// indicators
diff --git a/erpnext/buying/doctype/supplier_quotation/supplier_quotation.js b/erpnext/buying/doctype/supplier_quotation/supplier_quotation.js
index 6bcbdba..3767248 100644
--- a/erpnext/buying/doctype/supplier_quotation/supplier_quotation.js
+++ b/erpnext/buying/doctype/supplier_quotation/supplier_quotation.js
@@ -5,7 +5,7 @@
 {% include 'erpnext/public/js/controllers/buying.js' %};
 
 frappe.ui.form.on('Suppier Quotation', {
-	setup: function() {
+	setup: function(frm) {
 		frm.custom_make_buttons = {
 			'Purchase Order': 'Purchase Order'
 		}
diff --git a/erpnext/buying/page/purchase_analytics/purchase_analytics.js b/erpnext/buying/page/purchase_analytics/purchase_analytics.js
index 10d1321..de3d337 100644
--- a/erpnext/buying/page/purchase_analytics/purchase_analytics.js
+++ b/erpnext/buying/page/purchase_analytics/purchase_analytics.js
@@ -10,7 +10,6 @@
 
 	new erpnext.PurchaseAnalytics(wrapper);
 
-
 	frappe.breadcrumbs.add("Buying");
 }
 
@@ -18,7 +17,6 @@
 	init: function(wrapper) {
 		this._super({
 			title: __("Purchase Analytics"),
-			page: wrapper,
 			parent: $(wrapper).find('.layout-main'),
 			page: wrapper.page,
 			doctypes: ["Item", "Item Group", "Supplier", "Supplier Type", "Company", "Fiscal Year",
@@ -193,13 +191,13 @@
 	},
 	prepare_balances: function() {
 		var me = this;
-		var from_date = dateutil.str_to_obj(this.from_date);
-		var to_date = dateutil.str_to_obj(this.to_date);
+		var from_date = frappe.datetime.str_to_obj(this.from_date);
+		var to_date = frappe.datetime.str_to_obj(this.to_date);
 		var is_val = this.value_or_qty == 'Value';
 
 		$.each(this.tl[this.based_on], function(i, tl) {
 			if (me.is_default('company') ? true : tl.company === me.company) {
-				var posting_date = dateutil.str_to_obj(tl.posting_date);
+				var posting_date = frappe.datetime.str_to_obj(tl.posting_date);
 				if (posting_date >= from_date && posting_date <= to_date) {
 					var item = me.item_by_name[tl[me.tree_grid.item_key]] ||
 						me.item_by_name['Not Set'];
diff --git a/erpnext/buying/report/purchase_order_trends/purchase_order_trends.js b/erpnext/buying/report/purchase_order_trends/purchase_order_trends.js
index f7fe90f..83d25d8 100644
--- a/erpnext/buying/report/purchase_order_trends/purchase_order_trends.js
+++ b/erpnext/buying/report/purchase_order_trends/purchase_order_trends.js
@@ -3,6 +3,6 @@
 
 frappe.require("assets/erpnext/js/purchase_trends_filters.js", function() {
 	frappe.query_reports["Purchase Order Trends"] = {
-		filters: get_filters()
+		filters: erpnext.get_purchase_trends_filters()
 	}
 });
\ No newline at end of file
diff --git a/erpnext/buying/report/quoted_item_comparison/quoted_item_comparison.js b/erpnext/buying/report/quoted_item_comparison/quoted_item_comparison.js
index 9b0b243..ad6ea7d 100644
--- a/erpnext/buying/report/quoted_item_comparison/quoted_item_comparison.js
+++ b/erpnext/buying/report/quoted_item_comparison/quoted_item_comparison.js
@@ -3,30 +3,26 @@
 
 frappe.query_reports["Quoted Item Comparison"] = {
 	"filters": [
-	{
-		"fieldname":"supplier_quotation",
-		"label": __("Supplier Quotation"),
-		"fieldtype": "Link",
-		"options": "Supplier Quotation",
-		"default": "",
-		"get_query": function() {
-				return {
-					filters: {"docstatus": ["<",2]}
-				}
+		{
+			"fieldname": "supplier_quotation",
+			"label": __("Supplier Quotation"),
+			"fieldtype": "Link",
+			"options": "Supplier Quotation",
+			"default": "",
+			"get_query": function () {
+				return { filters: { "docstatus": ["<", 2] } }
 			}
-		
-		
-	},{
-		"fieldname":"item",
-		"label": __("Item"),
-		"fieldtype": "Link",
-		"options": "Item",
-		"default": "",
-		"reqd": 1,
-		"get_query": function() {
+		},
+		{
+			"fieldname": "item",
+			"label": __("Item"),
+			"fieldtype": "Link",
+			"options": "Item",
+			"default": "",
+			"reqd": 1,
+			"get_query": function () {
 				var quote = frappe.query_report_filters_by_name.supplier_quotation.get_value();
-				if (quote != "")
-				{
+				if (quote != "") {
 					return {
 						query: "erpnext.buying.doctype.quality_inspection.quality_inspection.item_query",
 						filters: {
@@ -35,79 +31,74 @@
 						}
 					}
 				}
-				else{
-					return{
-						filters: {"disabled":0}
+				else {
+					return {
+						filters: { "disabled": 0 }
 					}
 				}
 			}
-	}
+		}
 	],
-	onload: function(report) {
-		//Create a button for setting the default supplier
-		report.page.add_inner_button(__("Select Default Supplier"), function() {
+	onload: function (report) {
+		// Create a button for setting the default supplier
+		report.page.add_inner_button(__("Select Default Supplier"), function () {
 
 			var reporter = frappe.query_reports["Quoted Item Comparison"];
-			
+
 			//Always make a new one so that the latest values get updated
 			reporter.make_default_supplier_dialog(report);
 			report.dialog.show();
-			setTimeout(function() { report.dialog.input.focus(); }, 1000);
-				
+			setTimeout(function () { report.dialog.input.focus(); }, 1000);
+
 		}, 'Tools');
-		
+
 	},
 	"make_default_supplier_dialog": function (report) {
-		//Get the name of the item to change
+		// Get the name of the item to change
 		var filters = report.get_values();
 		var item_code = filters.item;
-		
-		//Get a list of the suppliers (with a blank as well) for the user to select
+
+		// Get a list of the suppliers (with a blank as well) for the user to select
 		var select_options = "";
-		for (let supplier of report.data)
-		{
-			select_options += supplier.supplier_name+ '\n'
+		for (let supplier of report.data) {
+			select_options += supplier.supplier_name + '\n'
 		}
-		
-		//Create a dialog window for the user to pick their supplier
+
+		// Create a dialog window for the user to pick their supplier
 		var d = new frappe.ui.Dialog({
 			title: __('Select Default Supplier'),
 			fields: [
-			{fieldname: 'supplier', fieldtype:'Select', label:'Supplier', reqd:1,options:select_options},
-			{fieldname: 'ok_button', fieldtype:'Button', label:'Set Default Supplier'},
+				{ fieldname: 'supplier', fieldtype: 'Select', label: 'Supplier', reqd: 1, options: select_options },
+				{ fieldname: 'ok_button', fieldtype: 'Button', label: 'Set Default Supplier' },
 			]
 		});
-		
-		//On the user clicking the ok button
-		d.fields_dict.ok_button.input.onclick = function() {
+
+		// On the user clicking the ok button
+		d.fields_dict.ok_button.input.onclick = function () {
 			var btn = d.fields_dict.ok_button.input;
 			var v = report.dialog.get_values();
-			if(v) {
+			if (v) {
 				$(btn).set_working();
-				
-				//Set the default_supplier field of the appropriate Item to the selected supplier
+
+				// Set the default_supplier field of the appropriate Item to the selected supplier
 				frappe.call({
 					method: "frappe.client.set_value",
 					args: {
-						doctype: "Item", 
+						doctype: "Item",
 						name: item_code,
 						fieldname: "default_supplier",
-						value: v.supplier, 
+						value: v.supplier,
 					},
-					callback: function (r){
+					callback: function (r) {
 						$(btn).done_working();
-						msgprint("Successfully Set Supplier");
+						frappe.msgprint("Successfully Set Supplier");
 						report.dialog.hide();
-
 					}
 				});
 			}
 		}
 		report.dialog = d;
-		
-		
 	}
-	
 }
 
 
diff --git a/erpnext/crm/doctype/lead/lead.js b/erpnext/crm/doctype/lead/lead.js
index 7e22125..36aa186 100644
--- a/erpnext/crm/doctype/lead/lead.js
+++ b/erpnext/crm/doctype/lead/lead.js
@@ -7,34 +7,35 @@
 erpnext.LeadController = frappe.ui.form.Controller.extend({
 	setup: function() {
 		this.frm.fields_dict.customer.get_query = function(doc, cdt, cdn) {
-				return { query: "erpnext.controllers.queries.customer_query" } }
+			return { query: "erpnext.controllers.queries.customer_query" } }
 	},
 
 	onload: function() {
 		if(cur_frm.fields_dict.lead_owner.df.options.match(/^User/)) {
 			cur_frm.fields_dict.lead_owner.get_query = function(doc, cdt, cdn) {
-				return { query:"frappe.core.doctype.user.user.user_query" } }
+				return { query: "frappe.core.doctype.user.user.user_query" }
+			}
 		}
 
 		if(cur_frm.fields_dict.contact_by.df.options.match(/^User/)) {
 			cur_frm.fields_dict.contact_by.get_query = function(doc, cdt, cdn) {
-				return { query:"frappe.core.doctype.user.user.user_query" } }
+				return { query: "frappe.core.doctype.user.user.user_query" } }
 		}
 	},
 
 	refresh: function() {
 		var doc = this.frm.doc;
 		erpnext.toggle_naming_series();
-		frappe.dynamic_link = {doc: this.frm.doc, fieldname: 'name', doctype: 'Lead'}
+		frappe.dynamic_link = {doc: doc, fieldname: 'name', doctype: 'Lead'}
 
-		if(!this.frm.doc.__islocal && this.frm.doc.__onload && !this.frm.doc.__onload.is_customer) {
+		if(!doc.__islocal && doc.__onload && !doc.__onload.is_customer) {
 			this.frm.add_custom_button(__("Customer"), this.create_customer, __("Make"));
 			this.frm.add_custom_button(__("Opportunity"), this.create_opportunity, __("Make"));
 			this.frm.add_custom_button(__("Quotation"), this.make_quotation, __("Make"));
 			cur_frm.page.set_inner_btn_group_as_primary(__("Make"));
 		}
 
-		if(!this.frm.doc.__islocal) {
+		if(!doc.__islocal) {
 			frappe.geo.render_address_and_contact(cur_frm);
 		} else {
 			frappe.geo.clear_address_and_contact(cur_frm);
diff --git a/erpnext/crm/doctype/opportunity/opportunity.js b/erpnext/crm/doctype/opportunity/opportunity.js
index 974b23e..d25c87b 100644
--- a/erpnext/crm/doctype/opportunity/opportunity.js
+++ b/erpnext/crm/doctype/opportunity/opportunity.js
@@ -107,7 +107,8 @@
 
 		$.each([["lead", "lead"],
 			["customer", "customer"],
-			["contact_person", "contact_query"]], function(i, opts) {
+			["contact_person", "contact_query"]],
+			function(i, opts) {
 				me.frm.set_query(opts[0], erpnext.queries[opts[1]]);
 			});
 	},
@@ -157,7 +158,7 @@
 					$.each(r.message, function(k, v) {
 						frappe.model.set_value(cdt, cdn, k, v);
 					});
-				refresh_field('image_view', d.name, 'items');
+					refresh_field('image_view', d.name, 'items');
 				}
 			}
 		})
@@ -184,7 +185,7 @@
 	});
 
 	dialog.fields_dict.update.$input.click(function() {
-		args = dialog.get_values();
+		var args = dialog.get_values();
 		if(!args) return;
 		return cur_frm.call({
 			doc: cur_frm.doc,
@@ -192,7 +193,7 @@
 			args: args.reason,
 			callback: function(r) {
 				if(r.exc) {
-					msgprint(__("There were errors."));
+					frappe.msgprint(__("There were errors."));
 				} else {
 					dialog.hide();
 					cur_frm.refresh();
diff --git a/erpnext/crm/report/campaign_efficiency/campaign_efficiency.js b/erpnext/crm/report/campaign_efficiency/campaign_efficiency.js
index 2b25f1d..0bc77a3 100644
--- a/erpnext/crm/report/campaign_efficiency/campaign_efficiency.js
+++ b/erpnext/crm/report/campaign_efficiency/campaign_efficiency.js
@@ -1,19 +1,19 @@
 // Copyright (c) 2016, Frappe Technologies Pvt. Ltd. and contributors
 // For license information, please see license.txt
 frappe.query_reports["Campaign Efficiency"] = {
-		"filters": [
-			{
-				"fieldname": "from_date",
-				"label": __("From Date"),
-				"fieldtype": "Date",
-				"default": frappe.defaults.get_user_default("year_start_date"),
-			},
-			{
-				"fieldname": "to_date",
-				"label": __("To Date"),
-				"fieldtype": "Date",
-				"default": frappe.defaults.get_user_default("year_end_date"),
-			}
-		]
-	};
+	"filters": [
+		{
+			"fieldname": "from_date",
+			"label": __("From Date"),
+			"fieldtype": "Date",
+			"default": frappe.defaults.get_user_default("year_start_date"),
+		},
+		{
+			"fieldname": "to_date",
+			"label": __("To Date"),
+			"fieldtype": "Date",
+			"default": frappe.defaults.get_user_default("year_end_date"),
+		}
+	]
+};
 
diff --git a/erpnext/crm/report/minutes_to_first_response_for_opportunity/minutes_to_first_response_for_opportunity.js b/erpnext/crm/report/minutes_to_first_response_for_opportunity/minutes_to_first_response_for_opportunity.js
index b1e4917..d9c4c8b 100644
--- a/erpnext/crm/report/minutes_to_first_response_for_opportunity/minutes_to_first_response_for_opportunity.js
+++ b/erpnext/crm/report/minutes_to_first_response_for_opportunity/minutes_to_first_response_for_opportunity.js
@@ -2,40 +2,40 @@
 // For license information, please see license.txt
 
 frappe.query_reports["Minutes to First Response for Opportunity"] = {
-    "filters": [
-        {
-            "fieldname":"from_date",
-            "label": __("From Date"),
-            "fieldtype": "Date",
+	"filters": [
+		{
+			"fieldname": "from_date",
+			"label": __("From Date"),
+			"fieldtype": "Date",
 			'reqd': 1,
-            "default": frappe.datetime.add_days(frappe.datetime.nowdate(), -30)
-        },
-        {
-            "fieldname":"to_date",
-            "label": __("To Date"),
-            "fieldtype": "Date",
+			"default": frappe.datetime.add_days(frappe.datetime.nowdate(), -30)
+		},
+		{
+			"fieldname": "to_date",
+			"label": __("To Date"),
+			"fieldtype": "Date",
 			'reqd': 1,
-            "default":frappe.datetime.nowdate()
-        },
-    ],
-	get_chart_data: function(columns, result) {
+			"default": frappe.datetime.nowdate()
+		},
+	],
+	get_chart_data: function (columns, result) {
 		return {
 			data: {
 				x: 'Date',
 				columns: [
-					['Date'].concat($.map(result, function(d) { return d[0]; })),
-					['Mins to first response'].concat($.map(result, function(d) { return d[1]; }))
+					['Date'].concat($.map(result, function (d) { return d[0]; })),
+					['Mins to first response'].concat($.map(result, function (d) { return d[1]; }))
 				]
 				// rows: [['Date', 'Mins to first response']].concat(result)
 			},
-		    axis: {
-		        x: {
-		            type: 'timeseries',
-		            tick: {
-		                format: frappe.ui.py_date_format
-		            }
-		        }
-		    },
+			axis: {
+				x: {
+					type: 'timeseries',
+					tick: {
+						format: frappe.ui.py_date_format
+					}
+				}
+			},
 			chart_type: 'line',
 
 		}
diff --git a/erpnext/hr/doctype/appraisal/appraisal.js b/erpnext/hr/doctype/appraisal/appraisal.js
index 728e5c2..64d6f40 100644
--- a/erpnext/hr/doctype/appraisal/appraisal.js
+++ b/erpnext/hr/doctype/appraisal/appraisal.js
@@ -46,11 +46,11 @@
 	var d = locals[cdt][cdn];
 	if (d.score){
 		if (flt(d.score) > 5) {
-			msgprint(__("Score must be less than or equal to 5"));
+			frappe.msgprint(__("Score must be less than or equal to 5"));
 			d.score = 0;
 			refresh_field('score', d.name, 'goals');
 		}
-		total = flt(d.per_weightage*d.score)/100;
+		var total = flt(d.per_weightage*d.score)/100;
 		d.score_earned = total.toPrecision(2);
 		refresh_field('score_earned', d.name, 'goals');
 	}
diff --git a/erpnext/hr/doctype/attendance/attendance.js b/erpnext/hr/doctype/attendance/attendance.js
index 7f2b18f..c3c3cb8 100644
--- a/erpnext/hr/doctype/attendance/attendance.js
+++ b/erpnext/hr/doctype/attendance/attendance.js
@@ -5,7 +5,7 @@
 cur_frm.add_fetch('employee', 'employee_name', 'employee_name');
 
 cur_frm.cscript.onload = function(doc, cdt, cdn) {
-	if(doc.__islocal) cur_frm.set_value("attendance_date", get_today());
+	if(doc.__islocal) cur_frm.set_value("attendance_date", frappe.datetime.get_today());
 }
 
 cur_frm.fields_dict.employee.get_query = function(doc,cdt,cdn) {
diff --git a/erpnext/hr/doctype/employee_attendance_tool/employee_attendance_tool.js b/erpnext/hr/doctype/employee_attendance_tool/employee_attendance_tool.js
index c0c0ef0..376d0c0 100644
--- a/erpnext/hr/doctype/employee_attendance_tool/employee_attendance_tool.js
+++ b/erpnext/hr/doctype/employee_attendance_tool/employee_attendance_tool.js
@@ -5,7 +5,7 @@
 	
 	onload: function(frm) {
 		frm.doc.department = frm.doc.branch = frm.doc.company = "All";
-		frm.set_value("date", get_today());
+		frm.set_value("date", frappe.datetime.get_today());
 		erpnext.employee_attendance_tool.load_employees(frm);
 	},
 
diff --git a/erpnext/hr/doctype/employee_loan/employee_loan.js b/erpnext/hr/doctype/employee_loan/employee_loan.js
index 71b6356..9720bcb 100644
--- a/erpnext/hr/doctype/employee_loan/employee_loan.js
+++ b/erpnext/hr/doctype/employee_loan/employee_loan.js
@@ -2,8 +2,8 @@
 // For license information, please see license.txt
 
 frappe.ui.form.on('Employee Loan', {
-	onload: function(frm) {
-		frm.set_query("employee_loan_application", function() {
+	onload: function (frm) {
+		frm.set_query("employee_loan_application", function () {
 			return {
 				"filters": {
 					"employee": frm.doc.employee,
@@ -12,19 +12,19 @@
 				}
 			};
 		});
-		
-		frm.set_query("interest_income_account", function() {
+
+		frm.set_query("interest_income_account", function () {
 			return {
 				"filters": {
-						"company": frm.doc.company,
-						"root_type": "Income",
-						"is_group": 0
+					"company": frm.doc.company,
+					"root_type": "Income",
+					"is_group": 0
 				}
 			};
 		});
 
-		$.each(["payment_account", "employee_loan_account"], function(i, field) {
-			frm.set_query(field, function() {
+		$.each(["payment_account", "employee_loan_account"], function (i, field) {
+			frm.set_query(field, function () {
 				return {
 					"filters": {
 						"company": frm.doc.company,
@@ -36,16 +36,16 @@
 		})
 	},
 
-	refresh: function(frm) {
+	refresh: function (frm) {
 		if (frm.doc.docstatus == 1 && (frm.doc.status == "Sanctioned" || frm.doc.status == "Partially Disbursed")) {
-			frm.add_custom_button(__('Make Disbursement Entry'), function() {
+			frm.add_custom_button(__('Make Disbursement Entry'), function () {
 				frm.trigger("make_jv");
 			})
 		}
 		frm.trigger("toggle_fields");
 	},
 
-	make_jv: function(frm) {
+	make_jv: function (frm) {
 		frappe.call({
 			args: {
 				"employee_loan": frm.doc.name,
@@ -56,36 +56,36 @@
 				"payment_account": frm.doc.payment_account
 			},
 			method: "erpnext.hr.doctype.employee_loan.employee_loan.make_jv_entry",
-			callback: function(r) {
+			callback: function (r) {
 				if (r.message)
 					var doc = frappe.model.sync(r.message)[0];
-					frappe.set_route("Form", doc.doctype, doc.name);
+				frappe.set_route("Form", doc.doctype, doc.name);
 			}
 		})
 	},
-	mode_of_payment: function(frm) {
+	mode_of_payment: function (frm) {
 		frappe.call({
 			method: "erpnext.accounts.doctype.sales_invoice.sales_invoice.get_bank_cash_account",
 			args: {
 				"mode_of_payment": frm.doc.mode_of_payment,
 				"company": frm.doc.company
 			},
-			callback: function(r, rt) {
-				if(r.message) {
+			callback: function (r, rt) {
+				if (r.message) {
 					frm.set_value("payment_account", r.message.account);
 				}
 			}
 		});
 	},
 
-	employee_loan_application: function(frm) {
+	employee_loan_application: function (frm) {
 		return frappe.call({
 			method: "erpnext.hr.doctype.employee_loan.employee_loan.get_employee_loan_application",
 			args: {
 				"employee_loan_application": frm.doc.employee_loan_application
 			},
-			callback: function(r){
-				if(!r.exc && r.message) {
+			callback: function (r) {
+				if (!r.exc && r.message) {
 					frm.set_value("loan_type", r.message.loan_type);
 					frm.set_value("loan_amount", r.message.loan_amount);
 					frm.set_value("repayment_method", r.message.repayment_method);
@@ -97,12 +97,12 @@
 		})
 	},
 
-	repayment_method: function(frm) {
+	repayment_method: function (frm) {
 		frm.trigger("toggle_fields")
 	},
 
-	toggle_fields: function(frm) {
-		frm.toggle_enable("monthly_repayment_amount", frm.doc.repayment_method=="Repay Fixed Amount per Period")
-		frm.toggle_enable("repayment_periods", frm.doc.repayment_method=="Repay Over Number of Periods")
+	toggle_fields: function (frm) {
+		frm.toggle_enable("monthly_repayment_amount", frm.doc.repayment_method == "Repay Fixed Amount per Period")
+		frm.toggle_enable("repayment_periods", frm.doc.repayment_method == "Repay Over Number of Periods")
 	}
 });
diff --git a/erpnext/hr/doctype/expense_claim/expense_claim.js b/erpnext/hr/doctype/expense_claim/expense_claim.js
index 95877cf..4ce91c4 100644
--- a/erpnext/hr/doctype/expense_claim/expense_claim.js
+++ b/erpnext/hr/doctype/expense_claim/expense_claim.js
@@ -52,7 +52,7 @@
 		cur_frm.set_value("approval_status", "Draft")
 
 	if (doc.__islocal) {
-		cur_frm.set_value("posting_date", dateutil.get_today());
+		cur_frm.set_value("posting_date", frappe.datetime.get_today());
 		if(doc.amended_from)
 			cur_frm.set_value("approval_status", "Draft");
 		cur_frm.cscript.clear_sanctioned(doc);
@@ -81,15 +81,15 @@
 	refresh_many(['sanctioned_amount', 'total_sanctioned_amount']);
 }
 
-cur_frm.cscript.refresh = function(doc,cdt,cdn){
+cur_frm.cscript.refresh = function(doc,cdt,cdn) {
 	cur_frm.cscript.set_help(doc);
 
 	if(!doc.__islocal) {
 		cur_frm.toggle_enable("exp_approver", doc.approval_status=="Draft");
-		cur_frm.toggle_enable("approval_status", (doc.exp_approver==user && doc.docstatus==0));
+		cur_frm.toggle_enable("approval_status", (doc.exp_approver==frappe.session.user && doc.docstatus==0));
 
-		if (doc.docstatus==0 && doc.exp_approver==user && doc.approval_status=="Approved")
-			 cur_frm.savesubmit();
+		if (doc.docstatus==0 && doc.exp_approver==frappe.session.user && doc.approval_status=="Approved")
+			cur_frm.savesubmit();
 
 		if (doc.docstatus===1 && doc.approval_status=="Approved") {
 			if (cint(doc.total_amount_reimbursed) < cint(doc.total_sanctioned_amount) && frappe.model.can_create("Journal Entry")) {
@@ -97,6 +97,8 @@
 				cur_frm.page.set_inner_btn_group_as_primary(__("Make"));
 			}
 
+			/* eslint-disable */
+			// no idea how `me` works here 
 			if (cint(doc.total_amount_reimbursed) > 0 && frappe.model.can_read("Journal Entry")) {
 				cur_frm.add_custom_button(__('Bank Entries'), function() {
 					frappe.route_options = {
@@ -107,17 +109,18 @@
 					frappe.set_route("List", "Journal Entry");
 				}, __("View"));
 			}
+			/* eslint-enable */
 		}
 	}
 }
 
 cur_frm.cscript.set_help = function(doc) {
 	cur_frm.set_intro("");
-	if(doc.__islocal && !in_list(roles, "HR User")) {
+	if(doc.__islocal && !in_list(frappe.user_roles, "HR User")) {
 		cur_frm.set_intro(__("Fill the form and save it"))
 	} else {
 		if(doc.docstatus==0 && doc.approval_status=="Draft") {
-			if(user==doc.exp_approver) {
+			if(frappe.session.user==doc.exp_approver) {
 				cur_frm.set_intro(__("You are the Expense Approver for this record. Please Update the 'Status' and Save"));
 			} else {
 				cur_frm.set_intro(__("Expense Claim is pending approval. Only the Expense Approver can update status."));
diff --git a/erpnext/hr/doctype/leave_allocation/leave_allocation.js b/erpnext/hr/doctype/leave_allocation/leave_allocation.js
index b7e1f45..4b4bfaf 100755
--- a/erpnext/hr/doctype/leave_allocation/leave_allocation.js
+++ b/erpnext/hr/doctype/leave_allocation/leave_allocation.js
@@ -5,7 +5,7 @@
 
 frappe.ui.form.on("Leave Allocation", {
 	onload: function(frm) {
-		if(!frm.doc.from_date) frm.set_value("from_date", get_today());
+		if(!frm.doc.from_date) frm.set_value("from_date", frappe.datetime.get_today());
 
 		frm.set_query("employee", function() {
 			return {
diff --git a/erpnext/hr/doctype/leave_application/leave_application.js b/erpnext/hr/doctype/leave_application/leave_application.js
index 3bf41bb..2eb155d 100755
--- a/erpnext/hr/doctype/leave_application/leave_application.js
+++ b/erpnext/hr/doctype/leave_application/leave_application.js
@@ -7,7 +7,7 @@
 frappe.ui.form.on("Leave Application", {
 	onload: function(frm) {
 		if (!frm.doc.posting_date) {
-			frm.set_value("posting_date", get_today());
+			frm.set_value("posting_date", frappe.datetime.get_today());
 		}
 
 		frm.set_query("leave_approver", function() {
@@ -76,9 +76,9 @@
 		frm.set_value('half_day_date', '');
 		var half_day_datepicker = frm.fields_dict.half_day_date.datepicker;
 		half_day_datepicker.update({
-				minDate: frappe.datetime.str_to_obj(frm.doc.from_date),
-				maxDate: frappe.datetime.str_to_obj(frm.doc.to_date)
-			})
+			minDate: frappe.datetime.str_to_obj(frm.doc.from_date),
+			maxDate: frappe.datetime.str_to_obj(frm.doc.to_date)
+		})
 	},
 
 	get_leave_balance: function(frm) {
diff --git a/erpnext/hr/doctype/leave_control_panel/leave_control_panel.js b/erpnext/hr/doctype/leave_control_panel/leave_control_panel.js
index 3720f2f..0eb6414 100644
--- a/erpnext/hr/doctype/leave_control_panel/leave_control_panel.js
+++ b/erpnext/hr/doctype/leave_control_panel/leave_control_panel.js
@@ -1,19 +1,19 @@
 // Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors
 // License: GNU General Public License v3. See license.txt
 
-cur_frm.cscript.onload = function(doc, dt, dn){
-	if(!doc.posting_date)
-		set_multiple(dt, dn, {posting_date: get_today()});
-	if(!doc.leave_transaction_type)
-		set_multiple(dt, dn, {leave_transaction_type: 'Allocation'});
+cur_frm.cscript.onload = function (doc, dt, dn) {
+	if (!doc.posting_date)
+		set_multiple(dt, dn, { posting_date: frappe.datetime.get_today() });
+	if (!doc.leave_transaction_type)
+		set_multiple(dt, dn, { leave_transaction_type: 'Allocation' });
 }
 
-cur_frm.cscript.to_date = function(doc, cdt, cdn) {
-	return $c('runserverobj', args={'method':'to_date_validation','docs':doc},
-		function(r, rt) {
+cur_frm.cscript.to_date = function (doc, cdt, cdn) {
+	return $c('runserverobj', { 'method': 'to_date_validation', 'docs': doc },
+		function (r, rt) {
 			var doc = locals[cdt][cdn];
 			if (r.message) {
-				msgprint(__("To date cannot be before from date"));
+				frappe.msgprint(__("To date cannot be before from date"));
 				doc.to_date = '';
 				refresh_field('to_date');
 			}
@@ -21,11 +21,11 @@
 	);
 }
 
-cur_frm.cscript.allocation_type = function (doc, cdt, cdn){
+cur_frm.cscript.allocation_type = function (doc, cdt, cdn) {
 	doc.no_of_days = '';
 	refresh_field('no_of_days');
 }
 
-frappe.ui.form.on("Leave Control Panel", "refresh", function(frm) {
+frappe.ui.form.on("Leave Control Panel", "refresh", function (frm) {
 	frm.disable_save();
 });
\ No newline at end of file
diff --git a/erpnext/hr/doctype/offer_letter/offer_letter.js b/erpnext/hr/doctype/offer_letter/offer_letter.js
index 125a425..c0d397b 100755
--- a/erpnext/hr/doctype/offer_letter/offer_letter.js
+++ b/erpnext/hr/doctype/offer_letter/offer_letter.js
@@ -4,18 +4,18 @@
 frappe.provide("erpnext.offer_letter");
 
 frappe.ui.form.on("Offer Letter", {
-	select_terms: function(frm) {
-		erpnext.utils.get_terms(frm.doc.select_terms, frm.doc, function(r) {
-			if(!r.exc) {
-				me.frm.set_value("terms", r.message);
+	select_terms: function (frm) {
+		erpnext.utils.get_terms(frm.doc.select_terms, frm.doc, function (r) {
+			if (!r.exc) {
+				frm.set_value("terms", r.message);
 			}
 		});
 	},
 
-	refresh:function(frm){
-		if((!frm.doc.__islocal) && (frm.doc.status=='Accepted') && (frm.doc.docstatus===1)){
+	refresh: function (frm) {
+		if ((!frm.doc.__islocal) && (frm.doc.status == 'Accepted') && (frm.doc.docstatus === 1)) {
 			frm.add_custom_button(__('Make Employee'),
-				function() {
+				function () {
 					erpnext.offer_letter.make_employee(frm)
 				}
 			);
@@ -24,7 +24,7 @@
 
 });
 
-erpnext.offer_letter.make_employee = function(frm) {
+erpnext.offer_letter.make_employee = function (frm) {
 	frappe.model.open_mapped_doc({
 		method: "erpnext.hr.doctype.offer_letter.offer_letter.make_employee",
 		frm: frm
diff --git a/erpnext/hr/doctype/process_payroll/process_payroll.js b/erpnext/hr/doctype/process_payroll/process_payroll.js
index e1bea62..0ec7f70 100644
--- a/erpnext/hr/doctype/process_payroll/process_payroll.js
+++ b/erpnext/hr/doctype/process_payroll/process_payroll.js
@@ -2,7 +2,7 @@
 // License: GNU General Public License v3. See license.txt
 
 frappe.ui.form.on("Process Payroll", {
-	onload: function(frm) {
+	onload: function (frm) {
 		frm.doc.posting_date = frappe.datetime.nowdate();
 		frm.doc.start_date = '';
 		frm.doc.end_date = '';
@@ -10,8 +10,8 @@
 		frm.toggle_reqd(['payroll_frequency'], !frm.doc.salary_slip_based_on_timesheet);
 	},
 
-	setup: function(frm) {
-		frm.set_query("payment_account", function() {
+	setup: function (frm) {
+		frm.set_query("payment_account", function () {
 			var account_types = ["Bank", "Cash"];
 			return {
 				filters: {
@@ -21,57 +21,57 @@
 				}
 			}
 		}),
-		frm.set_query("cost_center", function() {
-			return {
-				filters: {
-					"is_group": 0,
-					company: frm.doc.company
+			frm.set_query("cost_center", function () {
+				return {
+					filters: {
+						"is_group": 0,
+						company: frm.doc.company
+					}
 				}
-			}
-		}),
-		frm.set_query("project", function() {
-			return {
-				filters: {
-					company: frm.doc.company
+			}),
+			frm.set_query("project", function () {
+				return {
+					filters: {
+						company: frm.doc.company
+					}
 				}
-			}
-		})
+			})
 	},
 
-	refresh: function(frm) {
+	refresh: function (frm) {
 		frm.disable_save();
 	},
 
-	payroll_frequency: function(frm) {
+	payroll_frequency: function (frm) {
 		frm.trigger("set_start_end_dates");
 	},
 
-	start_date: function(frm) {
+	start_date: function (frm) {
 		frm.trigger("set_start_end_dates");
 	},
 
-	end_date: function(frm) {
+	end_date: function (frm) {
 		frm.trigger("set_start_end_dates");
 	},
 
-	salary_slip_based_on_timesheet: function(frm) {
+	salary_slip_based_on_timesheet: function (frm) {
 		frm.toggle_reqd(['payroll_frequency'], !frm.doc.salary_slip_based_on_timesheet);
 	},
 
-	payment_account: function(frm) {
-		frm.toggle_display(['make_bank_entry'], (frm.doc.payment_account!="" && frm.doc.payment_account!="undefined"));
+	payment_account: function (frm) {
+		frm.toggle_display(['make_bank_entry'], (frm.doc.payment_account != "" && frm.doc.payment_account != "undefined"));
 	},
 
-	set_start_end_dates: function(frm) {
-		if (!frm.doc.salary_slip_based_on_timesheet){
+	set_start_end_dates: function (frm) {
+		if (!frm.doc.salary_slip_based_on_timesheet) {
 			frappe.call({
-				method:'erpnext.hr.doctype.process_payroll.process_payroll.get_start_end_dates',
-				args:{
+				method: 'erpnext.hr.doctype.process_payroll.process_payroll.get_start_end_dates',
+				args: {
 					payroll_frequency: frm.doc.payroll_frequency,
 					start_date: frm.doc.start_date || frm.doc.posting_date
 				},
-				callback: function(r){
-					if (r.message){
+				callback: function (r) {
+					if (r.message) {
 						frm.set_value('start_date', r.message.start_date);
 						frm.set_value('end_date', r.message.end_date);
 					}
@@ -81,60 +81,60 @@
 	},
 })
 
-cur_frm.cscript.display_activity_log = function(msg) {
-	if(!cur_frm.ss_html)
-		cur_frm.ss_html = $a(cur_frm.fields_dict['activity_log'].wrapper,'div');
-	if(msg) {
+cur_frm.cscript.display_activity_log = function (msg) {
+	if (!cur_frm.ss_html)
+		cur_frm.ss_html = $a(cur_frm.fields_dict['activity_log'].wrapper, 'div');
+	if (msg) {
 		cur_frm.ss_html.innerHTML =
-			'<div class="padding"><h4>'+__("Activity Log:")+'</h4>'+msg+'</div>';
+			'<div class="padding"><h4>' + __("Activity Log:") + '</h4>' + msg + '</div>';
 	} else {
 		cur_frm.ss_html.innerHTML = "";
 	}
 }
 
-//Create salary slip
-//-----------------------
-cur_frm.cscript.create_salary_slip = function(doc, cdt, cdn) {
+// Create salary slip
+// -----------------------
+cur_frm.cscript.create_salary_slip = function (doc, cdt, cdn) {
 	cur_frm.cscript.display_activity_log("");
-	var callback = function(r, rt){
+	var callback = function (r, rt) {
 		if (r.message)
 			cur_frm.cscript.display_activity_log(r.message);
 	}
-	return $c('runserverobj', args={'method':'create_salary_slips','docs':doc},callback);
+	return $c('runserverobj', { 'method': 'create_salary_slips', 'docs': doc }, callback);
 }
 
-cur_frm.cscript.submit_salary_slip = function(doc, cdt, cdn) {
+cur_frm.cscript.submit_salary_slip = function (doc, cdt, cdn) {
 	cur_frm.cscript.display_activity_log("");
 
-	frappe.confirm(__("Do you really want to Submit all Salary Slip from {0} to {1}", [doc.start_date, doc.end_date]), function() {
+	frappe.confirm(__("Do you really want to Submit all Salary Slip from {0} to {1}", [doc.start_date, doc.end_date]), function () {
 		// clear all in locals
-		if(locals["Salary Slip"]) {
-			$.each(locals["Salary Slip"], function(name, d) {
+		if (locals["Salary Slip"]) {
+			$.each(locals["Salary Slip"], function (name, d) {
 				frappe.model.remove_from_locals("Salary Slip", name);
 			});
 		}
 
-		var callback = function(r, rt){
+		var callback = function (r, rt) {
 			if (r.message)
 				cur_frm.cscript.display_activity_log(r.message);
 		}
 
-		return $c('runserverobj', args={'method':'submit_salary_slips','docs':doc},callback);
+		return $c('runserverobj', { 'method': 'submit_salary_slips', 'docs': doc }, callback);
 	});
 }
 
-cur_frm.cscript.make_bank_entry = function(doc, cdt, cdn){
-    if(doc.company && doc.start_date && doc.end_date){
+cur_frm.cscript.make_bank_entry = function (doc, cdt, cdn) {
+	if (doc.company && doc.start_date && doc.end_date) {
 		return frappe.call({
 			doc: cur_frm.doc,
 			method: "make_payment_entry",
-			callback: function(r) {
+			callback: function (r) {
 				if (r.message)
 					var doc = frappe.model.sync(r.message)[0];
-					frappe.set_route("Form", doc.doctype, doc.name);
+				frappe.set_route("Form", doc.doctype, doc.name);
 			}
 		});
-    } else {
-  	  msgprint(__("Company, From Date and To Date is mandatory"));
-    }
+	} else {
+		frappe.msgprint(__("Company, From Date and To Date is mandatory"));
+	}
 }
\ No newline at end of file
diff --git a/erpnext/hr/doctype/salary_slip/salary_slip.js b/erpnext/hr/doctype/salary_slip/salary_slip.js
index 09c5337..a96347a 100644
--- a/erpnext/hr/doctype/salary_slip/salary_slip.js
+++ b/erpnext/hr/doctype/salary_slip/salary_slip.js
@@ -39,7 +39,7 @@
 	refresh: function(frm) {
 		frm.trigger("toggle_fields")
 		frm.trigger("toggle_reqd_fields")
-		salary_detail_fields = ['formula', 'abbr', 'statistical_component']
+		var salary_detail_fields = ['formula', 'abbr', 'statistical_component']
 		cur_frm.fields_dict['earnings'].grid.set_column_disp(salary_detail_fields,false);
 		cur_frm.fields_dict['deductions'].grid.set_column_disp(salary_detail_fields,false);
 	},	
diff --git a/erpnext/hr/doctype/salary_structure/salary_structure.js b/erpnext/hr/doctype/salary_structure/salary_structure.js
index 0bc67a7..68c5f25 100755
--- a/erpnext/hr/doctype/salary_structure/salary_structure.js
+++ b/erpnext/hr/doctype/salary_structure/salary_structure.js
@@ -7,8 +7,8 @@
 
 
 cur_frm.cscript.onload = function(doc, dt, dn){
-	e_tbl = doc.earnings || [];
-	d_tbl = doc.deductions || [];
+	var e_tbl = doc.earnings || [];
+	var d_tbl = doc.deductions || [];
 	if (e_tbl.length == 0 && d_tbl.length == 0)
 		return function(r, rt) { refresh_many(['earnings', 'deductions']);};
 }
@@ -16,7 +16,7 @@
 frappe.ui.form.on('Salary Structure', {
 	onload: function(frm) {
 		frm.toggle_reqd(['payroll_frequency'], !frm.doc.salary_slip_based_on_timesheet),
-		
+
 		frm.set_query("salary_component", "earnings", function() {
 			return {
 				filters: {
@@ -40,19 +40,19 @@
 			}
 		});
 	},
-	
+
 	refresh: function(frm) {
 		frm.trigger("toggle_fields");
 		frm.fields_dict['earnings'].grid.set_column_disp("default_amount", false);
 		frm.fields_dict['deductions'].grid.set_column_disp("default_amount", false);
-		
+
 		frm.add_custom_button(__("Preview Salary Slip"),
 			function() { frm.trigger('preview_salary_slip'); }, "fa fa-sitemap", "btn-default");
 
 		frm.add_custom_button(__("Add Employees"),function () {
 			frm.trigger('add_employees')
 		})
-		
+
 	},
 
 	add_employees:function (frm) {
@@ -108,21 +108,24 @@
 	salary_slip_based_on_timesheet: function(frm) {
 		frm.trigger("toggle_fields")
 	},
-	
+
 	preview_salary_slip: function(frm) {
 		var d = new frappe.ui.Dialog({
 			title: __("Preview Salary Slip"),
 			fields: [
-				{"fieldname":"employee", "fieldtype":"Select", "label":__("Employee"),
-				options: $.map(frm.doc.employees, function(d) { return d.employee }), reqd: 1, label:"Employee"},
-				{fieldname:"fetch", "label":__("Show Salary Slip"), "fieldtype":"Button"}
+				{	"fieldname":"employee", "fieldtype":"Select", "label":__("Employee"),
+					options: $.map(frm.doc.employees, function(d) { return d.employee }), reqd: 1 },
+				{	fieldname:"fetch", "label":__("Show Salary Slip"), "fieldtype":"Button"}
 			]
 		});
 		d.get_input("fetch").on("click", function() {
 			var values = d.get_values();
 			if(!values) return;
-			frm.doc.salary_slip_based_on_timesheet?print_format="Salary Slip based on Timesheet":print_format="Salary Slip Standard";
-				
+			var print_format;
+			frm.doc.salary_slip_based_on_timesheet ?
+				print_format="Salary Slip based on Timesheet" :
+				print_format="Salary Slip Standard";
+
 			frappe.call({
 				method: "erpnext.hr.doctype.salary_structure.salary_structure.make_salary_slip",
 				args: {
@@ -140,7 +143,7 @@
 		});
 		d.show();
 	},
-	
+
 	toggle_fields: function(frm) {
 		frm.toggle_display(['salary_component', 'hour_rate'], frm.doc.salary_slip_based_on_timesheet);
 		frm.toggle_reqd(['salary_component', 'hour_rate'], frm.doc.salary_slip_based_on_timesheet);
@@ -184,11 +187,11 @@
 	amount: function(frm) {
 		calculate_totals(frm.doc);
 	},
-	
+
 	earnings_remove: function(frm) {
 		calculate_totals(frm.doc);
-	}, 
-	
+	},
+
 	deductions_remove: function(frm) {
 		calculate_totals(frm.doc);
 	}
diff --git a/erpnext/hr/doctype/upload_attendance/upload_attendance.js b/erpnext/hr/doctype/upload_attendance/upload_attendance.js
index c49720c..f639898 100644
--- a/erpnext/hr/doctype/upload_attendance/upload_attendance.js
+++ b/erpnext/hr/doctype/upload_attendance/upload_attendance.js
@@ -7,8 +7,8 @@
 
 erpnext.hr.AttendanceControlPanel = frappe.ui.form.Controller.extend({
 	onload: function() {
-		this.frm.set_value("att_fr_date", get_today());
-		this.frm.set_value("att_to_date", get_today());
+		this.frm.set_value("att_fr_date", frappe.datetime.get_today());
+		this.frm.set_value("att_to_date", frappe.datetime.get_today());
 	},
 
 	refresh: function() {
@@ -18,7 +18,7 @@
 
 	get_template:function() {
 		if(!this.frm.doc.att_fr_date || !this.frm.doc.att_to_date) {
-			msgprint(__("Attendance From Date and Attendance To Date is mandatory"));
+			frappe.msgprint(__("Attendance From Date and Attendance To Date is mandatory"));
 			return;
 		}
 		window.location.href = repl(frappe.request.url +
diff --git a/erpnext/hr/doctype/vehicle_log/vehicle_log.js b/erpnext/hr/doctype/vehicle_log/vehicle_log.js
index 818a595..e8c6b7e 100644
--- a/erpnext/hr/doctype/vehicle_log/vehicle_log.js
+++ b/erpnext/hr/doctype/vehicle_log/vehicle_log.js
@@ -3,7 +3,7 @@
 
 frappe.ui.form.on("Vehicle Log", {
 	refresh: function(frm,cdt,cdn) {
-		vehicle_log=frappe.model.get_doc(cdt,cdn);
+		var vehicle_log=frappe.model.get_doc(cdt,cdn);
 		if (vehicle_log.license_plate) {
 			frappe.call({
 				method: "erpnext.hr.doctype.vehicle_log.vehicle_log.get_make_model",
@@ -26,16 +26,16 @@
 	},
 
 	expense_claim: function(frm){
-			frappe.call({
-				method: "erpnext.hr.doctype.vehicle_log.vehicle_log.make_expense_claim",
-				args:{
-					docname: frm.doc.name
-				},
-				callback: function(r){
-					var doc = frappe.model.sync(r.message);
-					frappe.set_route('Form', 'Expense Claim', r.message.name);
-					}
-			})
+		frappe.call({
+			method: "erpnext.hr.doctype.vehicle_log.vehicle_log.make_expense_claim",
+			args:{
+				docname: frm.doc.name
+			},
+			callback: function(r){
+				var doc = frappe.model.sync(r.message);
+				frappe.set_route('Form', 'Expense Claim', r.message.name);
+			}
+		});
 	}
 });
 
diff --git a/erpnext/hr/page/team_updates/team_updates.js b/erpnext/hr/page/team_updates/team_updates.js
index e701b5f..d6dd1f4 100644
--- a/erpnext/hr/page/team_updates/team_updates.js
+++ b/erpnext/hr/page/team_updates/team_updates.js
@@ -54,17 +54,18 @@
 		data.avatar = frappe.avatar(data.sender);
 		data.when = comment_when(data.creation);
 
-		var date = dateutil.str_to_obj(data.creation);
+		var date = frappe.datetime.str_to_obj(data.creation);
 		var last = me.last_feed_date;
 
-		if((last && dateutil.obj_to_str(last) != dateutil.obj_to_str(date)) || (!last)) {
-			var diff = dateutil.get_day_diff(dateutil.get_today(), dateutil.obj_to_str(date));
+		if((last && frappe.datetime.obj_to_str(last) != frappe.datetime.obj_to_str(date)) || (!last)) {
+			var diff = frappe.datetime.get_day_diff(frappe.datetime.get_today(), frappe.datetime.obj_to_str(date));
+			var pdate;
 			if(diff < 1) {
 				pdate = 'Today';
 			} else if(diff < 2) {
 				pdate = 'Yesterday';
 			} else {
-				pdate = dateutil.global_date_format(date);
+				pdate = frappe.datetime.global_date_format(date);
 			}
 			data.date_sep = pdate;
 			data.date_class = pdate=='Today' ? "date-indicator blue" : "date-indicator";
diff --git a/erpnext/hr/report/salary_register/salary_register.js b/erpnext/hr/report/salary_register/salary_register.js
index 8b0faf5..794dcb5 100644
--- a/erpnext/hr/report/salary_register/salary_register.js
+++ b/erpnext/hr/report/salary_register/salary_register.js
@@ -7,7 +7,7 @@
 			"fieldname":"date_range",
 			"label": __("Date Range"),
 			"fieldtype": "DateRange",
-			"default": [frappe.datetime.add_months(get_today(),-1), frappe.datetime.get_today()],
+			"default": [frappe.datetime.add_months(frappe.datetime.get_today(),-1), frappe.datetime.get_today()],
 			"reqd": 1
 		},
 		{
diff --git a/erpnext/maintenance/doctype/maintenance_schedule/maintenance_schedule.js b/erpnext/maintenance/doctype/maintenance_schedule/maintenance_schedule.js
index 84c66b5..de7cd8c 100644
--- a/erpnext/maintenance/doctype/maintenance_schedule/maintenance_schedule.js
+++ b/erpnext/maintenance/doctype/maintenance_schedule/maintenance_schedule.js
@@ -71,7 +71,7 @@
 
 		if (item.start_date && item.end_date && item.periodicity) {
 			if(item.start_date > item.end_date) {
-				msgprint(__("Row {0}:Start Date must be before End Date", [item.idx]));
+				frappe.msgprint(__("Row {0}:Start Date must be before End Date", [item.idx]));
 				return;
 			}
 
@@ -97,7 +97,7 @@
 	if(!doc.status) set_multiple(dt,dn,{status:'Draft'});
 
 	if(doc.__islocal){
-		set_multiple(dt,dn,{transaction_date:get_today()});
+		set_multiple(dt,dn,{transaction_date: frappe.datetime.get_today()});
 	}
 
 	// set add fetch for item_code's item_name and description
@@ -108,12 +108,12 @@
 
 cur_frm.cscript.generate_schedule = function(doc, cdt, cdn) {
 	if (!doc.__islocal) {
-		return $c('runserverobj', args={'method':'generate_schedule', 'docs':doc},
+		return $c('runserverobj', {'method':'generate_schedule', 'docs':doc},
 			function(r, rt) {
 				refresh_field('schedules');
 			});
 	} else {
-		msgprint(__("Please save the document before generating maintenance schedule"));
+		frappe.msgprint(__("Please save the document before generating maintenance schedule"));
 	}
 }
 
diff --git a/erpnext/maintenance/doctype/maintenance_visit/maintenance_visit.js b/erpnext/maintenance/doctype/maintenance_visit/maintenance_visit.js
index e1f501b..a4f3abc 100644
--- a/erpnext/maintenance/doctype/maintenance_visit/maintenance_visit.js
+++ b/erpnext/maintenance/doctype/maintenance_visit/maintenance_visit.js
@@ -2,8 +2,6 @@
 // License: GNU General Public License v3. See license.txt
 
 frappe.provide("erpnext.maintenance");
-me.frm.set_query('contact_person', erpnext.queries.contact_query);
-
 
 frappe.ui.form.on('Maintenance Visit', {
 	setup: function(frm) {
@@ -85,7 +83,7 @@
 
 cur_frm.cscript.onload = function(doc, dt, dn) {
 	if(!doc.status) set_multiple(dt,dn,{status:'Draft'});
-	if(doc.__islocal) set_multiple(dt,dn,{mntc_date:get_today()});
+	if(doc.__islocal) set_multiple(dt,dn,{mntc_date: frappe.datetime.get_today()});
 
 	// set add fetch for item_code's item_name and description
 	cur_frm.add_fetch('item_code', 'item_name', 'item_name');
diff --git a/erpnext/manufacturing/doctype/bom/bom.js b/erpnext/manufacturing/doctype/bom/bom.js
index 576e46d..03e5390 100644
--- a/erpnext/manufacturing/doctype/bom/bom.js
+++ b/erpnext/manufacturing/doctype/bom/bom.js
@@ -63,7 +63,7 @@
 	
 	item_code: function(doc, cdt, cdn){
 		var scrap_items = false;
-		child = locals[cdt][cdn];
+		var child = locals[cdt][cdn];
 		if(child.doctype == 'BOM Scrap Item') {
 			scrap_items = true;
 		}
@@ -132,12 +132,12 @@
 	var d = locals[cdt][cdn];
 	var scrap_items = false;
 
-	if(child.doctype == 'BOM Scrap Item') {
+	if(cdt == 'BOM Scrap Item') {
 		scrap_items = true;
 	}
 
 	if (d.bom_no) {
-		msgprint(__("You can not change rate if BOM mentioned agianst any item"));
+		frappe.msgprint(__("You can not change rate if BOM mentioned agianst any item"));
 		get_bom_material_detail(doc, cdt, cdn, scrap_items);
 	} else {
 		erpnext.bom.calculate_rm_cost(doc);
@@ -159,8 +159,8 @@
 	doc.base_operating_cost = 0.0;
 
 	for(var i=0;i<op.length;i++) {
-		operating_cost = flt(flt(op[i].hour_rate) * flt(op[i].time_in_mins) / 60, 2);
-		base_operating_cost = flt(flt(op[i].base_hour_rate) * flt(op[i].time_in_mins) / 60, 2);
+		var operating_cost = flt(flt(op[i].hour_rate) * flt(op[i].time_in_mins) / 60, 2);
+		var base_operating_cost = flt(flt(op[i].base_hour_rate) * flt(op[i].time_in_mins) / 60, 2);
 		frappe.model.set_value('BOM Operation',op[i].name, "operating_cost", operating_cost);
 		frappe.model.set_value('BOM Operation',op[i].name, "base_operating_cost", base_operating_cost);
 
@@ -173,11 +173,11 @@
 // rm : raw material
 erpnext.bom.calculate_rm_cost = function(doc) {
 	var rm = doc.items || [];
-	total_rm_cost = 0;
-	base_total_rm_cost = 0;
+	var total_rm_cost = 0;
+	var base_total_rm_cost = 0;
 	for(var i=0;i<rm.length;i++) {
-		amount = flt(rm[i].rate) * flt(rm[i].qty);
-		base_amount = flt(rm[i].rate) * flt(doc.conversion_rate) * flt(rm[i].qty);
+		var amount = flt(rm[i].rate) * flt(rm[i].qty);
+		var base_amount = flt(rm[i].rate) * flt(doc.conversion_rate) * flt(rm[i].qty);
 		frappe.model.set_value('BOM Item', rm[i].name, 'base_rate', flt(rm[i].rate) * flt(doc.conversion_rate))
 		frappe.model.set_value('BOM Item', rm[i].name, 'amount', amount)
 		frappe.model.set_value('BOM Item', rm[i].name, 'qty_consumed_per_unit', flt(rm[i].qty)/flt(doc.quantity))
@@ -192,13 +192,13 @@
 //sm : scrap material
 erpnext.bom.calculate_scrap_materials_cost = function(doc) {
 	var sm = doc.scrap_items || [];
-	total_sm_cost = 0;
-	base_total_sm_cost = 0;
+	var total_sm_cost = 0;
+	var base_total_sm_cost = 0;
 
 	for(var i=0;i<sm.length;i++) {
-		base_rate = flt(sm[i].rate) * flt(doc.conversion_rate);
-		amount =	flt(sm[i].rate) * flt(sm[i].qty);
-		base_amount =	flt(sm[i].rate) * flt(sm[i].qty) * flt(doc.conversion_rate);
+		var base_rate = flt(sm[i].rate) * flt(doc.conversion_rate);
+		var amount =	flt(sm[i].rate) * flt(sm[i].qty);
+		var base_amount =	flt(sm[i].rate) * flt(sm[i].qty) * flt(doc.conversion_rate);
 		frappe.model.set_value('BOM Scrap Item',sm[i].name, 'base_rate', base_rate);
 		frappe.model.set_value('BOM Scrap Item',sm[i].name, 'amount', amount);
 		frappe.model.set_value('BOM Scrap Item',sm[i].name, 'base_amount', base_amount);
@@ -213,15 +213,15 @@
 
 // Calculate Total Cost
 erpnext.bom.calculate_total = function(doc) {
-	total_cost = flt(doc.operating_cost) + flt(doc.raw_material_cost) - flt(doc.scrap_material_cost);
-	base_total_cost = flt(doc.base_operating_cost) + flt(doc.base_raw_material_cost) - flt(doc.base_scrap_material_cost);
+	var total_cost = flt(doc.operating_cost) + flt(doc.raw_material_cost) - flt(doc.scrap_material_cost);
+	var base_total_cost = flt(doc.base_operating_cost) + flt(doc.base_raw_material_cost) - flt(doc.base_scrap_material_cost);
 	cur_frm.set_value("total_cost", total_cost);
 	cur_frm.set_value("base_total_cost", base_total_cost);
 }
 
 
 cur_frm.fields_dict['item'].get_query = function(doc) {
- 	return{
+	return{
 		query: "erpnext.controllers.queries.item_query"
 	}
 }
diff --git a/erpnext/manufacturing/doctype/production_order/production_order.js b/erpnext/manufacturing/doctype/production_order/production_order.js
index d2540de..6465cec 100644
--- a/erpnext/manufacturing/doctype/production_order/production_order.js
+++ b/erpnext/manufacturing/doctype/production_order/production_order.js
@@ -65,10 +65,10 @@
 			'width': (frm.doc.produced_qty / frm.doc.qty * 100) + '%',
 			'progress_class': 'progress-bar-success'
 		});
-		if(bars[0].width=='0%') {
-			 bars[0].width = '0.5%';
-			 added_min = 0.5;
-		 }
+		if (bars[0].width == '0%') {
+			bars[0].width = '0.5%';
+			added_min = 0.5;
+		}
 		message = title;
 
 		// pending qty
@@ -126,10 +126,10 @@
 
 			if(!frm.doc.skip_transfer){
 				if ((flt(doc.material_transferred_for_manufacturing) < flt(doc.qty)) && frm.doc.status != 'Stopped') {
-				frm.has_start_btn = true;
-				var btn = frm.add_custom_button(__('Start'),
-					cur_frm.cscript['Transfer Raw Materials']);
-				btn.addClass('btn-primary');
+					frm.has_start_btn = true;
+					var btn = frm.add_custom_button(__('Start'),
+						cur_frm.cscript['Transfer Raw Materials']);
+					btn.addClass('btn-primary');
 				}
 			}
 
@@ -161,7 +161,7 @@
 			var op = doc.operations;
 			doc.planned_operating_cost = 0.0;
 			for(var i=0;i<op.length;i++) {
-				planned_operating_cost = flt(flt(op[i].hour_rate) * flt(op[i].time_in_mins) / 60, 2);
+				var planned_operating_cost = flt(flt(op[i].hour_rate) * flt(op[i].time_in_mins) / 60, 2);
 				frappe.model.set_value('Production Order Operation',op[i].name, "planned_operating_cost", planned_operating_cost);
 
 				doc.planned_operating_cost += planned_operating_cost;
@@ -198,7 +198,7 @@
 					query: "erpnext.controllers.queries.bom",
 					filters: {item: cstr(doc.production_item)}
 				}
-			} else msgprint(__("Please enter Production Item first"));
+			} else frappe.msgprint(__("Please enter Production Item first"));
 		});
 	},
 
@@ -227,9 +227,9 @@
 		frappe.call({
 			method: "erpnext.manufacturing.doctype.production_order.production_order.get_item_details",
 			args: {
-					item: doc.production_item,
-					project: doc.project
-					},
+				item: doc.production_item,
+				project: doc.project
+			},
 			callback: function(r) {
 				$.each(["description", "stock_uom", "project", "bom_no"], function(i, field) {
 					cur_frm.set_value(field, r.message[field]);
diff --git a/erpnext/manufacturing/doctype/production_planning_tool/production_planning_tool.js b/erpnext/manufacturing/doctype/production_planning_tool/production_planning_tool.js
index a0e9ce7..f541e5b 100644
--- a/erpnext/manufacturing/doctype/production_planning_tool/production_planning_tool.js
+++ b/erpnext/manufacturing/doctype/production_planning_tool/production_planning_tool.js
@@ -19,9 +19,8 @@
 
 frappe.ui.form.on("Production Planning Tool", {
 	onload_post_render: function(frm) {
-	 		frm.get_field("items").grid.set_multiple_add("item_code", "planned_qty");
-	 },	
-	 
+		frm.get_field("items").grid.set_multiple_add("item_code", "planned_qty");
+	},
 	get_sales_orders: function(frm) {
 		frappe.call({
 			doc: frm.doc,
@@ -96,11 +95,11 @@
 		args["customer"] = doc.customer;
 	}
 
- 	return { filters: args }
+	return { filters: args }
 }
 
 cur_frm.fields_dict['items'].grid.get_field('item_code').get_query = function(doc) {
- 	return erpnext.queries.item({
+	return erpnext.queries.item({
 		'is_stock_item': 1
 	});
 }
@@ -112,7 +111,7 @@
 			query: "erpnext.controllers.queries.bom",
 			filters:{'item': cstr(d.item_code)}
 		}
-	} else msgprint(__("Please enter Item first"));
+	} else frappe.msgprint(__("Please enter Item first"));
 }
 
 cur_frm.fields_dict.customer.get_query = function(doc,cdt,cdn) {
diff --git a/erpnext/manufacturing/page/production_analytics/production_analytics.js b/erpnext/manufacturing/page/production_analytics/production_analytics.js
index cac4b3a..1fb1ef2 100644
--- a/erpnext/manufacturing/page/production_analytics/production_analytics.js
+++ b/erpnext/manufacturing/page/production_analytics/production_analytics.js
@@ -9,7 +9,6 @@
 	});
 
 	new erpnext.ProductionAnalytics(wrapper);
-		
 
 	frappe.breadcrumbs.add("Manufacturing");
 }
@@ -18,7 +17,6 @@
 	init: function(wrapper) {
 		this._super({
 			title: __("Production Analytics"),
-			page: wrapper,
 			parent: $(wrapper).find('.layout-main'),
 			page: wrapper.page,
 			doctypes: ["Item", "Company", "Fiscal Year", "Production Order"]
@@ -73,8 +71,8 @@
 	},
 	set_default_values: function() {
 		var values = {
-			from_date: dateutil.str_to_user(dateutil.add_months(dateutil.now_datetime(),-12) ),
-			to_date: dateutil.str_to_user(dateutil.add_months(dateutil.now_datetime(),1))
+			from_date: frappe.datetime.str_to_user(frappe.datetime.add_months(frappe.datetime.now_datetime(),-12) ),
+			to_date: frappe.datetime.str_to_user(frappe.datetime.add_months(frappe.datetime.now_datetime(),1))
 		}
 
 		var me = this;
@@ -100,17 +98,17 @@
 			checked:true};	
 
 		$.each(frappe.report_dump.data["Production Order"], function(i, d) {
-			var dateobj = dateutil.str_to_obj(d.creation);
-			var date = dateutil.str_to_user(d.creation.split(" ")[0]);
+			var dateobj = frappe.datetime.str_to_obj(d.creation);
+			var date = frappe.datetime.str_to_user(d.creation.split(" ")[0]);
 
 			$.each(me.columns, function(i,col) {
 				if (i > 1){
-					var start_period = dateutil.user_to_obj(dateutil.str_to_user(col.id));
-					var end_period = dateutil.user_to_obj(dateutil.str_to_user(col.name));
-					var astart_date = dateutil.user_to_obj(dateutil.str_to_user(d.actual_start_date));
-					var planned_start_date = dateutil.user_to_obj(dateutil.str_to_user(d.planned_start_date));
-					var aend_date = dateutil.user_to_obj(dateutil.str_to_user(d.actual_end_date));
-					var modified = dateutil.user_to_obj(dateutil.str_to_user(d.modified));
+					var start_period = frappe.datetime.user_to_obj(frappe.datetime.str_to_user(col.id));
+					var end_period = frappe.datetime.user_to_obj(frappe.datetime.str_to_user(col.name));
+					var astart_date = frappe.datetime.user_to_obj(frappe.datetime.str_to_user(d.actual_start_date));
+					var planned_start_date = frappe.datetime.user_to_obj(frappe.datetime.str_to_user(d.planned_start_date));
+					var aend_date = frappe.datetime.user_to_obj(frappe.datetime.str_to_user(d.actual_end_date));
+					var modified = frappe.datetime.user_to_obj(frappe.datetime.str_to_user(d.modified));
 					
 					if (dateobj <= start_period || dateobj <= end_period) {
 						all_open_orders[col.field] = flt(all_open_orders[col.field]) + 1;
diff --git a/erpnext/manufacturing/report/bom_stock_report/bom_stock_report.js b/erpnext/manufacturing/report/bom_stock_report/bom_stock_report.js
index 8aed965..95c78e6 100644
--- a/erpnext/manufacturing/report/bom_stock_report/bom_stock_report.js
+++ b/erpnext/manufacturing/report/bom_stock_report/bom_stock_report.js
@@ -1,17 +1,17 @@
 frappe.query_reports["BOM Stock Report"] = {
-    "filters": [
-        {
-            "fieldname":"bom",
-            "label": __("BOM"),
-            "fieldtype": "Link",
-            "options": "BOM",
+	"filters": [
+		{
+			"fieldname": "bom",
+			"label": __("BOM"),
+			"fieldtype": "Link",
+			"options": "BOM",
 			"reqd": 1
-        },{
-            "fieldname":"warehouse",
-            "label": __("Warehouse"),
-            "fieldtype": "Link",
-            "options": "Warehouse",
+		}, {
+			"fieldname": "warehouse",
+			"label": __("Warehouse"),
+			"fieldtype": "Link",
+			"options": "Warehouse",
 			"reqd": 1
-        }
-    ]
+		}
+	]
 }
diff --git a/erpnext/manufacturing/report/production_order_stock_report/production_order_stock_report.js b/erpnext/manufacturing/report/production_order_stock_report/production_order_stock_report.js
index 917af5d..94e326d 100644
--- a/erpnext/manufacturing/report/production_order_stock_report/production_order_stock_report.js
+++ b/erpnext/manufacturing/report/production_order_stock_report/production_order_stock_report.js
@@ -3,12 +3,11 @@
 
 frappe.query_reports["Production Order Stock Report"] = {
 	"filters": [
-	{
-		"fieldname":"warehouse",
-		"label": __("Warehouse"),
-		"fieldtype": "Link",
-		"options": "Warehouse"
-		
-	}
+		{
+			"fieldname": "warehouse",
+			"label": __("Warehouse"),
+			"fieldtype": "Link",
+			"options": "Warehouse"
+		}
 	]
 }
diff --git a/erpnext/projects/doctype/project/project.js b/erpnext/projects/doctype/project/project.js
index 5f48a93..78cdb13 100644
--- a/erpnext/projects/doctype/project/project.js
+++ b/erpnext/projects/doctype/project/project.js
@@ -13,12 +13,12 @@
 		}
 
 		frm.set_query('customer', 'erpnext.controllers.queries.customer_query');
-		
+
 		frm.set_query("user", "users", function() {
-					return {
-						query:"erpnext.projects.doctype.project.project.get_users_for_project"
-					}
-				});
+			return {
+				query:"erpnext.projects.doctype.project.project.get_users_for_project"
+			}
+		});
 
 		// sales order
 		frm.set_query('sales_order', function() {
@@ -89,7 +89,7 @@
 		if(doc.task_id) {
 			frappe.set_route("Form", "Task", doc.task_id);
 		} else {
-			msgprint(__("Save the document first."));
+			frappe.msgprint(__("Save the document first."));
 		}
 	},
 	status: function(frm, doctype, name) {
diff --git a/erpnext/projects/doctype/timesheet/timesheet.js b/erpnext/projects/doctype/timesheet/timesheet.js
index 01fa160..7d14d9e 100644
--- a/erpnext/projects/doctype/timesheet/timesheet.js
+++ b/erpnext/projects/doctype/timesheet/timesheet.js
@@ -13,7 +13,7 @@
 		}
 
 		frm.fields_dict['time_logs'].grid.get_field('task').get_query = function(frm, cdt, cdn) {
-			child = locals[cdt][cdn];
+			var child = locals[cdt][cdn];
 			return{
 				filters: {
 					'project': child.project,
@@ -109,7 +109,7 @@
 	},
 
 	activity_type: function(frm, cdt, cdn) {
-		child = locals[cdt][cdn];
+		var child = locals[cdt][cdn];
 		frappe.call({
 			method: "erpnext.projects.doctype.timesheet.timesheet.get_activity_cost",
 			args: {
@@ -127,7 +127,7 @@
 	}
 });
 
-calculate_end_time = function(frm, cdt, cdn){
+var calculate_end_time = function(frm, cdt, cdn) {
 	var child = locals[cdt][cdn];
 
 	var d = moment(child.from_time);
@@ -142,8 +142,9 @@
 }
 
 var calculate_billing_costing_amount = function(frm, cdt, cdn){
-	child = locals[cdt][cdn]
-	billing_amount = costing_amount = 0.0;
+	var child = locals[cdt][cdn]
+	var billing_amount = 0.0;
+	var costing_amount = 0.0;
 
 	if(child.billing_hours && child.billable){
 		billing_amount = (child.billing_hours * child.billing_rate);
@@ -157,10 +158,10 @@
 
 var calculate_time_and_amount = function(frm) {
 	var tl = frm.doc.time_logs || [];
-	total_working_hr = 0;
-	total_billing_hr = 0;
-	total_billable_amount = 0;
-	total_costing_amount = 0;
+	var total_working_hr = 0;
+	var total_billing_hr = 0;
+	var total_billable_amount = 0;
+	var total_costing_amount = 0;
 	for(var i=0; i<tl.length; i++) {
 		if (tl[i].hours) {
 			total_working_hr += tl[i].hours;
diff --git a/erpnext/public/js/account_tree_grid.js b/erpnext/public/js/account_tree_grid.js
index ac8784d..5769298 100644
--- a/erpnext/public/js/account_tree_grid.js
+++ b/erpnext/public/js/account_tree_grid.js
@@ -18,7 +18,6 @@
 	init: function(wrapper, title) {
 		this._super({
 			title: title,
-			page: wrapper,
 			parent: $(wrapper).find('.layout-main'),
 			page: wrapper.page,
 			doctypes: ["Company", "Fiscal Year", "Account", "GL Entry", "Cost Center"],
@@ -77,8 +76,8 @@
 			var fy = $(this).val();
 			$.each(frappe.report_dump.data["Fiscal Year"], function(i, v) {
 				if (v.name==fy) {
-					me.filter_inputs.from_date.val(dateutil.str_to_user(v.year_start_date));
-					me.filter_inputs.to_date.val(dateutil.str_to_user(v.year_end_date));
+					me.filter_inputs.from_date.val(frappe.datetime.str_to_user(v.year_start_date));
+					me.filter_inputs.to_date.val(frappe.datetime.str_to_user(v.year_end_date));
 				}
 			});
 			me.refresh();
@@ -124,8 +123,8 @@
 		var gl = frappe.report_dump.data['GL Entry'];
 		var me = this;
 
-		this.opening_date = dateutil.user_to_obj(this.filter_inputs.from_date.val());
-		this.closing_date = dateutil.user_to_obj(this.filter_inputs.to_date.val());
+		this.opening_date = frappe.datetime.user_to_obj(this.filter_inputs.from_date.val());
+		this.closing_date = frappe.datetime.user_to_obj(this.filter_inputs.to_date.val());
 		this.set_fiscal_year();
 		if (!this.fiscal_year) return;
 
@@ -135,7 +134,7 @@
 		});
 
 		$.each(gl, function(i, v) {
-			var posting_date = dateutil.str_to_obj(v.posting_date);
+			var posting_date = frappe.datetime.str_to_obj(v.posting_date);
 			var account = me.item_by_name[v.account];
 			me.update_balances(account, posting_date, v);
 		});
@@ -146,7 +145,7 @@
 		// opening
 		if (posting_date < this.opening_date || v.is_opening === "Yes") {
 			if (account.report_type === "Profit and Loss" &&
-				posting_date <= dateutil.str_to_obj(this.fiscal_year[1])) {
+				posting_date <= frappe.datetime.str_to_obj(this.fiscal_year[1])) {
 				// balance of previous fiscal_year should
 				//	not be part of opening of pl account balance
 			} else {
@@ -208,21 +207,21 @@
 
 	set_fiscal_year: function() {
 		if (this.opening_date > this.closing_date) {
-			msgprint(__("Opening Date should be before Closing Date"));
+			frappe.msgprint(__("Opening Date should be before Closing Date"));
 			return;
 		}
 
 		this.fiscal_year = null;
 		var me = this;
 		$.each(frappe.report_dump.data["Fiscal Year"], function(i, v) {
-			if (me.opening_date >= dateutil.str_to_obj(v.year_start_date) &&
-				me.closing_date <= dateutil.str_to_obj(v.year_end_date)) {
-					me.fiscal_year = v;
-				}
+			if (me.opening_date >= frappe.datetime.str_to_obj(v.year_start_date) &&
+				me.closing_date <= frappe.datetime.str_to_obj(v.year_end_date)) {
+				me.fiscal_year = v;
+			}
 		});
 
 		if (!this.fiscal_year) {
-			msgprint(__("Opening Date and Closing Date should be within same Fiscal Year"));
+			frappe.msgprint(__("Opening Date and Closing Date should be within same Fiscal Year"));
 			return;
 		}
 	},
diff --git a/erpnext/public/js/communication.js b/erpnext/public/js/communication.js
index 9d54f84..5ce57b6 100644
--- a/erpnext/public/js/communication.js
+++ b/erpnext/public/js/communication.js
@@ -8,7 +8,7 @@
 			}, "Make");
 		}
 
-		if(!inList(["Lead", "Opportunity"], frm.doc.reference_doctype)) {
+		if(!in_list(["Lead", "Opportunity"], frm.doc.reference_doctype)) {
 			frm.add_custom_button(__("Lead"), function() {
 				frappe.confirm("Are you sure you want to create Lead from this email", function(){
 					frm.trigger('make_lead_from_communication');	
diff --git a/erpnext/public/js/controllers/accounts.js b/erpnext/public/js/controllers/accounts.js
index c1c3553..644f0f5 100644
--- a/erpnext/public/js/controllers/accounts.js
+++ b/erpnext/public/js/controllers/accounts.js
@@ -89,7 +89,7 @@
 	}
 })
 
-get_payment_mode_account = function(frm, mode_of_payment, callback){
+var get_payment_mode_account = function(frm, mode_of_payment, callback){
 	return  frappe.call({
 		method: "erpnext.accounts.doctype.sales_invoice.sales_invoice.get_bank_cash_account",
 		args: {
@@ -108,7 +108,7 @@
 cur_frm.cscript.account_head = function(doc, cdt, cdn) {
 	var d = locals[cdt][cdn];
 	if(!d.charge_type && d.account_head){
-		msgprint("Please select Charge Type first");
+		frappe.msgprint("Please select Charge Type first");
 		frappe.model.set_value(cdt, cdn, "account_head", "");
 	} else if(d.account_head && d.charge_type!=="Actual") {
 		frappe.call({
@@ -152,7 +152,7 @@
 		}
 	}
 	if(msg) {
-		validated = false;
+		frappe.validated = false;
 		refresh_field("taxes");
 		frappe.throw(msg);
 	}
@@ -176,9 +176,10 @@
 			// inclusive tax cannot be of type Actual
 			actual_type_error();
 		} else if(tax.charge_type == "On Previous Row Amount" &&
-			!cint(this.frm.doc["taxes"][tax.row_id - 1].included_in_print_rate)) {
-				// referred row should also be an inclusive tax
-				on_previous_row_error(tax.row_id);
+			!cint(this.frm.doc["taxes"][tax.row_id - 1].included_in_print_rate)
+		) {
+			// referred row should also be an inclusive tax
+			on_previous_row_error(tax.row_id);
 		} else if(tax.charge_type == "On Previous Row Total") {
 			var taxes_not_included = $.map(this.frm.doc["taxes"].slice(0, tax.row_id),
 				function(t) { return cint(t.included_in_print_rate) ? null : t; });
diff --git a/erpnext/public/js/controllers/buying.js b/erpnext/public/js/controllers/buying.js
index a8c80fe..06e759f 100644
--- a/erpnext/public/js/controllers/buying.js
+++ b/erpnext/public/js/controllers/buying.js
@@ -18,9 +18,11 @@
 		this.setup_queries();
 		this._super();
 
+		/* eslint-disable */
+		// no idea where me is coming from
 		if(this.frm.get_field('shipping_address')) {
-			this.frm.set_query("shipping_address", function(){
-				if(me.frm.doc.customer){
+			this.frm.set_query("shipping_address", function() {
+				if(me.frm.doc.customer) {
 					return {
 						query: 'frappe.geo.doctype.address.address.address_query',
 						filters: { link_doctype: 'Customer', link_name: me.frm.doc.customer }
@@ -29,6 +31,7 @@
 					return erpnext.queries.company_address_query(me.frm.doc)
 			});
 		}
+		/* eslint-enable */
 	},
 
 	setup_queries: function() {
@@ -206,73 +209,73 @@
 	shipping_address: function(){
 		var me = this;
 		erpnext.utils.get_address_display(this.frm, "shipping_address",
-			"shipping_address_display", is_your_company_address=true)
+			"shipping_address_display", true);
 	},
 
 	tc_name: function() {
 		this.get_terms();
 	},
 	link_to_mrs: function() {
-				my_items = [];
-				for (var i in cur_frm.doc.items) {
-					if(!cur_frm.doc.items[i].material_request){
-						my_items.push(cur_frm.doc.items[i].item_code);
-					}
-				}
-				frappe.call({
-					method: "erpnext.buying.utils.get_linked_material_requests",
-					args:{
-						items: my_items
-					},
-					callback: function(r) {
-						var i = 0;
-						var item_length = cur_frm.doc.items.length;
-						while (i < item_length) {
-							var qty = cur_frm.doc.items[i].qty;
-							(r.message[0] || []).forEach(function(d) {
-								if (d.qty > 0 && qty > 0 && cur_frm.doc.items[i].item_code == d.item_code && !cur_frm.doc.items[i].material_request_item)
+		var my_items = [];
+		for (var i in cur_frm.doc.items) {
+			if(!cur_frm.doc.items[i].material_request){
+				my_items.push(cur_frm.doc.items[i].item_code);
+			}
+		}
+		frappe.call({
+			method: "erpnext.buying.utils.get_linked_material_requests",
+			args:{
+				items: my_items
+			},
+			callback: function(r) {
+				var i = 0;
+				var item_length = cur_frm.doc.items.length;
+				while (i < item_length) {
+					var qty = cur_frm.doc.items[i].qty;
+					(r.message[0] || []).forEach(function(d) {
+						if (d.qty > 0 && qty > 0 && cur_frm.doc.items[i].item_code == d.item_code && !cur_frm.doc.items[i].material_request_item)
+						{
+							cur_frm.doc.items[i].material_request = d.mr_name;
+							cur_frm.doc.items[i].material_request_item = d.mr_item;
+							var my_qty = Math.min(qty, d.qty);
+							qty = qty - my_qty;
+							d.qty = d.qty  - my_qty;
+							cur_frm.doc.items[i].stock_qty = my_qty*cur_frm.doc.items[i].conversion_factor;
+							cur_frm.doc.items[i].qty = my_qty;
+
+							frappe.msgprint("Assigning " + d.mr_name + " to " + d.item_code + " (row " + cur_frm.doc.items[i].idx + ")");
+							if (qty > 0)
+							{
+								frappe.msgprint("Splitting " + qty + " units of " + d.item_code);
+								var newrow = frappe.model.add_child(cur_frm.doc, cur_frm.doc.items[i].doctype, "items");
+								item_length++;
+
+								for (var key in cur_frm.doc.items[i])
 								{
-									cur_frm.doc.items[i].material_request = d.mr_name;
-									cur_frm.doc.items[i].material_request_item = d.mr_item;
-									my_qty = Math.min(qty, d.qty);
-									qty = qty - my_qty;
-									d.qty = d.qty  - my_qty;
-									cur_frm.doc.items[i].stock_qty = my_qty*cur_frm.doc.items[i].conversion_factor;
-									cur_frm.doc.items[i].qty = my_qty;
-
-									frappe.msgprint("Assigning " + d.mr_name + " to " + d.item_code + " (row " + cur_frm.doc.items[i].idx + ")");
-									if (qty > 0)
-									{
-										frappe.msgprint("Splitting " + qty + " units of " + d.item_code);
-										var newrow = frappe.model.add_child(cur_frm.doc, cur_frm.doc.items[i].doctype, "items");
-										item_length++;
-
-										for (key in cur_frm.doc.items[i])
-										{
-											newrow[key] = cur_frm.doc.items[i][key];
-										}
-
-										newrow.idx = item_length;
-										newrow["stock_qty"] = newrow.conversion_factor*qty;
-										newrow["qty"] = qty;
-
-										newrow["material_request"] = "";
-										newrow["material_request_item"] = "";
-
-									}
-
-
-
+									newrow[key] = cur_frm.doc.items[i][key];
 								}
 
-							});
-							i++;
+								newrow.idx = item_length;
+								newrow["stock_qty"] = newrow.conversion_factor*qty;
+								newrow["qty"] = qty;
+
+								newrow["material_request"] = "";
+								newrow["material_request_item"] = "";
+
+							}
+
+
+
 						}
-						refresh_field("items");
-						//cur_frm.save();
-					}
-				});
+
+					});
+					i++;
+				}
+				refresh_field("items");
+				//cur_frm.save();
 			}
+		});
+	}
 });
 
 cur_frm.add_fetch('project', 'cost_center', 'cost_center');
@@ -324,7 +327,7 @@
 	});
 
 	dialog.fields_dict.get_items.$input.click(function() {
-		args = dialog.get_values();
+		var args = dialog.get_values();
 		if(!args) return;
 		dialog.hide();
 		return frappe.call({
diff --git a/erpnext/public/js/controllers/taxes_and_totals.js b/erpnext/public/js/controllers/taxes_and_totals.js
index 849275f..e85fc45 100644
--- a/erpnext/public/js/controllers/taxes_and_totals.js
+++ b/erpnext/public/js/controllers/taxes_and_totals.js
@@ -14,7 +14,7 @@
 		item.rate = flt(item.rate_with_margin , precision("rate", item));
 
 		if(item.discount_percentage){
-			discount_value = flt(item.rate_with_margin) * flt(item.discount_percentage) / 100;
+			var discount_value = flt(item.rate_with_margin) * flt(item.discount_percentage) / 100;
 			item.rate = flt((item.rate_with_margin) - (discount_value), precision('rate', item));
 		}
 	},
@@ -26,8 +26,8 @@
 
 		// Advance calculation applicable to Sales /Purchase Invoice
 		if(in_list(["Sales Invoice", "Purchase Invoice"], this.frm.doc.doctype)
-			 && this.frm.doc.docstatus < 2 && !this.frm.doc.is_return) {
-				 this.calculate_total_advance(update_paid_amount);
+			&& this.frm.doc.docstatus < 2 && !this.frm.doc.is_return) {
+			this.calculate_total_advance(update_paid_amount);
 		}
 
 		// Sales person's commission
@@ -108,13 +108,14 @@
 
 		$.each(this.frm.doc["taxes"] || [], function(i, tax) {
 			tax.item_wise_tax_detail = {};
-			tax_fields = ["total", "tax_amount_after_discount_amount",
+			var tax_fields = ["total", "tax_amount_after_discount_amount",
 				"tax_amount_for_current_item", "grand_total_for_current_item",
 				"tax_fraction_for_current_item", "grand_total_fraction_for_current_item"]
 
 			if (cstr(tax.charge_type) != "Actual" &&
-				!(me.discount_amount_applied && me.frm.doc.apply_discount_on=="Grand Total"))
-					tax_fields.push("tax_amount");
+				!(me.discount_amount_applied && me.frm.doc.apply_discount_on=="Grand Total")) {
+				tax_fields.push("tax_amount");
+			}
 
 			$.each(tax_fields, function(i, fieldname) { tax[fieldname] = 0.0 });
 
@@ -190,7 +191,7 @@
 	},
 
 	_get_tax_rate: function(tax, item_tax_map) {
-		return (keys(item_tax_map).indexOf(tax.account_head) != -1) ?
+		return (Object.keys(item_tax_map).indexOf(tax.account_head) != -1) ?
 			flt(item_tax_map[tax.account_head], precision("rate", tax)) : tax.rate;
 	},
 
@@ -236,8 +237,9 @@
 
 				// accumulate tax amount into tax.tax_amount
 				if (tax.charge_type != "Actual" &&
-					!(me.discount_amount_applied && me.frm.doc.apply_discount_on=="Grand Total"))
-						tax.tax_amount += current_tax_amount;
+					!(me.discount_amount_applied && me.frm.doc.apply_discount_on=="Grand Total")) {
+					tax.tax_amount += current_tax_amount;
+				}
 
 				// store tax_amount for current item as it will be used for
 				// charge type = 'On Previous Row Amount'
@@ -492,7 +494,7 @@
 				if (tax.charge_type == "Actual")
 					actual_taxes_dict[tax.idx] = tax.tax_amount;
 				else if (actual_taxes_dict[tax.row_id] !== null) {
-					actual_tax_amount = flt(actual_taxes_dict[tax.row_id]) * flt(tax.rate) / 100;
+					var actual_tax_amount = flt(actual_taxes_dict[tax.row_id]) * flt(tax.rate) / 100;
 					actual_taxes_dict[tax.idx] = actual_tax_amount;
 				}
 			});
@@ -571,7 +573,7 @@
 
 	set_default_payment: function(total_amount_to_pay, update_paid_amount){
 		var me = this;
-		payment_status = true;
+		var payment_status = true;
 		if(this.frm.doc.is_pos && (update_paid_amount===undefined || update_paid_amount)){
 			$.each(this.frm.doc['payments'] || [], function(index, data){
 				if(data.type == "Cash" && payment_status && total_amount_to_pay > 0) {
@@ -587,7 +589,8 @@
 
 	calculate_paid_amount: function(){
 		var me = this;
-		var paid_amount = base_paid_amount = 0.0;
+		var paid_amount = 0.0;
+		var base_paid_amount = 0.0;
 		if(this.frm.doc.is_pos) {
 			$.each(this.frm.doc['payments'] || [], function(index, data){
 				data.base_amount = flt(data.amount * me.frm.doc.conversion_rate, precision("base_amount"));
diff --git a/erpnext/public/js/controllers/transaction.js b/erpnext/public/js/controllers/transaction.js
index 6357a52..25835e0b8 100644
--- a/erpnext/public/js/controllers/transaction.js
+++ b/erpnext/public/js/controllers/transaction.js
@@ -102,7 +102,7 @@
 	onload: function() {
 		var me = this;
 		if(this.frm.doc.__islocal) {
-			var today = get_today(),
+			var today = frappe.datetime.get_today(),
 				currency = frappe.defaults.get_user_default("currency");
 
 			$.each({
@@ -195,10 +195,10 @@
 		var me = this;
 		if(this.frm.doc.__islocal && !(this.frm.doc.taxes || []).length
 			&& !(this.frm.doc.__onload ? this.frm.doc.__onload.load_after_mapping : false)) {
-				this.apply_default_taxes();
+			this.apply_default_taxes();
 		} else if(this.frm.doc.__islocal && this.frm.doc.company && this.frm.doc["items"]
 			&& !this.frm.doc.is_pos) {
-				me.calculate_taxes_and_totals();
+			me.calculate_taxes_and_totals();
 		}
 		if(frappe.meta.get_docfield(this.frm.doc.doctype + " Item", "item_code")) {
 			this.setup_item_selector();
@@ -243,7 +243,7 @@
 	},
 
 	send_sms: function() {
-		var sms_man = new SMSManager(this.frm.doc);
+		var sms_man = new erpnext.SMSManager(this.frm.doc);
 	},
 
 	barcode: function(doc, cdt, cdn) {
@@ -281,8 +281,7 @@
 							currency: me.frm.doc.currency,
 							update_stock: in_list(['Sales Invoice', 'Purchase Invoice'], me.frm.doc.doctype) ? cint(me.frm.doc.update_stock) : 0,
 							conversion_rate: me.frm.doc.conversion_rate,
-							price_list: me.frm.doc.selling_price_list ||
-								 me.frm.doc.buying_price_list,
+							price_list: me.frm.doc.selling_price_list || me.frm.doc.buying_price_list,
 							price_list_currency: me.frm.doc.price_list_currency,
 							plc_conversion_rate: me.frm.doc.plc_conversion_rate,
 							company: me.frm.doc.company,
@@ -423,10 +422,10 @@
 
 		if (frappe.meta.get_docfield(this.frm.doctype, "shipping_address") &&
 			in_list(['Purchase Order', 'Purchase Receipt', 'Purchase Invoice'], this.frm.doctype)){
-				erpnext.utils.get_shipping_address(this.frm, function(){
-					set_party_account(set_pricing);
-				})
-		}else{
+			erpnext.utils.get_shipping_address(this.frm, function(){
+				set_party_account(set_pricing);
+			})
+		} else {
 			set_party_account(set_pricing);
 		}
 
@@ -505,7 +504,7 @@
 		}
 		if(this.frm.doc.currency === this.frm.doc.price_list_currency &&
 			this.frm.doc.plc_conversion_rate !== this.frm.doc.conversion_rate) {
-				this.frm.set_value("plc_conversion_rate", this.frm.doc.conversion_rate);
+			this.frm.set_value("plc_conversion_rate", this.frm.doc.conversion_rate);
 		}
 
 		if(flt(this.frm.doc.conversion_rate)>0.0) {
@@ -555,7 +554,7 @@
 		} else if(this.frm.doc.price_list_currency === this.frm.doc.currency
 			&& this.frm.doc.plc_conversion_rate && cint(this.frm.doc.plc_conversion_rate) != 1 &&
 			cint(this.frm.doc.plc_conversion_rate) != cint(this.frm.doc.conversion_rate)) {
-				this.frm.set_value("conversion_rate", this.frm.doc.plc_conversion_rate);
+			this.frm.set_value("conversion_rate", this.frm.doc.plc_conversion_rate);
 		}
 
 		if(!this.in_apply_price_list) {
@@ -981,10 +980,10 @@
 		$.each(["company", "customer"], function(i, fieldname) {
 			if(frappe.meta.has_field(me.frm.doc.doctype, fieldname && me.frm.doc.doctype != "Purchase Order")) {
 				if (!me.frm.doc[fieldname]) {
-					msgprint(__("Please specify") + ": " +
+					frappe.msgprint(__("Please specify") + ": " +
 						frappe.meta.get_label(me.frm.doc.doctype, fieldname, me.frm.doc.name) +
 						". " + __("It is needed to fetch Item Details."));
-						valid = false;
+					valid = false;
 				}
 			}
 		});
@@ -1076,7 +1075,7 @@
 
 	set_gross_profit: function(item) {
 		if (this.frm.doc.doctype == "Sales Order" && item.valuation_rate) {
-			rate = flt(item.rate) * flt(this.frm.doc.conversion_rate || 1);
+			var rate = flt(item.rate) * flt(this.frm.doc.conversion_rate || 1);
 			item.gross_profit = flt(((rate - item.valuation_rate) * item.stock_qty), precision("amount", item));
 		}
 	},
@@ -1085,9 +1084,9 @@
 		// TODO: remove item selector
 
 		return;
-		if(!this.item_selector) {
-			this.item_selector = new erpnext.ItemSelector({frm: this.frm});
-		}
+		// if(!this.item_selector) {
+		// 	this.item_selector = new erpnext.ItemSelector({frm: this.frm});
+		// }
 	},
 
 	get_advances: function() {
@@ -1118,7 +1117,7 @@
 	},
 
 	get_method_for_payment: function(){
-		method = "erpnext.accounts.doctype.payment_entry.payment_entry.get_payment_entry"
+		var method = "erpnext.accounts.doctype.payment_entry.payment_entry.get_payment_entry"
 		if(cur_frm.doc.__onload && cur_frm.doc.__onload.make_payment_via_journal_entry){
 			if(in_list(['Sales Invoice', 'Purchase Invoice'],  cur_frm.doc.doctype)){
 				method = "erpnext.accounts.doctype.journal_entry.journal_entry.get_payment_entry_against_invoice"
diff --git a/erpnext/public/js/payment/payments.js b/erpnext/public/js/payment/payments.js
index 438ad79..77209e0 100644
--- a/erpnext/public/js/payment/payments.js
+++ b/erpnext/public/js/payment/payments.js
@@ -55,7 +55,7 @@
 
 	show_payment_details: function(){
 		var me = this;
-		multimode_payments = $(this.$body).find('.multimode-payments').empty();
+		var multimode_payments = $(this.$body).find('.multimode-payments').empty();
 		if(this.frm.doc.payments.length){
 			$.each(this.frm.doc.payments, function(index, data){
 				$(frappe.render_template('payment_details', {
@@ -126,7 +126,7 @@
 
 	highlight_selected_row: function(){
 		var me = this;
-		selected_row = $(this.$body).find(repl(".pos-payment-row[idx='%(idx)s']",{'idx': this.idx}));
+		var selected_row = $(this.$body).find(repl(".pos-payment-row[idx='%(idx)s']",{'idx': this.idx}));
 		$(this.$body).find('.pos-payment-row').removeClass('selected-payment-mode')
 		selected_row.addClass('selected-payment-mode')
 		$(this.$body).find('.amount').attr('disabled', true);
@@ -195,7 +195,7 @@
 	update_paid_amount: function(update_write_off) {
 		var me = this;
 		if(in_list(['change_amount', 'write_off_amount'], this.idx)){
-			value = me.selected_mode.val();
+			var value = me.selected_mode.val();
 			if(me.idx == 'change_amount'){
 				me.change_amount(value)
 			} else{
diff --git a/erpnext/public/js/purchase_trends_filters.js b/erpnext/public/js/purchase_trends_filters.js
index b2d882c..117d4eb 100644
--- a/erpnext/public/js/purchase_trends_filters.js
+++ b/erpnext/public/js/purchase_trends_filters.js
@@ -1,7 +1,7 @@
 // Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors
 // License: GNU General Public License v3. See license.txt
 
-var get_filters = function(){
+erpnext.get_purchase_trends_filters = function() {
 	return [
 		{
 			"fieldname":"period",
@@ -44,7 +44,7 @@
 			"label": __("Fiscal Year"),
 			"fieldtype": "Link",
 			"options":'Fiscal Year',
-			"default": sys_defaults.fiscal_year
+			"default": frappe.sys_defaults.fiscal_year
 		},
 		{
 			"fieldname":"company",
diff --git a/erpnext/public/js/sales_trends_filters.js b/erpnext/public/js/sales_trends_filters.js
index f28e8f7..b272fdd 100644
--- a/erpnext/public/js/sales_trends_filters.js
+++ b/erpnext/public/js/sales_trends_filters.js
@@ -1,8 +1,8 @@
 // Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors
 // License: GNU General Public License v3. See license.txt
 
-var get_filters = function(){
- 	return[
+erpnext.get_sales_trends_filters = function() {
+	return[
 		{
 			"fieldname":"period",
 			"label": __("Period"),
@@ -45,7 +45,7 @@
 			"label": __("Fiscal Year"),
 			"fieldtype": "Link",
 			"options":'Fiscal Year',
-			"default": sys_defaults.fiscal_year
+			"default": frappe.sys_defaults.fiscal_year
 		},
 		{
 			"fieldname":"company",
diff --git a/erpnext/public/js/setup_wizard.js b/erpnext/public/js/setup_wizard.js
index 658c4fe..488d3c4 100644
--- a/erpnext/public/js/setup_wizard.js
+++ b/erpnext/public/js/setup_wizard.js
@@ -1,7 +1,7 @@
 frappe.provide("erpnext.wiz");
 
 frappe.pages['setup-wizard'].on_page_load = function(wrapper) {
-	if(sys_defaults.company) {
+	if(frappe.sys_defaults.company) {
 		frappe.set_route("desk");
 		return;
 	}
@@ -38,17 +38,17 @@
 			fields: [
 				{fieldname:'company_name',
 					label: frappe.wiz.domain==='Education' ?
-					 	__('Institute Name') : __('Company Name'),
+						__('Institute Name') : __('Company Name'),
 					fieldtype:'Data', reqd:1},
 				{fieldname:'company_abbr',
 					label: frappe.wiz.domain==='Education' ?
-					 	__('Institute Abbreviation') : __('Company Abbreviation'),
+						__('Institute Abbreviation') : __('Company Abbreviation'),
 					fieldtype:'Data'},
 				{fieldname:'company_tagline',
 					label: __('What does it do?'),
 					fieldtype:'Data',
 					placeholder: frappe.wiz.domain==='Education' ?
-					 	__('e.g. "Primary School" or "University"') :
+						__('e.g. "Primary School" or "University"') :
 						__('e.g. "Build tools for builders"'),
 					reqd:1},
 				{fieldname:'bank_account', label: __('Bank Name'), fieldtype:'Data', reqd:1},
@@ -75,12 +75,12 @@
 			validate: function() {
 				// validate fiscal year start and end dates
 				if (this.values.fy_start_date=='Invalid date' || this.values.fy_end_date=='Invalid date') {
-					msgprint(__("Please enter valid Financial Year Start and End Dates"));
+					frappe.msgprint(__("Please enter valid Financial Year Start and End Dates"));
 					return false;
 				}
 
 				if ((this.values.company_name || "").toLowerCase() == "company") {
-					msgprint(__("Company Name cannot be Company"));
+					frappe.msgprint(__("Company Name cannot be Company"));
 					return false;
 				}
 
@@ -102,7 +102,7 @@
 					}
 					
 					var year_start_date = current_year + "-" + fy[0];
-					if(year_start_date > get_today()) {
+					if(year_start_date > frappe.datetime.get_today()) {
 						next_year = current_year
 						current_year -= 1;
 					}
@@ -145,7 +145,7 @@
 
 				slide.get_input("company_abbr").on("change", function() {
 					if(slide.get_input("company_abbr").val().length > 5) {
-						msgprint("Company Abbreviation cannot have more than 5 characters");
+						frappe.msgprint("Company Abbreviation cannot have more than 5 characters");
 						slide.get_field("company_abbr").set_input("");
 					}
 				});
@@ -420,7 +420,7 @@
 		"Thailand": ["10-01", "09-30"],
 		"United Kingdom": ["04-01", "03-31"],
 	};
-};
+}
 
 frappe.wiz.on("before_load", function() {
 	load_erpnext_slides();
@@ -447,7 +447,7 @@
 	}
 });
 
-test_values_edu = {
+var test_values_edu = {
 	"language":"english",
 	"domain":"Education",
 	"country":"India",
diff --git a/erpnext/public/js/shopping_cart.js b/erpnext/public/js/shopping_cart.js
index 2a69deb..2c56b02 100644
--- a/erpnext/public/js/shopping_cart.js
+++ b/erpnext/public/js/shopping_cart.js
@@ -2,9 +2,11 @@
 // License: GNU General Public License v3. See license.txt
 
 // shopping cart
-frappe.provide("shopping_cart");
+frappe.provide("erpnext.shopping_cart");
+var shopping_cart = erpnext.shopping_cart;
 
 frappe.ready(function() {
+	var full_name = frappe.session.user_fullname;
 	// update user
 	if(full_name) {
 		$('.navbar li[data-label="User"] a')
@@ -34,6 +36,7 @@
 	},
 
 	update_cart: function(opts) {
+		var full_name = frappe.session.user_fullname;
 		if(!full_name || full_name==="Guest") {
 			if(localStorage) {
 				localStorage.setItem("last_visited", window.location.pathname);
@@ -110,19 +113,19 @@
 	},
 
 
-	bind_dropdown_cart_buttons: function() {
+	bind_dropdown_cart_buttons: function () {
 		$(".cart-icon").on('click', '.number-spinner button', function () {
 			var btn = $(this),
 				input = btn.closest('.number-spinner').find('input'),
 				oldValue = input.val().trim(),
 				newVal = 0;
 
-				if (btn.attr('data-dir') == 'up') {
-					newVal = parseInt(oldValue) + 1;
-				} else {
-					if (oldValue > 1) {
-						newVal = parseInt(oldValue) - 1;
-					}
+			if (btn.attr('data-dir') == 'up') {
+				newVal = parseInt(oldValue) + 1;
+			} else {
+				if (oldValue > 1) {
+					newVal = parseInt(oldValue) - 1;
+				}
 			}
 			input.val(newVal);
 			var item_code = input.attr("data-item-code");
diff --git a/erpnext/public/js/sms_manager.js b/erpnext/public/js/sms_manager.js
index d6293ea..13e226f 100644
--- a/erpnext/public/js/sms_manager.js
+++ b/erpnext/public/js/sms_manager.js
@@ -1,7 +1,7 @@
 // Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors
 // License: GNU General Public License v3. See license.txt
 
-function SMSManager(doc) {
+erpnext.SMSManager = function SMSManager(doc) {
 	var me = this;
 	this.setup = function() {
 		var default_msg = {
@@ -42,7 +42,7 @@
 				ref_name: ref_name
 			},
 			callback: function(r) {
-				if(r.exc) { msgprint(r.exc); return; }
+				if(r.exc) { frappe.msgprint(r.exc); return; }
 				me.number = r.message;
 				me.show_dialog();
 			}
@@ -92,7 +92,7 @@
 					},
 					callback: function(r) {
 						$(btn).done_working();
-						if(r.exc) {msgprint(r.exc); return; }
+						if(r.exc) {frappe.msgprint(r.exc); return; }
 						me.dialog.hide();
 					}
 				});
diff --git a/erpnext/public/js/stock_analytics.js b/erpnext/public/js/stock_analytics.js
index 28ff55d..74f5c03 100644
--- a/erpnext/public/js/stock_analytics.js
+++ b/erpnext/public/js/stock_analytics.js
@@ -6,7 +6,6 @@
 	init: function(wrapper, opts) {
 		var args = {
 			title: __("Stock Analytics"),
-			page: wrapper,
 			parent: $(wrapper).find('.layout-main'),
 			page: wrapper.page,
 			doctypes: ["Item", "Item Group", "Warehouse", "Stock Ledger Entry", "Brand",
@@ -120,8 +119,8 @@
 	},
 	prepare_balances: function() {
 		var me = this;
-		var from_date = dateutil.str_to_obj(this.from_date);
-		var to_date = dateutil.str_to_obj(this.to_date);
+		var from_date = frappe.datetime.str_to_obj(this.from_date);
+		var to_date = frappe.datetime.str_to_obj(this.to_date);
 		var data = frappe.report_dump.data["Stock Ledger Entry"];
 
 		this.item_warehouse = {};
@@ -130,7 +129,7 @@
 		for(var i=0, j=data.length; i<j; i++) {
 			var sl = data[i];
 			sl.posting_datetime = sl.posting_date + " " + sl.posting_time;
-			var posting_datetime = dateutil.str_to_obj(sl.posting_datetime);
+			var posting_datetime = frappe.datetime.str_to_obj(sl.posting_datetime);
 
 			if(me.is_default("warehouse") ? true : me.warehouse == sl.warehouse) {
 				var item = me.item_by_name[sl.item_code];
@@ -139,7 +138,7 @@
 				if(me.value_or_qty!="Quantity") {
 					var wh = me.get_item_warehouse(sl.warehouse, sl.item_code);
 					var valuation_method = item.valuation_method ?
-						item.valuation_method : sys_defaults.valuation_method;
+						item.valuation_method : frappe.sys_defaults.valuation_method;
 					var is_fifo = valuation_method == "FIFO";
 
 					if(sl.voucher_type=="Stock Reconciliation") {
@@ -185,7 +184,7 @@
 
 				var parent = me.parent_map[item.name];
 				while(parent) {
-					parent_group = me.item_by_name[parent];
+					var parent_group = me.item_by_name[parent];
 					$.each(me.columns, function(c, col) {
 						if (col.formatter == me.currency_formatter) {
 							parent_group[col.field] =
diff --git a/erpnext/public/js/utils.js b/erpnext/public/js/utils.js
index d618fbe..9650862 100644
--- a/erpnext/public/js/utils.js
+++ b/erpnext/public/js/utils.js
@@ -248,7 +248,7 @@
 			"Delivery Note", "Purchase Receipt", "Sales Invoice"], function(i, d) {
 			frappe.ui.form.on(d, "onload", function(frm) {
 				cur_frm.set_df_property("posting_time", "description",
-					sys_defaults.time_zone);
+					frappe.sys_defaults.time_zone);
 			});
 		});
 	}
diff --git a/erpnext/public/js/utils/item_selector.js b/erpnext/public/js/utils/item_selector.js
index 87d2fc8..98a17f2 100644
--- a/erpnext/public/js/utils/item_selector.js
+++ b/erpnext/public/js/utils/item_selector.js
@@ -55,7 +55,7 @@
 		$.each(this.frm.doc.items || [], function(i, d) {
 			if(d.item_code===item_code) {
 				frappe.model.set_value(d.doctype, d.name, 'qty', d.qty + 1);
-				show_alert(__("Added {0} ({1})", [item_code, d.qty]));
+				frappe.show_alert(__("Added {0} ({1})", [item_code, d.qty]));
 				added = true;
 				return false;
 			}
@@ -69,7 +69,7 @@
 			frappe.after_ajax(function() {
 				setTimeout(function() {
 					frappe.model.set_value(d.doctype, d.name, 'qty', 1);
-					show_alert(__("Added {0} ({1})", [item_code, 1]));
+					frappe.show_alert(__("Added {0} ({1})", [item_code, 1]));
 				}, 100);
 			});
 		}
diff --git a/erpnext/public/js/utils/party.js b/erpnext/public/js/utils/party.js
index 19fe277..751d93c 100644
--- a/erpnext/public/js/utils/party.js
+++ b/erpnext/public/js/utils/party.js
@@ -57,7 +57,7 @@
 		var prev_route = frappe.get_prev_route();
 		if(prev_route[1]==='Item' && !(frm.doc.items && frm.doc.items.length)) {
 			// add row
-			item = frm.add_child('items');
+			var item = frm.add_child('items');
 			frm.refresh_field('items');
 
 			// set item
@@ -98,8 +98,8 @@
 	if(frappe.meta.get_docfield(frm.doc.doctype, "taxes") && !is_your_company_address) {
 		if(!erpnext.utils.validate_mandatory(frm, "Lead/Customer/Supplier",
 			frm.doc.customer || frm.doc.supplier || frm.doc.lead, address_field)) {
-				return;
-			}
+			return;
+		}
 
 		if(!erpnext.utils.validate_mandatory(frm, "Posting/Transaction Date",
 			frm.doc.posting_date || frm.doc.transaction_date, address_field)) {
diff --git a/erpnext/schools/doctype/assessment_plan/assessment_plan.js b/erpnext/schools/doctype/assessment_plan/assessment_plan.js
index 3c9ab80..336a32e 100644
--- a/erpnext/schools/doctype/assessment_plan/assessment_plan.js
+++ b/erpnext/schools/doctype/assessment_plan/assessment_plan.js
@@ -6,42 +6,42 @@
 cur_frm.add_fetch("supervisor", "instructor_name", "supervisor_name");
 
 frappe.ui.form.on("Assessment Plan", {
-        refresh: function(frm) {
-        if (frm.doc.docstatus == 1) {
-            frm.add_custom_button(__("Assessment Result"), function() {
-                frappe.route_options = {
-                    assessment_plan: frm.doc.name,
-                    student_group: frm.doc.student_group
-                }
-                frappe.set_route("Form", "Assessment Result Tool");
-            });
-        }
-    },
+	refresh: function(frm) {
+		if (frm.doc.docstatus == 1) {
+			frm.add_custom_button(__("Assessment Result"), function() {
+				frappe.route_options = {
+					assessment_plan: frm.doc.name,
+					student_group: frm.doc.student_group
+				}
+				frappe.set_route("Form", "Assessment Result Tool");
+			});
+		}
+	},
 
-    course: function(frm) {
-        if (frm.doc.course && frm.doc.maximum_assessment_score) {
-            frappe.call({
-                method: "erpnext.schools.api.get_assessment_criteria",
-                args: {
-                    course: frm.doc.course
-                },
-                callback: function(r) {
-                    if (r.message) {
-                        frm.doc.assessment_criteria = [];
-                        $.each(r.message, function(i, d) {
-                            var row = frappe.model.add_child(frm.doc, "Assessment Plan Criteria", "assessment_criteria");
-                            row.assessment_criteria = d.assessment_criteria;
-                            row.maximum_score = d.weightage / 100 * frm.doc.maximum_assessment_score;
-                        });
-                    }
-                    refresh_field("assessment_criteria");
+	course: function(frm) {
+		if (frm.doc.course && frm.doc.maximum_assessment_score) {
+			frappe.call({
+				method: "erpnext.schools.api.get_assessment_criteria",
+				args: {
+					course: frm.doc.course
+				},
+				callback: function(r) {
+					if (r.message) {
+						frm.doc.assessment_criteria = [];
+						$.each(r.message, function(i, d) {
+							var row = frappe.model.add_child(frm.doc, "Assessment Plan Criteria", "assessment_criteria");
+							row.assessment_criteria = d.assessment_criteria;
+							row.maximum_score = d.weightage / 100 * frm.doc.maximum_assessment_score;
+						});
+					}
+					refresh_field("assessment_criteria");
 
-                }
-            });
-        }
-    },
+				}
+			});
+		}
+	},
 
-    maximum_assessment_score: function(frm) {
-        frm.trigger("course");
-    }
+	maximum_assessment_score: function(frm) {
+		frm.trigger("course");
+	}
 });
\ No newline at end of file
diff --git a/erpnext/schools/doctype/assessment_result/assessment_result.js b/erpnext/schools/doctype/assessment_result/assessment_result.js
index 0af5adc..e75f314 100644
--- a/erpnext/schools/doctype/assessment_result/assessment_result.js
+++ b/erpnext/schools/doctype/assessment_result/assessment_result.js
@@ -6,46 +6,46 @@
 cur_frm.add_fetch("assessment_plan", "maximum_assessment_score", "maximum_score");
 
 frappe.ui.form.on("Assessment Result", {
-    assessment_plan: function(frm) {
-        frappe.call({
-            method: "erpnext.schools.api.get_assessment_details",
-            args: {
-                assessment_plan: frm.doc.assessment_plan
-            },
-            callback: function(r) {
-                if (r.message) {
-                    frm.doc.details = [];
-                    $.each(r.message, function(i, d) {
-                        var row = frappe.model.add_child(frm.doc, "Assessment Result Detail", "details");
-                        row.assessment_criteria = d.assessment_criteria;
-                        row.maximum_score = d.maximum_score;
-                    });
-                }
-                refresh_field("details");
-            }
-        });
-    }
+	assessment_plan: function(frm) {
+		frappe.call({
+			method: "erpnext.schools.api.get_assessment_details",
+			args: {
+				assessment_plan: frm.doc.assessment_plan
+			},
+			callback: function(r) {
+				if (r.message) {
+					frm.doc.details = [];
+					$.each(r.message, function(i, d) {
+						var row = frappe.model.add_child(frm.doc, "Assessment Result Detail", "details");
+						row.assessment_criteria = d.assessment_criteria;
+						row.maximum_score = d.maximum_score;
+					});
+				}
+				refresh_field("details");
+			}
+		});
+	}
 });
 
 frappe.ui.form.on("Assessment Result Detail", {
-    score: function(frm, cdt, cdn) {
-        var d  = locals[cdt][cdn];
-        if (d.score >= d.maximum_score) {
-            frappe.throw(_("Score cannot be greater than Maximum Score"));
-        }
-        else {
-            frappe.call({
-                method: "erpnext.schools.api.get_grade",
-                args: {
-                    grading_scale: frm.doc.grading_scale,
-                    percentage: ((d.score/d.maximum_score) * 100)
-                },
-                callback: function(r) {
-                    if (r.message) {
-                        frappe.model.set_value(cdt, cdn, "grade", r.message);
-                    }
-                }
-            });
-        }
-    }
+	score: function(frm, cdt, cdn) {
+		var d  = locals[cdt][cdn];
+		if (d.score >= d.maximum_score) {
+			frappe.throw(__("Score cannot be greater than Maximum Score"));
+		}
+		else {
+			frappe.call({
+				method: "erpnext.schools.api.get_grade",
+				args: {
+					grading_scale: frm.doc.grading_scale,
+					percentage: ((d.score/d.maximum_score) * 100)
+				},
+				callback: function(r) {
+					if (r.message) {
+						frappe.model.set_value(cdt, cdn, "grade", r.message);
+					}
+				}
+			});
+		}
+	}
 });
\ No newline at end of file
diff --git a/erpnext/schools/doctype/course_schedule/course_schedule.js b/erpnext/schools/doctype/course_schedule/course_schedule.js
index 6521469..7778a6e 100644
--- a/erpnext/schools/doctype/course_schedule/course_schedule.js
+++ b/erpnext/schools/doctype/course_schedule/course_schedule.js
@@ -2,15 +2,15 @@
 
 cur_frm.add_fetch("student_group", "course", "course")
 frappe.ui.form.on("Course Schedule", {
-    refresh: function(frm) {
-        if (!frm.doc.__islocal) {
-            frm.add_custom_button(__("Attendance"), function() {
-                frappe.route_options = {
-                    based_on: "Course Schedule",
-                    course_schedule: frm.doc.name
-                }
-                frappe.set_route("Form", "Student Attendance Tool");
-            });
-        }
-    }
+	refresh: function(frm) {
+		if (!frm.doc.__islocal) {
+			frm.add_custom_button(__("Attendance"), function() {
+				frappe.route_options = {
+					based_on: "Course Schedule",
+					course_schedule: frm.doc.name
+				}
+				frappe.set_route("Form", "Student Attendance Tool");
+			});
+		}
+	}
 });
\ No newline at end of file
diff --git a/erpnext/schools/doctype/course_scheduling_tool/course_scheduling_tool.js b/erpnext/schools/doctype/course_scheduling_tool/course_scheduling_tool.js
index b835ce0..f92f738 100644
--- a/erpnext/schools/doctype/course_scheduling_tool/course_scheduling_tool.js
+++ b/erpnext/schools/doctype/course_scheduling_tool/course_scheduling_tool.js
@@ -8,13 +8,13 @@
 
 frappe.ui.form.on("Course Scheduling Tool", {
 
-    refresh: function(frm) {
-        frm.disable_save();
-        frm.page.set_primary_action(__("Schedule Course"), function() {
-            frappe.call({
-                method: "schedule_course",
-                doc: frm.doc
-            })
-        });
-    }
+	refresh: function(frm) {
+		frm.disable_save();
+		frm.page.set_primary_action(__("Schedule Course"), function() {
+			frappe.call({
+				method: "schedule_course",
+				doc: frm.doc
+			})
+		});
+	}
 });
\ No newline at end of file
diff --git a/erpnext/schools/doctype/fee_structure/fee_structure.js b/erpnext/schools/doctype/fee_structure/fee_structure.js
index 391c935..fa46278 100644
--- a/erpnext/schools/doctype/fee_structure/fee_structure.js
+++ b/erpnext/schools/doctype/fee_structure/fee_structure.js
@@ -1,6 +1,6 @@
 frappe.ui.form.on("Fee Component", {
 	amount: function(frm) {
-		total_amount = 0;
+		var total_amount = 0;
 		for(var i=0;i<frm.doc.components.length;i++) {
 			total_amount += frm.doc.components[i].amount;
 		}
diff --git a/erpnext/schools/doctype/fees/fees.js b/erpnext/schools/doctype/fees/fees.js
index 7c35de4..e5a840a 100644
--- a/erpnext/schools/doctype/fees/fees.js
+++ b/erpnext/schools/doctype/fees/fees.js
@@ -2,7 +2,7 @@
 cur_frm.add_fetch("student", "title", "student_name");
 
 frappe.ui.form.on("Fees", {
-	
+
 	onload: function(frm){
 		cur_frm.set_query("academic_term",function(){
 			return{
@@ -11,7 +11,7 @@
 				}
 			};
 		});
-		
+
 		cur_frm.set_query("fee_structure",function(){
 			return{
 				"filters":{
@@ -20,7 +20,7 @@
 			};
 		});
 	},
-	
+
 	refresh: function(frm) {
 		if (frm.doc.docstatus === 1 && (frm.doc.total_amount > frm.doc.paid_amount)) {
 			frm.add_custom_button(__("Collect Fees"), function() {
@@ -42,7 +42,7 @@
 			});
 		}
 	},
-	
+
 	program: function(frm) {
 		if (frm.doc.program && frm.doc.academic_term) {
 			frappe.call({
@@ -86,9 +86,9 @@
 			});
 		}
 	},
-	
+
 	calculate_total_amount: function(frm) {
-		total_amount = 0;
+		var total_amount = 0;
 		for(var i=0;i<frm.doc.components.length;i++) {
 			total_amount += frm.doc.components[i].amount;
 		}
diff --git a/erpnext/schools/doctype/fees/fees_list.js b/erpnext/schools/doctype/fees/fees_list.js
index 6b985e3..2b5c9f6 100644
--- a/erpnext/schools/doctype/fees/fees_list.js
+++ b/erpnext/schools/doctype/fees/fees_list.js
@@ -1,8 +1,9 @@
 frappe.listview_settings['Fees'] = {
 	add_fields: [ "total_amount", "paid_amount", "due_date"],
 	get_indicator: function(doc) {
+		var { get_today } = frappe.datetime;
 		if ((doc.total_amount > doc.paid_amount) && doc.due_date < get_today()) {
-			return [__("Overdue"), "red", ["due_date,<,"+get_today()], ["due_date,<,"+get_today()]];
+			return [__("Overdue"), "red", ["due_date,<," + get_today()], ["due_date,<," + get_today()]];
 		}
 		else if (doc.total_amount > doc.paid_amount) {
 			return [__("Pending"), "orange"];
diff --git a/erpnext/schools/doctype/program_enrollment/program_enrollment.js b/erpnext/schools/doctype/program_enrollment/program_enrollment.js
index 207e6a1..b843d44 100644
--- a/erpnext/schools/doctype/program_enrollment/program_enrollment.js
+++ b/erpnext/schools/doctype/program_enrollment/program_enrollment.js
@@ -3,7 +3,7 @@
 
 cur_frm.add_fetch('fee_structure', 'total_amount', 'amount');
 
-frappe.ui.form.on("Program Enrollment", {	
+frappe.ui.form.on("Program Enrollment", {
 	onload: function(frm, cdt, cdn){
 		frm.set_query("academic_term", "fees", function(){
 			return{
@@ -12,7 +12,7 @@
 				}
 			};
 		});
-				
+
 		frm.fields_dict['fees'].grid.get_field('fee_structure').get_query = function(doc, cdt, cdn) {
 			var d = locals[cdt][cdn];
 			return {
@@ -25,7 +25,7 @@
 				return{
 					query: "erpnext.schools.doctype.program_enrollment.program_enrollment.get_program_courses",
 					filters: {
-						'program': frm.doc.program	
+						'program': frm.doc.program
 					}
 				}
 			});
@@ -48,7 +48,7 @@
 			});
 		}
 	},
-	
+
 	student_category: function() {
 		frappe.ui.form.trigger("Program Enrollment", "program");
 	},
diff --git a/erpnext/schools/doctype/program_enrollment_tool/program_enrollment_tool.js b/erpnext/schools/doctype/program_enrollment_tool/program_enrollment_tool.js
index 3dd00c0..bf6f3e0 100644
--- a/erpnext/schools/doctype/program_enrollment_tool/program_enrollment_tool.js
+++ b/erpnext/schools/doctype/program_enrollment_tool/program_enrollment_tool.js
@@ -7,7 +7,7 @@
 	"refresh": function(frm) {
 		frm.disable_save();
 	},
-	
+
 	"get_students": function(frm) {
 		frm.set_value("students",[]);
 		frappe.call({
@@ -20,13 +20,13 @@
 			}
 		})
 	},
-	
+
 	"enroll_students": function(frm) {
 		frappe.call({
 			method: "enroll_students",
 			doc:frm.doc,
 			callback: function(r) {
-					frm.set_value("students", []);
+				frm.set_value("students", []);
 			}
 		})
 	}
diff --git a/erpnext/schools/doctype/student_applicant/student_applicant.js b/erpnext/schools/doctype/student_applicant/student_applicant.js
index 9b08ee5..974d972 100644
--- a/erpnext/schools/doctype/student_applicant/student_applicant.js
+++ b/erpnext/schools/doctype/student_applicant/student_applicant.js
@@ -28,7 +28,7 @@
 
 		frappe.realtime.on("enroll_student_progress", function(data) {
 			if(data.progress) {
-				frappe.hide_msgprint(true);
+				frappe.hide_frappe.msgprint(true);
 				frappe.show_progress(__("Enrolling student"), data.progress[0],data.progress[1]);
 			}
 		})
diff --git a/erpnext/schools/doctype/student_attendance_tool/student_attendance_tool.js b/erpnext/schools/doctype/student_attendance_tool/student_attendance_tool.js
index 11a79e1..706a148 100644
--- a/erpnext/schools/doctype/student_attendance_tool/student_attendance_tool.js
+++ b/erpnext/schools/doctype/student_attendance_tool/student_attendance_tool.js
@@ -98,17 +98,6 @@
 				});
 			});
 
-		var get_present_student = function(student) {
-			return students.filter(function(s) {
-				return s.group_roll_number === group_roll_number;
-			})
-		}
-		var get_absent_student = function(group_roll_number) {
-			return students.filter(function(s) {
-				return s.group_roll_number === group_roll_number;
-			})
-		}
-
 		student_toolbar.find(".btn-mark-att")
 			.html(__('Mark Attendence'))
 			.on("click", function() {
diff --git a/erpnext/schools/doctype/student_group_creation_tool/student_group_creation_tool.js b/erpnext/schools/doctype/student_group_creation_tool/student_group_creation_tool.js
index dd909b2..146f11c 100644
--- a/erpnext/schools/doctype/student_group_creation_tool/student_group_creation_tool.js
+++ b/erpnext/schools/doctype/student_group_creation_tool/student_group_creation_tool.js
@@ -7,10 +7,10 @@
 		})
 	});
 	frappe.realtime.on("student_group_creation_progress", function(data) {
-			if(data.progress) {
-				frappe.hide_msgprint(true);
-				frappe.show_progress(__("Creating student groups"), data.progress[0],data.progress[1]);
-			}
+		if(data.progress) {
+			frappe.hide_frappe.msgprint(true);
+			frappe.show_progress(__("Creating student groups"), data.progress[0],data.progress[1]);
+		}
 	});
 });
 
diff --git a/erpnext/schools/report/absent_student_report/absent_student_report.js b/erpnext/schools/report/absent_student_report/absent_student_report.js
index 7515f22..bf2d10d 100644
--- a/erpnext/schools/report/absent_student_report/absent_student_report.js
+++ b/erpnext/schools/report/absent_student_report/absent_student_report.js
@@ -8,7 +8,7 @@
 			"fieldname":"date",
 			"label": __("Date"),
 			"fieldtype": "Date",
-			"default": get_today(),
+			"default": frappe.datetime.get_today(),
 			"reqd": 1
 		}
 	]
diff --git a/erpnext/schools/report/student_batch_wise_attendance/student_batch_wise_attendance.js b/erpnext/schools/report/student_batch_wise_attendance/student_batch_wise_attendance.js
index 51f7346..ad04356 100644
--- a/erpnext/schools/report/student_batch_wise_attendance/student_batch_wise_attendance.js
+++ b/erpnext/schools/report/student_batch_wise_attendance/student_batch_wise_attendance.js
@@ -2,11 +2,11 @@
 // For license information, please see license.txt
 
 frappe.query_reports["Student Batch-Wise Attendance"] = {
-    "filters": [{
-        "fieldname": "date",
-        "label": __("Date"),
-        "fieldtype": "Date",
-        "default": get_today(),
-        "reqd": 1
-    }]
+	"filters": [{
+		"fieldname": "date",
+		"label": __("Date"),
+		"fieldtype": "Date",
+		"default": frappe.datetime.get_today(),
+		"reqd": 1
+	}]
 }
\ No newline at end of file
diff --git a/erpnext/schools/report/student_monthly_attendance_sheet/student_monthly_attendance_sheet.js b/erpnext/schools/report/student_monthly_attendance_sheet/student_monthly_attendance_sheet.js
index 57927fa..943238e 100644
--- a/erpnext/schools/report/student_monthly_attendance_sheet/student_monthly_attendance_sheet.js
+++ b/erpnext/schools/report/student_monthly_attendance_sheet/student_monthly_attendance_sheet.js
@@ -3,40 +3,40 @@
 
 
 frappe.query_reports["Student Monthly Attendance Sheet"] = {
-    "filters": [{
-            "fieldname": "month",
-            "label": __("Month"),
-            "fieldtype": "Select",
-            "options": "Jan\nFeb\nMar\nApr\nMay\nJun\nJul\nAug\nSep\nOct\nNov\nDec",
-            "default": ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov",
-                "Dec"
-            ][frappe.datetime.str_to_obj(frappe.datetime.get_today()).getMonth()],
-        },
-        {
-            "fieldname": "year",
-            "label": __("Year"),
-            "fieldtype": "Select",
-            "reqd": 1
-        },
-        {
-            "fieldname": "student_group",
-            "label": __("Student Group"),
-            "fieldtype": "Link",
-            "options": "Student Group",
-            "reqd": 1
-        }
-    ],
+	"filters": [{
+		"fieldname": "month",
+		"label": __("Month"),
+		"fieldtype": "Select",
+		"options": "Jan\nFeb\nMar\nApr\nMay\nJun\nJul\nAug\nSep\nOct\nNov\nDec",
+		"default": ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov",
+			"Dec"
+		][frappe.datetime.str_to_obj(frappe.datetime.get_today()).getMonth()],
+	},
+	{
+		"fieldname": "year",
+		"label": __("Year"),
+		"fieldtype": "Select",
+		"reqd": 1
+	},
+	{
+		"fieldname": "student_group",
+		"label": __("Student Group"),
+		"fieldtype": "Link",
+		"options": "Student Group",
+		"reqd": 1
+	}
+	],
 
-    "onload": function() {
-        return frappe.call({
-            method: "erpnext.schools.report.student_monthly_attendance_sheet.student_monthly_attendance_sheet.get_attendance_years",
-            callback: function(r) {
-                var year_filter = frappe.query_report_filters_by_name.year;
-                year_filter.df.options = r.message;
-                year_filter.df.default = r.message.split("\n")[0];
-                year_filter.refresh();
-                year_filter.set_input(year_filter.df.default);
-            }
-        });
-    }
+	"onload": function() {
+		return frappe.call({
+			method: "erpnext.schools.report.student_monthly_attendance_sheet.student_monthly_attendance_sheet.get_attendance_years",
+			callback: function(r) {
+				var year_filter = frappe.query_report_filters_by_name.year;
+				year_filter.df.options = r.message;
+				year_filter.df.default = r.message.split("\n")[0];
+				year_filter.refresh();
+				year_filter.set_input(year_filter.df.default);
+			}
+		});
+	}
 }
\ No newline at end of file
diff --git a/erpnext/selling/doctype/installation_note/installation_note.js b/erpnext/selling/doctype/installation_note/installation_note.js
index 9aff74a..ab35574 100644
--- a/erpnext/selling/doctype/installation_note/installation_note.js
+++ b/erpnext/selling/doctype/installation_note/installation_note.js
@@ -16,9 +16,13 @@
 // TODO commonify this code
 erpnext.selling.InstallationNote = frappe.ui.form.Controller.extend({
 	onload: function() {
-		if(!this.frm.doc.status) set_multiple(dt,dn,{ status:'Draft'});
-		if(this.frm.doc.__islocal) set_multiple(this.frm.doc.doctype, this.frm.doc.name,
-				{inst_date: get_today()});
+		if(!this.frm.doc.status) {
+			set_multiple(this.frm.doc.doctype, this.frm.doc.name, { status:'Draft'});
+		}
+		if(this.frm.doc.__islocal) {
+			set_multiple(this.frm.doc.doctype, this.frm.doc.name,
+				{inst_date: frappe.datetime.get_today()});
+		}
 
 		this.setup_queries();
 	},
diff --git a/erpnext/selling/doctype/quotation/quotation.js b/erpnext/selling/doctype/quotation/quotation.js
index 940daaa..64af35d 100644
--- a/erpnext/selling/doctype/quotation/quotation.js
+++ b/erpnext/selling/doctype/quotation/quotation.js
@@ -94,7 +94,7 @@
 
 	validate_company_and_party: function(party_field) {
 		if(!this.frm.doc.quotation_to) {
-			msgprint(__("Please select a value for {0} quotation_to {1}", [this.frm.doc.doctype, this.frm.doc.name]));
+			frappe.msgprint(__("Please select a value for {0} quotation_to {1}", [this.frm.doc.doctype, this.frm.doc.name]));
 			return false;
 		} else if (this.frm.doc.quotation_to == "Lead") {
 			return true;
@@ -149,7 +149,7 @@
 	});
 
 	dialog.fields_dict.update.$input.click(function() {
-		args = dialog.get_values();
+		var args = dialog.get_values();
 		if(!args) return;
 		return cur_frm.call({
 			method: "declare_order_lost",
@@ -157,7 +157,7 @@
 			args: args.reason,
 			callback: function(r) {
 				if(r.exc) {
-					msgprint(__("There were errors."));
+					frappe.msgprint(__("There were errors."));
 					return;
 				}
 				dialog.hide();
diff --git a/erpnext/selling/doctype/sales_order/sales_order.js b/erpnext/selling/doctype/sales_order/sales_order.js
index 7850119..5059d5d 100644
--- a/erpnext/selling/doctype/sales_order/sales_order.js
+++ b/erpnext/selling/doctype/sales_order/sales_order.js
@@ -69,9 +69,9 @@
 				if (this.frm.has_perm("submit")) {
 					// close
 					if(flt(doc.per_delivered, 2) < 100 || flt(doc.per_billed) < 100) {
-							this.frm.add_custom_button(__('Close'),
-								function() { me.close_sales_order() }, __("Status"))
-						}
+						this.frm.add_custom_button(__('Close'),
+							function() { me.close_sales_order() }, __("Status"))
+					}
 				}
 
 				// delivery note
@@ -93,8 +93,8 @@
 				// material request
 				if(!doc.order_type || ["Sales", "Shopping Cart"].indexOf(doc.order_type)!==-1
 					&& flt(doc.per_delivered, 2) < 100) {
-						this.frm.add_custom_button(__('Material Request'),
-							function() { me.make_material_request() }, __("Make"));
+					this.frm.add_custom_button(__('Material Request'),
+						function() { me.make_material_request() }, __("Make"));
 				}
 
 				// make purchase order
@@ -196,7 +196,7 @@
 						title: __('Select Items to Manufacture'),
 						fields: fields,
 						primary_action: function() {
-							data = d.get_values();
+							var data = d.get_values();
 							me.frm.call({
 								method: 'make_production_orders',
 								args: {
@@ -288,7 +288,7 @@
 		});
 
 		dialog.fields_dict.make_purchase_order.$input.click(function() {
-			args = dialog.get_values();
+			var args = dialog.get_values();
 			if(!args) return;
 			dialog.hide();
 			return frappe.call({
diff --git a/erpnext/selling/doctype/sales_order/sales_order_list.js b/erpnext/selling/doctype/sales_order/sales_order_list.js
index 53b2818..d1ac6d9 100644
--- a/erpnext/selling/doctype/sales_order/sales_order_list.js
+++ b/erpnext/selling/doctype/sales_order/sales_order_list.js
@@ -2,10 +2,10 @@
 	add_fields: ["base_grand_total", "customer_name", "currency", "delivery_date", "per_delivered", "per_billed",
 		"status", "order_type"],
 	get_indicator: function(doc) {
-        if(doc.status==="Closed"){
-        	return [__("Closed"), "green", "status,=,Closed"];
+		if(doc.status==="Closed"){
+			return [__("Closed"), "green", "status,=,Closed"];
 
-        } else if (doc.order_type !== "Maintenance"
+		} else if (doc.order_type !== "Maintenance"
 			&& flt(doc.per_delivered, 2) < 100 && frappe.datetime.get_diff(doc.delivery_date) < 0) {
 			// to bill & overdue
 			return [__("Overdue"), "red", "per_delivered,<,100|delivery_date,<,Today|status,!=,Closed"];
diff --git a/erpnext/selling/page/sales_analytics/sales_analytics.js b/erpnext/selling/page/sales_analytics/sales_analytics.js
index bb47f98..5e603ba 100644
--- a/erpnext/selling/page/sales_analytics/sales_analytics.js
+++ b/erpnext/selling/page/sales_analytics/sales_analytics.js
@@ -18,7 +18,6 @@
 	init: function(wrapper) {
 		this._super({
 			title: __("Sales Analytics"),
-			page: wrapper,
 			parent: $(wrapper).find('.layout-main'),
 			page: wrapper.page,
 			doctypes: ["Item", "Item Group", "Customer", "Customer Group", "Company", "Territory",
@@ -194,13 +193,13 @@
 	},
 	prepare_balances: function() {
 		var me = this;
-		var from_date = dateutil.str_to_obj(this.from_date);
-		var to_date = dateutil.str_to_obj(this.to_date);
+		var from_date = frappe.datetime.str_to_obj(this.from_date);
+		var to_date = frappe.datetime.str_to_obj(this.to_date);
 		var is_val = this.value_or_qty == 'Value';
 
 		$.each(this.tl[this.based_on], function(i, tl) {
 			if (me.is_default('company') ? true : tl.company === me.company) {
-				var posting_date = dateutil.str_to_obj(tl.posting_date);
+				var posting_date = frappe.datetime.str_to_obj(tl.posting_date);
 				if (posting_date >= from_date && posting_date <= to_date) {
 					var item = me.item_by_name[tl[me.tree_grid.item_key]] ||
 						me.item_by_name['Not Set'];
@@ -217,7 +216,7 @@
 		$.each(this.data, function(i, item) {
 			var parent = me.parent_map[item.name];
 			while(parent) {
-				parent_group = me.item_by_name[parent];
+				var parent_group = me.item_by_name[parent];
 
 				$.each(me.columns, function(c, col) {
 					if (col.formatter == me.currency_formatter) {
diff --git a/erpnext/selling/report/quotation_trends/quotation_trends.js b/erpnext/selling/report/quotation_trends/quotation_trends.js
index 294aea0..f00ca27 100644
--- a/erpnext/selling/report/quotation_trends/quotation_trends.js
+++ b/erpnext/selling/report/quotation_trends/quotation_trends.js
@@ -3,7 +3,7 @@
 
 frappe.require("assets/erpnext/js/sales_trends_filters.js", function() {
 	frappe.query_reports["Quotation Trends"] = {
-		filters: get_filters()
+		filters: erpnext.get_sales_trends_filters()
 	}
 });
 
diff --git a/erpnext/selling/report/sales_order_trends/sales_order_trends.js b/erpnext/selling/report/sales_order_trends/sales_order_trends.js
index 863afb8..ea320d6 100644
--- a/erpnext/selling/report/sales_order_trends/sales_order_trends.js
+++ b/erpnext/selling/report/sales_order_trends/sales_order_trends.js
@@ -3,6 +3,6 @@
 
 frappe.require("assets/erpnext/js/sales_trends_filters.js", function() {
 	frappe.query_reports["Sales Order Trends"] = {
-		filters: get_filters()
+		filters: erpnext.get_sales_trends_filters()
 	}
 });
\ No newline at end of file
diff --git a/erpnext/selling/report/sales_person_target_variance_item_group_wise/sales_person_target_variance_item_group_wise.js b/erpnext/selling/report/sales_person_target_variance_item_group_wise/sales_person_target_variance_item_group_wise.js
index f1cb3b7..8987a74 100644
--- a/erpnext/selling/report/sales_person_target_variance_item_group_wise/sales_person_target_variance_item_group_wise.js
+++ b/erpnext/selling/report/sales_person_target_variance_item_group_wise/sales_person_target_variance_item_group_wise.js
@@ -8,7 +8,7 @@
 			label: __("Fiscal Year"),
 			fieldtype: "Link",
 			options: "Fiscal Year",
-			default: sys_defaults.fiscal_year
+			default: frappe.sys_defaults.fiscal_year
 		},
 		{
 			fieldname: "period",
diff --git a/erpnext/selling/report/sales_person_wise_transaction_summary/sales_person_wise_transaction_summary.js b/erpnext/selling/report/sales_person_wise_transaction_summary/sales_person_wise_transaction_summary.js
index 9258730..90244ce 100644
--- a/erpnext/selling/report/sales_person_wise_transaction_summary/sales_person_wise_transaction_summary.js
+++ b/erpnext/selling/report/sales_person_wise_transaction_summary/sales_person_wise_transaction_summary.js
@@ -26,7 +26,7 @@
 			fieldname:"to_date",
 			label: __("To Date"),
 			fieldtype: "Date",
-			default: get_today()
+			default: frappe.datetime.get_today()
 		},
 		{
 			fieldname:"company",
diff --git a/erpnext/selling/report/territory_target_variance_item_group_wise/territory_target_variance_item_group_wise.js b/erpnext/selling/report/territory_target_variance_item_group_wise/territory_target_variance_item_group_wise.js
index 7631fcb..55a13d9 100644
--- a/erpnext/selling/report/territory_target_variance_item_group_wise/territory_target_variance_item_group_wise.js
+++ b/erpnext/selling/report/territory_target_variance_item_group_wise/territory_target_variance_item_group_wise.js
@@ -8,7 +8,7 @@
 			label: __("Fiscal Year"),
 			fieldtype: "Link",
 			options: "Fiscal Year",
-			default: sys_defaults.fiscal_year
+			default: frappe.sys_defaults.fiscal_year
 		},
 		{
 			fieldname: "period",
diff --git a/erpnext/selling/sales_common.js b/erpnext/selling/sales_common.js
index 1fcf334..35044d7 100644
--- a/erpnext/selling/sales_common.js
+++ b/erpnext/selling/sales_common.js
@@ -90,7 +90,7 @@
 		if(!item.item_code) {
 			frappe.throw(__("Please enter Item Code to get batch no"));
 		} else {
-			filters = {
+			var filters = {
 				'item_code': item.item_code,
 				'posting_date': me.frm.doc.posting_date || frappe.datetime.nowdate(),
 			}
@@ -180,7 +180,7 @@
 					__(frappe.meta.get_label(this.frm.doc.doctype, "total_commission",
 						this.frm.doc.name)) + " > " +
 					__(frappe.meta.get_label(this.frm.doc.doctype, "base_net_total", this.frm.doc.name)));
-				msgprint(msg);
+				frappe.msgprint(msg);
 				throw msg;
 			}
 
@@ -219,7 +219,7 @@
 					serial_no: item.serial_no || ""
 				},
 				callback:function(r){
-					if (inList(['Delivery Note', 'Sales Invoice'], doc.doctype)) {
+					if (in_list(['Delivery Note', 'Sales Invoice'], doc.doctype)) {
 						me.batch_no(doc, cdt, cdn);
 					}
 				}
@@ -241,7 +241,7 @@
 			if(this.frm.doc.commission_rate > 100) {
 				var msg = __(frappe.meta.get_label(this.frm.doc.doctype, "commission_rate", this.frm.doc.name)) +
 					" " + __("cannot be greater than 100");
-				msgprint(msg);
+				frappe.msgprint(msg);
 				throw msg;
 			}
 
@@ -253,13 +253,13 @@
 	calculate_contribution: function() {
 		var me = this;
 		$.each(this.frm.doc.doctype.sales_team || [], function(i, sales_person) {
-				frappe.model.round_floats_in(sales_person);
-				if(sales_person.allocated_percentage) {
-					sales_person.allocated_amount = flt(
-						me.frm.doc.base_net_total * sales_person.allocated_percentage / 100.0,
-						precision("allocated_amount", sales_person));
-				}
-			});
+			frappe.model.round_floats_in(sales_person);
+			if(sales_person.allocated_percentage) {
+				sales_person.allocated_amount = flt(
+					me.frm.doc.base_net_total * sales_person.allocated_percentage / 100.0,
+					precision("allocated_amount", sales_person));
+			}
+		});
 	},
 
 	shipping_rule: function() {
@@ -282,16 +282,16 @@
 		var item = frappe.get_doc(cdt, cdn);
 
 		if(item.warehouse && item.item_code && item.batch_no) {
-		    return this.frm.call({
-		        method: "erpnext.stock.get_item_details.get_batch_qty",
-		        child: item,
-		        args: {
-		           "batch_no": item.batch_no,
-		           "warehouse": item.warehouse,
-		           "item_code": item.item_code
-		        },
-		         "fieldname": "actual_batch_qty"
-		    });
+			return this.frm.call({
+				method: "erpnext.stock.get_item_details.get_batch_qty",
+				child: item,
+				args: {
+					"batch_no": item.batch_no,
+					"warehouse": item.warehouse,
+					"item_code": item.item_code
+				},
+				"fieldname": "actual_batch_qty"
+			});
 		}
 	},
 
@@ -305,15 +305,15 @@
 		if ((doc.packed_items || []).length) {
 			$(cur_frm.fields_dict.packing_list.row.wrapper).toggle(true);
 
-			if (inList(['Delivery Note', 'Sales Invoice'], doc.doctype)) {
-				help_msg = "<div class='alert alert-warning'>" +
+			if (in_list(['Delivery Note', 'Sales Invoice'], doc.doctype)) {
+				var help_msg = "<div class='alert alert-warning'>" +
 					__("For 'Product Bundle' items, Warehouse, Serial No and Batch No will be considered from the 'Packing List' table. If Warehouse and Batch No are same for all packing items for any 'Product Bundle' item, those values can be entered in the main Item table, values will be copied to 'Packing List' table.")+
 				"</div>";
 				frappe.meta.get_docfield(doc.doctype, 'product_bundle_help', doc.name).options = help_msg;
 			}
 		} else {
 			$(cur_frm.fields_dict.packing_list.row.wrapper).toggle(false);
-			if (inList(['Delivery Note', 'Sales Invoice'], doc.doctype)) {
+			if (in_list(['Delivery Note', 'Sales Invoice'], doc.doctype)) {
 				frappe.meta.get_docfield(doc.doctype, 'product_bundle_help', doc.name).options = '';
 			}
 		}
@@ -339,7 +339,7 @@
 
 	margin_rate_or_amount: function(doc, cdt, cdn) {
 		// calculated the revised total margin and rate on margin rate changes
-		item = locals[cdt][cdn];
+		var item = locals[cdt][cdn];
 		this.apply_pricing_rule_on_item(item)
 		this.calculate_taxes_and_totals();
 		cur_frm.refresh_fields();
@@ -347,7 +347,7 @@
 
 	margin_type: function(doc, cdt, cdn){
 		// calculate the revised total margin and rate on margin type changes
-		item = locals[cdt][cdn];
+		var item = locals[cdt][cdn];
 		if(!item.margin_type) {
 			frappe.model.set_value(cdt, cdn, "margin_rate_or_amount", 0);
 		} else {
@@ -369,7 +369,7 @@
 						$.each(frm.doc["items"] || [], function(i, row) {
 							if(r.message) {
 								frappe.model.set_value(row.doctype, row.name, "cost_center", r.message);
-								msgprint(__("Cost Center For Item with Item Code '"+row.item_name+"' has been Changed to "+ r.message));
+								frappe.msgprint(__("Cost Center For Item with Item Code '"+row.item_name+"' has been Changed to "+ r.message));
 							}
 						})
 					}
diff --git a/erpnext/setup/doctype/company/company.js b/erpnext/setup/doctype/company/company.js
index ca60b11..9e8bbe5 100644
--- a/erpnext/setup/doctype/company/company.js
+++ b/erpnext/setup/doctype/company/company.js
@@ -47,31 +47,32 @@
 				fieldname: "company_name",
 				label: __("Please re-type company name to confirm"),
 				reqd: 1,
-				description: __("Please make sure you really want to delete all the transactions for this company. Your master data will remain as it is. This action cannot be undone.")},
-					function(data) {
-						if(data.company_name !== frm.doc.name) {
-							frappe.msgprint("Company name not same");
-							return;
-						}
-						frappe.call({
-							method: "erpnext.setup.doctype.company.delete_company_transactions.delete_company_transactions",
-							args: {
-								company_name: data.company_name
-							},
-							freeze: true,
-							callback: function(r, rt) {
-								if(!r.exc)
-									frappe.msgprint(__("Successfully deleted all transactions related to this company!"));
-							},
-							onerror: function() {
-								frappe.msgprint(__("Wrong Password"));
-							}
-						});
-					}, __("Delete all the Transactions for this Company"), __("Delete")
-				);
-				d.get_primary_btn().addClass("btn-danger");
-			}
-		);
+				description: __("Please make sure you really want to delete all the transactions for this company. Your master data will remain as it is. This action cannot be undone.")
+			},
+			function(data) {
+				if(data.company_name !== frm.doc.name) {
+					frappe.msgprint("Company name not same");
+					return;
+				}
+				frappe.call({
+					method: "erpnext.setup.doctype.company.delete_company_transactions.delete_company_transactions",
+					args: {
+						company_name: data.company_name
+					},
+					freeze: true,
+					callback: function(r, rt) {
+						if(!r.exc)
+							frappe.msgprint(__("Successfully deleted all transactions related to this company!"));
+					},
+					onerror: function() {
+						frappe.msgprint(__("Wrong Password"));
+					}
+				});
+			},
+			__("Delete all the Transactions for this Company"), __("Delete")
+			);
+			d.get_primary_btn().addClass("btn-danger");
+		});
 	}
 });
 
@@ -106,7 +107,7 @@
 	});
 
 	dialog.fields_dict.update.$input.click(function() {
-		args = dialog.get_values();
+		var args = dialog.get_values();
 		if(!args) return;
 		return frappe.call({
 			method: "erpnext.setup.doctype.company.company.replace_abbr",
@@ -117,7 +118,7 @@
 			},
 			callback: function(r) {
 				if(r.exc) {
-					msgprint(__("There were errors."));
+					frappe.msgprint(__("There were errors."));
 					return;
 				} else {
 					cur_frm.set_value("abbr", args.new_abbr);
@@ -154,7 +155,7 @@
 		erpnext.company.set_custom_query(frm, v);
 	});
 
-	if (sys_defaults.auto_accounting_for_stock) {
+	if (frappe.sys_defaults.auto_accounting_for_stock) {
 		$.each([
 			["stock_adjustment_account", 
 				{"root_type": "Expense", "account_type": "Stock Adjustment"}],
diff --git a/erpnext/setup/doctype/email_digest/email_digest.js b/erpnext/setup/doctype/email_digest/email_digest.js
index d822a75..fcd0b0e 100644
--- a/erpnext/setup/doctype/email_digest/email_digest.js
+++ b/erpnext/setup/doctype/email_digest/email_digest.js
@@ -23,21 +23,21 @@
 		});
 	}, "fa fa-eye-open", "btn-default");
 
-	if(user==="Administrator") {
+	if(frappe.session.user==="Administrator") {
 		cur_frm.add_custom_button(__('Send Now'), function() {
 			doc = locals[dt][dn];
 			if(doc.__unsaved != 1) {
 				return $c_obj(doc, 'send', '', function(r, rt) {
 					if(r.exc) {
-						msgprint(err_msg);
+						frappe.msgprint(err_msg);
 						console.log(r.exc);
 					} else {
 						//console.log(arguments);
-						msgprint(__('Message Sent'));
+						frappe.msgprint(__('Message Sent'));
 					}
 				});
 			} else {
-				msgprint(save_msg);
+				frappe.msgprint(save_msg);
 			}
 		}, "fa fa-envelope", "btn-default");
 	}
@@ -47,7 +47,7 @@
 	// Get user list
 	return $c_obj(doc, 'get_users', '', function(r, rt) {
 		if(r.exc) {
-			msgprint(r.exc);
+			frappe.msgprint(r.exc);
 		} else {
 			// Open a dialog and display checkboxes against email addresses
 			doc = locals[dt][dn];
diff --git a/erpnext/setup/doctype/global_defaults/global_defaults.js b/erpnext/setup/doctype/global_defaults/global_defaults.js
index 1dd456f..a78461d 100644
--- a/erpnext/setup/doctype/global_defaults/global_defaults.js
+++ b/erpnext/setup/doctype/global_defaults/global_defaults.js
@@ -4,7 +4,7 @@
 $.extend(cur_frm.cscript, {
 	validate: function(doc, cdt, cdn) {
 		return $c_obj(doc, 'get_defaults', '', function(r, rt){
-			sys_defaults = r.message;
+			frappe.sys_defaults = r.message;
 		});
 	}
 });
diff --git a/erpnext/stock/dashboard/item_dashboard.js b/erpnext/stock/dashboard/item_dashboard.js
index 1f69ad1..e949989 100644
--- a/erpnext/stock/dashboard/item_dashboard.js
+++ b/erpnext/stock/dashboard/item_dashboard.js
@@ -171,7 +171,7 @@
 				var doc = frappe.model.get_new_doc('Stock Entry');
 				doc.from_warehouse = dialog.get_value('source');
 				doc.to_warehouse = dialog.get_value('target');
-				row = frappe.model.add_child(doc, 'items');
+				var row = frappe.model.add_child(doc, 'items');
 				row.item_code = dialog.get_value('item_code');
 				row.f_warehouse = dialog.get_value('target');
 				row.t_warehouse = dialog.get_value('target');
diff --git a/erpnext/stock/doctype/batch/batch.js b/erpnext/stock/doctype/batch/batch.js
index 8a3906e..1822a06 100644
--- a/erpnext/stock/doctype/batch/batch.js
+++ b/erpnext/stock/doctype/batch/batch.js
@@ -66,31 +66,31 @@
 					rows.find('.btn-move').on('click', function() {
 						var $btn = $(this);
 						frappe.prompt({
-								fieldname: 'to_warehouse',
-								label: __('To Warehouse'),
-								fieldtype: 'Link',
-								options: 'Warehouse'
-							},
-							(data) => {
-								frappe.call({
-									method: 'erpnext.stock.doctype.stock_entry.stock_entry_utils.make_stock_entry',
-									args: {
-										item_code: frm.doc.item,
-										batch_no: frm.doc.name,
-										qty: $btn.attr('data-qty'),
-										from_warehouse: $btn.attr('data-warehouse'),
-										to_warehouse: data.to_warehouse
-									},
-									callback: (r) => {
-										frappe.show_alert(__('Stock Entry {0} created',
-											['<a href="#Form/Stock Entry/'+r.message.name+'">' + r.message.name+ '</a>']));
-										frm.refresh();
-									},
-								});
-							},
-							__('Select Target Warehouse'),
-							__('Move')
-						)
+							fieldname: 'to_warehouse',
+							label: __('To Warehouse'),
+							fieldtype: 'Link',
+							options: 'Warehouse'
+						},
+						(data) => {
+							frappe.call({
+								method: 'erpnext.stock.doctype.stock_entry.stock_entry_utils.make_stock_entry',
+								args: {
+									item_code: frm.doc.item,
+									batch_no: frm.doc.name,
+									qty: $btn.attr('data-qty'),
+									from_warehouse: $btn.attr('data-warehouse'),
+									to_warehouse: data.to_warehouse
+								},
+								callback: (r) => {
+									frappe.show_alert(__('Stock Entry {0} created',
+										['<a href="#Form/Stock Entry/'+r.message.name+'">' + r.message.name+ '</a>']));
+									frm.refresh();
+								},
+							});
+						},
+						__('Select Target Warehouse'),
+						__('Move')
+						);
 					});
 
 					// split - ask for new qty and batch ID (optional)
@@ -98,34 +98,34 @@
 					rows.find('.btn-split').on('click', function() {
 						var $btn = $(this);
 						frappe.prompt([{
-								fieldname: 'qty',
-								label: __('New Batch Qty'),
-								fieldtype: 'Float',
-								'default': $btn.attr('data-qty')
-							},
-							{
-								fieldname: 'new_batch_id',
-								label: __('New Batch ID (Optional)'),
-								fieldtype: 'Data',
-							}],
-							(data) => {
-								frappe.call({
-									method: 'erpnext.stock.doctype.batch.batch.split_batch',
-									args: {
-										item_code: frm.doc.item,
-										batch_no: frm.doc.name,
-										qty: data.qty,
-										warehouse: $btn.attr('data-warehouse'),
-										new_batch_id: data.new_batch_id
-									},
-									callback: (r) => {
-										frm.refresh();
-									},
-								});
-							},
-							__('Split Batch'),
-							__('Split')
-						)
+							fieldname: 'qty',
+							label: __('New Batch Qty'),
+							fieldtype: 'Float',
+							'default': $btn.attr('data-qty')
+						},
+						{
+							fieldname: 'new_batch_id',
+							label: __('New Batch ID (Optional)'),
+							fieldtype: 'Data',
+						}],
+						(data) => {
+							frappe.call({
+								method: 'erpnext.stock.doctype.batch.batch.split_batch',
+								args: {
+									item_code: frm.doc.item,
+									batch_no: frm.doc.name,
+									qty: data.qty,
+									warehouse: $btn.attr('data-warehouse'),
+									new_batch_id: data.new_batch_id
+								},
+								callback: (r) => {
+									frm.refresh();
+								},
+							});
+						},
+						__('Split Batch'),
+						__('Split')
+						);
 					})
 
 					frm.dashboard.show();
diff --git a/erpnext/stock/doctype/delivery_note/delivery_note.js b/erpnext/stock/doctype/delivery_note/delivery_note.js
index eb8a750..faa1fac 100644
--- a/erpnext/stock/doctype/delivery_note/delivery_note.js
+++ b/erpnext/stock/doctype/delivery_note/delivery_note.js
@@ -38,7 +38,7 @@
 			}
 		});
 
-		if (sys_defaults.auto_accounting_for_stock) {
+		if (frappe.sys_defaults.auto_accounting_for_stock) {
 			frm.set_query('expense_account', 'items', function(doc, cdt, cdn) {
 				return {
 					filters: {
@@ -166,7 +166,7 @@
 		erpnext.stock.delivery_note.set_print_hide(doc, dt, dn);
 
 		// unhide expense_account and cost_center is auto_accounting_for_stock enabled
-		var aii_enabled = cint(sys_defaults.auto_accounting_for_stock)
+		var aii_enabled = cint(frappe.sys_defaults.auto_accounting_for_stock)
 		this.frm.fields_dict["items"].grid.set_column_disp(["expense_account", "cost_center"], aii_enabled);
 	},
 
diff --git a/erpnext/stock/doctype/item/item.js b/erpnext/stock/doctype/item/item.js
index 86c6959..40ad55a 100644
--- a/erpnext/stock/doctype/item/item.js
+++ b/erpnext/stock/doctype/item/item.js
@@ -143,7 +143,7 @@
 frappe.ui.form.on('Item Reorder', {
 	reorder_levels_add: function(frm, cdt, cdn) {
 		var row = frappe.get_doc(cdt, cdn);
-		type = frm.doc.default_material_request_type
+		var type = frm.doc.default_material_request_type
 		row.material_request_type = (type == 'Material Transfer')? 'Transfer' : type;
 	}
 })
@@ -254,8 +254,8 @@
 
 	weight_to_validate: function(frm){
 		if((frm.doc.nett_weight || frm.doc.gross_weight) && !frm.doc.weight_uom) {
-			msgprint(__('Weight is mentioned,\nPlease mention "Weight UOM" too'));
-			validated = 0;
+			frappe.msgprint(__('Weight is mentioned,\nPlease mention "Weight UOM" too'));
+			frappe.validated = 0;
 		}
 	},
 
@@ -326,7 +326,7 @@
 		});
 
 		d.set_primary_action(__("Make"), function() {
-			args = d.get_values();
+			var args = d.get_values();
 			if(!args) return;
 			frappe.call({
 				method:"erpnext.controllers.item_variant.get_variant",
@@ -338,14 +338,14 @@
 					// returns variant item
 					if (r.message) {
 						var variant = r.message;
-						var msgprint_dialog = frappe.msgprint(__("Item Variant {0} already exists with same attributes",
+						frappe.msgprint_dialog = frappe.msgprint(__("Item Variant {0} already exists with same attributes",
 							[repl('<a href="#Form/Item/%(item_encoded)s" class="strong variant-click">%(item)s</a>', {
 								item_encoded: encodeURIComponent(variant),
 								item: variant
 							})]
 						));
-						msgprint_dialog.hide_on_page_refresh = true;
-						msgprint_dialog.$wrapper.find(".variant-click").on("click", function() {
+						frappe.msgprint_dialog.hide_on_page_refresh = true;
+						frappe.msgprint_dialog.$wrapper.find(".variant-click").on("click", function() {
 							d.hide();
 						});
 					} else {
diff --git a/erpnext/stock/doctype/landed_cost_voucher/landed_cost_voucher.js b/erpnext/stock/doctype/landed_cost_voucher/landed_cost_voucher.js
index 3ae61b9..edc3444 100644
--- a/erpnext/stock/doctype/landed_cost_voucher/landed_cost_voucher.js
+++ b/erpnext/stock/doctype/landed_cost_voucher/landed_cost_voucher.js
@@ -8,7 +8,7 @@
 	setup: function() {
 		var me = this;
 		this.frm.fields_dict.purchase_receipts.grid.get_field('receipt_document').get_query =
-			function(doc, cdt ,cdn) {
+			function (doc, cdt, cdn) {
 				var d = locals[cdt][cdn]
 
 				var filters = [
@@ -16,15 +16,15 @@
 					[d.receipt_document_type, 'company', '=', me.frm.doc.company],
 				]
 
-				if(d.receipt_document_type == "Purchase Invoice") {
+				if (d.receipt_document_type == "Purchase Invoice") {
 					filters.push(["Purchase Invoice", "update_stock", "=", "1"])
 				}
 
-				if(!me.frm.doc.company) msgprint(__("Please enter company first"));
+				if (!me.frm.doc.company) frappe.msgprint(__("Please enter company first"));
 				return {
-					filters:filters
+					filters: filters
 				}
-		};
+			};
 
 		this.frm.add_fetch("receipt_document", "supplier", "supplier");
 		this.frm.add_fetch("receipt_document", "posting_date", "posting_date");
@@ -33,32 +33,33 @@
 	},
 
 	refresh: function(frm) {
-		var help_content = [
-			'<br><br>',
-			'<table class="table table-bordered" style="background-color: #f9f9f9;">',
-				'<tr><td>',
-					'<h4><i class="fa fa-hand-right"></i> ',
-						__('Notes'),
-					':</h4>',
-					'<ul>',
-						'<li>',
-							__("Charges will be distributed proportionately based on item qty or amount, as per your selection"),
-						'</li>',
-						'<li>',
-							__("Remove item if charges is not applicable to that item"),
-						'</li>',
-						'<li>',
-							__("Charges are updated in Purchase Receipt against each item"),
-						'</li>',
-						'<li>',
-							__("Item valuation rate is recalculated considering landed cost voucher amount"),
-						'</li>',
-						'<li>',
-							__("Stock Ledger Entries and GL Entries are reposted for the selected Purchase Receipts"),
-						'</li>',
-					'</ul>',
-				'</td></tr>',
-			'</table>'].join("\n");
+		var help_content =
+			`<br><br>
+			<table class="table table-bordered" style="background-color: #f9f9f9;">
+				<tr><td>
+					<h4>
+						<i class="fa fa-hand-right"></i> 
+						${__("Notes")}:
+					</h4>
+					<ul>
+						<li>
+							${__("Charges will be distributed proportionately based on item qty or amount, as per your selection")}
+						</li>
+						<li>
+							${__("Remove item if charges is not applicable to that item")}
+						</li>
+						<li>
+							${__("Charges are updated in Purchase Receipt against each item")}
+						</li>
+						<li>
+							${__("Item valuation rate is recalculated considering landed cost voucher amount")}
+						</li>
+						<li>
+							${__("Stock Ledger Entries and GL Entries are reposted for the selected Purchase Receipts")}
+						</li>
+					</ul>
+				</td></tr>
+			</table>`;
 
 		set_field_options("landed_cost_help", help_content);
 	},
@@ -66,7 +67,7 @@
 	get_items_from_purchase_receipts: function() {
 		var me = this;
 		if(!this.frm.doc.purchase_receipts.length) {
-			msgprint(__("Please enter Purchase Receipt first"));
+			frappe.msgprint(__("Please enter Purchase Receipt first"));
 		} else {
 			return this.frm.call({
 				doc: me.frm.doc,
@@ -84,7 +85,7 @@
 	},
 
 	set_total_taxes_and_charges: function() {
-		total_taxes_and_charges = 0.0;
+		var total_taxes_and_charges = 0.0;
 		$.each(this.frm.doc.taxes || [], function(i, d) {
 			total_taxes_and_charges += flt(d.amount)
 		});
diff --git a/erpnext/stock/doctype/material_request/material_request.js b/erpnext/stock/doctype/material_request/material_request.js
index b386a47..b95d0e7 100644
--- a/erpnext/stock/doctype/material_request/material_request.js
+++ b/erpnext/stock/doctype/material_request/material_request.js
@@ -30,14 +30,13 @@
 });
 
 frappe.ui.form.on("Material Request Item", {
-	"qty": function(frm, doctype, name) {
-			var d = locals[doctype][name];
-			if (flt(d.qty) < flt(d.min_order_qty)) {
-				frappe.msgprint(__("Warning: Material Requested Qty is less than Minimum Order Qty"));
-			}
+	"qty": function (frm, doctype, name) {
+		var d = locals[doctype][name];
+		if (flt(d.qty) < flt(d.min_order_qty)) {
+			frappe.msgprint(__("Warning: Material Requested Qty is less than Minimum Order Qty"));
 		}
 	}
-);
+});
 
 erpnext.buying.MaterialRequestController = erpnext.buying.BuyingController.extend({
 	onload: function(doc) {
@@ -140,7 +139,7 @@
 						return {filters: { docstatus:1 }}
 					}},
 				{"fieldname":"warehouse", "fieldtype":"Link", "label":__("Warehouse"),
-					options:"Warehouse", reqd: 1, label:"For Warehouse"},
+					options:"Warehouse", reqd: 1},
 				{"fieldname":"fetch_exploded", "fieldtype":"Check",
 					"label":__("Fetch exploded BOM (including sub-assemblies)"), "default":1},
 				{fieldname:"fetch", "label":__("Get Items from BOM"), "fieldtype":"Button"}
diff --git a/erpnext/stock/doctype/packing_slip/packing_slip.js b/erpnext/stock/doctype/packing_slip/packing_slip.js
index 2ea1ba9..69d12eb 100644
--- a/erpnext/stock/doctype/packing_slip/packing_slip.js
+++ b/erpnext/stock/doctype/packing_slip/packing_slip.js
@@ -48,14 +48,14 @@
 cur_frm.cscript.validate_case_nos = function(doc) {
 	doc = locals[doc.doctype][doc.name];
 	if(cint(doc.from_case_no)==0) {
-		msgprint(__("Case No. cannot be 0"))
-		validated = false;
+		frappe.msgprint(__("Case No. cannot be 0"))
+		frappe.validated = false;
 	} else if(!cint(doc.to_case_no)) {
 		doc.to_case_no = doc.from_case_no;
 		refresh_field('to_case_no');
 	} else if(cint(doc.to_case_no) < cint(doc.from_case_no)) {
-		msgprint(__("'To Case No.' cannot be less than 'From Case No.'"));
-		validated = false;
+		frappe.msgprint(__("'To Case No.' cannot be less than 'From Case No.'"));
+		frappe.validated = false;
 	}
 }
 
@@ -75,14 +75,14 @@
 	for(var i=0; i<ps_detail.length; i++) {
 		for(var j=0; j<ps_detail.length; j++) {
 			if(i!=j && ps_detail[i].item_code && ps_detail[i].item_code==ps_detail[j].item_code) {
-				msgprint(__("You have entered duplicate items. Please rectify and try again."));
-				validated = false;
+				frappe.msgprint(__("You have entered duplicate items. Please rectify and try again."));
+				frappe.validated = false;
 				return;
 			}
 		}
 		if(flt(ps_detail[i].qty)<=0) {
-			msgprint(__("Invalid quantity specified for item {0}. Quantity should be greater than 0.", [ps_detail[i].item_code]));
-			validated = false;
+			frappe.msgprint(__("Invalid quantity specified for item {0}. Quantity should be greater than 0.", [ps_detail[i].item_code]));
+			frappe.validated = false;
 		}
 	}
 }
@@ -97,15 +97,15 @@
 	for(var i=0; i<ps_detail.length; i++) {
 		var item = ps_detail[i];
 		if(item.weight_uom != doc.net_weight_uom) {
-			msgprint(__("Different UOM for items will lead to incorrect (Total) Net Weight value. Make sure that Net Weight of each item is in the same UOM."));
-			validated = false;
+			frappe.msgprint(__("Different UOM for items will lead to incorrect (Total) Net Weight value. Make sure that Net Weight of each item is in the same UOM."));
+			frappe.validated = false;
 		}
 		net_weight_pkg += flt(item.net_weight) * flt(item.qty);
 	}
 
-	doc.net_weight_pkg = _round(net_weight_pkg, 2);
+	doc.net_weight_pkg = roundNumber(net_weight_pkg, 2);
 	if(!flt(doc.gross_weight_pkg)) {
-		doc.gross_weight_pkg = doc.net_weight_pkg
+		doc.gross_weight_pkg = doc.net_weight_pkg;
 	}
 	refresh_many(['net_weight_pkg', 'net_weight_uom', 'gross_weight_uom', 'gross_weight_pkg']);
 }
@@ -113,8 +113,8 @@
 var make_row = function(title,val,bold){
 	var bstart = '<b>'; var bend = '</b>';
 	return '<tr><td class="datalabelcell">'+(bold?bstart:'')+title+(bold?bend:'')+'</td>'
-	 +'<td class="datainputcell" style="text-align:left;">'+ val +'</td>'
-	 +'</tr>'
+	+'<td class="datainputcell" style="text-align:left;">'+ val +'</td>'
+	+'</tr>'
 }
 
 cur_frm.pformat.net_weight_pkg= function(doc){
diff --git a/erpnext/stock/doctype/purchase_receipt/purchase_receipt.js b/erpnext/stock/doctype/purchase_receipt/purchase_receipt.js
index 5c97e7c..d5986db 100644
--- a/erpnext/stock/doctype/purchase_receipt/purchase_receipt.js
+++ b/erpnext/stock/doctype/purchase_receipt/purchase_receipt.js
@@ -53,9 +53,9 @@
 		}
 
 		if(!this.frm.doc.is_return && this.frm.doc.status!="Closed") {
-			if(this.frm.doc.docstatus==0) {
+			if (this.frm.doc.docstatus == 0) {
 				this.frm.add_custom_button(__('Purchase Order'),
-					function() {
+					function () {
 						erpnext.utils.map_current_doc({
 							method: "erpnext.buying.doctype.purchase_order.purchase_order.make_purchase_receipt",
 							source_doctype: "Purchase Order",
@@ -70,7 +70,7 @@
 								company: me.frm.doc.company
 							}
 						})
-				}, __("Get items from"));
+					}, __("Get items from"));
 			}
 
 			if(this.frm.doc.docstatus == 1 && this.frm.doc.status!="Closed") {
@@ -153,7 +153,7 @@
 		}
 	}
 	else
-		msgprint(__("Please enter Item Code."));
+		frappe.msgprint(__("Please enter Item Code."));
 }
 
 cur_frm.cscript.select_print_heading = function(doc, cdt, cdn) {
diff --git a/erpnext/stock/doctype/stock_entry/stock_entry.js b/erpnext/stock/doctype/stock_entry/stock_entry.js
index 4e381ea..6303df1 100644
--- a/erpnext/stock/doctype/stock_entry/stock_entry.js
+++ b/erpnext/stock/doctype/stock_entry/stock_entry.js
@@ -26,7 +26,7 @@
 				if (in_list(["Material Transfer for Manufacture", "Manufacture", "Repack", "Subcontract"], doc.purpose)) {
 					var filters = {
 						'item_code': item.item_code,
-						'posting_date': frm.doc.posting_date || nowdate()
+						'posting_date': frm.doc.posting_date || frappe.datetime.nowdate()
 					}
 				} else {
 					var filters = {
@@ -143,7 +143,7 @@
 	item_code: function(frm, cdt, cdn) {
 		var d = locals[cdt][cdn];
 		if(d.item_code) {
-			args = {
+			var args = {
 				'item_code'			: d.item_code,
 				'warehouse'			: cstr(d.s_warehouse) || cstr(d.t_warehouse),
 				'transfer_qty'		: d.transfer_qty,
@@ -173,7 +173,7 @@
 	expense_account: function(frm, cdt, cdn) {
 		erpnext.utils.copy_value_in_all_row(frm.doc, cdt, cdn, "items", "expense_account");
 	},
-	cost_center: function(doc, cdt, cdn) {
+	cost_center: function(frm, cdt, cdn) {
 		erpnext.utils.copy_value_in_all_row(frm.doc, cdt, cdn, "items", "cost_center");
 	}
 });
@@ -216,14 +216,14 @@
 		if(cint(frappe.defaults.get_default("auto_accounting_for_stock"))) {
 			this.frm.add_fetch("company", "stock_adjustment_account", "expense_account");
 			this.frm.fields_dict.items.grid.get_field('expense_account').get_query =
-					function() {
-				return {
-					filters: {
-						"company": me.frm.doc.company,
-						"is_group": 0
+				function() {
+					return {
+						filters: {
+							"company": me.frm.doc.company,
+							"is_group": 0
+						}
 					}
 				}
-			}
 		}
 
 		this.frm.set_indicator_formatter('item_code',
@@ -243,9 +243,9 @@
 			}
 		});
 
-		if(!this.item_selector && false) {
-			this.item_selector = new erpnext.ItemSelector({frm: this.frm});
-		}
+		// if(!this.item_selector && false) {
+		// 	this.item_selector = new erpnext.ItemSelector({frm: this.frm});
+		// }
 	},
 
 	refresh: function() {
diff --git a/erpnext/stock/doctype/stock_entry/stock_entry_list.js b/erpnext/stock/doctype/stock_entry/stock_entry_list.js
index 0e5aeb7..69d21dd 100644
--- a/erpnext/stock/doctype/stock_entry/stock_entry_list.js
+++ b/erpnext/stock/doctype/stock_entry/stock_entry_list.js
@@ -4,7 +4,7 @@
 	column_render: {
 		"from_warehouse": function(doc) {
 			var html = "";
-	 		if(doc.from_warehouse) {
+			if(doc.from_warehouse) {
 				html += '<span class="filterable h6"\
 					data-filter="from_warehouse,=,'+doc.from_warehouse+'">'+doc.from_warehouse+' </span>';
 			}
diff --git a/erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.js b/erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.js
index 636b2af..a6d5383 100644
--- a/erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.js
+++ b/erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.js
@@ -133,7 +133,7 @@
 	set_default_expense_account: function() {
 		var me = this;
 		if(this.frm.doc.company) {
-			if (sys_defaults.auto_accounting_for_stock && !this.frm.doc.expense_account) {
+			if (frappe.sys_defaults.auto_accounting_for_stock && !this.frm.doc.expense_account) {
 				return this.frm.call({
 					method: "erpnext.accounts.utils.get_company_default",
 					args: {
@@ -155,7 +155,7 @@
 
 		this.setup_posting_date_time_check();
 
-		if (sys_defaults.auto_accounting_for_stock) {
+		if (frappe.sys_defaults.auto_accounting_for_stock) {
 			this.frm.add_fetch("company", "stock_adjustment_account", "expense_account");
 			this.frm.add_fetch("company", "cost_center", "cost_center");
 
diff --git a/erpnext/stock/report/batch_item_expiry_status/batch_item_expiry_status.js b/erpnext/stock/report/batch_item_expiry_status/batch_item_expiry_status.js
index eeeb9ad..a7d7149 100644
--- a/erpnext/stock/report/batch_item_expiry_status/batch_item_expiry_status.js
+++ b/erpnext/stock/report/batch_item_expiry_status/batch_item_expiry_status.js
@@ -8,7 +8,7 @@
 			"label": __("From Date"),
 			"fieldtype": "Date",
 			"width": "80",
-			"default": sys_defaults.year_start_date,
+			"default": frappe.sys_defaults.year_start_date,
 		},
 		{
 			"fieldname":"to_date",
diff --git a/erpnext/stock/report/batch_wise_balance_history/batch_wise_balance_history.js b/erpnext/stock/report/batch_wise_balance_history/batch_wise_balance_history.js
index a60b3eb..b23c908 100644
--- a/erpnext/stock/report/batch_wise_balance_history/batch_wise_balance_history.js
+++ b/erpnext/stock/report/batch_wise_balance_history/batch_wise_balance_history.js
@@ -8,7 +8,7 @@
 			"label": __("From Date"),
 			"fieldtype": "Date",
 			"width": "80",
-			"default": sys_defaults.year_start_date,
+			"default": frappe.sys_defaults.year_start_date,
 		},
 		{
 			"fieldname":"to_date",
diff --git a/erpnext/stock/report/delivery_note_trends/delivery_note_trends.js b/erpnext/stock/report/delivery_note_trends/delivery_note_trends.js
index 0e12907..ade004c 100644
--- a/erpnext/stock/report/delivery_note_trends/delivery_note_trends.js
+++ b/erpnext/stock/report/delivery_note_trends/delivery_note_trends.js
@@ -3,7 +3,7 @@
 
 frappe.require("assets/erpnext/js/sales_trends_filters.js", function() {
 	frappe.query_reports["Delivery Note Trends"] = {
-		filters: get_filters()
+		filters: erpnext.get_sales_trends_filters()
 	}
 });
 
diff --git a/erpnext/stock/report/itemwise_recommended_reorder_level/itemwise_recommended_reorder_level.js b/erpnext/stock/report/itemwise_recommended_reorder_level/itemwise_recommended_reorder_level.js
index ba61ee5..2482cf8 100644
--- a/erpnext/stock/report/itemwise_recommended_reorder_level/itemwise_recommended_reorder_level.js
+++ b/erpnext/stock/report/itemwise_recommended_reorder_level/itemwise_recommended_reorder_level.js
@@ -7,13 +7,13 @@
 			"fieldname":"from_date",
 			"label": __("From Date"),
 			"fieldtype": "Date",
-			"default": sys_defaults.year_start_date
+			"default": frappe.sys_defaults.year_start_date
 		},
 		{
 			"fieldname":"to_date",
 			"label": __("To Date"),
 			"fieldtype": "Date",
-			"default": get_today()
+			"default": frappe.datetime.get_today()
 		}
 	]
 }
\ No newline at end of file
diff --git a/erpnext/stock/report/purchase_receipt_trends/purchase_receipt_trends.js b/erpnext/stock/report/purchase_receipt_trends/purchase_receipt_trends.js
index d94b49e..63d53fb 100644
--- a/erpnext/stock/report/purchase_receipt_trends/purchase_receipt_trends.js
+++ b/erpnext/stock/report/purchase_receipt_trends/purchase_receipt_trends.js
@@ -3,7 +3,7 @@
 
 frappe.require("assets/erpnext/js/purchase_trends_filters.js", function() {
 	frappe.query_reports["Purchase Receipt Trends"] = {
-		filters: get_filters()
+		filters: erpnext.get_sales_trends_filters()
 	}
 });
 
diff --git a/erpnext/stock/report/stock_balance/stock_balance.js b/erpnext/stock/report/stock_balance/stock_balance.js
index 36d018c..90f4de0 100644
--- a/erpnext/stock/report/stock_balance/stock_balance.js
+++ b/erpnext/stock/report/stock_balance/stock_balance.js
@@ -9,7 +9,7 @@
 			"fieldtype": "Date",
 			"width": "80",
 			"reqd": 1,
-			"default": sys_defaults.year_start_date,
+			"default": frappe.sys_defaults.year_start_date,
 		},
 		{
 			"fieldname":"to_date",
diff --git a/erpnext/support/page/support_analytics/support_analytics.js b/erpnext/support/page/support_analytics/support_analytics.js
index 01b7b48..bca5987 100644
--- a/erpnext/support/page/support_analytics/support_analytics.js
+++ b/erpnext/support/page/support_analytics/support_analytics.js
@@ -19,7 +19,6 @@
 	init: function(wrapper) {
 		this._super({
 			title: __("Support Analtyics"),
-			page: wrapper,
 			parent: $(wrapper).find('.layout-main'),
 			page: wrapper.page,
 			doctypes: ["Issue", "Fiscal Year"],
@@ -67,7 +66,7 @@
 
 
 		$.each(frappe.report_dump.data["Issue"], function(i, d) {
-			var dateobj = dateutil.str_to_obj(d.creation);
+			var dateobj = frappe.datetime.str_to_obj(d.creation);
 			var date = d.creation.split(" ")[0];
 			var col = me.column_map[date];
 			if(col) {
@@ -77,17 +76,17 @@
 					total_closed[col.field] = flt(total_closed[col.field]) + 1;
 
 					days_to_close[col.field] = flt(days_to_close[col.field])
-						+ dateutil.get_diff(d.resolution_date, d.creation);
+						+ frappe.datetime.get_diff(d.resolution_date, d.creation);
 
 					hours_to_close[col.field] = flt(hours_to_close[col.field])
-						+ dateutil.get_hour_diff(d.resolution_date, d.creation);
+						+ frappe.datetime.get_hour_diff(d.resolution_date, d.creation);
 
 				}
 				if (d.first_responded_on) {
 					total_responded[col.field] = flt(total_responded[col.field]) + 1;
 
 					hours_to_respond[col.field] = flt(hours_to_respond[col.field])
-						+ dateutil.get_hour_diff(d.first_responded_on, d.creation);
+						+ frappe.datetime.get_hour_diff(d.first_responded_on, d.creation);
 				}
 			}
 		});
diff --git a/erpnext/templates/includes/cart.js b/erpnext/templates/includes/cart.js
index ee98b23..51be954 100644
--- a/erpnext/templates/includes/cart.js
+++ b/erpnext/templates/includes/cart.js
@@ -4,7 +4,8 @@
 // js inside blog page
 
 // shopping cart
-frappe.provide("shopping_cart");
+frappe.provide("erpnext.shopping_cart");
+var shopping_cart = erpnext.shopping_cart;
 
 $.extend(shopping_cart, {
 	show_error: function(title, text) {
@@ -18,7 +19,7 @@
 		shopping_cart.bind_change_qty();
 		shopping_cart.bind_dropdown_cart_buttons();
 	},
-	
+
 	bind_address_select: function() {
 		$(".cart-addresses").find('input[data-address-name]').on("click", function() {
 			if($(this).prop("checked")) {
@@ -65,13 +66,13 @@
 			var newVal = $(this).val();
 			shopping_cart.shopping_cart_update(item_code, newVal);
 		});
-		
-		$(".cart-items").on('click', '.number-spinner button', function () {  
+
+		$(".cart-items").on('click', '.number-spinner button', function () {
 			var btn = $(this),
 				input = btn.closest('.number-spinner').find('input'),
 				oldValue = input.val().trim(),
 				newVal = 0;
-	
+
 			if (btn.attr('data-dir') == 'up') {
 				newVal = parseInt(oldValue) + 1;
 			} else {
@@ -80,17 +81,17 @@
 				}
 			}
 			input.val(newVal);
-			var item_code = input.attr("data-item-code"); 
+			var item_code = input.attr("data-item-code");
 			shopping_cart.shopping_cart_update(item_code, newVal);
 		});
 	},
-	
+
 	render_tax_row: function($cart_taxes, doc, shipping_rules) {
 		var shipping_selector;
 		if(shipping_rules) {
 			shipping_selector = '<select class="form-control">' + $.map(shipping_rules, function(rule) {
-					return '<option value="' + rule[0] + '">' + rule[1] + '</option>' }).join("\n") +
-				'</select>';
+				return '<option value="' + rule[0] + '">' + rule[1] + '</option>' }).join("\n") +
+			'</select>';
 		}
 
 		var $tax_row = $(repl('<div class="row">\
@@ -162,6 +163,6 @@
 });
 
 function show_terms() {
-  var html = $(".cart-terms").html();
-    frappe.msgprint(html);
+	var html = $(".cart-terms").html();
+	frappe.msgprint(html);
 }
diff --git a/erpnext/templates/includes/product_list.js b/erpnext/templates/includes/product_list.js
index 28c626f..7f63c17 100644
--- a/erpnext/templates/includes/product_list.js
+++ b/erpnext/templates/includes/product_list.js
@@ -13,7 +13,6 @@
 	$.ajax({
 		method: "GET",
 		url: "/",
-		dataType: "json",
 		data: {
 			cmd: "erpnext.templates.pages.product_search.get_product_list",
 			start: window.start,
diff --git a/erpnext/templates/includes/product_page.js b/erpnext/templates/includes/product_page.js
index 4d1446b..e61ead1 100644
--- a/erpnext/templates/includes/product_page.js
+++ b/erpnext/templates/includes/product_page.js
@@ -21,9 +21,9 @@
 					$(".item-stock").html("<div style='color: red'> <i class='fa fa-close'></i> Not in stock</div>");
 				}
 				else if(r.message.in_stock==1) {
-					qty_display = "In stock"
+					var qty_display = "In stock";
 					if (r.message.show_stock_qty) {
-						qty_display = "Available ("+r.message.stock_qty+ " in stock)"
+						qty_display = "Available ("+r.message.stock_qty+ " in stock)";
 					}
 					$(".item-stock").html("<div style='color: green'>\
 						<i class='fa fa-check'></i> "+__(qty_display)+"</div>");
@@ -40,7 +40,9 @@
 	})
 
 	$("#item-add-to-cart button").on("click", function() {
-		shopping_cart.update_cart({
+		frappe.provide('erpnext.shopping_cart');
+
+		erpnext.shopping_cart.update_cart({
 			item_code: get_item_code(),
 			qty: 1,
 			callback: function(r) {
@@ -66,7 +68,7 @@
 			var item_code = find_closest_match(attribute, attribute_value);
 
 			if (!item_code) {
-				msgprint(__("Cannot find a matching Item. Please select some other value for {0}.", [attribute]))
+				frappe.msgprint(__("Cannot find a matching Item. Please select some other value for {0}.", [attribute]))
 				throw e;
 			}
 		}
@@ -87,7 +89,8 @@
 }
 
 function get_item_code() {
-	if(window.variant_info) {
+	var variant_info = window.variant_info;
+	if(variant_info) {
 		var attributes = get_selected_attributes();
 		var no_of_attributes = Object.keys(attributes).length;
 
@@ -102,9 +105,10 @@
 			var match = true;
 			for(var j in variant.attributes) {
 				if(attributes[variant.attributes[j].attribute]
-					!= variant.attributes[j].attribute_value) {
-						match = false;
-						break;
+					!= variant.attributes[j].attribute_value
+				) {
+					match = false;
+					break;
 				}
 			}
 			if(match) {
@@ -113,7 +117,7 @@
 		}
 		throw "Unable to match variant";
 	} else {
-		return item_code;
+		return window.item_code;
 	}
 }
 
@@ -126,6 +130,7 @@
 	var previous_no_of_attributes = 0;
 	var matched;
 
+	var variant_info = window.variant_info;
 	for(var i in variant_info) {
 		var variant = variant_info[i];
 		var match_score = 0;
diff --git a/erpnext/templates/pages/projects.js b/erpnext/templates/pages/projects.js
index ecacc34..99f0663 100644
--- a/erpnext/templates/pages/projects.js
+++ b/erpnext/templates/pages/projects.js
@@ -47,7 +47,6 @@
 				project: '{{ doc.name }}',
 				item_status: item_status,
 			},
-			dataType: "json",
 			success: function(data) {
 				if(typeof data.message == 'undefined') {
 					$('.project-'+ item).html("No "+ item_status +" "+ item);
@@ -68,8 +67,7 @@
 	}
 
 	var more_items = function(item, item_status){
-		if(item_status)
-		{
+		if(item_status) {
 			var item_status = $('.project-'+ item +'-section .btn-group .bold').hasClass('btn-closed-'+ item)
 				? 'closed' : 'open';
 		}
@@ -83,14 +81,13 @@
 				start: start,
 				item_status: item_status,
 			},
-			dataType: "json",
 			success: function(data) {
 
 				$(data.message).appendTo('.project-'+ item);
 				if(typeof data.message == 'undefined') {
 					$(".more-"+ item).toggle(false);
 				}
-			start = start+10;
+				start = start+10;
 			}
 		});
 	}